Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Wie lege ich den Datenpunkt an?

NEWS

  • wichtiges UPDATE für controller 7.2.2 im stable
    HomoranH
    Homoran
    10
    1
    2.6k

  • Neues YouTube-Video: Visualisierung im Devices-Adapter
    BluefoxB
    Bluefox
    16
    1
    4.7k

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    8
    1
    4.0k

Wie lege ich den Datenpunkt an?

Geplant Angeheftet Gesperrt Verschoben JavaScript
23 Beiträge 9 Kommentatoren 696 Aufrufe 5 Beobachtet
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • KusselinK Offline
    KusselinK Offline
    Kusselin
    schrieb am zuletzt editiert von Kusselin
    #1

    Hallo Zusammen, ich probiere gerade ein über KI erstelltes Script für meine Einspeisung. Ich möchte gerne das Script so haben das es mir täglich die KWh und die € ausgibt und es soll mir dann jeden Tag auch die addierte Summe (kumulativ) von den tagen zuvor für KWh und € ausgeben. Nun habe ich mal anhand der Datenpunkte ein Sript erstellen lassen...leider weiss ich aber nicht wie ich den Datenpunkt "'Einspeisung Jahr gesamt'" und "'Einspeisung Jahr gesamt (€)'" anlegen muss ->

    // ── Jahres-Datenpunkte anlegen (falls nicht vorhanden) ─────────
    createState(DP_JAHR_KWH, {
        name: 'Einspeisung Jahr gesamt',
        type: 'number',
        role: 'value.energy',
        unit: 'kWh',
        read: true,
        write: true,
        def: 0
    });
    
    createState(DP_JAHR_EURO, {
        name: 'Einspeisung Jahr gesamt (€)',
        type: 'number',
        role: 'value.money',
        unit: '€',
        read: true,
        write: true,
        def: 0
    });
    

    Hier mal das ganze Script bis dahin..

    Kann hier bitte mal ein Scriptler drüberschauen und mir das erklären bitte.
    Über ne Info herzlichen Dank.

    // ═══════════════════════════════════════════════════════════════
    // Einspeisung – Tageswerte + robuste Jahressumme
    // ═══════════════════════════════════════════════════════════════
    
    // ── Deine vorhandenen Datenpunkte ──────────────────────────────
    const DP_HEUTE_KWH  = '0_userdata.0.Einspeisung.heute_kWh';
    const DP_HEUTE_EURO = '0_userdata.0.Einspeisung.heute_euro';
    
    // ── Zielstruktur ───────────────────────────────────────────────
    const DP_PREFIX     = '0_userdata.0.Einspeisung.Tage.';
    const DP_JAHR_KWH   = '0_userdata.0.Einspeisung.jahr_kWh';
    const DP_JAHR_EURO  = '0_userdata.0.Einspeisung.jahr_euro';
    
    // ── Jahres-Datenpunkte anlegen (falls nicht vorhanden) ─────────
    createState(DP_JAHR_KWH, {
        name: 'Einspeisung Jahr gesamt',
        type: 'number',
        role: 'value.energy',
        unit: 'kWh',
        read: true,
        write: true,
        def: 0
    });
    
    createState(DP_JAHR_EURO, {
        name: 'Einspeisung Jahr gesamt (€)',
        type: 'number',
        role: 'value.money',
        unit: '€',
        read: true,
        write: true,
        def: 0
    });
    
    // ═══════════════════════════════════════════════════════════════
    // Datum erzeugen → 2026-04-09
    // ═══════════════════════════════════════════════════════════════
    function getDatum() {
        const d = new Date();
        return d.getFullYear() + '-' +
            String(d.getMonth() + 1).padStart(2, '0') + '-' +
            String(d.getDate()).padStart(2, '0');
    }
    
    // ═══════════════════════════════════════════════════════════════
    // Tageswerte speichern
    // ═══════════════════════════════════════════════════════════════
    function speichereTag() {
    
        const datum = getDatum();
    
        const kwh  = parseFloat(getState(DP_HEUTE_KWH).val)  || 0;
        const euro = parseFloat(getState(DP_HEUTE_EURO).val) || 0;
    
        const dpKwh  = DP_PREFIX + datum + '_kWh';
        const dpEuro = DP_PREFIX + datum + '_euro';
    
        createState(dpKwh, {
            name: 'Einspeisung ' + datum,
            type: 'number',
            role: 'value.energy',
            unit: 'kWh',
            read: true,
            write: false
        }, () => setState(dpKwh, kwh, true));
    
        createState(dpEuro, {
            name: 'Vergütung ' + datum,
            type: 'number',
            role: 'value.money',
            unit: '€',
            read: true,
            write: false
        }, () => setState(dpEuro, euro, true));
    
        log(`📅 ${datum}: ${kwh} kWh | ${euro} € gespeichert`, 'info');
    
        jahressummeNeuBerechnen();
    }
    
    // ═══════════════════════════════════════════════════════════════
    // ROBUSTE Jahressumme (aus allen Tagen neu berechnet)
    // ═══════════════════════════════════════════════════════════════
    function jahressummeNeuBerechnen() {
    
        const jahr = new Date().getFullYear();
        const states = $('state[id=' + DP_PREFIX + '*]');
    
        let sumKwh = 0;
        let sumEuro = 0;
    
        states.each(function (id) {
    
            if (!id.includes(jahr)) return;
    
            const val = parseFloat(getState(id).val) || 0;
    
            if (id.endsWith('_kWh')) {
                sumKwh += val;
            } else if (id.endsWith('_euro')) {
                sumEuro += val;
            }
        });
    
        sumKwh  = Math.round(sumKwh * 100) / 100;
        sumEuro = Math.round(sumEuro * 100) / 100;
    
        setState(DP_JAHR_KWH, sumKwh, true);
        setState(DP_JAHR_EURO, sumEuro, true);
    
        log(`📊 Jahr ${jahr}: ${sumKwh} kWh | ${sumEuro} €`, 'info');
    }
    
    // ═══════════════════════════════════════════════════════════════
    // Täglich ausführen (23:55 Uhr)
    // ═══════════════════════════════════════════════════════════════
    schedule('55 23 * * *', speichereTag);
    
    // Beim Start einmal berechnen (wichtig!)
    jahressummeNeuBerechnen();
    
    log('✅ Einspeisungs-Script aktiv', 'info');
    
    C 1 Antwort Letzte Antwort
    0
    • KusselinK Kusselin

      Hallo Zusammen, ich probiere gerade ein über KI erstelltes Script für meine Einspeisung. Ich möchte gerne das Script so haben das es mir täglich die KWh und die € ausgibt und es soll mir dann jeden Tag auch die addierte Summe (kumulativ) von den tagen zuvor für KWh und € ausgeben. Nun habe ich mal anhand der Datenpunkte ein Sript erstellen lassen...leider weiss ich aber nicht wie ich den Datenpunkt "'Einspeisung Jahr gesamt'" und "'Einspeisung Jahr gesamt (€)'" anlegen muss ->

      // ── Jahres-Datenpunkte anlegen (falls nicht vorhanden) ─────────
      createState(DP_JAHR_KWH, {
          name: 'Einspeisung Jahr gesamt',
          type: 'number',
          role: 'value.energy',
          unit: 'kWh',
          read: true,
          write: true,
          def: 0
      });
      
      createState(DP_JAHR_EURO, {
          name: 'Einspeisung Jahr gesamt (€)',
          type: 'number',
          role: 'value.money',
          unit: '€',
          read: true,
          write: true,
          def: 0
      });
      

      Hier mal das ganze Script bis dahin..

      Kann hier bitte mal ein Scriptler drüberschauen und mir das erklären bitte.
      Über ne Info herzlichen Dank.

      // ═══════════════════════════════════════════════════════════════
      // Einspeisung – Tageswerte + robuste Jahressumme
      // ═══════════════════════════════════════════════════════════════
      
      // ── Deine vorhandenen Datenpunkte ──────────────────────────────
      const DP_HEUTE_KWH  = '0_userdata.0.Einspeisung.heute_kWh';
      const DP_HEUTE_EURO = '0_userdata.0.Einspeisung.heute_euro';
      
      // ── Zielstruktur ───────────────────────────────────────────────
      const DP_PREFIX     = '0_userdata.0.Einspeisung.Tage.';
      const DP_JAHR_KWH   = '0_userdata.0.Einspeisung.jahr_kWh';
      const DP_JAHR_EURO  = '0_userdata.0.Einspeisung.jahr_euro';
      
      // ── Jahres-Datenpunkte anlegen (falls nicht vorhanden) ─────────
      createState(DP_JAHR_KWH, {
          name: 'Einspeisung Jahr gesamt',
          type: 'number',
          role: 'value.energy',
          unit: 'kWh',
          read: true,
          write: true,
          def: 0
      });
      
      createState(DP_JAHR_EURO, {
          name: 'Einspeisung Jahr gesamt (€)',
          type: 'number',
          role: 'value.money',
          unit: '€',
          read: true,
          write: true,
          def: 0
      });
      
      // ═══════════════════════════════════════════════════════════════
      // Datum erzeugen → 2026-04-09
      // ═══════════════════════════════════════════════════════════════
      function getDatum() {
          const d = new Date();
          return d.getFullYear() + '-' +
              String(d.getMonth() + 1).padStart(2, '0') + '-' +
              String(d.getDate()).padStart(2, '0');
      }
      
      // ═══════════════════════════════════════════════════════════════
      // Tageswerte speichern
      // ═══════════════════════════════════════════════════════════════
      function speichereTag() {
      
          const datum = getDatum();
      
          const kwh  = parseFloat(getState(DP_HEUTE_KWH).val)  || 0;
          const euro = parseFloat(getState(DP_HEUTE_EURO).val) || 0;
      
          const dpKwh  = DP_PREFIX + datum + '_kWh';
          const dpEuro = DP_PREFIX + datum + '_euro';
      
          createState(dpKwh, {
              name: 'Einspeisung ' + datum,
              type: 'number',
              role: 'value.energy',
              unit: 'kWh',
              read: true,
              write: false
          }, () => setState(dpKwh, kwh, true));
      
          createState(dpEuro, {
              name: 'Vergütung ' + datum,
              type: 'number',
              role: 'value.money',
              unit: '€',
              read: true,
              write: false
          }, () => setState(dpEuro, euro, true));
      
          log(`📅 ${datum}: ${kwh} kWh | ${euro} € gespeichert`, 'info');
      
          jahressummeNeuBerechnen();
      }
      
      // ═══════════════════════════════════════════════════════════════
      // ROBUSTE Jahressumme (aus allen Tagen neu berechnet)
      // ═══════════════════════════════════════════════════════════════
      function jahressummeNeuBerechnen() {
      
          const jahr = new Date().getFullYear();
          const states = $('state[id=' + DP_PREFIX + '*]');
      
          let sumKwh = 0;
          let sumEuro = 0;
      
          states.each(function (id) {
      
              if (!id.includes(jahr)) return;
      
              const val = parseFloat(getState(id).val) || 0;
      
              if (id.endsWith('_kWh')) {
                  sumKwh += val;
              } else if (id.endsWith('_euro')) {
                  sumEuro += val;
              }
          });
      
          sumKwh  = Math.round(sumKwh * 100) / 100;
          sumEuro = Math.round(sumEuro * 100) / 100;
      
          setState(DP_JAHR_KWH, sumKwh, true);
          setState(DP_JAHR_EURO, sumEuro, true);
      
          log(`📊 Jahr ${jahr}: ${sumKwh} kWh | ${sumEuro} €`, 'info');
      }
      
      // ═══════════════════════════════════════════════════════════════
      // Täglich ausführen (23:55 Uhr)
      // ═══════════════════════════════════════════════════════════════
      schedule('55 23 * * *', speichereTag);
      
      // Beim Start einmal berechnen (wichtig!)
      jahressummeNeuBerechnen();
      
      log('✅ Einspeisungs-Script aktiv', 'info');
      
      C Offline
      C Offline
      Chrunchy
      schrieb am zuletzt editiert von
      #2

      @Kusselin ist nicht ganz deine Frage, aber wenn du etwas grafisches möchtest (grafana und influxdb) kann ich dir folgendes von @haus-automatisierung empfehlen:
      https://haus-automatisierung.com/software/influxdb/2023/05/11/influxdb2-pv-dashboard.html

      Zu deiner Frage...
      In ioBroker wird die Funktion createState in der JavaScript-Script-Engine (ab js-controller 6/7) als veraltet (deprecated) betrachtet und durch setObjectNotExists oder extendObject ersetzt.

      Beispiel:

      // Beispiel für 0_userdata.0
      setObjectNotExists('0_userdata.0.Test.Variable', {
          common: { name: 'Test Variable', type: 'boolean', role: 'switch' },
          type: 'state'
      });
      
      

      Bei deinen Datenpunkten sollte role:'value' die richtige Option sein.

      Gruß Chrunchy

      paul53P 1 Antwort Letzte Antwort
      0
      • C Chrunchy

        @Kusselin ist nicht ganz deine Frage, aber wenn du etwas grafisches möchtest (grafana und influxdb) kann ich dir folgendes von @haus-automatisierung empfehlen:
        https://haus-automatisierung.com/software/influxdb/2023/05/11/influxdb2-pv-dashboard.html

        Zu deiner Frage...
        In ioBroker wird die Funktion createState in der JavaScript-Script-Engine (ab js-controller 6/7) als veraltet (deprecated) betrachtet und durch setObjectNotExists oder extendObject ersetzt.

        Beispiel:

        // Beispiel für 0_userdata.0
        setObjectNotExists('0_userdata.0.Test.Variable', {
            common: { name: 'Test Variable', type: 'boolean', role: 'switch' },
            type: 'state'
        });
        
        

        Bei deinen Datenpunkten sollte role:'value' die richtige Option sein.

        paul53P Offline
        paul53P Offline
        paul53
        schrieb am zuletzt editiert von paul53
        #3

        @Chrunchy [sagte]: Funktion createState in der JavaScript-Script-Engine (ab js-controller 6/7) als veraltet (deprecated) betrachtet und durch setObjectNotExists oder extendObject ersetzt.

        Wie kommst du darauf?

        @Kusselin [sagte]: Datenpunkt "'Einspeisung Jahr gesamt'" und "'Einspeisung Jahr gesamt (€)'" anlegen muss

        Ändere common.write in false.

        Für die Ermittlung von Periodenwerten inkl. Kosten gibt es den Adapter Sourceanalytix.

        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
        Produktiv: Asus PN 42 / N100 / 8 GB / 500 GB; Proxmox mit 2 VM (iob / openCCU)

        C 1 Antwort Letzte Antwort
        1
        • KusselinK Offline
          KusselinK Offline
          Kusselin
          schrieb am zuletzt editiert von Kusselin
          #4

          Ja aber muss ich die datenpunkte neu anlegen erst also diese hier?
          Einspeisung Jahr gesamt
          Einspeisung Jahr gesamt (€)

          das raff ich nicht weil das Script mir ja sagt hier ->

          // ── Jahres-Datenpunkte anlegen (falls nicht vorhanden) ─────────
          

          Das verstehe ich nicht....

          paul53P 1 Antwort Letzte Antwort
          0
          • KusselinK Kusselin

            Ja aber muss ich die datenpunkte neu anlegen erst also diese hier?
            Einspeisung Jahr gesamt
            Einspeisung Jahr gesamt (€)

            das raff ich nicht weil das Script mir ja sagt hier ->

            // ── Jahres-Datenpunkte anlegen (falls nicht vorhanden) ─────────
            

            Das verstehe ich nicht....

            paul53P Offline
            paul53P Offline
            paul53
            schrieb am zuletzt editiert von paul53
            #5

            @Kusselin [sagte]: Script mir ja sagt hier

            createState(id, common) erstellt von sich aus nur nicht vorhandene Datenpunkte.

            Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
            Produktiv: Asus PN 42 / N100 / 8 GB / 500 GB; Proxmox mit 2 VM (iob / openCCU)

            1 Antwort Letzte Antwort
            0
            • KusselinK Offline
              KusselinK Offline
              Kusselin
              schrieb am zuletzt editiert von Kusselin
              #6

              sorry paul aber das raff ich nicht..tue mir immer schwer und muss immer noch nach all den Jahren schwierig nachfragen hier...

              paul53P da_WoodyD 2 Antworten Letzte Antwort
              0
              • KusselinK Kusselin

                sorry paul aber das raff ich nicht..tue mir immer schwer und muss immer noch nach all den Jahren schwierig nachfragen hier...

                paul53P Offline
                paul53P Offline
                paul53
                schrieb am zuletzt editiert von paul53
                #7

                @Kusselin [sagte]: aber das raff ich

                Was raffst du nicht?
                Der Kommentar in Zeile 14 beschreibt lediglich die Wirkung der nachfolgenden zwei createState().

                Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                Produktiv: Asus PN 42 / N100 / 8 GB / 500 GB; Proxmox mit 2 VM (iob / openCCU)

                KusselinK 1 Antwort Letzte Antwort
                1
                • KusselinK Kusselin

                  sorry paul aber das raff ich nicht..tue mir immer schwer und muss immer noch nach all den Jahren schwierig nachfragen hier...

                  da_WoodyD Online
                  da_WoodyD Online
                  da_Woody
                  Most Active
                  schrieb am zuletzt editiert von
                  #8

                  @Kusselin erstell dir in 0_userdata einen DP, den kannste dann verwenden...
                  b3f5142c-f178-461d-8080-4a65a25852cd-image.jpeg

                  gruß vom Woody
                  HAPPINESS is not a DESTINATION, it's a WAY of LIFE!

                  1 Antwort Letzte Antwort
                  0
                  • paul53P paul53

                    @Kusselin [sagte]: aber das raff ich

                    Was raffst du nicht?
                    Der Kommentar in Zeile 14 beschreibt lediglich die Wirkung der nachfolgenden zwei createState().

                    KusselinK Offline
                    KusselinK Offline
                    Kusselin
                    schrieb am zuletzt editiert von
                    #9

                    @paul53 sagte:

                    @Kusselin [sagte]: aber das raff ich

                    Was raffst du nicht?
                    Der Kommentar in Zeile 14 beschreibt lediglich die Wirkung der nachfolgenden zwei createState().

                    O.K. ich dachte immer wenn das da steht muss ich es auch anlegen....

                    @da_Woody sagte:

                    @Kusselin erstell dir in 0_userdata einen DP, den kannste dann verwenden...
                    b3f5142c-f178-461d-8080-4a65a25852cd-image.jpeg

                    Wenn ich mir einen datenpunkt da anlege...wie soll der heissen???? udn wie verwende ich den dann?

                    1 Antwort Letzte Antwort
                    0
                    • W Offline
                      W Offline
                      warp735
                      schrieb am zuletzt editiert von
                      #10

                      Na GANZ genau so wie in deinem Script. Das sollte doch aber klar sein.

                      1 Antwort Letzte Antwort
                      0
                      • KusselinK Offline
                        KusselinK Offline
                        Kusselin
                        schrieb am zuletzt editiert von Kusselin
                        #11

                        Nee isses nicht..sonst würd ich doch nicht fragen....
                        O.K. nochmal für mich...im Script ist das hier hinterlegt:

                        // ── Jahres-Datenpunkte anlegen (falls nicht vorhanden) ─────────
                        createState(DP_JAHR_KWH, {
                            name: 'Einspeisung Jahr gesamt',
                            type: 'number',
                            role: 'value.energy',
                            unit: 'kWh',
                            read: true,
                            write: true,
                            def: 0
                        });
                        
                        createState(DP_JAHR_EURO, {
                            name: 'Einspeisung Jahr gesamt (€)',
                            type: 'number',
                            role: 'value.money',
                            unit: '€',
                            read: true,
                            write: true,
                            def: 0
                        });
                        

                        das heisst doch aber das das Script den Datenpunkt schon automatisch anlegt...da muss ich doch nichts mehr in 0_userdata anlegen...oder?

                        1 Antwort Letzte Antwort
                        0
                        • Ro75R Online
                          Ro75R Online
                          Ro75
                          schrieb am zuletzt editiert von
                          #12

                          ja. Allerdings wirst du auf Dauer keinen Spaß haben, denn da wird ja jeden Tag mindestens ein weiterer Datenpunkt angelegt. Wenn du daraus eine Historie ableiten willst, völlig ungeeignet - wurde aber schon weiter oben angesprochen.

                          Ro75.

                          SERVER = Beelink U59 16GB DDR4 RAM 512GB SSD, FB 7490, FritzDect 200+301+440, ConBee II, Zigbee Aqara Sensoren + NOUS A1Z, NOUS A1T, Philips Hue ** ioBroker, REDIS, influxdb2, Grafana, PiHole, Plex-Mediaserver, paperless-ngx (Docker), MariaDB + phpmyadmin *** VIS-Runtime = Intel NUC 8GB RAM 128GB SSD + 24" Touchscreen

                          1 Antwort Letzte Antwort
                          0
                          • KusselinK Offline
                            KusselinK Offline
                            Kusselin
                            schrieb am zuletzt editiert von
                            #13

                            o.k. danke für die Info

                            1 Antwort Letzte Antwort
                            0
                            • paul53P paul53

                              @Chrunchy [sagte]: Funktion createState in der JavaScript-Script-Engine (ab js-controller 6/7) als veraltet (deprecated) betrachtet und durch setObjectNotExists oder extendObject ersetzt.

                              Wie kommst du darauf?

                              @Kusselin [sagte]: Datenpunkt "'Einspeisung Jahr gesamt'" und "'Einspeisung Jahr gesamt (€)'" anlegen muss

                              Ändere common.write in false.

                              Für die Ermittlung von Periodenwerten inkl. Kosten gibt es den Adapter Sourceanalytix.

                              C Offline
                              C Offline
                              Chrunchy
                              schrieb am zuletzt editiert von
                              #14

                              @paul53 sagte:

                              @Chrunchy [sagte]: Funktion createState in der JavaScript-Script-Engine (ab js-controller 6/7) als veraltet (deprecated) betrachtet und durch setObjectNotExists oder extendObject ersetzt.
                              

                              Wie kommst du darauf?

                              Hatt das hier (https://forum.iobroker.net/topic/75919/createstate-deprecated) so verstanden.

                              Gruß Chrunchy

                              T 1 Antwort Letzte Antwort
                              0
                              • C Chrunchy

                                @paul53 sagte:

                                @Chrunchy [sagte]: Funktion createState in der JavaScript-Script-Engine (ab js-controller 6/7) als veraltet (deprecated) betrachtet und durch setObjectNotExists oder extendObject ersetzt.
                                

                                Wie kommst du darauf?

                                Hatt das hier (https://forum.iobroker.net/topic/75919/createstate-deprecated) so verstanden.

                                T Offline
                                T Offline
                                ticaki
                                schrieb am zuletzt editiert von
                                #15

                                @Chrunchy sagte:

                                @paul53 sagte:

                                @Chrunchy [sagte]: Funktion createState in der JavaScript-Script-Engine (ab js-controller 6/7) als veraltet (deprecated) betrachtet und durch setObjectNotExists oder extendObject ersetzt.
                                

                                Wie kommst du darauf?

                                Hatt das hier (https://forum.iobroker.net/topic/75919/createstate-deprecated) so verstanden.

                                Das eine ist Adapterentwicklung das andere Javascript-Adapter - ich benutze in beiden "extendObject" - für nicht Adapterentwickler ist createStates() aber besser.

                                Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                                Spenden

                                1 Antwort Letzte Antwort
                                0
                                • Rene55R Online
                                  Rene55R Online
                                  Rene55
                                  schrieb zuletzt editiert von
                                  #16

                                  Ich hoffe hier liest noch jemand mit. Ich versuche mit dem Javascript-Adapter (9.0.18) einen Datenpunkt für ein Objekt anzulegen. Dazu nutze ich 'await createStateAsync(name, initialValue, forceCreation, common, native);'. Das funktioniert auch soweit, dass der DP angelegt wird, aber der Wert mit '(null)' in rot dargestellt wird. Von dem übergebenen initialValue {} keine Spur. Bei allen anderen Datenpunkten funktioniert das so wie erwartet. Kennt das auch jemand und hat dazu eine Lösung?

                                  Host: Fujitsu Intel(R) Pentium(R) CPU G4560T, 32 GB RAM, Proxmox 8.x + lxc Ubuntu 22.04
                                  ioBroker (8 GB RAM) Node.js: 20.19.1, NPM: 10.8.2, js-Controller: 7.0.6, Admin: 7.6.3
                                  Wetterstation: Froggit WH3000SE V1.6.6

                                  paul53P 1 Antwort Letzte Antwort
                                  0
                                  • Rene55R Rene55

                                    Ich hoffe hier liest noch jemand mit. Ich versuche mit dem Javascript-Adapter (9.0.18) einen Datenpunkt für ein Objekt anzulegen. Dazu nutze ich 'await createStateAsync(name, initialValue, forceCreation, common, native);'. Das funktioniert auch soweit, dass der DP angelegt wird, aber der Wert mit '(null)' in rot dargestellt wird. Von dem übergebenen initialValue {} keine Spur. Bei allen anderen Datenpunkten funktioniert das so wie erwartet. Kennt das auch jemand und hat dazu eine Lösung?

                                    paul53P Offline
                                    paul53P Offline
                                    paul53
                                    schrieb zuletzt editiert von paul53
                                    #17

                                    @Rene55 [sagte]: Von dem übergebenen initialValue {} keine Spur

                                    Initialvalue {} wird als leeres Common-Objekt interpretiert. Verwende def zu Initialisierung:

                                    createState(id, {name: 'neues Objekt', type: 'object', def: {}});
                                    

                                    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                    Produktiv: Asus PN 42 / N100 / 8 GB / 500 GB; Proxmox mit 2 VM (iob / openCCU)

                                    1 Antwort Letzte Antwort
                                    0
                                    • Rene55R Online
                                      Rene55R Online
                                      Rene55
                                      schrieb zuletzt editiert von
                                      #18

                                      Danke @paul53 für den Versuch. Leider bekomme ich weiterhin ein " (null) " in rot. Darüber hinaus sehe ich im Objekt { "_id": "0_userdata.0.Test2.OBJ_3", "common": { "name": "0_userdata.0.Test2.OBJ_3", "role": "state", "type": "mixed" }, "native": {}, "type": "state", "from": "system.adapter.javascript.0", "user": "system.user.admin", "ts": 1784048742911, "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }. Auffällig hier der Type 'mixed' obwohl ich 'object' vorgegeben habe.

                                      Host: Fujitsu Intel(R) Pentium(R) CPU G4560T, 32 GB RAM, Proxmox 8.x + lxc Ubuntu 22.04
                                      ioBroker (8 GB RAM) Node.js: 20.19.1, NPM: 10.8.2, js-Controller: 7.0.6, Admin: 7.6.3
                                      Wetterstation: Froggit WH3000SE V1.6.6

                                      OliverIOO paul53P 2 Antworten Letzte Antwort
                                      0
                                      • Rene55R Rene55

                                        Danke @paul53 für den Versuch. Leider bekomme ich weiterhin ein " (null) " in rot. Darüber hinaus sehe ich im Objekt { "_id": "0_userdata.0.Test2.OBJ_3", "common": { "name": "0_userdata.0.Test2.OBJ_3", "role": "state", "type": "mixed" }, "native": {}, "type": "state", "from": "system.adapter.javascript.0", "user": "system.user.admin", "ts": 1784048742911, "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }. Auffällig hier der Type 'mixed' obwohl ich 'object' vorgegeben habe.

                                        OliverIOO Offline
                                        OliverIOO Offline
                                        OliverIO
                                        schrieb zuletzt editiert von OliverIO
                                        #19

                                        @Rene55

                                        hat perfekt funktioniert.
                                        einmal mit 0 und einmal mit def 1 probiert

                                        createState("0_userdata.0.forum", {
                                            name: 'Einspeisung Jahr gesamt',
                                            type: 'number',
                                            role: 'value.energy',
                                            unit: 'kWh',
                                            read: true,
                                            write: true,
                                            def: 1
                                        });
                                        

                                        das funktioniert aber nur beim ersten mal falls der datenpunkt noch nicht existiert.
                                        für das kontinuierliche schreiben von datenpunkte musst du setState verwenden
                                        also

                                        setState("0_userdata.0.forum",3);
                                        

                                        oder wenn du mit ack=true schreiben wills

                                        setState("0_userdata.0.forum",3,true);
                                        

                                        ein datenpunkt besteht aus einem object und ein oder mehrere states, die beiden werden von iobroker separat verwaltet.

                                        das siehst du auch in den datenpunkt einstellungen
                                        b4346e84-a73b-4a25-82c5-612a71880ae0-image.jpeg
                                        24a04663-ab37-4926-a996-07e4013138e1-image.jpeg

                                        Meine Adapter und Widgets
                                        TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                                        Links im Profil

                                        1 Antwort Letzte Antwort
                                        0
                                        • Rene55R Rene55

                                          Danke @paul53 für den Versuch. Leider bekomme ich weiterhin ein " (null) " in rot. Darüber hinaus sehe ich im Objekt { "_id": "0_userdata.0.Test2.OBJ_3", "common": { "name": "0_userdata.0.Test2.OBJ_3", "role": "state", "type": "mixed" }, "native": {}, "type": "state", "from": "system.adapter.javascript.0", "user": "system.user.admin", "ts": 1784048742911, "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }. Auffällig hier der Type 'mixed' obwohl ich 'object' vorgegeben habe.

                                          paul53P Offline
                                          paul53P Offline
                                          paul53
                                          schrieb zuletzt editiert von paul53
                                          #20

                                          @Rene55 [sagte]: Type 'mixed' obwohl ich 'object' vorgegeben habe.

                                          Hat du den Initialvalue weggelassen? Falls nicht, wird dieser als common interpretiert und erzeugt einen Standard-DP mit dem Typ "mixed".

                                          EDIT: Ohne Initialvalue erzeugter Datenpunkt:

                                          {
                                            "_id": "0_userdata.0.Test.neues_Objekt",
                                            "common": {
                                              "name": "neues Objekt",
                                              "type": "object",
                                              "def": {},
                                              "role": "state"
                                            },
                                            "native": {},
                                            "type": "state",
                                            "from": "system.adapter.javascript.0",
                                            "user": "system.user.admin",
                                            "ts": 1784037212795,
                                            "acl": {
                                              "object": 1636,
                                              "state": 1636,
                                              "owner": "system.user.admin",
                                              "ownerGroup": "system.group.administrator"
                                            }
                                          }
                                          

                                          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                          Produktiv: Asus PN 42 / N100 / 8 GB / 500 GB; Proxmox mit 2 VM (iob / openCCU)

                                          1 Antwort Letzte Antwort
                                          0

                                          Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                                          Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

                                          Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                                          Registrieren Anmelden
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          240

                                          Online

                                          33.0k

                                          Benutzer

                                          83.4k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2026
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe