IoT-enheter med automatisk oppdatering

IoT-enheter med automatisk oppdatering

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.

Dingsene

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.

Dingsene rapporterer tilbake om hva de driver med hele tiden. Målinger, programvareversjon, tidsforbruk og mye annet.

Datarapportering Dingsene rapporterer tilbake om hva de driver med hele tiden. Målinger, programvareversjon, tidsforbruk og mye annet.

Programvaren til dingsene

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.

Serveren

Jeg har også utviklet programvaren for styring av IoT-dingsene. Ja, linken er riktig. Det er Simple-blog programvaren min som styrer dette.

Her vises alle egenskapene til hver og en av dingsene.

IoT-dingsene Her vises alle egenskapene til hver og en av dingsene.

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.

Grafene, hva med grafene?

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.

Her er grafene jeg har på bloggen min. Foreløpig er det kun for meg selv.

Simple-graphs Her er grafene jeg har på bloggen min. Foreløpig er det kun for meg selv.

Her er Kibana-grafene mine. De brukes kun til utvikling og feilsøking.

Kibana Her er Kibana-grafene mine. De brukes kun til utvikling og feilsøking.

Nyttige linker