De domoticaverslaving
Ik ben zelf ooit begonnen met een simpel setje van KlikAanKlikUit bestaande uit een aantal schakelaars en dimmers met daarbij een afstandsbediening. Daarna heb ik al vrij snel de HomeWizard aangeschaft omdat ik de lampen in huis ook graag via mijn Androidtelefoon en/of -tablet wilde kunnen bedienen. Na de aanschaf van de HomeWizard is de domoticaverslaving enorm toegenomen en inmiddels hangt het hele huis vol met KlikAanKlikUit- en HomeWizardspullen. Ik praat dan over de HomeWizard met de daarbij behorende EnergyLink en HeatLink, 6 dimmers, 7 switches, 3 motion sensors (bewegingssensor), 1 autogordijn voor rolgordijnen, 2 deursensors, een draadloze deurbel, een wireless outdoor PTZ IP camera, 5 rookmelders, een schemersensor, 3 thermometers en 12 wandschakelaars. Mocht je nieuw zijn op het gebied van domotica en er mee willen beginnen, let dus op, het is enorm verslavend!
Spraakbesturing
Een tijdje terug kwam ik op YouTube een video tegen van Armando Ferreira waarin hij liet zien hoe hij zijn domoticasysteem kan aansturen middels voice control. Hier gebruikte hij Tasker voor op Android en kon zo via voice commands zijn domoticasysteem aansturen. Mijn eerste reactie was: Dat wil ik ook! Ik ben ermee aan de slag gegaan en al vrij snel is het gelukt om dit ook met de HomeWizard aan de praat te krijgen. Het is namelijk mogelijk om via HTTP GET commando’s de HomeWizard aan te sturen. Zie het als een API (Application Programming Interface) van de HomeWizard. Deze API wordt ook in de app en webinterface van de HomeWizard zelf gebruikt om te communiceren met de HomeWizard.
Ik heb dit als tip gemeld bij Androidworld en mij is gevraagd of ik leuk vind om er een artikel over te schrijven, met daarbij een tutorial hoe je het zelf ook kan implementeren. Leuk idee, dus aan de slag!
Aan de slag
Ik heb een voorbeeld gemaakt voor het aansturen van de HomeWizard via voice commands in Tasker. De bedoeling is dat je kunt zien wat je moet doen in Tasker om het voor elkaar te krijgen en dat bepaalde ‘bouwblokken’ er al voor je zijn die je zelf kunt gaan gebruiken.
Als je nog nooit met Tasker hebt gewerkt kan het misschien even lastig zijn en is het vooral veel informatie om te verwerken. Maar, met een beetje doorzettingsvermogen, geduld en vrije tijd kom je een heel eind.
Wat heb je ervoor nodig?
* De HomeWizard met één of meer KlikAanKlikUit-schakelaars
* Tasker
* De plugin AutoVoice voor Tasker
* Enige kennis van Tasker, alhoewel ik het zo goed mogelijk zal proberen uit te leggen
* Vrije tijd en wat geduld
Ik zal eerst laten zien hoe het in de praktijk werkt en dan stap voor stap uitleggen hoe je dit zelf ook kunt maken.
Stap 1: Configuratie van de HomeWizard
Om met de HomeWizard te kunnen communiceren heb je het IP-adres en port van de HomeWizard nodig. Standaard krijgt de HomeWizard een dynamisch IP-adres van je router, maar het beste is om de HomeWizard een vast IP-adres te geven. Dit kan ingesteld worden met de HomeWizard Configuration Tool die je hier kunt downloaden. De werkwijze van de tool spreekt voor zich en anders kun je op de site van HomeWizard daar meer informatie over vinden. Daarnaast heb je het wachtwoord nodig van de HomeWizard, dat je zelf hebt ingesteld.
Verder moeten er natuurlijk al één of meer schakelaars zijn ingesteld in de HomeWizard die je wilt gaan bedienen via voice commands.
Stap 2: De ID’s van de schakelaars achterhalen
In de app of webinterface van de HomeWizard zie je bij je schakelaars alleen de namen staan die je zelf hebt opgegeven. Om straks vanuit Tasker schakelaars te bedienen heb je de ID-nummers nodig van de schakelaars.
Deze kun je via een URL in je browser opvragen. Deze URL is als volgt opgebouwd: https://ipadres:port/wachtwoord/swlist
Voorbeeld: https://192.168.1.10:80/wachtwoord/swlist
Het resultaat wat je nu terug krijgt in je browser is in JSON. Als je hiermee niet bekend bent is het misschien in eerste instantie wat lastig te lezen. Er zijn verschillende tools op het internet te vinden waarmee je het wat meer leesbaar kunt maken, bijvoorbeeld The JSON Validator.
Hier een voorbeeld van een deel van het resultaat:
{
“status”: “ok”,
“version”: “2.56”,
“request”: {
“route”: “/swlist”
},
“response”: [
{
“id”: 0,
“name”: “Lamp Woonkamer”,
“type”: “switch”,
“status”: “off”,
“favorite”: “no”
},
{
“id”: 1,
“name”: “Lamp Keuken”,
“type”: “switch”,
“status”: “off”,
“favorite”: “no”
},
{
“id”: 2,
“name”: “Lamp Gang”,
“type”: “switch”,
“status”: “off”,
“favorite”: “no”
},
…….
Het gaat nu om de velden ‘id’ die je ziet. Noteer de ID-nummers van de schakelaars die je wil gaan bedienen.
Stap 3: Tasker installeren en het voorbeeld project importeren
Allereerst moet je Tasker en de plugin AutoVoice installeren op je Androidtelefoon of -tablet. Ik heb een voorbeeldproject in Tasker gemaakt wat je kunt importeren. Zodra je dit project hebt geïmporteerd kun je het verder naar eigen wens aanpassen.
Het voorbeeld project kun je hier downloaden:
Volg nu de onderstaande stappen:
1. Plaats het bestand “HW.prj.xml” in de map “Tasker/Projects” op je Androidtelefoon
2. Er worden een aantal geluidsbestanden (.wav-audio bestanden) gebruikt die afgespeeld worden zodra een taak is uitgevoerd. Plaats deze bestanden in de map “Tasker/Sounds” op je Android device.
3. Open Tasker. Als je Tasker nog niet eerder hebt gebruikt ziet het beginscherm er als volgt uit:
4. Ga nu naar de instellingen (menu -> preferences) en zorg dat de instelling ‘Beginner Mode’ is gedeselecteerd:
5. Ga terug naar het hoofdscherm van Tasker, dit ziet er nu iets anders uit, in de statusbalk onderaan het scherm is er een icoontje van een huis bijgekomen:
6. Houdt nu het ‘home’-icoontje links onderin lang indrukt tot er een menu verschijnt en kies dan voor “Import”
7. Selecteer het bestand ‘HW’ (Dit bestand hebben we in stap 1 op je device geplaatst). Het project wordt nu direct geïmporteerd in Tasker:
8. Allereerst moet je nu je IP-adres, port en wachtwoord van de HomeWizard instellen. Ga hiervoor naar het tabblad “Tasks” en klik op de task ‘HW_Init’:
9. Klik op regel 3 en vul de volledige URL in als volgt: https://ipadres:port/wachtwoord
10. Klik bovenin het scherm twee keer op ‘<‘ om terug te gaan, de instellingen zijn nu opgeslagen.
Stap 4: Instellen van voice commands en schakelaars
Nu is het tijd om je eigen voice commando’s in te stellen, en de schakelaars die je wil bedienen er aan te koppelen.
1. Selecteer het tabblad ‘Profiles’ in hoofdscherm van Tasker.
2. In dit voorbeeld heb ik drie profielen gemaakt. Het profiel ‘AutoVoice Failed’ wordt uitgevoerd zodra een voice commando niet herkend is, en speelt een geluidje af.
3. Selecteer het profiel ‘AutoVoice Lampen’.
4. Hier zie je nu aan de linkerkant waar het profiel door geactiveerd wordt. In dit geval een state ‘AutoVoice Recognized’, wat wil zeggen dat er een voice commando is herkend.
Als je hier op klikt, zie je dat dit profiel alleen geactiveerd wordt als het commando ‘Lampen’ is herkend:
5. Door middel van het potloodje kun je dit eventueel aanpassen. Klik op het potloodje en selecteer ‘Command Filter’. Hier kun je aanpassen welk woord herkend moet worden:
6. Ga nu terug naar het profiel. Aan de rechterkant staan de acties die uitgevoerd moeten worden. Hier kun je de schakelaars in je HomeWizard gaan koppelen aan uitgesproken commando’s zoals bv ‘Lampen Woonkamer’ of ‘Lampen Keuken’.
Klik op de acties, je komt dan in het volgende scherm terecht:
7. Regel 4 t/m 7 zijn hier van belang. Zoals je ziet kun je hier de ID’s van je lampen instellen en het voice commando er aan koppelen. In het regel 4 wordt dus schakelaar 4 bediend zodra het tweede woord wat is herkend ‘keuken’ is.
Dit profiel kun je nu verder gaan aanpassen naar je eigen behoefte.
Stap 5: Voice recognition activeren
Tasker is nu helemaal geconfigureerd en nu wordt het tijd voor het onderdeel waar het allemaal om draait: Babbelen tegen je telefoon, en een lamp aan- of uitschakelen.
Er zijn verschillende manieren om de voice recognition te activeren. De makkelijkste manier is om het te activeren via een task in Tasker, en deze op je homescreen te plaatsen.
In het voorbeeld project is hiervoor al een task opgenomen die ‘Activate AutoVoice’ heet.
Het kan per home launcher die je gebruikt (bijvoorbeeld stock Android of Nova Launcher) verschillen hoe dit het makkelijkste werkt, maar het kan in ieder geval altijd via de widget ‘Task’ of ‘Task Shortcut’ van Tasker. Hiermee maak je een shortcut (snelkoppeling) op je homescreen aan naar een task in Tasker.
Plaatst de widget op je homescreen, en selecteer de task ‘Activate AutoVoice’.
Zodra je nu deze snelkoppeling opent, verschijnt het onderstaande scherm, en kun je voice commando inspreken:
Nadat je een voice commando hebt ingesproken krijg je een pop-upschermpje te zien met mogelijke woorden die herkend zijn, en zal de bijbehorende actie worden uitgevoerd:
En nu?
Voor dit artikel gaat het te ver om alle commando’s en taken in het voorbeeld project te bespreken en uit te leggen. Alle bouwstenen zijn ieder geval aanwezig zodat je er zelf verder mee aan de slag kunt gaan.
Voor mij is dit de eerste tutorial die ik gemaakt hebt, dus ik hoop dat het één en ander duidelijk is en het jou de mogelijkheid geeft om er zelf verder mee te knutselen.
Dit artikel is geschreven door Gerhard ter Mors.
Reacties
Inloggen of registreren
om een reactie achter te laten
Vergeten te zeggen gebruik IFTTT met google assistant en om te sturen Webhooks
Dan kun je met google home je Homewizard met spraak bedienen.
Voor de liefhebbers van de domotica met de raspberry
Schakelaar aan
https://gebruiksnaam:Pasw@extip:poort/json.htm?type=command¶m=switchlight&idx=1&switchcmd=On
Idx is id van de klikaanklikuit bijv
Tchcmd=off om de klikaan uit te schakelen
Hallo Gerhard.
Heel duidelijke beschrijving.
Ik heb het geheel bijna op de rails.
Bij mij is het probleem dat, nadat ik wat ingesproken heb, netjes de zwarte pop-up komt met wat het waarschijnlijk ingesproken commando is, maar daarna gebeurd er niks.
Ik heb van alles geprobeerd.
In jouw voorbeeld heb ik netjes alles aangepast maar bij mij is er geen lamp die aan gaat (of uit). Wat doe ik fout ????
Er is wel een iOS app die dit wat eenvoudiger doet:
Bedankt! Fijn om via ‘ok google’ mijn commando’s te geven. Nu nog een telefoon die in stand by reageert… Helaas voor mij dus nog niet geheel handsfree, tenzij mijn telefoon wordt opgeladen, of als ik boven mijn telefoon wuif.
Enig probleem heb ik ondervonden met het lampen profiel…. Ik heb Matches veranderd in Equals en toen werkte het wel (?).
In het rolluikprofiel heb ik de taak meerdere malen onder elkaar herhaald en zodoende gaat alle huiskamer verlichting met 1 commando uit. Het kan makkelijker met de juiste syntax maar ik ben tevreden voor nu.
Bedankt, zonder jouw Tutorial was ik nog wel even bezig geweest!
Gerhard, bedankt voor je goede tutorial!
Ik heb het een en ander al uitgebreid en aangepast.
Momenteel heb ik de volgende functies:
-lampen
-scene’s
-rolluiken (ASUN)
-verwarming icm. de heatlink
-Temperatuur sensoren
-Wattcher energie
Ik heb zelf de geluidjes vervangen door spraak, dus dat Android terug praat met bijv. de tekst: “Rolluiken gaan omlaag”. Ook krijg je dan een pop-up met de tekst zichtbaar.
Super goede tutorial, alleen niet duidelijk of en hoe scenes kunnen geschakeld worden. Alle lampen afzonderlijk aan-/uitpraten gaat al snel vervelen…
In scherm van telefoon staat: TASKER NO ACTIVE PROFILES hoe kan ik het wel actief maken?
kan tasker ook aangespoken worden via google search, door middel van ‘ok google’ dus. Heb een android stick in mn tv zitten, die ik altijd kan laten luisteren. Zou daarvoor wel ideaal zijn… (enige nadeel is dat ik dan wel engelstalige commando’s moet geven)
Leuk thema, welke is het?
IN het verlengde van bovenstaande:
Als ik de get-status naar de HW stuur via een browser, krijg ik keurig de juiste JSON reply terug.
Ik begin nu te vermoeden dat Tasker dit JSON resultaat probeert op te slaan in HW.txt (eerste foutmelding) maar dat dit op een of andere manier niet lukt. Ik zie dit bestand inderdaad niet op genoemde locatie staan op mijn S4.
Suggesties ?
Het 5 seconden open blijven staan met de spraakopdracht komt door de laatste update van Google Search.
Verwijder de update van 14 maart en het werkt weer normaal.
Leuk ! Met dank voor je inzet !
Vandaag gelijk geprobeerd om dit bij mij werkend te krijgen. Helaas krijg ik 2 foutmeldingen.
Ik ga er van uit dat ik iets over het hoofd zie 😉
Mijn voicecommand wordt wel netjes herkend (keurig lijstje met de tekst).
Daarna krijg ik de volgende foutmelding:
Error: Delete file: File not Found:/storage/emulated/0/HW.txt
dan na een paar seconden een tweede foutmelding:
Input/Output error for http://192.168.1.201:80/Mijnwachtwoord/get-status:java.net:SocketTimeOutException.
Het IP van mijn HW klopt echt en het wachtwoord uiteraard ook.
Enig idee ?
Thanks
Peter
Compliment, zo’n uitleg kom je maar zelden tegen.
Dit is ook te doen in combinatie met pilight en de Tasker plugin: https://play.google.com/store/apps/details?id=com.frostedkiwi.pilightplugin&hl=nl
Goed artikel!
Super bedankt voor dit artiekel
kunnen we een keer afspreken!
Heb geen homewizard maar neem aan dat het met elk systeem dat Json verstaat zoals domoticz ook zal werken.
Inderdaad! Dat wil ik ook! Komend weekend aan de slag ermee… Thx .
Voorlopig voor mezelf een flinke stap te ver. Maar zeer uitgebreid beschreven en uitgelegd.
Mooi artikel.
Super cool!