Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Blockly Fehlermeldungen bereinigen

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Blockly Fehlermeldungen bereinigen

    This topic has been deleted. Only users with topic management privileges can see it.
    • paul53
      paul53 @tedesco1968 last edited by paul53

      @tedesco1968 sagte: Die Warnung siehe Bild sind trotzdem noch da. Was sagen diese aus?

      Im Tab "Protokolle" erhält man weitere Informationen zu den Warnungen. Vermutlich passt der Datenpunkt-Typ von "0_userdata.0.PV_Tage" nicht?

      @tedesco1968 sagte in Blockly Fehlermeldungen bereinigen:

      bezüglich den Selector auf die spünge helfen

      Einfach so:

      Blockly_temp.JPG

      T 1 Reply Last reply Reply Quote 0
      • T
        tedesco1968 @paul53 last edited by

        @paul53 said in Blockly Fehlermeldungen bereinigen:

        Im Tab "Protokolle" erhält man weitere Informationen zu den Warnungen. Vermutlich passt der Datenpunkt-Typ von "0_userdata.0.PV_Tage" nicht?

        Hallo Paul,

        Die Datenpunkte sind vom Typ Number,
        diese werden täglich automatisch generiert und mit den Tagesleistungen befüllt, über diese zwei Javascript Funktionen.

        Datenpunkt Erstellung:

        var tag, monat, jahr;
        var daten= "0_userdata.0.PV_Leistung_Tage.PV_";
        var datenpunkt;
        
        tag = formatDate(new Date(), "TT");
        monat = formatDate(new Date(), "MM");
        jahr = formatDate(new Date(), "JJ ");
        
        var datenpunkt= daten + tag + "_" + monat + "_" + jahr;
        
        createState(datenpunkt , '0', JSON.parse('{ "type": "number"}'), async function () {
        });
        

        und Datenpunkt befüllen:

        var tag, monat, jahr;
        var daten= "0_userdata.0.PV_Leistung_Tage.PV_";
        var datenpunkt;
        
        tag = formatDate(new Date(), "TT");
        monat = formatDate(new Date(), "MM");
        jahr = formatDate(new Date(), "JJ ");
        
        var datenpunkt= daten + tag + "_" + monat + "_" + jahr;
        
        
        
        setState(datenpunkt, getState("javascript.0.Ph-Leistungsberechnung.Ph-Leistung_Gesamt_Heute").val, true);
        

        Bestimmt gibt es da elgantere Lösungen, aber es tut was es soll.

        Gruß
        Antonio

        paul53 2 Replies Last reply Reply Quote 0
        • paul53
          paul53 @tedesco1968 last edited by

          @tedesco1968 sagte: Die Datenpunkte sind vom Typ Number,

          Ich meinte den Ziel-Datenpunkt "0_userdata.0.PV_Tage" mit der JSON-Tabelle.

          T 1 Reply Last reply Reply Quote 0
          • T
            tedesco1968 @paul53 last edited by

            @paul53 said in Blockly Fehlermeldungen bereinigen:

            Ich meinte den Ziel-Datenpunkt "0_userdata.0.PV_Tage" mit der JSON-Tabelle.

            Hallo Paul,

            du hast natürlich recht, war auch vom Typ Number, muss natürlich ein String sein.
            Unter Protokolle stand es natürlich ganz groß:
            [State value to set for "0_userdata.0.PVtag" has to be type "number" but received type "string"

            Vielen Dank Paul, läuft jetzt fehlerlos, Danke dir

            Gruß
            Antonio

            1 Reply Last reply Reply Quote 0
            • paul53
              paul53 @tedesco1968 last edited by paul53

              @tedesco1968 sagte: Datenpunkt Erstellung:

              Es fehlt in dem Skript ein Trigger(schedule).
              Wird jeden Tag ein neuer Datenpunkt erstellt? Wenn ja, wird die JSON-Tabelle immer länger.

              @tedesco1968 sagte in Blockly Fehlermeldungen bereinigen:

              Bestimmt gibt es da elgantere Lösungen

              Gibt es.

              const idPvHeute = 'javascript.0.Ph-Leistungsberechnung.Ph-Leistung_Gesamt_Heute';
              const daten = "0_userdata.0.PV_Leistung_Tage.PV_";
              
              schedule('0 23 * * *', function() {
                  const datenpunkt = daten + formatDate(new Date(), 'TT_MM_JJ');
                  createState(datenpunkt, 0, {type: "number", unit: "Wh"}, function () {
                      setState(datenpunkt, getState(idPvHeute).val, true);
                  });
              });
              

              Übrigens ist der Tagesertrag keine Leistung, sondern ein Energiewert (Wh).

              EDIT: Wenn richtig sortiert werden soll, muss erst das Jahr und zuletzt der Tag in die ID.

                  const datenpunkt = daten + formatDate(new Date(), 'JJ_MM_TT');
                  createState(datenpunkt, 0, {type: "number", unit: "Wh", name: formatDate(new Date(), 'TT.MM.JJ')}, function () {
              
              T 2 Replies Last reply Reply Quote 0
              • T
                tedesco1968 @paul53 last edited by

                @paul53 said in Blockly Fehlermeldungen bereinigen:

                Es fehlt in dem Skript ein Trigger(schedule).
                Wird jeden Tag ein neuer Datenpunkt erstellt? Wenn ja, wird die JSON-Tabelle immer länger.

                Hallo Paul,

                Trigger ist doch vohanden

                2022-12-28 17_55_07-javascript - raspberrypi.png

                Übrigens ist der Tagesertrag keine Leistung, sondern ein Energiewert (Wh).

                Klar das weiß ich doch. Werde aber dein eleganteren Code nutzen 🙂

                Danke dir.

                Gruß
                Antonio

                1 Reply Last reply Reply Quote 0
                • T
                  tedesco1968 @paul53 last edited by

                  Hallo Paul,

                  ich habe deinen Code übernommen, allerdings das createState und setSteate getrennt und wie vorher in 2 Blockly-Javascript Funktionen gepackt.

                  Wieso? Weil ich den setState alle 10min aktualisieren möchte so habe ich immer die aktuelle Wh des jeweiligen tages. Hätte ich auch komplett in Javascript und einfach ein zusätzliches Schedule hizufügen können.

                  Eine andere Frage, kann man per JavaScript auch aud die Funktionen der Datenpunkte zugreifen und diese verändern (siehe Bild)?

                  objekte.png

                  Gruß
                  Antonio

                  paul53 1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 @tedesco1968 last edited by

                    @tedesco1968 sagte: kann man per JavaScript auch aud die Funktionen der Datenpunkte zugreifen und diese verändern (siehe Bild)?

                    Man kann, aber wozu sollte man sie verändern?

                    Mit der ID "PV_TT_MM_JJ" wirst Du wegen der Sortierreihenfolge nicht lange Freude haben.

                    T 1 Reply Last reply Reply Quote 0
                    • T
                      tedesco1968 @paul53 last edited by

                      Hallo Paul,

                      @paul53 said in Blockly Fehlermeldungen bereinigen:

                      Man kann, aber wozu sollte man sie verändern?

                      Ich wollte automatisch ein PV einfügen, villeicht für später...

                      Mit der ID "PV_TT_MM_JJ" wirst Du wegen der Sortierreihenfolge nicht lange Freude haben.

                      OK, gibt es da bestimmte Regeln die man befolgen muß, oder andere Gründe?
                      Ansonsten ändere ich das, natürlich.

                      Gruß
                      Antonio

                      paul53 1 Reply Last reply Reply Quote 0
                      • paul53
                        paul53 @tedesco1968 last edited by

                        @tedesco1968 sagte: gibt es da bestimmte Regeln die man befolgen muß

                        Der Selektor sortiert nach ID-String. Damit die Reihenfolge stimmt, muss der höherwertige Teil (Jahr) vor dem niederwertigen stehen: "PV_JJ_MM_TT".

                        T 1 Reply Last reply Reply Quote 0
                        • T
                          tedesco1968 @paul53 last edited by

                          @paul53 said in Blockly Fehlermeldungen bereinigen:

                          @tedesco1968 sagte: gibt es da bestimmte Regeln die man befolgen muß

                          Der Selektor sortiert nach ID-String. Damit die Reihenfolge stimmt, muss der höherwertige Teil (Jahr) vor dem niederwertigen stehen: "PV_JJ_MM_TT".

                          OK, dann baue ich das um, wie du vorgeschlagen hast

                          Gruß
                          Antonio

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

                            Hallo Paul,

                            erledigt sieht so aus in VIS:

                            2022-12-30 11_45_12-vis.png

                            bekomme es leider nicht schöner Visualisiert.

                            So sieht das Json Objekt aus:

                            2022-12-30 11_47_23-objects - raspberrypi.png

                            Gruß
                            Antonio

                            paul53 1 Reply Last reply Reply Quote 0
                            • paul53
                              paul53 @tedesco1968 last edited by paul53

                              @tedesco1968 sagte: bekomme es leider nicht schöner Visualisiert.

                              Weshalb vergibst Du den DP keinen "schönen" Namen "TT.MM.JJ" wie hier unten gezeigt?
                              Damit vereinfacht sich die Funktion "PV_Daten(id)":

                              return {Tag: getObject(id).common.name, Wh: getState(id).val};
                              
                              T 1 Reply Last reply Reply Quote 0
                              • T
                                tedesco1968 @paul53 last edited by

                                @paul53 said in Blockly Fehlermeldungen bereinigen:

                                @tedesco1968 sagte: bekomme es leider nicht schöner Visualisiert.

                                Weshalb vergibst Du den DP keinen "schönen" Namen "TT.MM.JJ" wie hier unten gezeigt?
                                Damit vereinfacht sich die Funktion "PV_Daten(id)":

                                return {Tag: getObject(id).common.name, Wh: getState(id).val};
                                

                                Hallo Paul,

                                meinst du das mit dem formatDate?

                                //Datenpunkt-Erstellung
                                
                                const idPvHeute = 'javascript.0.Ph-Leistungsberechnung.Ph-Leistung_Gesamt_Heute';
                                const daten = "0_userdata.0.PV_Leistung_Tage.PV_";
                                
                                    const datenpunkt = daten + formatDate(new Date(), 'JJ_MM_TT');
                                    
                                    //createState(datenpunkt, 0, {type: "number", unit: "Wh"});
                                    createState(datenpunkt, 0, {type: "number", unit: "Wh", name: formatDate(new Date(), 'TT.MM.JJ')});
                                

                                habe ich gerade probiert, erzeugt dieses:

                                2022-12-30 12_35_07-objects - raspberrypi.png

                                T paul53 2 Replies Last reply Reply Quote 0
                                • T
                                  tedesco1968 @tedesco1968 last edited by

                                  Der erzeugte Datenpunkt sieht so aus:

                                  2022-12-30 12_44_51-objects - raspberrypi.png

                                  1 Reply Last reply Reply Quote 0
                                  • paul53
                                    paul53 @tedesco1968 last edited by paul53

                                    @tedesco1968 sagte: meinst du das mit dem formatDate?

                                    Ja.
                                    Die geänderte JS-Funktion mit Ergebnis PV_Daten(id)

                                    return {Tag: getObject(id).common.name, Wh: getState(id).val};
                                    

                                    sollte dann folgenden Eintrag im JSON erzeugen:

                                    [
                                      {
                                        "Tag": "30.12.22",
                                        "Wh": 6579
                                      }
                                    ]
                                    

                                    @tedesco1968 sagte in Blockly Fehlermeldungen bereinigen:

                                    Der erzeugte Datenpunkt sieht so aus:

                                    Leider ist der Name nicht vollständig zu erkennen.

                                    T 1 Reply Last reply Reply Quote 0
                                    • T
                                      tedesco1968 @paul53 last edited by

                                      @paul53 said in Blockly Fehlermeldungen bereinigen:

                                      Leider ist der Name nicht vollständig zu erkennen

                                      30.12.22 der wird schon richtig erzeugt, leider lassen sich die Spalten in Iobroker nicht mehr ziehen wie früher.

                                      die funktion habe ich geändert:

                                      return {Tag: getObject(id).common.name.substring(33, 41), Wh: getState(id).val};
                                      

                                      allerdings übernimmt es leider den namen nicht (in PV_Tag):

                                      C:\Users\tedesco\Documents\iobroker\blockly\2022-12-30 13_17_24-javascript - raspberrypi.png

                                      T paul53 2 Replies Last reply Reply Quote 0
                                      • T
                                        tedesco1968 @tedesco1968 last edited by

                                        2022-12-30 13_17_24-javascript - raspberrypi.png

                                        1 Reply Last reply Reply Quote 0
                                        • paul53
                                          paul53 @tedesco1968 last edited by paul53

                                          @tedesco1968 sagte: die funktion habe ich geändert:

                                          Ohne .substring(33, 41) !!

                                          return {Tag: getObject(id).common.name, Wh: getState(id).val};
                                          

                                          @tedesco1968 sagte in Blockly Fehlermeldungen bereinigen:

                                          leider lassen sich die Spalten in Iobroker nicht mehr ziehen wie früher.

                                          Die gepunktete Linie oben links neben "Name" nach links ziehen.

                                          EDIT: Eine Liste mit Objekten kann man nicht numerisch sortieren.

                                          T 1 Reply Last reply Reply Quote 0
                                          • T
                                            tedesco1968 @paul53 last edited by

                                            @paul53 said in Blockly Fehlermeldungen bereinigen:

                                            Die gepunktete Linie oben links neben "Name" nach links ziehen.

                                            ich sehe die gepunktete Linie, lässt sich aber nicht ziehen, mit zwei verschiedene Browser probiert!

                                            EDIT: Eine Liste mit Objekten kann man nicht numerisch sortieren.

                                            OK, habe ich wieder entfernt!
                                            Substring entfernt, jetzt macht es was es soll :).

                                            2022-12-30 14_18_22-objects - raspberrypi.png

                                            Super, bist halt ein Profi.

                                            Gruß
                                            Antonio

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            861
                                            Online

                                            32.0k
                                            Users

                                            80.5k
                                            Topics

                                            1.3m
                                            Posts

                                            3
                                            60
                                            3077
                                            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