NEWS
Probleme mit Change Node Module als Inverter
-
Hallo,
folgendes Problem beschäftigt mich seit Tagen, vielleicht kann mir jemand dabei helfen.
Folgendes soll realisiert werden. Mit einem Astro- Modul soll eine Hofbeleuchtung Node-red via MQTT > ESPeasy Nachts an und am Tag ausgeschaltet werden.
Das Astro- Modul gibt bei Sonnenaufgang eine "1" aus und bei Sonnenuntergang eine "0". Das Licht wird damit auch an und aus geschaltet, nur leider am Tag an und Nachts aus. Gut ich könnte mit einem Transistor am ESP Ausgang das Signal invertieren, dass wäre aber nicht elegant.
Also muss die Logik ja nur invertiert werden, klingt ja einfach. Nur genau das bekomme ich mit dem Change- Modul nicht hin. Ich bin soweit gekommen, dass ich mit dem nächsten Wechsel automatisch an oder aus schalten kann, nur beim darauffolgenden geht es nicht mehr.
Also Rule 1 seach for "0" and replace with "1" geht noch. Wenn ich dann aber als 2. Rule seach for "1" and replace with "0" geht das nicht mehr. Auch zwei Inverter parallel, einer für die "0" und einer für die "1" brachte keinen Erfolg.
Ich habe noch ein zweites Problem. Mit Node-red stehe ich noch ganz am Anfang und habe mir zum üben und lernen ein paar Flows erstellt um Temperaturen Luftfeuchtigkeit und Schalter in ein Dashboard zu integrieren. Das lief auch einen Tag ganz gut, die Anzeigen waren alle da. Dann kam irgendwann "connection lost" auf der node-red ui. Nach erneuten Aufruf der Seite ist diese nur noch weiß. Auch ein reboot hat nichts geholfen. Alle Anzeigen und Schaltersymbole sind weg.
Ich hatte früher schon mal so einen Effect mit einer anderen Home automation Software, kann mich aber nicht mehr an den Grund und die Fehlerbeseitigung erinnern.
Für einen Hinweis wäre ich dankbar.
PS: Sehe gerate das ein anderer User "bytec" vor ein paar Tagen die gleiche Problematik hatte, aber wohl auch keine Lösung gefunden wurde :roll:
-
Stell den Flow mal hier rein, ich schaue in mir an.
Meiner Meinung nach braucht man nichts zu ändern und das Change Modul ist nicht notwendig.
Man muss nur den Mqtt Topic anpassen
Ich nehme an dass du 2 Mqtt Topic hast einen zu ein- und einen zum aussschalten, oder hat du einen Umschalttopic.
Verwendest du den ESP8266 oder den ESP32.
Wird der ESP auch zusätzlich durch einen externen Taster geschaltet? Wenn ja hast du eine Rückmeldung in den ESP programmiert?
0–>aus
1-->ein
2-->umschalten
MfG
Jean
-
Hallo Jean,
danke das Du dich dem Problem annehmen möchtest.
Astro Knoten gibt eine Nummer 0 für Nacht oder 1 für Tag aus. Man kann Ausgang 1 Wählen, dann wiederholt sich die Ausgabe jede Minute, oder Ausgang 2 Signal nur zum Sunrise 1 oder Sunset 0. Die 0 oder 1 kann ich mit MQTT an den ESP8266 mit ESPeasy senden. Mit MQTT /ESPeasy_2/gpio1 bzw. gpio/0 schaltet das Relais. Mit 1 zieht es an, mit 0 fällt es ab. Ich könnte zwar eine Transistorstufe als Phasendreher einsetzen, oder am Relais NO mit NC vertauschen. Da in unseren Breiten die Verteilung der Tag und Nacht Stunden über das Jahr gesehen in etwa gleich ist, wäre es bei dieser Anwendung egal. Spätestens aber beim nächsten Projekt, wo die Schaltzeit zur Ruhe Zeit sehr ungleich ist, Möchte man ja nicht, das ein Relais für z. B. 23h angezogen ist und für eine Stunde abgefallen ist, wenn man mit einem Inverter erreichen kann, das es für eine Stunde angezogen ist und für 23 Stunden stromlos ist.
Ich hoffe man versteht was ich meine.
Ein Inverter ist ja absolutes Basic und entweder verstehe ich den Syntax des Change Models nicht, oder es funktioniert schlicht nicht.
Ich hänge mal drei Bilder zur Verdeutlichung an. Bei dem Versuchsaufbau sollte dann beim injecten einer 0 im Debug eine 1 stehen und umgekehrt. Geht bloß leider nicht.
5821_1.jpeg
5821_2.jpeg
5821_3.jpeg -
So funktioniert das nicht.
Das change Modul arbeitet die erstellten Regeln der Reihe nach ab.
Das System beginnt mit der 1ten erstellten Regel
zuerst die 1 gesucht wenn die vorhanden ist wird es auf 0 gewechselt.
Wenn dies geschehen ist tritt die 2te Regel in Kraft.
jetzt steht in dem Payload welches geändert worden ist aber die 0 und es wird zurück auf die 1 gewechselt.
jetzt hast du mehrere Möglichkeiten.
Möglichkeit A
Du must 2 change Module hintereinander verbinden .
zuerst
1te change Modul
1–> Aus
0--> Ein
dann das 2te change Modul
Aus-->0
Ein-->1
Möglichkeit B
du kannst den ESP sketch ändern damit er auf ein und aus reagiert. Vorteil du brauchst nur 1 change Modul und nicht 2 hintereinander.
ESPeasy_2/gpio/Ein
ESPeasy_2/gpio/Aus
Möglichkeit C
den ESP so programmieren dass er bei 0 ein- und bei 1 ausschaltet
Möglichkeit D
Du kannst es auch mit dem Split Modul machen und einen separates Mqtt Topic jeweils für ein und eins für aus machen,
dann aber auf Textausgabe achten
mit Mqtt hast 2 Möglichkeiten der Mqtt Ausgabe
reiner Text oder den Buffer mit auszugeben
Steht auch so in der Anleitung
payload string | buffer
most users prefer simple text payloads, but binary buffers can also be published.
Wie handhabst du den Last Will in Mqtt?
Das System muss ja reagieren wenn der Publisher abstürtzt, oder offline geht.
Auf welchen System läuft der Mqtt Broker? Mosquitto auf Raspi?
Man Könnte sich überlegen den MQTT Server in Node-red zu installieren
node-red-contrib-mqtt-broker
Dann kann man sehr gut den Last Will steuern.
Hast du noch einen externen Taster im Sytem um im Notfall manuell zu schalten?
Dies kannst du Hardware oder Software mässig machen
MfG
Jean
-
Danke Jean für die ausführliche Erklärung.
Ich habe es jetzt wie vorgeschlagen mit Möglichkeit A realisiert. Wenn ich solch ein Szenario nicht allzuoft habe, kann ich mit 2 change Module in Rheine leben.
Vielen Dank für den Hinweis.
Möglichkeit B und C scheiden für mich erstmal aus. espeasy ist kein Sketch für den ESP, sondern eine alternative Software, welche einen großen und einfach zu bedienenden Funktionsumfang hat. Leider fehltmeines Wissens eine inverser Funktion. Der Ausgang des ESP reagiert dann zum Beispiel auf: /ESP_Easy_2/gpio/14 : msg.payload : string[1].
"1" Wobei die 1 oder 0 numerisch oder ein string sein darf. Ob er auch auf String: ein oder String aus reagiert, müsste ich prüfen.
Möglichkeit D verstehe ich noch nicht ganz, da muss ich mich noch mit beschäftigen.
Mit last will habe ich mich noch gar nicht beschäftigt. Würde der Broker abstürzen, oder der Raspi auf dem er läuft, würde der ESP den letzten Zustand halten. Also entweder Licht an oder aus. Das ist auch ok so.
Einen manuellen Taster habe ich zur Zeit als Injecter. Der Taster im ui ist leider verschwunden. Ich habe nur noch eine wiße Seite, kein Temp Gage etc. mehr vorhanden.
Da werde ich das System noch mal neu aufsetzen. Im Augenblick sondiere ich noch wie und auf welches Home Automation System ich von meinem vorhandenen (6 Raspi's) umsteige.
Letztendlich werde ich etwa 20 Relais zu schalten haben, plus ca. 10 433Mhz Funksteckdosen (Elro) + ca. 10 DS18b20 und ca. 10 DHT22 auslesen + mehrere Eingänge.
Im Augenblick denke ich, dass mir Node-red und mqtt auf einem Raspi plus entsprechend viele ESP's oder auch noch ein oder zwei Raspi's.
Ob der Iobroker für mich zusätzlich sinnvoll ist, weiß ich noch nicht. Da muss ich mich erst noch mehr damit beschäftigen. Das ui von Node-red wird für meine Zwecke vermutlich ausreichend sein.
Vielen Dank noch mal.
Gruß
Ron
-
Hab vergessen, es gibt noch eine Möglicket mit einer Dummy Regel
man muss 3 Regeln in dem change Modul programmieren
1–> dummy
0--> 1
dummy--> 0
der Dummy kann eine Zahl oder Text sein
MfG
Jean
-
Danke, der ist genial.