NEWS
Parser
-
@OliverIO
Danke nochmal!ich hoffe nur, dass man da nicht nur die historischen und erledigten Ereignisse bekommt, sondern auch aktive.
Hier habe ich noch was geändert:
var msgtext = 'Code: '+msg.code+' Typ: '+msg.type+' Beschreibung: '+msg.description+' Maßnahme: '+msg.action
Bei code hattest du auch msg.type stehen.
Jetzt bekomme ich das alles wie ich es will.Vielleicht probiere ich mich mal daran, den Output als Json zu formatieren, damit ich es anschließend einfacher zerlegen kann
-
@Homoran
das ist einfach. in msg steht das anhand des fehlercodes ausgewählte objekt drin.
da musst du nur noch
JSON.stringify(msg) in den Datenpunkt schreiben -
-
Habe heute den Cron aktiviert und auch die log Einträge entfernt um das log nicht minütlich zu fluten.
klappt alles soweit ganz gut.Lediglich bei einer Sache brauche ich noch deine Hilfe.
In früheren Versionen hattest du auch noch das Datum/Uhrzeit drin.
Im Skript ist ganz unten auch eine Funktion zum Umwandeln des Datums mit einer Variable "time"Da anscheinend die Funktion nicht aufgerufen wird, kann ich "time" auch nicht verwenden.
Ich habe auch noch gar nicht herausbekommen wie und wo ich an Datum/Uhrzeit des Ereignisses komme.Ich wäre da für einen Denkanstoss dankbar
-
-
@OliverIO Danke!
Aber....Im code ist noch alles da:
Der log output von:log('message' + i+1 + ': ' + date + ' ' + code + ' ' + env + ' '+msgtext);
bringt
message01: 28 Feb 2020 10:13:51 4159 0002h Code: 4159 Typ: Externe Netzstörung Beschreibung: Erhöhte Netzfrequenz Maßnahme: Installation kontrollieren1
Da ist das Datum.
Aber msg enthält es nicht.var msg = msgs.find(item => item.code==code);
und landet somit mit JSON.stringify nicht im Datenpunkt.
mit den Zeilen zuvor komme ich nicht klar wie ich es in die Message bekommen könnte, sozusagen als msg.date.
Ich denke wegen der [n] es handelt sich wohl um ein Array, aber das ist jenseits meiner Skills -
@Homoran dann
msg.date = date; -
@OliverIO Ehrlich?
so einfach?
wird das in das Array geschrieben? -
@Homoran ja wird auch in das Array geschrieben.
Ist aber nicht so schlimm, da das Array sonst nicht anderweitig ausgewertet wird.
Und beim nächsten mal das Datum ja wieder neu gesetzt wird. -
@OliverIO Nochmals Danke!
Irgendwann kapier selbst ich es.DP:
{"code":"4159","type":"Externe Netzstörung","description":"Erhöhte Netzfrequenz","action":"Installation kontrollieren1 ","date":"28 Feb 2020 10:13:51"}
-
@OliverIO Hallo Oliver, habe gesehen dass du mit dem Wechselrichter PIKO ganz schön Erfolg gehabt hast. Leider habe ich mein Projekt mit dem Auslesen zurückstellen müssen. Jetzt hätte ich jedoch wieder etwas Zeit. Würden die Erkenntnisse aus dem PIKO etwas für meinen Regler bringen?
-
@steinerma
Ziel war es die Fehlermeldungen aus dem Gerät auszulesen und in einen lesbaren Text zu übersetzen.
Evtl. kann @Homoran sein aktuelles Skript, falls er es nochmal verändert hat, hier bereitstellen. -
@OliverIO sende hier dennoch mal das Skript, welches ich von dir hatte und noch geringfügig erweitert habe (Aufruf Webseite, und Beschreiben von Modbus-Datenpunkt. Bitte nicht lachen - bin blutiger Anfänger
var request = require('request'); var url = 'http://192.168.0.34/schema.php'; function dataRequest(req) { if (req.readyState == 4) { var string = req.responseText.substring(11); var size = convertAtoH(string,2); string = string.substring(2); string = string.substring(8); // Timestamp uebergehen var ertrag = 0; for (var i=0;i < (size/2);i++) { var value = convertAtoH(string,4); string = string.substring(4); //temps if(i < 7) { if(value > 32768) { value -= 65536; } setState("modbus.0.holdingRegisters.862_ID175"/*Reserve*/, getState(i).val); // Datenpunkt von Modbus mit Variable i beschreiben (In i+1 steht dann die Nummer drin) der Temperaturwert rechnet sich dann (value/10).toFixed(1) } } } }
-
@steinerma
hast du den eine konkrete Frage?
Falls ich irgendwo schon mal was geschrieben habe, dann musst mir das nochmal zeigen, kann micht nicht mehr erinnern.Das Skript scheint auch nicht vollständig zu sein.
Da dürfte nicht viel passieren. -
@OliverIO Freundlicherweise hattest du mir das Skript am 28 Feb 2020, 14:32 (siehe in diesem Trade weiter oben) entschlüsselt. Der Regler, auf welchem die auszulesenden Werte enthält, gibt keine Werte aus. Die Werte müssen gemäss deinem Skript aus einer Datenbank abgerufen werden. Ich wäre schon glücklich, wenn ich Werte aus der Datenbank holen könnte.
Dein Skript sollte ich noch so erweitern, dass da noch ein/oder mehrere Datenpunkte beschrieben werden können. Das habe ich mal nach bestem Wissen und Gewissen versucht...
Leider kommt beim Datenpunkt modbus.0.holdingRegisters.862_ID175 (welchen ich beschreibe) immer nur die Zahl "0" raus.
Meine Frage: weisst du, wo ich den Fehler mache? Gemäss deiner Rückmeldung von vorhin gehe ich davon aus, dass ich auch das Auslesen nicht korrekt erstellt habe? -
@steinerma
ok dann lese nochmal meine Post von oben genau durch und führe alle Schritte durch.
Bei Problemen frage konkret was nicht funktioniert.
Das Skript 2 Posts hier drüber funktioniert nicht, weil es nicht vollständig ist. -
Evtl. kann @Homoran sein aktuelles Skript, falls er es nochmal verändert hat, hier bereitstellen.
werde ich gerne machen.
GHAbe aber noch nichts verändert, weil ich zum Glück noch keinen weiteren Fehler hatte und so die "Funtionsfähigkeit" im Live-Modus nicht testen konnte -
@steinerma Du arbeitest aber anscheinend über modbus.
Das ist ganz was anderes - wir arbeiten über das Webinterface -
@Homoran Den Wert aus dem Webinterface möchte ich gerne über Modbusübertragen. Modbus funktioniert bei mir über den Modbusadapter.
Jedoch erhalte ich keine Werte aus dem Webinterface... -
@steinerma sagte in Parser:
Den Wert aus dem Webinterface möchte ich gerne über Modbusübertragen.
Das habe ich mir gedacht
@steinerma sagte in Parser:
Modbus funktioniert bei mir über den Modbusadapter.
Dann hast du ja die Fehlermeldungen
@steinerma sagte in Parser:
Jedoch erhalte ich keine Werte aus dem Webinterface...
Welche Version hast du denn da?