NEWS
Hilfe bei debuggen einer übernommenen Funktion
-
@bf0911 Wie gesagt, ich würde mir in Deinem Fall überlegen, ob Du überhaupt mit mqtt arbeitest oder mqtt nicht nur dafür verwendest ggf. Deine Hardware zu steuern.
Wie bist Du überhaupt darauf gekommen, mqtt zu verwenden? - Jetzt sag nicht, weil das Skript das gemacht hat. Ja wenn man kein iobroker hat, dann nimmt man in NOdeRed Standalone Konfigurationen mqtt - dann muss man ggf. mit retain Flags arbeiten oder mit einem Filekontext, der einen Neustart überlebt. In Deinem Fall würde ich aber alles in Datenpunkten speichern. Du musst nur die Objekte als JSON Strings abspeichern und wieder restaurieren.
Im Endeffekt glaube ich, dass Dir die Zeit Dich in NodeRed einzuarbeiten weniger Zeit gekostet hat, als nach fertigen Skripten zu suchen.
-
Ja, erstmal ganz lieben Dank für die Zeit und Mühe.
Eine abschließende Frage hab ich noch, du setzt in dem Beispiel "Dashboard" die flow.Variablen. Die habe ich bzw. wir ja schon an einer anderen Stelle gesetzt. Fehlt da dann nicht noch das zurückschreiben per MQTT in das Array?
Ja, mein Flow ist wirklich total übersichtlich geworden. Und dass ist für mich das wichtigste, ich weiß was wann wo passiert und kann dies alles nachvollziehen.
Ja, doch richtig. Weil es so vorgeben war. Ich hatte ja die Hoffung, nur ein, zwei Nodes anpassen zu müssen, damit das Skript läuft.
Ich nehme mal an, dass ich mit iobroker-out genau so Arrays schreiben kann wie per MQTT? Also natürlich, wenn der Datenpunkt vorhanden ist.
-
@bf0911 sagte in Hilfe bei debuggen einer übernommenen Funktion:
Ja, erstmal ganz lieben Dank für die Zeit und Mühe.
Eine abschließende Frage hab ich noch, du setzt in dem Beispiel "Dashboard" die flow.Variablen. Die habe ich bzw. wir ja schon an einer anderen Stelle gesetzt. Fehlt da dann nicht noch das zurückschreiben per MQTT in das Array?
Ja da hast Du Recht, aber das würde ich nur ein einziges Mal machen im Flow. Wird natürlich bei jeder Änderung das ganze Objekt zurückgeschrieben. (aber du siehst wieviel einfacher das ist).
In dieser letzten Change Node holst Du Dir einfach das ganze Objekt nochmal als payload in das Nachrichtenobjekt.
Ja, mein Flow ist wirklich total übersichtlich geworden. Und dass ist für mich das wichtigste, ich weiß was wann wo passiert und kann dies alles nachvollziehen.
Perfekt!
Und bis auf wenige Regeln, in den Du JSONATA verwendet hast, hast Du doch so gut wie keinen Code geschrieben? -´Oder siehst Du das anders?Ja, doch richtig. Weil es so vorgeben war. Ich hatte ja die Hoffung, nur ein, zwei Nodes anpassen zu müssen, damit das Skript läuft.
Ja aber Du hättest den Flow nicht verstanden, so wie jetzt und ausserdem kannst Du nun in Zukunft Flows alleine schreiben und suchst Dir nicht mehr was zusammen .
Ich nehme mal an, dass ich mit iobroker-out genau so Arrays schreiben kann wie per MQTT? Also natürlich, wenn der Datenpunkt vorhanden ist.
Ja das einzige was der iobroker Nodes nicht können, gleich die Objekte als JSON Strings zu schreiben bzw. zu verwandeln.
Wenn Du also Dein PH_Parameter als Ganzen in einen iobroker-Datenpunkt schreiben willst, dann musst Du den vorher in einen JSON-String umwandeln.Den Datenpunkt im iobroker gibst halt auch den Datentyp JSON
Sollen die Daten dann automatisch eingelesen werden - kannst Du das in der iobroker-IN Node konfigurieren:
Hier nochmal zum Import:
Achso ein Fehler habe ich noch in der iobroker-Out node gemacht.
Wenn Du unter 0_userdata.0 schreibst, dann gibts ja keine Hardware, die diesen Wert in Empfang nimmt. Hier als ein ACK=true schreiben (also einen value und KEIN command).
Wenn Du hingegen Deine Pumpen steuerst und direkt in einen Adapterdatenpunkt schreibst, zum Steuern, dann Type command (ACK=false) verwenden. -
Ja, super. Vielen Dank. Ich habe jetzt alle MQTT-In und Out gegen Json und Iobroker-in und out getauscht.
Da werden auch schon die Daten in die Datenpunkte geschrieben. Das scheint zu klappen.
Nun muss ich das noch mit dem Dashboard verstehen und umsetzen.
-
@bf0911 sagte in Hilfe bei debuggen einer übernommenen Funktion:
Nun muss ich das noch mit dem Dashboard verstehen und umsetzen.
Na da brauchst dann die Init Node nicht mehr sondern konfigurierst Dir die iobroker-In Node so, dass die Parameter direkt eingelesen werden:
-
-
@bf0911 Einmal musst natürlich auch das komplette Objekt nach dem Einlesen in deine Flowvariable einlesen, das hatte ich noch vergessen:
Ich frage mich nur im Nachhinein, warum Dein Skript alles mit globalen Variablen und x unterschiedlichen Flows gemacht hat. Wenn ich mir das bis jetzt so anschaue
ist der Flow doch nicht so groß und komplex??
-
Warum globale Variable etc benutzt wurden kann ich dir nicht sagen.
Mein Flow ist etwas größer als deiner bzw. wird noch größer wegen dem Dashboard usw
Ich hab den Flow mit dem Dashboard zu übernommen, aber es lassen sich keine Zahlen einstellen
Das springt immer -
@bf0911 Na wenn du es wirklich übernommen hast, dann sollte es nicht passieren.
Schau mal ob du die Nachrichten nicht durchreichst?
das muss natürlich deaktiviert sein.
Ggf. musst DU natürlich bei ALLEN Dashboard Feldern schauen, dass Du die Nachrichten nicht durchreichst!!! (Also auch nicht bei Schaltern(switches) etc.)
-
@bf0911 sagte in Hilfe bei debuggen einer übernommenen Funktion:
Ich hab den Flow mit dem Dashboard zu übernommen, aber es lassen sich keine Zahlen einstellen
Das springt immerUnd ggf. immer Debug Nodes an die letzte Node vorne und direkt dahinter machen. Prüfen, wenn Du das Kabel vorne trennst, ob es an ankommenden Nachrichten liegt oder nicht. Das ist ja nun das schöne, dass Du sowas gut debuggen kannst.
-
Ist es bei mir!
Ich hab deinen Flow natürlich mit meinen Variablen angepasst.
Jetzt scheint es zu funktionieren, obwohl ich nichts geändert habe
-
@bf0911 sagte in Hilfe bei debuggen einer übernommenen Funktion:
Jetzt scheint es zu funktionieren, obwohl ich nichts geändert habe
Na dann weiß ich auch nicht - und lässt sich ja auch nicht mehr nachvollziehen.
Wenn ein undefined drin ist (wie bei der Pumpe ) oder was das für eine Node ist
kann ich dir nicht sagen.
-
@bf0911 sagte in Hilfe bei debuggen einer übernommenen Funktion:
Jetzt scheint es zu funktionieren, obwohl ich nichts geändert habe
Vielleicht war auch noch was von Deinem alten Flow aktiv - dass den Kontext gesetzt hat? - Ich würde Dir raten den alten Flow komplett zu deaktivieren - damit Du nur noch die Nodes ggf. hast, um die raus zu kopieren.
-
Danke, habe den Flow direkt deaktiviert.
-
@bf0911 sagte in Hilfe bei debuggen einer übernommenen Funktion:
Danke, habe den Flow direkt deaktiviert.
Wie gesagt auch für später ist es immer wichtig die Stellen, wo Du was ausgibst möglichst übersichtlich hälst. Im Idealfall einmal - manchmal auch an mehreren Stellen, um das Ganze übersichtlich zu halten.
-
Ich verabschiede mich dann mal, wenn Du noch was auf dem Herzen hast dann schreibs rein. Entweder bekommst dann eine Antwort direkt, aber ich geh ja mal davon aus, dass Du am Nachmittag dann wieder ins reale Leben abtauchst.
-
Ich bedanke mich total bei dir!
Ich habe soviel gelernt und verstanden! Stark!
Ja, genau, ich bin gleich auch erstmal wieder in der echten Welt.
Werde mich aber sicherlich nochmal melden, spätestens wenn der Flow komplett ist!
-
Es scheint immer noch ein Problem mit dem "Vergleich" ist zu Gesamt-Laufzeit Ph-Pumpe zu geben
Egal, welche deiner beiden Nodes ich nutze, es wird kein true weitergeleitet.
Es kommt auf jeden Fall von "Chlor-Pumpe nicht aktiv?" noch ein True. Das habe debuggt.
-
@bf0911 Na sowas kann ich doch gar nicht beantworten.
Du verdoppelst die Nachricht und deaktivierst die Tageslaufzeit.
Was kommt den wo raus?
-
Und bei den Schaltern für den Automatik-Modus Chlor und PH gibt es Problem.
Die Schalter werden bei den Strings "ON" und "OFF" geschaltet.
Da muss offensichtlich was anderes rein