Potrzebowałem umieścić termometr w skrzynce, w której mam sprzęt kontrolujący automatykę, po to aby mierzyć, czy nie jest tam za ciepło. Zdecydowałem się złożyć prosty termometr z wyświetlaczem LCD oraz dodatkowo komunikujący się z OpenHAB
Sprzęt:
- Moduł WiFi oparty o chip ESP8266 (w mojej wersji jest użyty mini NodeMCU D1)
- LCD: 128X64 OLED LCD 0.96″ I2C
- Czujnik temperatury: DS18B20

Chip ESP8266 ma wgrany firmware od NodeMCU w którym dostępny jest kompilator języka LUA, w którym napisałem kod do odczytywania wartości temperatury oraz publikowania jej na wyświetlaczu LCD oraz w OpenHAB za pomocą protokołu MQTT.
W GitHub udostępniam aktualny kod do ściągnięcia.
Funkcjonalność:
- Wartość temperatury jest publikowana do brokera MQTT, skąd serwisy, jak OpenHAB mogą konsumować te wartości.
- Można ustawić częstotliwość odczytywania wartości z czujnika
- Wartości temperatury są publikowane do MQTT brokera tylko, gdy się zmienią
- Można ustawić w jakiej jednostce wartości temperatury ma być prezentowana: Celsjusz, Fahrenheit, Kelwin
- Jest możliwość korygowania wartości temperatury / kalibracja czujnika
Temat MQTT
/sensor/ID/temperature
gdzie ID to identyfikator urządzenia.
Poniżej kilka zdjęć z prototypowania
a tutaj złożona końcowa wersja z mini D1 NodeMCU (ESP8266). Oczywiście nie jest to mega profesjonalne rozwiązanie. Może później zajmę się zrobieniem, czegoś lepszego.

Konfiguracja
Konfigurację wykonuje się w pliku config.lua
| Parametry | Opis |
|---|---|
| ID | ID urządzenia. Wykorzystywane do rozróżniania urządzeń w MQTT Brokerze. Można wpisać dowolną liczbę lub text bez znaków specjalnych i spacji. Wartość domyślna to ID chip’u ESP8266 |
| WIFI_SSID | Nazwa sieci WiFI |
| WIFI_PASSWORD | Hasło do sieci WiFI |
| MQTT_HOST | Adres IP lub nazwa hosta MQTT Brokera |
| MQTT_PORT | Port MQTT brokera; domyślnie 1883 |
| MQTT_USER | Nazwa użytkownika MQTT Brokera; powinno być puste jeśli nie jest wymagana autentykacja w brokerze MQTT |
| MQTT_PASSWORD | Hasło użytkownika MQTT Brokera; powinno być puste jeśli nie jest wymagana autentykacja w brokerze MQTT |
| INTERVAL | Częstotliwość z jaką ma być odczytywana wartość temperatury; domyślnie: 5000m.sek (5sek) |
| TEMP_SENSOR | Numer pinu GPIO, do którego podłączony jest czujnik temperatury. |
| TEMP_CORRECTION | Liczba, o jaką wartość temperatury czujnika powinna zostać skorygowana; domyślnie 0 |
| TEMP_UNIT | Jednostka temperatury. Celsiusz ustaw na C, Kelwin ustaw K, Fahrenheit ustaw F; wartość domyślna Celsiusz |
| SDA | Number pinu GPIO LCD SDA |
| SCL | Number pinu GPIO LCD SCL |
Instalacja:
- Wgranie firmware NodeMCU do ESP8266
- Wykonać niezbędne zmiany konfiguracyjne w pliku config.lua
- Poniższe pliki należy wgrać np za pomocą LuaLoader
- config.lua
- lcd.lua
- setup.lua
- app.lua
- ds18b20.lua
- init.lua
- Skompilować pliki w ESP8266 – za wyjątkiem pliku init.lua
node.compile("config.lua")
node.compile("setup.lua")
node.compile("app.lua")
node.compile("lcd.lua")
node.compile("ds18b20.lua")
file.remove("config.lua")
file.remove("setup.lua")
file.remove("app.lua")
file.remove("lcd.lua")
file.remove("ds18b20.lua")
Przykładowa konfiguracja item w openHAB
Number Czujnik_temp "Temperatura [%s °C]" { mqtt="<[broker:/sensor/12345/temperature:state:default]"}
Poniżej jeszcze termometr w akcji

Jeśli masz pytanie zostaw je tutaj




Najmniejszy bezprzewodowy przełącznik WiFi: Sonoff Mini Extreme R4: $9.90