NEWS
Blockly vs Worx vs Homematic
-
Hallo,
ich grüße Euch...
...habe einiges in Homematic programmiert und wollte jetzt meinen Rasen Robi "Flip" in meine AIO Visualisierung mit aufnehmen. Möchte erstmal nur wissen, ob er in der Ladestation steht oder mäht. Natürlich am besten mit IOBroker und Blockly
Blockly soll den Status vom Flip (Home) auslesen und eine Variable von Homematic schalten mäht oder steht in der Ladestation.
Leider scheitere ich schon daran, den richtigen Trigger von Worx zu finden.
Habe einfach den "Status" genommen, dieser ändert sich aber so 17x wenn Flip die Ladestation verlässt.
Meine Fragen: Kann man gezielt nur den "Home" status mit false/true abfragen? Oder gibt es einen anderen Wert den man triggern kann? Ihr habt bestimmt schon was fertiges gebaut, würde gerne dann auch Eure Beispiele sehen.
Hier meine erbärmlicher Versuch, der natürlich nicht funktioniert.
Vielleicht hat ja jemand eine Idee...
DANKE & Gruß
Carsten -
@nueppi sagte in Blockly vs Worx vs Homematic:
Hier meine erbärmlicher Versuch, der natürlich nicht funktioniert.
der Wert scheint vom Typ Werteliste zu sein, dann reagiert das nicht auf true/false (zumindest nicht sinnvoll)
Sieh mal in den Objektdaten nach wie die Werte sind.
ich denke, dass du auf1
als Zahl prüfen musst -
Danke für Deine schnelle Antwort, leider bin ich Zeitlich eingespannt.
...werde ich heute mal probieren, vielen Dank...
-
@nueppi Das status-Feld kann die folgenden Zustände annehmen:
"states": { "0": "IDLE", "1": "Home", "2": "Start sequence", "3": "Leaving home", "4": "Follow wire", "5": "Searching home", "6": "Searching wire", "7": "Mowing", "8": "Lifted", "9": "Trapped", "10": "Blade blocked", "11": "Debug", "12": "Remote control", "13": "escape from off limits", "30": "Going home", "31": "Zone training", "32": "Border Cut", "33": "Searching zone", "34": "Pause" }
Hier ein Beispielskript:
'use strict'; const myStatusId = 'worx.0.123ABC.mower.status'; on({id: myStatusId, change: 'ne'}, function(){ if (getState(myStatusId).val == 1) { log('Flip ist zu Hause.'); } else { log('Flip ist unterwegs'); } log('Status: ' + getState(myStatusId).val); })
Erfasse dieses Skript (natürlich mit der Seriennummer Deines Mähers statt 123ABC), speichere es, starte es, lass Flip eine Runde über den Rasen drehen und beobachte die Logdatei. Dort wirst Du etwas Ähnliches wie das hier sehen:
14:47:07.233 info javascript.0 (983) script.js.common.Allgemeines._Test~: Flip ist unterwegs 14:47:07.234 info javascript.0 (983) script.js.common.Allgemeines._Test~: Status: 2 14:47:17.577 info javascript.0 (983) script.js.common.Allgemeines._Test~: Flip ist unterwegs 14:47:17.578 info javascript.0 (983) script.js.common.Allgemeines._Test~: Status: 7 14:48:07.628 info javascript.0 (983) script.js.common.Allgemeines._Test~: Flip ist unterwegs 14:48:07.629 info javascript.0 (983) script.js.common.Allgemeines._Test~: Status: 0 14:48:31.525 info javascript.0 (983) script.js.common.Allgemeines._Test~: Flip ist unterwegs 14:48:31.525 info javascript.0 (983) script.js.common.Allgemeines._Test~: Status: 6 14:48:48.174 info javascript.0 (983) script.js.common.Allgemeines._Test~: Flip ist unterwegs 14:48:48.175 info javascript.0 (983) script.js.common.Allgemeines._Test~: Status: 30 14:49:22.475 info javascript.0 (983) script.js.common.Allgemeines._Test~: Flip ist zu Hause. 14:49:22.475 info javascript.0 (983) script.js.common.Allgemeines._Test~: Status: 1
Im "richtigen Leben" musst Du dann die beiden ersten log-Anweisungen durch das Setzen Deiner privaten Variablen ersetzen, während die dritte log-Anweisung entfallen kann.
(Da Blockly für mich bunte böhmische Dörfer sind, musst Du Dir die Programmlogik entweder selbst nach Blockly übertragen oder von einem gnädigen Mitforisten übertragen lassen. Sorry!)
-
@hsteinme sagte: Blockly
Wert (unter "Trigger"):