[Edge] Virtual UDP Sender. Eases sending WiZ lights control commands

New version. With today’s update 2026-03-31 I believe the driver is where I wanted it to be.

Boolean interpolator for On/Off switches

I’ve updated the previous comment on string interpolation since the driver now supports passing the on/off state of a switch as true/false directly to the input. This simplifies rules (no need for if on then true else false), especially if you plan to link virtual dimmers to the individual zones of dual-zone WiZ lights.

Automatic retransmission of WiZ setPilot commands

Since the UDP Sender is not meant to receive data or be an integration for a particular device or brand, it just opens a new socket when it has to send something and closes it right away.

There is an exception though… Two special variations of the pilot keyword called pilotFastRetry and pilotRetry do keep the socket opened for a bit to receive any response from the light and send the message again if there was no reply. The fast flavour retries once within a second, the normal one keeps trying few times during a total of around 10 seconds.

Which flavour of pilot to use depends on the use case, I’ve never seen a UDP command get lost in my local network so the normal pilot is probably fine:

  • If you plan to use automations with buttons, retries are probably not really important if you are seeing the result and can press the button again. If any I woud use the pilotFastRetry. This is the one used by the wizDimmerMirror capability by the way (a capability that you can replicate with the new interpolators).
  • If you are using a scroll wheel or knob to control the brightness that sends lots of events while rotating, retransmitting is pointless: the light will be already busy with all the commands anyway and you may end up resending an old brightness value. If any I would use the pilotFastRetry here.
  • If you have an automation that runs once, for instance to activate some dynamic modes when the TV turns on, I’d go for the pilotRetry to ensure it is going to run unless the network is really struggling.

Basic arithmetic for the string interpolator

This starts in version 2026-04-07. The interpolator already supported replacing $int1 with the argument passed, let’s say 100. Now you can scale it and/or add an offset, for instance ${2 * $int1 + 5} would be converted to ${2 * 100 + 5}, perform the operation and replace everything with 205 instead of the 100 passed originally. Just enclose the operations in ${...}