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. Fronius Symo Hybrid über Javaskript auslesen (Json)

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    10
    1
    152

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.4k

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

Fronius Symo Hybrid über Javaskript auslesen (Json)

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
13 Beiträge 7 Kommentatoren 7.0k Aufrufe
  • Ä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.
  • S Offline
    S Offline
    SolarElch
    schrieb am zuletzt editiert von
    #3

    Guten Abend ruhr70!

    so nah war ich meinem Ziel noch nicht!!!!

    es ist zum greifen nahe…

    dachte schon ich muss auf eine andere Plattform ausweichen...!!!

    JS ist so etwas von nicht meine Welt... DANKE, DANKE, DANKE!!!!

    anbei der der Auszug aus dem Log:

    ReferenceError: myJSON is not defined at script.js.Fronius.HausStrom.Skript1:79:35 at Request._callback (script.js.Fronius.HausStrom.Skript1:63:13) at Request.self.callback (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:199:22) at Request.EventEmitter.emit (events.js:98:17) at Request. (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:1036:10) at Request.EventEmitter.emit (events.js:117:20) at IncomingMessage. (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:963:12) at IncomingMessage.EventEmitter.emit (events.js:117:20) at _stream_readable.js:920:16 at process._tickCallback (node.js:415:13)

    sehe die Werte schon im VIS...

    das ist alles sooooo spannend...

    lg SolarElch

    1 Antwort Letzte Antwort
    0
    • ruhr70R Offline
      ruhr70R Offline
      ruhr70
      schrieb am zuletzt editiert von
      #4

      @SolarElch:

      sehe die Werte schon im VIS… `

      Du dürftest aber nur die nackten Datenpunkte ohne Inhalt gesehen haben oder?

      Ich hatte da leider einenTippfehler (myJSON statt myJson) drin. Danke fürs log.

      Neue Version. Fragt nun zum Anfang die Werte einmal ab und dann alle 10 Minuten.

      var request = require("request");
      
      var myJson = {};
      
      var pfad = "Fronius_Symo_Hybrid.";
      
      var idDAY_ENERGY        = pfad + "ENERGY_DAY";
      var idPAC               = pfad + "PAC";
      var idYEAR_ENERGY       = pfad + "ENERGY_YEAR";
      var idTOTAL_ENERGY      = pfad + "ENERGY_TOTAL";
      
      createState(idDAY_ENERGY, 0, {
          name: 'Energie Tag',
          desc: 'Energie Tag',
          type: 'number',
          role: 'value',
          unit: 'Wh'
      });
      
      createState(idPAC, 0, {
          name: 'Leistung',
          desc: 'Leistung',
          type: 'number',
          role: 'value',
          unit: 'W'
      });
      
      createState(idYEAR_ENERGY, 0, {
          name: 'Energie Jahr',
          desc: 'Leistung',
          type: 'Energie Jahr',
          role: 'value',
          unit: 'Wh'
      });
      
      createState(idTOTAL_ENERGY, 0, {
          name: 'Energie Total',
          desc: 'Leistung',
          type: 'Energie total',
          role: 'value',
          unit: 'Wh'
      });
      
      function parseJson(text) {
          if (text === "") return {};
          try {
              json = JSON.parse(text);
          } catch (ex) {
              json = {};
          }
          if(!json) json = {};
          return json;
      }
      
      function readJson(url, callback) {
          request(url, function (err, state, body){
              if (body) {
                  var json = parseJson(body);
                  callback(null, json);
              } else {
                  var error = "(" + err + ") ERROR bei Abfrage von: " + url;
                  log(error, "warn");  
                  callback(error, null);
              }
          });
      }
      
      var url = 'http://10.0.0.6/solar_api/v1/GetInverterRealtimeData.cgi?Scope=System';
      
      function main() {
          readJson(url, function(err,json) {
              if(!err) {
                  myJson = json;
                  log("DAY_ENERGY: "      + myJson.Body.Data.DAY_ENERGY.Values[1],"info");
                  log("PAC: "             + myJson.Body.Data.PAC.Values[1],"info");
                  log("YEAR_ENERGY: "     + myJson.Body.Data.YEAR_ENERGY.Values[1],"info");
                  log("TOTAL_ENERGY: "    + myJson.Body.Data.TOTAL_ENERGY.Values[1],"info");
                  setState(idDAY_ENERGY   ,myJson.Body.Data.DAY_ENERGY.Values[1]);
                  setState(idPAC          ,myJson.Body.Data.PAC.Values[1]);
                  setState(idYEAR_ENERGY  ,myJson.Body.Data.YEAR_ENERGY.Values[1]);
                  setState(idTOTAL_ENERGY ,myJson.Body.Data.TOTAL_ENERGY.Values[1]);
              } else {
                  log("Fehler beim Auslesen des JSON. Keine Daten erhalten.","warn");
                  myJson = {};
              }
          });
      }
      
      schedule("*/10 * * * *", function () { // alle 10 Minuten die Werte abfragen
          main();
      });
      
      // Beim Skriptstart die Werte abfragen
      setTimeout(main,500);
      
      

      Adapter: Fritzbox, Unify Circuit
      Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

      1 Antwort Letzte Antwort
      0
      • S Offline
        S Offline
        SolarElch
        schrieb am zuletzt editiert von
        #5

        Servus ruhr70,

        konnte es heute gar nicht mehr abwarten von der firma nach hause zu kommen.

        ES FUNKTIONIERT!!!!

        jetzt noch ein diagramm (wegen der optik ;) und die daten in eine sql db hinein (das werde ich über ein shell skript erledigen :)

        kopiere mir dss skript dann noch einmal damit ich auch das smart meter auslesen kann….

        7" display mit rahmen für den raspi ist schon bestellt, darstellung der werte für die frau ;)

        ps.: ist das ok für dich wenn ich diesen beitrag im pv forum verlinke, das werden sicher einige pv anlagen betreiber mit kuss verwenden.

        du hast schon jetzt 186 views... das skript wird sicher der hit!!!!

        Danke die noch einmal!!!!

        lg SolarElch

        1 Antwort Letzte Antwort
        0
        • S Offline
          S Offline
          SolarElch
          schrieb am zuletzt editiert von
          #6

          Guten Abend ruhr70,

          könne nochmal deine Unterstützung brauchen wenn du so nett bist…. :)

          habe dein Skript wie folgt umgebaut:

          var request = require("request");
          
          var myJson = {};
          
          var pfad = "Fronius_SmartMeter";
          
          var idEnergyReal_WAC_Sum_Produced      = pfad + "EnergyReal_WAC_Sum_Produced";
          var idEnergyReal_WAC_Sum_Consumed      = pfad + "EnergyReal_WAC_Sum_Consumed";
          var idEnergyReal_WAC_Plus_Absolute     = pfad + "EnergyReal_WAC_Plus_Absolute";
          var idEnergyReal_WAC_Minus_Absolute    = pfad + "EnergyReal_WAC_Minus_Absolute";
          
          createState(idEnergyReal_WAC_Sum_Produced, 0, {
              name: 'Sum Produced',
              desc: 'Sum Produced',
              type: 'number',
              role: 'value',
              unit: 'Wh'
          });
          
          createState(idEnergyReal_WAC_Sum_Consumed, 0, {
              name: 'Sum Consumed',
              desc: 'Sum Consumed',
              type: 'number',
              role: 'value',
              unit: 'Wh'
          });
          
          createState(idEnergyReal_WAC_Plus_Absolute, 0, {
              name: 'WAC Plus',
              desc: 'WAC Plus',
              type: 'number',
              role: 'value',
              unit: 'Wh'
          });
          
          createState(idEnergyReal_WAC_Minus_Absolute, 0, {
              name: 'WAC Minus',
              desc: 'WAC Minus',
              type: 'number',
              role: 'value',
              unit: 'Wh'
          });
          
          function parseJson(text) {
              if (text === "") return {};
              try {
                  json = JSON.parse(text);
              } catch (ex) {
                  json = {};
              }
              if(!json) json = {};
              return json;
          }
          
          function readJson(url, callback) {
              request(url, function (err, state, body){
                  if (body) {
                      var json = parseJson(body);
                      callback(null, json);
                  } else {
                      var error = "(" + err + ") ERROR bei Abfrage von: " + url;
                      log(error, "warn");  
                      callback(error, null);
                  }
              });
          }
          
          var url = 'http://10.0.0.6/solar_api/v1/GetMeterRealtimeData.cgi?Scope=Device&DeviceId=0';
          
          function main() {
              readJson(url, function(err,json) {
                  if(!err) {
                      myJson = json;
                      log("EnergyReal_WAC_Sum_Produced: "      + myJson.Body.Data.EnergyReal_WAC_Sum_Produced.Values[1],"info");
                      log("EnergyReal_WAC_Sum_Consumed: "      + myJson.Body.Data.EnergyReal_WAC_Sum_Consumed.Values[1],"info");
                      log("EnergyReal_WAC_Plus_Absolute: "     + myJson.Body.Data.EnergyReal_WAC_Plus_Absolute.Values[1],"info");
                      log("EnergyReal_WAC_Minus_Absolute: "    + myJson.Body.Data.EnergyReal_WAC_Minus_Absolute.Values[1],"info");
                      setState(idEnergyReal_WAC_Sum_Produced   ,myJson.Body.Data.EnergyReal_WAC_Sum_Produced.Values[1]);
                      setState(idEnergyReal_WAC_Sum_Consumed   ,myJson.Body.Data.EnergyReal_WAC_Sum_Consumed.Values[1]);
                      setState(idEnergyReal_WAC_Plus_Absolute  ,myJson.Body.Data.EnergyReal_WAC_Plus_Absolute.Values[1]);
                      setState(idEnergyReal_WAC_Minus_Absolute ,myJson.Body.Data.EnergyReal_WAC_Minus_Absolute.Values[1]);
                  } else {
                      log("Fehler beim Auslesen des JSON. Keine Daten erhalten.","warn");
                      myJson = {};
                  }
              });
          }
          
          schedule("*/15 * * * *", function () { // alle 15 Minuten die Werte abfragen
              main();
          });
          
          // Beim Skriptstart die Werte abfragen
          setTimeout(main,500);
          
          damit ich dann diesen String auslesen kann:
          
          {
          	"Head" : {
          		"RequestArguments" : {
          			"DeviceClass" : "Meter",
          			"DeviceId" : "0",
          			"Scope" : "Device"
          		},
          		"Status" : {
          			"Code" : 0,
          			"Reason" : "",
          			"UserMessage" : ""
          		},
          		"Timestamp" : "2016-04-14T22:20:20+02:00"
          	},
          	"Body" : {
          		"Data" : {
          			"Details" : {
          				"Serial" : "15520147",
          				"Model" : "Fronius SmartMeter",
          				"Manufacturer" : "Fronius"
          			},
          			"TimeStamp" : 1460665219,
          			"Enable" : 1,
          			"Visible" : 1,
          			"PowerReal_P_Sum" : 7345.59,
          			"Meter_Location_Current" : 0,
          			"PowerReal_P_Phase_1" : 3272.18,
          			"PowerReal_P_Phase_2" : 2110.06,
          			"PowerReal_P_Phase_3" : 1963.35,
          			"PowerReactive_Q_Sum" : -96.62,
          			"PowerReactive_Q_Phase_1" : -71.61,
          			"PowerReactive_Q_Phase_2" : 38.35,
          			"PowerReactive_Q_Phase_3" : -63.36,
          			"Current_AC_Phase_1" : 14.174,
          			"Current_AC_Phase_2" : 9.031,
          			"Current_AC_Phase_3" : 8.433,
          			"Voltage_AC_Phase_1" : 231.2,
          			"Voltage_AC_Phase_2" : 233.8,
          			"Voltage_AC_Phase_3" : 233,
          			"Voltage_AC_PhaseToPhase_12" : 402.7,
          			"Voltage_AC_PhaseToPhase_23" : 404.3,
          			"Voltage_AC_PhaseToPhase_31" : 402,
          			"Frequency_Phase_Average" : 50,
          			"PowerApparent_S_Sum" : 7346,
          			"PowerFactor_Sum" : 0.99,
          			"PowerFactor_Phase_1" : 0.99,
          			"PowerFactor_Phase_2" : 1,
          			"PowerFactor_Phase_3" : 0.99,
          			"EnergyReal_WAC_Sum_Produced" : 345066,
          			"EnergyReal_WAC_Sum_Consumed" : 1113042,
          			"EnergyReactive_VArAC_Sum_Produced" : 769590,
          			"EnergyReactive_VArAC_Sum_Consumed" : 603290,
          			"EnergyReal_WAC_Plus_Absolute" : 1113042,
          			"EnergyReal_WAC_Minus_Absolute" : 345066
          		}
          	}
          }
          
          im Log steht dann aber:
          
          22:27:40.471	[info]	javascript.0 Start javascript script.js.Fronius.HausStrom.Fronius_SmartMeter
          22:27:40.472	[info]	javascript.0 script.js.Fronius.HausStrom.Fronius_SmartMeter: registered 0 subscriptions and 1 schedule
          22:27:41.597	[error]	TypeError: Cannot read property '1' of undefined at script.js.Fronius.HausStrom.Fronius_SmartMeter:75:107 at Request._callback (script.js.Fronius.HausStrom.Fronius_SmartMeter:59:13) at Request.self.callback (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:199:22) at Request.EventEmitter.emit (events.js:98:17) at Request. (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:1036:10) at Request.EventEmitter.emit (events.js:117:20) at IncomingMessage. (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:963:12) at IncomingMessage.EventEmitter.emit (events.js:117:20) at _stream_readable.js:920:16 at process._tickCallback (node.js:415:13)
          
          

          Danke!!! dir SolarElch

          1 Antwort Letzte Antwort
          0
          • ruhr70R Offline
            ruhr70R Offline
            ruhr70
            schrieb am zuletzt editiert von
            #7

            @SolarElch:

                        log("EnergyReal_WAC_Sum_Produced: "      + myJson.Body.Data.EnergyReal_WAC_Sum_Produced.Values[1],"info");
                        log("EnergyReal_WAC_Sum_Consumed: "      + myJson.Body.Data.EnergyReal_WAC_Sum_Consumed.Values[1],"info");
                        log("EnergyReal_WAC_Plus_Absolute: "     + myJson.Body.Data.EnergyReal_WAC_Plus_Absolute.Values[1],"info");
                        log("EnergyReal_WAC_Minus_Absolute: "    + myJson.Body.Data.EnergyReal_WAC_Minus_Absolute.Values[1],"info");
            setState(idEnergyReal_WAC_Sum_Produced ,myJson.Body.Data.EnergyReal_WAC_Sum_Produced.Values[1]);
            setState(idEnergyReal_WAC_Sum_Consumed ,myJson.Body.Data.EnergyReal_WAC_Sum_Consumed.Values[1]);
            setState(idEnergyReal_WAC_Plus_Absolute ,myJson.Body.Data.EnergyReal_WAC_Plus_Absolute.Values[1]);
            setState(idEnergyReal_WAC_Minus_Absolute ,myJson.Body.Data.EnergyReal_WAC_Minus_Absolute.Values[1]);
            
            ```` `  
            

            Nach dem Aufbau Deines JSON ist das .Values[1] am Ende zu viel. Das kommt im JSON nicht vor.

            Probier mal so:

            log("EnergyReal_WAC_Sum_Produced: " + myJson.Body.Data.EnergyReal_WAC_Sum_Produced,"info");
            log("EnergyReal_WAC_Sum_Consumed: " + myJson.Body.Data.EnergyReal_WAC_Sum_Consumed,"info");
            log("EnergyReal_WAC_Plus_Absolute: " + myJson.Body.Data.EnergyReal_WAC_Plus_Absolute,"info");
            log("EnergyReal_WAC_Minus_Absolute: " + myJson.Body.Data.EnergyReal_WAC_Minus_Absolute,"info");
            setState(idEnergyReal_WAC_Sum_Produced ,myJson.Body.Data.EnergyReal_WAC_Sum_Produced);
            setState(idEnergyReal_WAC_Sum_Consumed ,myJson.Body.Data.EnergyReal_WAC_Sum_Consumed);
            setState(idEnergyReal_WAC_Plus_Absolute ,myJson.Body.Data.EnergyReal_WAC_Plus_Absolute);
            setState(idEnergyReal_WAC_Minus_Absolute ,myJson.Body.Data.EnergyReal_WAC_Minus_Absolute);
            
            

            Adapter: Fritzbox, Unify Circuit
            Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

            1 Antwort Letzte Antwort
            0
            • E Offline
              E Offline
              eastcoast
              schrieb am zuletzt editiert von
              #8

              Hallo,

              ich habe das Script modifiziert und erweitert.

              Dies liest nun alle 5 Minuten die wichtigsten Daten von einem Fronius Symo mit Smart Meter.

              Bei Verwendung einfach nur die IP Adresse anpassen.

              Hier der Code:

              ! var urlInverter = 'http://192.168.1.123/solar_api/v1/GetInverterRealtimeData.cgi?Scope=System'; var urlMeter = 'http://192.168.1.123/solar_api/v1/GetMeterRealtimeData.cgi?Scope=System'; ! var path = "froniusSymo."; var pathInverter = "inverter."; var pathMeter = "meter."; ! var idInverterCode = path + pathInverter + "Code"; var idPAC = path + pathInverter + "PAC"; var idDAY_ENERGY = path + pathInverter + "DAY_ENERGY"; var idYEAR_ENERGY = path + pathInverter + "YEAR_ENERGY"; var idTOTAL_ENERGY = path + pathInverter + "TOTAL_ENERGY"; var idMeterCode = path + pathMeter + "Code"; var idPowerRealPsum = path + pathMeter + "PowerReal_P_Sum"; var idPowerRealPphase1 = path + pathMeter + "PowerReal_P_Phase_1"; var idPowerRealPphase2 = path + pathMeter + "PowerReal_P_Phase_2"; var idPowerRealPphase3 = path + pathMeter + "PowerReal_P_Phase_3"; var idCurrentAcPhase1 = path + pathMeter + "Current_AC_Phase_1"; var idCurrentAcPhase2 = path + pathMeter + "Current_AC_Phase_2"; var idCurrentAcPhase3 = path + pathMeter + "Current_AC_Phase_3"; var idVoltageAcPhase1 = path + pathMeter + "Voltage_AC_Phase_1"; var idVoltageAcPhase2 = path + pathMeter + "Voltage_AC_Phase_2"; var idVoltageAcPhase3 = path + pathMeter + "Voltage_AC_Phase_3"; var idEnergyRealWacSumProd = path + pathMeter + "EnergyReal_WAC_Sum_Produced"; var idEnergyRealWacSumCons = path + pathMeter + "EnergyReal_WAC_Sum_Consumed"; ! createState(idInverterCode, 0, { name: 'Inverter request status code', desc: 'Indicates if the request went OK or gives a hint about what went wrong', type: 'number', role: 'value' }); ! createState(idPAC, 0, { name: 'Inverter AC power', desc: 'Actual AC power', type: 'number', role: 'value', unit: 'W' }); ! createState(idDAY_ENERGY, 0, { name: 'Inverter day energy', desc: 'Energy generated on current day', type: 'number', role: 'value', unit: 'Wh' }); ! createState(idYEAR_ENERGY, 0, { name: 'Inverter year energy', desc: 'Energy generated in current year', type: 'number', role: 'value', unit: 'Wh' }); ! createState(idTOTAL_ENERGY, 0, { name: 'Inverter overall energy', desc: 'Energy generated overall', type: 'number', role: 'value', unit: 'Wh' }); ! createState(idMeterCode, 0, { name: 'Meter request status code', desc: 'Indicates if the request went OK or gives a hint about what went wrong', type: 'number', role: 'value' }); ! createState(idPowerRealPsum, 0, { name: 'Meter consumption', desc: 'Actual consumption of power', type: 'number', role: 'value', unit: 'W' }); ! createState(idPowerRealPphase1, 0, { name: 'Meter consumption on phase 1', desc: 'Actual consumption of power on phase 1', type: 'number', role: 'value', unit: 'W' }); ! createState(idPowerRealPphase2, 0, { name: 'Meter consumption on phase 2', desc: 'Actual consumption of power on phase 2', type: 'number', role: 'value', unit: 'W' }); ! createState(idPowerRealPphase3, 0, { name: 'Meter consumption on phase 3', desc: 'Actual consumption of power on phase 3', type: 'number', role: 'value', unit: 'W' }); ! createState(idCurrentAcPhase1, 0, { name: 'Meter current on phase 1', desc: 'Actual AC current on phase 1', type: 'number', role: 'value', unit: 'A' }); ! createState(idCurrentAcPhase2, 0, { name: 'Meter current on phase 2', desc: 'Actual AC current on phase 2', type: 'number', role: 'value', unit: 'A' }); createState(idCurrentAcPhase3, 0, { name: 'Meter current on phase 3', desc: 'Actual AC current on phase 3', type: 'number', role: 'value', unit: 'A' }); ! createState(idVoltageAcPhase1, 0, { name: 'Meter voltage on phase 1', desc: 'Actual AC voltage on phase 1', type: 'number', role: 'value', unit: 'V' }); ! createState(idVoltageAcPhase2, 0, { name: 'Meter voltage on phase 2', desc: 'Actual AC voltage on phase 2', type: 'number', role: 'value', unit: 'V' }); createState(idVoltageAcPhase3, 0, { name: 'Meter voltage on phase 3', desc: 'Actual AC voltage on phase 3', type: 'number', role: 'value', unit: 'V' }); ! createState(idEnergyRealWacSumProd, 0, { name: 'Meter sum of energy produced', desc: 'Sum of real energy produced', type: 'number', role: 'value', unit: 'Wh' }); ! createState(idEnergyRealWacSumCons, 0, { name: 'Meter sum of energy consumed', desc: 'Sum of real energy consumed', type: 'number', role: 'value', unit: 'Wh' }); ! var request = require("request"); var myJson = {}; ! function parseJson(text) { if (text === "") return {}; try { json = JSON.parse(text); } catch (ex) { json = {}; } if(!json) json = {}; return json; } ! function readJson(url, callback) { request(url, function (err, state, body){ if (body) { var json = parseJson(body); callback(null, json); } else { var error = "(" + err + ") ERROR request from: " + url; log(error, "warn"); callback(error, null); } }); } ! function main() { readJson(urlInverter, function(err,json) { if(!err) { myJson = json; log("Code: " + myJson.Head.Status.Code,"info"); log("PAC: " + myJson.Body.Data.PAC.Values[1],"info"); log("DAY_ENERGY: " + myJson.Body.Data.DAY_ENERGY.Values[1],"info"); log("YEAR_ENERGY: " + myJson.Body.Data.YEAR_ENERGY.Values[1],"info"); log("TOTAL_ENERGY: " + myJson.Body.Data.TOTAL_ENERGY.Values[1],"info"); setState(idInverterCode ,parseInt(myJson.Head.Status.Code)); setState(idPAC ,parseInt(myJson.Body.Data.PAC.Values[1])); setState(idDAY_ENERGY ,parseInt(myJson.Body.Data.DAY_ENERGY.Values[1])); setState(idYEAR_ENERGY ,parseInt(myJson.Body.Data.YEAR_ENERGY.Values[1])); setState(idTOTAL_ENERGY ,parseInt(myJson.Body.Data.TOTAL_ENERGY.Values[1])); } else { log("Error reading JSON from Fronius inverter. No data!","warn"); myJson = {}; } }); readJson(urlMeter, function(err,json) { if(!err) { myJson = json; log("Code: " + myJson.Head.Status.Code,"info"); log("PowerReal_P_Sum: " + myJson.Body.Data[0].PowerReal_P_Sum,"info"); log("PowerReal_P_Phase_1: " + myJson.Body.Data[0].PowerReal_P_Phase_1,"info"); log("PowerReal_P_Phase_2: " + myJson.Body.Data[0].PowerReal_P_Phase_2,"info"); log("PowerReal_P_Phase_3: " + myJson.Body.Data[0].PowerReal_P_Phase_3,"info"); log("Current_AC_Phase_1: " + myJson.Body.Data[0].Current_AC_Phase_1,"info"); log("Current_AC_Phase_2: " + myJson.Body.Data[0].Current_AC_Phase_2,"info"); log("Current_AC_Phase_3: " + myJson.Body.Data[0].Current_AC_Phase_3,"info"); log("Voltage_AC_Phase_1: " + myJson.Body.Data[0].Voltage_AC_Phase_1,"info"); log("Voltage_AC_Phase_2: " + myJson.Body.Data[0].Voltage_AC_Phase_2,"info"); log("Voltage_AC_Phase_3: " + myJson.Body.Data[0].Voltage_AC_Phase_3,"info"); log("EnergyReal_WAC_Sum_Produced: " + myJson.Body.Data[0].EnergyReal_WAC_Sum_Produced,"info"); log("EnergyReal_WAC_Sum_Consumed: " + myJson.Body.Data[0].EnergyReal_WAC_Sum_Consumed,"info"); setState(idMeterCode ,parseInt(myJson.Head.Status.Code)); setState(idPowerRealPsum ,parseInt(myJson.Body.Data[0].PowerReal_P_Sum)); setState(idPowerRealPphase1 ,parseInt(myJson.Body.Data[0].PowerReal_P_Phase_1)); setState(idPowerRealPphase2 ,parseInt(myJson.Body.Data[0].PowerReal_P_Phase_2)); setState(idPowerRealPphase3 ,parseInt(myJson.Body.Data[0].PowerReal_P_Phase_3)); setState(idCurrentAcPhase1 ,parseInt(myJson.Body.Data[0].Current_AC_Phase_1)); setState(idCurrentAcPhase2 ,parseInt(myJson.Body.Data[0].Current_AC_Phase_2)); setState(idCurrentAcPhase3 ,parseInt(myJson.Body.Data[0].Current_AC_Phase_3)); setState(idVoltageAcPhase1 ,parseInt(myJson.Body.Data[0].Voltage_AC_Phase_1)); setState(idVoltageAcPhase2 ,parseInt(myJson.Body.Data[0].Voltage_AC_Phase_2)); setState(idVoltageAcPhase3 ,parseInt(myJson.Body.Data[0].Voltage_AC_Phase_3)); setState(idEnergyRealWacSumProd ,parseInt(myJson.Body.Data[0].EnergyReal_WAC_Sum_Produced)); setState(idEnergyRealWacSumCons ,parseInt(myJson.Body.Data[0].EnergyReal_WAC_Sum_Consumed)); } else { log("Error reading JSON from Fronius Smart Meter. No data!","warn"); myJson = {}; } }); } ! schedule("*/5 * * * *", function () { // poll every 5 minutes main(); }); ! // poll values at startup setTimeout(main,500); !

              1 Antwort Letzte Antwort
              0
              • painkillerdeP Offline
                painkillerdeP Offline
                painkillerde
                schrieb am zuletzt editiert von
                #9

                @eastcoast:

                Hallo,

                ich habe das Script modifiziert und erweitert.

                Dies liest nun alle 5 Minuten die wichtigsten Daten von einem Fronius Symo mit Smart Meter.

                Bei Verwendung einfach nur die IP Adresse anpassen.

                Hier der Code:

                ! var urlInverter = 'http://192.168.1.123/solar_api/v1/GetInverterRealtimeData.cgi?Scope=System'; var urlMeter = 'http://192.168.1.123/solar_api/v1/GetMeterRealtimeData.cgi?Scope=System'; ! var path = "froniusSymo."; var pathInverter = "inverter."; var pathMeter = "meter."; ! var idInverterCode = path + pathInverter + "Code"; var idPAC = path + pathInverter + "PAC"; var idDAY_ENERGY = path + pathInverter + "DAY_ENERGY"; var idYEAR_ENERGY = path + pathInverter + "YEAR_ENERGY"; var idTOTAL_ENERGY = path + pathInverter + "TOTAL_ENERGY"; var idMeterCode = path + pathMeter + "Code"; var idPowerRealPsum = path + pathMeter + "PowerReal_P_Sum"; var idPowerRealPphase1 = path + pathMeter + "PowerReal_P_Phase_1"; var idPowerRealPphase2 = path + pathMeter + "PowerReal_P_Phase_2"; var idPowerRealPphase3 = path + pathMeter + "PowerReal_P_Phase_3"; var idCurrentAcPhase1 = path + pathMeter + "Current_AC_Phase_1"; var idCurrentAcPhase2 = path + pathMeter + "Current_AC_Phase_2"; var idCurrentAcPhase3 = path + pathMeter + "Current_AC_Phase_3"; var idVoltageAcPhase1 = path + pathMeter + "Voltage_AC_Phase_1"; var idVoltageAcPhase2 = path + pathMeter + "Voltage_AC_Phase_2"; var idVoltageAcPhase3 = path + pathMeter + "Voltage_AC_Phase_3"; var idEnergyRealWacSumProd = path + pathMeter + "EnergyReal_WAC_Sum_Produced"; var idEnergyRealWacSumCons = path + pathMeter + "EnergyReal_WAC_Sum_Consumed"; ! createState(idInverterCode, 0, { name: 'Inverter request status code', desc: 'Indicates if the request went OK or gives a hint about what went wrong', type: 'number', role: 'value' }); ! createState(idPAC, 0, { name: 'Inverter AC power', desc: 'Actual AC power', type: 'number', role: 'value', unit: 'W' }); ! createState(idDAY_ENERGY, 0, { name: 'Inverter day energy', desc: 'Energy generated on current day', type: 'number', role: 'value', unit: 'Wh' }); ! createState(idYEAR_ENERGY, 0, { name: 'Inverter year energy', desc: 'Energy generated in current year', type: 'number', role: 'value', unit: 'Wh' }); ! createState(idTOTAL_ENERGY, 0, { name: 'Inverter overall energy', desc: 'Energy generated overall', type: 'number', role: 'value', unit: 'Wh' }); ! createState(idMeterCode, 0, { name: 'Meter request status code', desc: 'Indicates if the request went OK or gives a hint about what went wrong', type: 'number', role: 'value' }); ! createState(idPowerRealPsum, 0, { name: 'Meter consumption', desc: 'Actual consumption of power', type: 'number', role: 'value', unit: 'W' }); ! createState(idPowerRealPphase1, 0, { name: 'Meter consumption on phase 1', desc: 'Actual consumption of power on phase 1', type: 'number', role: 'value', unit: 'W' }); ! createState(idPowerRealPphase2, 0, { name: 'Meter consumption on phase 2', desc: 'Actual consumption of power on phase 2', type: 'number', role: 'value', unit: 'W' }); ! createState(idPowerRealPphase3, 0, { name: 'Meter consumption on phase 3', desc: 'Actual consumption of power on phase 3', type: 'number', role: 'value', unit: 'W' }); ! createState(idCurrentAcPhase1, 0, { name: 'Meter current on phase 1', desc: 'Actual AC current on phase 1', type: 'number', role: 'value', unit: 'A' }); ! createState(idCurrentAcPhase2, 0, { name: 'Meter current on phase 2', desc: 'Actual AC current on phase 2', type: 'number', role: 'value', unit: 'A' }); createState(idCurrentAcPhase3, 0, { name: 'Meter current on phase 3', desc: 'Actual AC current on phase 3', type: 'number', role: 'value', unit: 'A' }); ! createState(idVoltageAcPhase1, 0, { name: 'Meter voltage on phase 1', desc: 'Actual AC voltage on phase 1', type: 'number', role: 'value', unit: 'V' }); ! createState(idVoltageAcPhase2, 0, { name: 'Meter voltage on phase 2', desc: 'Actual AC voltage on phase 2', type: 'number', role: 'value', unit: 'V' }); createState(idVoltageAcPhase3, 0, { name: 'Meter voltage on phase 3', desc: 'Actual AC voltage on phase 3', type: 'number', role: 'value', unit: 'V' }); ! createState(idEnergyRealWacSumProd, 0, { name: 'Meter sum of energy produced', desc: 'Sum of real energy produced', type: 'number', role: 'value', unit: 'Wh' }); ! createState(idEnergyRealWacSumCons, 0, { name: 'Meter sum of energy consumed', desc: 'Sum of real energy consumed', type: 'number', role: 'value', unit: 'Wh' }); ! var request = require("request"); var myJson = {}; ! function parseJson(text) { if (text === "") return {}; try { json = JSON.parse(text); } catch (ex) { json = {}; } if(!json) json = {}; return json; } ! function readJson(url, callback) { request(url, function (err, state, body){ if (body) { var json = parseJson(body); callback(null, json); } else { var error = "(" + err + ") ERROR request from: " + url; log(error, "warn"); callback(error, null); } }); } ! function main() { readJson(urlInverter, function(err,json) { if(!err) { myJson = json; log("Code: " + myJson.Head.Status.Code,"info"); log("PAC: " + myJson.Body.Data.PAC.Values[1],"info"); log("DAY_ENERGY: " + myJson.Body.Data.DAY_ENERGY.Values[1],"info"); log("YEAR_ENERGY: " + myJson.Body.Data.YEAR_ENERGY.Values[1],"info"); log("TOTAL_ENERGY: " + myJson.Body.Data.TOTAL_ENERGY.Values[1],"info"); setState(idInverterCode ,parseInt(myJson.Head.Status.Code)); setState(idPAC ,parseInt(myJson.Body.Data.PAC.Values[1])); setState(idDAY_ENERGY ,parseInt(myJson.Body.Data.DAY_ENERGY.Values[1])); setState(idYEAR_ENERGY ,parseInt(myJson.Body.Data.YEAR_ENERGY.Values[1])); setState(idTOTAL_ENERGY ,parseInt(myJson.Body.Data.TOTAL_ENERGY.Values[1])); } else { log("Error reading JSON from Fronius inverter. No data!","warn"); myJson = {}; } }); readJson(urlMeter, function(err,json) { if(!err) { myJson = json; log("Code: " + myJson.Head.Status.Code,"info"); log("PowerReal_P_Sum: " + myJson.Body.Data[0].PowerReal_P_Sum,"info"); log("PowerReal_P_Phase_1: " + myJson.Body.Data[0].PowerReal_P_Phase_1,"info"); log("PowerReal_P_Phase_2: " + myJson.Body.Data[0].PowerReal_P_Phase_2,"info"); log("PowerReal_P_Phase_3: " + myJson.Body.Data[0].PowerReal_P_Phase_3,"info"); log("Current_AC_Phase_1: " + myJson.Body.Data[0].Current_AC_Phase_1,"info"); log("Current_AC_Phase_2: " + myJson.Body.Data[0].Current_AC_Phase_2,"info"); log("Current_AC_Phase_3: " + myJson.Body.Data[0].Current_AC_Phase_3,"info"); log("Voltage_AC_Phase_1: " + myJson.Body.Data[0].Voltage_AC_Phase_1,"info"); log("Voltage_AC_Phase_2: " + myJson.Body.Data[0].Voltage_AC_Phase_2,"info"); log("Voltage_AC_Phase_3: " + myJson.Body.Data[0].Voltage_AC_Phase_3,"info"); log("EnergyReal_WAC_Sum_Produced: " + myJson.Body.Data[0].EnergyReal_WAC_Sum_Produced,"info"); log("EnergyReal_WAC_Sum_Consumed: " + myJson.Body.Data[0].EnergyReal_WAC_Sum_Consumed,"info"); setState(idMeterCode ,parseInt(myJson.Head.Status.Code)); setState(idPowerRealPsum ,parseInt(myJson.Body.Data[0].PowerReal_P_Sum)); setState(idPowerRealPphase1 ,parseInt(myJson.Body.Data[0].PowerReal_P_Phase_1)); setState(idPowerRealPphase2 ,parseInt(myJson.Body.Data[0].PowerReal_P_Phase_2)); setState(idPowerRealPphase3 ,parseInt(myJson.Body.Data[0].PowerReal_P_Phase_3)); setState(idCurrentAcPhase1 ,parseInt(myJson.Body.Data[0].Current_AC_Phase_1)); setState(idCurrentAcPhase2 ,parseInt(myJson.Body.Data[0].Current_AC_Phase_2)); setState(idCurrentAcPhase3 ,parseInt(myJson.Body.Data[0].Current_AC_Phase_3)); setState(idVoltageAcPhase1 ,parseInt(myJson.Body.Data[0].Voltage_AC_Phase_1)); setState(idVoltageAcPhase2 ,parseInt(myJson.Body.Data[0].Voltage_AC_Phase_2)); setState(idVoltageAcPhase3 ,parseInt(myJson.Body.Data[0].Voltage_AC_Phase_3)); setState(idEnergyRealWacSumProd ,parseInt(myJson.Body.Data[0].EnergyReal_WAC_Sum_Produced)); setState(idEnergyRealWacSumCons ,parseInt(myJson.Body.Data[0].EnergyReal_WAC_Sum_Consumed)); } else { log("Error reading JSON from Fronius Smart Meter. No data!","warn"); myJson = {}; } }); } ! schedule("*/5 * * * *", function () { // poll every 5 minutes main(); }); ! // poll values at startup setTimeout(main,500); ! `

                Hi,

                habe dei Script mit meinem Fronius Symo 7.x probiert aber er hat bei den Meterwerten ein Problem:

                javascript.0 TypeError: Cannot read property 'PowerReal_P_Sum' of undefined at script.js.Fronius.PVBruchsal:217:70 at Request._callback (script.js.Fronius.PVBruchsal:185:13) at Request.self.callback (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:186:22) at emitTwo (events.js:87:13) at Request.emit (events.js:172:7) at Request. (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:1081:10) at emitOne (events.js:77:13) at Request.emit (events.js:169:7) at IncomingMessage. (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:1001:12) at IncomingMessage.g (events.js:260:16)

                Meine json ist allerdings auch nicht so ausführlich wie die des Hybrid.

                PowerReal_P_Sum ist allerdings vorhanden!

                Was könnte das Problem sein?

                {
                	"Head" : {
                		"RequestArguments" : {
                			"DeviceClass" : "Meter",
                			"DeviceId" : "1",
                			"Scope" : "Device"
                		},
                		"Status" : {
                			"Code" : 0,
                			"Reason" : "",
                			"UserMessage" : ""
                		},
                		"Timestamp" : "2017-02-22T12:28:12+01:00"
                	},
                	"Body" : {
                		"Data" : {
                			"Details" : {
                				"Serial" : "n.a.",
                				"Model" : "S0 Meter at inverter 1",
                				"Manufacturer" : "Fronius"
                			},
                			"TimeStamp" : 1487762891,
                			"Enable" : 1,
                			"Visible" : 1,
                			"PowerReal_P_Sum" : -291.238569,
                			"Meter_Location_Current" : 1,
                			"EnergyReal_WAC_Minus_Relative" : 24
                		}
                	}
                }
                

                Danke!

                Grüße Daniel

                ioBroker auf Qnap TS-251A 8GB (Docker), Homamatic CCU2 + ca 50 Geräte (Aktoren, Sender, Sensoren), Alexa Echo, Alexa Echo Dot, Vu+ Duo2, Logitech Harmony Elite, Fronius Wechselrichter, Viessman Heizung + vControl

                <…

                1 Antwort Letzte Antwort
                0
                • paul53P Offline
                  paul53P Offline
                  paul53
                  schrieb am zuletzt editiert von
                  #10

                  @painkillerde:

                  Was könnte das Problem sein? `
                  Dein JSON enthält kein Array, da nur wenige Daten. Bitte ändern:

                  myJson.Body.Data[0].PowerReal_P_Sum --> myJson.Body.Data.PowerReal_P_Sum
                  

                  Alle anderen auskommentieren oder löschen, da nicht vorhanden.

                  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

                  1 Antwort Letzte Antwort
                  0
                  • painkillerdeP Offline
                    painkillerdeP Offline
                    painkillerde
                    schrieb am zuletzt editiert von
                    #11

                    @paul53:

                    @painkillerde:

                    Was könnte das Problem sein? `
                    Dein JSON enthält kein Array, da nur wenige Daten. Bitte ändern:

                    myJson.Body.Data[0].PowerReal_P_Sum --> myJson.Body.Data.PowerReal_P_Sum
                    

                    Alle anderen auskommentieren oder löschen, da nicht vorhanden. `

                    Gerade hatte ichs gefunden ;)

                    aber Danke!!

                    hier dann der fertige Code für alle Fronius Symo Besitzer!!

                    ! ````
                    var urlInverter = 'http://192.168.1.1/solar_api/v1/GetInverterRealtimeData.cgi?Scope=Device&DeviceID=1&DataCollection=CommonInverterData';
                    var urlMeter = 'http://192.168.1.1/solar_api/v1/GetMeterRealtimeData.cgi?Scope=Device&DeviceId=1';
                    ! var path = "froniusSymo.";
                    var pathInverter = "inverter.";
                    var pathMeter = "meter.";
                    ! var idInverterCode = path + pathInverter + "Code";
                    var idPAC = path + pathInverter + "PAC";
                    var idDAY_ENERGY = path + pathInverter + "DAY_ENERGY";
                    var idYEAR_ENERGY = path + pathInverter + "YEAR_ENERGY";
                    var idTOTAL_ENERGY = path + pathInverter + "TOTAL_ENERGY";
                    var idMeterCode = path + pathMeter + "Code";
                    var idPowerRealPsum = path + pathMeter + "PowerReal_P_Sum";
                    ! createState(idInverterCode, 0, {
                    name: 'Inverter request status code',
                    desc: 'Indicates if the request went OK or gives a hint about what went wrong',
                    type: 'number',
                    role: 'value'
                    });
                    ! createState(idPAC, 0, {
                    name: 'Inverter AC power',
                    desc: 'Actual AC power',
                    type: 'number',
                    role: 'value',
                    unit: 'W'
                    });
                    ! createState(idDAY_ENERGY, 0, {
                    name: 'Inverter day energy',
                    desc: 'Energy generated on current day',
                    type: 'number',
                    role: 'value',
                    unit: 'Wh'
                    });
                    ! createState(idYEAR_ENERGY, 0, {
                    name: 'Inverter year energy',
                    desc: 'Energy generated in current year',
                    type: 'number',
                    role: 'value',
                    unit: 'Wh'
                    });
                    ! createState(idTOTAL_ENERGY, 0, {
                    name: 'Inverter overall energy',
                    desc: 'Energy generated overall',
                    type: 'number',
                    role: 'value',
                    unit: 'Wh'
                    });
                    ! createState(idMeterCode, 0, {
                    name: 'Meter request status code',
                    desc: 'Indicates if the request went OK or gives a hint about what went wrong',
                    type: 'number',
                    role: 'value'
                    });
                    ! createState(idPowerRealPsum, 0, {
                    name: 'Meter consumption',
                    desc: 'Actual consumption of power',
                    type: 'number',
                    role: 'value',
                    unit: 'W'
                    });
                    ! var request = require("request");
                    var myJson = {};
                    ! function parseJson(text) {
                    if (text === "") return {};
                    try {
                    json = JSON.parse(text);
                    } catch (ex) {
                    json = {};
                    }
                    if(!json) json = {};
                    return json;
                    }
                    ! function readJson(url, callback) {
                    request(url, function (err, state, body){
                    if (body) {
                    var json = parseJson(body);
                    callback(null, json);
                    } else {
                    var error = "(" + err + ") ERROR request from: " + url;
                    log(error, "warn");
                    callback(error, null);
                    }
                    });
                    }
                    ! function main() {
                    readJson(urlInverter, function(err,json) {
                    if(!err) {
                    myJson = json;
                    log("Code: " + myJson.Head.Status.Code,"info");
                    log("PAC: " + myJson.Body.Data.PAC.Values[1],"info");
                    log("DAY_ENERGY: " + myJson.Body.Data.DAY_ENERGY.Values[1],"info");
                    log("YEAR_ENERGY: " + myJson.Body.Data.YEAR_ENERGY.Values[1],"info");
                    log("TOTAL_ENERGY: " + myJson.Body.Data.TOTAL_ENERGY.Values[1],"info");
                    setState(idInverterCode ,parseInt(myJson.Head.Status.Code));
                    setState(idPAC ,parseInt(myJson.Body.Data.PAC.Values[1]));
                    setState(idDAY_ENERGY ,parseInt(myJson.Body.Data.DAY_ENERGY.Values[1]));
                    setState(idYEAR_ENERGY ,parseInt(myJson.Body.Data.YEAR_ENERGY.Values[1]));
                    setState(idTOTAL_ENERGY ,parseInt(myJson.Body.Data.TOTAL_ENERGY.Values[1]));
                    } else {
                    log("Error reading JSON from Fronius inverter. No data!","warn");
                    myJson = {};
                    }
                    });
                    readJson(urlMeter, function(err,json) {
                    if(!err) {
                    myJson = json;
                    log("Code: " + myJson.Head.Status.Code,"info");
                    log("PowerReal_P_Sum: " + myJson.Body.Data.PowerReal_P_Sum,"info");
                    setState(idMeterCode ,parseInt(myJson.Head.Status.Code));
                    setState(idPowerRealPsum ,parseInt(myJson.Body.Data.PowerReal_P_Sum));
                    } else {
                    log("Error reading JSON from Fronius Smart Meter. No data!","warn");
                    myJson = {};
                    }
                    });
                    }
                    ! schedule("*/5 * * * *", function () { // poll every 5 minutes
                    main();
                    });
                    ! // poll values at startup
                    setTimeout(main,500);

                    Grüße Daniel

                    ioBroker auf Qnap TS-251A 8GB (Docker), Homamatic CCU2 + ca 50 Geräte (Aktoren, Sender, Sensoren), Alexa Echo, Alexa Echo Dot, Vu+ Duo2, Logitech Harmony Elite, Fronius Wechselrichter, Viessman Heizung + vControl

                    <…

                    1 Antwort Letzte Antwort
                    0
                    • M Offline
                      M Offline
                      moebius
                      schrieb am zuletzt editiert von
                      #12

                      Ein flow zum Transfer der Inverterdaten nach InfluxDB

                      ! [
                      ! {
                      ! "id": "2a7e3123.ad03ae",
                      ! "type": "tab",
                      ! "label": "Read fronius"
                      ! },
                      ! {
                      ! "id": "fd6b509c.77443",
                      ! "type": "inject",
                      ! "z": "2a7e3123.ad03ae",
                      ! "name": "Tick",
                      ! "topic": "",
                      ! "payload": "",
                      ! "payloadType": "date",
                      ! "repeat": "",
                      ! "crontab": "*/1 4-22 * * *",
                      ! "once": false,
                      ! "x": 288,
                      ! "y": 212,
                      ! "wires": [
                      ! [
                      ! "22d2788d.d27808"
                      ! ]
                      ! ]
                      ! },
                      ! {
                      ! "id": "22d2788d.d27808",
                      ! "type": "http request",
                      ! "z": "2a7e3123.ad03ae",
                      ! "name": "Read Fronius data",
                      ! "method": "GET",
                      ! "url": "http://192.168.4.181/solar_api/v1/GetIn … verterData",
                      ! "tls": "",
                      ! "x": 473,
                      ! "y": 238,
                      ! "wires": [
                      ! [
                      ! "9686437.4938ec"
                      ! ]
                      ! ]
                      ! },
                      ! {
                      ! "id": "9686437.4938ec",
                      ! "type": "json",
                      ! "z": "2a7e3123.ad03ae",
                      ! "name": "",
                      ! "x": 585,
                      ! "y": 296,
                      ! "wires": [
                      ! [
                      ! "bb4056ca.6f3138"
                      ! ]
                      ! ]
                      ! },
                      ! {
                      ! "id": "bb4056ca.6f3138",
                      ! "type": "switch",
                      ! "z": "2a7e3123.ad03ae",
                      ! "name": "Check Error Code",
                      ! "property": "payload.Body.Data.DeviceStatus.ErrorCode",
                      ! "propertyType": "msg",
                      ! "rules": [
                      ! {
                      ! "t": "eq",
                      ! "v": "0",
                      ! "vt": "num"
                      ! }
                      ! ],
                      ! "checkall": "true",
                      ! "outputs": 1,
                      ! "x": 680,
                      ! "y": 350,
                      ! "wires": [
                      ! [
                      ! "29bf8fb4.dba5"
                      ! ]
                      ! ]
                      ! },
                      ! {
                      ! "id": "c2c27a4e.27dc28",
                      ! "type": "catch",
                      ! "z": "2a7e3123.ad03ae",
                      ! "name": "",
                      ! "scope": null,
                      ! "x": 315,
                      ! "y": 387,
                      ! "wires": [
                      ! []
                      ! ]
                      ! },
                      ! {
                      ! "id": "29bf8fb4.dba5",
                      ! "type": "function",
                      ! "z": "2a7e3123.ad03ae",
                      ! "name": "Split attributes",
                      ! "func": "\nvar newmsg = {};\nnewmsg.topic = msg.topic;\nnewmsg.payload = {};\n\nvar src = msg.payload.Body.Data;\nfor (var key in src) {\n newmsg.payload[key] = src[key]\n}\nreturn newmsg;",
                      ! "outputs": 1,
                      ! "noerr": 0,
                      ! "x": 808,
                      ! "y": 414,
                      ! "wires": [
                      ! [
                      ! "dbda39b3.e5aa38"
                      ! ]
                      ! ]
                      ! },
                      ! {
                      ! "id": "dbda39b3.e5aa38",
                      ! "type": "function",
                      ! "z": "2a7e3123.ad03ae",
                      ! "name": "Prepare for influx",
                      ! "func": "\nvar newmsg = {};\nnewmsg.topic = msg.topic;\nvar vals = {};\n\nvar src = msg.payload;\nfor (var key in src) {\n if(typeof src[key].Value != "undefined")\n vals[key] = src[key].Value\n}\nnewmsg.payload = vals\nreturn newmsg;",
                      ! "outputs": 1,
                      ! "noerr": 0,
                      ! "x": 914,
                      ! "y": 489,
                      ! "wires": [
                      ! [
                      ! "aff49a5e.3ee358"
                      ! ]
                      ! ]
                      ! },
                      ! {
                      ! "id": "aff49a5e.3ee358",
                      ! "type": "influxdb out",
                      ! "z": "2a7e3123.ad03ae",
                      ! "influxdb": "d898da53.9e89f8",
                      ! "name": "",
                      ! "measurement": "pv",
                      ! "x": 1087,
                      ! "y": 559,
                      ! "wires": []
                      ! },
                      ! {
                      ! "id": "d898da53.9e89f8",
                      ! "type": "influxdb",
                      ! "z": "",
                      ! "hostname": "127.0.0.1",
                      ! "port": "8086",
                      ! "protocol": "http",
                      ! "database": "infra",
                      ! "name": ""
                      ! }
                      ! ]
                      1803_clipboard08.jpg

                      1 Antwort Letzte Antwort
                      0
                      • ldittmarL Offline
                        ldittmarL Offline
                        ldittmar
                        Developer
                        schrieb am zuletzt editiert von
                        #13

                        Hallo,

                        ich bin gerade dabei den Adapter für den Fronius Wechselrichter zu machen und hätte z.Z. eine Frage: kann mir jemand sagen was "EnergyReal_WAC_Minus_Relative" sein soll? Und am Besten mit Einheit :-) Danke!!

                        Grüße,

                        ldittmar

                        1 Antwort Letzte Antwort
                        -1
                        Antworten
                        • In einem neuen Thema antworten
                        Anmelden zum Antworten
                        • Älteste zuerst
                        • Neuste zuerst
                        • Meiste Stimmen


                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        565

                        Online

                        32.5k

                        Benutzer

                        81.7k

                        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