For a few years now I’ve been using this post on Running a Script with a Switch for several devices, including a media PC and my Vizio TV. I migrated them in a very basic way into Openhab 3. I’d like to know 1) if there is a better way today, and 2) how I mightuse a widget like the four button list item to run the script with one of four (or more) options, to say select an input on the TV.
Using the TV as an example. my shell script is run by:
Usage: ./MainViewscreen.sh <on|off|status|cast|mythtv|wii>
[on|off] - Power the system on or off
[status] - Display power status
[cast|mythtv}wii] - Select input on TV
Under OH2 I used these files:
File: viewscreen.things
Thing exec:command:device-viewscreen-control "Vizio Control (On/Off)" [ command="/etc/openhab/scripts/MainViewscreen.sh %2$s", interval=0, timeout=10, autorun=true ]
Thing exec:command:device-viewscreen-status "Vizio Online Status" [ command="/etc/openhab/scripts/MainViewscreen.sh status", interval=20, timeout=4 ]
File: viewscreen.items
String network_device_viewscreen_control "Main Viewscreen Control" <television> { channel="exec:command:device-viewscreen-control:input", channel="exec:command:device-viewscreen-status:output", autoupdate="false" }
String network_device_viewscreen_status "Main Viewscreen Online Status" { channel="exec:command:device-viewscreen-status:output" }
Switch network_device_viewscreen_switch "Main Viewscreen Power" <television> [ "Switchable" ]
File: viewscreen.rules
rule "Vizio Switch"
when
Item network_device_viewscreen_switch changed
then
logInfo("Network", "Switching MainViewscreen " + network_device_viewscreen_switch.state.toString + ": " + network_device_viewscreen_control.state.toString)
network_device_viewscreen_status.postUpdate(network_device_viewscreen_switch.state.toString)
network_device_viewscreen_control.sendCommand(network_device_viewscreen_switch.state.toString)
end
rule "Vizio State"
when
Item network_device_viewscreen_status changed
then
logInfo("Network", "Switching MainViewscreen " + network_device_viewscreen_status.state.toString + ": " + network_device_viewscreen_control.state.toString)
network_device_viewscreen_switch.postUpdate(network_device_viewscreen_status.state.toString)
end
For Openhab 3 , I removed the viewscreen.things and viewscreen.items files, recreated the 2 things through the gui under the Exec binding, and used the Add items from textual definition option to create the three things. In this way I could add them to my Semantic Model.
I tried to use the 4 way switch, to send off , mythtv, cast , wii as the command for the off , low/ medium, and high buttons , that did not work. I remember back in the day there was a lot of discussion on how to get this to work, so the switch would update to reflect external changes (ie, if the comptuer / tv was powered on via it’s physical switch, OpenHab would know about the change). That is why I’m wondering if there isn’t a better starting point now under OH3.
Any help apreciated!