Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. Adapterwerte und Script synchronisieren

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.5k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.1k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    2.7k

Adapterwerte und Script synchronisieren

Scheduled Pinned Locked Moved Blockly
javascriptblockly
6 Posts 3 Posters 670 Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • HomoranH Offline
    HomoranH Offline
    Homoran
    Global Moderator Administrators
    wrote on last edited by
    #1

    Ich will mich mal wieder einen Schritt weiter in JS einarbeiten.
    Vieles weiß ich schon, traue mich aber noch nicht so richtig, zumal Blockly (erst recht mit den zukünftigen neuen Bausteinen) eine fast vollwertige und einfachere Alternative ist.

    Mein jetziges Problem ist, dass ich zwei "geklaute" Skripte/Adapter miteinander kombinieren muss, was mir bisher nicht wirklich geggückt ist. Es ist zwar mit viel try and error immer besser geworden, daber nicht korrekt.

    Es geht um die Berechnung des effektiven Stromverbrauchs aus Daten vom Smartmeter-Adapters (Momentanwert Gesamtwirkleistung (Total) ist +/- je nach Leistung der Solaranlage) und dem Wert der AC-Leistung des Wechselrichters nach Auslesen desselben über ein Skript.

    Diese Werte kommen nicht synchron. Insbesondere bei stark wolkigem Wetter und schnell wechselndem Solarertrag ist eine Berechnung alle 10 Sekunden oft nicht korrekt, da die Werte so nicht synchronisiert sind.
    Solarwerte.png

    Ich denke, dass es funktionieren würde, wenn ich das Auslese skript nicht per schedule

    schedule("*/11 * 5-23 * * *", Piko);
    

    sondern irgendwo zu Beginn auf die Änderung des Wertes des smartmeteradapters synchronisieren würde.

    Wenn ich inzwischen richtig aufgepasst habe muss da irgendetwas mit

    ON...smartmeter.0.1-0:16_7_0_255.value.. not equal
    

    rein.

    Aber wo und wie genau?

    // Ausleseskript Wechselrichter Kostal Piko ab Firmware v05.31 (12.10.2015)
    
    //Variable
    
     //Leistungswerte
        ID_DCEingangGesamt = 33556736;         // in W
        ID_Ausgangsleistung = 67109120;        // in W
        ID_Eigenverbrauch = 83888128;          // in W
        //Status
        ID_Status = 16780032;                  // 0:Off
        //Statistik - Tag
        ID_Ertrag_d = 251658754;               // in Wh
        ID_Hausverbrauch_d = 251659010;        // in Wh
        ID_Eigenverbrauch_d = 251659266;       // in Wh
        ID_Eigenverbrauchsquote_d = 251659278; // in %
        ID_Autarkiegrad_d = 251659279;         // in %
        //Statistik - Gesamt
        ID_Ertrag_G = 251658753;               // in kWh
        ID_Hausverbrauch_G = 251659009;        // in kWh
        ID_Eigenverbrauch_G = 251659265;       // in kWh
        ID_Eigenverbrauchsquote_G = 251659280; // in %
        ID_Autarkiegrad_G = 251659281;         // in %
        ID_Betriebszeit = 251658496;           // in h
        //Momentanwerte - PV Genertor
        ID_DC1Spannung = 33555202;             // in V
        ID_DC1Strom = 33555201;                // in A
        ID_DC1Leistung = 33555203;             // in W
        ID_DC2Spannung = 33555458;             // in V
        ID_DC2Strom = 33555457;                // in A
        ID_DC2Leistung = 33555459;             // in W
        //Momentanwerte Haus
        ID_HausverbrauchSolar = 83886336;      // in W
        ID_HausverbrauchBatterie = 83886592;   // in W
        ID_HausverbrauchNetz = 83886848;       // in W
        ID_HausverbrauchPhase1 = 83887106;     // in W
        ID_HausverbrauchPhase2 = 83887362;     // in W
        ID_HausverbrauchPhase3 = 83887618;     // in W
        //Netz Netzparameter
        ID_NetzAusgangLeistung = 67109120;     // in W
        ID_NetzFrequenz = 67110400;            // in Hz
        ID_NetzCosPhi = 67110656;
        //Netz Phase 1
        ID_P1Spannung = 67109378;              // in V
        ID_P1Strom = 67109377;                 // in A
        ID_P1Leistung = 67109379;              // in W
        //Netz Phase 2
        ID_P2Spannung = 67109634;              // in V
        ID_P2Strom = 67109633;                 // in A
        ID_P2Leistung = 67109635;              // in W
        //Netz Phase 3
        ID_P3Spannung = 67109890;              // in V
        ID_P3Strom = 67109889;                 // in A
        ID_P3Leistung = 67109891;              // in W
    
    
     
    var IPAnlage = '192.168.138.103/api/dxs.json';   // IP der Photovoltaik-Anlage
    
    
    
    createState('Messwerte.0.Solaranlage.Momentanwerte.Leistung_AC_aktuell', 0);
    createState('Messwerte.0.Solaranlage.Summenwerte.Autarkiegrad_d',0);
    createState('Messwerte.0.Solaranlage.Summenwerte.Autarkiegrad_G',0);
    createState('Messwerte.0.Solaranlage.Summenwerte.Betriebszeit',0);
    createState('Messwerte.0.Solaranlage.Momentanwerte.Leistung_DC_aktuell',0);
    createState('Messwerte.0.Solaranlage.Momentanwerte.Eigenverbrauch',0);
    createState('Messwerte.0.Solaranlage.Summenwerte.Eigenverbrauch_d');
    createState('Messwerte.0.Solaranlage.Summenwerte.Eigenverbrauch_G', 0);
    createState('Messwerte.0.Solaranlage.Summenwerte.Eigenverbrauchsquote_d', 0);
    createState('Messwerte.0.Solaranlage.Summenwerte.Eigenverbrauchsquote_G', 0);
    createState('Messwerte.0.Solaranlage.Summenwerte.Tagesertrag', 0);
    createState('Messwerte.0.Solaranlage.Summenwerte.Gesamtertrag', 0);
    createState('Messwerte.0.Solaranlage.Summenwerte.Hausverbrauch_d', 0);
    createState('Messwerte.0.Solaranlage.Summenwerte.Hausverbrauch_G', 0);
    createState('Messwerte.0.Solaranlage.Momentanwerte.P1Spannung');
    createState('Messwerte.0.Solaranlage.Momentanwerte.P2Spannung');
    createState('Messwerte.0.Solaranlage.Momentanwerte.P1Strom');
    createState('Messwerte.0.Solaranlage.Momentanwerte.P2Strom');
    createState('Messwerte.0.Solaranlage.Momentanwerte.P1Leistung');
    createState('Messwerte.0.Solaranlage.Momentanwerte.P2Leistung');
    
    
    var logging = false;
    var request = require('request');
    
    function Piko() {
        if (logging) log("Piko 5.5 auslesen");
        request('http://' + IPAnlage + 
        '?dxsEntries=' + ID_DCEingangGesamt +
        '&dxsEntries=' + ID_Ausgangsleistung +
        '&dxsEntries=' + ID_Eigenverbrauch +
        '&dxsEntries=' + ID_Eigenverbrauch_d +
        '&dxsEntries=' + ID_Eigenverbrauch_G +
        '&dxsEntries=' + ID_Eigenverbrauchsquote_d +
        '&dxsEntries=' + ID_Eigenverbrauchsquote_G +
        '&dxsEntries=' + ID_Ertrag_d +
        '&dxsEntries=' + ID_Ertrag_G +
        '&dxsEntries=' + ID_Hausverbrauch_d +
        '&dxsEntries=' + ID_Hausverbrauch_G +
        '&dxsEntries=' + ID_Autarkiegrad_G +
        '&dxsEntries=' + ID_Autarkiegrad_d +
        '&dxsEntries=' + ID_Betriebszeit +
        '&dxsEntries=' + ID_P1Spannung +
        '&dxsEntries=' + ID_P2Spannung +
        '&dxsEntries=' + ID_P1Strom +
        '&dxsEntries=' + ID_P2Strom +
        '&dxsEntries=' + ID_P1Leistung +
        '&dxsEntries=' + ID_P2Leistung +
        '&dxsEntries=' + ID_Status +
        '&dxsEntries=' + ID_DC1Leistung +
        '&dxsEntries=' + ID_DC2Leistung,
        
        function (error, response, body) {
            if(!error && response.statusCode ==200) {
                if(logging) log(body);
                var result = JSON.parse(body).dxsEntries;
                setState('Messwerte.0.Solaranlage.Momentanwerte.Leistung_DC_aktuell', result[0].value || 0, true);
                setState('Messwerte.0.Solaranlage.Momentanwerte.Leistung_AC_aktuell', result[1].value || 0, true);
                setState('Messwerte.0.Solaranlage.Momentanwerte.Eigenverbrauch', result[2].value || 0, true);
                setState('Messwerte.0.Solaranlage.Summenwerte.Eigenverbrauch_d', result[3].value || 0, true);
                setState('Messwerte.0.Solaranlage.Summenwerte.Eigenverbrauch_G', result[4].value || 0, true);
                setState('Messwerte.0.Solaranlage.Summenwerte.Eigenverbrauchsquote_d', result[5].value || 0, true);
                setState('Messwerte.0.Solaranlage.Summenwerte.Eigenverbrauchsquote_G', result[6].value || 0, true);
                setState('Messwerte.0.Solaranlage.Summenwerte.Tagesertrag', result[7].value || 0, true);
                setState('Messwerte.0.Solaranlage.Summenwerte.Gesamtertrag', result[8].value || 0, true);
                setState('Messwerte.0.Solaranlage.Summenwerte.Hausverbrauch_d', result[9].value || 0, true);
                setState('Messwerte.0.Solaranlage.Summenwerte.Hausverbrauch_G', result[10].value || 0, true);
                setState('Messwerte.0.Solaranlage.Summenwerte.Autarkiegrad_G', result[11].value || 0, true);
                setState('Messwerte.0.Solaranlage.Summenwerte.Autarkiegrad_d', result[12].value || 0, true);
                setState('Messwerte.0.Solaranlage.Summenwerte.Betriebszeit', result[13].value || 0, true);
                setState('Messwerte.0.Solaranlage.Momentanwerte.P1Spannung', result[14].value || 0, true);
                setState('Messwerte.0.Solaranlage.Momentanwerte.P2Spannung', result[15].value || 0, true);
                setState('Messwerte.0.Solaranlage.Momentanwerte.P1Strom', result[16].value || 0, true);
                setState('Messwerte.0.Solaranlage.Momentanwerte.P2Strom', result[17].value || 0, true);
                setState('Messwerte.0.Solaranlage.Momentanwerte.P1Leistung', result[18].value || 0, true);
                setState('Messwerte.0.Solaranlage.Momentanwerte.P2Leistung', result[19].value || 0, true);
                setState('Messwerte.0.Solaranlage.Momentanwerte.Status', result[20].value || 0, true);
                setState('Messwerte.0.Solaranlage.Momentanwerte.Leistung_String1', result[21].value || 0, true);
                setState('Messwerte.0.Solaranlage.Momentanwerte.Leistung_String2', result[22].value || 0, true);
            } else {
                log("Fehler: " + error + " bei Abfrage von: " + url, "warn");
            }
        });
    }
    
    
    schedule("*/11 * 5-23 * * *", Piko);
    

    Danke für jede Hilfe

    kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

    Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

    der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

    paul53P 1 Reply Last reply
    0
    • S Offline
      S Offline
      stimezo
      Forum Testing
      wrote on last edited by
      #2

      Hallo Rainer,

      versuch es mal so:

      on({id: "smartmeter.0.1-0:16_7_0_255.value", change: "ne"}, function (obj) {
      
      // Ausleseskript Wechselrichter Kostal Piko ab Firmware v05.31 (12.10.2015)
      
      //Variable
      
       //Leistungswerte
          ID_DCEingangGesamt = 33556736;         // in W
          ID_Ausgangsleistung = 67109120;        // in W
          ID_Eigenverbrauch = 83888128;          // in W
          //Status
          ID_Status = 16780032;                  // 0:Off
          //Statistik - Tag
          ID_Ertrag_d = 251658754;               // in Wh
          ID_Hausverbrauch_d = 251659010;        // in Wh
          ID_Eigenverbrauch_d = 251659266;       // in Wh
          ID_Eigenverbrauchsquote_d = 251659278; // in %
          ID_Autarkiegrad_d = 251659279;         // in %
          //Statistik - Gesamt
          ID_Ertrag_G = 251658753;               // in kWh
          ID_Hausverbrauch_G = 251659009;        // in kWh
          ID_Eigenverbrauch_G = 251659265;       // in kWh
          ID_Eigenverbrauchsquote_G = 251659280; // in %
          ID_Autarkiegrad_G = 251659281;         // in %
          ID_Betriebszeit = 251658496;           // in h
          //Momentanwerte - PV Genertor
          ID_DC1Spannung = 33555202;             // in V
          ID_DC1Strom = 33555201;                // in A
          ID_DC1Leistung = 33555203;             // in W
          ID_DC2Spannung = 33555458;             // in V
          ID_DC2Strom = 33555457;                // in A
          ID_DC2Leistung = 33555459;             // in W
          //Momentanwerte Haus
          ID_HausverbrauchSolar = 83886336;      // in W
          ID_HausverbrauchBatterie = 83886592;   // in W
          ID_HausverbrauchNetz = 83886848;       // in W
          ID_HausverbrauchPhase1 = 83887106;     // in W
          ID_HausverbrauchPhase2 = 83887362;     // in W
          ID_HausverbrauchPhase3 = 83887618;     // in W
          //Netz Netzparameter
          ID_NetzAusgangLeistung = 67109120;     // in W
          ID_NetzFrequenz = 67110400;            // in Hz
          ID_NetzCosPhi = 67110656;
          //Netz Phase 1
          ID_P1Spannung = 67109378;              // in V
          ID_P1Strom = 67109377;                 // in A
          ID_P1Leistung = 67109379;              // in W
          //Netz Phase 2
          ID_P2Spannung = 67109634;              // in V
          ID_P2Strom = 67109633;                 // in A
          ID_P2Leistung = 67109635;              // in W
          //Netz Phase 3
          ID_P3Spannung = 67109890;              // in V
          ID_P3Strom = 67109889;                 // in A
          ID_P3Leistung = 67109891;              // in W
      
      
       
      var IPAnlage = '192.168.138.103/api/dxs.json';   // IP der Photovoltaik-Anlage
      
      
      
      createState('Messwerte.0.Solaranlage.Momentanwerte.Leistung_AC_aktuell', 0);
      createState('Messwerte.0.Solaranlage.Summenwerte.Autarkiegrad_d',0);
      createState('Messwerte.0.Solaranlage.Summenwerte.Autarkiegrad_G',0);
      createState('Messwerte.0.Solaranlage.Summenwerte.Betriebszeit',0);
      createState('Messwerte.0.Solaranlage.Momentanwerte.Leistung_DC_aktuell',0);
      createState('Messwerte.0.Solaranlage.Momentanwerte.Eigenverbrauch',0);
      createState('Messwerte.0.Solaranlage.Summenwerte.Eigenverbrauch_d');
      createState('Messwerte.0.Solaranlage.Summenwerte.Eigenverbrauch_G', 0);
      createState('Messwerte.0.Solaranlage.Summenwerte.Eigenverbrauchsquote_d', 0);
      createState('Messwerte.0.Solaranlage.Summenwerte.Eigenverbrauchsquote_G', 0);
      createState('Messwerte.0.Solaranlage.Summenwerte.Tagesertrag', 0);
      createState('Messwerte.0.Solaranlage.Summenwerte.Gesamtertrag', 0);
      createState('Messwerte.0.Solaranlage.Summenwerte.Hausverbrauch_d', 0);
      createState('Messwerte.0.Solaranlage.Summenwerte.Hausverbrauch_G', 0);
      createState('Messwerte.0.Solaranlage.Momentanwerte.P1Spannung');
      createState('Messwerte.0.Solaranlage.Momentanwerte.P2Spannung');
      createState('Messwerte.0.Solaranlage.Momentanwerte.P1Strom');
      createState('Messwerte.0.Solaranlage.Momentanwerte.P2Strom');
      createState('Messwerte.0.Solaranlage.Momentanwerte.P1Leistung');
      createState('Messwerte.0.Solaranlage.Momentanwerte.P2Leistung');
      
      
      var logging = false;
      var request = require('request');
      
      function Piko() {
          if (logging) log("Piko 5.5 auslesen");
          request('http://' + IPAnlage + 
          '?dxsEntries=' + ID_DCEingangGesamt +
          '&dxsEntries=' + ID_Ausgangsleistung +
          '&dxsEntries=' + ID_Eigenverbrauch +
          '&dxsEntries=' + ID_Eigenverbrauch_d +
          '&dxsEntries=' + ID_Eigenverbrauch_G +
          '&dxsEntries=' + ID_Eigenverbrauchsquote_d +
          '&dxsEntries=' + ID_Eigenverbrauchsquote_G +
          '&dxsEntries=' + ID_Ertrag_d +
          '&dxsEntries=' + ID_Ertrag_G +
          '&dxsEntries=' + ID_Hausverbrauch_d +
          '&dxsEntries=' + ID_Hausverbrauch_G +
          '&dxsEntries=' + ID_Autarkiegrad_G +
          '&dxsEntries=' + ID_Autarkiegrad_d +
          '&dxsEntries=' + ID_Betriebszeit +
          '&dxsEntries=' + ID_P1Spannung +
          '&dxsEntries=' + ID_P2Spannung +
          '&dxsEntries=' + ID_P1Strom +
          '&dxsEntries=' + ID_P2Strom +
          '&dxsEntries=' + ID_P1Leistung +
          '&dxsEntries=' + ID_P2Leistung +
          '&dxsEntries=' + ID_Status +
          '&dxsEntries=' + ID_DC1Leistung +
          '&dxsEntries=' + ID_DC2Leistung,
          
          function (error, response, body) {
              if(!error && response.statusCode ==200) {
                  if(logging) log(body);
                  var result = JSON.parse(body).dxsEntries;
                  setState('Messwerte.0.Solaranlage.Momentanwerte.Leistung_DC_aktuell', result[0].value || 0, true);
                  setState('Messwerte.0.Solaranlage.Momentanwerte.Leistung_AC_aktuell', result[1].value || 0, true);
                  setState('Messwerte.0.Solaranlage.Momentanwerte.Eigenverbrauch', result[2].value || 0, true);
                  setState('Messwerte.0.Solaranlage.Summenwerte.Eigenverbrauch_d', result[3].value || 0, true);
                  setState('Messwerte.0.Solaranlage.Summenwerte.Eigenverbrauch_G', result[4].value || 0, true);
                  setState('Messwerte.0.Solaranlage.Summenwerte.Eigenverbrauchsquote_d', result[5].value || 0, true);
                  setState('Messwerte.0.Solaranlage.Summenwerte.Eigenverbrauchsquote_G', result[6].value || 0, true);
                  setState('Messwerte.0.Solaranlage.Summenwerte.Tagesertrag', result[7].value || 0, true);
                  setState('Messwerte.0.Solaranlage.Summenwerte.Gesamtertrag', result[8].value || 0, true);
                  setState('Messwerte.0.Solaranlage.Summenwerte.Hausverbrauch_d', result[9].value || 0, true);
                  setState('Messwerte.0.Solaranlage.Summenwerte.Hausverbrauch_G', result[10].value || 0, true);
                  setState('Messwerte.0.Solaranlage.Summenwerte.Autarkiegrad_G', result[11].value || 0, true);
                  setState('Messwerte.0.Solaranlage.Summenwerte.Autarkiegrad_d', result[12].value || 0, true);
                  setState('Messwerte.0.Solaranlage.Summenwerte.Betriebszeit', result[13].value || 0, true);
                  setState('Messwerte.0.Solaranlage.Momentanwerte.P1Spannung', result[14].value || 0, true);
                  setState('Messwerte.0.Solaranlage.Momentanwerte.P2Spannung', result[15].value || 0, true);
                  setState('Messwerte.0.Solaranlage.Momentanwerte.P1Strom', result[16].value || 0, true);
                  setState('Messwerte.0.Solaranlage.Momentanwerte.P2Strom', result[17].value || 0, true);
                  setState('Messwerte.0.Solaranlage.Momentanwerte.P1Leistung', result[18].value || 0, true);
                  setState('Messwerte.0.Solaranlage.Momentanwerte.P2Leistung', result[19].value || 0, true);
                  setState('Messwerte.0.Solaranlage.Momentanwerte.Status', result[20].value || 0, true);
                  setState('Messwerte.0.Solaranlage.Momentanwerte.Leistung_String1', result[21].value || 0, true);
                  setState('Messwerte.0.Solaranlage.Momentanwerte.Leistung_String2', result[22].value || 0, true);
              } else {
                  log("Fehler: " + error + " bei Abfrage von: " + url, "warn");
              }
          });
      }
      
      
      });
      

      Wenn der Wert von "smartmeter.0.1-0:16_7_0_255.value" sich ändert und ungleich dem vorherigen Wert ist, wird getriggert.

      Viele Grüße
      Christian

      1 Reply Last reply
      0
      • HomoranH Homoran

        Ich will mich mal wieder einen Schritt weiter in JS einarbeiten.
        Vieles weiß ich schon, traue mich aber noch nicht so richtig, zumal Blockly (erst recht mit den zukünftigen neuen Bausteinen) eine fast vollwertige und einfachere Alternative ist.

        Mein jetziges Problem ist, dass ich zwei "geklaute" Skripte/Adapter miteinander kombinieren muss, was mir bisher nicht wirklich geggückt ist. Es ist zwar mit viel try and error immer besser geworden, daber nicht korrekt.

        Es geht um die Berechnung des effektiven Stromverbrauchs aus Daten vom Smartmeter-Adapters (Momentanwert Gesamtwirkleistung (Total) ist +/- je nach Leistung der Solaranlage) und dem Wert der AC-Leistung des Wechselrichters nach Auslesen desselben über ein Skript.

        Diese Werte kommen nicht synchron. Insbesondere bei stark wolkigem Wetter und schnell wechselndem Solarertrag ist eine Berechnung alle 10 Sekunden oft nicht korrekt, da die Werte so nicht synchronisiert sind.
        Solarwerte.png

        Ich denke, dass es funktionieren würde, wenn ich das Auslese skript nicht per schedule

        schedule("*/11 * 5-23 * * *", Piko);
        

        sondern irgendwo zu Beginn auf die Änderung des Wertes des smartmeteradapters synchronisieren würde.

        Wenn ich inzwischen richtig aufgepasst habe muss da irgendetwas mit

        ON...smartmeter.0.1-0:16_7_0_255.value.. not equal
        

        rein.

        Aber wo und wie genau?

        // Ausleseskript Wechselrichter Kostal Piko ab Firmware v05.31 (12.10.2015)
        
        //Variable
        
         //Leistungswerte
            ID_DCEingangGesamt = 33556736;         // in W
            ID_Ausgangsleistung = 67109120;        // in W
            ID_Eigenverbrauch = 83888128;          // in W
            //Status
            ID_Status = 16780032;                  // 0:Off
            //Statistik - Tag
            ID_Ertrag_d = 251658754;               // in Wh
            ID_Hausverbrauch_d = 251659010;        // in Wh
            ID_Eigenverbrauch_d = 251659266;       // in Wh
            ID_Eigenverbrauchsquote_d = 251659278; // in %
            ID_Autarkiegrad_d = 251659279;         // in %
            //Statistik - Gesamt
            ID_Ertrag_G = 251658753;               // in kWh
            ID_Hausverbrauch_G = 251659009;        // in kWh
            ID_Eigenverbrauch_G = 251659265;       // in kWh
            ID_Eigenverbrauchsquote_G = 251659280; // in %
            ID_Autarkiegrad_G = 251659281;         // in %
            ID_Betriebszeit = 251658496;           // in h
            //Momentanwerte - PV Genertor
            ID_DC1Spannung = 33555202;             // in V
            ID_DC1Strom = 33555201;                // in A
            ID_DC1Leistung = 33555203;             // in W
            ID_DC2Spannung = 33555458;             // in V
            ID_DC2Strom = 33555457;                // in A
            ID_DC2Leistung = 33555459;             // in W
            //Momentanwerte Haus
            ID_HausverbrauchSolar = 83886336;      // in W
            ID_HausverbrauchBatterie = 83886592;   // in W
            ID_HausverbrauchNetz = 83886848;       // in W
            ID_HausverbrauchPhase1 = 83887106;     // in W
            ID_HausverbrauchPhase2 = 83887362;     // in W
            ID_HausverbrauchPhase3 = 83887618;     // in W
            //Netz Netzparameter
            ID_NetzAusgangLeistung = 67109120;     // in W
            ID_NetzFrequenz = 67110400;            // in Hz
            ID_NetzCosPhi = 67110656;
            //Netz Phase 1
            ID_P1Spannung = 67109378;              // in V
            ID_P1Strom = 67109377;                 // in A
            ID_P1Leistung = 67109379;              // in W
            //Netz Phase 2
            ID_P2Spannung = 67109634;              // in V
            ID_P2Strom = 67109633;                 // in A
            ID_P2Leistung = 67109635;              // in W
            //Netz Phase 3
            ID_P3Spannung = 67109890;              // in V
            ID_P3Strom = 67109889;                 // in A
            ID_P3Leistung = 67109891;              // in W
        
        
         
        var IPAnlage = '192.168.138.103/api/dxs.json';   // IP der Photovoltaik-Anlage
        
        
        
        createState('Messwerte.0.Solaranlage.Momentanwerte.Leistung_AC_aktuell', 0);
        createState('Messwerte.0.Solaranlage.Summenwerte.Autarkiegrad_d',0);
        createState('Messwerte.0.Solaranlage.Summenwerte.Autarkiegrad_G',0);
        createState('Messwerte.0.Solaranlage.Summenwerte.Betriebszeit',0);
        createState('Messwerte.0.Solaranlage.Momentanwerte.Leistung_DC_aktuell',0);
        createState('Messwerte.0.Solaranlage.Momentanwerte.Eigenverbrauch',0);
        createState('Messwerte.0.Solaranlage.Summenwerte.Eigenverbrauch_d');
        createState('Messwerte.0.Solaranlage.Summenwerte.Eigenverbrauch_G', 0);
        createState('Messwerte.0.Solaranlage.Summenwerte.Eigenverbrauchsquote_d', 0);
        createState('Messwerte.0.Solaranlage.Summenwerte.Eigenverbrauchsquote_G', 0);
        createState('Messwerte.0.Solaranlage.Summenwerte.Tagesertrag', 0);
        createState('Messwerte.0.Solaranlage.Summenwerte.Gesamtertrag', 0);
        createState('Messwerte.0.Solaranlage.Summenwerte.Hausverbrauch_d', 0);
        createState('Messwerte.0.Solaranlage.Summenwerte.Hausverbrauch_G', 0);
        createState('Messwerte.0.Solaranlage.Momentanwerte.P1Spannung');
        createState('Messwerte.0.Solaranlage.Momentanwerte.P2Spannung');
        createState('Messwerte.0.Solaranlage.Momentanwerte.P1Strom');
        createState('Messwerte.0.Solaranlage.Momentanwerte.P2Strom');
        createState('Messwerte.0.Solaranlage.Momentanwerte.P1Leistung');
        createState('Messwerte.0.Solaranlage.Momentanwerte.P2Leistung');
        
        
        var logging = false;
        var request = require('request');
        
        function Piko() {
            if (logging) log("Piko 5.5 auslesen");
            request('http://' + IPAnlage + 
            '?dxsEntries=' + ID_DCEingangGesamt +
            '&dxsEntries=' + ID_Ausgangsleistung +
            '&dxsEntries=' + ID_Eigenverbrauch +
            '&dxsEntries=' + ID_Eigenverbrauch_d +
            '&dxsEntries=' + ID_Eigenverbrauch_G +
            '&dxsEntries=' + ID_Eigenverbrauchsquote_d +
            '&dxsEntries=' + ID_Eigenverbrauchsquote_G +
            '&dxsEntries=' + ID_Ertrag_d +
            '&dxsEntries=' + ID_Ertrag_G +
            '&dxsEntries=' + ID_Hausverbrauch_d +
            '&dxsEntries=' + ID_Hausverbrauch_G +
            '&dxsEntries=' + ID_Autarkiegrad_G +
            '&dxsEntries=' + ID_Autarkiegrad_d +
            '&dxsEntries=' + ID_Betriebszeit +
            '&dxsEntries=' + ID_P1Spannung +
            '&dxsEntries=' + ID_P2Spannung +
            '&dxsEntries=' + ID_P1Strom +
            '&dxsEntries=' + ID_P2Strom +
            '&dxsEntries=' + ID_P1Leistung +
            '&dxsEntries=' + ID_P2Leistung +
            '&dxsEntries=' + ID_Status +
            '&dxsEntries=' + ID_DC1Leistung +
            '&dxsEntries=' + ID_DC2Leistung,
            
            function (error, response, body) {
                if(!error && response.statusCode ==200) {
                    if(logging) log(body);
                    var result = JSON.parse(body).dxsEntries;
                    setState('Messwerte.0.Solaranlage.Momentanwerte.Leistung_DC_aktuell', result[0].value || 0, true);
                    setState('Messwerte.0.Solaranlage.Momentanwerte.Leistung_AC_aktuell', result[1].value || 0, true);
                    setState('Messwerte.0.Solaranlage.Momentanwerte.Eigenverbrauch', result[2].value || 0, true);
                    setState('Messwerte.0.Solaranlage.Summenwerte.Eigenverbrauch_d', result[3].value || 0, true);
                    setState('Messwerte.0.Solaranlage.Summenwerte.Eigenverbrauch_G', result[4].value || 0, true);
                    setState('Messwerte.0.Solaranlage.Summenwerte.Eigenverbrauchsquote_d', result[5].value || 0, true);
                    setState('Messwerte.0.Solaranlage.Summenwerte.Eigenverbrauchsquote_G', result[6].value || 0, true);
                    setState('Messwerte.0.Solaranlage.Summenwerte.Tagesertrag', result[7].value || 0, true);
                    setState('Messwerte.0.Solaranlage.Summenwerte.Gesamtertrag', result[8].value || 0, true);
                    setState('Messwerte.0.Solaranlage.Summenwerte.Hausverbrauch_d', result[9].value || 0, true);
                    setState('Messwerte.0.Solaranlage.Summenwerte.Hausverbrauch_G', result[10].value || 0, true);
                    setState('Messwerte.0.Solaranlage.Summenwerte.Autarkiegrad_G', result[11].value || 0, true);
                    setState('Messwerte.0.Solaranlage.Summenwerte.Autarkiegrad_d', result[12].value || 0, true);
                    setState('Messwerte.0.Solaranlage.Summenwerte.Betriebszeit', result[13].value || 0, true);
                    setState('Messwerte.0.Solaranlage.Momentanwerte.P1Spannung', result[14].value || 0, true);
                    setState('Messwerte.0.Solaranlage.Momentanwerte.P2Spannung', result[15].value || 0, true);
                    setState('Messwerte.0.Solaranlage.Momentanwerte.P1Strom', result[16].value || 0, true);
                    setState('Messwerte.0.Solaranlage.Momentanwerte.P2Strom', result[17].value || 0, true);
                    setState('Messwerte.0.Solaranlage.Momentanwerte.P1Leistung', result[18].value || 0, true);
                    setState('Messwerte.0.Solaranlage.Momentanwerte.P2Leistung', result[19].value || 0, true);
                    setState('Messwerte.0.Solaranlage.Momentanwerte.Status', result[20].value || 0, true);
                    setState('Messwerte.0.Solaranlage.Momentanwerte.Leistung_String1', result[21].value || 0, true);
                    setState('Messwerte.0.Solaranlage.Momentanwerte.Leistung_String2', result[22].value || 0, true);
                } else {
                    log("Fehler: " + error + " bei Abfrage von: " + url, "warn");
                }
            });
        }
        
        
        schedule("*/11 * 5-23 * * *", Piko);
        

        Danke für jede Hilfe

        paul53P Offline
        paul53P Offline
        paul53
        wrote on last edited by paul53
        #3

        @Homoran Anstelle des schedule() am Skriptende ein on() als Trigger auf den Smartmeter-Datenpunkt.

        on('smartmeter.0.1-0:16_7_0_255.value', Piko); // triggert bei Wertänderung
        

        Hoffentlich erfolgt die Wertänderung nicht zu schnell.

        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

        HomoranH 1 Reply Last reply
        1
        • paul53P paul53

          @Homoran Anstelle des schedule() am Skriptende ein on() als Trigger auf den Smartmeter-Datenpunkt.

          on('smartmeter.0.1-0:16_7_0_255.value', Piko); // triggert bei Wertänderung
          

          Hoffentlich erfolgt die Wertänderung nicht zu schnell.

          HomoranH Offline
          HomoranH Offline
          Homoran
          Global Moderator Administrators
          wrote on last edited by
          #4

          Danke Paul!

          @paul53 sagte in Adapterwerte und Script synchronisieren:

          am Skriptende

          Das erschien mir auch am logischsten, aber ich dachte das muss immer (ziemlich weit) oben stehen.

          @paul53 sagte in Adapterwerte und Script synchronisieren:

          Hoffentlich erfolgt die Wertänderung nicht zu schnell.

          Im MOment alle 10 Sekunden - was wäre deiner Meinung denn ein "sicheres" Intervall?

          kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

          der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

          paul53P 1 Reply Last reply
          0
          • HomoranH Homoran

            Danke Paul!

            @paul53 sagte in Adapterwerte und Script synchronisieren:

            am Skriptende

            Das erschien mir auch am logischsten, aber ich dachte das muss immer (ziemlich weit) oben stehen.

            @paul53 sagte in Adapterwerte und Script synchronisieren:

            Hoffentlich erfolgt die Wertänderung nicht zu schnell.

            Im MOment alle 10 Sekunden - was wäre deiner Meinung denn ein "sicheres" Intervall?

            paul53P Offline
            paul53P Offline
            paul53
            wrote on last edited by
            #5

            @Homoran sagte:

            ich dachte das muss immer (ziemlich weit) oben stehen.

            Nein, in der Regel weit unten, denn die Deklaration der im Trigger verwendeten Variablen und Funktionen sollte vorher erfolgen (damit der Parser/Compiler nicht mehrere Durchläufe benötigt).

            @Homoran sagte:

            alle 10 Sekunden

            Das sollte problemlos funktionieren, denn die Laufzeit der Funktion Piko() wird wohl erheblich geringer sein.

            Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
            Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

            HomoranH 1 Reply Last reply
            0
            • paul53P paul53

              @Homoran sagte:

              ich dachte das muss immer (ziemlich weit) oben stehen.

              Nein, in der Regel weit unten, denn die Deklaration der im Trigger verwendeten Variablen und Funktionen sollte vorher erfolgen (damit der Parser/Compiler nicht mehrere Durchläufe benötigt).

              @Homoran sagte:

              alle 10 Sekunden

              Das sollte problemlos funktionieren, denn die Laufzeit der Funktion Piko() wird wohl erheblich geringer sein.

              HomoranH Offline
              HomoranH Offline
              Homoran
              Global Moderator Administrators
              wrote on last edited by Homoran
              #6

              @paul53
              Danke!
              Dann trau ich mich mal ;-)

              kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

              Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

              der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

              1 Reply Last reply
              0
              Reply
              • Reply as topic
              Log in to reply
              • Oldest to Newest
              • Newest to Oldest
              • Most Votes


              Support us

              ioBroker
              Community Adapters
              Donate

              559

              Online

              32.4k

              Users

              81.5k

              Topics

              1.3m

              Posts
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
              ioBroker Community 2014-2025
              logo
              • Login

              • Don't have an account? Register

              • Login or register to search.
              • First post
                Last post
              0
              • Home
              • Recent
              • Tags
              • Unread 0
              • Categories
              • Unreplied
              • Popular
              • GitHub
              • Docu
              • Hilfe