Page 9 of 12

Re: Controlling Toon via Domoticz

Posted: Thu Jul 18, 2019 10:16 pm
by Jobsoft
TerrorSource wrote:Hi guys,

As requested by a few users around here i've created a how-to manual to control Toon via Domoticz.
It's pretty much a step-by-step guide and should be enough to get it working within 20-30minutes.

The complete manual is based off information and scripts found on: https://www.domoticz.com/forum/viewtopic.php?t=11421

Please ask for support in the topic/url mention above. The scripts are made by users on that forum, not by me.
I will not take credit for the scripts.
I will however create a new version of the manual when there are errors or improvements possible in the current manual.

I wil not support this manual or the content of it!

There's are seperate manuals for Dutch and English.

Please do NOT distribute this document or the content in any kind. It is for personal use only.

Version 2 available now:
- Fixes typo's
- Added LUA/DzVents option enabling

Dutch: Download v2
English: Download v2
If I set it up my Domoticz crashes. If I disable the Toon script it doesn't crash. I did exactly what was in the manual and checked it for typo's 5 times. I have no clue how to fix this.
Can someone point me in the right direction please?

Thanks!

Re: Controlling Toon via Domoticz

Posted: Thu Jul 25, 2019 5:17 pm
by witteherder
At step 7 I have put by Eventsystem everything on ON

Then I went to Setup More options then to Eventst to add scipts.
Then I see this like in my attachement.
1. Where can i put/add extra script Toon_script.txt
2. I also see in this topic that its not working by everybody who has a Toon2: What do i have to change in this script:

Code: Select all

commandArray = {}

    ToonThermostatSensorName = uservariables['UV_ToonThermostatSensorName'] -- Sensor showing current setpoint
    ToonTemperatureSensorName = uservariables['UV_ToonTemperatureSensorName'] -- Sensor showing current room temperature
    ToonScenesSensorName  = uservariables['UV_ToonScenesSensorName'] -- Sensor showing current program
    ToonAutoProgramSensorName = uservariables['UV_ToonAutoProgramSensorName'] -- Sensor showing current auto program status
	ToonBurnerName = uservariables['UV_ToonBurnerName']
	ToonProgramInformationSensorName = uservariables['UV_ToonProgramInformationSensorName'] -- Sensor showing displaying program information status
	ToonBoilerTempSetpoint = uservariables['UV_ToonBoilerTempSetpointSensorName'] -- Sensor showing current internal boiler temp 
    ToonIP = uservariables['UV_ToonIP']
    DomoticzIP = uservariables['UV_DomoticzIP']
    
-- Choose the correct platform which Domoticz runs on
-- Remove -- before the line which applies for your situation, set -- for all other platforms
    json = assert(loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")()  -- For Raspberry
--  json = assert(loadfile "/opt/domoticz/scripts/lua/JSON.lua")()  -- For Linux (LEDE)
--  json = assert(loadfile "C:\\Program Files (x86)\\Domoticz\\scripts\\lua\\json.lua")() -- For Windows
--  json = assert(loadfile "/volume1/@appstore/domoticz/var/scripts/lua/JSON.lua")() -- For Synology
    
    local handle = assert(io.popen(string.format('curl -m 5 http://%s/happ_thermstat?action=getThermostatInfo', ToonIP)))
        local ThermostatInfo = handle:read('*all')
    handle:close()

-- JSON data from Toon contains a extra "," which should not be there.
ThermostatInfo = string.gsub(ThermostatInfo, ",}", "}")

    jsonThermostatInfo = json:decode(ThermostatInfo)
   
    if jsonThermostatInfo ~= nil then
    currentSetpoint = tonumber(jsonThermostatInfo.currentSetpoint) / 100
    currentTemperature = tonumber(jsonThermostatInfo.currentTemp) / 100
    currentProgramState = tonumber(jsonThermostatInfo.programState)
    currentActiveState = tonumber(jsonThermostatInfo.activeState)
    currentNextTime = jsonThermostatInfo.nextTime
	currentBurnerInfo = tonumber(jsonThermostatInfo.burnerInfo)
    currentNextSetPoint = tonumber(jsonThermostatInfo.nextSetpoint) / 100
	currentBoilerSetPoint = tonumber(jsonThermostatInfo.currentInternalBoilerSetpoint)
   
        if currentSetpoint ~= nil then 
            -- Update the thermostat sensor to current setpoint
            if otherdevices_svalues[ToonThermostatSensorName]*100 ~= currentSetpoint*100 then 
                print('Updating thermostat sensor to new set point: ' ..currentSetpoint)
                commandArray[1] = {['Variable:UV_ToonChangedByDomoticz'] = '1'} -- Set variable changed to 1 to prevent script ToonSetPoint from shooting an event at Toon
                commandArray[2] = {['UpdateDevice'] = string.format('%s|0|%s', otherdevices_idx[ToonThermostatSensorName], currentSetpoint)}
            end
        end
   
        if currentTemperature ~= nil then 
            -- Update the temperature sensor to current room temperature
            if otherdevices_svalues[ToonTemperatureSensorName]*100 ~= currentTemperature*100 then
                print('Updating the temperature sensor to new value: ' ..currentTemperature)
                commandArray[3] = {['UpdateDevice'] = string.format('%s|0|%s', otherdevices_idx[ToonTemperatureSensorName], currentTemperature)}
            end
        end
   
        if currentBoilerSetPoint ~= nil then 
			-- Update the temperature of boiler
			if otherdevices_svalues[ToonBoilerTempSetpoint]*100 ~= currentBoilerSetPoint*100 then 
				print('Updating the boiler temperature to new value: ' ..currentBoilerSetPoint)
				commandArray[3] = {['UpdateDevice'] = string.format('%s|0|%s', otherdevices_idx[ToonBoilerTempSetpoint], currentBoilerSetPoint)}
			end
		end
		
        if currentActiveState ~= nil then 
            -- Update the toon scene selector sensor to current program state
            CurrentToonScenesSensorValue = otherdevices_svalues[ToonScenesSensorName]
   
            if currentActiveState == -1 then currentActiveState = '50' -- Manual
            elseif currentActiveState == 0 then currentActiveState = '40' -- Comfort
            elseif currentActiveState == 1 then currentActiveState = '30' -- Home
            elseif currentActiveState == 2 then currentActiveState = '20' -- Sleep
            elseif currentActiveState == 3 then currentActiveState = '10' -- Away
            end
    
            if CurrentToonScenesSensorValue ~= currentActiveState then  -- Update toon selector if it has changed
                print ('Updating Toon Scenes selector')
                commandArray[4] = {['UpdateDevice'] = string.format('%s|1|%s', otherdevices_idx[ToonScenesSensorName], currentActiveState)}
            end
        end
   
        if currentProgramState ~= nil then 
            -- Updates the toon auto program switch
            CurrentToonAutoProgramSensorValue = otherdevices_svalues[ToonAutoProgramSensorName]
   
           if currentProgramState == 0 then currentProgramState = '10' -- No
            elseif currentProgramState == 1 then currentProgramState = '20' -- Yes
            elseif currentProgramState == 2 then currentProgramState = '30' -- Temporary       
            end
   
            if CurrentToonAutoProgramSensorValue ~= currentProgramState then -- Update toon auto program selector if it has changed
                print ('Updating Toon Auto Program selector')
                commandArray[5] = {['UpdateDevice'] = string.format('%s|1|%s', otherdevices_idx[ToonAutoProgramSensorName], currentProgramState)}
            end
        end
   
        if currentNextTime ~= nil and currentNextSetPoint ~= nil then 
            -- Updates the toon program information text box
            CurrentToomProgramInformationSensorValue = otherdevices_svalues[ToonProgramInformationSensorName]
            if currentNextTime == 0 or currentNextSetPoint == 0 then
                ToonProgramInformationSensorValue = 'Op ' ..currentSetpoint.. '°'
            else
                ToonProgramInformationSensorValue = 'Om ' ..os.date('%H:%M', currentNextTime).. ' op ' ..currentNextSetPoint.. '°'
            end
   
            if CurrentToomProgramInformationSensorValue ~= ToonProgramInformationSensorValue then
                commandArray[6] = {['UpdateDevice'] = string.format('%s|0|%s', otherdevices_idx[ToonProgramInformationSensorName], ToonProgramInformationSensorValue)}
            end
        end
		
			-- Update the toon burner selector to current program state
			CurrentToonBurnerValue = otherdevices_svalues[ToonBurnerName]  
			
			if currentBurnerInfo == 0 then currentBurnerInfo = '0' -- uit
			elseif currentBurnerInfo == 1 then currentBurnerInfo = '10' -- cv aan
			elseif currentBurnerInfo == 2 then currentBurnerInfo = '20' -- warmwater aan
			end
			
			if CurrentToonBurnerValue ~= currentBurnerInfo then  -- Update toon burner selector if it has changed
				print ('Updating Toon burner info')
				commandArray[7] = {['UpdateDevice'] = string.format('%s|1|%s', otherdevices_idx[ToonBurnerName], currentBurnerInfo)}
			end

    end
--
return commandArray

Re: Controlling Toon via Domoticz

Posted: Fri Jul 26, 2019 10:49 am
by TerrorSource
MarcF wrote:To All,

Based on the manual from TerrorSource domoticaforum.eu/viewtopic.php?f=102&am ... mp;t=12097 and BOverdevest domoticaforum.eu/viewtopic.php?f=102&am ... p;start=15 I created 2 files.

// STARTING
Download the manual from TerrorSource, base topic page 1. This Manual explains how you create virtual sensors and define User Variables
The Virtual sensors (Devices) and User Variables you create need to have the EXACT value that is used within the scripts. If this doesn't match, the scripts won't work

To help you out, here is some helpfull data for setting up the Toon <=> Domoticz connection with the proces described by TerrorSource and the script from BOverdevest

NOTE: Download notepad++ if you don;y have it allready. It's free and very usefull! You can use it to replace some parts in the files (personal config settings)

When all is set up, you can use this script. Please also note the remarks in the top part to update some parts of the script to make it match your situation


When all is done correctly, it will work with a rooted Toon, fw 5.04. Maybe you need to install the boilerstatus module from the toonstore if you get boiler issues.

I'm getting the following errors:

2019-07-26 10:37:00.612 Error: dzVents: Error: (2.4.26) An error occurred when calling event handler Toon
2019-07-26 10:37:00.613 Error: dzVents: Error: (2.4.26) /home/pi/domoticz/dzVents/runtime/Utils.lua:45: attempt to perform arithmetic on local 'x' (a nil value)

Re: Controlling Toon via Domoticz

Posted: Wed Jul 31, 2019 11:54 am
by brommetje
Hi @MarcF thanks for your clear explanation, just implemented the script, devices etc. and it looks like it is working but if I have a look to the BoilerPressure is for example 18.9 BAR so I changed the script.
Re: Controlling Toon via Domoticz
New postby MarcF » Fri Mar 08, 2019 8:27 pm

To All,

Based on the manual from TerrorSource domoticaforum.eu/viewtopic.php?f=102&am ... mp;t=12097 and BOverdevest domoticaforum.eu/viewtopic.php?f=102&am ... p;start=15 I created 2 files.

// STARTING

Code: Select all

-- Update the Boiler water Pressure to current value
        local currentBoilerPressure = tonumber(jsonBoilerInfo.boilerPressure) * 10
        ...

Code: Select all

-- Update the Boiler water Pressure to current value
        -- local currentBoilerPressure = tonumber(jsonBoilerInfo.boilerPressure) * 10
        local currentBoilerPressure = tonumber(jsonBoilerInfo.boilerPressure)
and now my BoilerPressure = 1.9 BAR and that looks OK so my question why did you do the calculation * 10 ?

Or is there already a new updated one or missing something?

Regards,
Martin

Re: Controlling Toon via Domoticz

Posted: Sat Aug 17, 2019 4:18 pm
by witteherder
Where can I check this error from the Domoticz log file?
2019-08-17 16:01:34.568 Status: PROXY: Authenticate result: success.
2019-08-17 16:06:17.024 (Dummy) Thermostat (ToonThermostat)
2019-08-17 16:06:17.025 Status: EventSystem: reset all device statuses...
2019-08-17 16:06:17.173 Status: LUA: Updating the temperature sensor to new value: 24.11
2019-08-17 16:06:17.174 Status: EventSystem: Script event triggered: Toon
2019-08-17 16:06:17.176 Status: LUA: Setting Toon setpoint to 10.00
2019-08-17 16:06:17.176 Status: EventSystem: Fetching URL http://192.168.2.15/happ_thermstat?acti ... point=1000 after 0.2 seconds...
2019-08-17 16:06:17.176 Status: EventSystem: Script event triggered: ToonThermostat
2019-08-17 16:06:17.173 Error: EventSystem: in Toon: [string "commandArray = {}..."]:58: attempt to perform arithmetic on field '?' (a nil value)
2019-08-17 16:06:22.737 Status: EventSystem: reset all device statuses...
2019-08-17 16:06:25.093 Status: EventSystem: reset all device statuses...
2019-08-17 16:06:55.630 Status: EventSystem: reset all device statuses...

Re: Controlling Toon via Domoticz

Posted: Sun Aug 25, 2019 2:40 pm
by phoenixb
Duiken60 wrote:Have my Toon working on Domoticz but only after turning the option "local access" on but that works only for 2 hrs. How can I get is working without time limitation?
Same issue here, do you have already find an solution for this problem?

Re: Controlling Toon via Domoticz

Posted: Mon Aug 26, 2019 2:04 pm
by TerrorSource
phoenixb wrote:
Duiken60 wrote:Have my Toon working on Domoticz but only after turning the option "local access" on but that works only for 2 hrs. How can I get is working without time limitation?
Same issue here, do you have already find an solution for this problem?
Can you try an "update-rooted.sh -f" to re-do the fixes? Please post the result

Re: Controlling Toon via Domoticz

Posted: Mon Aug 26, 2019 2:57 pm
by mAiden
phoenixb wrote:
Duiken60 wrote:Have my Toon working on Domoticz but only after turning the option "local access" on but that works only for 2 hrs. How can I get is working without time limitation?
Same issue here, do you have already find an solution for this problem?
Try to fix youre iptables. Maybe the port to HTTP is be closed.
10080 must be uncomment! :)

Re: Controlling Toon via Domoticz

Posted: Mon Aug 26, 2019 3:56 pm
by phoenixb
TerrorSource wrote:
phoenixb wrote:
Duiken60 wrote:Have my Toon working on Domoticz but only after turning the option "local access" on but that works only for 2 hrs. How can I get is working without time limitation?
Same issue here, do you have already find an solution for this problem?
Can you try an "update-rooted.sh -f" to re-do the fixes? Please post the result
That solved the problem. Thx.

Re: Controlling Toon via Domoticz

Posted: Wed Sep 04, 2019 7:55 pm
by Xavier
Hi,

I used the script in the post of "MarcF » Fri Mar 08, 2019 7:27 pm "
Now I get this error:
" Status: dzVents: Error (2.4.19): An error occured when calling event handler Toon
2019-09-04 19:43:00.530 Status: dzVents: Error (2.4.19): /volume1/@appstore/domoticz/var/scripts/lua/JSON.lua:194: HTML passed to JSON:decode(): <?xml version="1.0" encoding="iso-8859-1"?>
2019-09-04 19:43:00.530 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2019-09-04 19:43:00.530 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2019-09-04 19:43:00.530 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
2019-09-04 19:43:00.530 <head>
2019-09-04 19:43:00.530 <title>404 - Not Found</title>
2019-09-04 19:43:00.530 </head>
2019-09-04 19:43:00.530 <body>
2019-09-04 19:43:00.530 <h1>404 - Not Found</h1>
2019-09-04 19:43:00.530 </body>
2019-09-04 19:43:00.530 </html> "

I'm using Domoticz on mij Synology with version 4.10717.
Folder and file permissions should be ok.
This messages keeps returning.
How can I fix this?

Re: Controlling Toon via Domoticz

Posted: Wed Sep 04, 2019 8:07 pm
by madpatrick
Can you check the if the location "/volume1/@appstore/domoticz/var/scripts/lua/JSON.lua" is correct on your server

Re: Controlling Toon via Domoticz

Posted: Wed Sep 04, 2019 8:14 pm
by witteherder
mAiden wrote:For the people with smart plugs, here a detailed explanation, how to connect them to Domoticz.
This way you can also switch your plugs on time, and you are totally independent of Olisto or a Service Center. ;-)

English version comes as soon as possible .. Here the Dutch version ..
Slimme stekkers Toon in Domoticz.pdf
How you can see the power consumption in Domoticz from the smart plugs used in Toon

Re: Controlling Toon via Domoticz

Posted: Wed Sep 04, 2019 8:50 pm
by Xavier
madpatrick wrote:Can you check the if the location "/volume1/@appstore/domoticz/var/scripts/lua/JSON.lua" is correct on your server
I did several times.
also changed to /usr/local/domoticz/var/scripts/lua/JSON.lua

When using this link I get an error that domoticz had no right to view this folder.

Re: Controlling Toon via Domoticz

Posted: Wed Sep 04, 2019 8:53 pm
by madpatrick
Xavier wrote:
madpatrick wrote:Can you check the if the location "/volume1/@appstore/domoticz/var/scripts/lua/JSON.lua" is correct on your server
I die several homes.
also changed to /usr/local/domoticz/var/scripts/lua/JSON.lua

When using this link I get an error that domoticz had no right to view this folder.
Did you check where the file json.lua is located on your server ?
If this is a different location, change this in the script

Re: Controlling Toon via Domoticz

Posted: Wed Sep 04, 2019 8:56 pm
by Xavier
madpatrick wrote:
Xavier wrote:
madpatrick wrote:Can you check the if the location "/volume1/@appstore/domoticz/var/scripts/lua/JSON.lua" is correct on your server
I die several homes.
also changed to /usr/local/domoticz/var/scripts/lua/JSON.lua

When using this link I get an error that domoticz had no right to view this folder.
Did you check where the file json.lua is located on your server ?
If this is a different location, change this in the script
This the location where JSON.lua for domoticz is located