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. JavaScript
  5. Übergabe von Werten von Smartmeter an cFos Wallbox

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    16
    1
    280

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    4.7k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.3k

Übergabe von Werten von Smartmeter an cFos Wallbox

Scheduled Pinned Locked Moved JavaScript
42 Posts 11 Posters 10.0k Views 11 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.
  • M Mr. Moose

    Hallo,
    ich versuche gerade den momentanen Energieverbrauch, den ich per Smartmeter-Adapter aus meinem Stromzähler auslese, der cFos Wallbox zu übergeben.
    Laut der cFos Seite unter "HTTP Zähler und Wallboxen" funktioniert das per HTTP POST.
    Getestet haben ich das mit https://reqbin.com/ und kann damit auch Werte an die Wallbox senden.
    Ich habe bisher alles mit Blockly gemacht. HTTP POST geht aber wohl nur in Javascript. Also habe ich mir da mal was zusammengesucht. Dies funktoniert aber nicht und ich habe keinen Plan, was ich da überhaupt mache.

    on({id: 'smartmeter.0.1-0:16_7_0__255.value', change: 'any'}, function (obj) {
    var request = require('request');
    request.post({
        url: 'http://10.10.10.30/cnf?cmd=set_ajax_meter&dev_id=M5',
        form:   { "import_vah" : 10000 , "power_va": 500 } 
    }, function(error, response, body) {
        if (error) log(error, 'error');   
    });
    });
    

    Die Werte für import_vah und power_va müssen natürlich später noch mit den Variablen aus dem Smartmeter-Adapter verknüpft werden. Das wird die nächste Baustelle, aber erst mal soll die Übertragung funktionieren.

    XenonX Offline
    XenonX Offline
    Xenon
    Forum Testing Developer
    wrote on last edited by Xenon
    #2

    @mr-moose probiere mal

    const http = require("http");
    const path = `http://10.10.10.30/cnf?cmd=set_ajax_meter&dev_id=M5`;
    const result = http.get(path);
    
    console.log(result);
    

    alternativ das hier: (Dafür musst du aber das Modul "xmlhttprequest" in deiner Javascript Instanz eintragen!!!)

    
    var xmlhttprequest = require("xmlhttprequest").XMLHttpRequest;
    
    let url = "http://10.10.10.30/cnf?cmd=set_ajax_meter&dev_id=M5";
    
    let xhr = new xmlhttprequest();
    xhr.open("POST", url);
    
    xhr.setRequestHeader("Content-Type", "application/json");
    
    xhr.onreadystatechange = () => {
       if (xhr.readyState === 4) {
          console.log(xhr.status);
          console.log(xhr.responseText);
       }};
    
    var data = '{"import_vah" : 10000 , "power_va": 500}';
    
    xhr.send(data);
    

    steht nun was in der Console log Ausgabe bei dir?

    wenn euch mein Beitrag geholfen hat, bewertet ihn bitte unten rechts :)

    M 1 Reply Last reply
    1
    • XenonX Xenon

      @mr-moose probiere mal

      const http = require("http");
      const path = `http://10.10.10.30/cnf?cmd=set_ajax_meter&dev_id=M5`;
      const result = http.get(path);
      
      console.log(result);
      

      alternativ das hier: (Dafür musst du aber das Modul "xmlhttprequest" in deiner Javascript Instanz eintragen!!!)

      
      var xmlhttprequest = require("xmlhttprequest").XMLHttpRequest;
      
      let url = "http://10.10.10.30/cnf?cmd=set_ajax_meter&dev_id=M5";
      
      let xhr = new xmlhttprequest();
      xhr.open("POST", url);
      
      xhr.setRequestHeader("Content-Type", "application/json");
      
      xhr.onreadystatechange = () => {
         if (xhr.readyState === 4) {
            console.log(xhr.status);
            console.log(xhr.responseText);
         }};
      
      var data = '{"import_vah" : 10000 , "power_va": 500}';
      
      xhr.send(data);
      

      steht nun was in der Console log Ausgabe bei dir?

      M Offline
      M Offline
      Mr. Moose
      wrote on last edited by
      #3

      @xenon Danke

      @mr-moose probiere mal

      const http = require("http");
      const path = `http://10.10.10.30/cnf?cmd=set_ajax_meter&dev_id=M5`;
      const result = http.get(path);
      
      console.log(result);
      

      Im Log kommt dann:

      javascript.0 (25313) script.js.PV_/_Strom.Zähler_an_Wallbox: {'_events':{},'_eventsCount':1,'_maxListeners':100,'output':['GET /cnf?cmd=set_ajax_meter&dev_id=M5 HTTP/1.1\r\nHost: 10.10.10.30\r\nConnection: close\r\n\r\n'],'outputEncodings':['latin1'],'outputCallbacks':[null],'outputSize':88,'writable':true,'_last':true,'chunkedEncoding':false,'shouldKeepAlive':false,'useChunkedEncodingByDefault':false,'sendDate':false,'_removedConnection':false,'_removedContLen':false,'_removedTE':false,'_contentLength':0,'_hasBody':true,'_trailer':'','finished':true,'_headerSent':true,'socket':null,'connection':null,'_header':'GET /cnf?cmd=set_ajax_meter&dev_id=M5 HTTP/1.1\r\nHost: 10.10.10.30\r\nConnection: close\r\n\r\n','agent':{'_events':{},'_eventsCount':1,'defaultPort':80,'protocol':'http:','options':{'path':null},'requests':{},'sockets':{'10.10.10.30:80:':[{'connecting':true,'_hadError':false,'_handle':{'reading':false,'onconnection':null},'_parent':null,'_host':null,'_readableState':{'objectMode':false,'highWaterMark':16384,'buffer':{'head':null,'tail':null,'length':0},'length':0,'pipes':null,'pipesCount':0,'flowing':null,'ended':false,'endEmitted':false,'reading':false,'sync':true,'needReadable':false,'emittedReadable':false,'readableListening':false,'resumeScheduled':false,'paused':true,'emitClose':false,'autoDestroy':false,'destroyed':false,'defaultEncoding':'utf8','awaitDrain':0,'readingMore':false,'decoder':null,'encoding':null},'readable':false,'_events':{},'_eventsCount':5,'_maxListeners':100,'_writableState':{'objectMode':false,'highWaterMark':16384,'finalCalled':false,'needDrain':false,'ending':false,'ended':false,'finished':false,'destroyed':false,'decodeStrings':false,'defaultEncoding':'utf8','length':0,'writing':false,'corked':0,'sync':true,'bufferProcessing':false,'writecb':null,'writelen':0,'bufferedRequest':null,'lastBufferedRequest':null,'pendingcb':0,'prefinished':false,'errorEmitted':false,'emitClose':false,'autoDestroy':false,'bufferedRequestCount':0,'corkedRequestsFree':{'next':null,'entry':null}},'writable':true,'allowHalfOpen':false,'_sockname':null,'_pendingData':null,'_pendingEncoding':'','server':null,'_server':null}]},'freeSockets':{},'keepAliveMsecs':1000,'keepAlive':false,'maxSockets':null,'maxFreeSockets':256},'method':'GET','path':'/cnf?cmd=set_ajax_meter&dev_id=M5','_ended':false,'res':null,'timeoutCb':null,'upgradeOrConnect':false,'parser':null,'maxHeadersCount':null}
      

      alternativ das hier: (Dafür musst du aber das Modul "xmlhttprequest" in deiner Javascript Instanz eintragen!!!)

      
      var xmlhttprequest = require("xmlhttprequest").XMLHttpRequest;
      
      let url = "http://10.10.10.30/cnf?cmd=set_ajax_meter&dev_id=M5";
      
      let xhr = new xmlhttprequest();
      xhr.open("POST", url);
      
      xhr.setRequestHeader("Content-Type", "application/json");
      
      xhr.onreadystatechange = () => {
         if (xhr.readyState === 4) {
            console.log(xhr.status);
            console.log(xhr.responseText);
         }};
      
      var data = '{"import_vah" : 10000 , "power_va": 500}';
      
      xhr.send(data);
      

      steht nun was in der Console log Ausgabe bei dir?

      xmlhttprequest habe ich oben bei "zusätzliche NPM-Module" eingetragen.
      Im Log kommt:

      08:34:54.732	info	javascript.0 (18929) script.js.PV_/_Strom.Zähler_an_Wallbox: 401
      08:34:54.733	info	javascript.0 (18929) script.js.PV_/_Strom.Zähler_an_Wallbox: Unauthorized
      
      XenonX 1 Reply Last reply
      0
      • M Mr. Moose

        @xenon Danke

        @mr-moose probiere mal

        const http = require("http");
        const path = `http://10.10.10.30/cnf?cmd=set_ajax_meter&dev_id=M5`;
        const result = http.get(path);
        
        console.log(result);
        

        Im Log kommt dann:

        javascript.0 (25313) script.js.PV_/_Strom.Zähler_an_Wallbox: {'_events':{},'_eventsCount':1,'_maxListeners':100,'output':['GET /cnf?cmd=set_ajax_meter&dev_id=M5 HTTP/1.1\r\nHost: 10.10.10.30\r\nConnection: close\r\n\r\n'],'outputEncodings':['latin1'],'outputCallbacks':[null],'outputSize':88,'writable':true,'_last':true,'chunkedEncoding':false,'shouldKeepAlive':false,'useChunkedEncodingByDefault':false,'sendDate':false,'_removedConnection':false,'_removedContLen':false,'_removedTE':false,'_contentLength':0,'_hasBody':true,'_trailer':'','finished':true,'_headerSent':true,'socket':null,'connection':null,'_header':'GET /cnf?cmd=set_ajax_meter&dev_id=M5 HTTP/1.1\r\nHost: 10.10.10.30\r\nConnection: close\r\n\r\n','agent':{'_events':{},'_eventsCount':1,'defaultPort':80,'protocol':'http:','options':{'path':null},'requests':{},'sockets':{'10.10.10.30:80:':[{'connecting':true,'_hadError':false,'_handle':{'reading':false,'onconnection':null},'_parent':null,'_host':null,'_readableState':{'objectMode':false,'highWaterMark':16384,'buffer':{'head':null,'tail':null,'length':0},'length':0,'pipes':null,'pipesCount':0,'flowing':null,'ended':false,'endEmitted':false,'reading':false,'sync':true,'needReadable':false,'emittedReadable':false,'readableListening':false,'resumeScheduled':false,'paused':true,'emitClose':false,'autoDestroy':false,'destroyed':false,'defaultEncoding':'utf8','awaitDrain':0,'readingMore':false,'decoder':null,'encoding':null},'readable':false,'_events':{},'_eventsCount':5,'_maxListeners':100,'_writableState':{'objectMode':false,'highWaterMark':16384,'finalCalled':false,'needDrain':false,'ending':false,'ended':false,'finished':false,'destroyed':false,'decodeStrings':false,'defaultEncoding':'utf8','length':0,'writing':false,'corked':0,'sync':true,'bufferProcessing':false,'writecb':null,'writelen':0,'bufferedRequest':null,'lastBufferedRequest':null,'pendingcb':0,'prefinished':false,'errorEmitted':false,'emitClose':false,'autoDestroy':false,'bufferedRequestCount':0,'corkedRequestsFree':{'next':null,'entry':null}},'writable':true,'allowHalfOpen':false,'_sockname':null,'_pendingData':null,'_pendingEncoding':'','server':null,'_server':null}]},'freeSockets':{},'keepAliveMsecs':1000,'keepAlive':false,'maxSockets':null,'maxFreeSockets':256},'method':'GET','path':'/cnf?cmd=set_ajax_meter&dev_id=M5','_ended':false,'res':null,'timeoutCb':null,'upgradeOrConnect':false,'parser':null,'maxHeadersCount':null}
        

        alternativ das hier: (Dafür musst du aber das Modul "xmlhttprequest" in deiner Javascript Instanz eintragen!!!)

        
        var xmlhttprequest = require("xmlhttprequest").XMLHttpRequest;
        
        let url = "http://10.10.10.30/cnf?cmd=set_ajax_meter&dev_id=M5";
        
        let xhr = new xmlhttprequest();
        xhr.open("POST", url);
        
        xhr.setRequestHeader("Content-Type", "application/json");
        
        xhr.onreadystatechange = () => {
           if (xhr.readyState === 4) {
              console.log(xhr.status);
              console.log(xhr.responseText);
           }};
        
        var data = '{"import_vah" : 10000 , "power_va": 500}';
        
        xhr.send(data);
        

        steht nun was in der Console log Ausgabe bei dir?

        xmlhttprequest habe ich oben bei "zusätzliche NPM-Module" eingetragen.
        Im Log kommt:

        08:34:54.732	info	javascript.0 (18929) script.js.PV_/_Strom.Zähler_an_Wallbox: 401
        08:34:54.733	info	javascript.0 (18929) script.js.PV_/_Strom.Zähler_an_Wallbox: Unauthorized
        
        XenonX Offline
        XenonX Offline
        Xenon
        Forum Testing Developer
        wrote on last edited by Xenon
        #4

        @mr-moose

        beim xml wird auch post gesetzt, also will er wahrscheinlich einen token, passwort oder ähnliches? Du kannst doch bei Reqbin auch Code ausgeben lassen wenn ich da richtig bin ?

        wenn euch mein Beitrag geholfen hat, bewertet ihn bitte unten rechts :)

        M 1 Reply Last reply
        1
        • XenonX Xenon

          @mr-moose

          beim xml wird auch post gesetzt, also will er wahrscheinlich einen token, passwort oder ähnliches? Du kannst doch bei Reqbin auch Code ausgeben lassen wenn ich da richtig bin ?

          M Offline
          M Offline
          Mr. Moose
          wrote on last edited by
          #5

          @xenon
          Mit reqbin sende ich ohne Authorization. Wenn ich dort den Javascript/AJAX exportiere erhalte ich das:

          var url = "http://10.10.10.30/cnf?cmd=set_ajax_meter&dev_id=M5";
          
          var xhr = new XMLHttpRequest();
          xhr.open("POST", url);
          
          xhr.setRequestHeader("Content-Type", "application/json");
          
          xhr.onreadystatechange = function () {
             if (xhr.readyState === 4) {
                console.log(xhr.status);
                console.log(xhr.responseText);
             }};
          
          var data = `{ 
          
             "import_vah": 7489627.7,
             "power_va": 416.8
          }`;
          
          xhr.send(data);
          

          Im Log erscheinen folgende Fehler:

          javascript.0	2021-07-09 12:14:42.013	error	(22767) at processImmediate (timers.js:658:5)
          javascript.0	2021-07-09 12:14:42.012	error	(22767) at tryOnImmediate (timers.js:676:5)
          javascript.0	2021-07-09 12:14:42.012	error	(22767) at runCallback (timers.js:705:18)
          javascript.0	2021-07-09 12:14:42.012	error	(22767) at Immediate.setImmediate (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:4851:37)
          javascript.0	2021-07-09 12:14:42.012	error	(22767) at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:472:25)
          javascript.0	2021-07-09 12:14:42.012	error	(22767) at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1055:38)
          javascript.0	2021-07-09 12:14:42.012	error	(22767) at Object.<anonymous> (script.js.PV_/_Strom.Zähler_an_Wallbox:4:11)
          javascript.0	2021-07-09 12:14:42.010	error	(22767) Error in callback: ReferenceError: XMLHttpRequest is not defined
          

          xmlhttprequest scheint wohl nicht zu funktionieren, obwohl es im Javascript Adapter eingetragen ist.

          XenonX 1 Reply Last reply
          0
          • M Mr. Moose

            @xenon
            Mit reqbin sende ich ohne Authorization. Wenn ich dort den Javascript/AJAX exportiere erhalte ich das:

            var url = "http://10.10.10.30/cnf?cmd=set_ajax_meter&dev_id=M5";
            
            var xhr = new XMLHttpRequest();
            xhr.open("POST", url);
            
            xhr.setRequestHeader("Content-Type", "application/json");
            
            xhr.onreadystatechange = function () {
               if (xhr.readyState === 4) {
                  console.log(xhr.status);
                  console.log(xhr.responseText);
               }};
            
            var data = `{ 
            
               "import_vah": 7489627.7,
               "power_va": 416.8
            }`;
            
            xhr.send(data);
            

            Im Log erscheinen folgende Fehler:

            javascript.0	2021-07-09 12:14:42.013	error	(22767) at processImmediate (timers.js:658:5)
            javascript.0	2021-07-09 12:14:42.012	error	(22767) at tryOnImmediate (timers.js:676:5)
            javascript.0	2021-07-09 12:14:42.012	error	(22767) at runCallback (timers.js:705:18)
            javascript.0	2021-07-09 12:14:42.012	error	(22767) at Immediate.setImmediate (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:4851:37)
            javascript.0	2021-07-09 12:14:42.012	error	(22767) at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:472:25)
            javascript.0	2021-07-09 12:14:42.012	error	(22767) at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1055:38)
            javascript.0	2021-07-09 12:14:42.012	error	(22767) at Object.<anonymous> (script.js.PV_/_Strom.Zähler_an_Wallbox:4:11)
            javascript.0	2021-07-09 12:14:42.010	error	(22767) Error in callback: ReferenceError: XMLHttpRequest is not defined
            

            xmlhttprequest scheint wohl nicht zu funktionieren, obwohl es im Javascript Adapter eingetragen ist.

            XenonX Offline
            XenonX Offline
            Xenon
            Forum Testing Developer
            wrote on last edited by
            #6

            @mr-moose doch, du musst es aber vorher auch importieren, das habe ich in meinem Beispiel ja getan

            wenn euch mein Beitrag geholfen hat, bewertet ihn bitte unten rechts :)

            M 1 Reply Last reply
            1
            • XenonX Xenon

              @mr-moose doch, du musst es aber vorher auch importieren, das habe ich in meinem Beispiel ja getan

              M Offline
              M Offline
              Mr. Moose
              wrote on last edited by
              #7

              @xenon
              Es war doch die Authorization. Reqbin konnte nur senden, weil ich in einem anderen Browser-Tab in der Wallbox eingeloggt war.
              Was mir jetzt noch fehlt sind die Variablen Arbeit und Leistung in den Zeilen 24 und 25. So wie es jetzt ist funktioniert es nicht.

              on({id: 'smartmeter.0.1-0:16_7_0__255.value', change: 'any'}, function (obj) {
              var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
              
              Arbeit = getState("smartmeter.0.1-0:1_8_0__255.value").val;
              Arbeit = Arbeit * 1000
              Leistung  = getState("smartmeter.0.1-0:16_7_0__255.value").val;
              console.log(Arbeit);
              console.log(Leistung);
              
              var url = "http://10.10.10.30/cnf?cmd=set_ajax_meter&dev_id=M5";
              
              var xhr = new XMLHttpRequest();
              xhr.open("POST", url);
              
              xhr.setRequestHeader("Authorization", "Basic ***password***");
              xhr.setRequestHeader("Content-Type", "application/json");
              
              xhr.onreadystatechange = function () {
                 if (xhr.readyState === 4) {
                    console.log(xhr.status);
                    console.log(xhr.responseText);
                 }};
              var data = `{
                 "import_vah": Arbeit,
                 "power_va": Leistung
              }`;
              xhr.send(data);
              });
              
              XenonX 1 Reply Last reply
              0
              • M Mr. Moose

                @xenon
                Es war doch die Authorization. Reqbin konnte nur senden, weil ich in einem anderen Browser-Tab in der Wallbox eingeloggt war.
                Was mir jetzt noch fehlt sind die Variablen Arbeit und Leistung in den Zeilen 24 und 25. So wie es jetzt ist funktioniert es nicht.

                on({id: 'smartmeter.0.1-0:16_7_0__255.value', change: 'any'}, function (obj) {
                var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
                
                Arbeit = getState("smartmeter.0.1-0:1_8_0__255.value").val;
                Arbeit = Arbeit * 1000
                Leistung  = getState("smartmeter.0.1-0:16_7_0__255.value").val;
                console.log(Arbeit);
                console.log(Leistung);
                
                var url = "http://10.10.10.30/cnf?cmd=set_ajax_meter&dev_id=M5";
                
                var xhr = new XMLHttpRequest();
                xhr.open("POST", url);
                
                xhr.setRequestHeader("Authorization", "Basic ***password***");
                xhr.setRequestHeader("Content-Type", "application/json");
                
                xhr.onreadystatechange = function () {
                   if (xhr.readyState === 4) {
                      console.log(xhr.status);
                      console.log(xhr.responseText);
                   }};
                var data = `{
                   "import_vah": Arbeit,
                   "power_va": Leistung
                }`;
                xhr.send(data);
                });
                
                XenonX Offline
                XenonX Offline
                Xenon
                Forum Testing Developer
                wrote on last edited by Xenon
                #8

                @mr-moose aber der authorization Fehler ist weg? Und über reqbin kannst du die Daten senden?

                Bitte gib mal den exakten Code an, womit es bei reqbin funktioniert (falls da Zugangsdaten stehen ersetze sie einfach durch xxxx)

                wenn euch mein Beitrag geholfen hat, bewertet ihn bitte unten rechts :)

                M 1 Reply Last reply
                0
                • XenonX Xenon

                  @mr-moose aber der authorization Fehler ist weg? Und über reqbin kannst du die Daten senden?

                  Bitte gib mal den exakten Code an, womit es bei reqbin funktioniert (falls da Zugangsdaten stehen ersetze sie einfach durch xxxx)

                  M Offline
                  M Offline
                  Mr. Moose
                  wrote on last edited by
                  #9

                  @xenon
                  Ja, funktioniert. Auch aus iobroker mit dem Code oben wenn ich da in Zeile 24 und 25 anstatt der Variablen Zahlen einsetze.
                  Ich brauche da aber die Variablen Arbeit und Leistung. Wie schreibt man das in JavaScript?

                  XenonX 1 Reply Last reply
                  0
                  • M Mr. Moose

                    @xenon
                    Ja, funktioniert. Auch aus iobroker mit dem Code oben wenn ich da in Zeile 24 und 25 anstatt der Variablen Zahlen einsetze.
                    Ich brauche da aber die Variablen Arbeit und Leistung. Wie schreibt man das in JavaScript?

                    XenonX Offline
                    XenonX Offline
                    Xenon
                    Forum Testing Developer
                    wrote on last edited by Xenon
                    #10

                    @mr-moose ah okay ich verstehe.

                    Setz die Variablen so ein ${variable}

                    also ${Arbeit}

                    wenn euch mein Beitrag geholfen hat, bewertet ihn bitte unten rechts :)

                    M 1 Reply Last reply
                    1
                    • XenonX Xenon

                      @mr-moose ah okay ich verstehe.

                      Setz die Variablen so ein ${variable}

                      also ${Arbeit}

                      M Offline
                      M Offline
                      Mr. Moose
                      wrote on last edited by
                      #11

                      @xenon
                      Super, jetzt geht es. Vielen Dank für deine Hilfe!
                      Hier nochmal die lauffähige Version, falls sie mal einer braucht.

                      on({id: 'smartmeter.0.1-0:16_7_0__255.value', change: 'any'}, function (obj) {
                      var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
                      
                      Arbeit = getState("smartmeter.0.1-0:1_8_0__255.value").val;
                      Arbeit = Arbeit * 1000
                      Leistung  = getState("smartmeter.0.1-0:16_7_0__255.value").val;
                      
                      var url = "http://10.10.10.30/cnf?cmd=set_ajax_meter&dev_id=M5";
                      
                      var xhr = new XMLHttpRequest();
                      xhr.open("POST", url);
                      
                      xhr.setRequestHeader("Authorization", "Basic YWRtaW46MTIzNGFiY2Q=");
                      xhr.setRequestHeader("Content-Type", "application/json");
                      
                      xhr.onreadystatechange = function () {
                         if (xhr.readyState === 4) {
                            console.log(xhr.status);
                            console.log(xhr.responseText);
                         }};
                      var data = `{
                         "import_vah": ${Arbeit},
                         "power_va": ${Leistung}
                      }`;
                      xhr.send(data);
                      });
                      
                      XenonX 1 Reply Last reply
                      0
                      • M Mr. Moose

                        @xenon
                        Super, jetzt geht es. Vielen Dank für deine Hilfe!
                        Hier nochmal die lauffähige Version, falls sie mal einer braucht.

                        on({id: 'smartmeter.0.1-0:16_7_0__255.value', change: 'any'}, function (obj) {
                        var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
                        
                        Arbeit = getState("smartmeter.0.1-0:1_8_0__255.value").val;
                        Arbeit = Arbeit * 1000
                        Leistung  = getState("smartmeter.0.1-0:16_7_0__255.value").val;
                        
                        var url = "http://10.10.10.30/cnf?cmd=set_ajax_meter&dev_id=M5";
                        
                        var xhr = new XMLHttpRequest();
                        xhr.open("POST", url);
                        
                        xhr.setRequestHeader("Authorization", "Basic YWRtaW46MTIzNGFiY2Q=");
                        xhr.setRequestHeader("Content-Type", "application/json");
                        
                        xhr.onreadystatechange = function () {
                           if (xhr.readyState === 4) {
                              console.log(xhr.status);
                              console.log(xhr.responseText);
                           }};
                        var data = `{
                           "import_vah": ${Arbeit},
                           "power_va": ${Leistung}
                        }`;
                        xhr.send(data);
                        });
                        
                        XenonX Offline
                        XenonX Offline
                        Xenon
                        Forum Testing Developer
                        wrote on last edited by
                        #12

                        @mr-moose gerne 🙂

                        wenn euch mein Beitrag geholfen hat, bewertet ihn bitte unten rechts :)

                        Rudolf KasperR 1 Reply Last reply
                        0
                        • XenonX Xenon

                          @mr-moose gerne 🙂

                          Rudolf KasperR Offline
                          Rudolf KasperR Offline
                          Rudolf Kasper
                          wrote on last edited by
                          #13

                          wäre es nicht gut wenn wir nen adapter dafür hätten?

                          1 Reply Last reply
                          0
                          • E Offline
                            E Offline
                            euro
                            wrote on last edited by
                            #14

                            Moin
                            ich hab oben gezeigtes Skript versucht einzubinden, um mir einen weiteren Zähler für Überschussladen zu ersparen
                            Allerdings bekomme ich keine Werte in der cfos angezeigt
                            Nutzt noch jemand das Skript, @Mr-Moose war schon länger nicht mehr online - evtl. schaut er ja aber nochmal rein

                            ich hab das Skript wie gepostet übernommen
                            die ID für den Tasmota ESP (sonoff.0.DVES_XXXXXXX._Power_curr und _total_in übernommen )
                            aktuelles Passwort in Klartext übernommen sowie meine IP der cfos eingetragen

                            in der cfos :
                            Zählertest mit HTTP Input
                            IP des IoBroker eingetragen

                            Output sieht dann leider so aus, sprich es kommen keine Werte:

                            Version: 1.12.0 ESP

                            Time: 2022-06-05 07:08:27

                            Device 'meter_ajax': HTTP input

                            Address: meine_ioBroker_IP, Id: 1
                            Config: {}

                            Voltage: 230, 230, 230
                            Current: 0.000000, 0.000000, 0.000000
                            Power: 0 VA
                            Import/Export: 0 Wh, 0 Wh

                            Kann mir jemand Hilfestellung geben?
                            Denke die Zeile 5 im Skript (Arbeit = Arbeit * 1000) kann ich bei mir löschen, der Momentanverbrauch wird direkt in W ausgegeben (??)

                            mfg und schönen Sonntag
                            Stefan

                            E 1 Reply Last reply
                            0
                            • E euro

                              Moin
                              ich hab oben gezeigtes Skript versucht einzubinden, um mir einen weiteren Zähler für Überschussladen zu ersparen
                              Allerdings bekomme ich keine Werte in der cfos angezeigt
                              Nutzt noch jemand das Skript, @Mr-Moose war schon länger nicht mehr online - evtl. schaut er ja aber nochmal rein

                              ich hab das Skript wie gepostet übernommen
                              die ID für den Tasmota ESP (sonoff.0.DVES_XXXXXXX._Power_curr und _total_in übernommen )
                              aktuelles Passwort in Klartext übernommen sowie meine IP der cfos eingetragen

                              in der cfos :
                              Zählertest mit HTTP Input
                              IP des IoBroker eingetragen

                              Output sieht dann leider so aus, sprich es kommen keine Werte:

                              Version: 1.12.0 ESP

                              Time: 2022-06-05 07:08:27

                              Device 'meter_ajax': HTTP input

                              Address: meine_ioBroker_IP, Id: 1
                              Config: {}

                              Voltage: 230, 230, 230
                              Current: 0.000000, 0.000000, 0.000000
                              Power: 0 VA
                              Import/Export: 0 Wh, 0 Wh

                              Kann mir jemand Hilfestellung geben?
                              Denke die Zeile 5 im Skript (Arbeit = Arbeit * 1000) kann ich bei mir löschen, der Momentanverbrauch wird direkt in W ausgegeben (??)

                              mfg und schönen Sonntag
                              Stefan

                              E Offline
                              E Offline
                              euro
                              wrote on last edited by
                              #15

                              es geht nun auch bei mir
                              ein deutlicherer Hinweis seitens cfos in deren Hilfe bezüglich ZählerID hätte (mir) geholfen
                              es ist diese hier wenn man den Zähler öffnet (M4 bei mir)

                              und statt Zählertest legt man einfach den HTTPInput Zähler in der cfos an, Feld für Adresse kann leer bleiben, der Zähler nimmt von allen Sendern Werte an (AUth halt)

                              a96b7ca7-4045-437b-8cde-249d2af94293-grafik.png

                              Danke @Mr-Moose für das Teilen des Skripts hier!

                              mfg
                              STefan

                              E 1 Reply Last reply
                              0
                              • E euro

                                es geht nun auch bei mir
                                ein deutlicherer Hinweis seitens cfos in deren Hilfe bezüglich ZählerID hätte (mir) geholfen
                                es ist diese hier wenn man den Zähler öffnet (M4 bei mir)

                                und statt Zählertest legt man einfach den HTTPInput Zähler in der cfos an, Feld für Adresse kann leer bleiben, der Zähler nimmt von allen Sendern Werte an (AUth halt)

                                a96b7ca7-4045-437b-8cde-249d2af94293-grafik.png

                                Danke @Mr-Moose für das Teilen des Skripts hier!

                                mfg
                                STefan

                                E Offline
                                E Offline
                                euro
                                wrote on last edited by euro
                                #16

                                und noch ein Hinweis
                                ich konnte zwar die Leistung an den HTTP Input Zähler übergeben
                                aber das Solarladen funktionierte noch nicht, Ladevorgang startete nicht bzw wenn dann nur mit der voreingestellten Leistung, nicht dynamisch
                                Die cfos benötigt zusätzlich den Strom (A) um den Ladestrom abhängig vom Solarstrom zu regeln (zw 6 und 16A halt)
                                (Einen Dank an den schnellen cfos Support und einem Nutzer aus dem goingelectric Forum)
                                dazu hab ich die Variable wie in der cfos Doku noch übergeben
                                "current": [c1, c2, c3],

                                Skript ergänzt um folgende Zeile (Strom=Leistung x 1000 / 3 x 230)

                                Strom = Leistung / 0.690

                                var data = { "import_vah": ${Arbeit}, "power_va": ${Leistung}, "current": [${Strom}, ${Strom}, ${Strom}] };
                                xhr.send(data);

                                was ich jetzt noch suche, ist wie ich die Daten der Ladekurve ebenfalls in IoB bekomme, um Sie in Grafana auszuwerten
                                Falls mir da jemand auf die Sprünge helfen mag

                                aktuell bekommt die eKiste also wenn möglich nur noch grünen Strom :)

                                Die Zählerdaten in ioBroker kommen über einen Tasmota ESP rein, der mit einem "Hichi" Infrarot Lesekopf ausgestattet ist und per MQTT mit ioB kommuniziert

                                mfg STefan

                                C B 2 Replies Last reply
                                0
                                • E euro

                                  und noch ein Hinweis
                                  ich konnte zwar die Leistung an den HTTP Input Zähler übergeben
                                  aber das Solarladen funktionierte noch nicht, Ladevorgang startete nicht bzw wenn dann nur mit der voreingestellten Leistung, nicht dynamisch
                                  Die cfos benötigt zusätzlich den Strom (A) um den Ladestrom abhängig vom Solarstrom zu regeln (zw 6 und 16A halt)
                                  (Einen Dank an den schnellen cfos Support und einem Nutzer aus dem goingelectric Forum)
                                  dazu hab ich die Variable wie in der cfos Doku noch übergeben
                                  "current": [c1, c2, c3],

                                  Skript ergänzt um folgende Zeile (Strom=Leistung x 1000 / 3 x 230)

                                  Strom = Leistung / 0.690

                                  var data = { "import_vah": ${Arbeit}, "power_va": ${Leistung}, "current": [${Strom}, ${Strom}, ${Strom}] };
                                  xhr.send(data);

                                  was ich jetzt noch suche, ist wie ich die Daten der Ladekurve ebenfalls in IoB bekomme, um Sie in Grafana auszuwerten
                                  Falls mir da jemand auf die Sprünge helfen mag

                                  aktuell bekommt die eKiste also wenn möglich nur noch grünen Strom :)

                                  Die Zählerdaten in ioBroker kommen über einen Tasmota ESP rein, der mit einem "Hichi" Infrarot Lesekopf ausgestattet ist und per MQTT mit ioB kommuniziert

                                  mfg STefan

                                  C Offline
                                  C Offline
                                  claus1968
                                  wrote on last edited by
                                  #17

                                  @euro
                                  Ich habe auch eine cfos-Wallbox (und eine go-e) und lese den Strom mit dem Hichi über Tasmota aus (alle 10s). cfos habe ich per Modbus Adapter im Iobroker.

                                  Ich habe 3 Ladeprofile:
                                  a) Volle 16A
                                  b) min+PV (6A + ggf. PV-Überschuss, wenn mehr da ist)
                                  c) NurPV

                                  Da ich mit der PV-Übeschussladung im Powerbrain nicht klargekommen bin habe ich mir in Iobroker ein Skript gebastelt.

                                  1. Alle 10s ermittle ich den derzeitigen PV-Überschuss:
                                    Wert vom Hichi bereinigt um Ladeleistung der Wallbox
                                  2. Division des PV-Überschuss / 230.
                                    Dadurch habe den PV-Überschuss in Ampere (gerundet).
                                  3. Schreibe ich diesen Wert in das passende Register (alle 10s)
                                  4. Skript schickt je nach Ladeprofil den passenden Wert (in A) ans cfos.
                                  5. Damit es an der Schwelle zu 6A nicht permanent ein- und wieder ausschaltet
                                    habe ich eine Trägheit für den Wert < 6A verwendet (gleitender Durchschnitt des PV-Überschusses der letzten 8 Werte). Erst wenn dieser unter 5A geht, sende ich das Stop-Signal.

                                  Habe dies so seit einigen Monaten so am laufen.
                                  rot: cfos
                                  blau: go-e
                                  gelb: PV-Überschuss

                                  Hier ein Tag:
                                  46e48124-b30c-4704-86b5-89a356213cb4-grafik.png
                                  Hier ein Teil des selben Tages:
                                  fbef3083-4afa-4fae-babc-116abee2749f-grafik.png

                                  Dies war der heutige Tag: (war jedoch go-e)
                                  bee5592b-f484-4cca-934a-099447d8203d-grafik.png

                                  Das Gleiche in größerer Auflösung:
                                  c7cc1913-e4e3-4d6b-ab20-1c0b10b0956d-grafik.png

                                  Man kann erkennen, dass um 17:15 Uhr nicht mehr genügend Überschuss vorhanden war. Daher wurde die Ladung unterbrochen.

                                  Hinweis:
                                  Ich lade nur 1-Phasig, da meine PV nur bei optimalen Bedingung 4700W
                                  schafft. Da hätte ich ein ständiges Umschalten von 1 auf 3 Phasen.
                                  Ausserdem können beide Fahrzeuge nur 1-Phasig laden.

                                  Gruß Claus

                                  Status: Anfänger im iobroker
                                  Proxmox auf Gigabyte Brix i3-7100U; ioBroker im Container

                                  1 Reply Last reply
                                  0
                                  • E Offline
                                    E Offline
                                    euro
                                    wrote on last edited by
                                    #18

                                    Hallo Claus,
                                    was war denn das Problem bei der cfos Laderegel?
                                    oder lag das mehr in der Anbindung des go-e ?

                                    ich habe zwar knapp 10kWp, davon allerdings 7 auf Nord
                                    weshalb auch selten mal 7 runterkommen. Wenn dann Verbraucher dazukommen, stoppt der 3-phasige Ladevorgang recht schnell, bin daher auch fast nur 1-phasig am laden.
                                    Das klappt aber seit der Umsetzung super, konnten eigentlich bei dem tollen Sommer rein mit solar den Akku füllen

                                    werde die Lösung nun nochmal bei einem Vater nachbauen, da hab ich grad 8kWp gebaut.
                                    ioBroker mit hichi und ne cfos ist dort ebenfalls vorhanden :)

                                    mfg
                                    STefan

                                    1 Reply Last reply
                                    0
                                    • C Offline
                                      C Offline
                                      claus1968
                                      wrote on last edited by
                                      #19

                                      Ich hatte die Steuerung für Go-e sowieso. Daher wollte ich es gleich haben.
                                      Mein ursprüngliches Problem war die Einbindung des Hauszählers mit dem Hitchi+Tasmota.

                                      Status: Anfänger im iobroker
                                      Proxmox auf Gigabyte Brix i3-7100U; ioBroker im Container

                                      1 Reply Last reply
                                      0
                                      • E euro

                                        und noch ein Hinweis
                                        ich konnte zwar die Leistung an den HTTP Input Zähler übergeben
                                        aber das Solarladen funktionierte noch nicht, Ladevorgang startete nicht bzw wenn dann nur mit der voreingestellten Leistung, nicht dynamisch
                                        Die cfos benötigt zusätzlich den Strom (A) um den Ladestrom abhängig vom Solarstrom zu regeln (zw 6 und 16A halt)
                                        (Einen Dank an den schnellen cfos Support und einem Nutzer aus dem goingelectric Forum)
                                        dazu hab ich die Variable wie in der cfos Doku noch übergeben
                                        "current": [c1, c2, c3],

                                        Skript ergänzt um folgende Zeile (Strom=Leistung x 1000 / 3 x 230)

                                        Strom = Leistung / 0.690

                                        var data = { "import_vah": ${Arbeit}, "power_va": ${Leistung}, "current": [${Strom}, ${Strom}, ${Strom}] };
                                        xhr.send(data);

                                        was ich jetzt noch suche, ist wie ich die Daten der Ladekurve ebenfalls in IoB bekomme, um Sie in Grafana auszuwerten
                                        Falls mir da jemand auf die Sprünge helfen mag

                                        aktuell bekommt die eKiste also wenn möglich nur noch grünen Strom :)

                                        Die Zählerdaten in ioBroker kommen über einen Tasmota ESP rein, der mit einem "Hichi" Infrarot Lesekopf ausgestattet ist und per MQTT mit ioB kommuniziert

                                        mfg STefan

                                        B Offline
                                        B Offline
                                        berlinerbolle
                                        wrote on last edited by
                                        #20

                                        @euro said in Übergabe von Werten von Smartmeter an cFos Wallbox:

                                        und noch ein Hinweis
                                        ich konnte zwar die Leistung an den HTTP Input Zähler übergeben
                                        aber das Solarladen funktionierte noch nicht, Ladevorgang startete nicht bzw wenn dann nur mit der voreingestellten Leistung, nicht dynamisch
                                        Die cfos benötigt zusätzlich den Strom (A) um den Ladestrom abhängig vom Solarstrom zu regeln (zw 6 und 16A halt)
                                        (Einen Dank an den schnellen cfos Support und einem Nutzer aus dem goingelectric Forum)
                                        dazu hab ich die Variable wie in der cfos Doku noch übergeben
                                        "current": [c1, c2, c3],

                                        Skript ergänzt um folgende Zeile (Strom=Leistung x 1000 / 3 x 230)

                                        Strom = Leistung / 0.690

                                        var data = { "import_vah": ${Arbeit}, "power_va": ${Leistung}, "current": [${Strom}, ${Strom}, ${Strom}] };
                                        xhr.send(data);

                                        was ich jetzt noch suche, ist wie ich die Daten der Ladekurve ebenfalls in IoB bekomme, um Sie in Grafana auszuwerten
                                        Falls mir da jemand auf die Sprünge helfen mag

                                        aktuell bekommt die eKiste also wenn möglich nur noch grünen Strom :)

                                        Die Zählerdaten in ioBroker kommen über einen Tasmota ESP rein, der mit einem "Hichi" Infrarot Lesekopf ausgestattet ist und per MQTT mit ioB kommuniziert

                                        mfg STefan

                                        Hallo zusammen,

                                        hätte jemand der Vollständigkeit halber eventuell nochmal das komplette funktionierende Script, inklusive der Anpassung von @euro - und kurzer Erläuterung, welche Variable was ist? Ist "Arbeit" der aufsummierte Import? Wozu braucht man den? Ich wäre jetzt davon ausgegangen, dass man nur die aktuelle Leistung am Hausanschluss übergeben muss (inkl. errechneter Stromstärken anscheinend)? Kann das kurz jemand klarstellen? Danke!

                                        Gruß
                                        Hendrik

                                        1 Reply Last reply
                                        0
                                        • E Offline
                                          E Offline
                                          euro
                                          wrote on last edited by
                                          #21

                                          Hallo Hendrik,
                                          nutzt du einen Lesekopf mit tasmorta am eHz?
                                          ich hab es letzte Woche umgestellt und den "Umweg" über ioBroker entfernt.
                                          die Cfos kann dies mittlerweile selbst, siehe
                                          https://www.cfos-emobility.de/de/cfos-charging-manager/documentation/optical-reader-sml.htm
                                          die Zählervorlage muss man noch auf die eigene Umgebung etwas anpassen

                                          falls uninteressant, kann ich dir gerne mein Skript nochmal zusenden

                                          mit dem letzten Firmwarestand geht Solarladen wieder mit VA und W Lieferung :)
                                          Bei Fragen dazu .. melden

                                          B 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

                                          550

                                          Online

                                          32.7k

                                          Users

                                          82.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