Jeg holder endel på med små IoT-dingser som jeg plasserer rundt omkring på gården, hytta, hundehusene, blomsterpotter og andre steder. Det er da veldig upraktisk å løpe rundt med macen i hånda for å oppdatere programvaren på disse. Det lar seg rett og slett ikke gjøre. Dingsene blir da utdaterte og tilslutt står de bare der uten å fungere.
Nå har jeg løst dette. Jeg lar dingsene sjekke programvaren sin selv. Dersom det er noen som trenger oppdatering så gjør de det selv uten å plage meg.
Alle IoT-dingsene mine kjører egenutviklet programvare med støtte for veldig mange forskjellige sensorer. Temperatur, luftfuktighet, lufttrykk, jordtemperatur, lysmengde, luftkvalitet, døråpning, bevegelse, gyro, magnetisme og mye annet.
Måten dette fungerer på er at dingsene tar målinger i en gitt periode, tar median av disse verdiene og rapporterer til AWS. Deretter velger jeg om enheten skal gå i dvale for en periode eller om den bare skal fortsette å ta målinger.
Dingsene sjekker jevnlig om de har den siste versjonen av programvaren. Dersom de har den siste så fortsetter de bare lykkelig med jobben sin. Hvis de derimot ikke har den siste programvaren så laster de ned den nyeste versjonen, oppdaterer seg selv og restarter.
Om noe skulle feile i et av stegene, så ruller den bare tilbake og fortsetter som før. Ved neste intervall sjekker den igjen om det finnes ny programvare og forsøker igjen å oppdatere.
Som jeg nevnte over så kjører alle dingsene samme programvare som jeg har laget selv. For å oppdatere versjoner så trenger jeg bare å endre versjonsnummer og bygge en ny binær-fil.
$ pio run -e nodemcuv2
Når den er ferdig så ligger filen klar til bruk på AWS S3.
Jeg har også utviklet programvaren for styring av IoT-dingsene. Ja, linken er riktig. Det er Simple-blog programvaren min som styrer dette.
Dingsene kontakter serveren med sin unike chipId
. Dersom det er første gang serveren har sett disse blir de lagret med informasjon fra dingsen selv. Neste gang får de bare gjeldende versjonsnummer tilbake. På denne måten kan de se om de har siste versjon.
Når dingsen ønsker å oppdatere programvaren så kontakter den serveren med sin unike chipId
og får tilbake siste versjon fra AWS S3.
Alt sammen holder jeg styr på i et eget webgrensesnitt. Nye dingser dukker opp automatisk og jeg kan se alle egenskapene til dingsene.
Joda, selvsagt finnes det fine grafer. Hva skal man ellers med IoT-dingser ;)
Grafene kan ses i Kibana eller her på bloggen min. Grafene på bloggen er laget selv og heter Simple-graphs.
Nå har jeg loddet og knotet lenge nok med kabler og koblinger, så nå har tiden kommet for å lage sitt eget kretskort.
Flere har spurt meg om hvordan de kommer igang med IoT-utvikling, så derfor har jeg laget en liten 101-guide på hvordan du enklest starter opp.