Skapa din första IoT Ethernet-enhet. Del 5: Sakernas Internet, Home Automation (2 / 8 steg)
Steg 2: Programvara översikt - del A
Ingressen
För att framgångsrikt sammanställa detta Källkod behöver du följande extra bibliotek;
PubSubClient.h
- Av: Nick O'Leary
- Syfte: Gör det möjligt för enheten att publicera eller prenumerera MQTT ämnen med en viss mäklare
- Från: https://github.com/knolleary/pubsubclient
DHT.h
- Av: Adafruit
- Syfte: Library for DHT temperatur/hygrometergivare
- Från: https://github.com/adafruit/DHT-sensor-library
Bounce2.h
- Av: Thomas O Fredericks
- Syfte: Input switch de studsa i programvara
- Från: https://github.com/thomasfredericks/Bounce2
LiquidCrystal_I2C_PCF8574.h
- Av: Steve Quinn
- Syfte: Bibliotek för att kontrollera, läsa från och skriva till LCD visas
- Från:
Fullständig information också ges i källkoden nedan.
Du behöver också veta;
- IP-adressen på din MQTT mäklare (i IPv4 format AAA. BBB. CCC. DDD): IP-adress server()
- En gratis IP-adressen för enheten IoT om du inte vill använda den 'USE_DHCP_FOR_IP_ADDR' #define i koden.
Kodöversikt
Vid start ansluter programvaran till Ethernetnätverket med de medskickade anslutningsinformation som ovan.
När du är ansluten till ett LAN publicerar IoT enheten dess detaljer om följande MQTT ämnen;
- /EthernetDevice/SwVerConfirm: Detta innehåller en länkad sträng, kommaavgränsad, bildas av generiska enhetsnamnet, unika MAC-adressen för enheten och namnet på filen Arduino används för att programmera enheten. i detta fall "WIZNet5100,de:ad:be:ef:fe:ed,EthernetTempHumiCD2.ino".
- /EthernetDevice/Temp1Status: Vid första anslutningen till nätverket publicerar detta ämne ett "Connected" meddelande till mäklaren. Därefter är det brukade publicera den lokala temperaturen i grad Celsius korrekt med 2 decimaler. Uppdateringar utfärdas endast om det finns en förändring i temperatur för att förhindra att denna Sakernas Internet "överbelastning" nätverket.
- /EthernetDevice/Humd1Status: Liknande till Temp1Status, men är en representation av de lokala luftfuktigheten skalas i procent.
- /EthernetDevice/HeatInd1Status: Liknar både Temp1Status och Humd1Status, men i detta fall programvaran beräknar de nya värme indexet från temperatur och luftfuktighetsvärdena.
Därefter ansluter sig till följande MQTT ämnen och svarar på dem via en "callback" funktion;
- /EthernetDevice/SwVerCommand: När anmälan har mottagits av detta ämne svarar enheten med en /EthernetDevice/SwVerConfirm publikation. Detta är en sändning svar. dvs. alla enheter kunde svara.
- /EthernetDevice/de: ad: vara: ef: fe: ed / SwVerCommand : när anmälan har mottagits av detta ämne enheten svarar med en /EthernetDevice/SwVerConfirm publikation. Detta är en riktad svar. dvs. endast denna enhet kommer att svara.
- /EthernetDevice/Led1Command: Produktionen ligger när anmälan har mottagits av detta ämne enheten ledde. Nyttolast '1' = Led på nyttolast "0" = Led av. När ett kommando har actioned kommer att enheten svara genom att publicera Led status via /EthernetDevice/Led1Confirm ämnet "På" eller "Off"
- /EthernetDevice/Button1Status : när anmälan av publikation tas emot på detta ämne enheten kommer att svara genom att publicera den aktuella knappen statusen via ett /EthernetDeviceButton1Command ämne "Tryckt" eller "Släppas". På detta sätt kan knappen status kontrolleras vid varje given tidpunkt. Notera även om tillståndet knappen ändras självständigt, via en knapptryckning då enheten automatiskt publicerar ett /EthernetDevice/Button1Command ämne.
- /WiFiDevice/Temp1Status : liknar /EthernetDevice/Temp1Status , men innehåller IoT WiFi fjärrenheten temperatur
- /WiFiDevice/Humd1Status : som ovan i /EthernetDevice/Humd1Status men för luftfuktigheten på remote IoT WiFi-enhet.
När de är färdiga programvara nu droppar in i en loop som övervakar mäklare anslutningar tillsammans med eventuella ändringar i indata knappen status, lokala temepraturer eller fukt nivåer eller nya publikationer av avlägsen temperatur och luftfuktighet. Alla ändringar av temperatur och luftfuktighet både lokala och fjärranslutna visas på LCD-system i realtid.