Spisu treści:
- Krok 1: Części i narzędzia
- Krok 2: Zasada pracy
- Krok 3: Złóż urządzenie
- Krok 4: Prześlij kod
- Krok 5: Skonfiguruj HomeAssistant
- Krok 6: Konfiguracja własnego serwera MQTT [Opcjonalnie]
- Krok 7: OTA (aktualizacje OTA) dla NodeMCU
- Krok 8: Wnioski, przyszła praca
Wideo: Home Assistant Integracja licznika Geigera: 8 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:27
W tym samouczku pokażę, jak dodać niestandardowe czujniki do HASS (asystenta domowego), a dokładniej licznika geigera, ale proces jest podobny również dla innych czujników.
Będziemy używać płytki NodeMCU, licznika Geigera opartego na arduino i już zainstalowanego asystenta domowego.
Integracja będzie się opierać na serwerze MQTT (publicznym lub prywatnym) i zajmę się tym krok po kroku.
Jeśli nie wiesz, co to jest asystent domowy, odwiedź ich stronę https://www.home-assistant.io/. Jest to dobrze znana platforma automatyki domowej, która jest bardzo dobrze utrzymana i wysoce konfigurowalna.
Dowiesz się o:
- zaawansowana konfiguracja Home Assistant
- NodeMCU (płytka rozwojowa) i jak ją zaprogramować za pomocą Arduino IDE
- OTA (aktualizacje bezprzewodowe) za pomocą Arduino IDE dla płyty NodeMCU
- jak podłączyć urządzenie szeregowe do NodeMCU
- ręczna instalacja serwera MQTT na linuksie (opcjonalnie)
Podstawowe założenia:
- masz włączonego Home Assistant
- wiesz trochę o elektronice
- masz zainstalowane Arduino IDE
Krok 1: Części i narzędzia
Części:
1. Płyta NodeMCU
2. chlebek
3. przewody juper męsko-męskie i męsko-żeńskie
3. kabel usb do micro usb;
4. Licznik Geigera arduino z interfejsem szeregowym
(wyszukaj w serwisie Ebay hasło „arduino geiger couter”)
5. materiał radioaktywny (opcjonalnie mała próbka do badań)
Narzędzia:
1. Środowisko Arduino
2. Zainstalowany asystent domowy
Krok 2: Zasada pracy
Naszym celem jest pokazanie na HomeAssisstat (HASS) odczytów z licznika Geigera. Z jednej strony mamy działający serwer HASS gdzieś może to być raspberry pi lub inne urządzenie, az drugiej strony mamy licznik geigera.
Licznik geigera posiada port szeregowy, jednym z rozwiązań będzie bezpośrednie podłączenie portu szeregowego do RaspberryPi na którym działa HASS.
Oto kilka powodów, dla których może to nie być dobry pomysł:
- nie ma tam fizycznej przestrzeni
- mamy jakieś inne urządzenie na porcie szeregowym
- chcemy dołączyć czujnik środowiskowy, który należy umieścić na zewnątrz zamiast licznika Geigera
Ok, więc zbadamy inną możliwość nawiązania połączenia przez WIFI:
HASS obsługuje odczytywanie danych z czujników i wyświetlanie, że za pośrednictwem serwera MQTT ten rodzaj serwera jest połączeniem typu „lite weight” dla małych urządzeń, jedno urządzenie publikuje wiadomość na „temat”, a drugie słucha na ten temat, aby otrzymać wiadomość. HASS więc posłucha, a my potrzebujemy czegoś, co opublikuje przesłanie.
Nasz czujnik wie tylko, aby rozmawiać przez linię szeregową, więc użyjemy płyty, która może odczytać linię szeregową i która może łączyć się przez WIFI i komunikować się z serwerem MQTT. Tania płyta, która to robi, to NodeMCU.
NodeMCU można zaprogramować za pomocą Arduino IDE. Szkic jest dość prosty, wykonuje następujące czynności:
- łączy się z WIFI
- utrzymuje połączenie MQTT z serwerem i ponawia połączenie w przypadku awarii lub rozłączenia
- nasłuchuje szeregowych danych przychodzących jako szereg liczb całkowitych
- gdy liczba całkowita nadejdzie, wysyła ją przez MQTT do określonego tematu
Krok 3: Złóż urządzenie
Będziemy używać płytek stykowych i przewodów, więc jest to dość proste, mamy kilka kroków:
- umieść NodeMCU na płytce prototypowej
- podłączyć rurkę geigera do licznika geigera (uwaga na polaryzację)
- VIN trafia do licznika Geigera +
- GND idzie do licznika Geigera -
- NodeMCU D7 (pin 13) idzie do geiger TX
- NodeMCU D8 (pin 15) idzie do geiger RX
- zasilanie NodeMCU przez micro USB z komputera
Krok 4: Prześlij kod
Użyjemy Arduino IDE i upewnimy się, że mamy zainstalowaną płytę NodeMCU i zainstalowaną bibliotekę Adafruit_MQTT.
1. Sklonuj repozytorium github: https://github.com/danionescu0/arduino i skopiuj szkic z projects/HASSGeigerIntegration do lokalizacji szkicownika arduino
2. Otwórz Arduino IDE i zainstaluj NodeMCU
- idź do Plik -> Preferencje, w adresach URL Menedżera tablic dodatkowych dodaj https://arduino.esp8266.com/stable/package_esp8266com_index.json jeśli już coś tam masz wstaw przecinkę z przodu i kliknij ok
- z Tools -> Board -> Board Manager wpisz "nodemcu" i wybierz wpis esp8266 od ESP8266 Community i wciśnij install
3. Zainstaluj Adafruit_MQTT
- przejdź do Narzędzia -> Zarządzaj bibliotekami -> wyszukaj "Adafruit_MQTT" i zainstaluj "Bibliotekę Arduino MQTT"
4. Podłącz kabel USB do komputera i skonfiguruj płytkę:
- przejdź do Narzędzia -> Tablica -> wybierz NodeMcu 1.0
- Narzędzia -> Port -> twój port USB
- pozostaw pozostałe ustawienia bez zmian
4. W szkicu zmień swoje dane uwierzytelniające WIFI, aby pasowały do własnych:
#define STASSID "ssid" // Zastąp swoim WIFI SSID
#define STAPSK "pass" // Zastąp swoim hasłem WIFI
5. Prześlij szkic na swoją tablicę, a po przesłaniu zresetuj tablicę za pomocą przycisku
6. Otwórz monitor szeregowy, jeśli wszystko poszło dobrze, powinieneś zobaczyć coś takiego:
Uruchamianie
Adres IP: 192.168.1.168 OTA włączone Łączenie z MQTT… MQTT Połączono! {"promieniowanie": 0,03}..
Krok 5: Skonfiguruj HomeAssistant
Zakładamy, że masz uruchomioną asystentkę domową. W moim systemie mam HASSOS w wersji 3.12 na RaspberryPi. Jeśli Twoja wersja asystenta domowego jest zbyt stara lub bardzo nowa, niektóre funkcje mogą się różnić. Ten samouczek na pewno działa z wersją 3.12.
Jeśli nie masz zainstalowanego Home Assistant, zapoznaj się z ich oficjalnym przewodnikiem instalacji:
Przed przystąpieniem do instalacji upewnij się, że NodeMCU jest podłączony i publikuje dane.
Ok, tutaj też będziemy mieli kilka kroków do konfiguracji:
1. Zainstaluj "edytor plików", jeśli nie masz go w menu, oto oficjalny samouczek:
2. Edytuj plik "/config/configuration.yaml" i dodaj następujące i zapisz go
- sekcja mqtt, jeśli jeszcze jej nie masz
mqtt:
broker: broker.hivemq.com odkrycie: prawda przedrostek_odkrycia: ha
- sekcja czujników
czujnik:
- platforma: mqtt name: "Promieniowanie" state_topic: "ha/radiation" jednostka_miary: 'uSv' unikalny_id: "radiation" value_template: "{{ value_json.radiation }}"
3. Z Konfiguracja -> Kontrola serwera: naciśnij "Sprawdź konfigurację", sprawdź plik konfiguracyjny yaml pod kątem błędów, a następnie naciśnij "uruchom ponownie" i poczekaj, aż zostanie ponownie uruchomiony
4. Z Przegląd -> Menu w prawym górnym rogu -> Konfiguruj interfejs -> naciśnij przycisk + w prawym dolnym rogu
5. Wybierz "czujnik" z listy -> w polu "entity" wyszukaj "sensor.radiation", w polu nazwy wpisz "Radiation" i kliknij ok, powinno być teraz na stronie głównej
Krok 6: Konfiguracja własnego serwera MQTT [Opcjonalnie]
Porozmawiajmy trochę o MQTT
„MQTT to protokół przesyłania wiadomości typu Client Server do publikowania/subskrypcji. Jest lekki, otwarty, prosty i zaprojektowany tak, aby był łatwy do wdrożenia. Te cechy sprawiają, że jest idealny do użytku w wielu sytuacjach, w tym w środowiskach ograniczonych, takich jak komunikacja w kontekstach Machine to Machine (M2M) i Internet of Things (IoT), gdzie wymagany jest niewielki ślad kodu i/lub przepustowość sieci jest na wagę złota.”
Cytat z oficjalnej specyfikacji MQTT 3.1.1.
Więc w zasadzie możemy opublikować wiadomość gdzieś po jednej stronie, a po drugiej stronie możemy nasłuchiwać tych wiadomości i zrobić coś z danymi. MQTT obsługuje „tematy”, tematy to ciągi znaków, których broker używa do filtrowania komunikatów dla każdego klienta, więc jeśli opublikujemy komunikat w temacie „/radiation”, słuchacz musi zasubskrybować ten sam temat, aby otrzymać wysyłane przez nas komunikaty.
Oto świetny samouczek dotyczący MQTT w szczegółach:
Korzystanie z darmowego serwera Hive ma pewne wady, takie jak:
- każdy, kto słucha Twojego tematu, otrzyma Twoje wiadomości
- jeśli ulegnie uszkodzeniu lub będzie wymagać zapłaty później, nie będziesz mógł z niego skorzystać (chyba że zapłacisz)
- jeśli ktoś, kto publikuje wiadomości na ten sam temat, również otrzymasz jego wiadomości, może publikować niezgodne wiadomości i złamać twoje wykresy HASS
Korzystanie z prywatnego serwera
Jeśli nie chcesz korzystać z publicznego darmowego serwera, masz możliwość skorzystania z prywatnego serwera. Zamierzamy zainstalować Mosquitto MQTT na serwerze ubuntu/debian, takim jak raspberry pi lub komputer.
Mosquitto to serwer, który implementuje protokół MQTT i jest darmowy.
Aby go zainstalować, zaloguj się do swojego raspnerry pi lub innego serwera opartego na debianie i uruchom:
aktualizacja sudo apt
sudo apt install -y mosquitto mosquitto-clients sudo systemctl włącz mosquitto.service
Spowoduje to aktualizację repozytorium, zainstalowanie serwera i klienta Mosquiito oraz umożliwi uruchomienie usługi przy starcie
Aby uzyskać adres IP serwera, wykonaj:
nazwa hosta -I
i wyświetli coś takiego:
192.168.1.52 172.17.0.1 172.18.0.1
Więc mój adres IP to 192.168.1.52, w poniższych poleceniach zastąp go własnym ip
Możesz przetestować serwer MQTT, publikując wiadomość i odbierając ją za pomocą narzędzia konsoli, ponieważ te dwa terminale muszą być otwarte, jeden, który nasłuchuje wiadomości, drugi, który opublikuje wiadomość.
Najpierw w terminalu uruchom to polecenie, aby nasłuchiwać wiadomości na „/jakiś-temat”
mosquitto_sub -h 192.168.1.52 -t /jakiś-temat
Otwórz inny terminal i opublikuj wiadomość na ten temat:
mosquitto_pub -h 192.168.1.52 -t /jakiś-temat -m '{"wilgotność": 74.0}'
W pierwszym terminalu powinieneś zobaczyć wydrukowane ' {"wilgotność": 74.0}'.
Specjalna uwaga:
- ta konfiguracja zakłada, że HASS, Mosquitto i NodeMCU są podłączone do tej samej sieci WIFI i nie ma reguł zapory i mogą się swobodnie komunikować
- serwer Mosquitt MQTT nie ma nazwy użytkownika/hasła, jeśli chcesz ustawić dane uwierzytelniające, sprawdź to: https://www.steves-internet-guide.com/mqtt-username-password-example/ Również musisz skonfigurować poświadczenia w Home Assistant i w szkicu arduino
Krok 7: OTA (aktualizacje OTA) dla NodeMCU
Aktualizacje bezprzewodowe oznaczają, że płyta rozwojowa może być bezprzewodowo flashowana bez konieczności używania fizycznego kabla.
Arduino IDE obsługuje tę funkcjonalność dla serii ESP8266 i niektórych innych płyt:
- wymaga wstępnego flashowania przez kabel USB
- tworzy wirtualny port przez WIFI i jest widoczny tylko z Arduino IDE
- brak dostępnych informacji o debugowaniu szeregowym
- obsługuje ochronę hasłem
Aby włączyć OTA w szkicu ESP8266, najpierw dołącz bibliotekę:
#include "ArduinoOTA.h"
Zdefiniuj również tę stałą hasła szkicu:
#define SKETCHPASS "jakieś_hasło"
W sekcji konfiguracji dodaj te linie:
while (WiFi.waitForConnectResult() != WL_CONNECTED) {
Serial.println("Połączenie nie powiodło się! Ponowne uruchamianie…"); opóźnienie(5000); ESP.restart(); } ArduinoOTA.setPassword(SKETCHPASS); ArduinoOTA.onStart(() { String type; if (ArduinoOTA.getCommand() == U_FLASH) { type = "sketch"; } else { // U_FS type = "filesystem"; } Serial.println("Rozpocznij aktualizację " + typ); }); ArduinoOTA.onEnd(() { Serial.println("\nKoniec"); }); ArduinoOTA.onProgress((postęp bez znaku, całkowita liczba bez znaku) { Serial.printf("Postęp: %u%%\r", (postęp / (łącznie / 100))); }); ArduinoOTA.onError((ota_error_t error) { Serial.printf("Błąd[%u]: ", błąd); if (błąd == OTA_AUTH_ERROR) { Serial.println("Auth Failed"); } else if (błąd == OTA_BEGIN_ERROR) { Serial.println("Rozpoczęcie nie powiodło się"); } else if (błąd == OTA_CONNECT_ERROR) { Serial.println("Połączenie nie powiodło się"); } else if (błąd == OTA_RECEIVE_ERROR) { Serial.println(" Odbiór nie powiódł się"); } else if (błąd == OTA_END_ERROR) { Serial.println("Nieudane zakończenie"); } }); ArduinoOTA.początek(); Serial.print("adres IP: "); Serial.println(WiFi.localIP());
A w sekcji pętli dodaj tę linię:
ArduinoOTA.handle();
Po załadowaniu początkowego kodu po uruchomieniu płyty powinieneś zobaczyć w Arduino IDE w sekcji Narzędzia->Port dwa typy portów:
Porty szeregowe: /dev/ttyUSB0 (na przykład)
Porty sieciowe: esp8266-xxxxx w 192.168.1.xxx
Teraz możesz wybrać port sieciowy i wgrać pilota szkicu, zostaniesz poproszony o hasło szkicu (to, które zdefiniowałeś w stałej powyżej)
Krok 8: Wnioski, przyszła praca
Ten samouczek można łatwo zmodyfikować, aby wysyłać dane o innych typach czujników:
- jeśli twój czujnik jest bezpośrednio obsługiwany przez NodeMCU za pośrednictwem biblioteki, po prostu połącz dane z czujnika i bezpośrednio prześlij je przez MQTT
- jeśli biblioteka czujników nie działa z NodeMCU, ale jest tylko dla Arduino, prześlij swój kod do arduino, wyślij wartość przez linię szeregową i odczytaj ją w NodeMCU i wciśnij (tak jak zrobiliśmy z licznikiem geigera)
Możemy go nawet zmodyfikować, aby wysyłać dane z wielu czujników, na przykład:
- podłącz swoje czujniki do NodeMCU
- dane odpytywania z każdego czujnika
- dla każdego czujnika opublikuj dane na inny temat
- w HASS zdefiniuj wiele czujników (tak jak zrobiliśmy to z geigerem), które będą słuchać różnych tematów
Zalecana:
Sterowanie roletami za pomocą ESP8266, integracja Google Home i Openhab oraz kontrola sieci: 5 kroków (ze zdjęciami)
Sterowanie roletami z ESP8266, integracją Google Home i Openhab oraz kontrolą sieci: W tym Instruktażowym pokazuję, jak dodałem automatyzację do moich rolet. Chciałem móc dodawać i usuwać automatykę, aby cała instalacja była przypinana. Główne części to: Silnik krokowy Sterownik krokowy sterowany przez ESP-01 Przekładnia i mocowanie
Aktywność licznika Geigera dla dzieci w wieku 9-11 lat: 4 kroki
Aktywność licznika Geigera dla dzieci w wieku 9-11 lat: W tym samouczku dowiesz się, jak korzystać z detektora promieniowania jądrowego. Tutaj możesz kupić detektor licznika Geigera. Licznik Geigera to przyrząd używany do wykrywania i pomiaru promieniowania jonizującego. Znany również jako licznik Geigera-Muellera (
Aktywność licznika Geigera dla dzieci powyżej 12 lat: 5 kroków
Aktywność licznika Geigera dla dzieci powyżej 12 lat: W tym samouczku dowiesz się, jak złożyć detektor promieniowania jądrowego. Tutaj możesz kupić zestaw licznika Geigera. Licznik Geigera to przyrząd używany do wykrywania i pomiaru promieniowania jonizującego. Znany również jako licznik Geigera-Muellera (
Jak zbudować CubeSata z Arduino i czujnikiem licznika Geigera: 11 kroków
Jak zbudować CubeSata z Arduino i czujnikiem licznika Geigera: Czy kiedykolwiek zastanawiałeś się, czy Mars jest radioaktywny? A jeśli jest radioaktywny, czy poziom promieniowania jest wystarczająco wysoki, aby uznać go za szkodliwy dla ludzi? Są to wszystkie pytania, na które mamy nadzieję odpowiedzieć nasz CubeSat z Arduino Geiger Counte
Naprawa licznika Geigera DIY: 9 kroków (ze zdjęciami)
Naprawa licznika Geigera DIY: Zamówiłem ten licznik Geigera DIY przez Internet. Przyjechała w odpowiednim czasie, jednak została uszkodzona, uchwyty bezpieczników szyny zostały zmiażdżone, a rura J305 Geigera Mullera została zniszczona. To był problem, ponieważ wykorzystałem swoje punkty z wcześniejszych zakupów w tym