06.11.2022, 11:11
Hi,
I realized this script (resident 10 sec) to read data from Daikin Altherma. It seems works fine in reading mode.
Now I need to add a cmd that writes on the 0 register 'on' when the thermostat it is 'on' and 'off' in the other case.
Best regards Cristian
I realized this script (resident 10 sec) to read data from Daikin Altherma. It seems works fine in reading mode.
Now I need to add a cmd that writes on the 0 register 'on' when the thermostat it is 'on' and 'off' in the other case.
Best regards Cristian
Code:
require('luamodbus')
--funzioni
function convert(data)
--log(data)
if data == 1 then
value = "auto"
else if data == 2 then
value = "Cooling"
else if data == 3 then
value = "Heating"
end
end
end
return(value)
end
function convert_2(data)
--log(data)
if data > 200 then
value = 0
else
voltage = grp.getvalue('Tensione_FTV')
return(((data / 10) * voltage)/1000)
end
return(value)
end
--Programma
mb = luamodbus.rtu()
mb:open('/dev/ttyUSB0', 19200, 'E', 8, 1, 'H')
mb:connect()
mb:setslave(1)
local powerFull = grp.getvalue('Altherma - Powerfull')
local cmd_riscaldamento = grp.getvalue('Altherma - cmd_risc')
--log(cmd_riscaldamento)
local value_1 = mb:readregisters(0)
if value_1 then
grp.update('Altherma - ON-OFF', value_1)
end
local value_2 = mb:readregisters(1)
if value_2 then
grp.checkupdate('Altherma - Setpoint', value_2 / 10,0.5)
end
--local value_3 = mb:readregisters(3)
-- if value_3 then
-- grp.update('Altherma - Modi', convert(value_3))
-- end
local value_4 = mb:readregisters(48)
if value_4 then
grp.checkupdate('Altherma - Temp Serbatoio', value_4 / 10, 0.5)
end
local value_5 = mb:readregisters(45)
if value_5 then
grp.checkupdate('Altherma - Assorbimento', convert_2(value_5),0.01)
end
local value_6 = mb:readregisters(9)
if value_6 then
grp.update('Altherma - Unit status ACS', value_6)
end
local value_7 = mb:readregisters(10)
if value_7 then
grp.update('Altherma - Status Power ACS', value_7)
end
local value_8 = mb:readregisters(11)
if value_8 then
grp.checkupdate('Altherma - Setpoint Water', value_8 / 10,1)
end
local value_9 = mb:readregisters(12)
if value_9 then
grp.checkupdate('Altherma - Setpoint ACS', value_9 / 10,1)
end
local value_10 = mb:readregisters(35)
if value_10 then
grp.checkupdate('Altherma - Temperatura Esterna', value_10 / 10, 1)
end
--local value_11 = mb:readregisters(49)
--if value_11 then
--grp.checkupdate('Altherma - Temp Acqua Uscita ICP', value_11 / 10,0.5)
--end
local value_12 = mb:readregisters(50)
if value_12 then
grp.checkupdate('Altherma - Temp Refrigerante', value_12 / 10,0.5)
end
local value_13 = mb:readregisters(51)
if value_13 then
grp.checkupdate('Altherma - Flusso Acqua', value_13 / 10, 1)
end
local value_14 = mb:readregisters(52)
if value_14 then
grp.checkupdate('Altherma - Pressione Acqua', value_14 / 10, 0.1)
end
local value_15 = mb:readregisters(46)
if value_15 then
grp.checkupdate('Altherma - Temp Acqua Uscita', value_15 / 10, 0.5)
end
local value_16 = mb:readregisters(47)
if value_16 then
grp.checkupdate('Altherma - Temp Acqua Ingresso', value_16 / 10, 0.5)
end
local value_17 = mb:readregisters(36)
if value_17 then
grp.checkupdate('Altherma - Temperatura Ritorno', value_17 / 10,0.5)
end
mb:close()