Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Bezug/Einspeisung Vorzeichenwechsel

    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

    Bezug/Einspeisung Vorzeichenwechsel

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

      Hallo zusammen,

      kann mir bitte jemand helfen.
      Ich greife am Smartmeter per Modbus Bezug/Einspeisung in Watt ab. Bei minus Vorzeichen wird eingespeist, bei plus Vorzeichen bezogen.

      Jetzt würde ich gerne nur die negativen Werte erfassen, sprich wenn der Datenpunkt einen negativen Wert liefert, dass Vorzeichen auf + zu wechseln und wenn positiver Wert > 0 soll einfach 0 Watt angezeigt werden.

      Es handelt sich um diesen Wert:

      const inputRegisters = {
          powerOut: 'modbus.0.holdingRegisters.200.40087_W'/*Total Real Power*/, 
      }
      

      Wie mache ich das am geschicktesten?

      Danke!

      VG

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

        @diamand2k22 sagte: Wie mache ich das am geschicktesten?

        Mit einem Alias-Datenpunkt mit Lesekonvertierung:

        val < 0 ? -val : 0
        
        D 1 Reply Last reply Reply Quote 0
        • D
          Diamand2k22 @paul53 last edited by

          @paul53

          danke Paul, geht das auch ohne Alias direkt im Skript in der Zeile?

          powerOut: 'modbus.0.holdingRegisters.200.40087_W'/*Total Real Power*/,
          

          Gruß

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

            @diamand2k22 sagte: geht das auch ohne Alias direkt im Skript

            on('modbus.0.holdingRegisters.200.40087_W', function(dp) {
                setState('0_userdata.0.zaehler.einspeisung', dp.state.val < 0 ? -dp.state.val : 0, true);
            });
            

            Mit Alias spart man sich die Umsetzung per Skript.

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

              @paul53

              Hallo Paul,
              hab das mal so eingebaut, jetzt bekomme ich bei jedem Wert Wechsel eine Warnung.

              var powerOut;
              powerOut = 0;
              on('modbus.0.holdingRegisters.200.40087_W', function(dp) {
                  setState(powerOut, dp.state.val < 0 ? -dp.state.val : 0);
              
              javascript.0
              2024-02-04 19:27:13.269	warn	State "0" not found
              
              javascript.0
              2024-02-04 19:27:13.271	warn	at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1819:20)
              
              javascript.0
              2024-02-04 19:27:13.271	warn	at Object.<anonymous> (script.js.common.Tibber_Test_2.Batterie_Regelung_0_1:35:5)
              
              javascript.0
              2024-02-04 19:27:13.272	warn	at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1269:38)
              
              javascript.0
              2024-02-04 19:27:13.272	warn	at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:641:29)
              
              javascript.0
              2024-02-04 19:27:13.272	warn	at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.ts:11200:62)
              
              javascript.0
              2024-02-04 19:27:13.272	warn	at processImmediate (node:internal/timers:476:21)
              
              Homoran paul53 2 Replies Last reply Reply Quote 0
              • Homoran
                Homoran Global Moderator Administrators @Diamand2k22 last edited by Homoran

                @diamand2k22 sagte in Bezug/Einspeisung Vorzeichenwechsel:

                setState(powerOut, dp.state.val < 0 ? -dp.state.val : 0);

                und powerOut ist bei dir 0

                @paul53 sagte in Bezug/Einspeisung Vorzeichenwechsel:

                setState('0_userdata.0.zaehler.einspeisung',

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

                  @diamand2k22
                  powerOut muss die ID eines existierenden Ziel-Datenpunktes enthalten. Beispiel:

                  const powerOut = '0_userdata.0.zaehler.einspeisung'; // Typ: Zahl, Einheit: W
                  
                  on('modbus.0.holdingRegisters.200.40087_W', function(dp) {
                      setState(powerOut, dp.state.val < 0 ? -dp.state.val : 0, true);
                  });
                  
                  D 1 Reply Last reply Reply Quote 0
                  • D
                    Diamand2k22 @paul53 last edited by

                    @paul53

                    Es hat jetzt funktioniert mit dem Datenpunkt!
                    Danke dir!

                    VG

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

                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    944
                    Online

                    31.9k
                    Users

                    80.2k
                    Topics

                    1.3m
                    Posts

                    3
                    8
                    390
                    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