Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Ausgegebene Werte werden als nicht "Bestätigt" ausgegeben

    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

    Ausgegebene Werte werden als nicht "Bestätigt" ausgegeben

    This topic has been deleted. Only users with topic management privileges can see it.
    • R
      renni61 last edited by

      Hallo,

      ich habe folgenden Script erstellt, der auch die entsprechenden Werte ausgibt. Diese Werte (enter/leave) werden jedoch nicht als BESTÄTIGT ausgegeben (Werte bleiben rot). Komme bei der Problematik leider nicht weiter.

      var pfad = "javascript.0.owntracks.";
      var channel = "RennertJ.";
      var sname = "S20.";
       
      // do not change
       
      var idevent = pfad + channel + sname + 'event';
       
      // Create States
       
      createState(idevent, 0,{type: 'string',name: 'Home', read: true,write: true,role: 'variable'});
      
       // script beginning
          on({id: 'mqtt.0.owntracks.RennertJ.S20.event', change: "any"}, function (obj) {
       
             //variabele erstellen
                  var event;
                  
             try {obj = JSON.parse(getState('mqtt.0.owntracks.RennertJ.S20.event').val);
             } catch (e) {
                     console.error('Cannot parse: ' + getState('mqtt.0.owntracks.RennertJ.S20.event').val);
                     return;
              }
       
             event = obj.event;
              
              setState(idevent, event);
                 
      });
      

      VG Jörg

      AlCalzone 1 Reply Last reply Reply Quote 0
      • AlCalzone
        AlCalzone Developer @renni61 last edited by

        @renni61

        In Zeile 27 musst du das ACK (Bestätigt) Flag auch setzen:

        - setState(idevent, event);
        + setState(idevent, event, true);
        
        R 2 Replies Last reply Reply Quote 0
        • R
          renni61 @AlCalzone last edited by

          @alcalzone

          Super! Dankeschön!!! Funzt.

          Was so "Kleinigkeiten" ausmachen.

          Schönen Abend noch.

          1 Reply Last reply Reply Quote 0
          • R
            renni61 @AlCalzone last edited by

            @alcalzone

            Hallo,

            darf ich Dich nochmal um Hilfe bitten? Nachfolgend ein Scriptausschnitt:

                desc = obj.desc;
                event = obj.event;
                lat = obj.lat;
                lon = obj.lon;
                acc = obj.acc;
            

            Ich würde gern die Datenpunkte "lat" und "lon" in einem weiteren Extra-Datenpunkt ("pos") mittels Kommatrennung (Bsp. 55,00, 10,00) zusammen ausgeben. Mit der Variante "pos = obj.lat, obj.lon" funzt das leider nicht. Auch ein Semikolon als "Trenner" zeigt keinen Erfolg.
            Sorry für die nochmalige "Störung".
            VG Jörg

            T 1 Reply Last reply Reply Quote 0
            • T
              ticaki Developer @renni61 last edited by ticaki

              @renni61
              Wenn der Datenpunkt eine Zeichenkette ist geht es so:

              pos = obj.lat + ', ' + obj.lon;
              

              oder in schön:

              pos = obj.lat.toString() + ', ' + obj.lon.toString();
              
              R T 3 Replies Last reply Reply Quote 0
              • R
                renni61 @ticaki last edited by

                @ticaki

                Hi,
                besten Dank für die superschnelle Rückmeldung! Die Daten kommen aus einem MQTT-String.
                Mit Deiner Variante gibt er im neu zu rstellenden Datenpunkt leider die Summe beider Einzeldatenpunkte aus. 😢
                VG Jörg

                AlCalzone 1 Reply Last reply Reply Quote 0
                • AlCalzone
                  AlCalzone Developer @renni61 last edited by

                  @renni61 sagte in Ausgegebene Werte werden als nicht "Bestätigt" ausgegeben:

                  Summe beider Einzeldatenpunkte

                  Das dürfte nicht sein, selbst wenn es sich um Zahlen handelt:
                  f1611b7f-fb3b-4edd-88b6-29884c76fc89-grafik.png

                  R 1 Reply Last reply Reply Quote 0
                  • R
                    renni61 @ticaki last edited by

                    @ticaki

                    Hi, >>> Kommando von meiner vorhergehenden Antwort zurück! Es funktioniert doch mit Deiner Variante.
                    Vielen lieben Dank!!! 👍 👍 👍
                    Jörg

                    1 Reply Last reply Reply Quote 0
                    • T
                      ticaki Developer @ticaki last edited by

                      @renni61
                      @ticaki sagte in Ausgegebene Werte werden als nicht "Bestätigt" ausgegeben:

                      @renni61
                      Wenn der Datenpunkt eine Zeichenkette ist geht es so:

                      Da hab ich mich schlecht ausgedrückt. Das Beispiel von mir wandelt die Eingage ob Zeichenkette, Nummer oder Float in eine Zeichenkette um.

                      1 Reply Last reply Reply Quote 0
                      • R
                        renni61 @AlCalzone last edited by

                        @alcalzone

                        Hallo,

                        auch auf die "Gefahr" hin das ich nerve, muss ich (hoffentlich letztmalig) nochmal um Hilfe bitten. 🤷‍♂️

                        Das nachfolgende Script läuft - dank Eurer Hilfestellung - dem Grunde nach (was die Ausgabe betrifft) eigentlich akkurat nach meinen Vorstellungen. Leider werden jedoch im Protokoll Warnungen ausgegeben, die ich nicht beseitigt bekomme.

                        Die Aufstellung der ausgegebenen Warnungen sind direkt hinter dem Script aufgeführt.

                        Der vermeintliche Verursacher der Warnungen scheint die Zeile 47 zu sein. Lösche ich diese, läuft ALLES ohne Fehlermeldung. Ich habe keine Ahnung, wo hier nun wieder der "Hund begraben liegt".

                        var pfad = "0_userdata.0.owntracks.";
                        var channel = "RennertJ.";
                        var sname = "S20.";
                        var idevent = pfad + channel + sname + 'Presence';
                        var iddesc = pfad + channel + sname + 'Location';
                        var idlat = pfad + channel + sname + 'Latitude';
                        var idlon = pfad + channel + sname + 'Longitude';
                        var idacc = pfad + channel + sname + 'Accuracy';
                        var idpos = pfad + channel + sname + 'Position';
                        
                        createState(idevent, 0, { type: 'string', name: 'Anwesenheit', read: true, write: true, role: 'variable' });
                        createState(iddesc, 0, { type: 'string', name: 'Ort', read: true, write: true, role: 'variable' });
                        createState(idlat, 0, { type: 'number', name: 'Breitengrad', read: true, write: true, role: 'number', unit: '°'});
                        createState(idlon, 0, { type: 'number', name: 'Laengengrad', read: true, write: true, role: 'number', unit: '°'});
                        createState(idacc, 0, { type: 'number', name: 'Genauigkeit', read: true, write: true, role: 'number', unit: 'm'});
                        createState(idpos, 0, { type: 'number', name: 'Position', read: true, write: true, role: 'number'});
                        
                        // Script
                        on({ id: 'mqtt.0.owntracks.RennertJ.S20.event', change: "any" }, function (obj) {
                        
                        // Variabeln erstellen
                            var event;
                            var desc;
                            var lat;
                            var lon;
                            var acc;
                            var pos;
                            
                            try {
                                obj = JSON.parse(getState('mqtt.0.owntracks.RennertJ.S20.event').val);
                            } catch (e) {
                                console.error('Cannot parse: ' + getState('mqtt.0.owntracks.RennertJ.S20.event').val);
                                return;
                            }
                        
                            desc = obj.desc;
                            event = obj.event;
                            lat = obj.lat;
                            lon = obj.lon;
                            acc = obj.acc;
                            pos = obj.lat.toString() + ', ' + obj.lon.toString();
                            
                            setState(idevent, event, true);
                            setState(iddesc, desc, true);
                            setState(idlat, lat, true);
                            setState(idlon, lon, true);
                            setState(idpos, pos, true);
                        })
                        

                        javascript.0
                        2021-09-21 20:47:57.577 info State value to set for "0_userdata.0.owntracks.RennertJ.S20.Position" has to be type "number" but received type "string"

                        javascript.0
                        2021-09-21 20:47:57.536 warn at processImmediate (internal/timers.js:461:21)

                        javascript.0
                        2021-09-21 20:47:57.536 warn at Immediate._onImmediate (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:5706:41)

                        javascript.0
                        2021-09-21 20:47:57.536 warn at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:525:29)

                        javascript.0
                        2021-09-21 20:47:57.535 warn at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1087:38)

                        javascript.0
                        2021-09-21 20:47:57.533 warn at Object.<anonymous> (script.js.common.MQTT.Owntracks_S20:47:5)

                        javascript.0
                        2021-09-21 20:47:57.532 warn at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1439:20)

                        Thanks!

                        VG Jörg

                        T 1 Reply Last reply Reply Quote 0
                        • T
                          ticaki Developer @renni61 last edited by ticaki

                          @renni61
                          Ich kanns mir nicht verkeifen 🙂 Lesen bildet

                          Wenn der Datenpunkt eine Zeichenkette ist geht es so:

                          Das Beispiel von mir wandelt die Eingage ob Zeichenkette, Nummer oder Float in eine Zeichenkette um.

                          createState(idpos, 0, { type: 'number', name: 'Position', read: true, write: true, role: 'number'});
                          
                          createState(idpos, 0, { type: 'string', name: 'Position', read: true, write: true, role: 'number'});
                          
                          R 1 Reply Last reply Reply Quote 0
                          • R
                            renni61 @ticaki last edited by

                            @ticaki

                            Mh, hatte ich auch in der "Verlosung" gehabt und mehrmals vor meiner Nachfrage geändert. Trotzdem kommen weiter Fehlermeldungen:

                            javascript.0
                            2021-09-21 21:39:06.208 info State value to set for "0_userdata.0.owntracks.RennertJ.S20.Position" has to be type "number" but received type "string"

                            javascript.0
                            2021-09-21 21:39:06.193 warn at processImmediate (internal/timers.js:461:21)

                            javascript.0
                            2021-09-21 21:39:06.193 warn at Immediate._onImmediate (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:5706:41)

                            javascript.0
                            2021-09-21 21:39:06.193 warn at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:525:29)

                            javascript.0
                            2021-09-21 21:39:06.193 warn at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1087:38)

                            javascript.0
                            2021-09-21 21:39:06.192 warn at Object.<anonymous> (script.js.common.MQTT.Owntracks_S20:48:5)

                            javascript.0
                            2021-09-21 21:39:06.192 warn at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1439:20)

                            javascript.0
                            2021-09-21 21:39:06.190 warn You are assigning a string to the state "0_userdata.0.owntracks.RennertJ.S20.Position" which expects a number. Please fix your code to use a number or change the state type to string. This warning might become an error in future versions.

                            VG Jörg

                            T 1 Reply Last reply Reply Quote 0
                            • T
                              ticaki Developer @renni61 last edited by

                              @renni61
                              Ich glaube nicht das createState den Type ändert. Du mußt den State wohl löschen und neu erstellen lassen. Aber das ist auf jeden Fall der Fehler.

                              Asgothian R 3 Replies Last reply Reply Quote 0
                              • Asgothian
                                Asgothian Developer @ticaki last edited by

                                @ticaki sagte in Ausgegebene Werte werden als nicht "Bestätigt" ausgegeben:

                                @renni61
                                Ich glaube nicht das createState den Type ändert. Du mußt den State wohl löschen und neu erstellen lassen. Aber das ist auf jeden Fall der Fehler.

                                Du kannst den Typ des State auch im Admin anpassen - wenn du auf die Expertenansicht umstellst.

                                1 Reply Last reply Reply Quote 0
                                • R
                                  renni61 @ticaki last edited by

                                  @ticaki

                                  Es ist zum Haare raufen! Alles gelöscht und einen völlig neuen Script aufgesetzt, Fehlermeldungen bleiben.
                                  Nach Zustandsänderung kommt im Scriptbearbeitungsfenster sofort folgende Warnung:

                                  22:19:48.903 warn javascript.0 (132) at Object.<anonymous> (script.js.common.MQTT.S20_RJ:47:5)

                                  Wenn ich das mit meinen sehr dürftigen Kenntnissen richtig interpretiere, weißt doch der Fehler hier auf Zeile 47 hin, oder täusche ich mich da? Ich glaube, ich renne gleich mit meinem Holzkopp gegen die Wand. 😠

                                  1 Reply Last reply Reply Quote 0
                                  • R
                                    renni61 @ticaki last edited by

                                    @ticaki

                                    So, Problem ist gelöst. 🙆‍♂️

                                    Ich Vollhonk hatte folgenden Ausdruck nicht im Script drin:

                                    setState(idacc, acc, true);
                                    

                                    Das war schlussendlich der verfluchte Fehler.
                                    Ganz lieben Dank dennoch für Eure Hilfestellung!!! Ich weiß das hoch zu würdigen! THANKS!!!

                                    Gute Nacht

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

                                    Support us

                                    ioBroker
                                    Community Adapters
                                    Donate

                                    398
                                    Online

                                    31.9k
                                    Users

                                    80.2k
                                    Topics

                                    1.3m
                                    Posts

                                    4
                                    16
                                    562
                                    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