Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
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

Geplant Angeheftet Gesperrt Verschoben Blockly
javascriptblockly
6 Beiträge 3 Kommentatoren 670 Aufrufe 2 Watching
  • Ä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.
  • HomoranH Offline
    HomoranH Offline
    Homoran
    Global Moderator Administrators
    schrieb am zuletzt editiert von
    #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 Antwort Letzte Antwort
    0
    • S Offline
      S Offline
      stimezo
      Forum Testing
      schrieb am zuletzt editiert von
      #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 Antwort Letzte Antwort
      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
        schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
        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
          schrieb am zuletzt editiert von
          #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 Antwort Letzte Antwort
          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
            schrieb am zuletzt editiert von
            #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 Antwort Letzte Antwort
            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
              schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
              0
              Antworten
              • In einem neuen Thema antworten
              Anmelden zum Antworten
              • Älteste zuerst
              • Neuste zuerst
              • Meiste Stimmen


              Support us

              ioBroker
              Community Adapters
              Donate

              814

              Online

              32.4k

              Benutzer

              81.5k

              Themen

              1.3m

              Beiträge
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
              ioBroker Community 2014-2025
              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