Projekt 1 – NIBE
Så var det dags för det första projektet i mitt försök att släppa 6 projekt på 6 månader. Eller i detta fallet så är det tekniskt sett inte mindre än två stycken projekt.
NIBE värmepump
Javisst – så kul kan man ha det – värmepumpar. Efter mycket om och men fick jag tidigare i år min värmepump från NIBE (en NIBE F730 för den som undrar) uppkopplad till internet. Lyckan blev stor när jag insåg att det dessutom fanns ett öppet API (api.nibeuplink.com) där vem som helst kan registrera sina egna applikationer (något som alla företag med IoT-produkter bör erbjuda).
Jag som älskar att föra och logga statistik började med gång mecka runt för att se vad jag kunde bygga. Snabbt bestämde jag mig för att hämta ut de fyra för mig viktigaste värdena: innetemperatur, utetemperatur, vattentemperatur samt fläkthastighet och presentera detta på ett överskådligt vis.
Just inne- och utetemperatur är extra smidigt då jag har kikat på diverse andra IoT-lösningar för att logga just detta – men om värmepannan redan rapporterar dessa via sina egna sensorer så spar jag även ett par slantar på annan utrustning.
olssonm/oauth2-nibe
Första hindret var deras OAuth2-flöde. Jag gillar generellt upplägget med OAuth, men det blir ofta ganska mycket merarbete om man bara vill bygga en enkel applikation för att hämta data (pluspäng för dem som erbjuder personal access tokens för den typen av flöden – något som NIBE alltså dessvärre inte har.)
Jag valde att förlita mig på PHP League's thephpleague/oauth2-client
och byggde en egen provider. Finns nu att hämta via composer (paketet finns på GitHub) om man vill utveckla sig egna applikation med NIBE-integrering helt från scratch:
1composer require olssonm/oauth2-nibe
1composer require olssonm/oauth2-nibe
olssonm/nibe-app
För den som inte vill utveckla en egen app men som vill logga data från ens värmepump på egen hand kan istället använda sig av olssonm/nibe-app. Den bör gå att drifta på i princip vilken VPS eller webbhotell som helst, eller för all del t.ex. på en Raspberry Pi.
Applikationen hanterar då hela autentiseringsflödet och datainhämtningen automatiskt efter lite enklare uppsättning.
Medan jag tidigare har släppt otaliga paket och bibliotek är detta nog det första kompletta Laravel-applikationen som jag släpper publikt. Just för detta gjorde jag vissa val som jag kanske inte skulle gjort för andra projekt; t.ex. tog jag bort hela pipeline:en för front end (t.ex. Bootstrap laddas in via CDN) – allt för att möjliggöra för fler att komma igång tämligen enkelt.
Med det sagt så är den i första hand byggd för eget bruk med minimalt med tid – men det är såklart fritt fram att montera isär, bygga och ändra efter eget tycke och smak.