{"name":"PCR-6.0.1-E.","type":"virtual_device","properties":{"deviceIcon":0,"categories":"[\"other\"]","currentIcon":"0","log":"","logTemp":"","mainLoop":"local thisDevice = fibaro:getSelfId();\nlocal ip = fibaro:getValue(thisDevice, 'IPAddress');\nlocal port = fibaro:getValue(thisDevice, 'TCPPort');\nlocal hash = \"21232f297a57a5a743894a0e4a801fc3\"\n\nfunction processJSON(responseJSON)\n if #responseJSON == 0 then\n fibaro:debug(\"Empty response from API. Check ID.\")\n return nil\n end\n local jsonTbl= json.decode(responseJSON)\n if jsonTbl==nil then\n -- Oeps... Decode is empty...\n if #responseJSON == 0 then\n fibaro:debug(\"HC2 response is valid, but empty\")\n return nil\n end\n fibaro:debug(\"JSON decode failed for: \"..responseJSON)\n return nil\n end\n return jsonTbl\nend\n\nfunction processMeter(jsonTbl)\n -- OK, we got decoded data... Now do something with it\n local deviceError = jsonTbl.error_device\n \n if deviceError ~= 0 then\n fibaro:call(thisDevice, \"setProperty\", \"ui.Label1.value\", \"Отключен\");\n else\n fibaro:call(thisDevice, \"setProperty\", \"ui.Label1.value\", \"Включен\");\n \n fibaro:debug(jsonTbl.inputs.data[1].values.U)\n fibaro:debug(jsonTbl.inputs.data[1].values.I)\n fibaro:debug(jsonTbl.inputs.data[1].values.W)\n \n\n local deviceU = jsonTbl.inputs.data[1].values.U\n \tlocal deviceI = jsonTbl.inputs.data[1].values.I\n \tlocal deviceW = jsonTbl.inputs.data[1].values.W\n local deviceF = jsonTbl.inputs.data[1].values.F\n \tlocal tarifCount = jsonTbl.inputs.data[1].tarifQnty\n \tlocal currentTarif = jsonTbl.inputs.data[1].values.T\n local tarifSum = jsonTbl.inputs.data[1].values.energy.sum\n\n tmpStr = ''\n --_G is unsupported in Fibaro\n if (tarifCount >= 1) then \n tmpStr = jsonTbl.inputs.data[1].values.energy.T1\n end\n if (tarifCount >= 2) then\n tmpStr = tmpStr..\"/\"..jsonTbl.inputs.data[1].values.energy.T2\n end\n if (tarifCount >= 3) then \n tmpStr = tmpStr..\"/\"..jsonTbl.inputs.data[1].values.energy.T3\n end\n if (tarifCount >= 4) then\n tmpStr = tmpStr..\"/\"..jsonTbl.inputs.data[1].values.energy.T4\n end\n tmpStr = tmpStr..\" КВт\"\n\n fibaro:call(thisDevice, \"setProperty\", \"ui.Label2.value\", \"T\"..currentTarif);\n fibaro:call(thisDevice, \"setProperty\", \"ui.Label3.value\", tmpStr);\n fibaro:call(thisDevice, \"setProperty\", \"ui.Label4.value\", deviceU..\" В\");\n fibaro:call(thisDevice, \"setProperty\", \"ui.Label5.value\", deviceI..\" А\");\n fibaro:call(thisDevice, \"setProperty\", \"ui.Label6.value\", deviceW..\" Вт\");\n fibaro:call(thisDevice, \"setProperty\", \"ui.Label7.value\", deviceF..\" Гц\");\n fibaro:call(thisDevice, \"setProperty\", \"ui.Label8.value\", tarifSum..\" КВт\");\n end\nend\n\nfunction processAnalog(jsonTbl)\n local channelOneError = jsonTbl.inputs.data[1].error_ch\n local channelTwoError = jsonTbl.inputs.data[2].error_ch\n local channelThreeError = jsonTbl.inputs.data[3].error_ch\n local channelFourError = jsonTbl.inputs.data[4].error_ch\n\n if channelOneError ~= 0 then\n fibaro:call(thisDevice, \"setProperty\", \"ui.Label11.value\", \"Ошибка\");\n else\n fibaro:call(thisDevice, \"setProperty\", \"ui.Label11.value\", jsonTbl.inputs.data[1].value..\" В\");\n end\n\n if channelTwoError ~= 0 then\n fibaro:call(thisDevice, \"setProperty\", \"ui.Label12.value\", \"Ошибка\");\n else\n fibaro:call(thisDevice, \"setProperty\", \"ui.Label12.value\", jsonTbl.inputs.data[2].value..\" В\");\n end\n\n if channelThreeError ~= 0 then\n fibaro:call(thisDevice, \"setProperty\", \"ui.Label13.value\", \"Ошибка\");\n else\n fibaro:call(thisDevice, \"setProperty\", \"ui.Label13.value\", jsonTbl.inputs.data[3].value..\" В\");\n end\n\n if channelFourError ~= 0 then\n fibaro:call(thisDevice, \"setProperty\", \"ui.Label14.value\", \"Ошибка\");\n else\n fibaro:call(thisDevice, \"setProperty\", \"ui.Label14.value\", jsonTbl.inputs.data[4].value..\" В\");\n end\nend\n\nfunction processDigital(jsonTbl)\n local channelOneError = jsonTbl.inputs.data[1].error_ch\n local channelTwoError = jsonTbl.inputs.data[2].error_ch\n\n if channelOneError ~= 0 then\n fibaro:call(thisDevice, \"setProperty\", \"ui.Label9.value\", \"Ошибка\");\n else\n fibaro:call(thisDevice, \"setProperty\", \"ui.Label9.value\", jsonTbl.inputs.data[1].value);\n end\n\n if channelTwoError ~= 0 then\n fibaro:call(thisDevice, \"setProperty\", \"ui.Label10.value\", \"Ошибка\");\n else\n fibaro:call(thisDevice, \"setProperty\", \"ui.Label10.value\", jsonTbl.inputs.data[2].value);\n end\nend\n\nfunction processOneWire(jsonTbl)\n local channelOneError = jsonTbl.inputs.data[1].error_ch\n local channelTwoError = jsonTbl.inputs.data[2].error_ch\n local channelThreeError = jsonTbl.inputs.data[3].error_ch\n local channelFourError = jsonTbl.inputs.data[4].error_ch\n\n if channelOneError ~= 0 then\n fibaro:call(thisDevice, \"setProperty\", \"ui.Label15.value\", \"Не подключен\");\n else\n fibaro:call(thisDevice, \"setProperty\", \"ui.Label15.value\", jsonTbl.inputs.data[1].value..\" °С\");\n end\n\n if channelTwoError ~= 0 then\n fibaro:call(thisDevice, \"setProperty\", \"ui.Label16.value\", \"Не подключен\");\n else\n fibaro:call(thisDevice, \"setProperty\", \"ui.Label16.value\", jsonTbl.inputs.data[2].value..\" °С\");\n end\n\n if channelThreeError ~= 0 then\n fibaro:call(thisDevice, \"setProperty\", \"ui.Label17.value\", \"Не подключен\");\n else\n fibaro:call(thisDevice, \"setProperty\", \"ui.Label17.value\", jsonTbl.inputs.data[3].value..\" °С\");\n end\n\n if channelFourError ~= 0 then\n fibaro:call(thisDevice, \"setProperty\", \"ui.Label18.value\", \"Не подключен\");\n else\n fibaro:call(thisDevice, \"setProperty\", \"ui.Label18.value\", jsonTbl.inputs.data[4].value..\" °С\");\n end\nend\n\nfunction processDevice()\n HC2 = Net.FHttp(ip, port);\n\n response = HC2:GET(\"/get/m2m/inputs?type=specific&number=All&hash=\"..hash)\n meterJSON = processJSON(response)\n if meterJSON ~= nil then \n processMeter(meterJSON)\n fibaro:debug(\"Received counter data\")\n end\n\n response = HC2:GET(\"/get/m2m/inputs?type=digital&number=All&hash=\"..hash)\n digitalJSON = processJSON(response)\n if digitalJSON ~= nil then \n processDigital(digitalJSON)\n fibaro:debug(\"Received digital data\")\n end\n\n response = HC2:GET(\"/get/m2m/inputs?type=analog&number=All&hash=\"..hash)\n analogJSON = processJSON(response)\n if analogJSON ~= nil then \n processAnalog(analogJSON)\n fibaro:debug(\"Received analog data\")\n end\n\n response = HC2:GET(\"/get/m2m/inputs?type=oneWire&number=All&hash=\"..hash)\n oneWireJSON = processJSON(response)\n if oneWireJSON ~= nil then \n processOneWire(oneWireJSON)\n fibaro:debug(\"Received OneWire data\")\n end\n\nend\n\nprocessDevice()\n\n--fibaro:sleep(3000)","ui.Label1.value":"Включен","ui.Label10.value":"178.08","ui.Label11.value":"0 В","ui.Label12.value":"0 В","ui.Label13.value":"3.24 В","ui.Label14.value":"3.03 В","ui.Label15.value":"Не подключен","ui.Label16.value":"Не подключен","ui.Label17.value":"Не подключен","ui.Label18.value":"Не подключен","ui.Label2.value":"T1","ui.Label3.value":"3.67/0.67 КВт","ui.Label4.value":"225.8 В","ui.Label5.value":"0.05 А","ui.Label6.value":"12 Вт","ui.Label7.value":"49.98 Гц","ui.Label8.value":"4.34 КВт","ui.Label9.value":"25.33","visible":"true","rows":[{"type":"label","elements":[{"id":1,"lua":false,"waitForResponse":false,"caption":"Состояние:","name":"Label1","favourite":false,"main":false}]},{"type":"label","elements":[{"id":2,"lua":false,"waitForResponse":false,"caption":"Текущий тариф:","name":"Label2","favourite":false,"main":false}]},{"type":"label","elements":[{"id":3,"lua":false,"waitForResponse":false,"caption":"Показания:","name":"Label3","favourite":false,"main":false}]},{"type":"label","elements":[{"id":4,"lua":false,"waitForResponse":false,"caption":"Показания сум.:","name":"Label8","favourite":false,"main":false}]},{"type":"label","elements":[{"id":5,"lua":false,"waitForResponse":false,"caption":"Напряжение:","name":"Label4","favourite":false,"main":false}]},{"type":"label","elements":[{"id":6,"lua":false,"waitForResponse":false,"caption":"Сила тока:","name":"Label5","favourite":false,"main":false}]},{"type":"label","elements":[{"id":7,"lua":false,"waitForResponse":false,"caption":"Мощность:","name":"Label6","favourite":false,"main":false}]},{"type":"label","elements":[{"id":8,"lua":false,"waitForResponse":false,"caption":"Частота:","name":"Label7","favourite":false,"main":false}]},{"type":"label","elements":[{"id":9,"lua":false,"waitForResponse":false,"caption":"Имп. вход 1:","name":"Label9","favourite":false,"main":false}]},{"type":"label","elements":[{"id":10,"lua":false,"waitForResponse":false,"caption":"Имп. вход 2:","name":"Label10","favourite":false,"main":false}]},{"type":"label","elements":[{"id":11,"lua":false,"waitForResponse":false,"caption":"Аналог. вход 1:","name":"Label11","favourite":false,"main":false}]},{"type":"label","elements":[{"id":12,"lua":false,"waitForResponse":false,"caption":"Аналог. вход 2:","name":"Label12","favourite":false,"main":false}]},{"type":"label","elements":[{"id":13,"lua":false,"waitForResponse":false,"caption":"Аналог. вход 3:","name":"Label13","favourite":false,"main":false}]},{"type":"label","elements":[{"id":14,"lua":false,"waitForResponse":false,"caption":"Аналог. вход 4:","name":"Label14","favourite":false,"main":false}]},{"type":"label","elements":[{"id":15,"lua":false,"waitForResponse":false,"caption":"OneWire 1:","name":"Label15","favourite":false,"main":false}]},{"type":"label","elements":[{"id":16,"lua":false,"waitForResponse":false,"caption":"OneWire 2:","name":"Label16","favourite":false,"main":false}]},{"type":"label","elements":[{"id":17,"lua":false,"waitForResponse":false,"caption":"OneWire 3:","name":"Label17","favourite":false,"main":false}]},{"type":"label","elements":[{"id":18,"lua":false,"waitForResponse":false,"caption":"OneWire 4:","name":"Label18","favourite":false,"main":false}]}]},"actions":{"pressButton":1,"setSlider":2,"setProperty":2}}