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 alles-in-één laserprinters voor een mooie prijs
© Tim Allen
Huis

Waar voor je geld: 5 alles-in-één laserprinters voor een mooie prijs

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. Een all-in-one-printer is een handig apparaat voor het scannen, kopiëren en printen van documenten en foto's. De allerbeste afdrukkwaliteit krijg je met een laserprinter. Wij vonden vijf betaalbare modellen voor je.

Een laserprinter maakt gebruik van toner in plaats van inkt om afdrukken te produceren. Toner is een fijn poeder dat met hoge temperaturen op het papier wordt gesmolten. Dit proces zorgt ervoor dat je met grote toners kunt printen, wat betekent dat je langere tijd kunt blijven afdrukken zonder de toner te hoeven vervangen. Laserprinters zijn vaak snel en efficiënt, waardoor ze uitstekend zijn voor gebruik op kantoor. Maar ook als je thuis veel print, bijvoorbeeld als zzp'er, kan een laserprinter uitkomst bieden.

HP Color Laser 179fnw

De HP Color Laser MFP 179fnw is een van de kleinste kleurenlaserprinters in zijn klasse en is daardoor ideaal voor thuisgebruik en plekken waar niet veel plek voor een printer is. Met functies zoals printen, scannen, kopiëren en zelfs nog faxen biedt deze 4-in-1 printer een hoop veelzijdigheid. De afdruksnelheid bedraagt tot 18 pagina's per minuut in zwart-wit en 4 ppm in kleur, met een resolutie van 600 x 600 dpi.

Dankzij de automatische documentinvoer (ADF) voor 40 pagina's en wifi-verbinding is deze printer gebruiksvriendelijk en multi-inzetbaar. Hoewel de afdruksnelheid lager ligt dan bij sommige concurrenten, is zijn compacte formaat juist een pluspunt.

Brother DCP 1610W

De Brother DCP-1610W is een compacte zwart-wit laserprinter die printen, kopiëren en scannen combineert. Met een afdruksnelheid van 20 pagina's per minuut en een resolutie van 2400 x 600 dpi levert hij haarscherpe resultaten. Dankzij wifi-connectiviteit kunnen meerdere gebruikers eenvoudig draadloos printen.

De papierlade biedt plaats aan 150 vellen en het apparaat is voorzien van anti-jam-technologie om papierstoringen tot een minimum te beperken. In vergelijking met de HP Color Laser MFP 179fnw biedt deze printer geen kleurafdrukken, maar hij is wel een stuk sneller met zijn afdrukken.

HP Laserjet Pro 2Z622

De HP LaserJet Pro 2Z622 is geschikt voor onder meer kantooromgevingen. Met afdruksnelheden tot 42 pagina's per minuut en functies zoals dubbelzijdig printen, scannen, kopiëren en faxen is dit een lekker veelzijdige 4-in-1-laserprinter. Het apparaat ondersteunt zowel bekabelde als draadloze netwerken en biedt geavanceerde beveiligingsfuncties.

Canon i-SENSYS MF272wd

De Canon i-SENSYS MF272dw is een monochrome laserprinter en drukt af met en snelheid van 29 pagina's per minuut. Met een resolutie van 2400 x 600 dpi levert hij snelle en scherpe resultaten. Dankzij automatische dubbelzijdige afdrukken, wifi- en ethernetverbinding is hij veelzijdig inzetbaar.

In vergelijking met de Brother DCP-1610W levert deze Canon i-SENSYS MF272dw snellere prestaties en meer connectiviteitsopties, hoewel hij geen kleurendruk ondersteunt; dan moet je toch echt bij de HP Color Laser MFP 179fnw zijn.

Xerox B225 A4

De Xerox B225 is een zwart-wit all-in-one-laserprinter die printen, kopiëren en scannen combineert. Met een afdruksnelheid van maar liefst 34 pagina's per minuut en een eerste afdruktijd van slechts 6,4 seconden is hij goed in te zetten als je veel en vaak print. De printer beschikt over automatische dubbelzijdige afdrukken, een papierlade voor 250 vellen en kan via wifi of een vaste netwerkverbinding met je thuisnetwerk worden verbonden.

▼ Volgende artikel
Garmin kondigt Instinct 3 - Tactical Edition aan
Gezond leven

Garmin kondigt Instinct 3 - Tactical Edition aan

Garmin heeft de Instinct 3 - Tactical Edition aangekondigd, een nieuwe serie tactische smartwatches die verkrijgbaar zijn met een AMOLED-scherm of een display op zonne-energie.

De smartwatches zijn volgens Garmin ontworpen voor gebruik in uitdagende omgevingen en voorzien van een met metaal versterkte rand voor extra duurzaamheid, een rucking-activiteit voor training en ingebouwde LED-verlichting op zowel de 45mm als 50mm modellen. De batterijduur van het AMOLED-model kan oplopen tot 24 dagen in smartwatchmodus, terwijl de modellen op zonne-energie onder ideale omstandigheden onbeperkt kunnen functioneren.

Robuust ontwerp

De Instinct 3 - Tactical Edition is voorzien van een stevige constructie met een metalen versterkte rand, een behuizing van met vezels versterkt polymeer en een krasbestendig scherm. De smartwatches zijn gebouwd volgens de MIL-STD 810 norm voor thermische en schokbestendigheid en zijn waterdicht tot 100 meter. De ingebouwde zaklamp biedt variabele lichtsterktes, een groene modus om het natuurlijke nachtzicht te behouden en een stroboscoopmodus voor locatiebepaling in moeilijk terrein. Voor nachtelijk gebruik is er een NVG-modus (Night Vision Goggle) die het scherm dimt tot een niveau dat functioneel blijft voor de gebruiker maar vrijwel onzichtbaar is voor anderen.

Uitgebreide functionaliteit

De Instinct 3 - Tactical Edition beschikt over diverse speciale functies, waaronder rucking-activiteit waarmee gebruikers het gewicht van hun bepakking kunnen invoeren voor beter inzicht in hun fysieke inspanning. Deze functie kan ook worden gebruikt bij activiteiten zoals trailrunning, wandelen en hiken. Alle modellen bevatten de Applied Ballistics solver en zijn compatibel met de Applied Ballistics Quantum app.

De smartwatches zijn verkrijgbaar in twee formaten: 45mm of 50mm met display op zonne-energie, en een 50mm-variant met AMOLED-scherm. De zonne-efficiëntie is verbeterd met een grotere, efficiëntere zonnelens. Vergeleken met het vorige model heeft het nieuwe 50mm model op zonne-energie een vijf keer langere batterijduur in GPS-modus bij opladen via zonlicht.

De smartwatch biedt multi-band GPS met SatIQ technologie voor nauwkeurige positiebepaling met geoptimaliseerde batterijduur. Voor gezondheidsmonitoring houdt de Instinct 3 stappen, hartslag, slaap, zuurstofsaturatie via de pols, hartslagvariabiliteit en meer bij.

Gebruikers ontvangen e-mails, sms'jes en meldingen direct op het horloge wanneer dit is gekoppeld met een compatibele Apple of Android smartphone.

Navigatie en veiligheid

Gebruikers kunnen navigeren met een 3-assig kompas, barometrische hoogtemeter en multi-band GPS. De Instinct 3 kan worden gekoppeld met de Garmin Explore App voor gedetailleerde kaarten, waypoints en routes.

Voor gebruik op gevoelige locaties biedt de Stealth Mode de mogelijkheid om draadloze communicatie uit te schakelen terwijl het horloge nog steeds activiteitsgegevens verzamelt zonder locatiegegevens op te slaan. De Kill Switch kan alle gebruikersgeheugen wissen als de veiligheid in het geding komt. Andere functies zijn weergave van twee posities tegelijkertijd op één scherm, Jumpmaster en geprojecteerde waypoints.

Trainingsfuncties

De Instinct 3 - Tactical Edition bevat sportapps voor rucken, wandelen, hardlopen, klimmen, jagen, skiën en meer. De TracBack-functie helpt bij het uitstippelen van een route terug naar het beginpunt. Naast buitensportapps bevat de smartwatch ook apps voor HIIT, cardio, hardlopen op binnen- en buitenbanen, basketbal en andere activiteiten.

Gebruikers kunnen trainingsplannen volgen met Garmin Coach voor hardlopen en fietsen, of workouts maken uit meer dan 1.600 oefeningen in de Garmin Connect app. De smartwatch volgt ook intensiteitsminuten, VO2 max en hersteltijd.

Veiligheidsfuncties zoals incidentdetectie en Assistance kunnen een bericht met de GPS-locatie van de gebruiker naar contactpersonen sturen in noodsituaties, wanneer het horloge gekoppeld is met een smartphone.

Beschikbaarheid en prijzen

Het Instinct 3 - Tactical Edition AMOLED-model is vanaf 30 april te bestellen op Garmin.com voor een adviesprijs van 599,99 euro. De modellen op zonne-energie beginnen bij een adviesprijs van 499,99 euro.

Bekijk andere Garmin-producten op Kieskeurig.nl: