{"name":"E3/DC Solar","type":"virtual_device","properties":{"deviceIcon":0,"currentIcon":"97","log":"06:35:05 09.06.17","logTemp":"TxtGreen","mainLoop":"--Bachner Gerbard\nlocal device = fibaro:getSelfId();\ntcpSocket = Net.FTcpSocket(\"192.168.11.55\", 502);\nlocal Solar = 0\nlocal solarGesamt = 0 \n\n\n -- tring from response \n local function DumpString(str,spacer)\n return ( string.gsub(str,\"(.)\",\n function (c)\n return string.format(\"%02X%s\",string.byte(c), spacer or \"\")\n end)\n )\n end\n---### negativ wert to positiv ##############\nlocal function negativ_to_positiv(wert)\n local wert = tonumber(wert); \n if (wert<0) then wert = wert *-1;\n end; return wert;\nend\n ---### String Hex32 to decimal conversion ############\nlocal function hex32_to_dec (someNumber)\n local someNumber = tonumber(someNumber)\n if someNumber < 2147483647 then --2147483647\n return someNumber\n end\n if someNumber > 2147483647 then --2147483647\n someNumber = (someNumber - 4294967295)--4294967295 65536\n return someNumber \n end\nend \n--- ### String Hex to characters ###########################\n local function hexStringToString(hexString)\n local function hexToDecimal(ascii)\n if not ascii then\n return 0\n end\n ascii=ascii-48\n if ascii > 9 then\n return ascii-7\n end\n return ascii\n end\n \n local accumulator={}\n \n for i = 1, hexString:len(), 4 do\n local a=hexToDecimal(hexString:byte(i))\n local b=hexToDecimal(hexString:byte(i+1))\n local c=hexToDecimal(hexString:byte(i+2))\n local d=hexToDecimal(hexString:byte(i+3))\n local t = c*16+d\n local u = a*16+b\n if t <32 then t=32 end\n if u <32 then u=32 end\n table.insert(accumulator, string.char(u))\n table.insert(accumulator, string.char(t))\n end\n return table.concat(accumulator)\n end\n----------------------------------------------------------------------------------------\n---#### 40068 Photovoltaik-Leistung in Watt 2 Int32 #################################\n---------------------------------------------------------------------------------------\n tcpSocket = Net.FTcpSocket(\"192.168.11.55\", 502);\n sendbuffer=string.char(0,0,0,0,0,6,1,3,0,67,0,2);\n--tcpSocket:setReadTimeout(250);\n bytes, errorCode = tcpSocket:write(sendbuffer);\n fibaro:sleep(100);\n local result, err = tcpSocket:read();\n\n if err == 0 then\n SolarH = string.sub((DumpString(result)), 19);\n SolarNr = tonumber(SolarH, 16)\n Solar = ((hex32_to_dec(SolarNr))/65536)\n -- Solar = (negativ_to_positiv(Solar));\n fibaro:debug(\"Photovoltaik-Leistung in Watt = \"..Solar);\n else\n fibaro:debug(err);\n fibaro:debug(\"Error UPS Output Current\");\n end \ntcpSocket:disconnect();\nlocal msg = \"\"; msg = (\"\"..Solar..\" Watt\");\n\nfibaro:call(fibaro:getSelfId(), \"setProperty\", \"ui.Label3.value\", msg);\nsolarGesamt = Solar\n\n fibaro:sleep(200);\n----------------------------------------------------------------------------------------\n---#### 40070 Batterie-Leistung in Watt ###########################################\n---###(negative Werte = Entladung) 2 Int32 ###########################################\n---------------------------------------------------------------------------------------\n tcpSocket = Net.FTcpSocket(\"192.168.11.55\", 502);\n sendbuffer=string.char(0,0,0,0,0,6,1,3,0,69,0,2);\n--tcpSocket:setReadTimeout(250);\n bytes, errorCode = tcpSocket:write(sendbuffer);\n fibaro:sleep(100);\n local result, err = tcpSocket:read();\n\n if err == 0 then\n SolarH = string.sub((DumpString(result)), 19);\n SolarNr = tonumber(SolarH, 16)\n Solar = ((hex32_to_dec(SolarNr))/65536)\n -- Solar = (negativ_to_positiv(Solar));\n fibaro:debug(\"Batterie-Leistung in Watt = \"..Solar);\n else\n fibaro:debug(err);\n fibaro:debug(\"Error UPS Output Current\");\n end \ntcpSocket:disconnect();\nlocal msg = \"\"; msg = (\"\"..Solar..\" Watt\");\n\nfibaro:call(fibaro:getSelfId(), \"setProperty\", \"ui.Label4.value\", msg);\nfibaro:setGlobal(\"SolarBatterieLeist\", Solar);\n fibaro:sleep(200);\n----------------------------------------------------------------------------------------\n---#### 40072 Hausverbrauchs-Leistung in Watt 2 Int32 ################################\n---------------------------------------------------------------------------------------\n tcpSocket = Net.FTcpSocket(\"192.168.11.55\", 502);\n sendbuffer=string.char(0,0,0,0,0,6,1,3,0,71,0,2);\n--tcpSocket:setReadTimeout(250);\n bytes, errorCode = tcpSocket:write(sendbuffer);\n fibaro:sleep(100);\n local result, err = tcpSocket:read();\n\n if err == 0 then\n SolarH = string.sub((DumpString(result)), 19);\n SolarNr = tonumber(SolarH, 16)\n Solar = ((hex32_to_dec(SolarNr))/65536)\n -- Solar = (negativ_to_positiv(Solar));\n fibaro:debug(\"Hausverbrauchs-Leistung in Watt = \"..Solar);\n else\n fibaro:debug(err);\n fibaro:debug(\"Error UPS Output Current\");\n end \ntcpSocket:disconnect();\nlocal msg = \"\"; msg = (\"\"..Solar..\" Watt\");\n\nfibaro:call(fibaro:getSelfId(), \"setProperty\", \"ui.Label5.value\", msg);\nfibaro:setGlobal(\"SolarHausverbrauch\", Solar);\n fibaro:sleep(200);\n\n\n----------------------------------------------------------------------------------------\n---#### 40074 Leistung am Netzübergabepunkt in Watt ###################################\n---### (negative Werte = Einspeisung) 2 Int32 ########################################\n---------------------------------------------------------------------------------------\n tcpSocket = Net.FTcpSocket(\"192.168.11.55\", 502);\n sendbuffer=string.char(0,0,0,0,0,6,1,3,0,73,0,2);\n--tcpSocket:setReadTimeout(250);\n bytes, errorCode = tcpSocket:write(sendbuffer);\n fibaro:sleep(100);\n local result, err = tcpSocket:read();\n\n if err == 0 then\n SolarH = string.sub((DumpString(result)), 19);\n SolarNr = tonumber(SolarH, 16)\n Solar = ((hex32_to_dec(SolarNr))/65536)\n -- Solar = (negativ_to_positiv(Solar));\n fibaro:debug(\"Leistung am Netzübergabepunkt in Watt = \"..Solar);\n else\n fibaro:debug(err);\n fibaro:debug(\"Error UPS Output Current\");\n end \ntcpSocket:disconnect();\nlocal msg = \"\"; msg = (\"\"..Solar..\" Watt\");\n\nfibaro:call(fibaro:getSelfId(), \"setProperty\", \"ui.Label6.value\", msg);\nfibaro:setGlobal(\"SolarNetzLeistung\", Solar);\n fibaro:sleep(200);\n\n----------------------------------------------------------------------------------------\n---#### 40076 Leistung aller zusätzlichen Einspeiser in Watt 2 Int32 ################\n----------------------------------------------------------------------------------------\n tcpSocket = Net.FTcpSocket(\"192.168.11.55\", 502);\n sendbuffer=string.char(0,0,0,0,0,6,1,3,0,75,0,2);\n--tcpSocket:setReadTimeout(250);\n bytes, errorCode = tcpSocket:write(sendbuffer);\n fibaro:sleep(100);\n local result, err = tcpSocket:read();\n\n if err == 0 then\n SolarH = string.sub((DumpString(result)), 19);\n SolarNr = tonumber(SolarH, 16)\n Solar = ((hex32_to_dec(SolarNr))/65536)\n Solar = (negativ_to_positiv(Solar));\n fibaro:debug(\"Leistung aller zusätzlichen Einspeiser in Watt = \"..Solar);\n else\n fibaro:debug(err);\n fibaro:debug(\"Error UPS Output Current\");\n end \ntcpSocket:disconnect();\nlocal msg = \"\"; msg = (\"\"..Solar..\" Watt\");\n\nfibaro:call(fibaro:getSelfId(), \"setProperty\", \"ui.Label7.value\", msg);\nsolarGesamt = (solarGesamt + Solar);\nfibaro:call(fibaro:getSelfId(), \"setProperty\", \"ui.Solar.value\", solarGesamt..\" Watt\");\n \nfibaro:setGlobal(\"SolarLeistGesamt\", solarGesamt);\nfibaro:sleep(200);\n----------------------------------------------------------------------------------------\n---#### 40078 Leistung der Wallbox in Watt 2 Int32 ###################################\n----------------------------------------------------------------------------------------\n\n----------------------------------------------------------------------------------------\n---#### 40080 Solarleistung, die von der Wallbox genutzt wird in Watt 2 Int32 #######\n----------------------------------------------------------------------------------------\n\n----------------------------------------------------------------------------------------\n---#### 40082 Autarkie und Eigenverbrauch in Prozent 1 Uint8+Uint8 ####################\n----------------------------------------------------------------------------------------\n tcpSocket = Net.FTcpSocket(\"192.168.11.55\", 502)\n sendbuffer=string.char(0,0,0,0,0,6,1,3,0,81,0,1);\n--tcpSocket:setReadTimeout(250);\n bytes, errorCode = tcpSocket:write(sendbuffer)\n fibaro:sleep(200)\n local result, err = tcpSocket:read()\n if err == 0 then\n SolarH = string.sub((DumpString(result)), 19);\n Autarkie = tonumber((SolarH:sub(1,2)),16);\n Eigenverbrauch = tonumber((SolarH:sub(3,4)),16);\n fibaro:debug(\"Autarkiein Prozent = \"..Autarkie..\" %\") \n fibaro:debug(\"Eigenverbrauch in Prozent = \"..Eigenverbrauch..\" %\")\n else\n fibaro:debug(err)\n fibaro:debug(\"Error UPS Output Current\") \n end \ntcpSocket:disconnect()\n\nfibaro:call(fibaro:getSelfId(), \"setProperty\", \"ui.Label10.value\", Autarkie ..\" %\");\nfibaro:call(fibaro:getSelfId(), \"setProperty\", \"ui.Label12.value\", Eigenverbrauch ..\" %\");\n\nfibaro:sleep(200)\n\n\n----------------------------------------------------------------------------------------\n---#### 40083 Batterie-SOC in Prozent 1 Uint16 ########################################\n----------------------------------------------------------------------------------------\n tcpSocket = Net.FTcpSocket(\"192.168.11.55\", 502);\n sendbuffer=string.char(0,0,0,0,0,6,1,3,0,82,0,1);\n--tcpSocket:setReadTimeout(250);\n bytes, errorCode = tcpSocket:write(sendbuffer);\n fibaro:sleep(100);\n local result, err = tcpSocket:read();\n\n if err == 0 then\n SolarH = string.sub((DumpString(result)), 19);\n SolarNr = tonumber(SolarH, 16);\n Solar = (hex32_to_dec(SolarNr));\n fibaro:debug(\"Batterie-SOC in Prozent = \"..Solar..\" %\");\n else\n fibaro:debug(err);\n fibaro:debug(\"Error UPS Output Current\");\n end \ntcpSocket:disconnect();\nlocal msg = \"\"; msg = (\"\"..Solar..\" %\");\nfibaro:call(fibaro:getSelfId(), \"setProperty\", \"ui.Label11.value\", msg);\n\nfibaro:setGlobal(\"SolarBatteriStatus\", Solar);\nfibaro:sleep(200);\n\n--#####################################################################################\n--- local ZustandDesHauses = fibaro:getGlobalValue(\"ZustandDesHauses\") ################\n---####################################################################################\nlocal DateHeure = os.date(\"%H:%M:%S %d.%m.%y\", os.time());\nfibaro:call(fibaro:getSelfId(), \"setProperty\", \"ui.Aktualisiert.value\", DateHeure);\n\nfibaro:log(DateHeure);\n fibaro:sleep(120*1000);\n","ui.Aktualisiert.value":"06:35:05 09.06.17","ui.Label10.value":"100 %","ui.Label11.value":"12 %","ui.Label12.value":"43 %","ui.Label3.value":"980 Watt","ui.Label4.value":"968 Watt","ui.Label5.value":"455 Watt","ui.Label6.value":"-595 Watt","ui.Label7.value":"1034 Watt","ui.Leer.value":"","ui.Solar.value":"2014 Watt","visible":"true","rows":[{"type":"button","elements":[{"id":1,"lua":true,"waitForResponse":false,"caption":"E3/DC Solar","name":"Button61","empty":false,"msg":"--Bachner Gerbard\nlocal device = fibaro:getSelfId();\ntcpSocket = Net.FTcpSocket(\"192.168.11.55\", 502);\nlocal Solar = 0\nlocal solarGesamt = 0 \n\n\n -- tring from response \n local function DumpString(str,spacer)\n return (\n string.gsub(str,\"(.)\",\n function (c)\n return string.format(\"%02X%s\",string.byte(c), spacer or \"\")\n end)\n )\n end\n---### negativ wert to positiv ##############\nlocal function negativ_to_positiv(wert)\n \n local wert = tonumber(wert) \n if (wert<0) then\n wert = wert *-1; \n end\n\t return wert\nend\n ---### String Hex32 to decimal conversion ############\nlocal function hex32_to_dec (someNumber)\n local someNumber = tonumber(someNumber)\n if someNumber < 2147483647 then --2147483647\n return someNumber\n end\n if someNumber > 2147483647 then --2147483647\n someNumber = (someNumber - 4294967295)--4294967295 65536\n return someNumber \n end\nend \n--- ### String Hex to characters ###########################\n local function hexStringToString(hexString)\n local function hexToDecimal(ascii)\n if not ascii then\n return 0\n end\n ascii=ascii-48\n if ascii > 9 then\n return ascii-7\n end\n return ascii\n end\n \n local accumulator={}\n \n for i = 1, hexString:len(), 4 do\n local a=hexToDecimal(hexString:byte(i))\n local b=hexToDecimal(hexString:byte(i+1))\n local c=hexToDecimal(hexString:byte(i+2))\n local d=hexToDecimal(hexString:byte(i+3))\n local t = c*16+d\n local u = a*16+b\n if t <32 then t=32 end\n if u <32 then u=32 end\n table.insert(accumulator, string.char(u))\n table.insert(accumulator, string.char(t))\n end\n return table.concat(accumulator)\n end\n----------------------------------------------------------------------------------------\n---#### 40001 Magicbyte – S10 ModBus ID (Immer 0xE3DC) 1 UInt16 #######################################################\n---------------------------------------------------------------------------------------\n tcpSocket = Net.FTcpSocket(\"192.168.11.55\", 502)\n sendbuffer=string.char(0,0,0,0,0,6,1,3,0,0,0,1);\n--tcpSocket:setReadTimeout(250);\n bytes, errorCode = tcpSocket:write(sendbuffer)\n fibaro:sleep(200)\n local result, err = tcpSocket:read()\n\n if err == 0\n then\n SolarH = string.sub((DumpString(result)), 19);\n SolarNr = tonumber(SolarH, 16)\n Solar = string.sub( string.format(\"%X\", SolarNr * 256),1,4)\n fibaro:debug(\"Magicbyte – S10 ModBus ID (Immer 0xE3DC) = \"..Solar)\n else\n fibaro:debug(err)\n fibaro:debug(\"Error UPS Output Current\") \n end \ntcpSocket:disconnect();\n fibaro:sleep(200)\n\n----------------------------------------------------------------------------------------\n---#### 40002 S10 ModBus-Firmware-Version 1 UInt8+UInt8 #######################################################\n---------------------------------------------------------------------------------------\n tcpSocket = Net.FTcpSocket(\"192.168.11.55\", 502)\n sendbuffer=string.char(0,0,0,0,0,6,1,3,0,1,0,1);\n--tcpSocket:setReadTimeout(250);\n bytes, errorCode = tcpSocket:write(sendbuffer)\n fibaro:sleep(200)\n local result, err = tcpSocket:read()\n\n if err == 0\n then\n SolarH = string.sub((DumpString(result)), 19);\n SolarNr = tonumber(SolarH, 16)\n Solar = (hex32_to_dec(SolarNr))\n fibaro:debug(\"S10 ModBus-Firmware-Version = \"..Solar)\n else\n fibaro:debug(err)\n fibaro:debug(\"Error UPS Output Current\") \n end \ntcpSocket:disconnect();\n fibaro:sleep(200)\n \n----------------------------------------------------------------------------------------\n---#### 40003 Anzahl unterstützter Register 1 UInt16 #######################################################\n---------------------------------------------------------------------------------------\n tcpSocket = Net.FTcpSocket(\"192.168.11.55\", 502)\n sendbuffer=string.char(0,0,0,0,0,6,1,3,0,2,0,1);\n--tcpSocket:setReadTimeout(250);\n bytes, errorCode = tcpSocket:write(sendbuffer)\n fibaro:sleep(200)\n local result, err = tcpSocket:read()\n\n if err == 0\n then\n SolarH = string.sub((DumpString(result)), 19);\n SolarNr = tonumber(SolarH, 16)\n Solar = (hex32_to_dec(SolarNr))\n fibaro:debug(\"Anzahl unterstützter Register = \"..Solar)\n else\n fibaro:debug(err)\n fibaro:debug(\"Error UPS Output Current\") \n end \ntcpSocket:disconnect();\n fibaro:sleep(200) \n\n----------------------------------------------------------------------------------------\n---#### 40004 Hersteller: „E3/DC GmbH“ 16 String #######################################################\n---------------------------------------------------------------------------------------\n tcpSocket = Net.FTcpSocket(\"192.168.11.55\", 502)\n sendbuffer=string.char(0,0,0,0,0,6,1,3,0,3,0,8);\n --tcpSocket:setReadTimeout(250);\n bytes, errorCode = tcpSocket:write(sendbuffer);\n fibaro:sleep(200);\n local result, err = tcpSocket:read();\n \n if err == 0\n then\n SolarH=string.sub(DumpString(result), 19);\n\n Solar=(string.format(hexStringToString(SolarH))) \n fibaro:sleep(200)\n \tfibaro:debug(\"Hersteller: = \"..Solar);\n else\n fibaro:debug(err);\n fibaro:debug(\"Error reading serial number\");\n \tfibaro:debug(SolarH);\n\tfibaro:debug(Solar);\n\n end; tcpSocket:disconnect();\n fibaro:sleep(200);\n---------------------------------------------------------------------------------------------------\n--### 40020 Modell, z. B.: „S10 E AIO“ 16 String ################################################# \n-----------------------------------------------------------------------------------------\n\t\n tcpSocket = Net.FTcpSocket(\"192.168.11.55\", 502)\n sendbuffer=string.char(0,0,0,0,0,6,1,3,0,19,0,8); --registry address is 35 >> 0 High Byte, 35 Low Byte Laenge 8\n --tcpSocket:setReadTimeout(250);\n bytes, errorCode = tcpSocket:write(sendbuffer)\n fibaro:sleep(200)\n local result, err = tcpSocket:read()\n \n if err == 0 then\n SolarH=string.sub(DumpString(result), 19);\n Solar = (string.format(hexStringToString(SolarH)));\n fibaro:sleep(300);\n \tfibaro:debug(\"Modell, z. B.: \"..Solar);\n else\n fibaro:debug(err)\n fibaro:debug(\"Error reading serial number\") \n \tfibaro:debug(SolarH)\n\tfibaro:debug(Solar)\n\n end; tcpSocket:disconnect()\n fibaro:sleep(200)\n\n---------------------------------------------------------------------------------------------------\n--### 40036 Seriennummer, z. B.: „S10-12345678912“ 16 String ################################################# \n-----------------------------------------------------------------------------------------\n\n tcpSocket = Net.FTcpSocket(\"192.168.11.55\", 502);\n sendbuffer=string.char(0,0,0,0,0,6,1,3,0,35,0,8); \n --tcpSocket:setReadTimeout(250);\n bytes, errorCode = tcpSocket:write(sendbuffer);\n fibaro:sleep(200);\n local result, err = tcpSocket:read();\n \n if err == 0 then\n SolarH=string.sub(DumpString(result), 19);\n Solar=(string.format(hexStringToString(SolarH)));\n fibaro:sleep(200)\n \tfibaro:debug(\"Serial Number = \"..Solar);\n else\n fibaro:debug(err);\n fibaro:debug(\"Error reading serial number\");\n \tfibaro:debug(SolarH);\n\tfibaro:debug(Solar);\n\n end; tcpSocket:disconnect();\n fibaro:sleep(200);\n----------------------------------------------------------------------------------------\n---### 40052 S10 Firmware Release, z. B.: „S10-2015_08“ 16 String #######################################################\n---------------------------------------------------------------------------------------\n tcpSocket = Net.FTcpSocket(\"192.168.11.55\", 502)\nsendbuffer=string.char(0,0,0,0,0,6,1,3,0,51,0,8); \n--tcpSocket:setReadTimeout(250);\n bytes, errorCode = tcpSocket:write(sendbuffer)\n fibaro:sleep(200)\n local result, err = tcpSocket:read()\n \n if err == 0\n then\n SolarH=string.sub(DumpString(result), 19);\n\n Solar=(string.format(hexStringToString(SolarH))) \n fibaro:sleep(300)\n \tfibaro:debug(\"S10 Firmware Release = \"..Solar)\n else\n fibaro:debug(err)\n fibaro:debug(\"Error reading S10 Firmware Release\") \n \tfibaro:debug(SolarH)\n\tfibaro:debug(Solar)\n\n end; tcpSocket:disconnect()\nlocal msg = (Solar)\n--fibaro:call(fibaro:getSelfId(), \"setProperty\", \"ui.Label2.value\", msg);\n fibaro:sleep(200)\n----------------------------------------------------------------------------------------\n---#### 40068 Photovoltaik-Leistung in Watt 2 Int32 #################################\n---------------------------------------------------------------------------------------\n tcpSocket = Net.FTcpSocket(\"192.168.11.55\", 502);\n sendbuffer=string.char(0,0,0,0,0,6,1,3,0,67,0,2);\n--tcpSocket:setReadTimeout(250);\n bytes, errorCode = tcpSocket:write(sendbuffer);\n fibaro:sleep(100);\n local result, err = tcpSocket:read();\n\n if err == 0 then\n SolarH = string.sub((DumpString(result)), 19);\n SolarNr = tonumber(SolarH, 16)\n Solar = ((hex32_to_dec(SolarNr))/65536)\n -- Solar = (negativ_to_positiv(Solar));\n fibaro:debug(\"Photovoltaik-Leistung in Watt = \"..Solar);\n else\n fibaro:debug(err);\n fibaro:debug(\"Error UPS Output Current\");\n end \ntcpSocket:disconnect();\nlocal msg = \"\"; msg = (\"\"..Solar..\" Watt\");\n\nfibaro:call(fibaro:getSelfId(), \"setProperty\", \"ui.Label3.value\", msg);\nsolarGesamt = Solar\n\n fibaro:sleep(200);\n----------------------------------------------------------------------------------------\n---### 40070 Batterie-Leistung in Watt (negative Werte = Entladung) 2 Int32 ##########\n----------------------------------------------------------------------------------------\n tcpSocket = Net.FTcpSocket(\"192.168.11.55\", 502);\n sendbuffer=string.char(0,0,0,0,0,6,1,3,0,69,0,2);\n--tcpSocket:setReadTimeout(250);\n bytes, errorCode = tcpSocket:write(sendbuffer);\n fibaro:sleep(100);\n local result, err = tcpSocket:read();\n\n if err == 0 then\n SolarH = string.sub((DumpString(result)), 19);\n SolarNr = tonumber(SolarH, 16)\n Solar = ((hex32_to_dec(SolarNr))/65536)\n -- Solar = (negativ_to_positiv(Solar));\n fibaro:debug(\"Batterie-Leistung in Watt = \"..Solar)\n else\n fibaro:debug(err)\n fibaro:debug(\"Error UPS Output Current\") \n end \ntcpSocket:disconnect()\nlocal msg = \"\"; msg = (\"\"..Solar..\" Watt\");\n\nfibaro:call(fibaro:getSelfId(), \"setProperty\", \"ui.Label4.value\", msg);\nfibaro:setGlobal(\"SolarBatterieLeist\", Solar);\n fibaro:sleep(200);\n----------------------------------------------------------------------------------------\n---### 40072 Hausverbrauchs-Leistung in Watt 2 Int32 #######################################################\n---------------------------------------------------------------------------------------\n tcpSocket = Net.FTcpSocket(\"192.168.11.55\", 502)\n sendbuffer=string.char(0,0,0,0,0,6,1,3,0,71,0,2);\n--tcpSocket:setReadTimeout(250);\n bytes, errorCode = tcpSocket:write(sendbuffer);\n fibaro:sleep(100);\n local result, err = tcpSocket:read();\n\n if err == 0 then\n SolarH = string.sub((DumpString(result)), 19);\n SolarNr = tonumber(SolarH, 16)\n Solar = ((hex32_to_dec(SolarNr))/65536)\n -- Solar = (negativ_to_positiv(Solar));\n fibaro:debug(\"Hausverbrauchs-Leistung in Watt = \"..Solar)\n else\n fibaro:debug(err)\n fibaro:debug(\"Error UPS Output Current\") \n end \ntcpSocket:disconnect()\nlocal msg = \"\"; msg = (\"\"..Solar..\" Watt\");\n\nfibaro:call(fibaro:getSelfId(), \"setProperty\", \"ui.Label5.value\", msg);\nfibaro:setGlobal(\"SolarHausverbrauch\", Solar);\n fibaro:sleep(200);\n\n\n----------------------------------------------------------------------------------------\n---### 40074 Leistung am Netzübergabepunkt in Watt \n---### (negative Werte = Einspeisung) 2 Int32 #######################################################\n---------------------------------------------------------------------------------------\n tcpSocket = Net.FTcpSocket(\"192.168.11.55\", 502)\n sendbuffer=string.char(0,0,0,0,0,6,1,3,0,73,0,2);\n--tcpSocket:setReadTimeout(250);\n bytes, errorCode = tcpSocket:write(sendbuffer);\n fibaro:sleep(100);\n local result, err = tcpSocket:read();\n\n if err == 0 then\n SolarH = string.sub((DumpString(result)), 19);\n SolarNr = tonumber(SolarH, 16)\n Solar = ((hex32_to_dec(SolarNr))/65536)\n -- Solar = (negativ_to_positiv(Solar));\n fibaro:debug(\"Leistung am Netzübergabepunkt in Watt = \"..Solar)\n else\n fibaro:debug(err)\n fibaro:debug(\"Error UPS Output Current\") \n end \ntcpSocket:disconnect()\nlocal msg = \"\"; msg = (\"\"..Solar..\" Watt\");\n\nfibaro:call(fibaro:getSelfId(), \"setProperty\", \"ui.Label6.value\", msg);\nfibaro:setGlobal(\"SokarNetzLeistung\", Solar);\n fibaro:sleep(200);\n\n----------------------------------------------------------------------------------------\n---#### 40076 Leistung aller zusätzlichen Einspeiser in Watt 2 Int32 ################\n----------------------------------------------------------------------------------------\n tcpSocket = Net.FTcpSocket(\"192.168.11.55\", 502);\n sendbuffer=string.char(0,0,0,0,0,6,1,3,0,75,0,2);\n--tcpSocket:setReadTimeout(250);\n bytes, errorCode = tcpSocket:write(sendbuffer);\n fibaro:sleep(100);\n local result, err = tcpSocket:read();\n\n if err == 0 then\n SolarH = string.sub((DumpString(result)), 19);\n SolarNr = tonumber(SolarH, 16)\n Solar = ((hex32_to_dec(SolarNr))/65536)\n Solar = (negativ_to_positiv(Solar));\n fibaro:debug(\"Leistung aller zusätzlichen Einspeiser in Watt = \"..Solar);\n else\n fibaro:debug(err);\n fibaro:debug(\"Error UPS Output Current\");\n end \ntcpSocket:disconnect();\nlocal msg = \"\"; msg = (\"\"..Solar..\" Watt\");\n\nfibaro:call(fibaro:getSelfId(), \"setProperty\", \"ui.Label7.value\", msg);\nsolarGesamt = (solarGesamt + Solar);\nfibaro:call(fibaro:getSelfId(), \"setProperty\", \"ui.Solar.value\", solarGesamt..\" Watt\");\n \nfibaro:setGlobal(\"SolarLeistGesamt\", solarGesamt);\nfibaro:sleep(200);\n\n----------------------------------------------------------------------------------------\n---### 40078 Leistung der Wallbox in Watt 2 Int32 #######################################################\n---------------------------------------------------------------------------------------\n tcpSocket = Net.FTcpSocket(\"192.168.11.55\", 502)\n sendbuffer=string.char(0,0,0,0,0,6,1,3,0,77,0,2);\n--tcpSocket:setReadTimeout(250);\n bytes, errorCode = tcpSocket:write(sendbuffer);\n fibaro:sleep(100);\n local result, err = tcpSocket:read();\n\n if err == 0 then\n SolarH = string.sub((DumpString(result)), 19);\n SolarNr = tonumber(SolarH, 16)\n Solar = ((hex32_to_dec(SolarNr))/65536)\n -- Solar = (negativ_to_positiv(Solar));\n fibaro:debug(\"Leistung der Wallbox in Watt = \"..Solar)\n else\n fibaro:debug(err)\n fibaro:debug(\"Error UPS Output Current\") \n end \ntcpSocket:disconnect()\nlocal msg = \"\"; msg = (\"\"..Solar..\" Watt\");\n\n--fibaro:call(fibaro:getSelfId(), \"setProperty\", \"ui.Label8.value\", msg);\n fibaro:sleep(200)\n\n----------------------------------------------------------------------------------------\n---### 40080 Solarleistung, die von der Wallbox genutzt wird in Watt 2 Int32 ##########\n---------------------------------------------------------------------------------------\n tcpSocket = Net.FTcpSocket(\"192.168.11.55\", 502)\n sendbuffer=string.char(0,0,0,0,0,6,1,3,0,79,0,2);\n--tcpSocket:setReadTimeout(250);\n bytes, errorCode = tcpSocket:write(sendbuffer);\n fibaro:sleep(100);\n local result, err = tcpSocket:read();\n\n if err == 0 then\n SolarH = string.sub((DumpString(result)), 19);\n SolarNr = tonumber(SolarH, 16)\n Solar = ((hex32_to_dec(SolarNr))/65536)\n -- Solar = (negativ_to_positiv(Solar));\n fibaro:debug(\"Solarleistung, die von der Wallbox genutzt wird in Watt = \"..Solar)\n else\n fibaro:debug(err)\n fibaro:debug(\"Error UPS Output Current\") \n end \ntcpSocket:disconnect()\nlocal msg = \"\"; msg = (\"\"..Solar..\" Watt\");\n\n--fibaro:call(fibaro:getSelfId(), \"setProperty\", \"ui.Label9.value\", msg);\n fibaro:sleep(200)\n\n----------------------------------------------------------------------------------------\n---#### 40078 Leistung der Wallbox in Watt 2 Int32 ###################################\n----------------------------------------------------------------------------------------\n\n----------------------------------------------------------------------------------------\n---#### 40080 Solarleistung, die von der Wallbox genutzt wird in Watt 2 Int32 #######\n----------------------------------------------------------------------------------------\n\n----------------------------------------------------------------------------------------\n---#### 40082 Autarkie und Eigenverbrauch in Prozent 1 Uint8+Uint8 ####################\n----------------------------------------------------------------------------------------\n tcpSocket = Net.FTcpSocket(\"192.168.11.55\", 502)\n sendbuffer=string.char(0,0,0,0,0,6,1,3,0,81,0,1);\n--tcpSocket:setReadTimeout(250);\n bytes, errorCode = tcpSocket:write(sendbuffer)\n fibaro:sleep(200)\n local result, err = tcpSocket:read()\n \n if err == 0 then\n SolarH = string.sub((DumpString(result)), 19);\n Autarkie = tonumber((SolarH:sub(1,2)),16);\n Eigenverbrauch = tonumber((SolarH:sub(3,4)),16);\n fibaro:debug(\"Autarkiein Prozent = \"..Autarkie..\" %\") \n fibaro:debug(\"Eigenverbrauch in Prozent = \"..Eigenverbrauch..\" %\")\n else\n fibaro:debug(err)\n fibaro:debug(\"Error UPS Output Current\") \n end \ntcpSocket:disconnect()\n\nfibaro:call(fibaro:getSelfId(), \"setProperty\", \"ui.Label10.value\", Autarkie ..\" %\");\nfibaro:call(fibaro:getSelfId(), \"setProperty\", \"ui.Label12.value\", Eigenverbrauch ..\" %\");\n\nfibaro:sleep(200)\n\n\n----------------------------------------------------------------------------------------\n---#### 40083 Batterie-SOC in Prozent 1 Uint16 ########################################\n----------------------------------------------------------------------------------------\n tcpSocket = Net.FTcpSocket(\"192.168.11.55\", 502);\n sendbuffer=string.char(0,0,0,0,0,6,1,3,0,82,0,1);\n--tcpSocket:setReadTimeout(250);\n bytes, errorCode = tcpSocket:write(sendbuffer);\n fibaro:sleep(100);\n local result, err = tcpSocket:read();\n\n if err == 0 then\n SolarH = string.sub((DumpString(result)), 19);\n SolarNr = tonumber(SolarH, 16);\n Solar = (hex32_to_dec(SolarNr));\n fibaro:debug(\"Batterie-SOC in Prozent = \"..Solar..\" %\");\n else\n fibaro:debug(err);\n fibaro:debug(\"Error UPS Output Current\");\n end \ntcpSocket:disconnect();\nlocal msg = \"\"; msg = (\"\"..Solar..\" %\");\nfibaro:call(fibaro:getSelfId(), \"setProperty\", \"ui.Label11.value\", msg);\n\nfibaro:setGlobal(\"SolarBatteriStatus\", Solar);\nfibaro:sleep(200);\n\n---##################################################################################\n---### local ZustandDesHauses = fibaro:getGlobalValue(\"ZustandDesHauses\") ###########\n---##################################################################################\n\nlocal DateHeure = os.date(\"%H:%M:%S %d.%m.%y\", os.time())\nfibaro:call(fibaro:getSelfId(), \"setProperty\", \"ui.Aktualisiert.value\", DateHeure);\n\nfibaro:log(DateHeure)","buttonIcon":97,"favourite":false,"main":true}]},{"type":"label","elements":[{"id":2,"lua":false,"waitForResponse":false,"caption":"Solar gesamt","name":"Solar","favourite":false,"main":false}]},{"type":"label","elements":[{"id":3,"lua":false,"waitForResponse":false,"caption":"SolarLeistung","name":"Label3","favourite":false,"main":false}]},{"type":"label","elements":[{"id":4,"lua":false,"waitForResponse":false,"caption":"Ext.Produktion","name":"Label7","favourite":false,"main":false}]},{"type":"label","elements":[{"id":5,"lua":false,"waitForResponse":false,"caption":"Hausverbrauch","name":"Label5","favourite":false,"main":false}]},{"type":"label","elements":[{"id":6,"lua":false,"waitForResponse":false,"caption":"Netz Leistung","name":"Label6","favourite":false,"main":false}]},{"type":"label","elements":[{"id":7,"lua":false,"waitForResponse":false,"caption":"BatterieLeistun","name":"Label4","favourite":false,"main":false}]},{"type":"label","elements":[{"id":8,"lua":false,"waitForResponse":false,"caption":"BatterieZustand","name":"Label11","favourite":false,"main":false}]},{"type":"label","elements":[{"id":9,"lua":false,"waitForResponse":false,"caption":"Autarkie","name":"Label10","favourite":false,"main":false}]},{"type":"label","elements":[{"id":10,"lua":false,"waitForResponse":false,"caption":"Eigenverbrauch","name":"Label12","favourite":false,"main":false}]},{"type":"label","elements":[{"id":11,"lua":false,"waitForResponse":false,"caption":"","name":"Leer","favourite":false,"main":false}]},{"type":"label","elements":[{"id":12,"lua":false,"waitForResponse":false,"caption":"Aktualisiert ","name":"Aktualisiert","favourite":false,"main":false}]}]},"actions":{"pressButton":1,"setSlider":2,"setProperty":2}}