- Termostat postavený na platforme Arduino s Ethernetom Wiznet, alebo na ESP32 s PHY Ethernetom LAN8720
- Rozšírený popis k projektu, schéma zapojenia, dokumentácia: https://martinius96.github.io/termostat-ethernet/
- Arduino funguje v režime HTTP webservera, kde ponúka na HTML stránkach komplexný prehľad aktuálne nameraných a platných údajov
- Umožňuje zmeniť údaje o cieľovej (referenčnej) teplote a hysteréze, ktorá sa používa pre riadenie vykurovania
- Tieto údaje sú zapísané do EEPROM pamäte, ktorá má životnosť až 100-tisíc prepisov
- Webserver je prístupný z domácej LAN siete na statickej, alebo dynamickej IP adrese pridelenej z DHCP servera
- Arduino riadi na základe navolenej hysterézy a cieľovej teploty výstup - relé, ktoré spína signál pre kotol
- Programová logika sa vykonáva nezávisle na webserveri (nevyžaduje sa keep-alive spojenie, alebo pozornosť používateľa)
- Projekt nerieši výkonovú reguláciu kotla!
- Pre meranie teploty Arduino využíva senzor Dallas DS18B20 na OneWire zbernici v parazitnom / normálnom zapojení (použité v schéme zapojenia)
- Arduino na UART pravidelne vypíše pridelenú (respektíve statickú) IP adresu, na ktorú sa môže používateľ pripojiť
- Pri Ethernet module W5200 až W5500 je nutné pripojiť aj vývod D2 Arduina na INT vývod Ethernet modulu okrem SPI vývodov
- Projekt môže fungovať celoročne, aj ako Ethernet teplomer v prípade, že je odpojený výstup ku riadeniu kotla.
Názov súboru | Shield | IPv4 |
---|---|---|
dynamic_W5100.hex | W5100 | priradená cez DHCP (obsahuje i maintain pre predĺženie lease time / vyžiadanie novej IP) |
dynamic_W5500.hex | W5500 | priradená cez DHCP (obsahuje i maintain pre predĺženie lease time / vyžiadanie novej IP) |
static_W5100_1_254.hex | W5100 | 192.168.1.254 |
static_W5100_4_1.hex | W5100 | 192.168.4.1 |
static_W5500_1_254.hex | W5500 | 192.168.1.254 |
static_W5500_4_1.hex | W5500 | 192.168.4.1 |
- avrdude -CC: avrdude.conf -v -patmega328p -carduino -PCOM21 -b115200 -D -Uflash:w:sketch.ino.hex:i
- Serial monitor: 115200 baud/s
- Údaje o hysteréze a referenčnej teplote uložené v EEPROM pamäti permanentne
HTML stránky bežiace na Arduine:
- / - root stránka obsahujúca formulár, aktuálny výpis logického výstupu pre relé, teplotu
- /action.html - spracúvava hodnoty z formulára, zapisuje ich do EEPROM pamäte, presmeruje používateľa späť na root stránku
- /get_data.json - distribuuje dáta o aktuálnej teplote, referenčnej teplote a hysteréze v JSON formáte
Rozšírené informácie k projektu v článku:
- Programové implementácia pre klientov na platforme Arduino, ESP8266, ESP32, ktorí sa dokážu pripojiť k WiFi termostatu
- Dokážu načítať dáta, ktoré termostat distribuuje - hysteréza, cieľová teplota, nameraná teplota na podstránke /get_data.json
- Dáta z JSON formátu klient deserializuje, vyparsuje pre ďalšie použitie, archiváciu, upload do MySQL databázy, cloud
- Možnosť na základe dát riadiť perifériu (solenoid radiátora, ohrev, ventilátor, notifikácie o teplote pre Android, iOS zariadenia)
- Pripájanie JSON klienta sa realizuje každých 15 sekúnd k termostatu cez websocket
- V rozšírenej implementácii JSON klienta o MQTT sa dáta posielajú na dostupný free MQTT Broker - IoT Industries Slovakia
- Dáta sa Publishujú do hlavného topicu termostat, pričom je každá entita rozdelená subtopicom
- Subtopicy sú: hysteresis, actual_temp, target_temp
- JSON klient má k daným subtopicom prihlásený Subscribe prostredníctvom čítania hlavného topicu termostat/#
- Tento MQTT Broker je verejný a tak môžu byť dáta zmenené, prepísané, čítané akýkoľvek používateľom služby
- Ak do svojho mikrokontroléru nahrá firmvér JSON klienta bez zmeny akýkoľvek iný používateľ, bude vám prepisovať dáta v preddefinovanom topicu
- Možno prispôsobiť pre váš MQTT broker a systém inteligentnej domácnosti, kde môžete mať dáta z termostatu - Hassio, Domoticz, MQTT Mosquitto, Loxone
- Pre súkromný MQTT broker je možné využiť aj autentizáciu menom a heslom, viz. dokumentácia: https://pubsubclient.knolleary.net/api
- K dispozícii je aj firmvér pre JSON MQTT klientov s označením MQTTS - využívajú šifrované spojenie cez socket s MQTT brokerom
- Tento typ firmvéru je dostupný iba pre ESP8266 a ESP32. Arduino s Ethernetom nepodporuje šifrovanie