GoodWe inverter lokaal uitlezen (USB / WiFi)

Pagina: 1 ... 5 ... 12 Laatste
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Anoniem: 1582350

Zoals toegezegd de volgende versie en hier zit nu het tonen en opslaan van berekende draaischijf waarden in. Ik kan dat hier op een tiende kW/h berekenen en het klopt ook nog eens. Ik bereken de waarde uit de beginstand - export + import.

Ik ben in de tussentijd naar NodeRed 2.0 gegaan en er zijn optisch wat verschillen en voorheen kreeg ik bij een delay het aan seconden wachttijd te zien nu zie ik dat er payload wacht. Geen vooruitgang in mijn ogen.

Afbeeldingslocatie: https://tweakers.net/i/0oHinaQA9zWRVIrB9ZkXQaVoQ34=/full-fit-in/4920x3264/filters:max_bytes(3145728):no_upscale():strip_icc():fill(white):strip_exif()/f/image/i0nB9P4ImdpMEqplIBexQOQX.jpg?f=user_large

code:
1
[{"id":"801b0f90.623ea8","type":"tab","label":"Inverter2PVOutput","disabled":false,"info":"Scripted by msatter\nversion: 20210811-1.05\n**Only for non-comercial usage**\n\nDiscussion about getting data from the Goodwe inverters (XS series)\n\n[https://gathering.tweakers.net/forum/list_messages/1799239](Tweakers forum (Dutch))\n\nMy profile on Tweakers.net\n\n[https://tweakers.net/gallery/1582350/]()"},{"id":"ff01618d.60809","type":"subflow","name":"PVOutput upload","info":"Provided by **Vster Lee**\n[https://community.openenergymonitor.org/t/pvoutput-org-nodered/779/3]()\n\nAdapted for Goodwe UDP over WiFi by **msatter** [https://tweakers.net/gallery/1582350/]()\n\nVersio 20210526-1.15","category":"","in":[{"x":50,"y":120,"wires":[{"id":"b387fa24.de24"},{"id":"1a1e9c44.bce1f4"},{"id":"ba84d31bc6af60fc"}]}],"out":[],"env":[],"meta":{"module":"Upload to PVOutput - status api","license":"Non-commercial"},"color":"#87A980","icon":"font-awesome/fa-line-chart","status":{"x":800,"y":60,"wires":[{"id":"d68b8d43.29747","port":0},{"id":"ba0c10e4.0b273","port":0}]}},{"id":"b583cfc4.481a7","type":"subflow","name":"Fan control (Fritz!box)","info":"Using a AVM DECT 200/210 to switch a external fan to cool the inverter if keep a good temperature in the inverter.\nYou can just give a normal and high temperature of use als the ambient temperature measured by the DECT 200/210 and put a delta on it.\nThis way it compenstates when the ambient temperature is very hig. This way the fan won't try to reach a normal temparature when that will take a long cooling period. Or the normal temperature can't even be reached in this situation.\nThen is an 'emergency' fan activation when the temperature in the inverter is above 70 degrees celcius.","category":"","in":[{"x":40,"y":60,"wires":[{"id":"d671f425.eeccb8"}]}],"out":[],"env":[],"meta":{},"color":"#3FADBB","icon":"font-awesome/fa-thermometer-3","status":{"x":700,"y":40,"wires":[{"id":"a8384cad.fe0fa8","port":0}]}},{"id":"38eaa938.5c6d36","type":"group","z":"801b0f90.623ea8","name":"Fan ON/OFF based on temperature of the inverter","style":{"stroke":"none","fill":"#ffC000","label":true,"label-position":"n","color":"#ffffff","fill-opacity":"0.72"},"nodes":["df5787e.5542578","197029da.e9aa8e","fb618501.400cb8"],"x":54,"y":279,"w":682,"h":82},{"id":"8ae4ca85.96da48","type":"group","z":"801b0f90.623ea8","name":"Retrieve values from the inverter and kWh meter, storing these values every X seconds (24/7)","style":{"stroke-opacity":"0","fill":"#7fb7df","label":true,"color":"#ffffff","label-position":"n"},"nodes":["516a7514.fae094","8277276e.aa4838","61584504.656bb4","4d1994b6.e68d54","f253db9e.62f168","20b092ab.afa95e","b6dc2565.805b88","671524d1.923f6c","682d652e.797f7c","23c7dabd.782b7e","ed785906.26fe78"],"x":54,"y":19,"w":682,"h":132},{"id":"4b48967c.fcfc3","type":"group","z":"801b0f90.623ea8","name":"Transfer (stored) values to PVOutput, interval 5 minutes (24/7)","style":{"stroke":"none","fill":"#addb7b","label":true,"label-position":"n","color":"#ffffff"},"nodes":["407e80c8.75639","3de325a.37c68da","adf4fe67.082f88","93b11507.07f84","5144e0a6.1432f","8c79c62.c195d38","f72364d9.d212f8"],"x":54,"y":149,"w":682,"h":134},{"id":"25c84cff.e5e5fc","type":"fritzbox-config","name":"7590","host":"fritz.box","port":"49000","ssl":false,"user":"fritzuser"},{"id":"7a08bc0a.6b386c","type":"modbus-client","name":"Eastron reader","clienttype":"serial","bufferCommands":true,"stateLogEnabled":false,"queueLogEnabled":false,"tcpHost":"127.0.0.1","tcpPort":"502","tcpType":"DEFAULT","serialPort":"/dev/ttyUSB0","serialType":"RTU-BUFFERD","serialBaudrate":"9600","serialDatabits":"8","serialStopbits":"1","serialParity":"none","serialConnectionDelay":"100","unit_id":1,"commandDelay":50,"clientTimeout":1000,"reconnectOnTimeout":false,"reconnectTimeout":2000,"parallelUnitIdsAllowed":true},{"id":"40f20c7f.13a934","type":"modbus-client","name":"Serial_9600_8_N_1","clienttype":"serial","bufferCommands":true,"stateLogEnabled":false,"tcpHost":"127.0.0.1","tcpPort":"502","tcpType":"DEFAULT","serialPort":"/dev/ttyUSB0","serialType":"RTU-BUFFERD","serialBaudrate":"9600","serialDatabits":"8","serialStopbits":"1","serialParity":"none","serialConnectionDelay":"100","unit_id":"","commandDelay":"30","clientTimeout":"2000","reconnectTimeout":"5000"},{"id":"d68b8d43.29747","type":"http request","z":"ff01618d.60809","name":"Post","method":"POST","ret":"txt","paytoqs":"ignore","url":"","tls":"","persist":false,"proxy":"","authType":"","x":490,"y":60,"wires":[["d7346137.28cba","b638e83a.a1c888"]]},{"id":"71cd2d97.8e32d4","type":"function","z":"ff01618d.60809","name":"Prepare Post","func":"msg.action  = msg.payload;\nPVOsystemid = msg.payload.PVOsystemid;\nPVOAPIkey   = msg.payload.PVOAPIkey;\n\nmsg.headers = {};\n//msg.headers['X-Pvoutput-Apikey'] = 'b9ebfcaa419189c2a8595617ad6bd8250ed8a2d9';\nmsg.headers['X-Pvoutput-Apikey'] = PVOAPIkey;\nmsg.headers['X-Pvoutput-SystemId'] = PVOsystemid;\nmsg.headers['Content-Type'] = 'application/x-www-form-urlencoded';\n\n////////////////////////////////////////////\nmsg.url = \"https://pvoutput.org/service/r2/addstatus.jsp\";\nreturn msg;\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":350,"y":80,"wires":[["d68b8d43.29747","ac542fdb.fa626"]],"icon":"font-awesome/fa-align-left"},{"id":"d7346137.28cba","type":"function","z":"ff01618d.60809","name":"Check Status 1st","func":"var d=new Date();\nvar hours=('00' + d.getHours()).slice(-2);\nvar minutes=('00' + (d.getMinutes()+1)).slice(-2);\n// adding a space behind the time so that the lenght of the line is 314 characters in the log\nTime = hours+\":\"+minutes+\" \"\n\nif (msg.statusCode == 200) { \n   var stat = \"\";\n   flow.set('pvostat','200');  // this clears the outstanding PVO data, so it won't be uploaded again\n   var msg1 = null;\n   var msg2 = null;\n} else {\n   var time = new Date().toString();\n   flow.set('pvostat', msg.statusCode);\n   stat = \"FAILED: Time:\" + time + \"  StatusCode:\" + msg.statusCode + \"  StatusMsg:\" + msg.payload;\n}\nreturn msg;\n","outputs":2,"noerr":0,"initialize":"","finalize":"","libs":[],"x":730,"y":100,"wires":[[],["fe3a3389.3b9b2"]],"icon":"font-awesome/fa-search"},{"id":"fe3a3389.3b9b2","type":"file","z":"ff01618d.60809","name":"PVO error log","filename":"/opt/goodwe/pvoutput/pvo_errors.log","appendNewline":true,"createDir":true,"overwriteFile":"false","x":920,"y":120,"wires":[[]]},{"id":"ac542fdb.fa626","type":"function","z":"ff01618d.60809","name":"Store PVO data","func":"//store the PVO data in case it doesn't upload correctly\nflow.set ('pvodata',msg.payload);\nreturn msg;","outputs":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":520,"y":100,"wires":[],"icon":"node-red/redis.png"},{"id":"ba0c10e4.0b273","type":"http request","z":"ff01618d.60809","name":"Re-Post","method":"POST","ret":"txt","paytoqs":"ignore","url":"","tls":"","persist":false,"proxy":"","authType":"","x":520,"y":200,"wires":[["82678181.eee75"]]},{"id":"9f08c692.4c46a8","type":"function","z":"ff01618d.60809","name":"Prepare retransmit","func":"msg.action = msg.payload;\nPVOsystemid = msg.payload.PVOsystemid;\nPVOAPIkey = msg.payload.PVOAPIkey;\n\nmsg.headers = {};\nmsg.headers['X-Pvoutput-Apikey'] = PVOAPIkey;\nmsg.headers['X-Pvoutput-SystemId'] = PVOsystemid;\nmsg.headers['Content-Type'] = 'application/x-www-form-urlencoded';\n\n////////////////////////////////////////////\nmsg.url = \"https://pvoutput.org/service/r2/addstatus.jsp\";\nreturn msg;\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":350,"y":200,"wires":[["ba0c10e4.0b273"]],"icon":"node-red/white-globe.svg"},{"id":"82678181.eee75","type":"function","z":"ff01618d.60809","name":"Check Status 2nd","func":"if (msg.statusCode == 200) { \n   var time = new Date().toString();\n   var stat =\"\";\n   flow.set('pvostat', 200);  // this clears the outstanding PVO status, so it won't be uploaded again\n   var stat = \"RetransmitOK: Time:\" + time + \"  StatusCode:\" + msg.statusCode + \"  StatusMsg:\" + msg.payload;\n//   var msg1 = null;\n//   var msg2 = null;\n   var msg1 =  { payload: stat };\n   var msg2 =  { payload: stat };\n} else {\n   var time = new Date().toString();\n   flow.set('pvostat', msg.statusCode);\n   var stat = \"RetransmitFAIL: Time:\" + time + \"  StatusCode:\" + msg.statusCode + \"  StatusMsg:\" + msg.payload;\n//   var msg1 = null;\n//   var msg2 = null;\n   var msg1 =  { payload: stat };\n   var msg2 =  { payload: stat };\n}\nreturn (msg1, msg2);","outputs":"2","noerr":0,"initialize":"","finalize":"","libs":[],"x":730,"y":200,"wires":[["bc2c0f21.a7735"],["30cf215d.ab8d0e"]],"icon":"font-awesome/fa-search"},{"id":"30cf215d.ab8d0e","type":"file","z":"ff01618d.60809","name":"Retransmit fail","filename":"/opt/goodwe/pvoutput/pvo_errors.log","appendNewline":true,"createDir":true,"overwriteFile":"false","x":920,"y":220,"wires":[[]]},{"id":"b638e83a.a1c888","type":"function","z":"ff01618d.60809","name":"Fetch PVO data","func":"// Retransmit the PVO data in case it doesn't upload correctly the first time\n\nif (msg.statusCode != 200) { \n    \n// retrieve local stored data\n   var pvodata = flow.get('pvodata')||\"\";\n    msg.payload = pvodata;\n\nreturn msg;\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":160,"y":200,"wires":[["9f08c692.4c46a8"]],"icon":"node-red/redis.png"},{"id":"8d14e679.b29678","type":"file","z":"ff01618d.60809","name":"PVO Data","filename":"/opt/goodwe/pvoutput/PVO_data.log","appendNewline":true,"createDir":true,"overwriteFile":"false","x":900,"y":80,"wires":[[]]},{"id":"2696b14a.d9694e","type":"comment","z":"ff01618d.60809","name":"Check data sent OK and if not retransmit once","info":"The PVO website is busy and sometimes can't respond quickly enough and we get timeouts.\nThe next bit of code catches any errors and resubm its the code until it's sent OK.\n\nThat said, if it can't resend the data before the next data packet has to be sent (5 mins) then\nthe current packet will be lost. This is pretty rare though and won't be noticable on the graphs.\n","x":200,"y":160,"wires":[]},{"id":"5f830eb6.38a358","type":"comment","z":"ff01618d.60809","name":"Prepare values and then transfer those to PVOuput.org","info":"","x":230,"y":20,"wires":[]},{"id":"1a1e9c44.bce1f4","type":"function","z":"ff01618d.60809","name":"Prepare values","func":"var date=new Date();\nd = ( date.getFullYear() + ('00' + (date.getMonth()+1)).slice(-2) + ('00' + date.getDate()).slice(-2) ); \nt = ( ('00' + date.getHours()).slice(-2) + ':' + ('00' + date.getMinutes()).slice(-2) );\nvar c1 = 3;                                     // Only v3 consumption is a lifetime energy value. (= reset every day by PVOutput)\nvar PVOsystemid = msg.PVOsystemid; var PVOAPIkey = msg.PVOAPIkey;   // needed log-in data for using PVOutput\n\nvar resetday    = msg.resetday;\nglobal.set('resetday',resetday);\n\n// only upload if there is an kwh meter present and the inverter is currently off-line\nif ( global.get('meterValues') != null) {\n    meterValues = global.get('meterValues')     ||\"\";\n    v3 =  Number(meterValues.importkWh * 1000) || 0;   // imported kW/h from the kwh meter\n// when the inverter is off-line, use kWh meter values if those are present\n    if (global.get('PVwatt') == null) {    \n        meterValues = global.get('meterValues')||\"\";\n        v4 =  meterValues.watt          || 0;   // real watt from the kW/h meter\n        v5 =  meterValues.ambientTemp   || 0;   // ambient temperature provided by the Fritz earlier\n        v6 =  meterValues.volt          || 0;   // voltage from the kW/h meter\n        msg.payload = {d,t,v3,v4,v5,v6,c1,PVOsystemid,PVOAPIkey};   //  transfer values to payload for sending those to PVOutput\n    }       // END IF - inverter is offline\n}           // END IF - kWh meter present\n\n// when the inverter is online        \nif (global.get('PVwatt') != null) {\n    var PValues = global.get('PValues')||\"\";\n    v1 = PValues.eDay || 0;    v5 = PValues.PVtemp || 0;    v6 = PValues.PVvolt || 0;\n// retrieve accumulated watt's (PV = solar panels) and the caluclated internal usage and then clear them later for a new round\n    var PVwatt = global.get('PVwatt')   || \"\";\n    var DCwattavg   = PVwatt.DCwatt     || 0;    var ACwattavg   = PVwatt.ACwatt     || 0;\n    var PVcount     = PVwatt.wattcount  || 1;    var DCvolt      = PVwatt.DCvolt     || 0;\n\n    if (DCvolt != 0) {v6 = Number((DCvolt / PVcount).toFixed(1))}   // avaraging the DC voltage from the solar panels\n    v2          = Number(( DCwattavg / PVcount ).toFixed(0));       // averaging DC Watt from the inverter \n    v4          = Number(( ACwattavg / PVcount ).toFixed(0));       // averaging AC Watt from the inverter\n    //v4 = Number(ACwattavg);                                         // v4 is set to the calculate AC wattage from the inverter \n    if ( v4 < 0 ) { v4 = 0 }                                        // make v4 sure it is not negative\n    \n//  transfer values to payload to be used by the node sending it to PVOutput\nif ( global.get('meterWatt') != null) { msg.payload =   {d,t,v1,v2,v3,v4,v5,v6,c1,PVOsystemid,PVOAPIkey}}   // when kWh meter is present\nif ( global.get('meterWatt') == null) { msg.payload =   {d,t,v1,v2,v5,v6,c1,PVOsystemid,PVOAPIkey}}         // when kWh meter is not present\n\n}     //    END IF - inverter is online\n\n// Reset stored data every time after an upload to PVOutput\nglobal.set('PVwatt',null);\nglobal.set('meterWatt',null);\nif ( resetday) {\n    global.set('PValues',null)\n    //global.set('meterValues',null)\n    //global.set('tempValues',null)\n    //global.set('fancontrol',null)\n}\n\n// returning payload and PVOutput can now be updated\nreturn msg;\n\n// #######################################################################################################################\n    // obsolete code\n    // correction for AC cable length and/or measurements compenstions\n    // default correctionfactor\n    //var correctionfactor = 0;       // Set your own correction factor\n    //correctionfactor = 0.0 ;        // in percent without the %\n    //correctionfactor = ((100 - correctionfactor) / 100);    // calculate the uses multiplier\n    //v1 = v1 * correctionfactor;    // Production during the day\n    //v2 = v2 * correctionfactor;    // Production in Watt\n    //v6 = v6 * correctionfactor;    // Voltage AC side","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":160,"y":120,"wires":[["efb6026b.a87808"]],"icon":"node-red/batch.svg"},{"id":"106f84dd.f8d73b","type":"file","z":"ff01618d.60809","name":"save-values","filename":"/opt/goodwe/nodered/saved-values.txt","appendNewline":true,"createDir":true,"overwriteFile":"false","encoding":"ascii","x":510,"y":20,"wires":[[]]},{"id":"bc2c0f21.a7735","type":"file","z":"ff01618d.60809","name":"Retransmit OK","filename":"/opt/goodwe/pvoutput/PVO_data.log","appendNewline":true,"createDir":true,"overwriteFile":"false","encoding":"none","x":920,"y":180,"wires":[[]]},{"id":"5c2b263.51bdc58","type":"fritzbox-in","z":"b583cfc4.481a7","device":"25c84cff.e5e5fc","name":"Fritz.box","service":"urn:dslforum-org:service:X_AVM-DE_Homeauto:1","action":"SetSwitch","arguments":"{\n  \"NewAIN\": \"value\",\n  \"NewSwitchState\": \"value\"\n}","x":900,"y":100,"wires":[[]]},{"id":"a8384cad.fe0fa8","type":"function","z":"b583cfc4.481a7","name":"","func":"var temp_inverter   = msg.payload;\nvar temp_ambient    = msg.temp_ambient;\nvar tempValues      = global.get('tempValues') || \"\";\nvar temp_high       = tempValues.temp_high || 0;\nvar temp_normal     = tempValues.temp_normal || 0;\nvar temp_delta      = tempValues.temp_delta || 0;\n\n// retrieve saved values\nvar fancontrol  = global.get('fancontrol') || \"\";\nvar fan_on      = fancontrol.fan_on || false;\nvar highest_temp= fancontrol.highest_temp || 0;\n\n//var fan_on          = global.get('fan_on')||false;\n//var highest_temp    = global.get('highest_temp')||\"\";\nif ( temp_inverter == null ) {temp_inverter = temp_ambient}\nvar temperature = temp_inverter;\n\n// only use ambient and delta temp if their sum is higher than the normal temp\n//if ((temp_ambient + temp_delta) >= temp_normal ) {\n//    if (temp_delta > 0) {  \n//        temp_high = (temp_ambient + temp_delta)\n//        temp_normal = (temp_ambient + (temp_delta - 5))\n//}   }\n\n// emergency cooling, overwrite any calculated tem high value\nif (temperature >= 70) {temp_high = 65}\n    \n    if (temperature >= temp_high) {\n        fan = \" (FAN ON)\"\n        filldot = \"red\"\n        fan_on = true\n        highest_temp = temperature\n        fancontrol = { fan_on, highest_temp }\n        global.set('fancontrol',fancontrol)\n    }\n        \n    if (fan_on) {\n        if (highest_temp >= temperature)\n           { fan=\"FAN ON (delay)\"\n           filldot = \"yellow\"}\n    }\n        \n    if (temperature < temp_normal) {\n        fan = \" (FAN OFF)\"\n        filldot = \"blue\"\n        fan_on = false;\n        highest_temp = temperature;\n        fancontrol = { fan_on, highest_temp }\n        global.set('fancontrol',fancontrol)\n    }\n\n   let statusMsg = { fill:filldot, shape:\"dot\", text:\"Temp.: \" + temperature + \" celcius\" + fan };\n   return {payload: statusMsg};\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":530,"y":50,"wires":[["39bc750d.14c832"]],"info":"20210802"},{"id":"39bc750d.14c832","type":"switch","z":"b583cfc4.481a7","name":"Switch fan \\n ON/OFF","property":"payload.fill","propertyType":"msg","rules":[{"t":"eq","v":"red","vt":"str"},{"t":"eq","v":"yellow","vt":"str"},{"t":"eq","v":"blue","vt":"str"},{"t":"null"}],"checkall":"true","repair":false,"outputs":4,"x":710,"y":100,"wires":[["d08ac806.2a5868"],["d08ac806.2a5868"],["486d1d19.7d7034"],["486d1d19.7d7034"]]},{"id":"d08ac806.2a5868","type":"trigger","z":"b583cfc4.481a7","name":"Fan ON","op1":"","op2":"{\"NewAIN\":\"08761 0164169\",\"NewSwitchState\":\"ON\"}","op1type":"nul","op2type":"json","duration":"250","extend":false,"overrideDelay":false,"units":"ms","reset":"","bytopic":"all","topic":"payload","outputs":1,"x":880,"y":60,"wires":[["5c2b263.51bdc58"]]},{"id":"486d1d19.7d7034","type":"trigger","z":"b583cfc4.481a7","name":"Fan OFF","op1":"","op2":"{\"NewAIN\":\"08761 0164169\",\"NewSwitchState\":\"OFF\"}","op1type":"nul","op2type":"json","duration":"250","extend":false,"overrideDelay":false,"units":"ms","reset":"","bytopic":"all","topic":"topic","outputs":1,"x":880,"y":140,"wires":[["5c2b263.51bdc58"]]},{"id":"47f51c61.1e6d64","type":"switch","z":"b583cfc4.481a7","name":"","property":"payload","propertyType":"msg","rules":[{"t":"nnull"},{"t":"null"}],"checkall":"true","repair":false,"outputs":2,"x":350,"y":60,"wires":[["a8384cad.fe0fa8"],["39bc750d.14c832"]],"info":"When the inverter does not answer due to communication error or not running then the fan is switched OFF."},{"id":"d671f425.eeccb8","type":"change","z":"b583cfc4.481a7","name":"Fritz-request","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\"NewAIN\":\"08761 0164169\"}","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":170,"y":60,"wires":[["3955d49f.0d8e74"]]},{"id":"3955d49f.0d8e74","type":"fritzbox-in","z":"b583cfc4.481a7","device":"25c84cff.e5e5fc","name":"DECT200","service":"urn:dslforum-org:service:X_AVM-DE_Homeauto:1","action":"GetSpecificDeviceInfos","arguments":"{\n  \"NewAIN\": \"value\"\n}","x":180,"y":100,"wires":[["4fb6bb70.5f44dc"]]},{"id":"4fb6bb70.5f44dc","type":"function","z":"b583cfc4.481a7","name":"Prepare values","func":"var ambientTemp = msg.payload.NewTemperatureCelsius;\n\nPValues         =   global.get('PValues') || \"\";\ntemp_inverter   =   PValues.PVtemp || null;\n\nif ( ambientTemp > 0 ) { ambientTemp = (ambientTemp * 0.1)}\n//global.set('ambientTemp',ambientTemp);\n\n// adding ambientTemp to exisiting object meterValues\nvar meterValues = global.get('meterValues') || null;\nif (meterValues != null) {\n    tmp_ambientTemp = { ambientTemp }\n    let metervalues = Object.assign( meterValues,tmp_ambientTemp );\n    global.set('meterValues',meterValues);\n}\n//return {payload: temp_inverter, temp_high, temp_normal, temp_delta, temp_ambient};\nreturn {payload: temp_inverter, ambientTemp};","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":330,"y":100,"wires":[["47f51c61.1e6d64"]]},{"id":"86b20d8d.cef91","type":"file","z":"ff01618d.60809","name":"save-values","filename":"/opt/goodwe/nodered/saved-pf-freq.txt","appendNewline":true,"createDir":true,"overwriteFile":"false","encoding":"ascii","x":520,"y":140,"wires":[[]]},{"id":"b387fa24.de24","type":"function","z":"ff01618d.60809","name":"","func":"var date=new Date();\ndm  = ( ('00' + date.getDate()).slice(-2)  + '/' + ('00' + (date.getMonth()+1)).slice(-2) ) ; \nt   = ( ('00' + date.getHours()).slice(-2) + ':' + ('00' + date.getMinutes()).slice(-2) );\nd   = (dm + ' ' + t) \n\nmeterValues = global.get('meterValues') || \"\";\npf = meterValues.PowerFactor;\n\n//if ( pf < 0 ) {pf = pf * -1}\npf = ('    ' + pf).slice(-5);\nmsg.payload = {     pf,\n                    d  };\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":370,"y":130,"wires":[["86b20d8d.cef91"]]},{"id":"efb6026b.a87808","type":"switch","z":"ff01618d.60809","name":"","property":"payload","propertyType":"msg","rules":[{"t":"cont","v":"null","vt":"str"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":190,"y":70,"wires":[[],["71cd2d97.8e32d4","106f84dd.f8d73b"]]},{"id":"df5787e.5542578","type":"function","z":"801b0f90.623ea8","g":"38eaa938.5c6d36","name":"Define temperature values to be used","func":"// set temperature values to be used\nvar temp_normal = 50;\nvar temp_high   = 55;\nvar temp_delta  = 15;\n\ntempValues = { temp_high, temp_normal, temp_delta };\nglobal.set('tempValues',tempValues)\nmsg.payload = \"\";\n\nvar date=new Date();\nlastTime = ( ('00' + date.getHours()).slice(-2) + 'H' + ('00' + date.getMinutes()).slice(-2) ); // + \":\" + ('00' + date.getSeconds()).slice(-2) );\nnode.status({text:\"Last check and control: \" + lastTime});\n\nreturn msg;\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":350,"y":320,"wires":[["197029da.e9aa8e"]],"icon":"font-awesome/fa-thermometer-3"},{"id":"197029da.e9aa8e","type":"subflow:b583cfc4.481a7","z":"801b0f90.623ea8","g":"38eaa938.5c6d36","name":"","env":[],"x":610,"y":320,"wires":[],"icon":"node-red/swap.svg"},{"id":"fb618501.400cb8","type":"link in","z":"801b0f90.623ea8","g":"38eaa938.5c6d36","name":"Temperature/fan-control entry","links":["5144e0a6.1432f"],"x":95,"y":320,"wires":[["df5787e.5542578"]],"icon":"font-awesome/fa-arrow-right"},{"id":"516a7514.fae094","type":"udp out","z":"801b0f90.623ea8","g":"8ae4ca85.96da48","name":"","addr":"","iface":"","port":"8899","ipv":"udp4","outport":"","base64":false,"multicast":"false","x":255,"y":60,"wires":[],"icon":"node-red/bridge.svg","l":false},{"id":"8277276e.aa4838","type":"udp in","z":"801b0f90.623ea8","g":"8ae4ca85.96da48","name":"8899","iface":"","port":"8899","ipv":"udp4","multicast":"false","group":"","datatype":"buffer","x":295,"y":60,"wires":[["61584504.656bb4"]],"outputLabels":["got data"],"icon":"font-awesome/fa-assistive-listening-systems","l":false},{"id":"61584504.656bb4","type":"function","z":"801b0f90.623ea8","g":"8ae4ca85.96da48","name":"CRC-check","func":"var inverter_reply = msg.payload;\n\nvar message1 = inverter_reply.slice(2); // Remove 'AA55' from start of message\n//var message = message.slice(0, -2); //Remove two CRC bytes from end of message\nvar message = message1.slice(0, -2); //Remove two CRC bytes from end of message\n\nfunction crc16(buffer) {\n    var crc = 0xFFFF;\n    var odd;\n\n    for (var i = 0; i < buffer.length; i++) {\n        crc = crc ^ buffer[i];\n\n        for (var j = 0; j < 8; j++) {\n            odd = crc & 0x0001;\n            crc = crc >> 1;\n            if (odd) {\n                crc = crc ^ 0xA001;\n            }\n        }\n    }\n    return crc.toString(16);\n}\n\nvar buflen = inverter_reply.length\nif (buflen == 153) {\n    \n//Calculate CRC ourselves\nvar calculated_crc = crc16(message);\n\n//Get CRC from inverter reply and un-reverse it\nvar reply_crc = inverter_reply.slice(-2).toString('hex');\nvar crc1 = reply_crc.slice(0, 2);\nvar crc2 = reply_crc.slice(-2);\nvar new_crc = crc2 + crc1;\n\nif (new_crc == calculated_crc) {\n// If the checksum is not correct retry to get a good string.\n    msg.complete = true;\n// shows underneat the node the last time a PVOutput transmit was done\n    var date=new Date();\n    lastTime = ( ('00' + date.getHours()).slice(-2) + 'H' + ('00' + date.getMinutes()).slice(-2) + \":\" + ('00' + date.getSeconds()).slice(-2) );\n    \n    //if (msg.complete) { node.status({fill:\"green\",shape:\"dot\",text:\"At \" + lastTime + \" Check: OK \"}) }\n    if (msg.complete)   { node.status({text:\" Check: OK at \" + lastTime }) } else {\n                          node.status({fill:\"red\",shape:\"dot\",text:\"at \" + lastTime + \" NOT OK \"}) }\n    return msg;\n} //new_crc\n} //buflen\n\n// clear node status so it will show nothing if nothing arrives and if the inverter is off-line then that is shown\nif (global.get(\"PVwatt\") == null)\n   { node.status({text:\"The inverter is off-line...\"}) } else {\n    node.status({fill:\"yellow\",shape:\"dot\",text:\"The inverter did not answer in time. Retrying the next interval.\"})\n}\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":450,"y":60,"wires":[["4d1994b6.e68d54"]],"outputLabels":["good"],"icon":"font-awesome/fa-check-square-o"},{"id":"4d1994b6.e68d54","type":"function","z":"801b0f90.623ea8","g":"8ae4ca85.96da48","name":"Average Watt PV","func":"var inverter_reply = msg.payload;\n// check if the buffer is large enough to be used\nvar buflen = inverter_reply.length\nvar pvofactor   = 1; // fallback value\nvar lastwatt    = 0; // fallback value\n// only start when the bufflen = 153\nif (buflen == 153) {\n    var date=new Date(); lastTime = ( ('00' + date.getHours()).slice(-2) + 'H' + ('00' + date.getMinutes()).slice(-2) );\n    var eDay =   Number(parseFloat(inverter_reply.readUInt16BE(93) * 100).toFixed(1));\n    var PVtemp = Number(parseFloat(inverter_reply.readUInt16BE(87) * 0.1).toFixed(1));\n    var PVvolt = Number(parseFloat(inverter_reply.readUInt16BE(11) * 0.1).toFixed(1));\n    var PVfreq = Number(parseFloat(inverter_reply.readUInt16BE(53) * 0.01).toFixed(2));\n    var eTotal = Number(parseFloat(inverter_reply.readUInt16BE(97) * 0.1).toFixed(2));\n\n// Get PVwatt object\n    PVwatt    = global.get('PVwatt')    || \"\";\n    var DCwatt      = PVwatt.DCwatt     || 0;   var ACwatt      = PVwatt.ACwatt     || 0;\n    var wattcount   = PVwatt.wattcount  || 0;   var DCvolt      = PVwatt.DCvolt     || 0;\n// only when stored meterValues exists\n  if (global.get('meterValues') != null) {\n    var meterValues = global.get('meterValues') || \"\";\n    var pvofactor   = meterValues.PowerFactor   || 1;\n    var pvoapparant = meterValues.apparant      || 0;\n    var lastwatt    = meterValues.watt          || 0;\n    } // END IF meterValues exist\n    \n//PV wattage DC side and store\n    PVwattRead  = inverter_reply.readUInt16BE(61);\n    DCwatt      = DCwatt + PVwattRead;\n// peak watt performance completed with the time of reached\n    PValuesTemp = global.get ('PValues') || \"\";\n    peakWatt    = PValuesTemp.peakWatt   || 0;\n    if ( PVwattRead > peakWatt ) {\n        peakWatt = PVwattRead;\n        peakText    = \"Peak : \" + peakWatt + \" Watt at: \" + lastTime\n        global.set('PVpeakWatt', peakText)\n    }   // END IF peakWatt\n// store new PValues    \n    PValues = { eDay,peakWatt,eTotal,PVtemp,PVvolt,PVfreq }; global.set ('PValues',PValues);\n// Read Watt on the AC side, calculated from voltage * Amp\n    vacRead = inverter_reply.readUInt16BE(41);\n    iacRead = inverter_reply.readUInt16BE(47);\n    ACwatttmp = Number(((vacRead * iacRead) * 0.01).toFixed(0));\n\n// if needed, change the pvofactor    \n    if (pvofactor < 0) { pvofactor = Number(pvofactor * -1) }\n    //if (pvofactor < 0.8 ) {pvofactor = Number((0.9 + (pvofactor * 0.2)))}\n    //pvofactor = Number(0.9 + (pvofactor * 0.2))\n// test pf\n//    pvofactor = pvofactor * -0.2;   // reversing polarity and at the same time compress to 20% range\n//    pvofactor = 1 + pvofactor;      // pivot around 100% and the it range is 80-120%\n    //global.set('pvofactor',pvofactor);\n    //pvofactor =1; \n    \n// ignore inverter production till it gets over a defined point\n    if (ACwatttmp <= 200 && lastwatt > 5 ) { ACwatttmp = 0 } \n    \n// AC is now being power factor corrected. lastwatt was already corrected in the kWh meter    \n    //ACwatttmp   = Number((ACwatttmp * pvofactor).toFixed(0));\n    calcWatt    = Number(ACwatttmp + lastwatt);\n// cummulate\n    ACwatt = ACwatt + calcWatt;     //global.set ('ACwatt',ACwatt);\n    wattcount = (wattcount+1);  //global.set ('PVwattcount',PVwattcount);\n    // add PVvolt to DCvolt (averaging it)    \n    DCvolt = Number((DCvolt + PVvolt).toFixed(1));\n// and store\n    PVwatt = { wattcount,ACwatt,DCwatt,DCvolt};\n    global.set('PVwatt',PVwatt);\n// shows underneat the node the last time a inverter readout was done\n//    node.status({text:((ACwatt / wattcount).toFixed(0)) + \" Watt at \" + lastTime + \" (\" + wattcount +\" samples)\"});\n    node.status({text:((ACwatt / wattcount).toFixed(0)) + \" Watt avg. \" + \" (\" + wattcount +\" samples)\"});\n    } else {\n    node.status({});\n    //node.status({text:\"Average watt : N/A\" + \" (N/A samples)\"});\n}   // END IF buflen = 153 \n","outputs":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":620,"y":60,"wires":[],"icon":"font-awesome/fa-braille"},{"id":"f253db9e.62f168","type":"function","z":"801b0f90.623ea8","g":"8ae4ca85.96da48","name":"Average Watt kW/h","func":"var rawData = new ArrayBuffer(88) || null;\nvar intView = new Uint16Array(rawData);\nvar fltView = new Float32Array(rawData);\n\n//len = msg.payload.length;\n//global.set('lengte',len);\n\nif ( msg.payload.length > 8 ) {\n\n// Power Factor\nintView[0] = msg.payload[31]; //low\nintView[1] = msg.payload[30]; //high\nPowerFactor = Number(parseFloat(fltView[0]).toFixed(2));\n// frequency\nintView[0] = msg.payload[71]; //low\nintView[1] = msg.payload[70]; //high\nfrequency = Number(parseFloat(fltView[0]).toFixed(2));\n// Apparent Power VA\nintView[0]  = msg.payload[19]; //low\nintView[1]  = msg.payload[18]; //high\napparant    = Number(parseFloat(fltView[0]).toFixed(0));\n// Voltage\nintView[0] = msg.payload[1]; //low\nintView[1] = msg.payload[0]; //high\nvolt = Number(parseFloat(fltView[0]).toFixed(2));\n// total imported kW/h\nintView[0] = msg.payload[73]; //low\nintView[1] = msg.payload[72]; //high\nimportkWh = parseFloat((fltView[0]).toFixed(3));\n// total exported kW/h\nintView[0] = msg.payload[75]; //low\nintView[1] = msg.payload[74]; //high\nexportkWh = parseFloat((fltView[0]).toFixed(3));\n//active watt (already PF corrected in meter)\nintView[0] = msg.payload[13]; //low\nintView[1] = msg.payload[12]; //high\nwatt = parseFloat(fltView[0].toFixed(0));\n\n// adding previous ambientTemp to meterValues\nvar meterValues = global.get('meterValues') || null;\nvar ambientTemp = 0;\nif (meterValues != null) { ambientTemp = meterValues.ambientTemp }\n// store meter values and ambient temperature\nmeterValues = { PowerFactor,frequency,watt,apparant,volt,importkWh,exportkWh,ambientTemp};\nglobal.set('meterValues',meterValues);\n\n// Averaging values during a 5 minute period\n// cummulate watt and count each accumulation\nvar meterWatt = global.get('meterWatt') || \"\";\nvar pvowatt = meterWatt.pvowatt         || 0;\nvar pvocount = meterWatt.pvocount       || 0;\n\npvowatt = Number(pvowatt + watt);       // pvowatt = active watt (real)\npvocount = (pvocount+1);                // increase the counter\nmeterWatt = {pvocount,pvowatt};         // store watt\nglobal.set('meterWatt',meterWatt);      // store values in Global\n\n// shows underneat the node the last time a PVOutput transmit was done\nvar date=new Date();\nlastTime = ( ('00' + date.getHours()).slice(-2) + 'H' + ('00' + date.getMinutes()).slice(-2) );\nnode.status({text:((pvowatt / pvocount).toFixed(0)) + \" Watt at \" + lastTime + \" (\" + pvocount +\" samples)\"});\n\n} else { \nnode.status({fill:\"yellow\",shape:\"dot\",text:\"kWh meter not answering\"});\n}\n","outputs":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":620,"y":110,"wires":[],"icon":"font-awesome/fa-braille"},{"id":"20b092ab.afa95e","type":"modbus-getter","z":"801b0f90.623ea8","g":"8ae4ca85.96da48","name":"kWh meter","showStatusActivities":true,"showErrors":true,"logIOActivities":true,"unitid":"1","dataType":"InputRegister","adr":"0","quantity":"96","server":"7a08bc0a.6b386c","useIOFile":false,"ioFile":"","useIOForPayload":true,"emptyMsgOnFail":true,"keepMsgProperties":true,"x":450,"y":110,"wires":[["f253db9e.62f168"],[]],"outputLabels":["Buffer",""]},{"id":"b6dc2565.805b88","type":"inject","z":"801b0f90.623ea8","g":"8ae4ca85.96da48","name":"Interval","props":[{"p":"payload"},{"p":"ip","v":"10.10.100.253","vt":"str"}],"repeat":"","crontab":"*/5 5-23 * * *","once":true,"onceDelay":0.1,"topic":"","payload":"[127,3,117,148,0,73,213,194]","payloadType":"bin","x":160,"y":110,"wires":[["23c7dabd.782b7e"]],"outputLabels":["Retrieve values"],"icon":"font-awesome/fa-clock-o","info":"msg.delay determines the interval. The interval is repeated and then renewed every 5 minutes\nYou hav to enter is in ms so 2 seconds is 2000 ms."},{"id":"407e80c8.75639","type":"subflow:ff01618d.60809","z":"801b0f90.623ea8","g":"4b48967c.fcfc3","name":"Status transmit: PVOutput","env":[],"x":600,"y":240,"wires":[]},{"id":"3de325a.37c68da","type":"function","z":"801b0f90.623ea8","g":"4b48967c.fcfc3","name":"PVO credentials & \\n reset day values","func":"// needed loging data for PVOutput\nvar PVOsystemid = 'XXXXX';\nvar PVOAPIkey   = 'your PVoutputkey'\nvar resetday    = msg.resetday;\n\n// Reset peak Watt at the end of the day\nif (resetday) {\n    text = global.get('PVpeakWatt');\n    newtext = (\"Prev. day, \" + text)\n    global.set('PVpeakWatt',newtext)\n//    global.set('PValues',null)\n} // END IF resetday\n\n// shows underneat the node the last time a PVOutput transmit was done\nvar date=new Date();\nlastTime = ( ('00' + date.getHours()).slice(-2) + 'H' + ('00' + date.getMinutes()).slice(-2) ); //+ \":\" + ('00' + date.getSeconds()).slice(-2) );\nnode.status({text:\"Transmit time: \" + lastTime});\n\n// set payload to contain the needed PVOutput credentials\nreturn { PVOsystemid,PVOAPIkey,resetday };\n//return msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":390,"y":230,"wires":[["f72364d9.d212f8","407e80c8.75639"]],"outputLabels":["Faraday","PVOresult"],"icon":"font-awesome/fa-clock-o"},{"id":"adf4fe67.082f88","type":"delay","z":"801b0f90.623ea8","g":"4b48967c.fcfc3","name":"2 seconds delay","pauseType":"delay","timeout":"2","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":265,"y":200,"wires":[["3de325a.37c68da"]],"l":false,"info":"This delay gives time to retrieve the ambient temperature so this can be sent instead of the temperature of the inverter, when it is off-line."},{"id":"93b11507.07f84","type":"inject","z":"801b0f90.623ea8","g":"4b48967c.fcfc3","name":"Interval","props":[],"repeat":"","crontab":"*/5 0-23 * * *","once":false,"onceDelay":0.1,"topic":"","payloadType":"str","x":160,"y":230,"wires":[["adf4fe67.082f88","5144e0a6.1432f"]],"outputLabels":["every 5 min."],"icon":"font-awesome/fa-clock-o","info":"Prefix max. 6 charactes/numbers\nWhen sending also to PVOoutput.org then add the\nfollowing string (a-z)\n\npayload.PVOid = your PVO system-id (five numbers)"},{"id":"5144e0a6.1432f","type":"link out","z":"801b0f90.623ea8","g":"4b48967c.fcfc3","name":"Temperature/fan-control trigger","links":["fb618501.400cb8"],"x":265,"y":230,"wires":[],"icon":"font-awesome/fa-arrow-down"},{"id":"8c79c62.c195d38","type":"inject","z":"801b0f90.623ea8","g":"4b48967c.fcfc3","name":"23H59","props":[{"p":"resetday","v":"true","vt":"bool"}],"repeat":"","crontab":"59 23 * * *","once":false,"onceDelay":0.1,"topic":"","x":160,"y":200,"wires":[["adf4fe67.082f88"]],"outputLabels":["once a day"],"icon":"node-red/timer.svg","info":"Prefix max. 6 charactes/numbers\nWhen sending also to PVOoutput.org then add the\nfollowing string (a-z)\n\npayload.PVOid = your PVO system-id (five numbers)"},{"id":"671524d1.923f6c","type":"delay","z":"801b0f90.623ea8","g":"8ae4ca85.96da48","name":"clearer","pauseType":"delayv","timeout":"5","timeoutUnits":"minutes","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"x":355,"y":110,"wires":[["f253db9e.62f168"]],"icon":"node-red-node-rbe/rbe.png","l":false,"info":"This triggers after a number of seconds after the interval. If the interval is changed set tot the same value.\nThis delay is used to clear the values if there are none present. It displays under the CRC-check Node a message if there are no answers coming from the Inverter.\nThat message is normal when the inverter is off-line, This can be that there is no power from the soloar panels is provided or any other status that the inverter is not working.\nIt could also indicate a communication problem with the inverter."},{"id":"682d652e.797f7c","type":"trigger","z":"801b0f90.623ea8","g":"8ae4ca85.96da48","name":"","op1":"","op2":"0","op1type":"pay","op2type":"str","duration":"-25","extend":false,"overrideDelay":true,"units":"hr","reset":"","bytopic":"all","topic":"topic","outputs":1,"x":285,"y":110,"wires":[["671524d1.923f6c","516a7514.fae094","20b092ab.afa95e","ed785906.26fe78"]],"icon":"font-awesome/fa-repeat","l":false,"info":"Repeats the interval given by the inject node."},{"id":"23c7dabd.782b7e","type":"function","z":"801b0f90.623ea8","g":"8ae4ca85.96da48","name":"","func":"if (global.get('PVwatt') == null) { \n    msg.delay = 60000 } else { msg.delay = 5000 } // night and day\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":245,"y":110,"wires":[["682d652e.797f7c"]],"icon":"node-red/timer.svg","l":false},{"id":"ed785906.26fe78","type":"delay","z":"801b0f90.623ea8","g":"8ae4ca85.96da48","name":"clearer","pauseType":"delayv","timeout":"5","timeoutUnits":"minutes","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"x":355,"y":60,"wires":[["61584504.656bb4","4d1994b6.e68d54"]],"icon":"node-red-node-rbe/rbe.png","l":false,"info":"This triggers after a number of seconds after the interval. If the interval is changed set tot the same value.\nThis delay is used to clear the values if there are none present. It displays under the CRC-check Node a message if there are no answers coming from the Inverter.\nThat message is normal when the inverter is off-line, This can be that there is no power from the soloar panels is provided or any other status that the inverter is not working.\nIt could also indicate a communication problem with the inverter."},{"id":"f72364d9.d212f8","type":"function","z":"801b0f90.623ea8","g":"4b48967c.fcfc3","name":"Calc. kWh meter value","func":"//start of the measuring year was: 12345\n\nmaxvalue   = 99999; // maxvalue the meter can display\nstartmeter  = 96847.1;\n\nif (global.get('meterWatt') != null) {\n    meterValues = global.get('meterValues');\n    imported   = meterValues.importkWh;\n    exported   = meterValues.exportkWh;\n\n    calculated  = ((startmeter - exported) + imported ).toFixed(1);\n\n    // round counter?\n    if ( calculated < 0 )           {calculated = Number(maxvalue + calculated)}\n    if ( calculated > maxvalue )   {calculated = Number(calculated - maxvalue)}\n\nnode.status({text:\"Faradaymeter: \" + calculated + \" kW/h\"});\n} else {\n    node.status({text:\"No meterValues present.\"});\n}\n//return msg;","outputs":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":610,"y":190,"wires":[],"icon":"font-awesome/fa-soccer-ball-o"},{"id":"ba84d31bc6af60fc","type":"function","z":"ff01618d.60809","name":"Calculate kWhmeter value","func":"//start of the measuring year was: 96443 \n\nvar d=new Date();\ndate    = (('00' + d.getDate()).slice(-2)  + '-' + ('00' + (d.getMonth()+1)).slice(-2)) ;\ntime    = (('00' + d.getHours()).slice(-2)  + ':' + ('00' + (d.getMinutes())).slice(-2)) ;\nt       = (('00' + d.getMinutes()).slice(-2)).slice(-1);\n\nmaxvalue    = 99999; // maxvalue the meter can display\nstartmeter  = 96847.1;\nkWhmeter    = 0;\n\n//if (date.getDate() == 1 && d.getHours() == 1 ) { // first of the month at one hour in the night\nif ( t == 0) { // every 10 minutes\n if (global.get('meterValues') != null) {\n    meterValues = global.get('meterValues');\n    kWhmeter  = ((startmeter - meterValues.exportkWh) + meterValues.importkWh ).toFixed(1);\n\n    // did the counter zeroed counter (overflow)?\n    if ( kWhmeter < 0 )         {kWhmeter = Number(maxvalue + kWhmeter)}\n    if ( kWhmeter > maxvalue )  {kWhmeter = Number(kWhmeter - maxvalue)}\n    msg.payload = { date,time,kWhmeter};\n   return msg;\n }\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":290,"y":240,"wires":[["a44a73dbcb94d743"]],"icon":"font-awesome/fa-soccer-ball-o"},{"id":"a44a73dbcb94d743","type":"file","z":"ff01618d.60809","name":"save-kWhmeter","filename":"/opt/goodwe/nodered/meterstand.txt","appendNewline":true,"createDir":true,"overwriteFile":"false","encoding":"ascii","x":510,"y":240,"wires":[[]]}]


Ik zend mijn gegevens naar PVOutput en ondertussen ook Tarrifs ontdekt en nu zie ik ook hoeveel geld mijn stroom opbengt onder aftrek van vaste kosten en wat ik aan stroom heb geïmporteerd. De engergie belasting laat ik buiten beschouwing want dat is te ontduikelijk voor mij. Ik wil mijn initele stand doorgeven aan mijn leverancier en ik wacht nog op antwoord hoe dat gaat.

Ik verbruik veel minder dan ik produceer en ik zit nu al ergens in december 2020 met mijn stroom teruglevering. Dat zou erop neerkomen dat ik geen energie belasting betaal en dus ook geen heffingskorting krijg (ongeveer 527 Euro). Dat is toch weer een nadeel van zonnepanelen dat je heffingskorting misloopt.

Of zie ik dat verkeerd en gaat de heffinskorting per dag en is onafhankelijk van het verbruik?

Ik betaalde vorig jaar al bijna niets voor mijn stroom omdat de heffingskort net zo veel was wat ik verbruikte. In een heel jaar moest ik 35 Euro betalen aan stroom.

Acties:
  • 0 Henk 'm!

  • JeroenE
  • Registratie: Januari 2001
  • Niet online
Anoniem: 1582350 schreef op zondag 15 augustus 2021 @ 13:34:
Of zie ik dat verkeerd en gaat de heffinskorting per dag en is onafhankelijk van het verbruik?
Je ziet dat inderdaad verkeerd. Zie hier en lees daar:
Wie in een jaar minder energiebelasting betaalt dan het bedrag van de belastingvermindering, krijgt toch de volledige belastingvermindering.

Acties:
  • 0 Henk 'm!

Anoniem: 1582350

JeroenE schreef op zondag 15 augustus 2021 @ 19:27:
[...]
Je ziet dat inderdaad verkeerd. Zie hier en lees daar:
[...]
Dank Jeroen en ik heb nog een draaischijf meter dus aantoonbaar is er geen energie verbruik omdat de teruglevering hoger veel is. Maar goed, als het donker is brengen de zonnepanelen niets op en dan neem ik sowieso stroom af.

Hieronder de informatie van de site van Essent en dat geeft moed. Ik heb voor de zekerheid ook nog de vraag uitstaan bij hun over dit.
Geen verbruik – geen heffingskorting
Volgens de wet moet er sprake zijn van een levering van elektriciteit. Indien er geen levering heeft
plaatsgevonden en dus ook geen (gemeten) verbruik van elektriciteit, kan de belastingvermindering niet worden toegepast. Indien dus geen energiebelasting wordt geheven bestaat er ook geen recht op de belastingvermindering.

Dit is niet van toepassing bij eventuele teruglevering van elektriciteit via dezelfde aansluiting als waar de levering op plaatsvindt. Indien de teruglevering van elektriciteit (bij wind- en zonne-energie) het verbruik van elektriciteit overtreft, zal na toepassing van de zgn. EB-salderingsregeling feitelijk geen energiebelasting verschuldigd zijn. In dergelijke gevallen is er initieel wel sprake geweest van enige levering van elektriciteit en bestaat er wel recht op de belastingvermindering.

Acties:
  • +1 Henk 'm!

  • JeroenE
  • Registratie: Januari 2001
  • Niet online
Anoniem: 1582350 schreef op zondag 15 augustus 2021 @ 21:48:
Dank Jeroen en ik heb nog een draaischijf meter dus aantoonbaar is er geen energie verbruik omdat de teruglevering hoger veel is. Maar goed, als het donker is brengen de zonnepanelen niets op en dan neem ik sowieso stroom af.
Precies, dus desnoods maak je een filmpje dat je meter vooruitloopt (en het liefst de kWh teller ook omhoog gaat natuurlijk).

Dat zij een meetmethode hebben die dit niet makkelijk aantoont zou in principe jouw probleem niet moeten zijn, maar je hebt natuurlijk wel kans dat als je die richting opgaat met argumentatie dat ze dan een digitale meter willen installeren die het verbruik en opwek apart meet. Niet dat je dat per se niet moet willen, maar ik neem even aan dat het een bewuste keuze is van jou om nog steeds een draaischijfmeter te hebben.

Anoniem: 1582350

Voor de volledigheid nog de reactie van mijn energieleverancier:
U heeft namelijk sowieso recht op de vermindering energiebelasting. Deze wordt zoals altijd gewoon berekend op uw jaarrekening, ondanks het terugdraaien van de meter.

Acties:
  • 0 Henk 'm!

Anoniem: 1582350

Afbeeldingslocatie: https://tweakers.net/i/4WxbakXhf7lpU6sA1UguSSz2h7c=/full-fit-in/4920x3264/filters:max_bytes(3145728):no_upscale():strip_icc():fill(white):strip_exif()/f/image/uykkq2bdDNvCYIGp9RODjJPQ.jpg?f=user_large

Weer verder tweaking and tuning en nu zit er een 250ms vertraging op het uitlezen van de omvormer om de kWh-meter meer tijd te geven om gegevens op te slaan voordat de PV node die ophaalt.
Ook kan er nu in de nacht een andere uitlees frequentie worden gebruikt voor de omvormer die dan off-line is.

Ik ben terug gegaan naar de basis met het berekenen van Watt AC bij de omvormer door het wattage aan de DC zijde door het voltage aan de DC zijde te delen en dan te vermenigvuldigen met het wattage aan aan de AC zijde. Ik hoop zo, beter te kunnen bepalen wat het intrne verbruik is voor de kWh-meter.

Anoniem: 1582350

Nu alles een beetje werkt zoals het graag zie was de GoodWe weer in zicht en dan vooral dat eDay alleen maar tiende kW/h kent.

Nu heb ik dus ook informatie via de kWh-meter hoeveel er nu geëxporteerd wordt en die gegevens kan ik zolang de GoodWe nog zit te kauwen voor een tiende kW/h die export toevoegen. Dit doet hij zolang de GoodWe nog geen stap heeft gemaakt naar de volgende en dat kunnen er ook meer dan één stap zijn als de zon goed brand.

Een extra is dat als de geleende export waarde meer dan een hele tiende stap is dat die dan de stap van GoodWe overschrijft. Een soort overflow die dan gebruikt wordt. Als de waarde lager is dan een tiende of een meervoud daarvan dan gaat de eDay waarde naar PVOutput. 6300, 10300 en 10400 in het tweede plaatje hieronder.

De geleende waarde kan nooit hoger zijn dan wat de GoodWe produceert en het verschil is het intern gebruik in huis.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// new way to calculate (v1) the generation of power, instead of only looking at the exported kW/h from the PV which steps are to large
    if (global.get('PValues') != null) { eDayADD = 0; // default and reset value
    if (global.get('PVwatt') != null) {global.set('pvwatt','not-nul')} 
      if (global.get('PVwatt') != null) { eDay = v1; // store current from PV and use if it increases
       meterValues = global.get('meterValues') ||""; kWhexport = Number(meterValues.exportkWh * 1000) || 0;
       eDayLast = global.get('eDayLast'); eDayADDtmp=Number(global.get('eDayADD')+Number(kWhexport-global.get('kWhexportLast')))
       if (global.get('eDayLast') == eDay ) { eDayADD = eDayADDtmp } // use registered kWh meter export
// use the calculated value if is larger than the incremental step by the inverter. Only one time 
        if (eDayLast < eDay && eDayADDtmp > Number(eDay - eDayLast)) { eDayADD = Number(eDayADDtmp - Number(eDay - eDayLast)) }
      } // if meterWatt
    v1 = Number(v1 + eDayADD) // v3 = importedkWh
    global.set('eDayADD',eDayADD) // store for cummulation and reset if needed
    global.set('eDayLast',eDay) // store for comparing
    } // if PVwatt
if (global.get('meterValues') != null) {global.set('kWhexportLast',kWhexport)} // export for comparing


De waarde PValues geeft mij de eDay (dag opbrengst) in die grote stappen van een tiende kW/h. PVwatt geeft aan dat de omvormer werkt en is die waarde null dan staat de omvormer uit.

Ik gebruik kWhexportLast, eDaylast als vorige waarde opdat ik kan berekenen/vergelijken.

Voorbeeld van zoals het en de teller gaat niet snel omhoog:
Afbeeldingslocatie: https://tweakers.net/i/FN24rpQ_eFRA6-9-909J3DkLV8A=/full-fit-in/4920x3264/filters:max_bytes(3145728):no_upscale():strip_icc():fill(white):strip_exif()/f/image/8YcWLq56ZB9XF1J7rGH41JCL.jpg?f=user_large

Hier de versie die leent van de export van kWh-meter:
Afbeeldingslocatie: https://tweakers.net/i/f8VoL5mfEnpTbTgVULllCCSEnPI=/full-fit-in/4920x3264/filters:max_bytes(3145728):no_upscale():strip_icc():fill(white):strip_exif()/f/image/aZH4JRQseW0hwcr1hdSM5Sdo.jpg?f=user_large

Anoniem: 1582350

De afname/verbruiks kant heb ik simpler opgezet voor PVOutput. Zolang de eDay niet omhoog gaat zend ik voor v3 (verbruik) een null. Op het moment hij een stap omhoog gaat zend ik het gemeten verbruik in v3.

eDay gaat in grote stappen omhoog en zou anders de grafiek in blokje omhoog laten gaan. Daarom laat PVO zelf middelen door een null te zenden.

Tot nu toe zond ik alleen via v3 de import van de kWh-meter en nu vereken ik het verschill tussen eDay en de export kWh-meter mee.
Nu klopt de grafiek en het verbruik stijgt nu de gehele dag door en kan zelfs de opbrengst overstijgen.

Ook ben ik overgaan om aan het begin van de dag de teller op nul te zetten. Dat maskt het op PVOutput gemakkelijker en de c1 waarde hoeft dan niet gezet te worden.

code:
1
2
3
4
5
6
// set exportkWhDelta
    exportkWhDelta = (global.get('PValues.eDay')-exportkWhDay)
    if ( global.get('PValues.eDay') == null ) { exportkWhDelta = exportkWhDay } // start of the production day
// testing with avaraging by PVOutput by sending 'null'
    v3 = importkWhDay + exportkWhDelta
    if ( flow.get('eDayLast') == global.get('PValues.eDay')) {  v3 = null }


De omvormer gebruikt stroom tijdens het starten in dat is ongeveer 0,04kWh.

Voorbeeld:
Afbeeldingslocatie: https://tweakers.net/i/5xp1mKakvKvYZw9Sf8P2oNjd2OM=/800x/filters:strip_icc():strip_exif()/f/image/4o2ezfapZqZ59DhAjbFmHISO.jpg?f=fotoalbum_large

[ Voor 42% gewijzigd door Anoniem: 1582350 op 02-09-2021 12:53 ]


  • stroom
  • Registratie: Januari 2009
  • Laatst online: 02-07 22:26
Zie dat ie tot 9pm nog vrolijk lijkt te leveren terwijl het dan echt wel donker is. Hier ook net even gekeken, volgens SEMS portal levert ie nog 77W, terwijl de omvormer echt uit is ....
Snapt iemand dat?

Anoniem: 1582350

Ja dat klopt en pas tot de omvormer echt uit gaat geeft die nog een lage waarde door. Als je kijkt naar het voltage zie die snel dalen wat aangeeft dat er weinig echte stroom opgewekt wordt.

Afbeeldingslocatie: https://tweakers.net/i/VnarO3KC9tWP7UpNbgwW-HMMLQ0=/800x/filters:strip_icc():strip_exif()/f/image/q8lPLNQ9yhKDd9P6ycfx2wyr.jpg?f=fotoalbum_large

Acties:
  • 0 Henk 'm!

  • Maasluip
  • Registratie: April 2002
  • Laatst online: 10:48

Maasluip

Frontpage Admin

Kabbelend watertje

Dat is gewoon een fout in de Goodwe. Die van mij doet dat ook, volgens de omvormer wekt hij nog 30-45 minuten lang iets op nadat mijn kWh meter de laatste teruglevering heeft geregistreerd.
Maar de Goodwe logging heeft nog wel meer onhebbelijkheden. Valt het je niet op dat hij zijn teruglevering in hondersten kWh registreert, maar het dagtotaal is altijd op een tiende kWh.

Signatures zijn voor boomers.


Acties:
  • 0 Henk 'm!

Anoniem: 1582350

Maasluip schreef op zondag 12 september 2021 @ 11:25:
Dat is gewoon een fout in de Goodwe. Die van mij doet dat ook, volgens de omvormer wekt hij nog 30-45 minuten lang iets op nadat mijn kWh meter de laatste teruglevering heeft geregistreerd.
Maar de Goodwe logging heeft nog wel meer onhebbelijkheden. Valt het je niet op dat hij zijn teruglevering in hondersten kWh registreert, maar het dagtotaal is altijd op een tiende kWh.
Kun je ook kijken naar het starten in de ochtend. Als het daar ook het geval is dan kan alles onder de +/- 75 watt worden genegeerd.

Acties:
  • +1 Henk 'm!

  • Maasluip
  • Registratie: April 2002
  • Laatst online: 10:48

Maasluip

Frontpage Admin

Kabbelend watertje

In de ochtend klopt het wel. Dat kan ook niet echt eerder zijn want de omvormer moet echt opstarten. Als je eens in de morgen bij de omvormer gaat zitten zie je dat hij inschakelt, dan zet hij een belasting op de panelen, je ziet de spanning zakken en als die te laag uitkomt dan schakelt hij weer uit en probeert een minuut later weer.

En zet het minimum maar op 50 W, dat lijkt beter te zijn. Ik zal morgen eens kijken of ik de logs eens kan analyseren.

Signatures zijn voor boomers.


Acties:
  • +3 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Nu online
Afbeeldingslocatie: https://tweakers.net/i/v3O8gCuiNJRE3vVTt0Loi4QzzR0=/800x/filters:strip_icc():strip_exif()/f/image/4FnX0x11r57rCy2cpeSgYCnL.jpg?f=fotoalbum_large

Afbeeldingslocatie: https://tweakers.net/i/15xM2AeLsrOJb2fivjGamjOiEgY=/800x/filters:strip_icc():strip_exif()/f/image/I7q80FHVC0QJmHZHO2xg3Y23.jpg?f=fotoalbum_large

Afbeeldingslocatie: https://tweakers.net/i/0L1SVCOeY1ariD--3UFpUPW8Zeg=/800x/filters:strip_icc():strip_exif()/f/image/dCEnMK8LY9EluYE2Q8T8wdqZ.jpg?f=fotoalbum_large

Rood = Goodwe
Geel = externe kWh-meter, S0 uitgelezen via Youless LS120, resolutie 2000 imp/kWh

Het is vooral in de ochtend en in de avond dat de Goodwe waardes bedenkt die niet kunnen kloppen.
Op het midden van de dag geeft de Goodwe juist zo'n ~37W minder aan dan de externe meter. De waarheid zal ergens in het midden liggen... Betreft een installatie recht op het zuiden ligt, vandaar de piek rond het middaguur.

[ Voor 18% gewijzigd door ThinkPad op 13-09-2021 10:03 ]


Acties:
  • +1 Henk 'm!

  • Proton_
  • Registratie: November 2011
  • Laatst online: 21:25

Proton_

Moderator Wonen & Mobiliteit 

Team Welles

Om 8:00 en 18:10, rond de 400W, lijkt een discontinuïteit te zitten, alsof hij op een andere meting ('gokalgoritme') overstapt.
Het zou kunnen dat hij dan op een andere terugleverstrategie overstapt?

Dit vraagt om een scatterplot van goodwe vs LS120, het lijkt alsof hier wel een kalibratiecurve van te maken is (hoewel ik niet weet hoe dat zich vertaalt naar andere omvormers, van hetzelfde en een ander type).

Het ik-wil-een-warmtepomp FAQ topic- '23 MG5, douchen met wtw en Auer Edel Eau, verwarming met Vaillant Arotherm Plus.


Acties:
  • 0 Henk 'm!

Anoniem: 1582350

@Maasluip eDay gaat inderdaad in tienden en aan PVOutput zend ik alleen de eDay waarde als die verandert en blijft die hetzelfde dan zend ik een null. Ik zend altijd de geproduceerde Watt en PVOutput maakt er dan uiteindelijk gemiddelde waarden van.

@ThinkPad Ik neem aan dat de kWh meter die van de netwerkbeheerder is en hoe filter je dan het directe verbruik van de opgewerkte stroom uit.
Dit is het verschil tussen de opgewekte en geëxporteerde stroom minus eventueel geïmporteerde stroom.

Acties:
  • 0 Henk 'm!

  • Maasluip
  • Registratie: April 2002
  • Laatst online: 10:48

Maasluip

Frontpage Admin

Kabbelend watertje

Ik heb een spreadsheet gemaakt met een vergelijking tussen de logging van Goodwe en die van de Homewizard kWh meter.
De metingen van de kWh meter zijn ook op 5 minuten afgerond, dus dat kan tot 4 minuten eerder zijn.

Meestal geeft de Goodwe een te lage dagopbrengst, zo'n 1-2%, maar soms zijn er wat uitschieters.

Signatures zijn voor boomers.


Acties:
  • 0 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Nu online
Anoniem: 1582350 schreef op maandag 13 september 2021 @ 14:22:
@ThinkPad Ik neem aan dat de kWh meter die van de netwerkbeheerder is en hoe filter je dan het directe verbruik van de opgewerkte stroom uit.
Dit is het verschil tussen de opgewekte en geëxporteerde stroom minus eventueel geïmporteerde stroom.
Nee, het is een losse digitale DIN-rail kWh meter op de groep van de zonnepanelen. Hij meet alleen de productie van de omvormer.

Bij mij geeft de Goodwe qua dagopbrengst trouwens juist hoger aan, meestal zo'n 0,2-0,4 kWh per dag.

[ Voor 9% gewijzigd door ThinkPad op 13-09-2021 15:04 ]


Acties:
  • 0 Henk 'm!

  • hansdegit
  • Registratie: Februari 2005
  • Laatst online: 02-07 10:08
Pinobigbird schreef op vrijdag 11 juni 2021 @ 12:04:
@Onno ! Ik heb 808.808.06 op m'n GW5K-DT en het lokaal uitlezen kan gewoon. De voorwaarde "ARM firmware of 13 or higher" die je in dit topic regelmatig tegenkomt is alleen voor sommige modellen van toepassing.
De test is of je met de app SolarGo kan werken. Zo ja, dan zit je goed.
Jammer, de SolarGo app werkt blijkbaar alleen op de wifi interface. Ik heb de bedrade LAN module en kan de omvormer niet vinden.

Gitje's Stroomfabriek: 6095 Wp Yingli Panda, 2520 Wp Suntech, Tigo Monitoring & Schaduwmanagement, Kostal Piko 10.1


Acties:
  • 0 Henk 'm!

  • Kodess
  • Registratie: September 2009
  • Laatst online: 15:17
hansdegit schreef op dinsdag 14 september 2021 @ 08:43:
[...]

Jammer, de SolarGo app werkt blijkbaar alleen op de wifi interface. Ik heb de bedrade LAN module en kan de omvormer niet vinden.
de lan module heeft ook de wifi chip zit ook in de lan variant en die zend volgens mij ook een AP uit, kan je dus nog even proberen :9

Enyaq iV 80 - 5135 Wp


Acties:
  • 0 Henk 'm!

Anoniem: 1582350

Afbeeldingslocatie: https://tweakers.net/i/3CmA8kKfEYSTBe7Fusfwonki6gI=/full-fit-in/4920x3264/filters:max_bytes(3145728):no_upscale():strip_icc():fill(white):strip_exif()/f/image/xa9XaaXXBN9pSFIeYLBG2XoZ.jpg?f=user_large

Vandaag steeg de opbrengst heel langzaam en zo is goed te zien wat er voorbij komt.

In blauw heb ik het verbruik aangegeven wat de lijn optimaal zou moeten zijn en de rode lijn heb ik aangepast om naar wat ik zou verwachten. De koelkast sloeg toen aan en deed het stroom verbruik stijgen en die lijn is weg gegumd.

Voltage stijgt langzaam totdat halverwege het plateau de omvormer een beetje stroom genereert.

Tot 75 Watt wordt de gemeten stroom van de kW/h meter in de meterkast genomen en daarboven vindt er een verrekening plaats met de genereerde stroom. Ik kan die boven drempel overigens hoger zetten.

Te zien is dat de omvormer stroom trekt uit het net. De meting loopt tot 75 Watt opbrengst en daarna is dan de verrekening van toepassing.

Hoe zou ik de blauwe lijn kunnen berekenen uit de opbrengst en het verbruik?

Toevoeging, de gezonden gegevens:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{"date":"20210914","time":"06:50","used_kWh":null,"usedWatt":34,"temp":0,"volt":228.73}
{"date":"20210914","time":"06:55","used_kWh":null,"usedWatt":34,"temp":0,"volt":228.24}
{"date":"20210914","time":"07:00","used_kWh":null,"usedWatt":34,"temp":0,"volt":229.05}
{"date":"20210914","time":"07:05","eDay":null,"gen_Watt":0,"used_kWh":580,"usedWatt":"34","temp":21.5,"volt":238.9}
{"date":"20210914","time":"07:10","eDay":null,"gen_Watt":0,"used_kWh":null,"usedWatt":"33","temp":21.9,"volt":252.2}
{"date":"20210914","time":"07:15","eDay":null,"gen_Watt":0,"used_kWh":null,"usedWatt":"33","temp":22.1,"volt":266}
{"date":"20210914","time":"07:20","eDay":null,"gen_Watt":0,"used_kWh":null,"usedWatt":"33","temp":22.2,"volt":274.1}
{"date":"20210914","time":"07:25","eDay":null,"gen_Watt":0,"used_kWh":null,"usedWatt":"33","temp":22.4,"volt":279.5}
{"date":"20210914","time":"07:30","eDay":null,"gen_Watt":5,"used_kWh":null,"usedWatt":"33","temp":22.5,"volt":279.6}
{"date":"20210914","time":"07:35","eDay":null,"gen_Watt":74,"used_kWh":null,"usedWatt":"88","temp":23.3,"volt":247.2}
{"date":"20210914","time":"07:40","eDay":null,"gen_Watt":77,"used_kWh":null,"usedWatt":"85","temp":24,"volt":258.1}
{"date":"20210914","time":"07:45","eDay":null,"gen_Watt":80,"used_kWh":null,"usedWatt":"81","temp":24.6,"volt":259.3}
{"date":"20210914","time":"07:50","eDay":null,"gen_Watt":83,"used_kWh":null,"usedWatt":"205","temp":24.9,"volt":261.7}
{"date":"20210914","time":"07:55","eDay":null,"gen_Watt":87,"used_kWh":null,"usedWatt":"218","temp":25.3,"volt":260.6}
{"date":"20210914","time":"08:00","eDay":null,"gen_Watt":90,"used_kWh":null,"usedWatt":"208","temp":25.6,"volt":259.5}
{"date":"20210914","time":"08:05","eDay":null,"gen_Watt":93,"used_kWh":null,"usedWatt":"199","temp":25.9,"volt":261.2}

[ Voor 46% gewijzigd door Anoniem: 1582350 op 14-09-2021 16:37 ]


Anoniem: 1582350

Een nieuwe dag een nieuwe ochtendmeting. Ik heb nu het verrekenen vanaf 160 Watt opbrengst staan en daaronder wordt de geïmporteerde stroom weergegeven door de rode lijn. Groen is opbrengst PV en paars het voltage.

In ruste is het stroomverbruik 32 Watt en zodra dat onder de 30 Watt komt dan wordt er 30 Watt weergegeven. Dus de 31 en 30 Watts is dat eronder geweest. De frequentie van de meting is elke 5 seconden en doorgifte elke 5 minuten.

Ik heb nu die ondergrens aangepast naar kleiner dan 1 en kan zo nog een kleine opbrengst toch zien.

Dit is een ander beeld dan in mijn vorige bijdrage hierboven het een aantal dagen aankijken hoe dit gaat ontwikkelen lijkt mij verstandig.

Afbeeldingslocatie: https://tweakers.net/i/qqMfj71Bu8Kf-oQa2RPNac2QfKg=/full-fit-in/4920x3264/filters:max_bytes(3145728):no_upscale():strip_icc():fill(white):strip_exif()/f/image/LwHywuee7EUKqmsuXNYQ8DWk.jpg?f=user_large

Afbeeldingslocatie: https://tweakers.net/i/imRk32djfbn55GNizBbxJqFyaCY=/800x/filters:strip_icc():strip_exif()/f/image/TuLirnoeB0WyxsEXz5vhvSZH.jpg?f=fotoalbum_large

Anoniem: 1582350

ThinkPadd schreef op maandag 13 september 2021 @ 09:49:

[Afbeelding]

Rood = Goodwe
Geel = externe kWh-meter, S0 uitgelezen via Youless LS120, resolutie 2000 imp/kWh

Het is vooral in de ochtend en in de avond dat de Goodwe waardes bedenkt die niet kunnen kloppen.
Op het midden van de dag geeft de Goodwe juist zo'n ~37W minder aan dan de externe meter. De waarheid zal ergens in het midden liggen... Betreft een installatie recht op het zuiden ligt, vandaar de piek rond het middaguur.
Kun je hier ook het voltage aan de DC kant hier overheen leggen? Ik denk nl. dat als het voltage snel aan het dalen is aan kant van de panelen dat de middelaar in Goodwe nog even doorgaat en vandaar het optimisme daar.

  • ThinkPad
  • Registratie: Juni 2005
  • Nu online
Anoniem: 1582350 schreef op zaterdag 18 september 2021 @ 11:14:
[...]


Kun je hier ook het voltage aan de DC kant hier overheen leggen? Ik denk nl. dat als het voltage snel aan het dalen is aan kant van de panelen dat de middelaar in Goodwe nog even doorgaat en vandaar het optimisme daar.
Hier kun je misschien wel wat mee: https://snapshot.raintank...Lo67UxP2NiQnGEg0dTgZNO1dI

- Vermogen zoals door de Goodwe gerapporteerd
- Vermogen zoals door de externe kWh-meter (op de groep van de zonnepanelen) gerapporteerd
- Vpv, voltage van de string
- Ipv, stroom van de string

Anoniem: 1582350

Jij hebt eem mooie lijn bij Vpv en de mijne voor die dag is wat grilliger:

Afbeeldingslocatie: https://tweakers.net/i/EAVafQDX8SxhUmGt1NA3iefqJi4=/800x/filters:strip_icc():strip_exif()/f/image/2B6r4WX7mMSDqil6SMrMLexJ.jpg?f=fotoalbum_large

In de ochtend is de aangegeven productie best nauwkeurig en ik nog niet het log van vanavond bekeken hoe dat verliep.

Ik moet toch maar eens aan de extra kWh meter en het enige wat mij tegenhoud zijn de kabels die precies in lengte andersom zijn dan meegeleverd. Van de week eens kijken of ik die kabels zelf kan persen.

Acties:
  • 0 Henk 'm!

Anoniem: 1582350

Hieronder de grafiek en gegevens van het opstarten.

Afbeeldingslocatie: https://tweakers.net/i/deBHHMJNwDNuhWBq_x7kVu5AlPA=/800x/filters:strip_icc():strip_exif()/f/image/niSSt8DpM6jdWB7l16GrkHUt.jpg?f=fotoalbum_large
Opmerking: de rode lijn is Watt en niet delta32.

delta32 is mijn basis verbruikt van 32 Watt minus wat de kWh-meter aangeeft als geïmporteerde stroom.
PVvolt is het voltage aan panelen kant (DC) en PVwattAC is de berekende waarde aan de AC zijde van de omvormer. De factor is 270 gedeeld door PVvolt

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
{"date_time":"19-09 07:47","PVvolt":233,"PVwattAC":74,"watt":14,"delta32":18,"factor":1.1587982832618027}
{"date_time":"19-09 07:47","PVvolt":237.4,"PVwattAC":74,"watt":14,"delta32":18,"factor":1.1373209772535804}
{"date_time":"19-09 07:47","PVvolt":241.1,"PVwattAC":74,"watt":14,"delta32":18,"factor":1.1198672749896308}
{"date_time":"19-09 07:47","PVvolt":229,"PVwattAC":74,"watt":14,"delta32":18,"factor":1.1790393013100438}
{"date_time":"19-09 07:47","PVvolt":239.2,"PVwattAC":74,"watt":14,"delta32":18,"factor":1.12876254180602}
{"date_time":"19-09 07:48","PVvolt":231.6,"PVwattAC":75,"watt":13,"delta32":19,"factor":1.16580310880829}
{"date_time":"19-09 07:48","PVvolt":231.8,"PVwattAC":75,"watt":13,"delta32":19,"factor":1.1647972389991372}
{"date_time":"19-09 07:48","PVvolt":232.4,"PVwattAC":75,"watt":14,"delta32":18,"factor":1.161790017211704}
{"date_time":"19-09 07:48","PVvolt":241.6,"PVwattAC":74,"watt":13,"delta32":19,"factor":1.1175496688741722}
{"date_time":"19-09 07:48","PVvolt":236.2,"PVwattAC":75,"watt":13,"delta32":19,"factor":1.1430990685859441}
{"date_time":"19-09 07:48","PVvolt":237,"PVwattAC":75,"watt":13,"delta32":19,"factor":1.139240506329114}
{"date_time":"19-09 07:49","PVvolt":241.4,"PVwattAC":74,"watt":12,"delta32":20,"factor":1.1184755592377795}
{"date_time":"19-09 07:49","PVvolt":236.1,"PVwattAC":75,"watt":13,"delta32":19,"factor":1.1435832274459974}
{"date_time":"19-09 07:49","PVvolt":235.1,"PVwattAC":75,"watt":12,"delta32":20,"factor":1.1484474691620588}
{"date_time":"19-09 07:49","PVvolt":245.4,"PVwattAC":75,"watt":13,"delta32":19,"factor":1.1002444987775062}
{"date_time":"19-09 07:49","PVvolt":239.4,"PVwattAC":75,"watt":14,"delta32":18,"factor":1.1278195488721805}
{"date_time":"19-09 07:49","PVvolt":237.4,"PVwattAC":75,"watt":14,"delta32":18,"factor":1.1373209772535804}
{"date_time":"19-09 07:50","PVvolt":243.5,"PVwattAC":75,"watt":13,"delta32":19,"factor":1.108829568788501}
{"date_time":"19-09 07:50","PVvolt":260.4,"PVwattAC":75,"watt":16,"delta32":16,"factor":1.0368663594470047}
{"date_time":"19-09 07:50","PVvolt":261.2,"PVwattAC":74,"watt":13,"delta32":19,"factor":1.0336906584992342}
{"date_time":"19-09 07:50","PVvolt":248,"PVwattAC":75,"watt":11,"delta32":21,"factor":1.0887096774193548}
{"date_time":"19-09 07:50","PVvolt":247.4,"PVwattAC":74,"watt":11,"delta32":21,"factor":1.0913500404203718}
{"date_time":"19-09 07:50","PVvolt":266.1,"PVwattAC":74,"watt":16,"delta32":16,"factor":1.0146561443066515}
{"date_time":"19-09 07:51","PVvolt":249.7,"PVwattAC":75,"watt":11,"delta32":21,"factor":1.0812975570684822}
{"date_time":"19-09 07:51","PVvolt":257.1,"PVwattAC":75,"watt":11,"delta32":21,"factor":1.0501750291715284}
{"date_time":"19-09 07:51","PVvolt":249.8,"PVwattAC":75,"watt":11,"delta32":21,"factor":1.0808646917534026}
{"date_time":"19-09 07:51","PVvolt":258.1,"PVwattAC":76,"watt":11,"delta32":21,"factor":1.0461061604029445}
{"date_time":"19-09 07:51","PVvolt":257.7,"PVwattAC":75,"watt":11,"delta32":21,"factor":1.0477299185098952}
{"date_time":"19-09 07:51","PVvolt":253.6,"PVwattAC":76,"watt":11,"delta32":21,"factor":1.0646687697160884}
{"date_time":"19-09 07:52","PVvolt":258.9,"PVwattAC":75,"watt":11,"delta32":21,"factor":1.0428736964078795}
{"date_time":"19-09 07:52","PVvolt":257.6,"PVwattAC":75,"watt":13,"delta32":19,"factor":1.0481366459627328}
{"date_time":"19-09 07:52","PVvolt":258,"PVwattAC":76,"watt":13,"delta32":19,"factor":1.0465116279069768}
{"date_time":"19-09 07:52","PVvolt":259.4,"PVwattAC":76,"watt":10,"delta32":22,"factor":1.040863531225906}
{"date_time":"19-09 07:52","PVvolt":252.6,"PVwattAC":76,"watt":10,"delta32":22,"factor":1.0688836104513064}
{"date_time":"19-09 07:52","PVvolt":252.8,"PVwattAC":76,"watt":11,"delta32":21,"factor":1.0680379746835442}
{"date_time":"19-09 07:53","PVvolt":254.3,"PVwattAC":76,"watt":12,"delta32":20,"factor":1.0617381046008652}
{"date_time":"19-09 07:53","PVvolt":252.9,"PVwattAC":76,"watt":11,"delta32":21,"factor":1.0676156583629892}
{"date_time":"19-09 07:53","PVvolt":254.5,"PVwattAC":76,"watt":10,"delta32":22,"factor":1.0609037328094302}
{"date_time":"19-09 07:53","PVvolt":261.4,"PVwattAC":76,"watt":9,"delta32":23,"factor":1.0328997704667178}
{"date_time":"19-09 07:53","PVvolt":260.9,"PVwattAC":76,"watt":11,"delta32":21,"factor":1.0348792640858568}
{"date_time":"19-09 07:53","PVvolt":253.4,"PVwattAC":76,"watt":9,"delta32":23,"factor":1.0655090765588002}
{"date_time":"19-09 07:54","PVvolt":250.8,"PVwattAC":76,"watt":9,"delta32":23,"factor":1.076555023923445}
{"date_time":"19-09 07:54","PVvolt":262.4,"PVwattAC":77,"watt":10,"delta32":22,"factor":1.0289634146341464}
{"date_time":"19-09 07:54","PVvolt":249,"PVwattAC":76,"watt":8,"delta32":24,"factor":1.0843373493975903}
{"date_time":"19-09 07:54","PVvolt":256.3,"PVwattAC":77,"watt":8,"delta32":24,"factor":1.0534529847834568}
{"date_time":"19-09 07:54","PVvolt":249.8,"PVwattAC":77,"watt":9,"delta32":23,"factor":1.0808646917534026}
{"date_time":"19-09 07:54","PVvolt":248,"PVwattAC":77,"watt":7,"delta32":25,"factor":1.0887096774193548}
{"date_time":"19-09 07:55","PVvolt":262,"PVwattAC":77,"watt":9,"delta32":23,"factor":1.0305343511450382}
{"date_time":"19-09 07:55","PVvolt":254.1,"PVwattAC":76,"watt":7,"delta32":25,"factor":1.062573789846517}
{"date_time":"19-09 07:55","PVvolt":250.7,"PVwattAC":77,"watt":7,"delta32":25,"factor":1.0769844435580376}
{"date_time":"19-09 07:55","PVvolt":255,"PVwattAC":77,"watt":7,"delta32":25,"factor":1.0588235294117647}
{"date_time":"19-09 07:56","PVvolt":245.2,"PVwattAC":78,"watt":8,"delta32":24,"factor":1.101141924959217}
{"date_time":"19-09 07:56","PVvolt":245.4,"PVwattAC":78,"watt":8,"delta32":24,"factor":1.1002444987775062}
{"date_time":"19-09 07:56","PVvolt":249.7,"PVwattAC":78,"watt":7,"delta32":25,"factor":1.0812975570684822}
{"date_time":"19-09 07:56","PVvolt":258.6,"PVwattAC":78,"watt":8,"delta32":24,"factor":1.0440835266821344}
{"date_time":"19-09 07:56","PVvolt":265.2,"PVwattAC":79,"watt":7,"delta32":25,"factor":1.0180995475113122}
{"date_time":"19-09 07:57","PVvolt":248.6,"PVwattAC":78,"watt":6,"delta32":26,"factor":1.086082059533387}
{"date_time":"19-09 07:57","PVvolt":254.2,"PVwattAC":79,"watt":5,"delta32":27,"factor":1.0621557828481512}
{"date_time":"19-09 07:57","PVvolt":264,"PVwattAC":79,"watt":8,"delta32":24,"factor":1.0227272727272727}
{"date_time":"19-09 07:57","PVvolt":257.8,"PVwattAC":78,"watt":7,"delta32":25,"factor":1.047323506594259}
{"date_time":"19-09 07:57","PVvolt":256.2,"PVwattAC":79,"watt":5,"delta32":27,"factor":1.053864168618267}
{"date_time":"19-09 07:58","PVvolt":258.7,"PVwattAC":79,"watt":6,"delta32":26,"factor":1.0436799381523}
{"date_time":"19-09 07:58","PVvolt":256.7,"PVwattAC":80,"watt":4,"delta32":28,"factor":1.0518114530580445}
{"date_time":"19-09 07:58","PVvolt":250,"PVwattAC":80,"watt":0,"delta32":32,"factor":1.08}
{"date_time":"19-09 07:58","PVvolt":252.9,"PVwattAC":80,"watt":4,"delta32":28,"factor":1.0676156583629892}
{"date_time":"19-09 07:58","PVvolt":260.3,"PVwattAC":79,"watt":4,"delta32":28,"factor":1.0372646945831732}
{"date_time":"19-09 07:58","PVvolt":258.8,"PVwattAC":80,"watt":5,"delta32":27,"factor":1.0432766615146831}
{"date_time":"19-09 07:59","PVvolt":257.1,"PVwattAC":80,"watt":0,"delta32":32,"factor":1.0501750291715284}
{"date_time":"19-09 07:59","PVvolt":258.2,"PVwattAC":81,"watt":4,"delta32":28,"factor":1.0457010069713402}
{"date_time":"19-09 07:59","PVvolt":259.4,"PVwattAC":80,"watt":6,"delta32":26,"factor":1.040863531225906}
{"date_time":"19-09 07:59","PVvolt":258.4,"PVwattAC":80,"watt":4,"delta32":28,"factor":1.0448916408668731}
{"date_time":"19-09 08:00","PVvolt":250.7,"PVwattAC":81,"watt":0,"delta32":32,"factor":1.0769844435580376}
{"date_time":"19-09 08:00","PVvolt":261.4,"PVwattAC":80,"watt":0,"delta32":32,"factor":1.0328997704667178}
{"date_time":"19-09 08:00","PVvolt":255.7,"PVwattAC":80,"watt":0,"delta32":32,"factor":1.0559249120062575}
{"date_time":"19-09 08:00","PVvolt":250.7,"PVwattAC":80,"watt":0,"delta32":32,"factor":1.0769844435580376}
{"date_time":"19-09 08:00","PVvolt":258.3,"PVwattAC":80,"watt":0,"delta32":32,"factor":1.0452961672473866}
{"date_time":"19-09 08:00","PVvolt":258.2,"PVwattAC":81,"watt":0,"delta32":32,"factor":1.0457010069713402}
{"date_time":"19-09 08:01","PVvolt":253,"PVwattAC":81,"watt":0,"delta32":32,"factor":1.0671936758893281}
{"date_time":"19-09 08:01","PVvolt":255.8,"PVwattAC":81,"watt":0,"delta32":32,"factor":1.055512118842846}
{"date_time":"19-09 08:01","PVvolt":266.8,"PVwattAC":81,"watt":0,"delta32":32,"factor":1.0119940029985006}
{"date_time":"19-09 08:01","PVvolt":262.9,"PVwattAC":81,"watt":0,"delta32":32,"factor":1.0270064663370104}
{"date_time":"19-09 08:01","PVvolt":255.6,"PVwattAC":81,"watt":0,"delta32":32,"factor":1.056338028169014}
{"date_time":"19-09 08:01","PVvolt":259,"PVwattAC":81,"watt":0,"delta32":32,"factor":1.0424710424710424}
{"date_time":"19-09 08:02","PVvolt":258,"PVwattAC":81,"watt":0,"delta32":32,"factor":1.0465116279069768}
{"date_time":"19-09 08:02","PVvolt":258.4,"PVwattAC":81,"watt":0,"delta32":32,"factor":1.0448916408668731}
{"date_time":"19-09 08:02","PVvolt":260.7,"PVwattAC":81,"watt":0,"delta32":32,"factor":1.0356731875719218}
{"date_time":"19-09 08:02","PVvolt":263.3,"PVwattAC":82,"watt":0,"delta32":32,"factor":1.025446259020129}
{"date_time":"19-09 08:02","PVvolt":253.2,"PVwattAC":83,"watt":0,"delta32":32,"factor":1.066350710900474}
{"date_time":"19-09 08:02","PVvolt":262,"PVwattAC":83,"watt":0,"delta32":32,"factor":1.0305343511450382}
{"date_time":"19-09 08:03","PVvolt":247,"PVwattAC":83,"watt":0,"delta32":32,"factor":1.0931174089068827}
{"date_time":"19-09 08:03","PVvolt":258.7,"PVwattAC":83,"watt":0,"delta32":32,"factor":1.0436799381523}
{"date_time":"19-09 08:03","PVvolt":261.3,"PVwattAC":83,"watt":0,"delta32":32,"factor":1.0332950631458093}
{"date_time":"19-09 08:03","PVvolt":261.2,"PVwattAC":83,"watt":4,"delta32":28,"factor":1.0336906584992342}
{"date_time":"19-09 08:03","PVvolt":257.7,"PVwattAC":84,"watt":5,"delta32":27,"factor":1.0477299185098952}
{"date_time":"19-09 08:03","PVvolt":264,"PVwattAC":84,"watt":5,"delta32":27,"factor":1.0227272727272727}
{"date_time":"19-09 08:04","PVvolt":256.3,"PVwattAC":84,"watt":4,"delta32":28,"factor":1.0534529847834568}
{"date_time":"19-09 08:04","PVvolt":256.4,"PVwattAC":84,"watt":6,"delta32":26,"factor":1.0530421216848675}
{"date_time":"19-09 08:04","PVvolt":263.3,"PVwattAC":84,"watt":7,"delta32":25,"factor":1.025446259020129}
{"date_time":"19-09 08:04","PVvolt":258.6,"PVwattAC":85,"watt":7,"delta32":25,"factor":1.0440835266821344}
{"date_time":"19-09 08:04","PVvolt":266.2,"PVwattAC":84,"watt":7,"delta32":25,"factor":1.0142749812171301}


Als ik nu 7:55 eruit pak zie ik dat van de gegenereerde +75 Watt er 25 Watt ook daadwerkelijk intern verbruikt kan worden. Een verschil van 50 Watt, die in het 'niets' opgaat.

code:
1
2
3
4
{"date_time":"07:55","PVvolt":262,"PVwattAC":77,"delta32":23}
{"date_time":"07:55","PVvolt":254.1,"PVwattAC":76,"delta32":25}
{"date_time":"07:55","PVvolt":250.7,"PVwattAC":77,"delta32":25}
{"date_time":"07:55","PVvolt":255,"PVwattAC":77,"delta32":25}

[ Voor 100% gewijzigd door Anoniem: 1582350 op 19-09-2021 10:20 ]


Acties:
  • 0 Henk 'm!

  • To_Tall
  • Registratie: September 2004
  • Laatst online: 01-07 18:35
Ik wil mijn GoodWe ook aansluiten. Gezien er geen “goede api” is om het semsportaal te gebruiken.

Ik heb een GoodWe 5k-DW. Naast de usb aansluiting ritten 2 com porten. De monteur wilde de losse onderdelen mee nemen maar heb gevraagd die te laten liggen.

Er zit een 2 pins connector en een 6 pins connector volgens de handleiding zouden dit RS485 aansluitingen moeten zijn.

Als ik de doppen er af haal zie ik bij de 2 Port connector een u staafje in de Port zitten. Geen idee of ik die er zo uit kan halen. En daar een eigen kabel aan te maken. En dan via een modulaire com Port aan te sluiten.

A Soldiers manual and a pair of boots.


Acties:
  • +1 Henk 'm!

  • nighthunter
  • Registratie: December 2007
  • Nu online
ThinkPadd schreef op zondag 6 juni 2021 @ 08:37:
[...]

Je zou de internettoegang van de Goodwe kunnen blokkeren in je router. Heb ik ook gedaan zodra lokaal uitlezen werkte. Oranje lampje op de omvormer blijft dan wel knipperen (“wifi-storing”) i.p.v. continu branden.
Recentelijk ben ik zelf ook bezig geweest met de integratie van één GoodWe DT, had 'm ook meteen in mijn domotica netwerk gehangen zonder internet toegang. Echter werdt DNS nog wel geresolved waarna de WiFI dongle continue TCP connecties probeert op te zetten richting
code:
1
tcp.goodwe-power.com

Dit heb ik opgelost door een DHCP lease te geven met 127.0.0.1 als DNS server (statisch IP was ook mogelijk geweest maar eh... voorkeuren :X). Nu zet die in ieder geval geen verbindingen meer op, wat weer WiFi belasting scheelt :)

Echter laatst zag ik ineens de dagelijks productie terugvallen naar 0, omdat het volgens de omvormer middennacht was geweest.
Wat ik me dus afvroeg, hoe krijg jij nu de tijd van de omvormer gesynchroniseerd? Ik heb deze nu handmatig aangepast maar zie na enkele dagen al weer een afwijking ontstaan.

Acties:
  • +1 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Nu online
Ik zie dat bij mij de tijd die de Goodwe aangeeft inmiddels zo’n 4 minuten achterloopt met de huidige tijd. Waarschijnlijk zal dit wel nog verder oplopen.

Misschien kan ik NTP-requests van de Goodwe redirecten naar m’n router, die is ook NTP-server. Maar van wat ik mij zo kan herinneren van de Wireshark captures is het geen plain NTP request maar gaat alles via de versleutelde TCP-datastream van/naar Goodwe. Daar zal de tijd ook wel in verstopt zitten.

Acties:
  • 0 Henk 'm!

  • nighthunter
  • Registratie: December 2007
  • Nu online
ThinkPadd schreef op maandag 27 september 2021 @ 13:31:
Waarschijnlijk zal dit wel nog verder oplopen.
Daar ben ik ook bang voor inderdaad.
ThinkPadd schreef op maandag 27 september 2021 @ 13:31:
Misschien kan ik NTP-requests van de Goodwe redirecten naar m’n router, die is ook NTP-server.
Zat ik zelf ook aan te denken, Vooral omdat de dongle wel aan de omvormer rapporteert dat deze wel/geen Wi-Fi heeft en is verbonden met de backend. De kans dat deze met NTP -> Modbus de tijd in sync bracht was aanwezig.
ThinkPadd schreef op maandag 27 september 2021 @ 13:31:
Maar van wat ik mij zo kan herinneren van de Wireshark captures is het geen plain NTP request maar gaat alles via de versleutelde TCP-datastream van/naar Goodwe.
Ik kon ook geen pakketten zien die daar op leken, maar omdat ik mijn omvormer nooit geregistreerd heb ging ik er vanuit dat deze nog niet de volledige communicatie deed. Maar dan zien we dus hetzelfde.
ThinkPadd schreef op maandag 27 september 2021 @ 13:31:
versleutelde TCP-datastream van/naar Goodwe. Daar zal de tijd ook wel in verstopt zitten.
Het zal niet de eerste keer zijn dat het wiel opnieuw wordt uitgevonden |:(

[ Voor 12% gewijzigd door nighthunter op 27-09-2021 13:57 ]


Acties:
  • +1 Henk 'm!

  • Ethnocentrix
  • Registratie: Augustus 2002
  • Laatst online: 20:56

Ethnocentrix

Rijkserkend prutser

Kodess schreef op dinsdag 14 september 2021 @ 09:37:
[...]

de lan module heeft ook de wifi chip zit ook in de lan variant en die zend volgens mij ook een AP uit, kan je dus nog even proberen :9
Vandaag is mijn WiFi module vervangen voor een Ethernet module. Deze heeft geen wifi chip ( op een paar cm afstand ontvang ik geen wifi netwerk).
Hij reageert ook niet meer op UDP pakketjes overigens :(

Edit: Type GW-5000D-NS met firmware 1.51.16
Edit2: Na wat poken lijkt er toch data uit de omvormer te komen, maar pakketlengte wisselt, waardoor de Goodwe plugin voor Home Assistant er geen kaas van kan maken. Vanavond eens kijken of ik een lengte veld in de responses kan vinden, of dat misschien gewoon het UDP pakketje niet goed gelezen wordt.

[ Voor 30% gewijzigd door Ethnocentrix op 28-09-2021 17:12 ]

You know you're an engineer if you have no life & can prove it mathematically.


Acties:
  • 0 Henk 'm!

Anoniem: 1582350

Als de pakketjes in grote veranderen dan zijn ze gecodeerd en waarschijnlijk voor het SEMS portaal. Is het wel UDP en geen TCP.

De Ethernet module schijn helemaal geen WiFi te zenden.

De NTP heb ik ook niet gezien ik zet soms de klok goed in SolarGo. Ik gebruik nu de tijd van mijn RasPI en die is ook NTP server.

  • Ethnocentrix
  • Registratie: Augustus 2002
  • Laatst online: 20:56

Ethnocentrix

Rijkserkend prutser

Anoniem: 1582350 schreef op dinsdag 28 september 2021 @ 23:04:
Als de pakketjes in grote veranderen dan zijn ze gecodeerd en waarschijnlijk voor het SEMS portaal. Is het wel UDP en geen TCP.

De Ethernet module schijn helemaal geen WiFi te zenden.

De NTP heb ik ook niet gezien ik zet soms de klok goed in SolarGo. Ik gebruik nu de tijd van mijn RasPI en die is ook NTP server.
Gecodeerd zijn ze niet, want 1 in de 10 kan gewoon geparsed worden. Ik vermoed dat dat UDP pakketten om een of andere reden afgekapt worden. Het is zeker UDP, het zijn responses op
7f0375940049d5c2
en
7f03753100280409

You know you're an engineer if you have no life & can prove it mathematically.


  • ThinkPad
  • Registratie: Juni 2005
  • Nu online
Anoniem: 1582350 schreef op dinsdag 28 september 2021 @ 23:04:
[...]
De NTP heb ik ook niet gezien ik zet soms de klok goed in SolarGo.
[...]
Heb je dat hex-commando/commando's al eens gelogd toevallig? Als we dat kunnen uitpluizen dan zou je prima een cronjob op een Raspberry Pi o.i.d. aan kunnen maken die elke dag even de juiste tijd pushed naar de omvormer.

Acties:
  • +1 Henk 'm!

Anoniem: 1582350

Eindelijk, de kWh-meter zit erin en werkt ook nog.

Afbeeldingslocatie: https://tweakers.net/i/q8C1TnhvMcVotb1bKkkD2mfvkwo=/full-fit-in/4920x3264/filters:max_bytes(3145728):no_upscale():strip_icc():fill(white):strip_exif()/f/image/ZSQZPPuY1H28T5WvDTliZk53.jpg?f=user_large

De brede (SDM220) is diegene die alle stroom meet en de smalle (SDM120) meet alleen de PV. Het verschil tussen deze twee is het interne verbruik. Ik hoef zo niet meer te berekenen wat het zou moeten zijn en dit gaat alles een stuk gemakkelijker maken.
Ik later nog meer informatie uit de SDM120 maar eerst eens kijken of nu de grafiek in PVOutput nu mooier is.
O ja, je ziet een negatieve waarde op SDM120 staan en ik heb ervoor gekozen om het normale pad te nemen en de meter aan te sluiten als met bron (L1) het stroomnet. Doe ik het anders dan moet ik het steeds omdraaien, import = export en export = import.

Ik heb hiervoor een kWh-meter in NodeRed toegevoegd en het scherm ziet er nu zo uit:

Afbeeldingslocatie: https://tweakers.net/i/TJdy6P2waqquR8SbPovEWBzIYds=/full-fit-in/4920x3264/filters:max_bytes(3145728):no_upscale():strip_icc():fill(white):strip_exif()/f/image/1LAxhL8SGFR54OJH7LySFefG.jpg?f=user_large

Voor de nieuwe meter heb ik massief 6mm2 koperdraad gebruikt wat je alleen netjes kunt buigen met een tang. De andere kabel kon ik zo overzetten en de voor ModBus kabeltjes heb ik korte kabelbruggetjes gemaakt tussen de twee kWh-meters.

In NodeRed moest ik nog wel uitvinden dat je bij het uitlezen zo'n 250ms vertraging bij één van meters moest plaatsen. Het uitlezen gaat nu sequentieel, eerst meter 1 en daarna meter 2.

@ThinkPad Ik had daar ook aan gedacht en dit gaat over TCP en je moet ook ingelogd zijn omdat te doen. Het heeft dus meer voeten in de aarde.
Als je ook SEMS gebruikt dan is de tijd belangrijk, anders neem je de tijd wilt en ignoreert de tijd in de omvormer totaal. Ik doe dat ook want die loopt altijd achter.

[ Voor 6% gewijzigd door Anoniem: 1582350 op 29-09-2021 15:00 ]


Anoniem: 1582350

Ethnocentrix schreef op woensdag 29 september 2021 @ 10:26:
[...]

Gecodeerd zijn ze niet, want 1 in de 10 kan gewoon geparsed worden. Ik vermoed dat dat UDP pakketten om een of andere reden afgekapt worden. Het is zeker UDP, het zijn responses op
7f0375940049d5c2
en
7f03753100280409
Da afkappen kan voorkomen en er zit in het antwoord ook de lengte van pakket. Maar goed na een paar keer weet de lengte van een goed pakket en daar controleer je dan op.

Als alle pakketten tekort zijn dan moet er iets niet goed gaan en zorg dat je alleen dit doet en niet ook nog een web-interface naar de omvormer open hebt staan.

  • Sircuri
  • Registratie: Oktober 2001
  • Niet online

Sircuri

Volledig Appelig

Topicstarter
Ik zit ook te overwegen om over te stappen op kWh meters i.p.v. rechtstreeks de omvormers uit te lezen (krijg het niet stabiel). Ik heb echter 2 omvormers en dus 2 groepen in mijn meterkast. Daarbij is 1 omvormer 3 fasen en de andere omvormer maar 1 fase. Zou ik beide groepen voor 1 kWh meter kunnen zetten of moet ik per groep een aparte kWh meter installeren? Weet iemand dit?

Signature van nature


  • Mattie112
  • Registratie: Januari 2007
  • Laatst online: 03:29

Mattie112

3780wP (18x 210wP EC Solar)

Ik zou 1 3-fase meter en 1 1-fase meter gebruiken als je dan toch bezig ben. Kan je ook je systemen los van elkaar monitoren ook wel prettig?

Deze ruimte is te huur!


Anoniem: 1582350

De eerste dag en weer veel opgestoken en stukken code kunnen verwijderen. Het gaat niet allemaal in één keer goed. Ik gebruik als basis beide kwh-meters en dan de kW/h waarde. Het heeft meer voeten in aarde dan dat is eerst dacht, maar ik denk dat nu alles goed zit. Zelfs een back-up van de dag beginstand die een reboot overleeft.

Ik had ook de logger meelopen en de bij het uitgaan van de omvormer neemt hij stroom af zoals je kunt zien aan de waarde wattPV. Dit is een gemeten waarde in de kWh-meter van de PV in de meterkast.
PVwattAC is wat de berekende waarde is van de omvormer aan de AC zijde.
Aan het einde zie je wattPV op 0 staan en dan is de omvormer ook echt uit en neemt geen stroom meer af.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
{"date_time":"30-09 18:34:12","PVvolt":"263.5","wattPV":12,"PVwattAC":68,"watt":125,"delta":113}
{"date_time":"30-09 18:34:22","PVvolt":"253.8","wattPV":14,"PVwattAC":68,"watt":121,"delta":107}
{"date_time":"30-09 18:34:32","PVvolt":"243.3","wattPV":15,"PVwattAC":71,"watt":121,"delta":106}
{"date_time":"30-09 18:34:42","PVvolt":"258.4","wattPV":14,"PVwattAC":71,"watt":121,"delta":107}
{"date_time":"30-09 18:34:52","PVvolt":"258.3","wattPV":15,"PVwattAC":70,"watt":121,"delta":106}
{"date_time":"30-09 18:35:02","PVvolt":"268.5","wattPV":12,"PVwattAC":69,"watt":124,"delta":112}
{"date_time":"30-09 18:35:12","PVvolt":"273.5","wattPV":7,"PVwattAC":68,"watt":126,"delta":119}
{"date_time":"30-09 18:35:22","PVvolt":"263.5","wattPV":13,"PVwattAC":68,"watt":124,"delta":111}
{"date_time":"30-09 18:35:32","PVvolt":"263.5","wattPV":11,"PVwattAC":68,"watt":123,"delta":112}
{"date_time":"30-09 18:35:42","PVvolt":"258.9","wattPV":12,"PVwattAC":68,"watt":123,"delta":111}
{"date_time":"30-09 18:35:52","PVvolt":"258.4","wattPV":14,"PVwattAC":69,"watt":122,"delta":108}
{"date_time":"30-09 18:36:02","PVvolt":"281.1","wattPV":-5,"PVwattAC":67,"watt":136,"delta":141}
{"date_time":"30-09 18:36:12","PVvolt":"281.2","wattPV":-8,"PVwattAC":58,"watt":144,"delta":152}
{"date_time":"30-09 18:36:22","PVvolt":"281.2","wattPV":-11,"PVwattAC":58,"watt":146,"delta":157}
{"date_time":"30-09 18:36:32","PVvolt":"281.2","wattPV":-8,"PVwattAC":66,"watt":146,"delta":154}
{"date_time":"30-09 18:36:42","PVvolt":"281.2","wattPV":-7,"PVwattAC":66,"watt":143,"delta":150}
{"date_time":"30-09 18:36:52","PVvolt":"281.2","wattPV":-8,"PVwattAC":58,"watt":142,"delta":150}
{"date_time":"30-09 18:37:02","PVvolt":"281.2","wattPV":-8,"PVwattAC":57,"watt":143,"delta":151}
{"date_time":"30-09 18:37:12","PVvolt":"281.2","wattPV":-9,"PVwattAC":57,"watt":143,"delta":152}
{"date_time":"30-09 18:37:22","PVvolt":"281.3","wattPV":-8,"PVwattAC":57,"watt":144,"delta":152}
{"date_time":"30-09 18:37:32","PVvolt":"281.3","wattPV":-12,"PVwattAC":60,"watt":146,"delta":158}
{"date_time":"30-09 18:37:42","PVvolt":"281.4","wattPV":-13,"PVwattAC":68,"watt":148,"delta":161}
{"date_time":"30-09 18:37:52","PVvolt":"281.4","wattPV":-11,"PVwattAC":73,"watt":146,"delta":157}
.
.
.
.
{"date_time":"30-09 19:44:02","PVvolt":"62.0","wattPV":-10,"PVwattAC":72,"watt":149,"delta":159}
{"date_time":"30-09 19:44:22","PVvolt":"59.9.","wattPV":-12,"PVwattAC":71,"watt":151,"delta":163}
{"date_time":"30-09 19:44:32","PVvolt":"59.0","wattPV":-12,"PVwattAC":72,"watt":150,"delta":162}
{"date_time":"30-09 19:44:42","PVvolt":"57.8.","wattPV":-11,"PVwattAC":72,"watt":150,"delta":161}
{"date_time":"30-09 19:44:52","PVvolt":"56.8.","wattPV":-12,"PVwattAC":72,"watt":150,"delta":162}
{"date_time":"30-09 19:45:02","PVvolt":"55.8.","wattPV":-12,"PVwattAC":72,"watt":150,"delta":162}
{"date_time":"30-09 19:45:12","PVvolt":"54.6.","wattPV":-11,"PVwattAC":72,"watt":150,"delta":161}
{"date_time":"30-09 19:45:22","PVvolt":"53.6.","wattPV":-11,"PVwattAC":72,"watt":149,"delta":160}
{"date_time":"30-09 19:45:32","PVvolt":"52.5.","wattPV":-11,"PVwattAC":72,"watt":150,"delta":161}
{"date_time":"30-09 19:45:42","PVvolt":"51.6.","wattPV":-12,"PVwattAC":72,"watt":150,"delta":162}
{"date_time":"30-09 19:45:52","PVvolt":"50.6.","wattPV":-12,"PVwattAC":72,"watt":150,"delta":162}
{"date_time":"30-09 19:46:02","PVvolt":"49.7.","wattPV":-12,"PVwattAC":72,"watt":150,"delta":162}
{"date_time":"30-09 19:46:12","PVvolt":"48.8.","wattPV":-11,"PVwattAC":72,"watt":150,"delta":161}
{"date_time":"30-09 19:46:22","PVvolt":"48.4.","wattPV":-11,"PVwattAC":72,"watt":150,"delta":161}
{"date_time":"30-09 19:46:32","PVvolt":"46.7.","wattPV":-10,"PVwattAC":72,"watt":148,"delta":158}
{"date_time":"30-09 19:46:42","PVvolt":"45.6.","wattPV":-12,"PVwattAC":69,"watt":150,"delta":162}
{"date_time":"30-09 19:46:52","PVvolt":"45.2.","wattPV":-12,"PVwattAC":71,"watt":150,"delta":162}
{"date_time":"30-09 19:47:02","PVvolt":"40.1.","wattPV":0,"PVwattAC":36,"watt":137,"delta":137}
{"date_time":"30-09 19:47:12","PVvolt":"36.3.","wattPV":0,"PVwattAC":0,"watt":137,"delta":137}



Update: en hieronder de ochtend en daar zie ik zo geen verbruik.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
{"date_time":"01-10 07:58:52","PVvolt":"281.8","wattPV":0,"PVwattAC":0,"watt":31,"delta":31}
{"date_time":"01-10 07:59:02","PVvolt":"282.0","wattPV":0,"PVwattAC":0,"watt":33,"delta":33}
{"date_time":"01-10 07:59:12","PVvolt":"282.1","wattPV":0,"PVwattAC":0,"watt":33,"delta":33}
{"date_time":"01-10 07:59:22","PVvolt":"282.3","wattPV":0,"PVwattAC":0,"watt":33,"delta":33}
{"date_time":"01-10 07:59:32","PVvolt":"282.4","wattPV":0,"PVwattAC":0,"watt":31,"delta":31}
{"date_time":"01-10 07:59:42","PVvolt":"282.6","wattPV":0,"PVwattAC":0,"watt":31,"delta":31}
{"date_time":"01-10 07:59:52","PVvolt":"282.7","wattPV":0,"PVwattAC":0,"watt":31,"delta":31}
{"date_time":"01-10 08:00:02","PVvolt":"282.8","wattPV":0,"PVwattAC":0,"watt":31,"delta":31}
{"date_time":"01-10 08:00:22","PVvolt":"283.0","wattPV":0,"PVwattAC":0,"watt":31,"delta":31}
{"date_time":"01-10 08:00:32","PVvolt":"283.2","wattPV":0,"PVwattAC":0,"watt":31,"delta":31}
{"date_time":"01-10 08:00:42","PVvolt":"283.2","wattPV":0,"PVwattAC":0,"watt":31,"delta":31}
{"date_time":"01-10 08:00:52","PVvolt":"281.9","wattPV":0,"PVwattAC":0,"watt":31,"delta":31}
{"date_time":"01-10 08:01:02","PVvolt":"281.3","wattPV":0,"PVwattAC":0,"watt":31,"delta":31}
{"date_time":"01-10 08:01:12","PVvolt":"233.9","wattPV":19,"PVwattAC":22,"watt":14,"delta":-5}
{"date_time":"01-10 08:01:22","PVvolt":"239.0","wattPV":20,"PVwattAC":72,"watt":14,"delta":-6}
{"date_time":"01-10 08:01:32","PVvolt":"241.4","wattPV":19,"PVwattAC":72,"watt":14,"delta":-5}
{"date_time":"01-10 08:01:42","PVvolt":"240.0","wattPV":20,"PVwattAC":72,"watt":14,"delta":-6}
{"date_time":"01-10 08:01:52","PVvolt":"243.0","wattPV":20,"PVwattAC":72,"watt":13,"delta":-7}
{"date_time":"01-10 08:02:02","PVvolt":"243.8","wattPV":20,"PVwattAC":72,"watt":13,"delta":-7}
{"date_time":"01-10 08:02:12","PVvolt":"235.1","wattPV":21,"PVwattAC":72,"watt":14,"delta":-7}
{"date_time":"01-10 08:02:22","PVvolt":"239.2","wattPV":21,"PVwattAC":73,"watt":13,"delta":-8}
{"date_time":"01-10 08:02:32","PVvolt":"229.6","wattPV":20,"PVwattAC":73,"watt":14,"delta":-6}
{"date_time":"01-10 08:02:42","PVvolt":"237.4","wattPV":21,"PVwattAC":73,"watt":13,"delta":-8}
{"date_time":"01-10 08:02:52","PVvolt":"241.3","wattPV":22,"PVwattAC":74,"watt":11,"delta":-11}
{"date_time":"01-10 08:03:02","PVvolt":"240.3","wattPV":21,"PVwattAC":73,"watt":11,"delta":-10}
{"date_time":"01-10 08:03:12","PVvolt":"241.2","wattPV":22,"PVwattAC":74,"watt":11,"delta":-11}
{"date_time":"01-10 08:03:22","PVvolt":"244.4","wattPV":23,"PVwattAC":74,"watt":11,"delta":-12}
{"date_time":"01-10 08:03:32","PVvolt":"237.8","wattPV":23,"PVwattAC":73,"watt":10,"delta":-13}


De PVwattAC waarden zijn de waarden aangegeven door de omvormer en die zijn erg optimistisch. Bij mij zit er 15 meter kabel tussen de omvormer en de meterkast en daar heb je ook verlies in.

[ Voor 23% gewijzigd door Anoniem: 1582350 op 01-10-2021 09:26 . Reden: de waarden van het opstarten ]


Acties:
  • 0 Henk 'm!

Anoniem: 1582350

Ik zie nu weer dat de omvormer aan het stroom afnemen i.p.v. stroom te leveren. Uit mijn hoofd is dat elke dag 13 Wh aan verbruik. Dat is niet veel maar wel onnodig.

De omvormer zou veel eerder moeten uitschakelen. GoodWe laat het er mooi uitzien en geeft aan dat er nog zo'n 70 Watt geproduceerd wordt terwijl dat duidelijk helemaal niet het geval is.

Waarom zetten ze de omvormer niet eerder uit want het opstarten kost geen stroom.

Update: getest wat de omvormer doet als ik het stroomnet wegneem. Binnen 30 seconden was de omvormer helemaal uit nadat die eerste weergaf de de PAC van 72 naar 0 Watt ging.
Daarna getest, na eerst een paar minuten wachten als de stroom er weer opgezet wordt. Na een paar tellen gaat de rode en daarna de gele led kort aan maar de omvormer start niet op. Dit waarschijnlijk omdat bij de meting er te weinig stroom staat aan de DC zijde.

Een stukje van de logging van vandaag.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{"date_time":"01-10 18:26:12","PVvolt":"253.3","wattPV":14,"PVwattAC":68,"watt":152,"delta":138}
{"date_time":"01-10 18:26:22","PVvolt":"257.5","wattPV":11,"PVwattAC":69,"watt":151,"delta":140}
{"date_time":"01-10 18:26:42","PVvolt":"242.7","wattPV":14,"PVwattAC":68,"watt":150,"delta":136}
{"date_time":"01-10 18:26:52","PVvolt":"262.8","wattPV":9,"PVwattAC":69,"watt":153,"delta":144}
{"date_time":"01-10 18:27:02","PVvolt":"272.5","wattPV":6,"PVwattAC":66,"watt":155,"delta":149}
{"date_time":"01-10 18:27:22","PVvolt":"269.2","wattPV":5,"PVwattAC":66,"watt":158,"delta":153}
{"date_time":"01-10 18:27:32","PVvolt":"267.6","wattPV":5,"PVwattAC":64,"watt":158,"delta":153}
{"date_time":"01-10 18:27:42","PVvolt":"267.4","wattPV":5,"PVwattAC":66,"watt":162,"delta":157}
{"date_time":"01-10 18:27:52","PVvolt":"262.5","wattPV":6,"PVwattAC":66,"watt":158,"delta":152}
{"date_time":"01-10 18:28:02","PVvolt":"277.5","wattPV":-9,"PVwattAC":61,"watt":176,"delta":185}
{"date_time":"01-10 18:28:12","PVvolt":"277.2","wattPV":-9,"PVwattAC":56,"watt":175,"delta":184}
{"date_time":"01-10 18:28:22","PVvolt":"277.0","wattPV":-12,"PVwattAC":60,"watt":178,"delta":190}
{"date_time":"01-10 18:28:32","PVvolt":"276.6","wattPV":-14,"PVwattAC":68,"watt":179,"delta":193}
{"date_time":"01-10 18:28:42","PVvolt":"276.5","wattPV":-12,"PVwattAC":72,"watt":178,"delta":190}
{"date_time":"01-10 18:28:52","PVvolt":"276.1","wattPV":-12,"PVwattAC":73,"watt":177,"delta":189}
{"date_time":"01-10 18:29:02","PVvolt":"276.0","wattPV":-12,"PVwattAC":72,"watt":179,"delta":191}
{"date_time":"01-10 18:29:12","PVvolt":"275.6","wattPV":-12,"PVwattAC":72,"watt":179,"delta":191}
{"date_time":"01-10 18:29:22","PVvolt":"275.4","wattPV":-12,"PVwattAC":72,"watt":177,"delta":189}
{"date_time":"01-10 18:29:32","PVvolt":"275.1","wattPV":-12,"PVwattAC":73,"watt":179,"delta":191}
{"date_time":"01-10 18:29:42","PVvolt":"274.8","wattPV":-12,"PVwattAC":72,"watt":179,"delta":191}
{"date_time":"01-10 18:29:52","PVvolt":"274.7","wattPV":-9,"PVwattAC":72,"watt":177,"delta":186}


Meer specifieke logging voor dit:

code:
1
2
3
4
5
6
7
{"date_time":"01-10 19:13:42","PVvolt":"219.2","wattPV":-13,"PVwattAC":72,"delta":85}
{"date_time":"01-10 19:13:52","PVvolt":"218.5","wattPV":-12,"PVwattAC":72,"delta":84}
{"date_time":"01-10 19:14:02","PVvolt":"217.8","wattPV":-13,"PVwattAC":72,"delta":85}
{"date_time":"01-10 19:14:12","PVvolt":"217.1","wattPV":-9,"PVwattAC":72,"delta":81}
{"date_time":"01-10 19:14:22","PVvolt":"216.1","wattPV":-9,"PVwattAC":68,"delta":77}
{"date_time":"01-10 19:14:32","PVvolt":"215.4","wattPV":-9,"PVwattAC":60,"delta":69}
{"date_time":"01-10 19:14:42","PVvolt":"214.3","wattPV":-9,"PVwattAC":56,"delta":65}

[ Voor 16% gewijzigd door Anoniem: 1582350 op 01-10-2021 19:26 . Reden: Test van de omvormer na het ontnemen van stroom toevoer ]


Acties:
  • 0 Henk 'm!

Anoniem: 1582350

OK. Vanochtend dus wel 8Wh aan verbruik gehad. Ik hoef het niet als extra in het verbruik op te nemen omdat de hoofd kWh-meter dat meeneemt. Het meenemen in de opbrengst van de PV is ook niet gemakkelijk omdat er geen negatieve waarden geaccepteerd worden door PVOutput en waarschijnlijk ook andere portalen. Dit kan een reden zijn waarom de GoodWe een positieve waarde zend.

Die "Delta" Watt waarde kan een algemene waarde zijn en dat zij voor de grootste verwachte negatieve waarde compenseren voor alle omvormers in de reeks. Een fictieve waarde van 15 Watt zou voor de XS2000 voldoende moeten zijn om positieve waardes te houden.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
{"date_time":"02-10 07:34:53","PVvolt":"242.8","wattPV":0,"PVwattAC":0,"delta":0}
{"date_time":"02-10 07:35:02","PVvolt":"245.2","wattPV":0,"PVwattAC":0,"delta":0}
{"date_time":"02-10 07:35:12","PVvolt":"247.1","wattPV":0,"PVwattAC":0,"delta":0}
{"date_time":"02-10 07:35:22","PVvolt":"248.5","wattPV":0,"PVwattAC":0,"delta":0}
{"date_time":"02-10 07:35:32","PVvolt":"250.0","wattPV":0,"PVwattAC":0,"delta":0}
{"date_time":"02-10 07:35:42","PVvolt":"251.3","wattPV":0,"PVwattAC":0,"delta":0}
{"date_time":"02-10 07:35:52","PVvolt":"251.9","wattPV":0,"PVwattAC":0,"delta":0}
{"date_time":"02-10 07:36:02","PVvolt":"252.7","wattPV":0,"PVwattAC":0,"delta":0}
{"date_time":"02-10 07:36:12","PVvolt":"252.6","wattPV":0,"PVwattAC":0,"delta":0}
.
.
{"date_time":"02-10 07:50:12","PVvolt":"280.7","wattPV":0,"PVwattAC":0,"delta":0}
{"date_time":"02-10 07:50:22","PVvolt":"280.8","wattPV":0,"PVwattAC":0,"delta":0}
{"date_time":"02-10 07:50:32","PVvolt":"281.1","wattPV":0,"PVwattAC":0,"delta":0}
{"date_time":"02-10 07:50:42","PVvolt":"281.4","wattPV":0,"PVwattAC":0,"delta":0}
{"date_time":"02-10 07:50:52","PVvolt":"284.9","wattPV":0,"PVwattAC":0,"delta":0}
{"date_time":"02-10 07:51:02","PVvolt":"279.4","wattPV":0,"PVwattAC":0,"delta":0}
{"date_time":"02-10 07:51:12","PVvolt":"285.2","wattPV":0,"PVwattAC":0,"delta":0}
{"date_time":"02-10 07:51:22","PVvolt":"233.9","wattPV":18,"PVwattAC":21,"delta":3}
{"date_time":"02-10 07:51:32","PVvolt":"238.4","wattPV":17,"PVwattAC":71,"delta":54}
{"date_time":"02-10 07:51:42","PVvolt":"227.2","wattPV":17,"PVwattAC":71,"delta":54}
{"date_time":"02-10 07:51:52","PVvolt":"234.0","wattPV":16,"PVwattAC":70,"delta":54}
.
.
{"date_time":"02-10 07:56:52","PVvolt":"260.1","wattPV":47,"PVwattAC":89,"delta":42}
{"date_time":"02-10 07:57:02","PVvolt":"251.8","wattPV":42,"PVwattAC":87,"delta":45}
{"date_time":"02-10 07:57:12","PVvolt":"244.5","wattPV":38,"PVwattAC":84,"delta":46}
{"date_time":"02-10 07:57:22","PVvolt":"249.1","wattPV":34,"PVwattAC":82,"delta":48}
{"date_time":"02-10 07:57:32","PVvolt":"261.4","wattPV":30,"PVwattAC":80,"delta":50}
{"date_time":"02-10 07:57:52","PVvolt":"244.8","wattPV":23,"PVwattAC":76,"delta":53}
{"date_time":"02-10 07:58:02","PVvolt":"258.8","wattPV":16,"PVwattAC":73,"delta":57}
{"date_time":"02-10 07:58:12","PVvolt":"282.6","wattPV":-6,"PVwattAC":68,"delta":74}
{"date_time":"02-10 07:58:22","PVvolt":"276.5","wattPV":0,"PVwattAC":61,"delta":61}
{"date_time":"02-10 07:58:32","PVvolt":"274.7","wattPV":0,"PVwattAC":61,"delta":61}
{"date_time":"02-10 07:58:52","PVvolt":"271.9","wattPV":0,"PVwattAC":61,"delta":61}
{"date_time":"02-10 07:59:02","PVvolt":"271.5","wattPV":-5,"PVwattAC":60,"delta":65}
{"date_time":"02-10 07:59:12","PVvolt":"271.6","wattPV":-6,"PVwattAC":60,"delta":66}
{"date_time":"02-10 07:59:22","PVvolt":"274.9","wattPV":-7,"PVwattAC":59,"delta":66}
{"date_time":"02-10 07:59:32","PVvolt":"271.5","wattPV":0,"PVwattAC":59,"delta":59}
{"date_time":"02-10 07:59:42","PVvolt":"274.0","wattPV":-8,"PVwattAC":59,"delta":67}
{"date_time":"02-10 07:59:52","PVvolt":"266.0","wattPV":0,"PVwattAC":59,"delta":59}
{"date_time":"02-10 08:00:02","PVvolt":"268.9","wattPV":0,"PVwattAC":59,"delta":59}
{"date_time":"02-10 08:00:12","PVvolt":"267.7","wattPV":0,"PVwattAC":59,"delta":59}
{"date_time":"02-10 08:00:22","PVvolt":"256.6","wattPV":0,"PVwattAC":58,"delta":58}
{"date_time":"02-10 08:00:32","PVvolt":"272.9","wattPV":-9,"PVwattAC":59,"delta":68}
{"date_time":"02-10 08:00:42","PVvolt":"272.7","wattPV":-9,"PVwattAC":57,"delta":66}
{"date_time":"02-10 08:00:52","PVvolt":"272.6","wattPV":-11,"PVwattAC":59,"delta":70}
{"date_time":"02-10 08:01:02","PVvolt":"272.5","wattPV":-10,"PVwattAC":68,"delta":78}
{"date_time":"02-10 08:01:12","PVvolt":"272.4","wattPV":-8,"PVwattAC":68,"delta":76}
{"date_time":"02-10 08:01:22","PVvolt":"272.3","wattPV":-13,"PVwattAC":69,"delta":82}
{"date_time":"02-10 08:01:32","PVvolt":"272.3","wattPV":-9,"PVwattAC":73,"delta":82}
{"date_time":"02-10 08:01:42","PVvolt":"272.3","wattPV":-9,"PVwattAC":69,"delta":78}
{"date_time":"02-10 08:01:52","PVvolt":"272.4","wattPV":-9,"PVwattAC":64,"delta":73}
{"date_time":"02-10 08:02:02","PVvolt":"272.4","wattPV":-9,"PVwattAC":57,"delta":66}
{"date_time":"02-10 08:02:12","PVvolt":"272.5","wattPV":-9,"PVwattAC":57,"delta":66}
{"date_time":"02-10 08:02:22","PVvolt":"272.6","wattPV":-9,"PVwattAC":57,"delta":66}
{"date_time":"02-10 08:02:42","PVvolt":"272.6","wattPV":-12,"PVwattAC":69,"delta":81}
{"date_time":"02-10 08:02:52","PVvolt":"272.8","wattPV":-12,"PVwattAC":73,"delta":85}
{"date_time":"02-10 08:03:02","PVvolt":"272.9","wattPV":-12,"PVwattAC":74,"delta":86}
{"date_time":"02-10 08:03:22","PVvolt":"273.0","wattPV":-12,"PVwattAC":74,"delta":86}
.
.
{"date_time":"02-10 08:43:02","PVvolt":"293.4","wattPV":-12,"PVwattAC":73,"delta":85}
{"date_time":"02-10 08:43:12","PVvolt":"293.6","wattPV":-10,"PVwattAC":71,"delta":81}
{"date_time":"02-10 08:43:22","PVvolt":"293.6","wattPV":-13,"PVwattAC":72,"delta":85}
{"date_time":"02-10 08:43:32","PVvolt":"293.7","wattPV":-8,"PVwattAC":72,"delta":80}
{"date_time":"02-10 08:43:42","PVvolt":"293.5","wattPV":-12,"PVwattAC":68,"delta":80}
{"date_time":"02-10 08:43:52","PVvolt":"293.0","wattPV":-11,"PVwattAC":69,"delta":80}
{"date_time":"02-10 08:44:12","PVvolt":"292.3","wattPV":-13,"PVwattAC":67,"delta":80}
{"date_time":"02-10 08:44:22","PVvolt":"291.9","wattPV":-9,"PVwattAC":72,"delta":81}
{"date_time":"02-10 08:44:42","PVvolt":"291.2","wattPV":-11,"PVwattAC":73,"delta":84}
{"date_time":"02-10 08:44:52","PVvolt":"290.7","wattPV":-10,"PVwattAC":74,"delta":84}
{"date_time":"02-10 08:45:02","PVvolt":"290.3","wattPV":-8,"PVwattAC":71,"delta":79}
{"date_time":"02-10 08:45:12","PVvolt":"290.2","wattPV":-8,"PVwattAC":66,"delta":74}
{"date_time":"02-10 08:45:22","PVvolt":"290.0","wattPV":-8,"PVwattAC":64,"delta":72}
{"date_time":"02-10 08:45:32","PVvolt":"290.1","wattPV":-8,"PVwattAC":58,"delta":66}
{"date_time":"02-10 08:45:42","PVvolt":"260.7","wattPV":43,"PVwattAC":73,"delta":30}
{"date_time":"02-10 08:45:52","PVvolt":"258.6","wattPV":43,"PVwattAC":86,"delta":43}



In de grafiek is te zien dat er een 0 opbrengst wordt verzonden als de omvormer stroom afneemt:

Afbeeldingslocatie: https://tweakers.net/i/tb7NWr-wYCJwDcHgD4L2qlbkvkU=/800x/filters:strip_icc():strip_exif()/f/image/Hr3AoMBFPOhOghIXEQkyniLz.jpg?f=fotoalbum_large

Ik moet nog sleutelen aan het script omdat ik zie dat soms geen waarden verzonden worden.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{"date":"20211002","time":"07:35","eDay":14,"gen_Watt":null,"used_kWh":"926","usedWatt":null,"temp":18.2,"volt":244}
{"date":"20211002","time":"07:55","eDay":15,"gen_Watt":null,"used_kWh":"937","usedWatt":null,"temp":19.8,"volt":257.1}
{"date":"20211002","time":"08:00","eDay":18,"gen_Watt":null,"used_kWh":"941","usedWatt":null,"temp":20.5,"volt":262.4}
{"date":"20211002","time":"08:25","eDay":null,"gen_Watt":0,"used_kWh":"942","usedWatt":null,"temp":22.9,"volt":275.6}
{"date":"20211002","time":"08:30","eDay":null,"gen_Watt":0,"used_kWh":"946","usedWatt":null,"temp":23.3,"volt":291.1}
{"date":"20211002","time":"08:35","eDay":null,"gen_Watt":0,"used_kWh":"950","usedWatt":null,"temp":23.5,"volt":305.4}
{"date":"20211002","time":"08:40","eDay":null,"gen_Watt":0,"used_kWh":"953","usedWatt":null,"temp":23.7,"volt":307.3}
{"date":"20211002","time":"08:45","eDay":null,"gen_Watt":0,"used_kWh":"957","usedWatt":null,"temp":23.9,"volt":294.7}
{"date":"20211002","time":"08:50","eDay":23,"gen_Watt":null,"used_kWh":"978","usedWatt":null,"temp":24,"volt":263.8}
{"date":"20211002","time":"08:55","eDay":29,"gen_Watt":null,"used_kWh":"980","usedWatt":null,"temp":24,"volt":264.5}
{"date":"20211002","time":"09:00","eDay":39,"gen_Watt":null,"used_kWh":"983","usedWatt":null,"temp":24.1,"volt":263.8}
{"date":"20211002","time":"09:05","eDay":49,"gen_Watt":null,"used_kWh":"986","usedWatt":null,"temp":24.2,"volt":263.9}
{"date":"20211002","time":"09:10","eDay":61,"gen_Watt":null,"used_kWh":"989","usedWatt":null,"temp":24.3,"volt":266.2}
{"date":"20211002","time":"09:15","eDay":72,"gen_Watt":null,"used_kWh":"992","usedWatt":null,"temp":24.5,"volt":263.3}
{"date":"20211002","time":"09:20","eDay":89,"gen_Watt":null,"used_kWh":"995","usedWatt":null,"temp":24.6,"volt":272}
{"date":"20211002","time":"09:25","eDay":106,"gen_Watt":null,"used_kWh":"998","usedWatt":null,"temp":24.7,"volt":269.2}


Update: ik trek nu de verbruikte stroom door de omvormer af van de opbrengst en zo is er een correctie gedurende de dag. Als de opbrengst in de ochtend onder nul is dan wordt er ook een 0 verzonden en Null. Dit voorkomt dat v2 ( opbrengst in Watt) de plaats in neemt van v1 (opbrengst in kWh) en zo zal PVOutput niet gaan rekenen wat de opbrengst zou kunnen zijn.

Acties:
  • 0 Henk 'm!

Anoniem: 1582350

Ik heb een soort oplossing gemaakt voor het verbruik van de omvormer bij het opstarten, afsluiten of andere momenten.

Aan het begin van de dag leen ik, in mijn geval 25 Watt hour, aan de omvormer. Elke keer als de omvormer meer dan 25 Watt hour genereert dan trek 1 van lening af totdat die op nul staat.

Aan het einde van de dag (23:59) trek ik het werkelijk verbruik door de omvormer af van die 25. Het restant krijgt de omvormer dan bijgeschreven (v1) aan aan het einde van de dag.

Acties:
  • 0 Henk 'm!

Anoniem: 1582350

hansdegit schreef op dinsdag 14 september 2021 @ 08:43:
[...]

Jammer, de SolarGo app werkt blijkbaar alleen op de wifi interface. Ik heb de bedrade LAN module en kan de omvormer niet vinden.
Ik gebruikte voor WiFi een repeater om te communiceren met de omvormer. Ik heb zelf een AVM 1750 en daar zit een netwerk aansluiting op en die kan als AP dienen van WiFi naar de omvormer. Stel SSIS in op de naam van de omvormer: Solar-WiFi32CW0842 bijvoorbeeld of de echte naam van jouw eerder WiFi.

Bij een vast netwerk kun je ook dat emuleren door een router te gebruiken die WiFi heeft en daar geef je router een IP adres 10.10.100.155 en gateway 10.10.100.253 en dan zou je via jouw tablet de omvormer kunnen benaderen via SolarGO.

Acties:
  • +1 Henk 'm!

Anoniem: 1582350

Het uitschakelen van de omvormer als die stroom aan het verstoken is kan dus via het wel of niet voorzien van AC stroom vanuit de meterkast.

Nu heb ik zitten lezen en de omvormer heeft een ingestoken plug (Remote Shutdown) nodig waar een kabel en weerstand inzit voordat de omvormer ook stroom afgeeft aan de AC zijde.

Plug: https://support.goodwe.co...emote-shutdown-for-europe
Uitleg door GoodWe: https://support.goodwe.co...rticles/xs-waiting-status

Het testen is lastig omdat ik als de omvormer in de stroom opname tijd zit ik hem uit moet zetten, plug verwijderen en weer aanzetten. Het resultaat is dan niet eenduidig. Start hij dan niet op dan kan het zijn dat de DC zijde echt te weinig levert.

Deze plug kan ook worden gebruikt voor RS485 communicatie en en pennen zijn nu voorzien van die groene draad.

Is een remote shutdown alleen het afkoppelen van het AC stroomnet of zal het ook de omvormer laten uitgaan omdat het AC net niet "aangekoppeld" is? @ThinkPad

[ Voor 8% gewijzigd door Anoniem: 1582350 op 04-10-2021 16:30 ]


Acties:
  • 0 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Nu online
Als je de plug eruit trekt gaat hij op 'waiting' meen ik. Omvormer staat wel aan, maar wekt niets op.
Maar waarom zou je dat willen?

Via SolarGo kun je de omvormer ook 'uitzetten' (= naar 'Waiting') en weer 'aanzetten' (vanuit Waiting weer terug naar productiemodus). Ik weet dit niet meer zeker, kan ook zijn dat het via de Goodwe cloud app was.

[ Voor 13% gewijzigd door ThinkPad op 04-10-2021 19:47 ]


Acties:
  • 0 Henk 'm!

  • Ethnocentrix
  • Registratie: Augustus 2002
  • Laatst online: 20:56

Ethnocentrix

Rijkserkend prutser

Ik ben er inmiddels achter dat de Goodwe Ethernet adapter een Hi-Flying Eport-E20 bevat. Dit is een andere chip dat de WiFi module.
En deze andere chip vernaggelt dus de UDP pakketjes :(

Gelukkig is er ook voor de Eport-E20 een firmware update beschikbaar op de website van Hi-Flying. Mijn stick is geleverd met firmware versie V1.0.14, maar op de website van Hi-flying is versie 1.40 beschikbaar. In de release notes zie ik een aantal keer het woord 'modbus' voorbij komen, dus mogelijk is het probleem daarmee opgelost.

Weet iemand een manier om de huidige firmware uit de stick te trekken zodat ik eventueel weer terug kan als een nieuwe firmware niet werkt?

You know you're an engineer if you have no life & can prove it mathematically.


Acties:
  • 0 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Nu online
Ethnocentrix schreef op maandag 4 oktober 2021 @ 17:15:
[....]

Weet iemand een manier om de huidige firmware uit de stick te trekken zodat ik eventueel weer terug kan als een nieuwe firmware niet werkt?
De complete firmware is lastig vermoed ik. Waarschijnlijk zit er net als bij de wifi-module wel een SPI-geheugenchip op, hier zit de config en een deel van de firmware in. Die zou je met Flashrom kunnen dumpen naar een .bin file. Moet je wel kunnen solderen.

Heb op die manier eens een dump van mijn Goodwe wifi-module gemaakt nadat een andere Tweaker die van hem verprutst had met firmware updaten. Hij kon nog steeds bij de webinterface, maar er werd geen data meer geupload naar Goodwe. Na het flashen van mijn SPI-dump had zijn module wel hetzelfde SSID als die van mij overigens 8)7 :+

[ Voor 11% gewijzigd door ThinkPad op 04-10-2021 19:08 ]


Acties:
  • 0 Henk 'm!

Anoniem: 1582350

ThinkPadd schreef op maandag 4 oktober 2021 @ 16:44:
Als je de plug eruit trekt gaat hij op 'waiting' meen ik. Omvormer staat wel aan, maar wekt niets op.
Maar waarom zou je dat willen?

Via SolarGo kun je de omvormer ook 'uitzetten' (= naar 'Waiting') en weer 'aanzetten' (vanuit Waiting weer terug naar productiemodus).
Dank en ik heb nu het scherm gebruikt en het werkt zoals gewenst.

Zodra de omvormer in de 'waiting mode' gaat stopt het stroomverbruik en blijft hij waarschijnlij wachten totdat er over een lange periode de eigen stroom op is. Nu dit voorkomt dat de omvormer stroom trekt uit het lichtnet voor een hele lange periode. In die periode verbruikt de omvormer ongeveer 25 Watt hour.

Ik heb de omvormer weer via het scherm weer aangezet en nu doorloopt de omvormer de opstart cycli en er is al te weinig licht om weer opnieuw op te starten.

Bij een flinke onweersbui of een andere rede die dit ook kunnen bewerkstelligen als ik de omvormer naar een bijvoorbeeld een kwartier worstelen 'uit' zet. Dan start de omvormer vanzelf weer maar dan nog met het Grid afgekoppeld. Dus hier moet ik na een aantal minuten wel weer het Grid activeren of dat doen als de omvormer genoeg stroom levert.

Die opbrengst is dan alleen zichtbaar in de omvormer en niet in de kWh-meter dus dat is kijken wat het best werkt.

Als iemand zo de strings voor het in/uit de 'waitng mode' zetten dan hoef ik niet mijn repeater om te programmeren om die te scannen?

Net naar de omvormer gekeken en die is nu helemaal uit terwijl het nog net niet helemaal donker is. _/-\o_

update: andere omvormers in de buurt zijn nog aan want hun SSID kan ik nog zien.

Acties:
  • 0 Henk 'm!

  • wlmpie
  • Registratie: Oktober 2007
  • Laatst online: 21:17
@Anoniem: 1582350 Is het werkelijk de moeite waard om het beetje stroomverbruik van de omvormer bij sluiting en aanvang van de dag te voorkomen. Ik krijg het idee dat het bijna wegvalt in de meetfout.
Ik zie dat je nu een aparte stroommeter gebruikt die alles wat nauwkeuriger registreert, maar maakt dit ook iets uit voor de daggemiddelden?

Verder heb ik mij ook verbaasd over de "minimale" productie die de Goodwe omvormer aangeeft van rond de 75 watt terwijl deze volgens jouw metingen in werkelijkheid veel lager of zelfs negatief is, maar gemiddeld lijkt de omvormer in ieder geval de dagproductie wel goed weer te geven. klopt dat?

Acties:
  • 0 Henk 'm!

Anoniem: 1582350

@wlmpie Het verbruik is minimaal maar dat de omvormer nog aan is, terwijl het al stikke donker is en dan ook nog, trots aangeeft dat er nog uit het niets stroom komt. Blijkt die (geld)stroom ook nog eens uit mijn eigen portemonee te komen.

Het meten van het opgegeven verbruik door de omvormer is niet iets wat ik goed kan bepalen omdat er 15 meter kabel tussen die twee zitten. ThinkPad heeft een meter vlak bij omvormer en die geef een hogere werkelijke opbrengst in de middag. Ik dacht zo'n 37 Watt.

@wlmpie ik heb logging aangezet om het verschil te zien voor een dag.

[ Voor 8% gewijzigd door Anoniem: 1582350 op 05-10-2021 00:14 . Reden: Logging voor wlmpie ]


Acties:
  • +1 Henk 'm!

Anoniem: 1582350

Ik heb de benodigde strings kunnen scannen en getest:
Grid OFF - HEX: 7F069D8B0000DC52 Buffer: [127,6,157,139,0,0,220,82]
Grid ON - HEX 7F069D8A00008D92 Buffer: [127,6,157,138,0,0,141,146]
Grid RECONNECT: gelijk aan Grid ON, na de std. 60 seconden weer aan het net
Ik ga waarschijnlijk de reconnect gebruiken om het verbruik door de omvormer te minimaliseren.

Buffer wordt gebruikt in Node.Red om de strings in te voeren.

@ThinkPad @wlmpie

[ Voor 8% gewijzigd door Anoniem: 1582350 op 05-10-2021 11:11 ]


Acties:
  • 0 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Nu online
Wat ook een leuke is om op die manier aan/uit te zetten is de 'Shadow MPPT' voor als je schaduw op je panelen hebt.

Je kunt hem aanzetten in het menu van de omvormer, maar het schijnt dat je iets aan rendement inlevert op de momenten dat er géén schaduw is. Wat je zou kunnen doen is kijken bij welk hoek/inclination van de zon er schaduw op je panelen komt en dan via hex-commando de shadow mppt aanzetten. Schaduw weg --> shadow mppt weer uit. In Node-RED heb je bijv. node-red-contrib-sun-position om de positie van de zon te bepalen o.b.v. je coördinaten waardoor dit volledig valt te automatiseren.

offtopic:
@Anoniem: 1582350 liever mij niet taggen, ik krijg al best veel notificaties als ik Tweakers bezoek. Zie het topic vanzelf wel opduiken tussen m'n gevolgde topics ;)

[ Voor 7% gewijzigd door ThinkPad op 05-10-2021 11:49 ]


Acties:
  • 0 Henk 'm!

Anoniem: 1582350

Gelukkig heb ik geen last van schaduw en de eerste hoge boom staat op zo'n 60 meter afstand.

Als je de strings voor MPPT nodig hebt dan kan ik nu eenvoudig scannen.
Ik hoefde niet mijn repeater opnieuw te configureren want ik kon in mijn Mikrotik Cap, een virtuele AP aanmaken. De broadcasts, dat was uitzoeken maar dat werkt nu ook.

Later vandaag de 'reconnect'actief maken als de opbrengst naar negatief gaat. Dan zal de omvormer niet blijven beweren dat die kan toveren en stroom, uit het niets haalt.

Acties:
  • 0 Henk 'm!

Anoniem: 1582350

Het werkt goed alleen de logging moet ik nog accurater maken.

Het was hier aan regenen en de opbrengst ging terug waardoor de omvormer stroom ging gebruiken. In het log hieronder kun je zien dat de omvormer een "reconnect" opdracht krijgt en later vanzelf weer gaat leveren.

wattPV is de trigger en zodra die positief wordt dan neemt de omvormer zelf stroom af.
grid: ON/OFF geeft de Grid status weer van tussen de 0-30 seconden geleden. Dat moet ik nog beter maken
date-time: om +/- 09:24:22 gaat hij van het Grid en om 09:28:43 is er weer aan. In de tussentijd is geen logging omdat er geen opbrengst ( wattPV is nul)

code:
1
2
3
4
5
6
7
8
9
{"date_time":"06-10 09:23:22","PVvolt":"267.9","wattPV":-8,"PVwattAC":66,"delta":58,"factorPV":-0.07,"grid":"ON"}
{"date_time":"06-10 09:23:52","PVvolt":"257.5","wattPV":-5,"PVwattAC":62,"delta":57,"factorPV":-0.04,"grid":"ON"}
{"date_time":"06-10 09:24:02","PVvolt":"263.1","wattPV":-6,"PVwattAC":63,"delta":57,"factorPV":-0.06,"grid":"ON"}
{"date_time":"06-10 09:24:12","PVvolt":"261.6","wattPV":-5,"PVwattAC":63,"delta":58,"factorPV":-0.05,"grid":"ON"}
{"date_time":"06-10 09:24:22","PVvolt":"280.2","wattPV":8,"PVwattAC":61,"delta":69,"factorPV":0.07,"grid":"ON"}
{"date_time":"06-10 09:28:42","PVvolt":"257.1","wattPV":-17,"PVwattAC":7,"delta":-10,"factorPV":-0.15,"grid":"OFF"}
{"date_time":"06-10 09:29:22","PVvolt":"151.7","wattPV":-9,"PVwattAC":63,"delta":54,"factorPV":-0.08,"grid":"ON"}
{"date_time":"06-10 09:29:32","PVvolt":"226.3","wattPV":-19,"PVwattAC":69,"delta":50,"factorPV":-0.17,"grid":"ON"}
{"date_time":"06-10 09:29:42","PVvolt":"235.6","wattPV":-20,"PVwattAC":72,"delta":52,"factorPV":-0.18,"grid":"ON"}


Zo ziet ondertussen het scherm eruit en onderaan zie in het rode gedeelte, de afschakelaar van het Grid.
Nieuw in het bovenste gedeelte (blauwe) is de rode node met het Switch symbool. Die zorgt ervoor dat na alleen in de tijd tussen zonsopgang en zonsondergang de omvormer en kWh-meter van de PV worden uitgevraagd.
Dank aan ThinkPad voor het op het spoor te zetten.

Afbeeldingslocatie: https://tweakers.net/i/Iah1RUxxH3roSS_wePozlZK65iA=/full-fit-in/4920x3264/filters:max_bytes(3145728):no_upscale():strip_icc():fill(white):strip_exif()/f/image/vFTrRGNylQ37AtE2oAOHDmzN.jpg?f=user_large

Toevoeging:
Ik met toegeven dat GoodWe dit goed voor elkaar heeft dat die omvormer van het Grid (stroomnet) kan worden genomen. Dit is waarschijnlijk ook een vereiste, maar de Reconnect kunnen zij zelf gebruiken om sluipstroomverbruik te voorkomen. Ik denk dat ze een beetje huiveriger zijn om dat te doen want als er heel weinig zon is dan gaat de omvormer ook echt uit. Die moet dan de opstartprocedure helemaal doorlopen.

[ Voor 8% gewijzigd door Anoniem: 1582350 op 06-10-2021 10:21 ]


Acties:
  • 0 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Nu online
Anoniem: 1582350 schreef op dinsdag 5 oktober 2021 @ 12:24:
Gelukkig heb ik geen last van schaduw en de eerste hoge boom staat op zo'n 60 meter afstand.

Als je de strings voor MPPT nodig hebt dan kan ik nu eenvoudig scannen.
[...]
Als je het makkelijk kan doen dan misschien handig ter referentie in dit topic? Heb het zelf ook niet nodig, maar er is ongetwijfeld iemand die er baat bij gaat hebben om het te documenteren hier :)

Acties:
  • +1 Henk 'm!

Anoniem: 1582350

De volgende strings, inclusief het zetten van de juiste tijd. Let er op dat je ook voor iedere tijd een passende CRC moet berekenen en meegeven.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Shadow scan:
MPPT ON  7f069d8600018c51
MPPT OFF 7f069d8600004d91

Set time:
6-10-2021 14:25:47  YYMMDDHHMMSS CRC
   -> 7f109d79000306150a060e192fea57
   -> 7f109d79000306150a060e112fed97
6-10-2021 14:17:47  211006141747

Grid Reconnect time 60 secs:
        SECS CRC
7f069e26003c4de6
        0060


De meting is om de 5 minuten en ik ga kijken of ik dat korter kan maken.

[ Voor 17% gewijzigd door Anoniem: 1582350 op 06-10-2021 15:51 ]


Acties:
  • 0 Henk 'm!

Anoniem: 1582350

wlmpie schreef op maandag 4 oktober 2021 @ 20:12:
@Anoniem: 1582350

Verder heb ik mij ook verbaasd over de "minimale" productie die de Goodwe omvormer aangeeft van rond de 75 watt terwijl deze volgens jouw metingen in werkelijkheid veel lager of zelfs negatief is, maar gemiddeld lijkt de omvormer in ieder geval de dagproductie wel goed weer te geven. klopt dat?
De logging loopt en ik haal eerst de dubbelen eruit als die zijn en sorteer dan op Wat de kWh-meter heeft gemeten.

Ik gebruik gawk om dubbelen en js om het dan te sorteren:

code:
1
cat vergelijk.txt | gawk '!a[$0]++' | jq -s 'sort_by(.kWhmeter)' >> GoodWeWolk.dat


Dit een deel van het bestand wat ik dan krijg:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
[
  {
    "kWhmeter": 3,
    "inverter": 18,
    "delta": 15
  },
  {
    "kWhmeter": 3,
    "inverter": 15,
    "delta": 12
  },
  {
    "kWhmeter": 5,
    "inverter": 20,
    "delta": 15
  },
  {
    "kWhmeter": 9,
    "inverter": 51,
    "delta": 42
  },
  {
    "kWhmeter": 14,
    "inverter": 63,
    "delta": 49
  },
  {
    "kWhmeter": 19,
    "inverter": 72,
    "delta": 53
  },

.
.
.
  {
    "kWhmeter": 707,
    "inverter": 670,
    "delta": -37
  },
  {
    "kWhmeter": 710,
    "inverter": 739,
    "delta": 29
  },
  {
    "kWhmeter": 800,
    "inverter": 785,
    "delta": -15
  },
  {
    "kWhmeter": 827,
    "inverter": 862,
    "delta": 35
  },
  {
    "kWhmeter": 929,
    "inverter": 945,
    "delta": 16
  },
  {
    "kWhmeter": 953,
    "inverter": 967,
    "delta": 14
  },
  {
    "kWhmeter": 998,
    "inverter": 960,
    "delta": -38
  },
  {
    "kWhmeter": 1222,
    "inverter": 1150,
    "delta": -72
  }
]

Acties:
  • 0 Henk 'm!

Anoniem: 1582350

Eindelijk een rechte lijn van mijn verbruik in de ochtend. Dat ik er niet eerder uitkwam komt waarschijnlijk dat ik nooit had kunnen bevroedden dat de omvormer ook stroom verbruikt als er weinig licht is. Dit kan ook in de ochtend zijn nadat de omvormer al opgestart is.

De rode lijn is mijn verbruik en je ziet dat de omvormer geen stroom heeft verbruikt.

Afbeeldingslocatie: https://tweakers.net/i/0cFBwCVXeAqxEuVO-swe9_QL7KM=/800x/filters:strip_icc():strip_exif()/f/image/hz1zNtyL1UcibYd8ORC9htN3.jpg?f=fotoalbum_large

Nu in de avond schakelt de omvormer zich uit als er weinig licht is. Komt er nog een zonnestraal dan is die binnen twee minuten weer aan het leveren.
Hier gaat het vooral om de paarse lijn en die laat zien dat het voltage niet tot zelfs onder de 50 volt daalt zoals normaal. Nu door het reconnecten bij stroomverbruik door de omvormer, gaat om 7:15 uur omvormer uit en de grafiek geeft daarna het voltage weer van het stroomnet.

Afbeeldingslocatie: https://tweakers.net/i/3ehnx7lmVC9U8B6kkI0ZJ_TGgjI=/800x/filters:strip_icc():strip_exif()/f/image/SNcg9bJhJHlSU41B7tQiEqyt.jpg?f=fotoalbum_large

Update: een beter voorbeeld van het afschakelen in de avond

Afbeeldingslocatie: https://tweakers.net/i/k8lyEz7fGaDr-xlrm_5XrKHyXe4=/800x/filters:strip_icc():strip_exif()/f/image/wgMNOj9nf6ooNNv7iZAk2DQ5.jpg?f=fotoalbum_large

code:
1
2
3
4
5
6
7
{"date_time":"08-10 18:44:42","PVvolt":"261.9","wattPV":-8,"PVwattAC":68,"delta":60,"factorPV":-0.07,"grid":"ON"}
{"date_time":"08-10 18:45:32","PVvolt":"271.6","wattPV":-7,"PVwattAC":66,"delta":59,"factorPV":-0.06,"grid":"ON"}
{"date_time":"08-10 18:45:42","PVvolt":"261.6","wattPV":-7,"PVwattAC":65,"delta":58,"factorPV":-0.06,"grid":"ON"}
{"date_time":"08-10 18:46:02","PVvolt":"266.6","wattPV":-7,"PVwattAC":67,"delta":60,"factorPV":-0.06,"grid":"ON"}
{"date_time":"08-10 18:46:22","PVvolt":"271.7","wattPV":-5,"PVwattAC":65,"delta":60,"factorPV":-0.04,"grid":"ON"}
{"date_time":"08-10 18:46:32","PVvolt":"279.1","wattPV":5,"PVwattAC":61,"delta":66,"factorPV":0.04,"grid":"ON"}
{"date_time":"08-10 18:47:02","PVvolt":"278.8","wattPV":9,"PVwattAC":61,"delta":70,"factorPV":0.07,"grid":"OFF"}


Te zien is om 17:20 dat het voltage snel daalt maar dat en nog steeds productie is en er is geen stroom afname door omvormer uit stroomnet.
Om 18:46 is er wel stroom opname door de omvormer en dit wordt ondervangen door een "reconnect" te zenden. Om 19:10 is de interne stroom op en gaat de omvormer ook echt uit. Hierna gaat de paarse lijn door als het voltage van stroomnet. De groene lijn loopt door tot middernacht en is die pas weer als de omvormer door de zonnepanelen met behulp van stroom uit de diepe slaap wordt gehaald.

[ Voor 36% gewijzigd door Anoniem: 1582350 op 08-10-2021 20:33 . Reden: Tweede avond grafiek ]


Acties:
  • 0 Henk 'm!

  • nighthunter
  • Registratie: December 2007
  • Nu online
Ethnocentrix schreef op maandag 4 oktober 2021 @ 17:15:
Ik ben er inmiddels achter dat de Goodwe Ethernet adapter een Hi-Flying Eport-E20 bevat. Dit is een andere chip dat de WiFi module.
En deze andere chip vernaggelt dus de UDP pakketjes :(
Zelf heb ik sinds vandaag de LAN adapter in huis, Wat mij opviel is dat de modules continue herstarten wanneer deze hot (met ingeschakelde omvormer) worden verwisseld, dus Wi-FI -> LAN en vice versa vereisen een powercycle van de omvormer.

Helaas werkt bij mij de LAN adapter dus ook niet met GoodWe-Local waar de Wi-Fi adapter dat wel prima doet.
Er zijn echter ook meerdere gelijksoortige problemen te vinden hier en hier.
De LAN adapter ondersteund overigens wel modbus over TCP wat zelfs vermeld staat op de site van GoodWe.

Vind het interessant dat GoodWe 2 producten op de markt heeft die verschillende implementaties voor hetzelfde hanteren. Ik wil nog even contact opnemen met de dealer voor een software update, maar ben bang dat dat weinig uithaalt.

[ Voor 14% gewijzigd door nighthunter op 07-10-2021 21:07 ]


Acties:
  • 0 Henk 'm!

  • Ethnocentrix
  • Registratie: Augustus 2002
  • Laatst online: 20:56

Ethnocentrix

Rijkserkend prutser

Bij mijn omvormer (GW5000D-NS met ethernet adapter) staat TCP port 502 potdicht, dus geen Modbus :(

[ Voor 11% gewijzigd door Ethnocentrix op 08-10-2021 09:36 ]

You know you're an engineer if you have no life & can prove it mathematically.


Acties:
  • 0 Henk 'm!

Anoniem: 1582350

Ik had ook daar gelezen een paar dagen terug. Die poort 502 is volgens mij voor het communiceren met een accu opslag.

Acties:
  • 0 Henk 'm!

Anoniem: 1582350

Ik heb een tijdje staan loggen en ik heb nu over de 4000 metingen en daarvan zijn er 1011 niet uniek. Eerst wilde ik de unieke eruit halen maar hoe vaak een zelfde meting voorkomt is ook een indicatie.

Als iemand mij uit kan leggen hoe ik in Excel een grafiek kan maken hiervan dan kan ik die maken.

Zo ziet de tabel eruit:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{"kWhmeter":406,"inverter":429,"delta":23}
{"kWhmeter":396,"inverter":419,"delta":23}
{"kWhmeter":387,"inverter":406,"delta":19}
{"kWhmeter":396,"inverter":409,"delta":13}
{"kWhmeter":421,"inverter":422,"delta":1}
{"kWhmeter":405,"inverter":453,"delta":48}
{"kWhmeter":387,"inverter":416,"delta":29}
{"kWhmeter":354,"inverter":387,"delta":33}
{"kWhmeter":342,"inverter":370,"delta":28}
{"kWhmeter":338,"inverter":372,"delta":34}
{"kWhmeter":344,"inverter":371,"delta":27}
{"kWhmeter":341,"inverter":371,"delta":30}
{"kWhmeter":341,"inverter":370,"delta":29}
.
.
.


Toch zelf aan het stoeien gegaan, na veel proberen en vloeken er dit uit gekregen:

Afbeeldingslocatie: https://tweakers.net/i/R-pxkQPyaGzFBJnVWLqwJ5suXpU=/800x/filters:strip_icc():strip_exif()/f/image/4AskG04YMNdJhTeOwPJiLdUP.jpg?f=fotoalbum_large

De dunne zwarte lijn is een zwevend gemiddelde. Er zijn dus plus 4500 meetpunten en die zie je op X-as.

Alles wat boven de nul zit is de omvormer aan de optimistische kant en onder de nul dan doet hij zichzelf te kort. De lijnen die eruit steken zijn 'meet fouten' en de waarden zijn zo verschillend dat het niet anders kan zijn.

Het is zo beperkt en de X-as wilde ik voorzien van het wattage maar dan krijg ik een vreemde grafiek met diagonale lijnen. De meting is de Delta (omvormer - kWhmeter) voor de omvormer loopt de reeks van 62 t/m 1709 en de kWh-meter loopt van -8 t/m 1680.

Update: een begin gemaakt met simpele logging opdat teruggekeken kan worden wanneer nu precies is gebeurd. Nu hield dat zelf in de gaten maar als ik er niet meer boven-op-zit (letterlijk) dan is het wel handig om te kunnen nakijken.

Heeft iemand nog opmerkingen naar aanleiding van de grafiek die ik heb gemaakt? Kan iemand dat beter? Ik heb nu meer dan 6600 meetpunten beschikbaar.

[ Voor 44% gewijzigd door Anoniem: 1582350 op 08-10-2021 20:25 . Reden: Power delivery curve ]


Acties:
  • +1 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Nu online
Anoniem: 1582350 schreef op vrijdag 8 oktober 2021 @ 10:59:
[...]

Heeft iemand nog opmerkingen naar aanleiding van de grafiek die ik heb gemaakt? Kan iemand dat beter?
[...]
Ik denk dat 99% van de users in dit topic er niet zo bovenop zit zoals jij en allang blij zijn dat ze data uit de omvormer kunnen trekken, de rest is bijzaak voor ze vermoed ik :+ ;)

[ Voor 14% gewijzigd door ThinkPad op 09-10-2021 09:58 ]


Acties:
  • 0 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Nu online
Heb geprobeerd om de tijd van de omvormer aan te passen via een UDP-request, maar krijg het nog niet voor elkaar. De request heb ik via Node-RED gegenereerd en daarna via SFK op de commandline verstuurd. Node-RED schiet bij mij namelijk in de stress als ik met meerdere UDP-sockets aan de gang ga. Het ophalen van de data van de omvormer werkt dan pas weer na een herstart van Node-RED, beetje vervelend.

Request lijkt ogenschijnlijk in orde, maar tijd die ik terugkrijg van de omvormer wijzigt nog niet. Maakt mij opzich niet zoveel uit dat hij afwijkt, ik gebruik die timestamp verder toch niet. Hier de code die ik tot nu toe heb, misschien heeft iemand er wat aan om op verder te bouwen. De code werkt dus nog NIET.

Aan de set msg.payload zou je een UDP-out blokje kunnen hangen.

Afbeeldingslocatie: https://tweakers.net/i/58KEihX3NIF-nPs3xfrB4HLSgsM=/full-fit-in/4920x3264/filters:max_bytes(3145728):no_upscale():strip_icc():fill(white):strip_exif()/f/image/EOL1apvuNBNuEyL0SSag69Wm.jpg?f=user_large

Afbeeldingslocatie: https://tweakers.net/i/t2gXTVU4ahpFveVsZiTBRRSrGRo=/full-fit-in/4920x3264/filters:max_bytes(3145728):no_upscale():strip_icc():fill(white):strip_exif()/f/image/B9s6nxtcXCbTLG4JyE8U0KSF.jpg?f=user_large

JSON:
1
[{"id":"b86254dd933adc8a","type":"tab","label":"GoodweTijd","disabled":false,"info":""},{"id":"ba41738cefc9b2bf","type":"inject","z":"b86254dd933adc8a","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":370,"y":360,"wires":[["87afbf1cfb4f252e"]]},{"id":"87afbf1cfb4f252e","type":"function","z":"b86254dd933adc8a","name":"Set time","func":"function crc16(buffer) {\n    var crc = 0xFFFF;\n    var odd;\n\n    for (var i = 0; i < buffer.length; i++) {\n        crc = crc ^ buffer[i];\n\n        for (var j = 0; j < 8; j++) {\n            odd = crc & 0x0001;\n            crc = crc >> 1;\n            if (odd) {\n                crc = crc ^ 0xA001;\n            }\n        }\n    }\n    return crc.toString(16);\n}\n\nlet date = new Date()\nlet year = date.getFullYear().toString().substr(-2);\nlet month = ('0' + (date.getMonth()+1)).slice(-2);\nlet day = ((date.getDate() < 10 ? '0' : '') + date.getDate());\nlet hour = (('0' + date.getHours()).slice(-2));\nlet minutes = ('0' + date.getMinutes()).slice(-2);\nlet seconds = ('0' + date.getSeconds()).slice(-2);\n\nvar timestamp_human = year + '-' + month  + '-' + day + '-' + hour + '-' + minutes + '-' + seconds;\n\n//Convert values to hex\nyear = year.toString(16);\nmonth = month.toString(16);\nday = day.toString(16);\nhour = hour.toString(16);\nminutes = minutes.toString(16);\nseconds = seconds.toString(16);\n\nhex_timestamp = year+month+day+hour+minutes+seconds;\n\nvar prefix = '7f109d79000306';\nvar crc = crc16(prefix+hex_timestamp);\nvar request = prefix+hex_timestamp+crc;\n\nvar inverter_ask = Buffer.from(request,\"hex\");\n\n//msg.payload = inverter_ask;\nmsg.payload = {\n    crc: crc,\n    timestamp: timestamp_human,\n    hex_timestamp: hex_timestamp,\n    hexrequest: request,\n    request: inverter_ask\n    };\n    \nreturn msg;\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":520,"y":360,"wires":[["fc205da300b0591c","29b0373427ff0521"]]},{"id":"fc205da300b0591c","type":"debug","z":"b86254dd933adc8a","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":870,"y":360,"wires":[]},{"id":"29b0373427ff0521","type":"change","z":"b86254dd933adc8a","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.request","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":620,"y":440,"wires":[[]]}]


Edit: ik zie nu sowieso dat in het request de datum/tijd niet goed wordt omgezet naar hex, het zijn nu gewoon 1:1 de human readable waardes. Met wat klooien met parseInt() en dan toString(16) krijg ik er wel hex waardes mee, maar dan is de leading zero weer verdwenen. Misschien weet @Proton_ dit?

[ Voor 7% gewijzigd door ThinkPad op 09-10-2021 09:57 ]


Acties:
  • 0 Henk 'm!

  • Proton_
  • Registratie: November 2011
  • Laatst online: 21:25

Proton_

Moderator Wonen & Mobiliteit 

Team Welles

@ThinkPad van node-red heb ik helaas geen kaas gegeten.

Het ik-wil-een-warmtepomp FAQ topic- '23 MG5, douchen met wtw en Auer Edel Eau, verwarming met Vaillant Arotherm Plus.


Acties:
  • 0 Henk 'm!

Anoniem: 1582350

Altijd verglijken met een reeds bekende uitkomst:

code:
1
2
Bekende string:   7f109d79000306150a060e112fed97
Berekende string: 7f109d79000306150a060e112fd873

De checksum is anders

Reeds bekende waarden gebruiken:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
year = 21
month = 10
day = 06
hour = 14
minutes = 17
seconds = 47

//Convert values to hex
year = ('0' + year.toString(16)).slice(-2);
month = ('0' + month.toString(16)).slice(-2);
day = ('0' + day.toString(16)).slice(-2);
hour = ('0' + hour.toString(16)).slice(-2);
minutes = ('0' + minutes.toString(16)).slice(-2);
seconds = ('0' + seconds.toString(16)).slice(-2);


ps. Ik heb ook een voorloop "0" erbij gezet in de code hierboven.

[ Voor 7% gewijzigd door Anoniem: 1582350 op 09-10-2021 12:43 ]


Acties:
  • +1 Henk 'm!

Anoniem: 1582350

Ik heb een complete module gepakt die CRC16 ModBus berekend en die geeft wel een goede CRC.

Het heeft waarschijnlijk te maken dat bij ModBus twee waarden moeten worden verwisseld bij het berekenen daarvan. Bij het checken zijn die waarden dus al eerder omgedraaid en zo het de check wel goed met de code van Thinkpad.

De regel met de swap erin:
crcinputcrc16modbus=crcinputcrc16modbus.substr(2) + crcinputcrc16modbus.substr(0, 2); //swap bytes
De nieuwe flow:
code:
1
[{"id":"b86254dd933adc8a","type":"tab","label":"GoodweTijd","disabled":false,"info":""},{"id":"ba41738cefc9b2bf","type":"inject","z":"b86254dd933adc8a","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payloadType":"date","x":120,"y":50,"wires":[["87afbf1cfb4f252e"]]},{"id":"87afbf1cfb4f252e","type":"function","z":"b86254dd933adc8a","name":"Set time","func":"let date = new Date()\nlet year = date.getFullYear().toString().substr(-2);\nlet month = ('0' + (date.getMonth()+1)).slice(-2);\nlet day = ((date.getDate() < 10 ? '0' : '') + date.getDate());\nlet hour = (('0' + date.getHours()).slice(-2));\nlet minutes = ('0' + date.getMinutes()).slice(-2);\nlet seconds = ('0' + date.getSeconds()).slice(-2);\n\n//Convert values to hex\nyear = ('0' + year.toString(16)).slice(-2);\nmonth = ('0' + month.toString(16)).slice(-2);\nday = ('0' + day.toString(16)).slice(-2);\nhour = ('0' + hour.toString(16)).slice(-2);\nminutes = ('0' + minutes.toString(16)).slice(-2);\nseconds = ('0' + seconds.toString(16)).slice(-2);\n\n//hex_timestamp = year+month+day+hour+minutes+seconds;\n\nprefix        = \"7F109D79000306\"\nmsg.payload = prefix+year+month+day+hour+minutes+seconds\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":270,"y":50,"wires":[["98c1f360924bce5e"]]},{"id":"fc205da300b0591c","type":"debug","z":"b86254dd933adc8a","name":"","active":true,"tosidebar":false,"console":false,"tostatus":true,"complete":"payload","targetType":"msg","statusVal":"payload","statusType":"auto","x":610,"y":50,"wires":[]},{"id":"29b0373427ff0521","type":"change","z":"b86254dd933adc8a","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.request","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":620,"y":100,"wires":[[]]},{"id":"98c1f360924bce5e","type":"function","z":"b86254dd933adc8a","name":"CRC16-modbus","func":"var CRCMaster = {\n    StringToCheck: \"\",\n    CleanedString: \"\",\n    CRCTableDNP: [],\n    init: function() {\n        this.CRCDNPInit();\n    },\n    CleanString: function(inputType) {\n        if (inputType == \"ASCII\") {\n            this.CleanedString = this.StringToCheck;\n        } else {\n            if (this.StringToCheck.match(/^[0-9A-F \\t]+$/gi) !== null) {\n                this.CleanedString = this._hexStringToString(this.StringToCheck.toUpperCase().replace(/[\\t ]/g, ''));\n            } else {\n                window.alert(\"String doesn't seem to be a valid Hex input.\");\n                return false;\n            }\n        }\n        return true;\n    },\n    CRCDNPInit: function() {\n        var i, j, crc, c;\n        for (i = 0; i < 256; i++) {\n            crc = 0;\n            c = i;\n            for (j = 0; j < 8; j++) {\n                if ((crc ^ c) & 0x0001) crc = (crc >> 1) ^ 0xA6BC;\n                else crc = crc >> 1;\n                c = c >> 1;\n            }\n            this.CRCTableDNP[i] = crc;\n        }\n    },\n    CRC16Modbus: function() {\n        var crc = 0xFFFF;\n        var str = this.CleanedString;\n        for (var pos = 0; pos < str.length; pos++) {\n            crc ^= str.charCodeAt(pos);\n            for (var i = 8; i !== 0; i--) {\n                if ((crc & 0x0001) !== 0) {\n                    crc >>= 1;\n                    crc ^= 0xA001;\n                } else\n                    crc >>= 1;\n            }\n        }\n        return crc;\n    },\n    _stringToBytes: function(str) {\n        var ch, st, re = [];\n        for (var i = 0; i < str.length; i++) {\n            ch = str.charCodeAt(i); // get char\n            st = []; // set up \"stack\"\n            do {\n                st.push(ch & 0xFF); // push byte to stack\n                ch = ch >> 8; // shift value down by 1 byte\n            }\n            while (ch);\n            // add stack contents to result\n            // done because chars have \"wrong\" endianness\n            re = re.concat(st.reverse());\n        }\n        // return an array of bytes\n        return re;\n    },\n    _hexStringToString: function(inputstr) {\n        var hex = inputstr.toString(); //force conversion\n        var str = '';\n        for (var i = 0; i < hex.length; i += 2)\n            str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n        return str;\n    },\n    Calculate: function(str, inputType) {\n        this.StringToCheck = str;\n        if (this.CleanString(inputType)) {\n            crcinputcrc16modbus=this.CRC16Modbus().toString(16).toUpperCase();\n            crcinputcrc16modbus=crcinputcrc16modbus.substr(2) + crcinputcrc16modbus.substr(0, 2); //swap bytes\n   \n        }\n    }\n};\n\nCRCMaster.init();\n\nvar inputType = \"HEX\";\nvar crcinputcrc16modbus;\nvar crcinput = msg.payload.toUpperCase();\n\nCRCMaster.Calculate(crcinput, inputType);\n\nmsg.payload = crcinput + crcinputcrc16modbus;\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":430,"y":50,"wires":[["fc205da300b0591c","29b0373427ff0521"]]}]

Acties:
  • 0 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Nu online
Ah, die CRC moest inderdaad geswapped worden ja :F Heb je hem al geprobeerd of het werkt? Het is hier nu donker, zal morgen eens proberen.

Acties:
  • 0 Henk 'm!

Anoniem: 1582350

Niet, niet geprobeerd maar met de test waarde was de CRC goed. Ik zag ook geen verzender Node in de huidige flow.

Bij een swap werkt dan jouw korte script ook?

Acties:
  • +1 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Nu online
Kwam met jouw code al iets verder (sfk kwam na versturen weer terug op de prompt ipv dat hij bleef wachten op een reply en ik kreeg een AA55xxxx reply van de omvormer). Maar ik moest nog een kleine aanpassing doen aan jouw code, als je goed keek dan stond het in jouw payload ook gewoon als leesbaar formaat (211010xxxxxx) i.p.v. hex. Dit is de inhoud van de function node nu. Als ik de payload kopieer en met '0x' ervoor aan SFK voer dan zie ik dat in de data die de omvormer teruggeeft de tijd nu weer klopt *O*

Als je dit in jouw function node zet dan werkt het, regel 9 t/m 14 heb ik toegevoegd.
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
let date = new Date()
let year = date.getFullYear().toString().substr(-2);
let month = ('0' + (date.getMonth()+1)).slice(-2);
let day = ((date.getDate() < 10 ? '0' : '') + date.getDate());
let hour = (('0' + date.getHours()).slice(-2));
let minutes = ('0' + date.getMinutes()).slice(-2);
let seconds = ('0' + date.getSeconds()).slice(-2);

year = parseInt(year);
month = parseInt(month);
day = parseInt(day);
hour = parseInt(hour);
minutes = parseInt(minutes);
seconds = parseInt(seconds);

//Convert values to hex
year = ('0' + year.toString(16)).slice(-2);
month = ('0' + month.toString(16)).slice(-2);
day = ('0' + day.toString(16)).slice(-2);
hour = ('0' + hour.toString(16)).slice(-2);
minutes = ('0' + minutes.toString(16)).slice(-2);
seconds = ('0' + seconds.toString(16)).slice(-2);

prefix        = "7F109D79000306"
msg.payload = prefix+year+month+day+hour+minutes+seconds

return msg;


De payload stuurde ik buiten Node-RED om naar de omvormer, zoals gezegd doet Node-RED wat vervelend als ik meerdere UDP-sockets naar dezelfde poort, in verschillende flows gebruik. Ik denk dat ik dit gewoon in de uitlees-flow bij mij erbij zet om 1x in de week ofzo even te draaien.

@Proton_ De 'function nodes' in Node-RED zijn gewoon Javascript ;)

@nighthunter Het is dus prima te scripten om de omvormer van de juiste tijd te voorzien. Bij mij week hij na het verbreken van de verbinding met Goodwe HQ zo'n 3-4 mnd. geleden inmiddels een minuut of 5 af, dus als je dit 1x in de week ofzo doet is al genoeg denk ik.

[ Voor 15% gewijzigd door ThinkPad op 10-10-2021 09:46 ]


Acties:
  • 0 Henk 'm!

  • Ethnocentrix
  • Registratie: Augustus 2002
  • Laatst online: 20:56

Ethnocentrix

Rijkserkend prutser

nighthunter schreef op donderdag 7 oktober 2021 @ 20:57:
[...]

Vind het interessant dat GoodWe 2 producten op de markt heeft die verschillende implementaties voor hetzelfde hanteren. Ik wil nog even contact opnemen met de dealer voor een software update, maar ben bang dat dat weinig uithaalt.
Heb jij nog succes gehad met het verkrijgen van een firmware update van de LAN module? Ik ben al een paar dagen heen en weer aan het mailen met Goodwe support, maar ze willen gewoon niet snappen dat ik de firmware van de LAN module wil upgraden geloof ik :( Inmiddels is wel de firmware van mijn inverter al 2x geupgrade |:(

You know you're an engineer if you have no life & can prove it mathematically.


Acties:
  • 0 Henk 'm!

Anoniem: 1582350

@Ethnocentrix Ik heb de indruk dat de omvormer zelf actief is en de gegevens verzendt naar een server. Heb je webmenu bij de omvormer.

Bij mijn XS2000 kon via het webmenu, uitgebreide versie, ook voor TCP kiezen. Toen dacht ik dat het voor portaal van GoodWe was.

Update, kijkende in mijn eigen webmenu die is omgezet naar advanced:

Afbeeldingslocatie: https://tweakers.net/i/mMl3iMlOB03ckuQBeqjXXVLiN-w=/full-fit-in/4920x3264/filters:max_bytes(3145728):no_upscale():strip_icc():fill(white):strip_exif()/f/image/ySPFpWkd1JpyHXhculmA7qFt.jpg?f=user_large

Ik heb in het menu gekozen voor TCP-Server i.p.v. standaard client en dan kun je dus poort 502 instellen i.p.v. nu 20001.

Als je ook het uitgebreide menu geactiveerd hebt dan kun je het proberen en ik denk zelfs dat dit je jouw omvormer uit zich dan laat uitlezen via TCP. Let op dit zit op de STA kant dus in jouw interne netwerk en niet op 10.10.100.253 waar de UDP server zit via de AP.

Update 2: Ik denk zelfs dat het bij jou in het standaard scherm zit omdat je dus een LAN stick hebt. Waarom, omdat de uitgebreide interface alleen voor de stick met WiFi is en ik heb geen andere webinterface kunnen vinden.

[ Voor 66% gewijzigd door Anoniem: 1582350 op 11-10-2021 17:14 . Reden: OPlossing? ]


Acties:
  • +1 Henk 'm!

  • Ethnocentrix
  • Registratie: Augustus 2002
  • Laatst online: 20:56

Ethnocentrix

Rijkserkend prutser

Op de LAN stick kan je bijzonder weinig instellen:

Afbeeldingslocatie: https://tweakers.net/i/jBqbAQEvvKqNFplgv8ONEVbSxU4=/800x/filters:strip_icc():strip_exif()/f/image/cD0Awtuk3aoOHiqqsGHs8Eml.jpg?f=fotoalbum_large

De reden dat ik bij Goodwe om een firmware update aan het hengelen ben is dat ik bij het uitlezen op port 8899 heel veel corrupte UDP paketten krijg. Op GitHub zie je dat bij meerdere personen. In de release notes van Hi-flying (de producent dan de chip in de LAN module) staan meerdere fixes vermeldt die dit zouden moeten oplossen, maar Goodwe gebruikt nog een antieke firmware versie.
Ik hoop daarom dat er vanuit Goodwe een update is. Zo niet, dan is een firmware file van Goodwe een mooie backup om relatief veilig een versie vanuit Hi-flying zelf te flashen.

[ Voor 8% gewijzigd door Ethnocentrix op 11-10-2021 17:53 ]

You know you're an engineer if you have no life & can prove it mathematically.


Acties:
  • 0 Henk 'm!

Anoniem: 1582350

De uitgebreidere interface staat een FW update toe alleen ik absoluut niet of de advanced webinterface voor de WiFi ook werkt voor de LAN versie. De insteek kan ook zijn bij support om te vragen om de uitgebreide interface om dan te kunnen updaten.

Vreemd is dat de LAN versie de termen gebruikt van een WiFi stick, AP, STA.

[ Voor 19% gewijzigd door Anoniem: 1582350 op 11-10-2021 19:24 ]


Acties:
  • 0 Henk 'm!

Anoniem: 1582350

Zoals al eerder aangegeven was ik gestart met het loggen van gegevens van het PV systeem. Eerst had ik losse bestanden die maar één gevens type logde maar ik heb dat nu gecombineerd. Het log wordt om de vijf minuten geschreven en "events" worden lokaal opgespaard en dan pas weggeschreven.

Het log ziet er dan zo uit:
20211011 12:00:02 produced Faraday meter: 96330.0
20211011 18:17:40 sunEvent Inverter is forced to reconnect to Grid
20211011 18:23:10 sunEvent Inverter is forced to reconnect to Grid
20211011 18:28:40 sunEvent Inverter is forced to reconnect to Grid
20211011 18:34:30 sunEvent Inverter is forced to reconnect to Grid
20211011 19:25:35 sunEvent End of production period
20211011 23:59:59 produced Todays production was: 4914 W/h
20211011 23:59:59 produced Prev. day, Peak : 1935 Watt at: 15H23
20211012 00:00:04 produced Faraday meter: 96327.8
20211012 07:56:14 sunEvent Start of production period
20211012 08:33:50 sunEvent Inverter is forced to reconnect to Grid
Ik kan nu goed zien wanneer der "reconnects" wanneer de omvormer stroom gaat afnemen i.p.v. opwekken. Het einde en het begin van de productie zit erin en dat zijn zonsopkomst en zonsondergang. Dan starten ook de metingen want in als er geen zon is dan hoeft er niet actief de omvormer benaderd worden voor gegevens, die slaapt dan namelijk.

Gisteravond moest de omvormer vier maal een "reconnect" uitvoeren en vanochtend toen het regende ook nog een keer.

Het specifieke log geeft dit in meer detail weer. Als de tijden gaten vertonen dan is de meting nul en staat de omvormer te wachten op genoeg stroom van de panelen. Ik log alleen tussen -10 en +10 volt en het wachten zelf niet.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{"date_time":"11-10 18:17:42","PVvolt":"283.2","wattPV":6,"PVwattAC":65,"delta":71,"factorPV":0.05,"grid":"ON"}
{"date_time":"11-10 18:19:12","PVvolt":"148.1","wattPV":-6,"PVwattAC":67,"delta":61,"factorPV":-0.05,"grid":"ON"}
{"date_time":"11-10 18:23:12","PVvolt":"282.6","wattPV":5,"PVwattAC":59,"delta":64,"factorPV":0.04,"grid":"OFF"}
{"date_time":"11-10 18:24:42","PVvolt":"151.4","wattPV":-9,"PVwattAC":68,"delta":59,"factorPV":-0.08,"grid":"ON"}
{"date_time":"11-10 18:28:22","PVvolt":"272.5","wattPV":-6,"PVwattAC":57,"delta":51,"factorPV":-0.05,"grid":"OFF"}
{"date_time":"11-10 18:28:42","PVvolt":"283.2","wattPV":6,"PVwattAC":59,"delta":65,"factorPV":0.05,"grid":"OFF"}
{"date_time":"11-10 18:30:12","PVvolt":"151.0","wattPV":-9,"PVwattAC":67,"delta":58,"factorPV":-0.08,"grid":"OFF"}
{"date_time":"11-10 18:30:22","PVvolt":"105.4","wattPV":-5,"PVwattAC":63,"delta":58,"factorPV":-0.04,"grid":"ON"}
{"date_time":"11-10 18:33:32","PVvolt":"267.9","wattPV":-9,"PVwattAC":67,"delta":58,"factorPV":-0.08,"grid":"ON"}
{"date_time":"11-10 18:34:32","PVvolt":"279.7","wattPV":8,"PVwattAC":64,"delta":72,"factorPV":0.07,"grid":"ON"}
{"date_time":"12-10 08:31:22","PVvolt":"268.5","wattPV":-7,"PVwattAC":67,"delta":60,"factorPV":-0.06,"grid":"ON"}
{"date_time":"12-10 08:31:42","PVvolt":"272.3","wattPV":-8,"PVwattAC":67,"delta":59,"factorPV":-0.07,"grid":"ON"}
{"date_time":"12-10 08:32:12","PVvolt":"272.3","wattPV":-5,"PVwattAC":66,"delta":61,"factorPV":-0.04,"grid":"ON"}
{"date_time":"12-10 08:32:32","PVvolt":"268.0","wattPV":-9,"PVwattAC":67,"delta":58,"factorPV":-0.08,"grid":"ON"}
{"date_time":"12-10 08:32:42","PVvolt":"265.2","wattPV":-7,"PVwattAC":65,"delta":58,"factorPV":-0.07,"grid":"ON"}
{"date_time":"12-10 08:33:22","PVvolt":"268.4","wattPV":-9,"PVwattAC":67,"delta":58,"factorPV":-0.08,"grid":"ON"}
{"date_time":"12-10 08:33:42","PVvolt":"267.2","wattPV":-8,"PVwattAC":67,"delta":59,"factorPV":-0.07,"grid":"ON"}
{"date_time":"12-10 08:33:52","PVvolt":"282.7","wattPV":5,"PVwattAC":64,"delta":69,"factorPV":0.04,"grid":"ON"}
{"date_time":"12-10 08:46:32","PVvolt":"82.7.","wattPV":-7,"PVwattAC":62,"delta":55,"factorPV":-0.06,"grid":"OFF"}

Acties:
  • 0 Henk 'm!

  • Ethnocentrix
  • Registratie: Augustus 2002
  • Laatst online: 20:56

Ethnocentrix

Rijkserkend prutser

Anoniem: 1582350 schreef op maandag 11 oktober 2021 @ 19:19:
De uitgebreidere interface staat een FW update toe alleen ik absoluut niet of de advanced webinterface voor de WiFi ook werkt voor de LAN versie. De insteek kan ook zijn bij support om te vragen om de uitgebreide interface om dan te kunnen updaten.

Vreemd is dat de LAN versie de termen gebruikt van een WiFi stick, AP, STA.
Ik heb vandaag de gok genomen en deze firmware geprobeerd te flashen op mijn LAN stick.
Conclusie: De firmware wordt niet geflashed en de customized webpage flashed wel, maar resulteert in een web interface die niets meer doet (op elk request een krijg ik nu een 404).

In een poging om de webpage weer werkend te krijgen heb ik de webpage van de Wifi-stick geflashed. Die werkt wel 8)7

Dat verklaart wel waarom er WiFi termen gebruikt worden.

Ik vermoed nu dus dat de LAN stick een custom versie voor Goodwe is van de Hi-flying Eport E20. Deze foto van de binnenkant van de stick lijkt dat ook te bevestigen:
Afbeeldingslocatie: https://lh3.googleusercontent.com/pw/AM-JKLWvhXzpZlZ5olha4xWxTt6a9L7K-Ad8SMYHpGpQTBm2h3fOhUq76zTQnbW455amhgaYkWqWs42m09DssWqoz7Z4TNFyUvVNj30QLnp89rRl9Y8pQ3qleCp35J4fPNKpri0zoZaR_PL5fbTQm0QPz4EZOg=s906-no?authuser=0
Type E20-GDW-0001 lijkt te suggereren dat de chip (of de firmware) speciaal voor Goodwe is gemaakt.

You know you're an engineer if you have no life & can prove it mathematically.


Acties:
  • 0 Henk 'm!

Anoniem: 1582350

En kun je met de WiFi interface nu ook de TCP server activeren? Ik heb toen de UDP aan de STA proberen werkend te krijgen maar dat lukte niet.

Acties:
  • 0 Henk 'm!

Anoniem: 1582350

En..... @Ethnocentrix

Acties:
  • 0 Henk 'm!

  • thesaxofonist
  • Registratie: November 2016
  • Laatst online: 21:01
Dit lijkt me de plek om mijn vraag neer te leggen.

Ik heb een systeem met twee omvormers van GoodWe. Een GW3600DNS uit 2017 en een GW3000DNS uit 2018. De 3000 schrijft iedere minuut data weg. De 3600 doet dat iedere 5 minuten.

Daar kan SEMS niet goed mee overweg. Ik kan óf de ene omvormer bekijken, óf de andere. Beiden samen gaat niet lekker.

Ik wil daarom dat de 3600 ook iedere minuut data gaat wegschrijven. Daarom heb ik de firmware ervan laten updaten. Maar dat had geen effect. Iemand enig idee wat een volgende stap kan zijn? Moet ik het zoeken in de omvormer zelf? Of in de wifi-stick?

Ik kan natuurlijk de wifi-sticks verwisselen om daarachter te komen. Maar helaas kan ik er slecht bij. Dus daarom vraag ik eerst maar eens wat advies zodat ik wat gerichter aan de slag kan gaan.

[ Voor 21% gewijzigd door thesaxofonist op 14-10-2021 14:46 ]


Acties:
  • 0 Henk 'm!

  • Proton_
  • Registratie: November 2011
  • Laatst online: 21:25

Proton_

Moderator Wonen & Mobiliteit 

Team Welles

@thesaxofonist Met hulp van een raspberry pi oid beide laten uploaden naar PvOutput.org :)
Dan heb je SEMS niet meer nodig en kan je de onbeveiligde omvormers van je netwerk gooien.

Het ik-wil-een-warmtepomp FAQ topic- '23 MG5, douchen met wtw en Auer Edel Eau, verwarming met Vaillant Arotherm Plus.


Acties:
  • 0 Henk 'm!

  • thesaxofonist
  • Registratie: November 2016
  • Laatst online: 21:01
Proton_ schreef op donderdag 14 oktober 2021 @ 15:15:
@thesaxofonist Met hulp van een raspberry pi oid beide laten uploaden naar PvOutput.org :)
Dan heb je SEMS niet meer nodig en kan je de onbeveiligde omvormers van je netwerk gooien.
Ja, dat had ik ook al bedacht. Maar je voelt hem al aankomen: dat is niet het antwoord waar ik naar zoek ;)

Acties:
  • 0 Henk 'm!

Anoniem: 1582350

Ik denk dat de interval in de omvormer zelf zit en niet in de stick. De omvormer initieert en de stick kan worden gedefinieerd aan de STA (router) kant waar naartoe deze data gaat.

Naar Sems dan is het gecodeerd met de encryptie die Goodwe heeft opgegeven. Is het UDP of lokaal TCP dan is er geen encryptie van toepassing.

Acties:
  • +1 Henk 'm!

Anoniem: 1582350

Zo ik heb de toevoegingen nu al even draaien en die geven mij informatie over wanneer de PV is begonnen met leveren en wanneer die gestopt is. In het log kan meer zien.

Dit is overdag wanneer de PV stroom levert:

Afbeeldingslocatie: https://tweakers.net/i/mWgkoA_IYRECSCvaz1i1O67h3rI=/full-fit-in/4920x3264/filters:max_bytes(3145728):no_upscale():strip_icc():fill(white):strip_exif()/f/image/aAIJ5twuWG2b65qBXXzLHqq0.jpg?f=user_large

Onder de node "Set an status inverter" staat dat sinds 8:59 er stroom geëxporteerd wordt. Of dit een reconnect of een eerste dag levering is, kan ik weer zien in het log

Dit is nadat de zon onder is gegaan (gisteren):

Afbeeldingslocatie: https://tweakers.net/i/1WkNFz4WuZzILg7zCFCWCXv0di4=/full-fit-in/4920x3264/filters:max_bytes(3145728):no_upscale():strip_icc():fill(white):strip_exif()/f/image/A8o7fUSnWC3VG8RybLAX0nhg.jpg?f=user_large

Hier kun je zien dat bij de nodes "Value averaging" de status zien van de inverter en de kwh-meter van de inverter. De hoofd kwh-meter wordt dag en nacht geregistreerd. En de laatste levering van stroom aan het net staat weer onder de node "Set an status inverter".

Het log van het bovenstaande en de dag waarden:
20211018 18:09:00 sunEvent Inverter has disconnected from the Grid
20211018 18:40:45 sunEvent End of production day
20211018 23:59:59 produced Todays production: 3.857 kW/h, of which was exported: 0.774 kW/h
20211019 00:00:04 produced Faraday meter: 96321.9 kW/h
20211019 08:08:42 sunEvent Start of production day
20211019 08:59:42 sunEvent Inverter has (re)connected to the Grid
Het log geeft aan dat er geen reconnect is geweest en dat het de eerste levering van vandaag is.

Het kan verwarrend zijn dat de bovenste "Value averaging" een waarde aangeeft de indirect gerelateerd is met de PV installatie. De waardes daar is mijn verbruik op dat moment.
De opbrengst van de PV is te zien onder de node daaronder. De PV kWh-meter. Een negatieve waarde omdat de stroom in het stroom net gaat of intern gebruikt wordt zoals hier te zien is.

De waarden tussen haakjes is de laatst gemeten waarde en de daarvoor staat dan de gemiddelde waarde.

Acties:
  • 0 Henk 'm!

Anoniem: 1582350

Nadat ik de nodes een beetje voor elkaar heb, de stap gemaakt naar het mooi weergeven van die al die gegevens.

Het was veel gemakkelijker dan ik dacht en na een halve dag proberen had dit. Het is een begin en nog niet alle relevante informatie staat erin.

Afbeeldingslocatie: https://tweakers.net/i/PwYBtNprhf-mJqF0yR_9FmMEHwU=/x800/filters:strip_icc():strip_exif()/f/image/2dd5fJjfGhfH3zGby1kZnh8S.jpg?f=fotoalbum_large

Hieronder het scherm als er geen productie is en ik heb het informatie scherm wat aangepast:

Afbeeldingslocatie: https://tweakers.net/i/LXalvSb5Aa8j5ACx30bbgAF2XP4=/full-fit-in/4920x3264/filters:max_bytes(3145728):no_upscale():strip_icc():fill(white):strip_exif()/f/image/OtLnRUkmari4ItW4L9mmhlMk.jpg?f=user_large

Een tweede scherm met de dag waarden:

Afbeeldingslocatie: https://tweakers.net/i/Azi15r01HIqMBVqD_Z8fvLIVsdg=/full-fit-in/4920x3264/filters:max_bytes(3145728):no_upscale():strip_icc():fill(white):strip_exif()/f/image/jV9PtaM0V8BuFlr5mvE0xZ5J.jpg?f=user_large

En totaal tot nu toe scherm:

Afbeeldingslocatie: https://tweakers.net/i/xySl3pKYAUdD6D66YlvUudjzDak=/full-fit-in/4920x3264/filters:max_bytes(3145728):no_upscale():strip_icc():fill(white):strip_exif()/f/image/oj22jT95OZhk5B58BEZp8W20.jpg?f=user_large

[ Voor 52% gewijzigd door Anoniem: 1582350 op 24-10-2021 15:29 . Reden: Layout wijzigingen en extra schermen en die schermen weer bijgewerkt. 23 okt. ]


Acties:
  • +5 Henk 'm!

  • Aiolos
  • Registratie: Januari 2002
  • Niet online
Sinds deze week heeft ESPHome ook een Modbus controller. Daarmee kun je praktisch elk modbus apparaat uitlezen als je de registers weet. Met een ESP8266/Wemos en MAX485 kun je dan vrij eenvoudig uitlezen.

Voor de GoodWe omvormers (in mijn geval voor de XS2000 en XS2500) heb ik een basisconfiguratie gemaakt.
In Home Assistant levert dat dan bijvoorbeeld de volgende card op:
Afbeeldingslocatie: https://tweakers.net/i/YgazzL6pLXR0qJMxAwcghTVtc2E=/full-fit-in/4000x4000/filters:no_upscale():fill(white):strip_exif()/f/image/unCcSVCCVT1LjkbOyoIcFe81.png?f=user_large

Voor de configuratie zie github of hieronder.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
esphome:
  name: modbus
  platform: ESP8266
  board: d1_mini

# Enable/Disable logging
logger:
  #level: VERBOSE
  baud_rate: 0

# Enable Home Assistant API
api:

ota:
  password: "ac66b32bb32a860377529dfcf3585979"

wifi:
  #ssid: "YourWifiSSID"
  #password: "YourWifiPassword"

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "ESP-Modbus"
    password: "configesp"

captive_portal:

uart:
  id: mod_bus
  tx_pin: D7
  rx_pin: D6
  baud_rate: 9600
  stop_bits: 1
  
modbus:
  flow_control_pin: D5
  id: modbus1
  send_wait_time: 1000ms

modbus_controller:
  - id: goodwe
    ## the Modbus device addr (defaults to 247 (0xF7) for goodwe inverters)
    address: 0xF7
    modbus_id: modbus1
    setup_priority: -10
    #command_throttle: 250ms
    update_interval: 15s

sensor:
  - platform: modbus_controller
    modbus_controller_id: goodwe
    id: pv_temperature
    name: "Temperature"
    address: 0x030F
    unit_of_measurement: "C"
    register_type: holding
    value_type: S_WORD
    accuracy_decimals: 1
    filters:
      - multiply: 0.1

  - platform: modbus_controller
    modbus_controller_id: goodwe  
    id: pv_power
    name: "Feeding Power"
    address: 0x0233
    unit_of_measurement: "W"
    register_type: holding
    value_type: U_WORD
    accuracy_decimals: 0

  - platform: modbus_controller
    modbus_controller_id: goodwe
    id: pv_total_energy
    name: "Total Energy"
    address: 0x0313
    unit_of_measurement: "kWh"
    register_type: holding
    value_type: U_WORD
    accuracy_decimals: 1
    filters:
      - multiply: 0.1

  - platform: modbus_controller
    modbus_controller_id: goodwe
    id: pv_day_energy
    name: "Day Energy"
    address: 0x0236
    unit_of_measurement: "kWh"
    register_type: holding
    value_type: U_WORD
    accuracy_decimals: 1
    filters:
      - multiply: 0.1

  - platform: modbus_controller
    modbus_controller_id: goodwe
    id: pv_e_day
    name: "E-Day"
    address: 0x0320
    unit_of_measurement: "kW"
    register_type: holding
    value_type: U_WORD
    accuracy_decimals: 1
    filters:
      - multiply: 0.1

  - platform: modbus_controller
    modbus_controller_id: goodwe
    id: pv_p_ac
    name: "Pac"
    address: 0x0353
    unit_of_measurement: "W"
    register_type: holding
    value_type: U_WORD
    accuracy_decimals: 0

  - platform: modbus_controller
    modbus_controller_id: goodwe
    id: pv_total_hours
    name: "Total Hours"
    address: 0x0314
    unit_of_measurement: "H"
    register_type: holding
    value_type: U_DWORD
    accuracy_decimals: 0

Stuur me een PM voor Wemos D1 shields voor het uitlezen van slimme meters, modbus apparaten of het aansturen van Itho mechanische ventilatie en wtw (zie ook V&A: https://tweakers.net/aanbod/user/47321/)


Acties:
  • 0 Henk 'm!

Anoniem: 1582350

MPPT (Shadow Scan).

Ik zag dat Pinobigbird ook al eerder de hex strings had gevonden voor het aan en uitzetten van MPPT op een Goodwe omvormer. Het opvragen of de omvormer MPPT actief heeft is niet zo eenvoudig en vraagt nog meer testen.

Het bepalen van van wanneer MPPT te gebruiken is te doen met behulp van het tijdstip van zons opkomst en ondergang. Dit houd dan automatisch rekening dat de zon hoger in de lucht staat in de zomer en in de winter lager. Een tweede factor is dat er genoeg licht moet zijn om ook een schaduw te werpen. Bij weinig licht is het nuttig om ook de MPPT aan te zetten.

De dynamische tijdsblok is het omkeren van de vraag. Geeft niet aan wanneer er schaduw is maar wanneer er geen schaduw is. Verhoog die tijdsblokken met het tijdsblok dat er schaduw is.

Zon opkomst om 7 uur en de schaduw is er om 11 uur t/m 12 uur. Dan wordt er bij de zon opkomst 5 uur opgeteld en dan loopt het geen schaduw blok tot 12 uur .

Een tweede tijdsgever geeft aan dat de zon om 18 uur onder gaat. Nu trekken wij 9 uur af om zo weer op 11 uur te komen. Dit blok van geen schaduw loopt nu van 11 uur t/m 18 uur.

Als de twee blokken elkaar overlappen dan is er sprake van schaduw.

Winter:
11 uur overlap
11:30 overlap
12 uur overlap

Zomer:
11 uur geen overlap
11:30 overlap
12 uur geen overlap

Het verschil komt doordat de zonsopkomst eerder is en de zonsondergang later waardoor de twee blokken verder uit elkaar komen te liggen.

Het is niet zo gemakkelijk als het lijkt omdat de duur van de dag nogal verschild tussen zomer en winter.

Zomer, om 4 uur licht en donker vanaf 23 uur = 19 uur licht
Winter, om 9 uur licht en donker vanaf 16 uur = 7 uur licht

Er zal een factor moeten worden gezet om zo de blokken langer/groter te maken om hier gedeeltelijk voor te compenseren.

De compensatie bepaalt dan ook meteen een schaduw die altijd er is, volledige compensatie. Een gedeeltelijke compensatie voor een schaduw die in bij een lage zon aanwezig is maar niet of minder als de zon hoog staat in de zomer.

Bij een volledige compensatie kan natuurlijk ook gekozen worden voor een eenvoudig tijdsblok voor de schaduw.

Dit is hoe ik denk dat het kan werken en als er bestaande of betere oplossingen zijn dan lees ik dat natuurlijk graag.

Acties:
  • 0 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Nu online
@Aiolos Nice! Helaas heeft mijn XS3000 geen RS485 aansluiting, maar voor de omvormers die dat wel hebben is dit een mooi toegankelijke optie!

@Anoniem: 1582350 Je kunt beter kijken naar de hoek/stand van de zon denk ik. Node-RED heeft daar een module voor, zie mijn eerdere post: ThinkPadd in "GoodWe inverter lokaal uitlezen (USB / WiFi)"
Ik lees dat jij geen schaduw hebt, dan is het sowieso lastig testen. Ik denk trouwens dat het gewoon continu aan laten staan van de Shadow functie ook prima kan, zo heel veel rendement scheelt het ook weer niet.

Acties:
  • +1 Henk 'm!

Anoniem: 1582350

Die module heb ik bekeken en daar heb je echt een handleiding bij nodig om het goed te doen. Ik ben vandaag wel verder gekomen met uit bepalen of nu de MPPT aanstaat of niet.

Toevallig stond de MPPT aan de laatste twee dagen en je ziet duidelijk hoe het werkt. De scan werkt constant en kijkt bij welk voltage de meeste opbrengst is.
Bij geen MPPT past de omvormer pas aan als de spanning te hoog of te laag wordt.

En wat later...

Nu is het weer licht en kan ik het testen en het werkt inderdaad:

Afbeeldingslocatie: https://tweakers.net/i/nXgAnj01u_cgMlo81vJF2oauj7w=/full-fit-in/4920x3264/filters:max_bytes(3145728):no_upscale():strip_icc():fill(white):strip_exif()/f/image/q7aLS3UXpl8uoLgH2Z8UBvI8.jpg?f=user_large

En nu naar de schakelaar en ik zet die om:

Afbeeldingslocatie: https://tweakers.net/i/25Q0N9qm6g8xDyap0_BbHNtQK7o=/full-fit-in/4920x3264/filters:max_bytes(3145728):no_upscale():strip_icc():fill(white):strip_exif()/f/image/Lv97bMjHedVVoLljkrSzwktM.jpg?f=user_large

Voila de MPPT staat aan:

Afbeeldingslocatie: https://tweakers.net/i/JxddPdyzRJK_khknz9FcmN_5opA=/full-fit-in/4920x3264/filters:max_bytes(3145728):no_upscale():strip_icc():fill(white):strip_exif()/f/image/eavvHxI8QxXWaP45SiD7Mjds.jpg?f=user_large

Ik zie hetzelfde ook in SolarGo.

De code voor het uitlezen van de omvormer:

Opvragen:

code:
1
2
3
4
// 7f039d8200050053 = Shadow scan on MPPT
msg.payload = new Buffer.from("7f039d8200050053","hex")
msg.ip  = "10.10.100.253"
return msg


UDP-send --> UDP-receive

Verwerken:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
var inverter_reply = msg.payload;
message = inverter_reply.slice(2); // Remove 'AA55' from start of message
message = message.slice(0, -2); //Remove two CRC bytes from end of message

function crc16(buffer) {
    var crc = 0xFFFF;
    var odd;
    for (var i = 0; i < buffer.length; i++) {
        crc = crc ^ buffer[i];
        for (var j = 0; j < 8; j++) {
            odd = crc & 0x0001;
            crc = crc >> 1;
            if (odd) {
                crc = crc ^ 0xA001;
            }
        }
    }
    return crc.toString(16);
}

if (inverter_reply.length == 17) {   
//Calculate CRC ourselves
  var calculated_crc = crc16(message);

//Get CRC from inverter reply and un-reverse it
  var reply_crc = inverter_reply.slice(-2).toString('hex');
  var crc1 = reply_crc.slice(0, 2);
  var crc2 = reply_crc.slice(-2);
  var new_crc = crc2 + crc1;
  
  if (new_crc == calculated_crc) {

    // read the values from the inverter
    payload = inverter_reply[14];
    return ({payload: payload})    
    }
}


Ik kijk of het teruggekomen buffer een lengte heeft van 17 en dan gaat de CRC check van ThinkPad erover. Klopt het dan haal ik een waarde (byte) op en als die 1 is dan staat de MPPT aan en als die is 0 dan staat die uit.

Ik return alleen de payload ( return ({payload: playload}) ) en niet de andere MSG eventueel meekomen..

[ Voor 75% gewijzigd door Anoniem: 1582350 op 01-11-2021 09:27 . Reden: Werkt ]


Acties:
  • 0 Henk 'm!

Anoniem: 1582350

Ik heb een stukje code gemaakt die controleert of data goed gelezen is, dus een foutmelding van de omvormer, of geschreven:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
// version 20211103-1.05
var inverter_reply = msg.payload;
var expectedReplyLength = 17 // this is the length of the whole reply. MANUALY SET!!

message = (inverter_reply.slice(2)).slice(0, -2); // Remove 'AA55' from start of message and the CRC from the end.
var responseStatus  = ""
var writeStatus = "" 
var error       = ""
lengthError     = true
var lengthErrorText = "ERROR: data size mismatch"

function crc16(buffer) {
    var crc = 0xFFFF;
    var odd;
    for (var i = 0; i < buffer.length; i++) {
        crc = crc ^ buffer[i];
        for (var j = 0; j < 8; j++) {
            odd = crc & 0x0001;
            crc = crc >> 1;
            if (odd) {
                crc = crc ^ 0xA001;
            }
        }
    }
    return crc.toString(16);
}

if ( inverter_reply.length <= 4 ) { lengthError = true; responseStatus = "Response is too short" }
if ( (+inverter_reply[4]+7) != inverter_reply.length ) { lengthError = true }  else { lengthError = false
  if ( inverter_reply[3] == 0x03||0x06||0x10 ) { responseStatus = "Valid response" } }

// detect if an error was returned (length = 0x07)
if (inverter_reply.length == 7) {
  if ( inverter_reply[3] == 0x83 ) {
      responseStatus = "fault"; error = "error reading the data" }
  if ( inverter_reply[3] == 0x06 && inverter_reply[4] == 0x02 ) {
      writeStatus = "fault"; error = "data is faulty (single CMD)" }
  if ( inverter_reply[3] == 0x10 && inverter_reply[4] == 0x02 ) {
      writeStatus = "fault"; error = "data is faulty (multiple CMD)" }
  if ( inverter_reply[3] == 0x90 && inverter_reply[4] == 0x02 ) {
      writeStatus = "fault"; error = "address or amount of registers is faulty, write only one register at a time." }
} // ENDIF inverter_reply.length

responseStatus  = responseStatus  || "none"
writeStatus     = writeStatus     || "none"
dataError       = error           || "none"

if ( lengthError = false ) {

  var calculated_crc = crc16(message); // call the function crc16()

//Get CRC from inverter reply and un-reverse it
  var reply_crc = inverter_reply.slice(-2).toString('hex');
  var crc1 = reply_crc.slice(0, 2);
  var crc2 = reply_crc.slice(-2);
  var new_crc = crc2 + crc1;
  
  if (new_crc == calculated_crc) {

    // read the values from the inverter
    payload = inverter_reply[14];
    global.set('PValues.MPPTshadow',payload)
    return ({payload: payload})
    }
}

payload = null // indicating a invalid payload
inverter_reply = inverter_reply
if (lengthError)                { return ({ payload: payload, lengthErrorText, inverter_reply }) }
if (inverter_reply.length == 7) { return ({ payload: payload, lengthError, responseStatus, writeStatus }) }


Dit is dan voor de CRC check en die is bij mij alleen actief als ook de lengte van de data klopt. De lengte van de fout is totaal 7 bytes lang en tevens ook het kortste antwoord van de omvormer.

[ Voor 67% gewijzigd door Anoniem: 1582350 op 03-11-2021 22:51 . Reden: 2x: Code bijgewerkt om ook de juiste data grootte te controleren. ]


Acties:
  • 0 Henk 'm!

Anoniem: 1582350

Ik logde al verschillende events en zo kan ik zien wanneer iets gebeurde zonder met de PC op de RaspberryPI te kijken. Ik kan nu ook het log bekijken op mijn tablet.

Afbeeldingslocatie: https://tweakers.net/i/11WMhU32xfObZ_yImLqCcWjKmO8=/full-fit-in/4920x3264/filters:max_bytes(3145728):no_upscale():strip_icc():fill(white):strip_exif()/f/image/l81yaAtoFyOhpL1EancNkPXo.jpg?f=user_large

Bleek achteraf echt eenvoudig, via de Exec node en de Template node.

Exec node:
code:
1
tail -n 20 /opt/goodwe/nodered/log.txt


Template node:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
<style>
    #mylog {
        min-height: 300px;
        padding: 0;
        white-space: pre;
        font-size: small;
    }
</style>

<strong>PV log file:</strong>

<div id="mylog" ng-bind="msg.payload" contenteditable="true">
</div>


De pagina wordt vanzelf bijgewerkt dus dat werkt ook.

Bron: https://discourse.nodered...g-file-in-dashboard/11134

Anoniem: 1582350

Het finetunen loopt nog steeds en probeer de code altijd zo simpel mogelijk te maken door het natuurlijk gedrag te gebruiken.

Nu de status werkte zag ik dat de XS maar drie statussen doorgeeft en de status "checking" niet, ook niet in SolarGo

Checking bepaal ik nu aan de hand dat de status "null" is, en dat de omvormer nog steeds antwoord. Geen antwoord en "null" is als de omvormer uit is.

Het was gisteren bagger met de zon en aan het einde van de dag was er geen opbrengst en stond de omvormer te harken. Die periode zou stroom opbrengst, die al zo minium was, gekost hebben. Dit voorkom ik door de omvormer te laten "reconnecten" met het "grid".

Een optie om de omvormer niet via WiFi uit te lezen is iets wat nog steeds wil doen en een RS485 of bedraad zijn dan de opties.
Bedraad (LAN) is het gemakkelijkst omdat de kabel er al ligt maar ik heb nog steeds geen antwoord of dat nu eel werkt of niet.

  • To_Tall
  • Registratie: September 2004
  • Laatst online: 01-07 18:35
Welke omvormer heb je?? Ik heb de lan module en die functioneer.

A Soldiers manual and a pair of boots.


Acties:
  • 0 Henk 'm!

Anoniem: 1582350

Ik heb een GW2000-XS en hierwas de ervaring minder omdat op UDP de gegevens verminkt binnen kwamen.

https://gathering.tweaker.../list_messages/1799239/19

Acties:
  • 0 Henk 'm!

  • jimmy87
  • Registratie: December 2006
  • Laatst online: 26-06 13:11
Kan iemand mij vertellen hoe ik zie wat voor firmware de 3000XS heeft? Ik neem aan namelijk dat de FW versie die in de webpagina staat de firmware van de wifi module is? Afgelopen Woensdag is de omvormer hier geplaatst maar ook ik krijg de melding dit model wordt niet ondersteund als ik hem test.

Device information
Firmware version V1.1.2.1

Acties:
  • 0 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Nu online
Doorklikken in het menu op de omvormer zelf (knopje met Goodwe-logo naast het display). Ergens achterin het menu zie je het versienummer.

[ Voor 4% gewijzigd door ThinkPad op 15-11-2021 11:46 ]


Acties:
  • 0 Henk 'm!

  • jimmy87
  • Registratie: December 2006
  • Laatst online: 26-06 13:11
Got it, dat wordt denk ik komend weekend even kijken dan, deze week ben ik namelijk pas terug als hij al "uit" is in de avond uren.

Acties:
  • 0 Henk 'm!

  • Ethnocentrix
  • Registratie: Augustus 2002
  • Laatst online: 20:56

Ethnocentrix

Rijkserkend prutser

Afbeeldingslocatie: https://tweakers.net/i/rPL2v7lbzKGoaCB1r9Ap7MWsEfc=/full-fit-in/4000x4000/filters:no_upscale():fill(white):strip_exif()/f/image/MyLT31ZdKWGQzaWNhY3PsjlV.png?f=user_large
Of het werkt heb ik nog niet getest, maar de optie staat er wel bij.

You know you're an engineer if you have no life & can prove it mathematically.


Acties:
  • +2 Henk 'm!

Anoniem: 1582350

Weer tijd om de laatste versie van de NodeRed versie te plaatsen die ik gebruik. Sinds de laatste keer zit nu er een web weergave in waar automatisch ook de buttons naar de pagina op PVOutput gaan. Deze maakt gebruik van de ' PVOutput credentials' die eenmalig hoeven te worden geven. Natuurlijk moet je wel een PVOutput pagina hebben.

Het loggen van 'events' en die zichtbaar maken in de web interface maakt het controleren en zien van opbrengsten eenvoudig.

Ik ben ook hier overgegaan naar het hoofdzakelijk uitlezen van de twee kW/h meters. Eén die inkomende/uitgaande stroom meet en de tweede die de opbrengst van alleen de inverter/panelen meet.

Afbeeldingslocatie: https://tweakers.net/i/RaD6trbMz5YJLphOebG8t2EPhGU=/full-fit-in/4920x3264/filters:max_bytes(3145728):no_upscale():strip_icc():fill(white):strip_exif()/f/image/xMUfrx6IxSePN5vpSuMqhhuM.jpg?f=user_large

De code kan ik hier niet plaatsen omdat die te groot is en een attachment optie zie ik zo niet.

Oeps, distribution niet juist geschreven in de afbeelding.....

[ Voor 7% gewijzigd door Anoniem: 1582350 op 19-11-2021 14:13 . Reden: Info over de code ]


Acties:
  • 0 Henk 'm!

Anoniem: 1582350

En een stukje log. Nu kan er bij een disconnect of connect worden weergegeven of dat een normale disconnect is of een geforceerde disconnect.
18-11 23:59 produced Peak: 1217 Watt at: 13H07
18-11 23:59 produced Inverter stated production (eDay): 2.2 kWh
18-11 23:59 produced Todays production: 2.024 kWh of which none was exported
19-11 00:00 produced Faraday meter: 96358.2 kWh
19-11 08:11 sunEvent Start of production day
19-11 08:13 sunEvent Inverter is waiting
19-11 08:45 sunEvent Inverter has connected to the Grid
19-11 12:00 produced Faraday meter: 96358.8 kWh
19-11 16:31 sunEvent Inverter was forced to waiting mode
19-11 16:48 sunEvent Inverter has disconnected from the Grid
19-11 16:53 sunEvent End of production day
Als de dag productie lager was dan het verbruik dan staat er dat er niets geëxporteerd is. Als er wel geëxporteerd dan staat er hoeveel er geëxporteerd is.
Todays production: 4.647 kWh, of which was exported: 1.369 kW/h

[ Voor 0% gewijzigd door Anoniem: 1582350 op 20-11-2021 10:37 . Reden: kW/h --> kWh ]


Acties:
  • +1 Henk 'm!

  • Proton_
  • Registratie: November 2011
  • Laatst online: 21:25

Proton_

Moderator Wonen & Mobiliteit 

Team Welles

Typo: kW/h -> kWh :)

Het ik-wil-een-warmtepomp FAQ topic- '23 MG5, douchen met wtw en Auer Edel Eau, verwarming met Vaillant Arotherm Plus.

Pagina: 1 ... 5 ... 12 Laatste