Domoticz smart thermostat

From IOT4
Revision as of 19:21, 23 May 2017 by Admin (talk | contribs)
Jump to navigation Jump to search

Create a virtual device:

Name: Thermo 
Sensor type: Thermostat setpoint

Thermo setpoint.png

Choose a IOT4SH01DS device for temperature sensor, in my case named it 'Nappali'.

Thermo nappali.png

Choose a IOT4SH01Relay device for controlling the central heating unit, in my case named 'futes'.

Thermo switch.png

In the Setup-> More options -> Events

Thermo events.png

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.

Thermo lua.png