Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Datenpunkte sollen bei Ereignis geändert werden

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Datenpunkte sollen bei Ereignis geändert werden

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

      Hallo Zusammen,

      ich habe einen Solaredge Wechselrichter. Ich habe für meine VIS diesbezüglich 3 Datenpunkte angelegt. Diese sollen bei Änderung der Werte im Solardedge Verzeichnis aktualisiert werden. Leider ändern sich zwar die Solaredge Werte, aber meine Datenpunkte werden nicht geschrieben.
      Ich finde den Fehler nicht.

      solaredge2.jpg solaredge1.jpg
      solaredge3.jpg

      on({ id: [].concat(['solaredge.1.2881352.currentPower']), change: 'ne' }, async (obj) => {
        let value = obj.state.val;
        let oldValue = obj.oldState.val;
        setState('0_userdata.0.Solaredge.Aktuelle_Produktion' /* Aktuelle Produktion */, (getObject('solaredge.0.2881352.currentPower') / 1000), true);
      });
      on({ id: [].concat(['solaredge.1.2881352.lastDayData']), change: 'ne' }, async (obj) => {
        let value = obj.state.val;
        let oldValue = obj.oldState.val;
        setState('0_userdata.0.Solaredge.Tagesproduktion' /* Tagesproduktion */, (getObject('solaredge.0.2881352.lastDayData') / 1000), true);
      });
      on({ id: [].concat(['solaredge.1.2881352.lastMonthData']), change: 'ne' }, async (obj) => {
        let value = obj.state.val;
        let oldValue = obj.oldState.val;
        setState('0_userdata.0.Solaredge.Produktion_Monat' /* Produktion Monat */, (getObject('solaredge.0.2881352.lastMonthData') / 1000), true);
      });
      
      Codierknecht 1 Reply Last reply Reply Quote 0
      • Codierknecht
        Codierknecht Developer Most Active @jones88 last edited by Codierknecht

        @jones88
        Sowas geht viel einfacher mit einem Alias.
        Du legst Dir im Baum 3 Aliase an, lässt die auf die entsprechenden DP gucken und trägst als Konvertierungsfunktion (lesend) ein:

        val / 1000
        

        Nur der Vollständigkeit halber: Du musst den Wert lesen -- nicht das Objekt!

        on({ id: 'solaredge.1.2881352.lastMonthData', change: 'ne' }, async (obj) => {
          setState('0_userdata.0.Solaredge.Produktion_Monat', getState('solaredge.0.2881352.lastMonthData').val / 1000), true);
        });
        
        J 1 Reply Last reply Reply Quote 0
        • J
          jones88 @Codierknecht last edited by jones88

          @codierknecht

          Okay das mit dem Alias Manager muss ich mir anschauen. Habe ich bislang nicht gemacht.

          Aber nochmal zu meinem Beispiel, wie müsste ich denn meine Zeile ändern um den Wert zu lesen und nicht das Objekt? Könntest du mir das kurz erklären oder meinen Code beispielhaft editieren?

          Codierknecht 1 Reply Last reply Reply Quote 0
          • Codierknecht
            Codierknecht Developer Most Active @jones88 last edited by

            @jones88 sagte in Datenpunkte sollen bei Ereignis geändert werden:

            das mit dem Alias Manager

            Nix "Alias Manager". Direkt im Baum
            30eb4aeb-5c01-4d7d-a84e-40cb5b136c79-image.png

            @jones88 sagte in Datenpunkte sollen bei Ereignis geändert werden:

            Aber nochmal zu meinem Beispiel, wie müsste ich denn meine Zeile ändern um den Wert zu lesen und nicht das Objekt? Könntest du mir das kurz erklären oder meinen Code beispielhaft editieren?

            Habe ich doch bereits - siehe mein Beispiel.

            J 1 Reply Last reply Reply Quote 0
            • J
              jones88 @Codierknecht last edited by

              @codierknecht

              Sorry, bin unterwegs. Jetzt habe ich deine Änderung gesehen. Alles klar, vielen Dank.
              Werde das heute Abend umsetzen.

              Das Thema mit den Alias muss ich mir ebenso heute Abend anschauen. Verstehe aktuell nicht wie ich einen Datenpunkt auf einen anderen schauen lassen kann. Du meinst per Java-Script oder wie?

              Codierknecht 1 Reply Last reply Reply Quote 0
              • Codierknecht
                Codierknecht Developer Most Active @jones88 last edited by

                @jones88 sagte in Datenpunkte sollen bei Ereignis geändert werden:

                Verstehe aktuell nicht wie ich einen Datenpunkt auf einen anderen schauen lassen kann. Du meinst per Java-Script oder wie?

                Nein. Kein Script.
                Du hast ja benutzerdefinierte DP in 0_userdata.0 angelegt, in die Du per Script Werte aus anderen DP schreiben willst.
                Das brauchst Du nicht.
                Statt der eigenen DP in 0_userdata.0 legst Du welche in alias.0 an und trägst bei denen die Konvertierungsfunktion ein. Die sind also quasi der Ersatz für Deine per Script aktualisierten DP. In der Vis nimmst Du dann die Alias-DP.

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

                Support us

                ioBroker
                Community Adapters
                Donate

                951
                Online

                31.7k
                Users

                79.8k
                Topics

                1.3m
                Posts

                2
                6
                279
                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