Hallo zusammen,
ich habe ebenfalls einen Shelly Dimmer 2 integriert in die Homematic CCU3-Zentrale. Ich habe dabei eine etwas leichtgewichtigere Integration gesucht als oben beschrieben. Resultat: zwei kleine TCL-Skripte, welche es erlauben, die Shelly Dimmer als CUxD-Dimmer einzubinden inkl. Status-Rückmeldung ohne dass ich mittels Timer pollen muss. Wie funktionierts:
Schalten der Shelly Dimmer mittels CUxD-Dimmer:
- CuxD Dimmer anlegen
- CMD_LONG auf folgendes setzen (IP durch eigene Shelly Dimmer IP ersetzen): /bin/tclsh /www/addons/set_shelly_dimmer.tcl '192.168.0.51' $VALUE$
- Fertig
Rückmeldung mit Verwendung der Shelly Actions:
- Die Actions URLs für OUTPUT_ON, OUTPUT_OFF, BUTTON1_OFF in Shelly Dimmer auf folgende URL setzen (CCU-IP, CuxD Kanal ID und Shelly Dimmer IP durch eigene ersetzen): http://192.168.0.7:8181/cuxd.exe?ret=dom.GetObject(%27CUxD.CUX2801001:2.CMD_EXEC%27).State(%27tclsh%20/www/addons/shelly_dimmer.tcl%20%20%22192.168.0.51%22%20%22CUxD.CUX2801001:2%22%27)
- Fertig
Merke: an den Skripten muss nichts angepasst werden, keine CCU3-Programme angelegt werden und auch sonst nichts zusätzlich gemacht werden
Damit funktioniert die Ansteuerung inkl. Rückmeldung des Status (inkl. Dimm %-Werte) perfekt. Have fun!
Script 1: /www/addons/set_shelly_dimmer.tcl
#!/bin/tclsh
load tclrega.so
set logtag "set_shelly_dimmer.tcl"
set loglevel 6
set loglevels {panic alert crit err warn notice info debug}
set ip [lindex $argv 0]
set value [lindex $argv 1]
puts "setting value for shelly dimmer..."
set url "http://$ip/light/0/"
if { $value == 0 } {
append url "?turn=off"
} else {
append url "?turn=on&brightness=$value"
}
puts "querying $url"
catch {exec /usr/local/addons/cuxd/curl -s $url} response
puts "response is: $response"
Alles anzeigen
Script 2: /www/addons/shelly_dimmer.tcl
#!/bin/tclsh
load tclrega.so
set logtag "shelly_dimmer.tcl"
set loglevel 6
set loglevels {panic alert crit err warn notice info debug}
set ip [lindex $argv 0]
set deviceid [lindex $argv 1]
puts "polling shelly dimmer..."
set url "http://$ip/light/0/"
puts "querying $url"
catch {exec /usr/bin/wget -q -O- # $url} response
puts "response is: $response"
regexp {\{.*\"ison\"\:([a-z]*),.*\"brightness\"\:(\d*).*\}} $response dummy ison brightness
puts "isOn: $ison"
puts "brightness: $brightness"
set brightness_float [expr double($brightness)/100]
if { $ison } {
} else {
puts "isOn false --> setting brightness to zero"
set brightness_float 0.0
}
puts "brightness_float: $brightness_float"
#
# set ReGaHss variables
#
set rega_cmd ""
append rega_cmd "dom.GetObject('$deviceid.SET_STATE').State('$brightness_float');"
puts "script: $rega_cmd"
rega_script $rega_cmd
Alles anzeigen