=====ITTIoT raamistik===== * Lähtekood: [[http://gitlab.robolabor.ee/heikopikner/ittiot|Git]] * PlatformIO veebileht: [[https://platformio.org/lib/show/1681/ITTIoT|PlatformIO]] ITTIoT on täielikult varustatud IoT raamistik ESP8266 platvormile. IoT raamistik on mõeldud oluliselt lihtsustama IoT rakenduste loomist ESP8266 platvormil. Andmevahetuseks serveriga kasutatakse IoT valdkonnas laialdaselt kasutatavat MQTT protokolli ([[https://en.wikipedia.org/wiki/MQTT|Wiki]]). IoT raamistik sisaldab: * WiFi võrgu / MQTT serveri ühenduse haldamine * sõnumite saatmine / vastuvõtmine serverist * seadistuste salvestamine / muutmine seadmes * Kaugseadme haldus ====Koodi struktuur==== Järgmine pilt näitab tüüpilist koodi struktuuri ITTIoT raamistikuga programmi loomisel. Programm on üles ehitatud järgmiselt: * Lisamised ja globaalsed muutujad - siia lisatakse kõik vajalikud teegid ja luuakse globaalsed muutujad. * iot_received() - see tagasihelistamisfunktsioon kutsutakse välja, kui moodul saab sõnumi tellitud teemalt. Sõnumid kõigilt teemadelt kutsuvad sama funktsiooni, seega on vaja teema põhjal vahet teha. * iot_connected() - see tagasihelistamisfunktsioon kutsutakse välja, kui moodul esmakordselt ühendub vahendajaga. Siin peaksite tellima teemad. * Setup - tavaline Arduino seadistus. Kuid kindlasti lisage kõne iot.setup() meetodile. * Peamine tsükkel - tavaline Arduino peamine tsükkel. Kindlasti lisage iot.handle() iga iteratsiooni juurde. {{:en:iot:examples:setup:ittiot_framework.png|}} ====ITTIoT raamistiku meetodite loetelu==== ^ Meetod ^ Kirjeldus | | iot.setup() | Seadistab ITTIoT raamistiku ja ühendub vahendajaga. | | iot.setConfig(String parameter, String value) | Seadistab valitud konfiguratsiooniparameetri. | | iot.setBootPin(uint8_t pin) | Määrab pinni ESP8266 taaskäivitamiseks. | | iot.printConfig() | Prindib mooduli konfiguratsiooni serialile. | | iot.restart(uint8_t bootMode = normalMode) | Võimaldab seadme taaskäivitamist kasutajaprogrammist. iot.restart() käivitab seadme normaalses režiimis, iot.restart(ITT::configMode) käivitab seadme konfiguratsioonirežiimis. | | iot.handle() | Teostab raamistiku tööks vajalikud taustatoimingud. Näiteks kontrollib, kas on saabunud uusi sõnumeid ja vajadusel kutsub välja tagasihelistamismeetodid. Seda meetodit tuleb peamise tsükli käigus perioodiliselt kutsuda. | | iot_connected() | Kasutaja määratud tagasihelistamisfunktsioon. See meetod kutsutakse välja, kui moodul suudab vahendajaga ühenduda. Peamiselt kasutatakse teemade tellimiseks. | | iot.subscribe(String topic) | Tellib teema, mis on sisestatud operandina. Näiteks iot.subscribe("livingroom/temp") tellib teema "livingroom/temp". | | iot_received(String topic, String msg) | Kasutaja määratud tagasihelistamismeetod, mis kutsutakse välja, kui tellitud teemadelt saabuvad sõnumid. Kasutaja saab seejärel oma koodis kasutada teemat ja sõnumit. | | iot.publishMsg(String topic, String msg) | Moodul avaldab sõnumi teemal "controllername/topic". Pange tähele, et meetod lisab automaatselt mooduli nime sisestatud teema taha. Näiteks, kui avaldada teemal "temp", siis tegelikult avaldatakse teemal "controllername/temp". Kui see ei ole soovitav, siis kasutage meetodit iot.publishMsgTo(). | | iot.publishMsgTo(String topic, String msg, bool retain) | See meetod töötab sarnaselt eelmisega, kuid ei lisa mooduli nime teema juurde. See tähendab, et sõnumid, mis avaldatakse teemal "topic", avaldatakse tõepoolest teemal "topic". Selle meetodi abil saate valida ka, kas soovite, et vahendaja säilitaks viimati saadud sõnumi. Kui te ei ole sellest huvitatud, jätke see valeks. | ====ITTIoT raamistiku konfiguratsiooniparameetrite loetelu==== ^ Konfiguratsiooniparameeter ^ Selgitus | | dname | Seadme nimi | | mpass | Vahendaja parool | | mport | Vahendaja port | | msrv | Vahendaja aadress | | mssl | SSL/TLS lubamine | | muser | Vahendaja kasutajanimi | | wname | WiFi nimi | | wpass | WiFi parool | ====MQTT vaike-teemad==== IoT raamistik määratleb mõned vaike-teemad, mida kasutatakse seadme jälgimiseks ja kaugjuhtimiseks. Vajadusel saab kasutaja jaoks luua teemasid. Teema nime loomiseks kasutatakse seadme nime. Seadme nimi on kasutaja määratud unikaalne nimi, mis on teemade prefiksiks. Näiteks, kui seadme nimi on "ESP30", siis seadme teemad oleksid "ESP30/log", "ESP30/cfg" ja nii edasi. ^ Teema ^ Suund ^ Kirjeldus | | /log | väljaminev | Üldised sõnumid IoT raamistikust, kasutaja sõnumid iot.log() funktsiooni kaudu | | /link | väljaminev | Seadme olek: „Online”/”Offline” | | /stat | väljaminev | Automaatne statistika saatmine kord minutis | | /cfg | sisenev | Teema seadme seadistamiseks / püsivara uuendamiseks MQTT serveri kaudu. | Statistika seadme ja ühenduse kohta saadetakse perioodiliselt (vaikimisi kord minutis) teemale /stat. Viimati saadetud sõnum salvestatakse serveris (säilitatud sõnum). Viimase olekusõnumi salvestamine võimaldab hinnata seadme olekut (vaba mälu hulk, signaali tugevus). Olekusõnum sisaldab järgmisi andmeid, stringina ja tabidega eraldatuna: * tööaeg sekundites * WiFi signaali tugevus (dBm) * soovitud sõnumite arv saatmiseks * edukalt saadetud sõnumite arv * vaba RAM seadmes (baitides) Näide: „2237734 -62 1409765 1409431 19272”