Die if-Bedingung in der Zeile
Code: Alles auswählen
if( "HM-CC-RT-DN" == device.HSSID() )
Die Methode .HSSID() funktioniert nur für Datenpunkte, nicht für Kanäle und nicht für Geräte.
Eine Zeile wie z.B.
var hssid = device.HSSID();
führt zu einem Laufzeitfehler.
In einer if-Bedingung führt der ungültige Ausdruck aber offenbar einfach zu einem WAHR für die Bedingung anstatt zu einem Laufzeitfehler. Dies ist in meinen Augen ein Fehler im HomeMatic-Skript-Interpreter!
Zurück zum Skript selbst. Die oben angeführte Zeile funktioniert nach Änderung in
Code: Alles auswählen
if( "HM-CC-RT-DN" == device.HssType() )
if( "CLIMATECONTROL_RT_TRANSCEIVER" == channel.HSSID() )
sollte in
Code: Alles auswählen
if( "CLIMATECONTROL_RT_TRANSCEIVER" == channel.HssType() )
PS: Da es inzwischen nicht mehr nur den "HM-CC-RT-DN"-Thermostat gibt, sondern auch viele andere, sind wohl weitere Anpssungen notwendig. Eine Variante wäre, wirklich für alle Gerätetypen nach Kanälen vom Typ "CLIMATECONTROL_RT_TRANSCEIVER" zu suchen.