NEWS
undefined Werte sollen nicht geschrieben werden
-
Hallo,
ich habe einen Growatt Wechselrichter von dem ich per MQTT die Werte zu ioBroker sende. Leider schaltet sich der Wechselrichter ab sobald die Sonne weg ist und damit auch der WLAN Stick, der die Daten sendet. Der request Befehl findet die URL nicht mehr und überschreibt alle Werte mit {"ack":true}. Wie kann ich das verhindern? Ich möchte Werte wie z.B. TodayGenerateEnergy nachts weiterverarbeiten.
Grüße
-
-
-
Ich denke @Codierknecht meinte eher etwas Blockly zum zeigen...
Ist aber völlig normal, dass undefined zurückgegeben wird...
Könntest das Problem auf zwei Arten lösen:
-
Schiebe das Result durch eine zusätzliche JS Funktion, die prüft, ob das Result aus dem Request
undefined
ist (undefined
kann Blockly meines Erachtens nicht wirklich von Haus aus) -
Mache aus dem Result einen String und vergleiche auf != 'undefined' --> Dann schreiben --> sonst halt nicht
-
-
@armilar sagte in undefined Werte sollen nicht geschrieben werden:
Ich denke @Codierknecht meinte eher etwas Blockly zum zeigen...
Genau. Irgendwo muss ja dieses "request" definiert sein.
die prüft, ob das Result aus dem Request undefined ist (undefined kann Blockly meines Erachtens nicht wirklich von Haus aus
Naja - eigentlich schon.
Wenn man das Ergebnis des request in eine Variableresult
schreibt und dann prüft, sollte auch Blockly damit klarkommen.Die Variable
result
muss man allerdings "von Hand" erzeugen.
-
ohne "result" wird da wohl kein "undefined" gekommen sein
Warten wir mal ab, ob das Rätsel gelöst wird?
-
@armilar
Man könnte den Zielhost auch erst anpingen und den request nur bei entsprechendem Ergebnis ausführen.
Viele Wege führen nach Rom -
Das wäre ein Teil des Blockly. Ich habe auch mit Ping probiert aber wenn Ping alive true anzeigt und ich mit dem Baustein "Trigger" "Falls Objekt - Objekt ID=Ping alive = true" arbeite, startet das Script nicht mehr
-
@jockelflo Ich habe das jetzt so gelöst
Mit einer Test URL die es nicht gibt, wurden einfach keine Werte geschrieben. Mal schauen wie es heute abend wieder ist, Ich melde mich. Danke schonmal
-
@jockelflo sagte in undefined Werte sollen nicht geschrieben werden:
mit dem Baustein "Trigger" "Falls Objekt - Objekt ID=Ping alive = true" arbeite, startet das Script nicht mehr
klar, das triggert ja nur in dem Moment wenn alive true wird
das muss in die Logik rein
-
@jockelflo
Dann versuchs mal mit meinem Ping-Beispiel.Und konvertiere nur 1x in ein Objekt. Das spart Ressourcen.
-
@jockelflo was soll der Trigger mitten in der Logik.
Das wird schief gehen -
AHH, ihr seid zu schnell für mich. Hatte das falsche Bild beim posten erwischt
-
@jockelflo
Das Prinzip:
-
@codierknecht Kannst du mir bitte näher erklären, warum das Ressourcen spart?
-
@jockelflo
Man konvertiert das Ergebnis nur 1x in ein Objekt und greift dann auf dessen Attribute zu.Das ist effektiver als
result
immer wieder in ein neues Objekt zu konvertieren. -
@codierknecht
Ok, Da werde ich mich morgen Vormittag nochmal damit beschäftigen. Danke. Jetzt warte ich auf die Nacht ob der Ping funktioniert und muss erstmal arbeiten gehen. Schönen Tag noch -
Abend,
der Wechselrichter hat abgeschaltet und die Werte sind geblieben. Ich habe das jetzt so wie im Bild gelöst mit "Offline" und "Online". Das Thema Optimierung muss ich noch angehen. Vielen Dank für die HilfePS: Habe den unteren falls-mache Trigger mit sonst ersetzt, damit ich nur einen Trigger habe.
-
@jockelflo sagte in undefined Werte sollen nicht geschrieben werden:
Das Thema Optimierung muss ich noch angehen
Und dabei dann auch mal
unreach
umbenennen. Das sagt nämlich gerade das Gegenteil aus.
Könnte sich bei späterer Wartung mal rächen (siehe meine Sig). -
@codierknecht
Guten Morgen,
Wenn ich das so mache mit "objResult" erhalte ich als Ausgabe
{ack:true} und nur wenn ich statt "objresult" wieder result nutze, erhalte ich Werte wie z.B. 149W
Was mache ich denn falsch?