Domoticz smart thermostat
Jump to navigation
Jump to search
Create a virtual device:
Name: Thermo Sensor type: Thermostat setpoint
Choose a IOT4SH01DS device for temperature sensor, in my case named it 'Nappali'.
Choose a IOT4SH01Relay device for controlling the central heating unit, in my case named 'futes'.
In the Setup-> More options -> Events
Insert this code:
--
-- Domoticz passes information to scripts through a number of global tables
--
--
--
--
-- https://www.iot4.eu/wiki
local heating_probe = 'Nappali'
local thermostat_setpoint = 'Thermo'
local heating_unit = 'futes'
local hysteresis = 0.1
commandArray = {}
-- loop through all the devices
for deviceName,deviceValue in pairs(otherdevices) do
if (deviceName== thermostat_setpoint ) then
if tonumber(deviceValue) < tonumber(otherdevices[heating_probe]-hysteresis) then
if (otherdevices[heating_unit] == "On") then
-- commandArray['SendNotification']='Heating is off'
commandArray[heating_unit]='Off'
print("Heating is Off")
end
elseif tonumber(deviceValue) > tonumber(otherdevices[heating_probe]+hysteresis) then
if (otherdevices[heating_unit] == "Off") then
commandArray[heating_unit]='On'
-- commandArray['SendNotification']='Heating is on'
print("Heating is On")
end
end
end
end
-- loop through all the variables
for variableName,variableValue in pairs(uservariables) do
end
return commandArray
The event type set to Lua and set the event to active.
If you remove the -- (lua remark) before the commandArray['SendNotification'] lines the Domoticz will be notify heating status changes. If you want can use higher hysteresis than 0.1 celsius, just simply modify the Lua code.