SLANJE PODATAKA NA THINGSPEAK KORISTEĆI WIFI:BIT I MAKECODE

WiFi:bit-BBC Micro:bit

Pojavom IoT (Internet of Things) uređaja javila se i potreba za uslugama jednostavne pohrane, obrade i razmjene podataka. Jedan od pružatelja takve usluge platforma je ThingSpeak. Ona nam nudi mogućnost stvaranja komunikacijskih kanala u sklopu kojih se mogu slati i preuzimati razni podaci. Također postoji i grafički prikaz tih podataka, koji može biti i javno dostupan te se može uklopiti u vlastita rješenja.
U sklopu besplatnog korištenja ThingSpeaka, broj kanala nije ograničen. U sklopu kanala, uz status i lokaciju, može se definirati do 8 podataka. Vrijednosti su ograničene na najviše 256 znakova. Između slanja podataka treba proći najmanje 15 sekundi. Dnevno se može poslati oko 8200 poruka s podacima, a ukupno se može pohraniti 10 milijuna poruka.

Korištenje ThingSpeaka dosta je jednostavno. Prvo se klasično prijavite na stranicu i potvrdite svoju e-mail adresu. Zatim napravite kanal, date mu ime, opis i odredite koje podatke će sadržavati. Nakon toga pošaljete nekoliko podataka. Ako vas zanima grafički prikaz, uredite ga u skladu s vašim potrebama. Sve poslane podatke mogu čitati drugi uređaji ili ih možete preuzeti za potrebe analize u drugim alatima.

Zadatak: U sklopu ovih uputa složit ćete primjer slanja rezultata bacanja kockice. Ako se micro:bit protrese, ispisat će se rezultat bacanja kockice. Klikom na gumb A, trenutni rezultat će se poslati na ThingSpeak.

 

STVARANJE KANALA NA THINGSPEAKU

Nakon što ste uspješno obavili registraciju, napravit ćete kanal koji ćete koristiti za slanje podataka s micro:bita. U glavnom izborniku kliknete Channels i zatim My Channels. Na stranici kanala kliknete na gumb New Channel:

 

Bit će dovoljno popuniti NameDescription i Field 1:
Kliknite na Save Channel i kanal je napravljen. Otvorit će se stranica kanala. Zasad vas zanima ključ za slanje podataka. Do njega dođete klikom na API Keys. Nalazi se pod nazivom Write API Key. Kopirate ga i sačuvate negdje privremeno:

IZRADA PROGRAMA U MAKECODU

Pokrenete MakeCode i napravite novi projekt s nazivom po vašem izboru. Odete na More… (ikona zupčanika) pa Extensions. Pretražite iot-environment-kit i odaberete istoimenu ekstenziju:

Zanima nas skup naredbi ESP8266_IoT:
On sadrži ove naredbe (fotografija je ispod opisa):
1. Naredba za serijsko povezivanje micro:bita i ESP-a na WiFi:bitu. Budući da WiFi:bit radi na drukčijoj brzini (115200) od navedene (9600), umjesto ove naredbe koristit ćete osnovnu naredbu MakeCoda.
2. Naredba za spajanje micro:bita na WiFi mrežu. Umjesto your ssid ide naziv mreže, a umjesto your key ide lozinka WiFi mreže. Jednom kada se uspješno povežete s mrežom, WiFi:bit će se nadalje, kod paljenja, sam povezivati. To znači da ovu naredbu možete jednom izvršiti i zatim ju izbaciti iz programa.
3. Naredba za povezivanje s ThingSpeakom. Uvijek prethodi naredbi 4).
4. Naredba za unos podataka koji se šalju na ThingSpeak. U ovom slučaju šaljete samo jedan podatak pa treba popuniti samo prvu vrijednost.
5. Naredba za slanje podataka na ThingSpeak. Uvijek dolazi nakon naredbe 4).

Izrada programa dosta je jednostavna. Prvo ćete u on start dijelu programa serijski povezati micro:bit i WiFi:bit:
Ako do sada niste koristili ovu naredbu, ona se nalazi u skupu naredbi Advanced.Serial.
Idući korak napisati je dio programa koji oponaša bacanje kockice i rezultat prikazuje na ekranu micro:bita. Riječ je o klasičnom primjeru rada s micro:bitom:

Budući da spajanje na WiFi mrežu treba napraviti samo jednom, kod prvog korištenja ovog programa, pridružit ćete ga gumbu B. Umjesto naziva i lozinke trebate unijeti svoje podatke:

Preostaje vam unijeti dio programa koji šalje podatke na ThingSpeak. Pridružit ćete ga gumbu A. Sastoji se od 3, ranije opisane, naredbe. U drugoj trebate unijeti, ranije sačuvani, API ključ te fieldu1 pridružiti vrijednost varijable kockica. Budući da slanje podataka traje nekoliko sekundi, na kraju ćete prikazati ikonu kvačice, koja će vam dati do znanja da su podaci poslani:

Ovako sve to skupa izgleda u JavaScript dijelu MakeCoda:

let kockica = 0
 
input.onGesture(Gesture.Shake, function () {
   basic.clearScreen()
   kockica = Math.randomRange(1, 6)
   basic.showNumber(kockica)
})
 
input.onButtonPressed(Button.B, function () {
   ESP8266_IoT.connectwifi("naziv", "lozinka")
})
 
input.onButtonPressed(Button.A, function () {
   ESP8266_IoT.connectthingspeak()
   ESP8266_IoT.tosendtext(
   "8L7CCVB7ENMT5R5S", /* promijenite na svoj API ključ! */
   kockica,
   0,
   0,
   0,
   0,
   0,
   0,
   0
   )
   ESP8266_IoT.senddata()
   basic.showIcon(IconNames.Yes)
})
 
serial.redirect(
SerialPin.P16,
SerialPin.P8,
BaudRate.BaudRate115200
)

Izvršnu .hex datoteku možete pronaći ovdje.

 

PRIKAZ POSLANIH PODATAKA

Nakon nekoliko poslanih podataka, klasični prikaz podataka ThingSpeaka ovako izgleda:

Može se promijeniti vrsta grafikona i dodatno ga opisati naslovom, nazivima podataka i sl. Mogu se dodati i popratni prikazi, poput ispisa zadnje vrijednosti:

Mogućnosti nisu brojne, no poslužit će za jednostavan uvid u podatke. Podaci kanala mogu se izvesti u formatima JSON, XML i CSV i zatim detaljnije prikazati ili obraditi u programima poput Excela. Podacima se također može i izravno pristupati. Excel, recimo, podržava dohvat podataka preko poveznice, također i njihovo osvježavanje. U donjem primjeru, putem poveznice https://api.thingspeak.com/channels/700130/fields/1.csv?api_key=AC6RDIWKNTN2QXPI&results=5, dohvaćeno je zadnjih 5 vrijednosti i zatim su grafički prikazane. (Poveznica je preuzeta i dorađena (results=5) sa stranice s koje ste preuzeli API ključ za pisanje.) Klikom na gumb Refresh All podaci se osvježe i grafički prikaz se ažurira:

Excelovu .xlsx datoteku možete pronaći ovdje. Za one naprednije, pronađite i skup poziva za aplikaciju Postman (ThingSpeak.postman_collection.json).