Eneco’s Toon thermostaat bedienen met Domoticz
Mocht je een Toon thermostaat hebben van Eneco dan kun je deze heel eenvoudig toevoegen en bedienen in Domoticz. In dit artikel leggen we uit hoe je een selector in Domoticz kunt maken, zodat je het programma van gemakkelijk kunt switchen. Daarnaast kun je gegevens van Toon, zoals de kamertemperatuur in Blockly-events gebruiken voor allerlei doeleinden.
Toon toevoegen
Ga naar SETUP > HARDWARE en voeg Toon Thermostaat toe als type. Bij username/password vul je de gegevens in van Mijn Eneco. Let op! bij username moet het email-adres (!) staan.
Als je nu naar SETUP > DEVICES gaat zal je zien dat er zeven devices aangemaakt zijn. Klik op het groene pijltje om een bepaalde device toe te voegen aan het tabblad Switches. Daarnaast heb ik in de kolom Name bij een aantal devices de naam aangepast. Let er goed op dat als je een naam wijzigt deze later in het LUA-script ook gewijzigd moet worden, aangezien de namen exact overeen moeten komen.
In de eerste kolom (Idx) zie je cijfers staan, deze hebben we dadelijk nodig om de selector aan te maken.
Selector Switch aanmaken
We gaan nu een selector switch aanmaken. Belangrijk is om bij Switch Type te kiezen voor Selector. Hieronder vind je een voorbeeld hoe je alles moet invullen. Let er op dat de namen (en level-namen) van de selector switch exact overeen moeten komen in het LUA-script.
Met de json commando’s kunnen we het programma op Eneco’s Toon wijzigen. Indien je in Domoticz een gebruikersnaam/wachtwoord ingesteld hebt dan moet je deze ook in de URL zetten. Het IP en de poort zijn van Domoticz. Ik heb ook een optionele ‘Off’-level aangemaakt, welke gedurende de zomermaanden gebruikt kan worden.
Om het wat makkelijker te maken kun je onderstaande selector actions kopiëren. Uiteraard moet je de vetgedrukte delen aanpassen naar jouw eigen situatie.
1 2 3 4 5 |
http://username:password@192.168.2.152:8080/json.htm?type=command¶m=thermostatstate&idx=1&state=4 http://username:password@192.168.2.152:8080/json.htm?type=command¶m=thermostatstate&idx=1&state=3 http://username:password@192.168.2.152:8080/json.htm?type=command¶m=thermostatstate&idx=1&state=2 http://username:password@192.168.2.152:8080/json.htm?type=command¶m=thermostatstate&idx=1&state=1 http://username:password@192.168.2.152:8080/json.htm?type=command¶m=thermostatstate&idx=1&state=0 |
Vergeet op het einde niet om op Save te klikken! Uiteindelijk zal je selector er zo uitzien:
Je kunt nu vanuit Domoticz je Eneco’s Toon thermostaat bedienen,erg handig! Maar wat nu als je het programma op de thermostaat zelf aanpast? Dan wil je dat natuurlijk in Domoticz terugzien, of niet?
Eneco’s Toon LUA-script
Sla onderstaand script op met de naam script_time_toonselector.lua
in de folder /home/pi/domoticz/scripts/lua/
. Het script zal nu automatisch iedere minuut draaien en de status van het Toon-programma in Domoticz updaten (indien je het programma op de thermostaat zelf hebt gewijzigd.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
-- script_time_toonselector.lua -- Reads the Toon Thermostat Setpoint Temperature and updates the -- selector in Domoticz to represent the current Active State. -- Off scene is an option, leave it out if not needed. -- Action commands will not be executed. commandArray = {} -- Settings: Configure as desired -- Name of the switch with the temperature setpoint. ThermostatSetPointName = 'Ingestelde temperatuur' --Must match the name of you SetPoint device --Temperature SetPoints. OffSetPoint = '6.00' --optional AwaySetPoint = '18.00' SleepSetPoint = '13.00' HomeSetPoint = '19.50' ComfortSetPoint = '21.00' -- Name of the selector for Toon ToonSelector = 'Toon Scenes' --Must match (including case) the name of your Selector Switch -- Name of the levels in the selector OffLevel = 'Uit' --optional AwayLevel = 'Weg' SleepLevel = 'Slapen' HomeLevel = 'Thuis' ComfortLevel = 'Comfort' -- Values from each level name OffLevelValue = '0' --optional AwayLevelValue = '10' SleepLevelValue = '20' HomeLevelValue = '30' ComfortLevelValue = '40' -- End of settings -- Toon Thermostat SetPoint: ThermostatSetPoint = otherdevices_svalues[ThermostatSetPointName] if (ThermostatSetPoint == HomeSetPoint) then --print("SetPoint equals to Home"); if (otherdevices[ToonSelector] ~= HomeLevel) then print("Updating '" .. ToonSelector .. "' selector to '" .. HomeLevel .. "'") commandArray['UpdateDevice'] = otherdevices_idx[ToonSelector]..'|1|'..HomeLevelValue end elseif (ThermostatSetPoint == ComfortSetPoint) then --print("SetPoint equals to Comfort"); if (otherdevices[ToonSelector] ~= ComfortLevel) then print("Updating '" .. ToonSelector .. "' selector to '" .. ComfortLevel .. "'") commandArray['UpdateDevice'] = otherdevices_idx[ToonSelector]..'|1|'..ComfortLevelValue end elseif (ThermostatSetPoint == SleepSetPoint) then --print("SetPoint equals to Sleep"); if (otherdevices[ToonSelector] ~= SleepLevel) then print("Updating '" .. ToonSelector .. "' selector to '" .. SleepLevel .. "'") commandArray['UpdateDevice'] = otherdevices_idx[ToonSelector]..'|1|'..SleepLevelValue end elseif (ThermostatSetPoint == AwaySetPoint) then --print("SetPoint equals to Away"); if (otherdevices[ToonSelector] ~= AwayLevel) then print("Updating '" .. ToonSelector .. "' selector to '" .. AwayLevel .. "'") commandArray['UpdateDevice'] = otherdevices_idx[ToonSelector]..'|1|'..AwayLevelValue end -- Optional elseif (ThermostatSetPoint == OffSetPoint) then --print("SetPoint equals to Off"); if (otherdevices[ToonSelector] ~= OffLevel) then print("Updating '" .. ToonSelector .. "' selector to '" .. OffLevel .. "'") commandArray['UpdateDevice'] = otherdevices_idx[ToonSelector]..'|1|'..OffLevelValue end end return commandArray |
Klein beetje hulp gevraagd. Ik heb eerst een dummy hardware aangemaakt. Dit omdat ik Toon niet kon kiezen in de hardware lijst bij het maken van de switch.
De switch heb ik naar beschrijving aangemaakt. 0, 1, 2, 3, 4 heb ik wel logisch gehouden, want dat lijkt wat door elkaar te gaan in de beschrijving (maakt voor het testen ook niet veel uit).
De switch ziet er leuk uit, maar als ik een knop aanklik, dan reageert Toon daar helemaal niet op?
Mocht ik de 0, 1, 2, 3, 4 verkeerd hebben, dan zou ik dat merken is een verkeerde temperatuur schakeling. Maar ik zie helemaal niets schakelen.
Moet ik username:password aanpassen? Heb het standaard laten staan en aangepast, maar beide geen resultaat.
Ik blijf het vreemd vonden dat ik in de hardware geen Toon kan kiezen voor de schakelaar.
Voordat je de switches aanmaakt moet je eerst Toon thermostaat toevoegen als hardware en inloggen met je Eneco account. Als je dit niet doet dan zullen de switches nooit werken (tenzij Toon geroot is).
Ik heb Toon in mijn hardware lijst staan. Kan deze ook bedienen. Maar dat gaat natuurlijk via mijn Eneco account.
Daarom vind ik ook zo raar dat ik Toon niet als optie in de hardware lijst zie bij het maken van de schakelaar.
Mijn Toon is nog standaard, dus niet geroot.
Aan de Json regel te zien benader jij Toon rechtstreeks met het ip adres. Maar lukt dit wel bij een standaard Toon?
Ja, je kunt een niet geroote Toon via Domoticz bedienen. Het klopt dat je Toon niet ziet als schakelaar. Je moet bij deze stap Selector Switch kiezen. Vervolgens kun je de naam en het icoontje wijzigen
Werkt dit ook als toon abonnement niet meer geactiveerd is?
Met een geroote Toon is dit ook mogelijk, maar is de werkwijze iets anders. Binnenkort zal hierover een artikel online komen.
Heeft u een link met instructies naar de gerootte versie?
https://ehoco.nl/geroote-toon-bedienen-met-domoticz/
Ik had dit ooit werkend, maar krijg nu een “error 401 Unauthorized” wanneer ik de selector gebruik. Action met of zonder username en password maakt niet uit. Enig idee? Ik draai wel beta version ( 4.10224), maar dat heeft verder nog geen problemen gegeven.
Heb je toevallig vreemde tekens (als % of $) in het wachtwoord van je Eneco-account zitten?
Had ik wel, maar deze heb ik ook al gewijzigd en helpt ook niet helaas.
Dit is de foutmelding in de log:
2018-12-20 15:17:43.034 Error: Error opening url: http://username:password@192.168.0.103:8084/json.htm?type=command¶m=thermostatstate&idx=57&state=3
Ik heb wat lopen stoeien met het Domoticz website protection password en authentication en nu werkt het ineens wel. Dus mocht iemand hier tegenaan lopen, probeer dit dan eens.
Kees Kloost!
Ik heb wat lopen stoeien met Toon, ik had toon toegevoegd aan domoticz maar kreeg het niet aan de praat, nu heb ik alles eraf gehaald dacht voeg ik het opnieuw toe. maar toon toevoegen doet hij wel maar Domoticz maakt niet meer die 7 devices aan?
Iemand enig idee hoe dat kan ?
Hier heb ik sinds ~ 12 februari issues met domoticz icm toon. Ik weet niet of dit aan een domoticz of toon update ligt. Kan iemand dubbelchecken ?
domoticz V4.10415
toon 5.0.4
Probleem ligt bij Eneco.
Komt het dan door toon dat die 7 devices niet meer komen ?
Dankjewel Joost voor de bevestiging. Erg jammer dat Eneco iets prima werkends de nek omdraait…. Van de nieuwe methode die in de plaats van toonopafstand is gekomen (https://developer.toon.eu/api-intro) snap ik nog geen pepernoot. Dat gaat weer een aantal avondjes uitpluizen worden…
Dit werkt inderdaad niet meer, maar met dit python script heb ik het weer werkend.
https://github.com/JohnvandeVrugt/toonapilib4domoticz