IOT Elkedel p internettet Oversigt MQTT Broker Opbygning
IOT – Elkedel på internettet
Oversigt MQTT Broker
Opbygning af program Temperatur sensor og måling Forbind til internet og upload måling Send sætpunkt og hent sætpunkt Send tænd/sluk kommando til stikkontakt Samle program delene til et komplet program
Temperatur sensor og måling Arduino board måler temperaturen med en DS 18 b 20 probe, som er nedsænket i vandet Vi skal bruge to biblioteker: 1 - Wire bus Dallas Temperature Se hvordan man installer dem: https: //youtu. be/k. Wf. QO 5 FKOYE
Forbind enhederne D 2 = GPIO 4 Vores sensor har ikke fire ledninger!!! Og den signal er på blå eller gul ledning.
Node. MCU - Controller
Arduino program kode //alt hvad der starter med to // streger er bare kommentar og kan undlades i programmet. #include <One. Wire. h> //Dette er et bibliotek, som gør det nemmere for os at #include <Dallas. Temperature. h> //skrive programmet, da den komplicerede kode er i biblioteket #define ONE_WIRE_BUS D 8 //Beskriver hvor sensoren er tilsluttet. Husk at ændre til den rigtige pin One. Wire one. Wire(ONE_WIRE_BUS); //Opretter et objekt som vi kan kommuniker med Dallas. Temperature sensors(&one. Wire); //Fortæller objektet hvad der er for en sensor void setup(void) //Alt hvad der har med opsætning er i dette ”setup afsnit” køre kun { //en gang Serial. begin(9600); //Starter en seriel kommunikation op. Bemærk hastigheden Serial. println("Arduino Digital Temperature"); //Skriver en tekst på seriel porten sensors. begin(); //Starter sensor objektet op } void loop(void) //Alt hvad der er i loop afsnittet gentages hele tiden. { sensors. request. Temperatures(); //sensor objektet beder alle sensorerne som er tilsluttet om deres Serial. print("Temperature is: "); //måling og skriver det til serial porten Serial. println(sensors. get. Temp. CBy. Index(0)); //Vi beder om måling for index 0 - den første sensor. delay(1000); //Vent i 1000 ms før næste gennemkørsel af loop afsnittet }
Forbind til internet og upload måling MQTT Broker: Dweet. io Upload (publish): Målt temperatur Tæller for hver loop gennemløb Vi sender to værdier op til MQTT brokeren Vi skal bruge to biblioteker: Arduino. Json dweet. ESP 8266 Se hvordan man installer dem: https: //youtu. be/Je. NFU 09 e. IDw
Arduino program kode #include "dweet. ESP 8266. h" #define THIG_NAME "Your_thing_name_here" #define WIFISSID "ssid" #define PASSWORD "password" int alive. Loops = 0; dweet client; void setup(){ Serial. begin(9600); delay(10); client. wifi. Connection(WIFISSID, PASSWORD); } void loop(){ alive. Loops = alive. Loops +1; String value 1= String(alive. Loops); client. add("Loops", value 1); //client. add("key 2", value 2); client. send. All(THIG_NAME); } // Her skal du indsætte dit unikker navn // Vores netværks navn ”HUAWEI-6 SS” // Vores netværks kode ”qwer 5678#” // En lille tæller der angiver antal loops // Her oprettes et dweet objekt //Forbinder til netværket //Vi ligger en til tælleren per loop //Ændre tal variablen til en streng //Nøglen er ”Loops” og værdien //er værdien i variablen value 1 tilføjes //Der kan samles op til 5 nøgler med //værdi i samme afsendelse
Se om værdien er kommet igennem Gå ind på: www. dweet. io/play Gå til punktet ”dweets” Indsæt det navn du angav i koden under #define THIG_NAME "Your_thing_name_here" Eks. #define THIG_NAME ”CP 2111_HBP” Eller tast følgende i browser adresse feltet. (husk at skift ”THIG_NAME”) https: //dweet. io: 443/get/latest/dweet/for/CP 2111_HBP
Send sætpunkt (og hent sætpunkt) Vi har pt. ikke noget software som kan sende den ønskede vand temperatur, men vi kan sende et ”dweet” via vores browser. Eks. i adressefeltet skrives og sendes https: //dweet. io/dweet/for/CP 2111_HBP? setpunkt=85 Derved sender vi et setpunkt med værdien 85 eks. 85 grader Celsius Vi skal bare huske at det vi sender er en tekst streng og det er det også når vi henter det ned igen. MQTT Broker
(Send sætpunkt) og hent sætpunkt Når vi skal hente vores nøgle værdier ned fra MQTT brokeren skal vi bruge vores feed navn Og nøglen. MQTT Broker
Arduino program kode #include "dweet. ESP 8266. h" #define THIG_NAME "Your_thing_name_here" #define WIFISSID "ssid" #define PASSWORD "password" dweet client; void setup() { Serial. begin(115200); delay(10); client. wifi. Connection(WIFISSID, PASSWORD); } void loop() { String value = client. get. Dweet(THIG_NAME, "Loops"); Serial. println(value); } //Her beder vi om værdien fra //nøglen Loops
Send tænd/sluk kommando til stikkontakt MQTT Broker Da vi kun har en stikkontakt, skal vi være opmærksom på de andre hold som benytter samme feed og nøgle. Der ligger allerede et program i stikkontakten. Så det skal I ikke tænke på i denne omgang. For sat tænde stikkontakten skal i bruge: http: //dweet. io/dweet/for/CP_SDBG? RELAY=On For at slukke stikkontakten skal i bruge: http: //dweet. io/dweet/for/CP_SDBG? RELAY=Off Things: CP_SDBG Key: RELAY Value: On eller Off Husk at passe på det varme vand!
Samle program delene til et komplet program Nu skal du bruge alt hvad du har lært på de forrige sider, google, dine kammerater og det du ellers har lært om programmering. Der bliver behov for nogle betingelser og der bliver behov for planlægning. En god ide er at starte med at lave et flow diagram inden du starter på programmeringsopgaven.
Flow diagram Når vi laver et flow diagram bruger vi disse symboler Spørgsmål – Beslutning Indlæsning – Udlæsning Handling – Program kode Pilene hjælper os med at beskrive rækkefølgende tingene skal ske i
Et flow diagram Program start counter = 0 Setup Serial begin Loop start Er count er >= 10 nej counter= counter +1 int counter = 0; ja counter = 1 Serial print counter Vent 1 sek. void setup() { Serial. begin(9600); } void loop() { if (counter >= 10){ counter = 1; } else { counter = counter + 1; } Serial. println(counter); delay(1000); }
- Slides: 17