"unavailable" in Node-Red Automation abfangen

Hallo…

ich habe hier eine Automation in Node-Red die mir meldet, wenn der Trockner fertig ist, was eigentlich auch gut funktioniert.

Allerdings steckt der Trockner in einer Master/Slave Steckdose, die überwacht, wenn die Waschmaschine am Master zu viel Leistung für sich benötigt und schaltet den Trockner am Slave zum Schutz der Leitungsüberlastung ab, da beide zusammen nur über einen LS abgesichert sind. Ist leider auch nicht anders möglich!

Jetzt zum Problem…
Wenn der Slave (Trockner) abgeschaltet wird, wird der Shelly Plug vor dem Trockner “unavailable” und ich bekomme die Stop Meldung mitgeteilt, allerdings ohne Zeit- und Verbrauchswerte.
Wenn der Slave wieder freigegeben wird, kommt die entsprechende Startmeldung.
Das wiederholt sich mitunter ein paarmal.

Nun würde ich gerne die “unavailable” und dann “available” Zustände dementsprechend abfangen, auswerten und die “Zwischen Start-Stopmeldungen” unterbinden.

Als Königsklasse wäre es toll, wenn man die Laufzeit und den Stromverbrauch zwischen den “unavailable” Zeiten in einer Variable speichern und bei der finalen Stopmeldung mit übergeben könnte.

Ergänzung:
Die Meldungen werden anhand der Power Werte vom Shelly Plug getriggert.

sind Master/Slave Steckdose nicht eigentlich so das der Slave nur Strom bekommt wen der Master an ist / Strom verbraucht?

kannst du es nicht so einstellen:
Wen Waschmaschine mehr als X Watt zieht schalte den Plug vom Trockner aus und umgekehrt.
Dann brauchst du nicht so eine Master/Slave Steckdose und deine Meldungen lösen sich in Luft auf da der Plug selber ja Strom hat:

Ich hoffe ich habe dein Problem richtig verstanden.

LG
Tobi

Es ist Powermanager Energieverteiler Steckdoseleiste die den gleichzeitigen Betrieb von 2 Geräten mit hohem Energieverbrauch an einem Stromkreis ermöglicht (so lautet die Beschreibung davon).
Der Master, in meinem Fall die Waschmaschine zieht während des Aufheizens schon deutlich über 3000 Watt. Wenn zum gleichen Zeitpunkt der Trockner (im Slave Steckplatz) läuft, wäre man deutlich über den abgesicherten 3500 Watt vom LS. Darum wird der Slave abgeschaltet, bis die Gesamtleistung beider Geräte wieder unter 3500 W liegt.

Hmmm… das wäre wohl auch eine Möglichkeit, müsste dann allerdings mal messen bzw. im Verlauf nachsehen, bei welchem Wert die Leiste abschaltet und darunter triggern, so dass ich die Leiste bei Versagen der Automation immer noch als Hardware Backup habe.

Danke für den Denkanstoß!

Was würde dann aber mehr Sinn ergeben? Die Leistungsüberwachung in einer HA-Automation mit einem Hilfssensor zu erfassen, in dem bereits vorhandenen Node-Red oder in einem eigenem Node-Red-Flow?!

VG
Oliver

Eventuell könntest du deinen Flow mal posten?
Du bekommst doch mit dem events: state-Node die letzten Daten im old_state und könntest sie im Context sichern.

Hier der Code…

[{"id":"5485995c2aedca9b","type":"tab","label":"Trockner_Energiemonitor","disabled":false,"info":"","env":[]},{"id":"6772563d8d69d2eb","type":"junction","z":"5485995c2aedca9b","x":900,"y":120,"wires":[["b747fbebe6aee5cd","323449c14fab8685","4e44c7c95881a762"]]},{"id":"65b0ba2e989f3d78","type":"junction","z":"5485995c2aedca9b","x":900,"y":180,"wires":[["b747fbebe6aee5cd","323449c14fab8685","4e44c7c95881a762"]]},{"id":"560fade7d6a6f5bd","type":"server-state-changed","z":"5485995c2aedca9b","name":"Trockner","server":"6bd080a0.4812","version":5,"outputs":1,"exposeAsEntityConfig":"","entityId":"sensor.stromversorgung_trockner_power","entityIdType":"exact","outputInitially":true,"stateType":"str","ifState":"","ifStateType":"str","ifStateOperator":"is","outputOnlyOnStateChange":true,"for":"0","forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":80,"y":140,"wires":[["25bfbadd74a3e083"]]},{"id":"dfa8226f8ae53030","type":"switch","z":"5485995c2aedca9b","name":"Event","property":"payload.event","propertyType":"msg","rules":[{"t":"eq","v":"start","vt":"str"},{"t":"eq","v":"running","vt":"str"},{"t":"eq","v":"stop","vt":"str"}],"checkall":"true","repair":false,"outputs":3,"x":410,"y":140,"wires":[["26cc6ba658ca3449"],[],["00052922cb636e42"]]},{"id":"bac39e5dbf591c25","type":"comment","z":"5485995c2aedca9b","name":"Trockner Benachrichtigung","info":"","x":130,"y":40,"wires":[]},{"id":"226c3cec4792444a","type":"function","z":"5485995c2aedca9b","name":"\"Trockner gestartet\"","func":"msg.payload =\n{\n    \"data\":\n    {\n        \"title\": \"Dein Trockner informiert...\",\n        \"message\": \"Wäsche wird getrocknet...\",\n        \"data\": {\n            \"method\": \"all\",\n            \"type\": \"announce\"\n        },\n        \"target\": [\n        ]\n    }\n}\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":780,"y":120,"wires":[["6772563d8d69d2eb"]]},{"id":"c46e6f1ad302d32c","type":"function","z":"5485995c2aedca9b","name":"\"Wäsche trocken!\"","func":"msg.payload.time = Math.round(msg.payload.time / 60);\nmsg.payload.cost = Math.round(msg.payload.energy * 29.83) / 100;\nmsg.payload =\n\n{\n    \"data\":\n    {\n        \"title\": \"Dein Trockner informiert...\",\n        \"message\": \"Wäsche ist trocken!\\nGesamte Zeit: \" + msg.payload.time + \" Minuten.\\nVerbrauch: \" + msg.payload.energy + \" kWh.\\nKosten: \" + msg.payload.cost + \" €\",\n        \"data\": {\n            \"method\": \"all\",\n            \"type\": \"announce\"\n        },\n        \"target\": [\n        ]\n    }\n}\n\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":770,"y":180,"wires":[["65b0ba2e989f3d78"]]},{"id":"ca58ecd3de050f7a","type":"inject","z":"5485995c2aedca9b","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"250","payloadType":"num","x":90,"y":220,"wires":[["25bfbadd74a3e083"]]},{"id":"db694ea4dfa430db","type":"inject","z":"5485995c2aedca9b","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"500","payloadType":"num","x":90,"y":280,"wires":[["25bfbadd74a3e083"]]},{"id":"d23f99171dd65ff2","type":"inject","z":"5485995c2aedca9b","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"0","payloadType":"num","x":90,"y":340,"wires":[["25bfbadd74a3e083"]]},{"id":"26cc6ba658ca3449","type":"api-call-service","z":"5485995c2aedca9b","name":"Start Meldung","server":"6bd080a0.4812","version":5,"debugenabled":false,"domain":"input_text","service":"set_value","areaId":[],"deviceId":[],"entityId":["input_text.status_trockner"],"data":"{\t    \"value\": \"läuft...\"\t}","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":580,"y":120,"wires":[["226c3cec4792444a"]]},{"id":"00052922cb636e42","type":"api-call-service","z":"5485995c2aedca9b","name":"Stop Meldung","server":"6bd080a0.4812","version":5,"debugenabled":false,"domain":"input_text","service":"set_value","areaId":[],"deviceId":[],"entityId":["input_text.status_trockner"],"data":"{\t    \"value\": \"...ist bereit zum Trocknen.\"\t}","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":580,"y":180,"wires":[["c46e6f1ad302d32c"]]},{"id":"b747fbebe6aee5cd","type":"api-call-service","z":"5485995c2aedca9b","name":"Alexa","server":"6bd080a0.4812","version":5,"debugenabled":false,"domain":"notify","service":"alexa_media_echo_bett","areaId":[],"deviceId":[],"entityId":[],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"str"}],"queue":"none","x":1010,"y":100,"wires":[[]]},{"id":"323449c14fab8685","type":"api-call-service","z":"5485995c2aedca9b","name":"Handy","server":"6bd080a0.4812","version":5,"debugenabled":false,"domain":"notify","service":"mobile_app_mi_9t_pro","areaId":[],"deviceId":[],"entityId":[],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"str"}],"queue":"none","x":1010,"y":160,"wires":[[]]},{"id":"4e44c7c95881a762","type":"api-call-service","z":"5485995c2aedca9b","name":"Telegram","server":"6bd080a0.4812","version":5,"debugenabled":false,"domain":"notify","service":"telegram_gruppe","areaId":[],"deviceId":[],"entityId":[],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"str"}],"queue":"none","x":1020,"y":220,"wires":[[]]},{"id":"25bfbadd74a3e083","type":"power-monitor","z":"5485995c2aedca9b","name":"Monitor","startthreshold":"250","stopthreshold":"10","startafter":1,"stopafter":"1","energydecimals":"1","emitidle":false,"x":280,"y":140,"wires":[["dfa8226f8ae53030"]]},{"id":"6bd080a0.4812","type":"server","name":"Home Assistant","addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"","connectionDelay":false,"cacheJson":false,"heartbeat":false,"heartbeatInterval":"","statusSeparator":"","enableGlobalContextStore":false}]