Octoprint & Pushover

Leestijd: 3 Minuten

Ik gebruik al heel lang Pushover om notificaties te ontvangen op mijn telefoon. Sinds kort gebruik ik Octoprint om 3d objecten te printen op mijn 3d printer.  Octoprint heeft geen ondersteuning voor Pushover en ook geen plugins die dat kunnen. Echter.. Pushover is gemaakt in Python, en laat ik dat nu net een beetje onder de knie te hebben. Dus ik ben aan de slag gegaan.

Proof of concept

Een plugin maken voor een bestaand pakket is toch iets anders dan een Fibonacci in een console tonen. Misschien had ik toch iets teveel hooi op mijn vork genomen. Ik begon met simpel, kan ik een notificatie sturen met Python naar Pushover ? Ja dat kan en dat is eigenlijk wel heel simpel .

Een notificatie kan, nu de rest; Zoeken naar documentatie, kijken hoe andere mensen plugins hebben gemaakt. Al snel werd het duidelijk dat ik geen idee had hoe ik het moest testen. Daarom heb ik een standalone class gemaakt zonder dependencies naar het Octoprint framework. Dat werkte, ik kon mijn token valideren en berichten versturen. Tijd om de dependencies in te bouwen en te kijken of het werkte. En dat deed het.

pushover

Jinja2

Om alles instelbaar te maken maakt Octoprint gebruik van Jinja2. Jinja2 is zoals ze zelf zeggen:

Jinja2 is a modern and designer-friendly templating language for Python

Het is een soort template parser, om je front end en je backend gescheiden te houden.  Ook dat was niet al te moeilijk. Je maakt input velden en de bind deze velden met je settings in je backend door middel van een unieke key. Het Octoprint framework regelt de rest. Ik wou met een API call alle geluiden ophalen van Pushover. zodat ik die kan weergeven in de settings pagina.  Wat mij een tijdje heeft gekost is hoe ik bepaalde waardes meegaf vanuit je backend naar Jinja2.

settings

Github

Alles werkt, tijd om een mijn plugin te distribueren. Om mijn plugin in de repository te krijgen van Octoprint moet je hun project forken om vervolgens je aanpassing te doen, eenmaal klaar kan je je pull request doen. En na goedkeuring staat jouw plugin op plugins.octoprint.org.

Versies

Om gebruik te maken van de Octoprint update manager maak je gebruik van releases in Github. Om dit in te stellen maak je jouw release aan in Github. Je zorgt dat jouw plugin_version in setup.py correspondeert met jouw huidige versie, en wanneer je een nieuwe versie aanmaakt geeft Octoprint je een melding dat je kan updaten.

En nu verder

Uiteindelijk stelt het allemaal niet heel veel voor, zolang  je het maar in kleine stukjes opdeelt. Waar ik veel an heb gehad tijdens het ontwikkelen is de Getting started. Mijn uiteindelijke code kan je vinden hier:  Github – Octoprint Pushover

Ik heb nog een idee voor een nieuwe kleine plugin wat ik kan maken, tot nu toe heb ik genoten van dit kleine maar doch leuke projectje.

Octoprint
Mag de vlag uit