Mit der API zum Power User

Die Speisekammer App hat seit kurzem ein sogenanntes REST API (RESTful Application Programming Interface). Dieses Interface ermöglicht es, externen Programmierern, auf gewisse Funktionen der App bzw. eher dahinter liegende Server zuzugreifen. Und genau das habe ich getan!

Mit der API zum Power User
Darstellung des Vorrats auf einem Display - über die API der Speisekammer.App

Vorwort

In diesem Blog-Artikel findet ihr ein Update auf das ich sehr stolz bin!
Raik, einer unserer Nutzer, hat sich unsere nagelneue API geschnappt und direkt eine coole Anwendung damit gebaut.
Da will ich aber nicht vorweg greifen - das erzählt Raik euch am besten selbst im restlichen Blog-Artikel.

Viel Spass beim Lesen!

Matthias


Mein "Power User" Projekt

Hi, mein Name ist Raik und ich möchte euch heute kurz von meinem kleinen „Power User“ Projekt erzählen. Eigentlich bin ich gar kein Power User, sondern möchte meine Speisekammer nur genau wie ihr etwas im Auge behalten, Lebensmittel wälzen und einen möglichst guten Überblick über aktuelle Vorräte haben, um nicht am Sonntag festzustellen, dass der Ketchup alle ist – das wäre schließlich eine Katastrophe! Um dies nun zu erreichen, habe ich mich etwas im App Markt umgesehen und bin auf die Speisekammer App gestoßen.

Erste Tests auch mit Barcodescanner liefen hervorragend, sodass ich mich dazu entschieden habe bei genau dieser App zu bleiben. Besonders der gute Überblick und die Intuitive Bedienung fand ich richtig toll, doch eins hat mich dann doch etwas gestört. Die Eingabe und Ausgabe von Artikeln waren mir zu aufwändig! Beim Eingeben sind mehrere „Clicks“ notwendig um Lagerort, Haltbarkeitsdatum und Anzahl der Artikel hinzuzufügen. Wenn man da mit einer großen Kiste vom Wocheneinkauf kommt, macht das irgendwann keinen Spaß mehr und was kein Spaß macht, dass passiert auch irgendwann nicht mehr.

Ein Traum geht in Erfüllung

Also musste eine Lösung her. Das Ziel war schnell im Blick – Ich möchte alles nur per Barcodescanner bedienen und es muss schnell gehen.

Speisekammer Community
Community der speisekammer.app

Also habe ich mich etwas in der Community umgehört und erfahren, dass die API gerade entwickelt wird. Mein Traum ging in Erfüllung. Ich kann die App mit ihrer guten Übersicht nutzen, überall drauf zugreifen und muss nur noch ein bisschen Code schreiben um meinen Scanner flott zu machen. Naja, so ganz schnell ging es dann doch nicht. Zwar konnte ich sehr schnell erste Erfolge erzielen und mein erstes Produkt nur per Scanner hinzufügen, aber je tiefer man in die Materie einsteigt desto mehr Ideen entwickelt man auch und desto komplexer wird es. Doch eins vorweg – ich denke ich habe es geschafft! Die App fasse ich (fast) nur noch zum Einkaufen an oder wenn ich eben mal nachsehen möchte ob noch genug Ketchup da ist.

Scannen eines größeren Gebindes mit mehreren Artikeln per Barcode.

Bedienung der Speisekammer.App - ohne App

Doch wie läuft das nun genau? Naja, ich habe schon recht viel in einer Software mit dem Namen Node Red gebastelt (ich möchte es nicht programmiert nennen) und konnte mich hier durch die teilweise fertigen Nodes auch rein auf die Funktionalität der „Power User App“ konzentrieren. Der Vollständigkeit halber soll aber erwähnt werden, dass die Node Red Umgebung auf einem Raspberry Pi 4 Minicomputer läuft und nebenbei noch viele andere Sachen steuert. Angezeigt wird die App Webseite auf einem alten Tablet, ein Monitor am PI würde es aber auch tun. Grundsätzlich ist die Installation von Node Red aber auf vielen verschieden Plattformen möglich.

Darstellung der Node Red "Knoten", mit der die Anwendung aufgebaut wurde.

In Node Red selber habe ich dann die verschiedenen Bausteine, sog. Nodes, genutzt, um die Daten aus dem Internet abzurufen. Diese müssen erstmal nur miteinander verbunden werden. Die eigentliche Schwierigkeit ist jedoch den Nodes zu sagen, was sie tun sollen. Quasi die Anfrage an das Internet bzw. den Server der Speisekammer App zu gestalten – genauso wie die API-Definition es vorgibt.

Erweiterungen der Funktionalität

Nach ca. 30h Programmierarbeit bin ich nun erstmal zufrieden. Ich kann Produkte nacheinander einscannen und sie werden in der Speisekammer App erfasst. Wenn ich möchte kann ich zum Produkt auch ein Haltbarkeitsdatum eingeben. Das mache ich aber nicht bei allen Artikeln, da die meisten eh schnell wieder raus gehen. Außerdem war es mir wichtig, dass ich größere Abpackungen – von mir Sets genannt - einscannen kann. Wenn ich also einen 6er Wasser einscanne, wird nicht ein Pack Wasser sondern 6 Einzelflaschen hinzugefügt. Welche Produkte ein Set sind muss man der App natürlich einmal beibringen. Darüber hinaus hatte ich beispielsweise bei Nudeln das Problem, dass ich immer unterschiedliche Marken gekauft habe. Somit konnte ich hierzu keinen Mindestbestand festlegen und hatte auch keinen schönen Überblick. Also habe ich auch noch Gruppen angelegt, welche Produkte zusammenfassen. Leider müssen auch diese einmal manuell angelegt werden, bevor man sie nutzen kann. Auch wenn die Bedienung allein mit dem Barcodescanner funktioniert, gibt es natürlich ein Grafical-User-Interface was auch ein paar Knöpfe bereit hält. Die Soundausgabe war mir auch wichtig, sodass man beim Scannen nicht ständig auf den Bildschirm schauen muss ob alles korrekt ist.

Alles in allem habe ich es durch den Barcodescanner geschafft, die Dinge so einfach zu gestalten, dass es kein großer Aufwand ist die Artikel im System zu pflegen. Jetzt muss ich das System aber noch etwas auf Herz und Nieren testen.

Darstellung der Benutzeroberfläche - hier seht ihr eine Darstellung der gescannten Artikel.

Und wie geht es weiter?

Weitere Ideen habe ich auch schon, aber dazu stehe ich auch mit dem Entwickler der Speisekammer App in engem Kontakt. Schon bei der Nutzung der API hat er mir hier und da geholfen und ist sogar meinen Wünschen bei der ein oder andern Anfrage entgegengekommen. Wir werden sicher noch einige coole Features ins Leben rufen. Bis dahin kann ich euch nur ermutigen auch etwas herum zu basteln. Den Code für die Nodes stelle ich euch gern zur Verfügung nur das Aufsetzen von Node Red und dem Raspberry Pi müsst ihr selbst hinbekommen. Aber dafür gibt es ja gefühlt 1000 Anleitungen im Internet. In diesem Sinne viel Spaß beim Einsatz des API zur Speisekammer App.

Darstellung des Vorrats auf einem eigenen Display.

Eurer Raik