It's for Domoticz:
1) make 5 UV_variables in domoticz
UV_ToonIP => {STRING} =192.168.x.x
UV_DomoticzIP => {STRING} = 192.168.x.x
UV_ToonboilerInTempName => {STRING} = BoilerInletTemp
UV_ToonboilerOutTempName => {STRING} = BoilerOutletTemp
UV_BoilerPressure => {STRINT} = BoilerPressure
2) Create 3 dummy sensor; with Name BoilerInletTemp, BoilerOutletTemp, BoilerPressure
3) Create a LUA TIME Event copy paste script.
Code: Select all
-- Time script runs every minute, intended to sync Domoticz with Toon in case the value is changed on the physical device.
-- Updates Toon ToonboilerOutTempName Sensor to value set on Toon
-- Updates Toon ToonboilerInTempName Sensor to value set on Toon
-- Updates Toon ToonboilerPressure sensor to value set on Toon
commandArray = {}
ToonboilerInTempName = uservariables['UV_ToonboilerInTempName'] -- Sensor inlet temperature
ToonboilerOutTempName = uservariables['UV_ToonboilerOutTempName'] -- Sensor outlet temperature
ToonboilerPressure = uservariables['UV_ToonboilerPressure'] -- ToonboilerPressure
ToonIP = uservariables['UV_ToonIP']
DomoticzIP = uservariables['UV_DomoticzIP']
json = assert(loadfile "/usr/local/domoticz/var/scripts/lua/JSON.lua")() -- For Synology
local handle = assert(io.popen(string.format('curl http://%s/boilerstatus/boilervalues.txt', ToonIP)))
local BoilerInfo = handle:read('*all')
handle:close()
-- JSON data from Toon contains a extra "," which should not be there.
BoilerInfo = string.gsub(BoilerInfo, ",}", "}")
jsonBoilerInfo = json:decode(BoilerInfo)
currentboilerInTemp = tonumber(jsonBoilerInfo.boilerInTemp)
currentboilerOutTemp = tonumber(jsonBoilerInfo.boilerOutTemp)
currentboilerPressure = tonumber(jsonBoilerInfo.boilerPressure)
-- Update the boilerInTemp
if otherdevices_svalues[ToonboilerInTempName]*100 ~= currentboilerInTemp*100 then
print('Updating boiler inlet temp to new value: ' ..currentboilerInTemp)
commandArray[1] = {['UpdateDevice'] = string.format('%s|0|%s', otherdevices_idx[ToonboilerInTempName], currentboilerInTemp)}
end
-- Update the boilerOutTemp
if otherdevices_svalues[ToonboilerOutTempName]*100 ~= currentboilerOutTemp*100 then
print('Updating boiler outlet temp to new value: ' ..currentboilerOutTemp)
commandArray[2] = {['UpdateDevice'] = string.format('%s|0|%s', otherdevices_idx[ToonboilerOutTempName], currentboilerOutTemp)}
end
-- Update the boilerPressure
if otherdevices_svalues[ToonboilerPressure]*100 ~= currentboilerPressure*100 then
print('Updating boiler pressure to new value: ' ..currentboilerPressure)
commandArray[3] = {['UpdateDevice'] = string.format('%s|0|%s', otherdevices_idx[ToonboilerPressure], currentboilerPressure)}
end
return commandArray
---EDITTED: added *100 to let the IF THEN work Correct