ID.nl logo
Huis

Mycroft AI skills installeren en zelf programmeren

In een vorige workshop bouwden we onze eigen slimme speaker met behulp van Mycroft AI en een Raspberry Pi 3. In dit tweede artikel kijken we naar het installeren en zelf programmeren van extra Mycroft AI skills.

Lees eerst: Bouw je eigen slimme speaker met Mycroft AI

Voordat we beginnen, gaan we eerst onze locatie instellen. Veel skills zijn daar namelijk op gebaseerd, zoals de juiste tijd en het weerbericht. Je locatie dien je in het configuratiebestand in te stellen. Open dat met het commando:

sudo nano /etc/mycroft/mycroft.conf

Voeg dan aan het begin, vlak na de eerste regel de volgende code toe om je locatie in te stellen, waarbij je uiteraard je eigen locatie en coördinaten invult:

"location": {
"city": {
"code": "Aarschot",
"name": "Aarschot"
"state": {
"name": "Vlaams-Brabant",
"country": {
"code": "BE",
"name": "Belgium"
} } },
"coordinate": {
"latitude": 50.985996,
"longitude": 4.836522
},
"timezone": {
"code": "Europe/Brussels",
"name": "Central European Time",
"dstOffset": 3600000,
"offset": 3600000
} },

Sla dit op met Ctrl+O en sluit de editor nano af met Ctrl+X. Als je Mycroft AI met “Update configuration” vraagt om de configuratie opnieuw in te lezen, krijg je daarna de juiste tijd als je aan Mycroft AI “What time is it?” vraagt.

Weerbericht met OpenWeatherMap

Er zijn nog andere instellingen in het bestand mycroft.conf. Voor het weerbericht maakt Mycroft AI standaard gebruik van een proxyserver van Mycroft, maar die functioneerde bij onze test niet. Je kunt het weerbericht wel werkend krijgen als je in het configuratiebestand een api-sleutel van OpenWeatherMap invoert, waardoor Mycroft AI het weerbericht rechtstreeks van OpenWeatherMap opvraagt via de api. Maak daarom een account aan op OpenWeatherMap en vraag een api-sleutel aan (http://openweathermap.org/appid#get).

Open dan weer het configuratiebestand van Mycroft AI en voeg vlak na de eerste regel het volgende code toe:

WeatherSkill": { "api_key": "APISLEUTEL", "proxy": false, "temperature": "celsius" },

Waar hier APISLEUTEL staat voer je de verkregen api-sleutel in. Bewaar het bestand en sluit nano met Ctrl+O en Ctrl+X. Nadat de configuratie opnieuw geladen is (via de spraakopdracht met “Update configuration”), kun je nu het weerbericht vragen met vragen als “What’s the weather like?” of “When will it rain?”.

Extra skills installeren

De standaardvaardigheden die Mycroft AI heeft, bieden een basiservaring, maar die breid je eenvoudig uit. Op de GitHub-repository van Mycroft staan alle beschikbare skills voor Mycroft AI. Ze zijn niet allemaal getest en sommige zijn nog in ontwikkeling, zodat ze nog niet bruikbaar zijn. Bekijk dus altijd eerst de GitHub-pagina van een skill voor je ze installeert.

Heb je een skill gevonden die je interessant lijkt, dan is de installatie zelf vrij eenvoudig: geef Mycroft AI gewoon de opdracht “Install XXX skill”, waarbij je XXX vervangt door de skill waarin je bent geïnstalleerd. We bekijken hier enkele interessante skills die je zo kunt installeren. Nadien verwijder je een geïnstalleerde skill even eenvoudig met “Uninstall XXX skill”.

De system-skill geeft je Mycroft AI de mogelijkheid om de Pi uit te schakelen of te herstarten. Een eenvoudige opdracht “Reboot” of “Shutdown” werkt dan. Of wat dacht je van de coin-flip-skill. Met de opdracht “Flip a coin” krijg je een rollend muntje te horen en dan “It is heads” of “It is tails” als antwoord.

Er zijn ook heel wat ingewikkeldere skills, en de interessantste integreren je slimme assistent met andere systemen, zoals de domoticasoftware Domoticz, Home Assistant of OpenHAB, de slimme verlichting van Philips Hue, Google Calendar of Gmail etc. Al deze skills zijn wel wat moeilijker te integreren. Zo vereisen ze een uitgebreide configuratie in het configuratiebestand mycroft.conf.

Zelf skills programmeren

Zelf een skill voor Mycroft AI programmeren is niet zo moeilijk, al moet je uiteraard wat Python kennen. Maar door de code van een bestaande skill te bekijken en aan te passen, kom je al een eind. De documentatie van Mycroft AI geeft je ook wat houvast.

We leggen hier uit hoe je een skill maakt waarmee je Mycroft AI kunt vragen hoe lang je Pi al aan staat. Creëer eerst een directorystructuur in /opt/mycroft/skills met het commando:

sudo mkdir -p /opt/mycroft/skills/skill-uptime/{dialog/en-us,vocab/en-us}

Ga dan naar de directory van je skill:

cd /opt/mycroft/skills/skill-uptime

Maak een nieuw dialoogbestand met:

sudo nano dialog/en-us/uptime.dialog

Zet hierin de volgende regels:

My uptime is {{uptime}}. I have been awake for {{uptime}}.

Voor elke zin die je skill zou moeten zeggen, maak je zo’n dialoogbestand. Uit de verschillende regels in dat bestand kiest Mycroft AI dan willekeurig eentje. Het zijn dus eigenlijk zinnen met dezelfde betekenis, om wat meer variatie in het taalgebruik van je spraakopdrachten te brengen. In ons geval hebben we maar één dialoogbestand en heeft de skill twee manieren om de uptime uit te spreken.

Op vergelijkbare manier maak je een vocabulaire bestand voor elk sleutelwoord dat de skill moet herkennen. In zo’n bestand zet je alle synoniemen. Maak voc-het bestand met de opdracht:

sudo nano vocab/en-us/UptimeKeyword.voc

En zet daarin de volgende tekst, bewaar de code (Ctrl+O) en sluit nano daarna af (Ctrl+X):

uptime awake

Python-script

De code zelf komt in een Python-script. Omdat de code iets te lang is om over te tikken, kun je die hier downloaden. Download en open die code in je favoriete editor op de Raspberry Pi. We leggen er hier wat dingen over uit.

©PXimport

We importeren in die code eerst enkele Python-klassen en definiëren dan een klasse UptimeSkill die van MycroftSkill overerft. De kern is de functie initialize, die een uptime_intent aanmaakt op basis van het UptimeKeyword dat in het bestand UptimeKeyword.voc staat. We registreren dat intent in Mycroft AI en definiëren dat we hierbij de functie handle_uptime_intent uitvoeren.

De functie get_uptime leest de uptime van Linux uit en zet die om in een door mensen verstaanbaar formaat. En dan hoeft de functie handle_uptime_intent alleen nog maar de juiste dialoog uit te spreken en als parameter uptime het resultaat van de functie get_uptime door te geven.

Als je dit Python-script af hebt (het bestand heet __init__.py), zet je het in de map /opt/mycroft/skills/skill-uptime. Daarna moet je met het volgende commando de gebruikersrechten correct instellen:

sudo chown -R mycroft:mycroft /opt/mycroft/skills/skill-uptime

En daarna laad je de skills opnieuw met:

sudo systemctl restart mycroft-skills.service

Vanaf nu kun je aan je slimme assistent vragen “What’s your uptime?” of “How long have you been awake?”.

▼ Volgende artikel
Waar voor je geld: 5 draagbare bluetooth-speakers voor minder dan 90 euro
© Olga Demina | stock.adobe.com
Huis

Waar voor je geld: 5 draagbare bluetooth-speakers voor minder dan 90 euro

Bij ID.nl zijn we gek op producten waar je niet de hoofdprijs voor betaalt. Een paar keer per week speuren we daarom binnen een bepaald thema naar zulke deals. Ben je op zoek naar een goede bluetooth-speaker voor mee op vakantie? Wij zochten vijf modellen voor je uit voor minder dan 90 euro.

Een draagbare bluetooth-speaker is superhandig als je graag muziek luistert, waar je ook bent. Je koppelt ze in een paar seconden aan je telefoon of tablet, en je kunt meteen je favoriete playlist afspelen – zonder gedoe met kabels of ingewikkelde installatie. Gewoon aanzetten, verbinden en gaan met die beat. Wij zochten vijf modellen voor buiten voor je op, voor minder dan 90 euro.

JBL FLIP 6

Deze Flip 6 van JBL neem je makkelijk overal mee naartoe, maar produceert ondanks zijn compacte formaat toch flink wat geluid. Hij is klein genoeg om in je tas te gooien, maar als je hem aanzet, komt er verrassend veel bas en helderheid uit. Perfect voor op het strand, in het park of gewoon thuis op de keukentafel. Hij kan tegen een stootje – letterlijk – en is helemaal waterdicht. Dus regen of zwembad? Geen probleem. De batterij gaat zo'n 12 uur mee, dus je komt wel een dagje door. En heb je een vriend die ook een JBL-speaker heeft? Dan kun je ze koppelen voor dubbel zoveel geluid.

💪 Gewicht: 941 gram
🌊 Waterdicht: IP67
🔊 RMS-vermogen: 10 watt
🔋 Speelduur: 12 uur

Marshall Willen

De Marshall Willen valt op: niet alleen qua geluid, maar ook door z'n iconische rock-'n-roll-uiterlijk. Hij past makkelijk in je jaszak en maakt indruk met z'n kraakheldere geluid. Ondanks z'n formaat krijg je verrassend veel punch. De accu gaat gerust een hele dag mee en je kunt 'm gewoon meenemen onder de douche of in de regen – hij is namelijk waterdicht. Wat ook fijn is: hij heeft een handige clip waarmee je 'm ergens aan kunt hangen. Ideaal voor onderweg of op de fiets.

💪 Gewicht: 476 gram
🌊 Waterdicht: IP67
🔊 RMS-vermogen: 10 Watt
🔋 Speelduur: 15 uur

Sony ULT Field 1

De Sony ULT Field 1 is compact, makkelijk te dragen en zit verrassend goed in elkaar. Wat echt opvalt is de bas: lekker diep en vol. En als je dat niet genoeg vindt, zet je gewoon de ULT-knop aan voor nog wat extra power. Hij is water- én stofdicht, dus je hoeft 'm niet te sparen. De batterij houdt het een uur of 12 vol, wat prima is voor een dagje buiten. Gewoon een fijne, robuuste speaker die doet wat je nodig hebt.

💪 Gewicht: 650 gram
🌊 Waterdicht: IP67
🔊 RMS-Vermogen: 30 Watt
🔋 Speelduur: 12 uur

Ultimate Ears WONDERBOOM 4

De WONDERBOOM 4 is klein, rond en vrolijk, maar klinkt alsof-ie twee keer zo groot is. Zet hem in het midden van de kamer of je picknickkleed en iedereen hoort even goed wat er speelt, dankzij 360° geluid – en dat werkt verrassend goed. Hij is waterdicht én kan drijven, dus hij mag mee in bad of op een bootje, zolang je 'm maar niet lang onder water houdt. De batterij gaat ongeveer 14 uur mee, en als je er twee hebt, kun je stereo afspelen. Kortom: klein ding, groot geluid, nul zorgen.

💪 Gewicht: 420 gram
🌊 Waterdicht: IP67
🔊 Vermogen: niet opgegeven
🔋 Speelduur: 14 uur

Denver BTG-615

Denver is misschien nog niet zo bekend als de grote merken, maar deze 15 Watt BTG-615 verrast zeker. Voor een speaker onder de 50 euro krijg je een stevig geluid en een leuke lichtshow dankzij de ingebouwde leds. Perfect voor feestjes in je woonkamer of buiten op het balkon. Hij is spatwaterdicht, dus een beetje regen overleeft-ie wel. De batterij gaat zo'n 5 uur mee - dat is wel een stuk minder dan de andere hier besproken modellen, maar in principe voldoende voor een middagje muziek. En met een handvat bovenop neem je hem zo mee. Geen poespas, gewoon een leuke speaker die doet wat je verwacht.

💪 Gewicht: 2 kg
🌊 Waterdicht: IPX5
🔊 RMS-Vermogen: 15 Watt
🔋 Speelduur: 5 uur

▼ Volgende artikel
SwitchBot introduceert nieuw slim deurslot met gezichtsherkenning en Hub 3
Zekerheid & gemak

SwitchBot introduceert nieuw slim deurslot met gezichtsherkenning en Hub 3

SwitchBot - bekend van onder meer automatische gordijnsystemen - heeft twee nieuwe producten aangekondigd die het smart home-aanbod van het bedrijf verder uitbreiden. Het gaat om de SwitchBot Lock Ultra Vision Combo en de SwitchBot Hub 3.

De SwitchBot Lock Ultra Vision Combo is volgens het bedrijf het eerste slimme deurslot dat achteraf geïnstalleerd kan worden en beschikt over 3D-gezichtsherkenning. Het systeem gebruikt meer dan 30.000 infraroodpunten om een gedetailleerde gezichtskaart te maken voor identificatie. De herkenning gebeurt binnen één seconde en is zeer veilig met een foutpercentage van minder dan 0,0001%. De gezichtskaarten worden lokaal opgeslagen met AES-128 encryptie.

Het deurslot biedt in totaal 18 verschillende manieren om de deur te openen, waaronder gezichtsherkenning, automatische ontgrendeling, NFC-kaarten, vingerafdrukherkenning, app-bediening en spraakcommando's. Het is ontworpen voor vrijwel universele compatibiliteit en past op 99,9% van de bestaande deursloten zonder dat er geboord of verbouwd hoeft te worden.

Met het FastUnlock-systeem zorgt het slot voor een snelle ontgrendeling door een permanente Bluetooth-verbinding met het Keypad Vision te onderhouden. De motor is 122,2% sneller en heeft 10,5% meer kracht dan de vorige versie, terwijl het geluidsniveau laag blijft met slechts 20 dB. Er zijn verschillende modi beschikbaar, waaronder een speciale Nachtmodus die zorgt voor een stillere werking tijdens de nachtelijke uren.

Het slot is voorzien van een driefasig batterijsysteem met een grote oplaadbare hoofdbatterij die tot 9 maanden meegaat, een back-up CR123A-batterij en een elektrolytisch noodontgrendelingssysteem voor situaties waarin de hoofdbatterij leeg is.

Naast de Lock Ultra Vision Combo heeft SwitchBot ook de Hub 3 gepresenteerd. Deze hub dient als centraal besturingspunt voor het slimme huis en ondersteunt Matter. De Hub 3 kan meer dan 100.000 infrarood-apparaten, streamingdiensten en andere SwitchBot-producten integreren. Het apparaat kan tot 30 programmeerbare commando's versturen om automatiseringsscenario's te activeren met Matter-compatibele producten van andere merken die al zijn geïntegreerd in Apple Home.

De Hub 3 heeft een Dial Master draaiknop voor de bediening van volume van verbonden apparaten zoals televisie en hifi, temperatuur en andere functies. Ook biedt het apparaat aanpasbare scèneknoppen en real-time monitoring van binnen- en buitenomgevingsgegevens. Het kan daarnaast aangepaste automatiseringsroutines maken die energiebesparend gedrag ondersteunen.

SwitchBot kondigt aan dat er binnenkort meer nieuwe producten onthuld zullen worden via hun YouTube-kanaal, waaronder de SwitchBot AI Hub, Smart Video Doorbell, K20+ Pro, Garage Door Opener, Plug Mini (EU), Safety Alarm, Smart Radiator Thermostat en een nieuwe lichtserie.

Beschikbaarheid en prijzen

De SwitchBot Lock Ultra Vision Combo is verkrijgbaar via de officiële website van SwitchBot en Amazon voor een adviesprijs van 299,99 euro. Er is ook een Lock Ultra Touch Combo beschikbaar voor een adviesprijs van 249,99 euro. De SwitchBot Hub 3 is vanaf nu verkrijgbaar voor een adviesprijs van 129,99 euro.


Bekijk andere SwitchBot-producten op Kieskeurig.nl: