Smart Life / Tuya rolluikschakelaars koppelen aan Domoticz

Gepubliceerd door Robot One op

Suncircle knikarmschermen

Automatiseer je rolluiken, je zonnescherm en/of je gordijnen

Update 29 april 2020: Tuya heeft op 28 april laten weten IFTTT vanaf 26 mei 2020 niet langer te ondersteunen. Ook krijgen software-ontwikkelaars niet langer toegang tot de Tuya API. Het bedrijf sluit de deuren dus voor andere smarthome systemen. We zullen moeten nadenken over een meer ingrijpende oplossing, zoals het flashen van nieuwe firmware. Wordt vervolgd.

In een review van de Smart Life / Tuya rolluikschakelaars stak ik acht maanden geleden de loftrompet over deze slimme oplossing om de bediening te automatiseren van gemotoriseerde rolluiken, jaloezieën, zonweringen en gordijnen. Maar hoe sluit je ze aan op Domoticz?

Het mooie van de schakelaars (die onder vele merknamen, waaronder Etersky verkrijgbaar zijn), is dat ze relatief goedkoop zijn, betrouwbaar werken en besturing via de app combineren met handmatige bediening, door middel van tiptoetsen. Je huisgenoten hoeven geen techneuten te zijn om ze te bedienen en dat is wel zo makkelijk. Een werkende API voor Domoticz is er echter (nog) niet.

Om die reden overwoog ik de microcontroller-firmware van het apparaat (een TYWE3S, ofwel de ESP8266-kloon van Tuya) te vervangen. Dat zou echter betekenen dat de schakelaars niet langer werken met Nederlandstalige spraakbesturing via de Google Assistent.

Daarom heb ik ze aan Domoticz gekoppeld via IFTTT. Voor de enkeling die IFTTT nog niet kent: het is een (gratis) clouddienst die de meest uiteenlopende apparaten en diensten aan elkaar koppelt in eenvoudig ‘Als dit, dan dat’ (If This Then That) opdrachten. Heb je nog geen IFTTT-account, ga dat nu aanmaken op https://ifttt.com. Het maakt je leven zo veel makkelijker.

Smart Life (Tuya) Rolluikschakelaars

Deze rolluikschakelaars van Tuya / Smart Life worden onder diverse merknamen verkocht. Ze zijn ideaal om rolluiken, jaloezieën of zonweringen handmatig of via app te bedienen. Compatibel met Alexa Echo en Google Assistent. En te besturen via Domoticz.

Koop op Amazon Koop op Bol.com

De implementatie van een IFTTT-koppeling voor deze rolluikschakelaars is echter wat omslachtiger dan we gewend zijn. Smart Life, of Tuya, het bedrijf dat achter het dit IoT-platform zit, heeft namelijk diverse Acties in IFTTT gemaakt voor een beperkt aantal apparaten en daar hoort de rolluikschakelaar (in de eigen app ‘curtain switch’ genoemd) niet bij.

Schermafbeelding: Smart Life Actions in IFTTT

Gelukkig is het wel mogelijk om ‘Scenes’ te activeren via IFTTT. Met drie van dergelijke scenes per rolluik of scherm, voor respectievelijk het openen, sluiten en stoppen van het rolluik, zijn we er ook. Ja, dat is veel werk als je 15 rolluiken om je huis heen hebt. Maar het is op dit moment nog steeds de meest handige optie als je deze zowel met de hand, als met spraakbesturing, als met Domoticz wilt kunnen bedienen. Voor het aanmaken van deze scenes heb je Smart Life app nodig. Hieronder een stappenplan.

STAP 1:
Als je dit type rolluikschakelaars hebt, staat de app Smart Life ongetwijfeld al op je smartphone. Daarmee kun je ze namelijk via WiFi bedienen. Open de app en klik op het middelste icoontje beneden (Smart).

STAP 2:
Klik op de + en je komt in het scherm Create Smart. Kies de bovenste optie: ‘launch Tap To Run’.

Schermafbeelding Smart Life

STAP 3:
In het volgende scherm kies je weer de bovenste optie: Run the device.

Schermafbeelding Smart Life

STAP 4:
Je ziet nu een overzicht van alle toestellen. Ik heb in dit voorbeeld mijn zonnescherm aangesloten, met de verrassende naam ‘Zonnescherm’.

Schermafbeelding Smart Life

STAP 5:
Je mag nu een functie selecteren. Er is er maar één: switch control. Klik daarop.

Schermafbeelding Smart Life

STAP 6:
Nu krijg je een keuzemenu: On, Stop of Off. Het ziet er niet bepaald uit als een rolluikschakelaar, maar de keuzes zijn als volgt gecodeerd:

  • On: rolluik naar boven (bij een gordijn waarschijnlijk gordijn open, maar dat moet je zelf even uitproberen);
  • Stop: pauzeer of annuleer de actie waarmee je bezig was;
  • Off: rolluik naar beneden.

Selecteer een actie en klik op Opslaan en vervolgens (bovenaan het scherm) op Volgende.

STAP 7:
Je komt nu op het scherm Smart instelling, met een samenvatting van de instellingen die je hebt gemaakt. De optie ‘Verschijnen op de eerste pagina’ betekent dat er een knop om deze actie te triggeren verschijnt in je Smart Life app. Dat wil je waarschijnlijk niet, dus je kunt deze uitzetten. Klik op Opslaan.

Schermafbeelding Smart Life

STAP 8:
Herhaal de bovenstaande stappen zodat je scenes hebt van alle acties van de schakelaar (on/stop/off).

STAP 9:
Nu gaan we in IFTTT acties maken op basis van de scenes die zojuist zijn ingesteld. Ga naar https://ifttt.com/create

STAP 10:
Klik + en kies de service Webhook / Receive a web request

STAP 11:
Geef het event een naam die in een url kan worden doorgegeven, dus zonder rare tekens of spaties. Voor het naar beneden doen van het zonnescherm maak je bijvoorbeeld: Zonnescherm_open. Voor het naar beneden doen van een rolluik zou dat Rolluik_dicht zijn. Dat ligt toch voor de hand 🙂

STAP 12:
Klik op de tweede + (then that). Je krijgt de vraag Choose action service. Kies Smart Life. Als dit de eerste keer is dat je de Smart Life service koppelt aan IFTTT, dan verschijnt er een popup waarop je de inlognaam en wachtwoord van je Smart Life app moet invullen.

STAP 13:
Je krijgt nu de lijst met acties te zien (zoals in de afbeelding hierboven). Kies voor Activate Scene. Je krijgt vervolgens een scherm met de vraag om je Actieveld te completeren. Met andere woorden: kies welke actie je wilt dat er wordt gestart bij het aanroepen van deze specifieke webhook.

Schermafbeelding IFTTT

STAP 14:
Na het klikken op Create action krijg je nog een overzicht van je instellingen, ter controle. Klik op Finish.

STAP 15:
Hoe weet je met welke webhook je de zo juist gemaakte actie kunt triggeren? Dat is (als je bent ingelogd op IFTTT) te zien op de pagina: https://ifttt.com/maker_webhooks. Klik daar op documentation (rechtsboven) en je krijgt te zien hoe jouw URL’s zijn opgebouwd.

Schermafbeelding IFTTT Webhook-triggers

In de afbeelding hierboven is mijn IFTTT key onzichtbaar gemaakt; hier tref je je eigen key aan. De opzet is dus:

https://maker.ifttt.com/trigger/{event}/with/key/aBc0DEFGHIjklmnopQRStuVwxYZA234BcDEfGHijklM

En dat wordt met de zojuist gemaakte actions:

https://maker.ifttt.com/trigger/Zonnescherm_open/with/key/aBc0DEFGHIjklmnopQRStuVwxYZA234BcDEfGHijklM
https://maker.ifttt.com/trigger/Zonnescherm_stop/with/key/aBc0DEFGHIjklmnopQRStuVwxYZA234BcDEfGHijklM
https://maker.ifttt.com/trigger/Zonnescherm_dicht/with/key/aBc0DEFGHIjklmnopQRStuVwxYZA234BcDEfGHijklM

Je kunt nu het zonnescherm besturen door deze URLs in de adresbalk van je browser te plakken en uit te voeren.

STAP 16:
Hoe verstuur je zo’n HTTP opdracht met Domoticz? Daarvoor gebruik je in de scripttaal dzVents het commando:

domoticz.openURL({ url = ‘https://maker.ifttt.com/trigger/Zonnescherm_open/with/key/aBc0DEFGHIjklmnopQRStuVwxYZA234BcDEfGHijklM' })

Ofwel, in een nuttige toepassing (open het zonnescherm na een druk op knop A en sluit het met knop B):

-- dzVents script voor het OPENEN of SLUITEN van het zonnescherm met respectievelijk SwitchA of SwitchB (draadloze schakelaars)
-- Houdt de status bij in variabele zonnescherm_status
-- Vul je eigen IFTTT-key in beide url's in
--

return {
    on = {
            devices = {
                        'SwitchA',
                        'SwitchB'
                      }
    },
    
    execute = function(domoticz, device)

        if (device.name == 'SwitchA') then 
            domoticz.openURL({
                url = 'https://maker.ifttt.com/trigger/Zonnescherm_open/with/key/aBc0DEFGHIjklmnopQRStuVwxYZA234BcDEfGHijklM'
            })
            domoticz.variables('zonnescherm_status').set("Open")
        else
            domoticz.openURL({
                url = 'https://maker.ifttt.com/trigger/Zonnescherm_dicht/with/key/aBc0DEFGHIjklmnopQRStuVwxYZA234BcDEfGHijklM'
            })
            domoticz.variables('zonnescherm_status').set("Dicht")
        end
        domoticz.log ("Zonnescherm status" .. zonnescherm_status, domoticz.LOG_INFO)
    end        
}

In dit script zit ook een Gebruikersvariabele: zonnescherm_status. Deze moet je eerst aanmaken in Domoticz voor je hem kunt gebruiken. Het is een string met de waarde Open of Dicht, bedoeld om de huidige status van het zonnescherm bij te houden en ook in andere scripts te kunnen gebruiken.

Je maakt de gebruikersvariabele in Domoticz via Instellingen > Meer opties . Gebruikersvariabelen. Geef hem de beginwaarde Dicht. De schermafbeelding hieronder laat dit zien:

Ben je niet van plan om andere scripts voor je zonnescherm te gaan gebruiken of vind je de status van het scherm niet interessant, dan kun je ervoor kiezen de regels 20 en 25 weg te laten. Een extra script kan echter schade aan je zonnescherm voorkomen, door het automatisch te sluiten zodra het gaat regenen, de wind te hard wordt, of de zon ondergaat. Daar kom ik in een volgend artikel op terug.

Zie ook:

Afbeelding boven artikel: Suncircle knikarmschermen.


0 reacties

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *