NEWS
Roomba Adapter --> homematic steuern
-
Hallo Zusammen,
ich bin absoluter Neuling in Iobroker und versuche mich gerade mit den Blocky scripten.
Nur leider scheitere ich an den Blocky scripten.Ich habe zwei Roomba Roboter zu Hause, die lustig vor sich hin saugen. Nur lösen sie dabei durch die Bewegungsmelder die Alarmanlage aus.
Alarmanlage wird über die Homematic gesteuert, der Roomba über die App. Ich habe beides im Iobroker eingebunden und sehe unter Objekte meine beiden Dinge..
{ "common": { "name": "Current status of the robot", "role": "text", "type": "string", "write": false, "custom": { "influxdb.0": { "enabled": true, "storageType": "", "aliasId": "Otto-OG", "changesOnly": true, "debounce": 0, "changesRelogInterval": 0, "changesMinDelta": 0 } } }, "type": "state", "native": {}, "_id": "roomba.0.states.status", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" }, "from": "system.adapter.admin.0", "user": "system.user.su", "ts": 1653495922399 }
Was ich erreichen möchte:
Wenn einer der Roboter läuft , dann ändert sich dessen Status auf "run". Wenn das passiert, soll die Alarmanlage deaktiviert werden. Sobald einen anderen Wert als "run" haben, soll sie wieder reaktiviert werden , aber NUR DANN, wenn sie vorher auch aktiviert war.Bei Homematic wüsste ich, wie ich das zu programmieren hätte, nur leider bekomme ich den Status des Roomba nicht in eine Systemvariable geschrieben.
Der einfachste Weg wäre, wenn ich für jeden Roboter eine Systemvariable mir in Homematic anlege, und Blocky die dann beschreibt, wenn sich der Status ändert.
Nur da wirds für mich schon schwierig. Ich scheitere am Auslösetrigger. Kann mir jemand da vielleicht helfen ? Er müsste ja den Text des Roomba Status mit dem "Text" vergleichen, oder wie sehe ich das???
VIelen Dank
Hugo
-
@hugo-oberstein sagte: soll die Alarmanlage deaktiviert werden. Sobald einen anderen Wert als "run" haben, soll sie wieder reaktiviert werden, aber NUR DANN, wenn sie vorher auch aktiviert war.
Prinzip:
Wert (unter "Trigger"):
-
@paul53
Hallo Paul,
vielen lieben Dank für Deine Mühe.
Ich versuche das mal - die logik der Homematic ist mir ein wenig vertrauter. Ich habe mir noch mal Gedanken gemacht und - sorry wenn ich noch mal so dreist bin und Dich um Hilfe bitte - ich habe eine für mich sinnvollere Realisierung ausgedacht, weil ich damit dann im Homematic System besser die für mich wichtigen Fälle abbilden kann.Ich habe mir im Homematic System eine Systemvariable ("Otto OG") angelegt (als Wertevariable). Diese kann aktuell nur die Werte "stop" und "runs" annehmen, aber es könnte ja in Zukunft sein, dass ich noch weitere Status Anzeigen da rein nehmen will - daher als Wertevariable.
{ "_id": "hm-rega.0.25426", "type": "state", "common": { "name": "Otto OG", "type": "number", "read": true, "write": true, "role": "state", "desc": "Roomba ", "states": { "0": "run", "1": "stop" }, "min": 0, "max": 1 }, "native": { "Name": "Otto OG", "TypeName": "VARDP", "DPInfo": "Roomba ", "ValueMin": null, "ValueMax": null, "ValueUnit": "", "ValueType": 16, "ValueSubType": 29, "ValueList": "run;stop" },
Nun soll iobroker nichts anderes machen, wenn der Roomba Status auf "run" steht, setze die Variable ebenfalls auf "run", sonst setze sie auf "stop".
Ich schaffe es aber nicht, dass er den Wert "run" oder "stop" in die Systemvariable schreibt. Irgendwie finde ich den passenden Baustein nicht. Ich müsste doch den Wert auf 0 für run und auf 1 für Stop setzen , richtig ? Aber das skript läuft nicht.
Hast Du noch eine Idee? Vielen lieben Dank - für Deine Hilfe.
Hugo
-
@hugo-oberstein
Block "steuere" anstelle von "aktualisiere" verwenden!Oder kürzer:
-
@paul53
Vielen Dank für die Hilfe Paul,
ich habe alles so gemacht, jedoch als Trigger auf aktualisieren geändert, so dass er eigentlich jedes Mal den Status in die Systemvariable schreiben sollte.Leider funktioniert es nicht , die Systemvariable bleibt bei "0" obwohl er auf "1" gehen sollte.
Irgendetwas mache ich noch falsch......
-
@hugo-oberstein
Wurde der Datenpunkt "status" seit Skriptstart aktualisiert, damit getriggert wird? -
@paul53
Hallo Paul,
daran lag es wohl. Aktuell funktioniert es. Vielen lieben Dank für deine Hilfe!!!So habe noch eine Kleinigkeit bemerkt. Ich musste STOP und RUN in den Variablen umdrehen und dann damit auch den Zustand 0 und 1 vertauschen.
Sobald der Roboter in "Standby" geht, schaltet er offensichtlich den Status auf "0". Und damit führte es zu dem Fall, dass die Systemvariable zwar von run --> stop geschaltet wurde, dann aber nach einer Zeit wieder zu --> run verändert wurde.
Ich habe das jetzt umgedreht und hoffe, es funktioniert so.Vielen Dank nochmal Paul!
Hugo