Maak je WordPress plugin beschikbaar via Composer

composer

Composer wordt steeds vaker gebruikt om allerlei PHP-libraries te installeren. Ik maak er in mijn projecten volop gebruik van. In plaats van zelf het wiel opnieuw uit te vinden, zoek je even op Packagist naar een composer-package die de functionaliteit bevat die je nodig hebt voor je project. Als je het gewenste pakket gevonden hebt, is installatie via Composer een eitje.

Inmiddels heb ik ook enkele projecten beschikbaar gesteld aan de open-source community, zoals een ShopConnectors library, een client voor Domoticz, een client voor NanoPool en een SMS-client.

Een tijdje geleden schreef ik ook een WordPress plugin om de statistieken van je ethOS-miner op je site weer te geven. Deze plugin is via WordPress.org te downloaden en daardoor eenvoudige via de WordPress backoffice te zoeken en te installeren. Toch begon ik me af te vragen of het niet mogelijk zou zijn om WordPress plugins via Composer te installeren. Dat bleek inderdaad te kunnen. Het is zelfs erg eenvoudig.

In de map van je plugin hoef je alleen maar een composer.json bestand toe te voegen. In de composer.json moet je aan een paar voorwaarden voldoen. Hieronder een voorbeeld van wat er in de composer.json van mijn ethOS Statistics Plugin for WordPress moest komen:

{
  "name": "rutgerkirkels/ethos-statistics",
  "type": "wordpress-plugin",
  "require": {
    "composer/installers": "v1.0.6"
  }
}

Zoals je hierboven kunt zien, met je aangeven dat het type WordPress-plugin is. Tevens moet composer/installers als requirement toegevoegd worden. Hierdoor wordt de plugin niet standaard in de vendors directory geïnstalleerd zoals dat bij Composer-packages gebruikelijk is, maar in de wp-content/plugins directory van je WordPress installatie.

Het enige dat je nu nog hoeft te doen, is de plugin te activeren in je WordPress backoffice.

Domoticz koppelen met Ikea’s Trädfri

ikea domoticz

In het verleden heb ik mijn Trädfri-systeem van Ikea al eens gekoppeld met HomeBridge, zodat ik de Ikea-lampen kon koppelen met HomeKit en dus kon bedienen via mijn iPhone. Sinds enige tijd biedt Ikea ook HomeKit-ondersteuning waardoor deze koppeling niet meer nodig is.

Wanneer je een AppleTV4 of iPad met minimaal iOS10 hebt, kun je ook zaken automatiseren met scenes en dergelijke. Heb je die ApplTV of iPad niet, dan ben je aangewezen op de zeer beperkte functionaliteit van Trädfri, waarbij je bijvoorbeeld lampen kunt schakelen op basis van tijd.

Natuurlijk wil ik lampen ook kunnen schakelen op basis van sensoren, tijd en combinaties hiervan, maar met de mogelijkheden van Trädfri zelf kom je niet heel ver. In Domoticz is het mogelijk om lampen te schakelen op basis van veel verschillende factoren en daarbij ook condities te hanteren. Bijvoorbeeld: schakel een lamp in wanneer een bewegingssensor geactiveerd wordt ná zonsondergang. Dit soort logica hanteer ik al een tijdje met de Zwave-devices in mijn huis, maar helaas nog niet met de Ikea-verlichting. Het wordt dus tijd om Domoticz nu ook eens te koppelen met Trädfri.

Standaard wordt Tradfri niet ondersteund door Domoticz, maar met de installatie van wat (opensource) software wordt het toch mogelijk. Trädfri ondersteunt namelijk het COAP-protocol, waarmee het basisstation een API biedt weer te tegen kunnen praten.

Om te beginnen hebben we het IP-adres van het Trädfri basisstation nodig. Dit basisstation verkrijgt zijn IP-adres via DHCP. Het is niet mogelijk om een vast IP-adres in te stellen. De eenvoudigste manier om achter het IP-adres van het basisstation te komen is door het MAC-adres af te lezen op de achterzijde van het apparaat. Met dit MAC-adres kun je dan in je router het IP-adres van het basisstation opzoeken. Noteer het IP-adres van het basisstation om het later te gebruiken.

Om de koppeling op te bouwen, moeten we een Python plugin installeren. Op het moment dat ik dit artikel schrijf, worden plugins enkel nog in de beta-versie van Domoticz ondersteund. Dat wil zeggen: Domoticz is er in twee versies: stable en beta.

  1. Open Domoticz in je browser door te surfen naar http://<ip_adres_van_domoticz>:8080
  2. Klik vervolgens op Instellingen en daarna weer op Instellingen. De instellingen-pagina wordt nu geopend.
  3. Kies nu onder Software-updates het distributie-kanaal Bèta.
  4. Klik nu rechtsboven weer op Instellingen en vervolgens op Controleer op updates.

Wanneer Domoticz draait op de laatste Beta-versie, kunnen we de plugin voor Ikea’s Trädfri installeren. Voor de plugin is Python versie 3.5 minimaal vereist. Wanneer je Domoticz hebt draaien op een Raspberry Pi (en dus op het RaspBian OS), heb je waarschijnlijk Python versie 2.x nog draaien en zul je dus je Python moeten upgraden.

Als je Python versie 3.5 of hoger hebt draaien, kun je verder gaan met de volgende stappen:

  1. Log in op je Domoticz-machine via SSH.
  2. Installeer pytradfri.
    Dit is een Python library die wordt gebruikt door de Domoticz-plugin die we zometeen gaan installeren. Je installeert deze library met het volgende commando:

    pip3 install pytradfri
  3. Vervolgens installeer je de Twisted library. De Domoticz-plugin maakt ook hier gebruik van:
    pip3 install twisted
  4. Ga nu naar de plugins-directory van je Domoticz installatie (op mijn Raspberry Pi is dat /home/pi/domoticz/plugins) en clone de Ikea Trädfri plugin via Git:
    cd /home/pi/domoticz/plugins
    git clone https://github.com/moroen/IKEA-Tradfri-plugin.git IKEA-Tradfri
  5. Creeer een identiteit en een sleutel. Hiervoor heb je het IP-adres en de beveiligingssleutel van je basisstation nodig. Het IP-adres heb je eerder al opgezocht en de beveiligingssleutel is te vinden op de achterzijde het basisstation. Het volgende commando genereert een sleutel voor de gebruiker DOMOTICZ. Vervang <BEVEILIGINGSSLEUTEL> en <IP_ADRES_VAN_BASISSTATION> door je eigen varianten.
    coap-client -m post -u "Client_identity" -k "<BEVEILIGINGSSLEUTEL>" -e '{"9090":"DOMOTICZ"}' "coaps://<IP_ADRES_VAN_BASISSTATION>:5684/15011/9063"
  6. Wanneer het commando succesvol wordt uitgevoerd, krijg je het onderstaande terug. In dit voorbeeld is de aangemaakte sleutel: 1.2.0042. Jouw sleutel zal natuurlijk een andere waarde bevatten. Noteer deze waarde. Je kunt hem namelijk maar één keer aanmaken en hij is naderhand niet meer op te roepen.
    {"9091":"PSK","9029":"1.2.0042"}
  7. Nu gaan we de COAP-adapter activeren. Hiervoor gebruiken we systemd.
    cd IKEA_tradfri
    sudo cp ikea-tradfri.service /lib/systemd/system/
    sudo systemctl daemon-reload
    sudo systemctl start ikea-tradfri.service
  8. Om er voor te zorgen dat de ikea-tradfri service automatisch wordt opgestart wanneer je de Domoticz-machine herstart, voer je het volgende commando uit:
    sudo systemctl enable ikea-tradfri.service
  9. Ga nu weer naar Domoticz in je browser en klik op Instellingen en vervolgens op Hardware.
  10. We gaan nu nieuwe hardware toevoegen. Kies bij type de optie IKEA Tradfri. Vul het IP-adres van je basisstation in. Bij identity vul je in: DOMOTICZ. Bij PSK vul je de gegenereerde sleutel in. Klik tot slot op Toevoegen.

    tradfri-domoticz-settings

  11. De gekoppelde lampen van Ikea verschijnen nu bij Instellingen->Apparaten. Je kunt ze nu gebruiken zoals alle andere devices in Domoticz.

ethOS plugin nu ook beschikbaar via WordPress.org

Een tijdje geleden meldde ik dat ik een WordPress plugin had gemaakt waarmee je de statistieken van je ethOS mining rig op je website kon plaatsen. Deze plugin was al te downloaden via GitHub, maar nu is hij ook eenvoudig te installeren via WordPress zelf.

In je WordPress Admin klik je links op ‘Plugins’. Vervolgens klik je bovenin op ‘Nieuwe plugin’. In de zoekbalk typ je nu: ‘ethos statistics’

Na enkele seconden zal WordPress de plugin gevonden hebben. Het enige dat je nu nog hoeft te doen is klikken op ‘Nu installeren’. Als de plugin geïnstalleerd is moet je hem alleen nog even activeren en de plugin is klaar voor gebruik!

Wil je de plugin alleen downloaden? Dat kan ook via WordPress.org.



Mijn eerste WordPress plugin

Jarenlang heb ik het kunnen vermijden: WordPress. Ik vond het veel leuker om maatwerk-oplossingen te maken en WordPress leek me toch meer een speeltuin voor paarse broeken. Toch besloot ik een tijd geleden om mijn website met WordPress te gaan maken, omdat maatwerk veel te veel werk zou zijn om mijn brain farts de wereld in te slingeren.

En zo gebeurde het dat mijn website op WordPress ging draaien. Even een theme uitgezocht, een paar plugins geïnstalleerd en hopla… klaar om te bloggen. Sindsdien heb ik al aardig wat artikeltjes getikt over de meeste uiteenlopende onderwerpen. Onlangs schreef ik nog een artikel over het bouwen van onze mining rig. En toen kwam ik op een idee dat ik niet kon oplossen met een standaard WordPress-plugin: Het tonen van de statistieken van de mining rig op mijn website. De mining rig beschikte over een API, waarmee ik de gegevens over het apparaat en zijn activiteit kon ophalen. Het schrijven van code voor het ophalen van deze gegevens en het verwerken daarvan zijn op zich een koud kunstje, maar met het tonen van de gegevens op een WordPress website had ik nog geen ervaring.

Na wat zoeken op het internet besloot ik een plugin te maken, die eenvoudig in WordPress geïnstalleerd kon worden. Op deze manier zouden anderen er ook nog iets aan hebben. De plugin die ik gebouwd heb, heet ethOS Statistics. Deze plugin biedt de mogelijkheid om verbinding te maken met het statistieken-paneel van een ethOS mining rig en vervolgens gegevens op te halen die middels een widget in WordPress getoond kunnen worden.

De plugin staat inmiddels online en kan gratis gedownload worden. Installatie in WordPress duurt een paar minuten en het instellen ervan is kinderlijk eenvoudig. Op dit moment is de plugin zowel nederlands- als engelstalig te gebruiken. Mocht ik de komende weken nog wat tijd over hebben, dan vertaal ik hem ook nog even in het Duits. Spreek jij een “vreemde” taal en vind je het leuk om mee te helpen vertalen? Laat dan even een commentaar achter onder dit artikel.