Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Parser

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Parser

    This topic has been deleted. Only users with topic management privileges can see it.
    • Homoran
      Homoran Global Moderator Administrators @OliverIO last edited by Homoran

      @OliverIO sagte in Parser:

      Allerdings will er bei mir nix in einen Datenpunkt schreiben, obwohl das alles passt und auch kein Fehler kommt.
      Die Namen der Datenpunkte kannst du konfigurieren (Zeile 3)

      sieht bei mir genauso aus. 😞

      javascript.0	2020-03-06 16:45:27.132	info	(27541) script.js.Helios_ErrorTest_V2: message01: 28 Feb 2020 10:13:51 4159 0002h Code: Externe Netzstörung Typ: Externe Netzstörung Beschreibung: Erhöhte Netzfrequenz Maßnahme: Installation kontroll
      javascript.0	2020-03-06 16:45:27.130	info	(27541) script.js.Helios_ErrorTest_V2: events: "{\"dxsEntries\":[{\"dxsId\":234881792,\"value\":1},{\"dxsId\":234881537,\"value\":[207,217,88,94,63,16,2,0]},{\"dxsId\":234881538,\"value\":[0,0,0,0,0,
      javascript.0	2020-03-06 16:45:27.129	info	(27541) script.js.Helios_ErrorTest_V2: request ok:
      javascript.0	2020-03-06 16:45:27.129	info	(27541) script.js.Helios_ErrorTest_V2: response: {"statusCode":200,"body":"{\"dxsEntries\":[{\"dxsId\":234881792,\"value\":1},{\"dxsId\":234881537,\"value\":[207,217,88,94,63,16,2,0]},{\"dxsId\":2348
      javascript.0	2020-03-06 16:45:27.128	info	(27541) script.js.Helios_ErrorTest_V2: Status: 200
      javascript.0	2020-03-06 16:45:27.127	info	(27541) script.js.Helios_ErrorTest_V2: error: null
      javascript.0	2020-03-06 16:45:27.082	info	(27541) script.js.Helios_ErrorTest_V2: registered 0 subscriptions and 0 schedules
      javascript.0	2020-03-06 16:45:27.079	info	(27541) script.js.Helios_ErrorTest_V2: query: http://192.168.138.103/api/dxs.json?sessionid=iobroker&dxsEntries=234881792&dxsEntries=234881537&dxsEntries=234881538&dxsEntries=234881539&dxsEntries=234
      javascript.0	2020-03-06 16:45:27.078	info	(27541) script.js.Helios_ErrorTest_V2: pikorequest
      javascript.0	2020-03-06 16:45:27.077	info	(27541) script.js.Helios_ErrorTest_V2: getEvents
      javascript.0	2020-03-06 16:45:27.051	info	(27541) Start javascript script.js.Helios_ErrorTest_V2
      javascript.0	2020-03-06 16:44:00.034	info	(27541) script.js.Klima_und_Umwelt.Luftdaten_RoKi: Luftdaten aktualisiert
      javascript.0	2020-03-06 16:42:09.972	info	(27541) Stop script script.js.Helios_ErrorTest_V2
      

      Wo muss ich einen logeintrag zum debuggen einbauen, wo das Skript den Datenpunkt beschreiben müsste?

      ich such mal 😉

      EDIT:
      Gab es da nicht einen Bug mit setstate unter 0_userdata.0???

      1 Reply Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators last edited by Homoran

        @OliverIO
        kaum schreibt man ins log:

                    var msg = msgs.find(item => item.code==code);
                    var msgtext = 'Code: '+msg.type+' Typ: '+msg.type+' Beschreibung: '+msg.description+' Maßnahme: '+msg.action
                    log('message' + i+1 + ': ' + date + ' '  + code + ' '  + env + ' '+msgtext);
                    log("Datenpunkt: "+ datenpunkt+i + " Fehlermeldung: " + msgtext + true/*ack*/);
                    setState(datenpunkt+i, msgtext, true/*ack*/);
        

        und bekommt die Bestätigung, dass alles richtig laufen müsste:

        javascript.0	2020-03-06 16:58:38.947	info	(27541) script.js.Helios_ErrorTest_V2: Datenpunkt: 0_userdata.0.Solaranlage.Info0 Fehlermeldung: Code: Externe Netzstörung Typ: Externe Netzstörung Beschreibung: Erhöhte Netzfrequenz Maßnahme: Instal
        javascript.0	2020-03-06 16:58:38.947	info	(27541) script.js.Helios_ErrorTest_V2: message01: 28 Feb 2020 10:13:51 4159 0002h Code: Externe Netzstörung Typ: Externe Netzstörung Beschreibung: Erhöhte Netzfrequenz Maßnahme: Installation kontroll
        javascript.0	2020-03-06 16:58:38.946	info	(27541) script.js.Helios_ErrorTest_V2: events: "{\"dxsEntries\":[{\"dxsId\":234881792,\"value\":1},{\"dxsId\":234881537,\"value\":[207,217,88,94,63,16,2,0]},{\"dxsId\":234881538,\"value\":[0,0,0,0,0,
        javascript.0	2020-03-06 16:58:38.946	info	(27541) script.js.Helios_ErrorTest_V2: request ok:
        

        steht auch auf einmal was im Datenpunkt.

        Das Skript wird im Moment wohl nur durch den Start getriggert, oder?
        eigentlich müsste man es jede Minute (o.ä) laufen lassen um den Fehler hoffentlich "sofort" gemeldet zu bekommen.

        Dann kann man auf die Änderung der Datenpunkte reagieren und weitere Aktionen auslösen.

        OliverIO 1 Reply Last reply Reply Quote 0
        • OliverIO
          OliverIO @Homoran last edited by

          @Homoran ja genau, schedule musst du selbst einstellen

          Homoran 1 Reply Last reply Reply Quote 0
          • Homoran
            Homoran Global Moderator Administrators @OliverIO last edited by

            @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

            OliverIO 1 Reply Last reply Reply Quote 0
            • OliverIO
              OliverIO @Homoran last edited by

              @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

              Homoran 2 Replies Last reply Reply Quote 0
              • Homoran
                Homoran Global Moderator Administrators @OliverIO last edited by Homoran

                @OliverIO sagte in Parser:

                da musst du nur noch
                JSON.stringify(msg) in den Datenpunkt schreiben

                @OliverIO sagte in Parser:

                das ist zu einfach.

                😉

                {"code":"4159","type":"Externe Netzstörung","description":"Erhöhte Netzfrequenz","action":"Installation kontrollieren1 "}
                
                1 Reply Last reply Reply Quote 0
                • Homoran
                  Homoran Global Moderator Administrators @OliverIO last edited by

                  @OliverIO

                  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 1 Reply Last reply Reply Quote 0
                  • OliverIO
                    OliverIO @Homoran last edited by

                    @Homoran

                    Zeile 178
                    https://forum.iobroker.net/post/389135

                    Homoran 1 Reply Last reply Reply Quote 0
                    • Homoran
                      Homoran Global Moderator Administrators @OliverIO last edited by

                      @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

                      OliverIO 1 Reply Last reply Reply Quote 0
                      • OliverIO
                        OliverIO @Homoran last edited by

                        @Homoran dann
                        msg.date = date;

                        Homoran 1 Reply Last reply Reply Quote 0
                        • Homoran
                          Homoran Global Moderator Administrators @OliverIO last edited by

                          @OliverIO Ehrlich?
                          so einfach?
                          wird das in das Array geschrieben?

                          OliverIO 1 Reply Last reply Reply Quote 0
                          • OliverIO
                            OliverIO @Homoran last edited by

                            @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.

                            Homoran 1 Reply Last reply Reply Quote 0
                            • Homoran
                              Homoran Global Moderator Administrators @OliverIO last edited by

                              @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"}
                              
                              1 Reply Last reply Reply Quote 0
                              • S
                                steinerma @OliverIO last edited by

                                @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?

                                OliverIO 1 Reply Last reply Reply Quote 0
                                • OliverIO
                                  OliverIO @steinerma last edited by

                                  @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.

                                  S Homoran 2 Replies Last reply Reply Quote 1
                                  • S
                                    steinerma @OliverIO last edited by

                                    @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)
                                                    
                                    						
                                    			}
                                    		}
                                    	}
                                    }
                                    
                                    OliverIO Homoran 2 Replies Last reply Reply Quote 0
                                    • OliverIO
                                      OliverIO @steinerma last edited by OliverIO

                                      @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.

                                      S 1 Reply Last reply Reply Quote 0
                                      • S
                                        steinerma @OliverIO last edited by

                                        @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?

                                        OliverIO 1 Reply Last reply Reply Quote 0
                                        • OliverIO
                                          OliverIO @steinerma last edited by

                                          @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.

                                          1 Reply Last reply Reply Quote 1
                                          • Homoran
                                            Homoran Global Moderator Administrators @OliverIO last edited by

                                            @OliverIO sagte in Parser:

                                            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

                                            1 Reply Last reply Reply Quote 1
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            852
                                            Online

                                            31.8k
                                            Users

                                            79.9k
                                            Topics

                                            1.3m
                                            Posts

                                            parser
                                            3
                                            108
                                            6290
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo