dec 182017
 

Zal ik beginnen met de opmerking dat je prima kunt leven zónder de oplossing waar ik nu over ga schrijven? Goed, dan weet je dat in ieder geval. Los daarvan heb ik best een speciale relatie met onze kerstboom. Die gaat verder terug dan 2015, maar voor deze blogpost hou ik het daar even bij. In dat jaar sloot ik de lampjes van de boom namelijk aan op een ELRO KlikAanKlikUit kloon. Dat is zo’n stopcontact dat je met een afstandsbediening aan/uit kunt schakelen. Maar als je zo’n zender aansluit op een Raspberry Pi, dan kan dat ook vanuit je smartphone. Het resultaat kun je hier zien/lezen.

Vorig jaar besloot ik nog dat het te vroeg was om gebruik te maken van stembesturing, de benodigde hardware was nog niet te koop in Nederland en veel te duur (200 dollar). Dit jaar was dat al heel anders, de hardware kostte minder dan de helft: €39,- voor een Raspberry Pi 3b, een paar euro voor een micro-SD kaartje en goede voeding en €33,- voor de Google AIY Voice Kit. Die laatste was niet heel gemakkelijk te vinden, na de initiële verspreiding via MagPi duurde het een paar maanden voordat er een nieuwe batch gemaakt was voor gewone verkoop. Maar ik had er eentje.

Het in elkaar zetten van de hardware is niet heel moeilijk, een kwestie van het volgen van de stappen op de website (of in het boekje op papier dat er bij zit), je moet bij Google een account hebben, een project aanmaken en een bestand downloaden naar de Raspberry Pi. Gemakkelijk genoeg allemaal.

De Voice Kit werkt op basis van Python en is redelijk hackbaar (dat is ook het idee). Je kunt de broncode van de basisscripts ook hier online vinden. Start je met assistant_library_demo.py dan kun je via “OK, Google” allemaal vragen stellen aan de Google Assistant. Helaas alleen nog in het Engels, en nog niet alle instellingen waren handig voor Nederland. Zo wordt de temperatuur standaard in Fahrenheit uitgedrukt, al kun je ook gewoon in je vraag aangeven dat je het in Celcius wilt weten.

Leuk blijft het gegeven dat de Assistent ook onthoudt wat je vorige vraag was. Dus als je vraag “Who was Napoleon?” en daarna “How long was he?” weet de Assistent bij de tweede vraag dat je het over Napoleon had (1 meter 69).

Wat ingewikkelder werd het toen ik de Voice Kit ook wilde gebruiken voor mijn Kerstboom. Ik had online al een uitbreiding gevonden die een link naar MQTT mogelijk zou moeten maken. En omdat bij mij i huis alle domotica gerelateerde zaken via MQTT lopen, ging ik er vanuit dat dat ook voor een oplossing zou zijn. Dat bleek niet zo te zijn.

Blijkbaar heeft Google inmiddels de code van de Voice Kit flink bijgewerkt. Initieel zat er een action.py bestand bij de Voice Kit waar je ook je eigen commando’s aan toe kon voegen. Bij de nieuwe versie is dat niet meer zo. Op deze pagina kun je een overzicht vinden van de Mods met een indicatie of ze werken bij de oude code of bij de nieuwe code. Voor de meeste Mods, inclusief die voor MQTT, geldt dat ze nog niet zomaar met de nieuwe code werken.

Uiteindelijk kwam ik de tip tegen om in assistant_library_with_local_commands_demo.py te kijken. En daar zit inderdaad code waarmee je eigen commando’s en eigen reacties op die commando’s kunt definiëren. Voor de verbinding met MQTT moest ik wel nog gewoon paho-mqtt installeren zoals beschreven in de Mod: sudo pip install paho-mqtt

Daarnaast moest ik de include import paho.mqtt.publish as publishtoevoegen zodat ik MQTT commando’s kan versturen bij het juiste commando. De tekstherkenning in dit script is nog erg basic. De Assistent reageert nu alleen op heel specifieke commando’s. Dus als “tree off” herkent wordt als “3 off” of “tree of” dan krijg je vriendelijk een bericht dat de Assistent die opdracht niet herkent.
Dat moet beter kunnen natuurlijk, kwestie van nog wat dieper in de code duiken. Idem voor wat betreft het volume van de speaker. Die mag van mij iets omlaag, zeker als je aan het einde van de avond de boom uit wilt zetten en iedereen anders ligt al in bed.

Deel dit bericht:

  3 reacties aan “Praten tegen je Kerstboom met de Google AIY Voice Kit”

Sorry, het reactieformulier is momenteel gesloten.