Spisu treści:

Potężny samodzielny system automatyki domowej - Pi, Sonoff, ESP8266 i Node-Red: 9 kroków (ze zdjęciami)
Potężny samodzielny system automatyki domowej - Pi, Sonoff, ESP8266 i Node-Red: 9 kroków (ze zdjęciami)

Wideo: Potężny samodzielny system automatyki domowej - Pi, Sonoff, ESP8266 i Node-Red: 9 kroków (ze zdjęciami)

Wideo: Potężny samodzielny system automatyki domowej - Pi, Sonoff, ESP8266 i Node-Red: 9 kroków (ze zdjęciami)
Wideo: CO MAM W SZAFIE | Inteligentny Dom DIY #2 2024, Listopad
Anonim
Potężny samodzielny system automatyki domowej - Pi, Sonoff, ESP8266 i Node-Red
Potężny samodzielny system automatyki domowej - Pi, Sonoff, ESP8266 i Node-Red

Ten przewodnik powinien doprowadzić Cię do pierwszej bazy, w której możesz włączać / wyłączać światło lub urządzenie za pomocą dowolnego urządzenia, które może łączyć się z siecią lokalną, i ze świetnym konfigurowalnym interfejsem internetowym. Zakres rozbudowy/dodawania funkcji jest ogromny, w tym wysyłanie e-maili, wiadomości na Twitterze, odczytywanie czujników (np. temperatury). Możesz łatwo ustawić zasady, m.in. – jeśli temperatura jest poniżej 15C o 23:00 włącz koc elektryczny na 30 min. System wykorzystuje protokół MQTT z TCP, który jest znacznie bardziej niezawodny niż UDP, który jest zaskakująco używany przez niektóre komercyjne urządzenia automatyki domowej. Po ciężkiej pracy związanej z konfiguracją systemu, opisaną tutaj, można rozpocząć zabawę. Node Red zapewnia fantastyczny interfejs użytkownika, który jest intuicyjny, szybki i łatwy w konfiguracji oraz zapewnia niesamowite możliwości.

Rezultatem jest potężny system automatyki domowej, który jest w pełni pod kontrolą i jest całkowicie w sieci lokalnej. Wiele systemów pokazanych w Instructables współpracuje z serwerami opartymi na chmurze, a zatem stanowi zagrożenie bezpieczeństwa i może wymagać subskrypcji. Są one łatwiejsze do skonfigurowania, ale wiążą się z większym ryzykiem bezpieczeństwa i potencjalnie wyższym kosztem. Powinienem dodać, że można skonfigurować VPN (wirtualną sieć prywatną) do Pi, aby umożliwić bezpieczne połączenie z siecią domową/systemem, jeśli dostęp z zewnątrz byłby przydatny (instrukcje Google Pi OpenVPN).

Ten system wymaga przeprogramowania urządzeń Sonoff za pomocą świetnego systemu open source o nazwie Sonoff-Tasmoda. Można to zrobić za pomocą specjalnej konfiguracji Arduino i konwertera USB na szeregowy. Urządzenia Sonoff wykorzystują układ Wi-Fi ESP8266, dzięki czemu można również tworzyć własne urządzenia za pomocą modułów ESP8266 lub dopasować je do innych elementów, aby zapewnić łączność bezprzewodową.

Największym zadaniem jest skonfigurowanie Raspberry Pi jako koncentratora. To uruchamia brokera MQTT (lub serwer), który zarządza komunikacją z podłączonymi urządzeniami. Pi uruchamia również system o nazwie Node-Red, który może przechwytywać wiadomości i dane oraz polecenia wyjściowe – na przykład, kiedy włączyć koc elektryczny. Node-Red zapewnia również interfejs do obsługi strony internetowej, do której można się zalogować za pomocą smartfona/tabletu/komputera/laptopa, aby zobaczyć, co się dzieje i umożliwić ręczne przełączanie świateł i tak dalej.

Moim celem w tej instrukcji jest podanie każdego kroku na tyle szczegółowo, aby nowicjusz mógł uruchomić system.

Kroki to:

  • Załaduj Pi z Rasbian Stretch
  • Zaktualizuj i dodaj funkcje do Node-Red
  • Zainstaluj brokera Mosquitto MQTT
  • Skonfiguruj środowisko Arduino do przesyłania oprogramowania układowego Sonoff-Tasmota
  • Przeprogramuj przełącznik Sonoff
  • Skonfiguruj interfejs Node-Red
  • Przetestuj to wszystko działa.

Sprzęt, którego będziesz potrzebować:

  • Raspberry Pi i zasilacz (oraz klawiatura i monitor do wstępnej konfiguracji) (używany tutaj model B)
  • Przełącznik Sonoff
  • Konwerter szeregowy USB
  • Opcjonalnie – płyta rozwojowa ESP, taka jak NodeMCU.

Moje doświadczenie z Raspberry Pi polega na tym, że konfigurowanie czegokolwiek wydaje się wiązać ze znacznie większym bólem, niż można sobie wyobrazić, gdy rzeczy nie działają lub utkną na jakimś trywialnym kroku, w którym wyjaśnienie mogłoby być lepsze. Fora nie zawsze otrzymują porady, które działają! Znalazłem kilka tras, które po prostu nie działały z tego czy innego powodu. To kosztowało 3 dni! Potem wszystko wytarłem i zacząłem od nowa i ukończyłem w niecały (długi) dzień. To jednak używało starszego Raspian Jessie. Potem znalazłem sposób na wykorzystanie obecnej i niedawno wydanej wersji (Stretch) i zrobiłem to ponownie. Ten przewodnik umożliwia kopiowanie i wklejanie instrukcji do Pi. Więc powinieneś skończyć za kilka godzin. W każdym razie mam nadzieję, że dzięki temu szybciej zaczniesz się uczyć i przy znacznie mniejszym bólu. Uwierz mi, że warto, aby uzyskać efekt końcowy.

Krok 1: Załaduj Pi z Rasbian Stretch

To powinno być całkiem proste. Zacznij od karty SD 8 Gb lub 16 Gb. Pobierz najnowszą wersję z:

www.raspberrypi.org/downloads/

Główny wątek tutaj zakłada, że załadowana jest pełna wersja. Możesz jednak użyć wersji lite, aby zaoszczędzić miejsce. Jeśli używasz Raspbian Stretch Lite, wykonaj ten krok, a następnie przejdź do kroku 9 na końcu.

Rozpakowanie pobranego pliku daje folder z plikiem.img. 7Zip jest zalecany dla systemu Windows (i The Unarchiver Mac). Obraz musi zostać wypalony na karcie SD – ale należy użyć specjalnego programu, ponieważ system plików nie jest kompatybilny z Windows. Zalecane oprogramowanie nazywa się Etcher i można je pobrać z:

etcher.io/

Instrukcje dotyczące Etchera znajdują się na ich stronie internetowej i nie mogą być prostsze. Wybierz obraz i dysk, a następnie kliknij Flash.

Teraz dzięki naszej flashowanej karcie SD można uruchomić Pi.

Jeśli znasz adres IP, którego używa Twoje Pi lub z przyjemnością go znajdziesz, logując się do routera, możesz uniknąć konieczności używania klawiatury i monitora i natychmiast użyć SSH. Wystarczy dodać pusty plik o nazwie SSH do karty SD, włożyć, podłączyć do sieci Ethernet i włączyć. W przeciwnym razie postępuj zgodnie z poniższym przewodnikiem.

Podłącz Pi do Internetu, ekranu, myszy i klawiatury i podłącz do zasilania. Pierwszą rzeczą, którą zrobimy, jest włączenie SSH, abyśmy mogli wykonać większość konfiguracji w zaciszu na komputerze. Można to oczywiście zrobić bezpośrednio, ale bardzo pomaga podążanie za tym przewodnikiem na tym samym urządzeniu, na którym prowadzi się Pi, i używanie kopiowania i wklejania w przypadku większości instrukcji. Również w moim przypadku moja stacja robocza PC jest ładna i wygodna, ale też nie jest wystarczająco duża, aby pomieścić pi.

Istnieje przewodnik po sporej części pracy nad filmem na YouTube. Tu zacząłem. Możesz uruchomić wideo zgodnie z tymi instrukcjami. Jednak kiedy ponownie przechodziłem przez ten proces podczas pisania tego, łatwiej było po prostu postępować zgodnie z instrukcjami tutaj. Są pewne znaczące odchylenia. Istnieje również kilka sekcji, w których radziłem śledzić wideo, zamiast wymieniać kroki tutaj. Polecam jednak przyjrzeć się temu, aby zrozumieć MQTT, Node-Red i szeroki proces konfiguracji. Film trwa 38 minut, więc usiądź wygodnie. Film zaczyna się od pokazania, co może zrobić Node Red, a następnie obejmuje instalację i konfigurację Pi, a następnie aktualizację Node Red i na koniec instalację Mosquitto. Kluczowe czasy na wypadek, gdybyś chciał wrócić do sekcji:

00:00 Wprowadzenie do wideo

03:00 Demonstracja czerwonego węzła

14:14 Importowanie elementów pulpitu do czerwonego węzła

21:05 Wstępna konfiguracja Pi, w tym SSH

23:35 Instalacja kodu pomocniczego Node Red

27:00 Wprowadzenie do MQTT

29:12 Instalacja Mosquitto (MQTT) (Uwaga działa tylko dla Raspian Jessie)

33:00 Przykłady czerwonego węzła

Wymienię polecenia pogrubioną kursywą (zamiast używać „”). To formatowanie jest ignorowane podczas kopiowania i wklejania ich do Pi.

Wprowadzenie do Node Red da ci wyobrażenie o tym, co system może zrobić i zapewni obraz tego, gdzie dotrzemy.

Film na YouTube znajduje się pod adresem:

Postępuj zgodnie z procedurą instalacji od 21:05 do 23:35. Zwróć uwagę, że domyślny login to użytkownik: pi i hasło: raspberry. Przed ponownym uruchomieniem znajdź adres IP pi. Kliknij ikonę „strzałki w górę + w dół” na górnym pasku pulpitu lub wprowadź następującą instrukcję w oknie terminala/terminala:

sudo ifconfig adres

Następnie zanotuj adres IP po: inet addr:. Będzie miał postać 192.168.x.y

Zanotuj ten adres i uruchom ponownie (wpisz: sudo shutdown –r now)

Kluczem w tym momencie jest to, że SSH zostało włączone i można skonfigurować łącze do Pi z komputera PC (Mac i Linux zawierają interfejsy SSH). Dobrym programem do tego jest darmowy program do pobrania o nazwie PuTTY, który może być również używany jako interfejs szeregowy i może wykonywać Telnet. Szpachlówka jest dostępna od:

www.chiark.greenend.org.uk/~sgtatham/putty…

Pobierz i zainstaluj PuTTY.

Teraz, po ponownym uruchomieniu Pi, uruchom PuTTY i wprowadź adres IP zanotowany wcześniej. Zobacz przykład poniżej:

Teraz kliknij Otwórz

Po zalogowaniu jako: wpisz pi

Następnie wprowadź swoje hasło.

Teraz postępuj zgodnie z instrukcjami tutaj i opcjonalnie rozpocznij wideo od 23:35. W większości przypadków możesz kopiować i wklejać. Zaznacz tekst i użyj ctrl+C, aby skopiować. Następnie kliknij prawym przyciskiem myszy w PuTTY, aby wkleić. Czasami tekst nie pojawia się od razu, więc poczekaj kilka sekund. Jeśli wprowadzisz dwa razy, użyj klawisza Backspace, aby usunąć drugi wpis. Naciśnij enter, aby wykonać każdą instrukcję.

sudo raspi-aktualizacja

Nie znaleziono polecenia i zignorowałem to oraz następującą instrukcję zamknięcia/restartu:

sudo wyłączenie -r teraz

sudo apt-get -y aktualizacja

sudo apt-get -y uaktualnienie

To trochę potrwa…..

sudo apt-get autoremove

sudo apt-get -y aktualizacja

sudo wyłączenie -r teraz

W tym momencie mamy załadowany i zaktualizowany system operacyjny Pi, gotowy do następnego kroku.

Krok 2: Zaktualizuj i dodaj funkcje do Node-Red

Połączenie PuTTY zostanie utracone po ponownym uruchomieniu na końcu poprzedniego kroku. Więc zamknij PuTTY i po odczekaniu na uruchomienie Pi, zaloguj się ponownie, jak poprzednio.

Przeszedłem na prostszą i bardziej niezawodną metodę ładowania Node-Red – zgodnie z podejściem na https://nodered.org/docs/hardware/raspberrypi. To wykorzystuje skrypt i zainstaluje lub zaktualizuje Node-Red - więc podejście jest takie samo w przypadku pełnych lub lekkich wersji Raspbian Stretch. Więc wpisz:

bash <(curl -sL

Wprowadź Y, gdy zostaniesz o to poproszony (dwa razy). Ten skrypt ładuje również pliki potrzebne do włączenia autostartu Node-Red.

W tym momencie mamy załadowane i zaktualizowane nasze pi oraz aktualizacje potrzebne dla węzła czerwonego. Ponowne uruchomienie przed następnym etapem nie zaszkodzi.

sudo wyłączenie -r teraz

Krok 3: Instalacja Mosquitto MQTT

Jeśli jeszcze tego nie zrobiłeś, warto obejrzeć wideo wprowadzające do MQTT na wideo od 27:00.

W tym miejscu musimy obrać inną ścieżkę. Procedura opisana w filmie działa tylko w przypadku starszej wersji Raspiana Jessie. Na stronie z komarami toczy się dyskusja, ale nie ma jednoznacznych wyników, dlatego pozostaniemy prostszą i bezpieczniejszą drogą.

Zaloguj się więc za pomocą PuTTY i wpisz:

aktualizacja sudo apt-get

sudo apt-get install mosquitto mosquitto-klienci

Tak

sudo /etc/init.d/mosquitto stop

sudo /etc/init.d/mosquitto start

Dwie ostatnie instrukcje zatrzymują i uruchamiają mosquitto i pokazują, że nasz broker MQTT działa.

Aby przeprowadzić szybki test, otwórz dwie kolejne sesje PuTTY i zaloguj się do każdej.

Już wiesz, że MQTT działa na urządzeniu, którego dane wymagają subskrypcji „tematu”. Broker prześle dowolne dane z tym samym „tematem”. Następnie urządzenie, które chce wysłać dane/instrukcje, publikuje je do brokera przy użyciu tego samego „tematu”.

Więc w jednej sesji PuTTY wpisz:

mosquitto_sub -d -t cześć/świecie

To jest instrukcja subskrybowania tematu: hello/world.

W drugiej wpisz:

mosquitto_pub -d -t hello/world -m "Witaj z okna Terminala 2!"

To jest instrukcja publikowania o tym samym temacie z komunikatem. Tekst: „Witaj z okna Terminala 2!” powinien teraz pojawić się w drugim terminalu.

Dobra robota, posuwając się tak daleko. Mamy teraz załadowane i zaktualizowane Pi z aktualizacjami wymaganymi dla Node-Red oraz z zainstalowanym i przetestowanym brokerem Mosquito MQTT. Od teraz życie staje się łatwiejsze i bardziej zabawne. Zamknij dwie sesje PuTTY używane do testu MQTT.

Krok 4: Konfigurowanie czerwonego interfejsu węzła

Najpierw musimy uruchomić Node Red. Wpisz instrukcję:

node-red-pi --max-old-space-size=256

Poczekaj, aż się uruchomi, a zobaczysz tekst „Rozpoczęto przepływy”.

Teraz otwórz przeglądarkę, używam Chrome i wpisuję adres IP odnotowany wcześniej, a następnie 1880, czyli coś w stylu 192.168.0.8:1880

Powinieneś teraz widzieć stronę programowania Node Red, jak poniżej:

Możesz teraz podążać za przykładami Node Red, zaczynając od 33:00 lub od razu przejść do odrobiny dodatkowej konfiguracji i wczytać pierwszy przepływ, który pokaże link do MQTT i będzie gotowy do sterowania naszym przełącznikiem.

Dodatkową potrzebną konfiguracją jest dodanie elementów pulpitu nawigacyjnego, które umożliwiają interfejs sieciowy.

Są one pokazane na filmie o 14:14.

Postępuj zgodnie z instrukcjami, aby załadować węzeł-czerwony-dashboard.

Teraz możemy się trochę pobawić i pokazać, że MQTT działa i jest napędzany przez Node-Red. Nie ma tego w filmie, ale jest kluczem do tego projektu. Możesz postępować zgodnie z moimi instrukcjami i/lub zaimportować przepływy z załączonego pliku NRtest1.txt.

Najpierw dodaj wejściowy węzeł wstrzykiwania i wyjściowy węzeł mqtt i połącz je ze sobą.

Kliknij dwukrotnie węzeł wstrzykiwania (który początkowo jest oznaczony sygnaturą czasową). W sekcji Payload użyj twiddly, aby zmienić na string i wpisz: Hello from me. Pozostaw temat pusty, ponieważ możemy go wpisać w węźle MQTT. Kliknij Gotowe

Teraz kliknij dwukrotnie węzeł MQTT. Kliknij ikonę ołówka po prawej stronie sekcji Serwer. Otworzy się nowe okno dialogowe. Wpisz: localhost w sekcji Serwer. Kliknij Dodaj. Teraz z powrotem w węźle Edit mqtt out wprowadź nasz temat w sekcji Temat: hello/world. Ustaw QoS na 1. Kliknij Gotowe. Teraz kliknij Wdróż. Powinieneś zobaczyć zielony blob i „connected” poniżej węzła mqtt.

Teraz dodaj jeszcze dwa węzły – input mqtt i output debug, a następnie połącz je ze sobą. Teraz kliknij dwukrotnie węzeł wejściowy mqtt i wpisz hello/world w sekcji tematu. Serwer powinien już pokazywać localhost:1883. Ustaw QoS na 1. Kliknij Gotowe. Następnie kliknij Wdróż i kliknij kartę debugowania w prawym okienku. Teraz kliknij szary kwadrat po lewej stronie węzła wstrzykiwania „Witaj ode mnie”. Spowoduje to wysłanie ładunku tekstowego do brokera MQTT z tematem hello/world. Broker wie, że węzeł wejściowy mqtt zasubskrybował ten sam temat i przekazuje ładunek. Węzeł wejściowy mqtt następnie wysyła to do karty debugowania (RHS) i powinien pojawić się tekst „Witaj ode mnie”.

To zaznacza kolejne pole, ponieważ mamy czerwony węzeł rozmawiający z naszym brokerem MQTT. Zauważ, że Node Red jest tylko klientem brokera – podobnie jak urządzenia Sonoff, które połączymy później. Umożliwia jednak zaawansowaną automatyzację i zapewnia świetny interfejs użytkownika.

Teraz możemy dokonać kilku drobnych zmian i skonfigurować przepływy dla naszego przełącznika Sonoff.

Usuń więc węzeł wstrzykiwania danych wejściowych (kliknij, aby podświetlić i naciśnij klawisz usuwania). Teraz dodaj przełącznik z sekcji deski rozdzielczej i podłącz go do wyjścia mqtt. Przełącznik dwukrotnego kliknięcia. Kliknij ołówek po prawej stronie grupy. Wpisz w Nazwa: Światło. Następnie kliknij ołówek po prawej stronie Tab i przejdź do sekcji Nazwa: Salon. Ponownie kliknij Dodaj/Aktualizuj i Dodaj/Aktualizuj. Teraz, z powrotem w węźle Edytuj, włącz i wyłącz Ładunki. Użyj twidlys, aby wybrać ciąg i wpisz ON dla ładunku On i OFF dla ładunku OFF. Kliknij Gotowe

Teraz przejdź do każdego z węzłów mqtt i zmień temat na cmnd/sonoff/POWER. Jeśli kopiujesz i wklejasz, sprawdź, czy na końcu nie masz spacji. To inny temat i nie będzie działać z Sonoffem. Znalezienie zabłąkanej przestrzeni może zająć około godziny – uwierz mi! Wszedłem też do pulpitu nawigacyjnego>Motyw i wybrałem: Ciemny. Kliknij Wdróż i wybierz kartę debugowania.

Teraz otwórz nową sesję przeglądarki w nowym oknie i ustaw jej rozmiar jak telefon komórkowy w sesji Node Red. Wprowadź adres: Twój adres IP Pi: 1880/ui/#/0, czyli coś w rodzaju 192.168.0.8:1880/ui/#/0. Powinieneś zobaczyć ekran z Lounge i Light oraz przełącznikiem. Kliknij przełącznik włącz, a następnie wyłącz. Okno debugowania powinno pokazywać ładunki WŁĄCZONE i WYŁĄCZONE. Teraz, jeśli chcesz, zaloguj się również przez telefon komórkowy. Zauważ, że pozycja przełącznika jest zsynchronizowana. Nie ma znaczenia, że nasz Sonoff nie jest jeszcze podłączony. Kiedy tak się stanie, subskrybując temat, odbierze wiadomość/ładunek i podejmie działania na jego podstawie.

Ostatnim małym krokiem jest automatyczne uruchomienie Node Red po uruchomieniu Pi.

Node Red ma przewodnik pod adresem:

Jednak potrzebne pliki są już załadowane, więc nie jest wymagana instalacja.

Aby następnie włączyć automatyczne uruchamianie Node-RED przy każdym rozruchu i po awariach wejdź (otwórz sesję PuTTY):

sudo systemctl włącz nodered.service

Jeśli kiedykolwiek będziesz musiał to wyłączyć, wpisz:

sudo systemctl wyłącz nodered.service

Teraz wyłącz pi z sudo shutdown teraz i odłącz zasilanie.

Teraz nasze Pi jest zablokowane i załadowane, gotowe do działania. Nasz komputer/telefon komórkowy łączy się z czerwonym węzłem, a ten komunikuje się z naszym serwerem MQTT. To była długa droga i warta dużego poklepania po plecach. Bardzo dobrze. Znalazłem następny, Arduino, o wiele łatwiejszy!

Krok 5: Konfiguracja systemu Arduino do przeprogramowania urządzeń Sonoff

Wszystkie informacje, jak to zrobić, znajdują się na GitHub Sonoff-Tasmota. Jedyną częścią, z którą miałem trudności, był tekst tematu – ale już sprytnie namówiłem cię do tego!

Przejdź do

Instrukcje konfiguracji znajdziesz na karcie Wiki w sekcji Narzędzia do przesyłania:

Zamiast przechodzić przez każdy krok, po prostu odnotuję kluczowe aspekty, które uważałem za ważne lub utknąłem.

Instrukcje są dobre, ale wymagają starannej dbałości o szczegóły. Potykałem się o to, że potrzebowałem folderu ESP8266 w folderze, który znajdował się w innym folderze o nazwie ESP8266, a zatem pominąłem dwa poziomy.

Postępowałem zgodnie z zaleceniem dotyczącym całkowicie oddzielnej konfiguracji Arduino. Utworzyłem nowy folder o nazwie „ArduinoSonoff”, który jest oddzielony od mojego istniejącego folderu Arduino. Konfiguracja jest dość zaawansowana i dlatego trzymanie jej osobno to bardzo dobry pomysł. Jeśli jest to Twoja pierwsza konfiguracja Arduino, upewnij się, że instalujesz ją po raz drugi w folderze „Arduino” lub innym folderze dla dowolnej innej pracy Arduino, w tym pracy z ESP8266.

Pobierz najnowsze środowisko Arduino IDE ze strony https://www.arduino.cc/en/Main/Software. Rozpakuj plik do nowego folderu.

Instrukcje obejmują pobranie systemu Sonoff-Tasmoda ze strony głównej https://github.com/arendst/Sonoff-Tasmota poprzez: Klonuj lub Pobierz>Pobierz ZIP. Rozpakuj plik do nowego folderu.

Postępuj zgodnie z instrukcjami dokładnie. Nie zrobiłem sekcji Opcjonalnie: Przygotuj się do przesyłania OTA. Zostawimy to na inny dzień.

Teraz uruchom Arduino IDE (kliknij dwukrotnie arduino.exe). Załaduj szkic Sonoff-Tasmota poprzez Plik>Sketchbook>sonoff. Nie ma potrzeby dokonywania żadnych zmian. Wszystkie ustawienia są wykonywane przez połączenie szeregowe po załadowaniu oprogramowania układowego. Są one przechowywane w pamięci EEPROM. Dzięki temu można zaktualizować oprogramowanie układowe i zachować wszystkie ustawienia. To całkiem sprytna rzecz. Możesz jednak uniknąć konieczności wykonywania kilku kroków, przechodząc do pliku user-config.h i wprowadzając swój identyfikator SSID Wi-Fi i hasło oraz MQTT_HOST (zastąp „domus1” – drugie odniesienie, swoim adresem IP Pi). Później możesz również wprowadzić użytkownika i hasło MQTT. Przed pobraniem sprawdź ustawienia tablicy w Narzędziach. Będą one wymagały kilku zmian, aby spełnić wymagania określone w Wiki. Teraz kliknij kompiluj (zaznacz ikonę). Powinno się dobrze skompilować. Jeśli tak się nie stanie lub jeśli wymagane ustawienia planszy nie są dostępne, wróć i sprawdź każdy krok konfiguracji.

Krok 6: Przeprogramowanie przełącznika Sonoff

Jesteśmy teraz gotowi do pobrania. Na tym etapie można albo iść na wprost i sflashować przełącznik Sonoff, albo najpierw sflashować moduł ESP8266. Zrobiłem to drugie, częściowo dlatego, że moje przełączniki jeszcze nie dotarły (właśnie przybyły, gdy to piszę!), Ale także jako środek ostrożności, ponieważ miganie przełącznika Sonoff jest krokiem jednokierunkowym, ponieważ oryginalne oprogramowanie układowe nie jest publicznie dostępne, o ile Jestem świadom. Mam kilka płyt NodeMCU. Są one łatwe do podłączenia dzięki wbudowanemu konwerterowi USB na szeregowy. Jednak metoda resetowania nodemcu nie działa z tym systemem. Więc pozostaw Narzędzia> Metoda resetowania ustawiona na „ck”. Wykonaj normalną ręczną konfigurację lampy błyskowej, przytrzymując przycisk lampy błyskowej (GPIO 0 do masy) jednocześnie naciskając i zwalniając Reset (Reset to ground). Nie jestem pewien, czy to ma limit czasu, czy może nie utrzymywałem wystarczająco długo GPIO 0, ale potrzebowałem kilku prób, w tym robienia tego podczas kompilacji Arduino IDE!

Jeśli chcesz sprawdzić odpowiedzi - wyjście przekaźnikowe to D6 na płytach NodeMCU. W ESP12 jest to GPIO 12. Wyjście LED to D7 (NodeMCU) lub GPIO 13 (ESP12).

Wyłącznik dźwiękowy.

UWAGA: Muszę powiedzieć „nie podłączaj do sieci pod żadnym pozorem, gdy obudowa jest otwarta”. Zauważ, że PCB (przynajmniej w Sonoff Basic (przełącznik w linii) ma tylko "pojedynczą izolację" odległości między sekcją niskiego napięcia a siecią. Dlatego należy traktować każdą część obwodu Sonoff jako napięcie sieciowe. Tasmota GitHub pokazuje podłączenie czujnika temperatury i wilgotności do Sonoff S20. Nie zrobiłbym tego ze względu na izolację. – więc jeśli chcesz to zrobić, zdobądź moduł ESP12 lub NodeMCU i skonfiguruj go osobno z odpowiednią podwójną izolacją lub uziemiony zasilacz.

Przełącznik wtykowy Sonoff S20 jest dobrym punktem wyjścia, ponieważ nie wymaga żadnego okablowania sieciowego. Można go otworzyć, odkręcając jedną śrubę (pod plombą) i podważając obudowę. Poniższe zdjęcie pokazuje, gdzie są tagi. Pomaga ściśnięcie obudowy w tych punktach.

Konwerter szeregowy USB

Moim ulubionym konwerterem jest wersja FTDI. Jednak nie ma to wystarczającej zdolności do zaspokojenia potrzeb Sonoff 3.3v. Specyfikacja FTDI mówi maksymalnie 50mA. Kolejną najlepszą alternatywą jest użycie układu CP2102. To jednak ma limit 100mA, który wciąż jest niewystarczający. Oczywiście wiele osób korzysta z tego konwertera bezpośrednio, ale są też raporty o niepowodzeniu ładowania. Ograniczyłbym czas podłączenia, ponieważ będzie się nagrzewał pod obciążeniem. Zrób to na własne ryzyko. Idealnym rozwiązaniem jest posiadanie również regulatora 3,3v, np. AMS1117 3.3. Zrobiłem małą płytkę PCB, aby to umożliwić. Zobacz Programator urządzeń Sonoff.

Moja sekwencja do programowania jest następująca:

Otwórz środowisko Arduino IDE.

W sekcji Narzędzia sprawdź, czy ustawienia są takie jak na Wiki.

Wprowadź wszelkie wymagane zmiany w user_config.h. Ustawiam Wifi SSID i hasło oraz adres brokera MQTT i szczegóły strefy czasowej/czasu letniego.

Kliknij „zweryfikuj”, aby sprawdzić, czy kompilacja jest OK.

Podłącz konwerter szeregowy USB (osobny) do komputera. Zanotuj numer portu.

Teraz odłącz kabel szeregowy USB od komputera i podłącz go do przełącznika Sonoff. Sprawdź, czy uziemienie i połączenia 3v3 są prawidłowe (masa jest podłączona do płaszczyzny uziemienia na płytce drukowanej Sonoff).

Przytrzymaj programator tak, aby styki były zabezpieczone, jednocześnie naciskając przycisk.

Teraz podłącz przewód USB do komputera, sprawdź, czy numer portu jest poprawny (w Narzędziach), a następnie kliknij Pobierz.

Podczas programowania nadal trzymam przycisk, ponieważ nie chcę zakłócać połączeń.

Po zakończeniu powinieneś zobaczyć ekran jak poniżej:

Obraz
Obraz

Sonoff potrzebuje kilku bitów informacji, aby połączyć się z naszym systemem: identyfikator SSID i hasło sieci lokalnej Wi-Fi oraz adres IP Pi. Można to zrobić na kilka sposobów, z których jednym jest zmodyfikowanie pliku config.ino, jak wspomniano wcześniej. Jeśli masz smartfon, możesz (po ponownym złożeniu przełącznika) nacisnąć przycisk Sonoff 4 razy dość szybko, aby przełączyć go w tryb serwera WWW. Dioda zacznie migać. Musiałem kilka razy spróbować, żeby to zadziałało. Następnie na smartfonie poszukaj nowej sieci Sonoff i połącz się. Pojawi się strona internetowa, na której możesz ustawić wymagane dane. Adres IP Pi przechodzi do nazwy hosta. Zmieniłem też drugi identyfikator SSID i hasło na coś długiego i w zasadzie bezużytecznego.

Alternatywnie można go skonfigurować przez połączenie szeregowe zaraz po załadowaniu. Otwórz Arduino Serial Monitor (w menu Narzędzia).

Polecenia do wprowadzenia:

Identyfikator SSID swojegoWiFiSSID

Hasło do swojegoWiFiHasło

MqttHost 192.168.x.y (adres IP PI)

Możesz także wprowadzić SSId1 i Password1, a następnie coś długiego i bezużytecznego, aby skutecznie to wyłączyć.

Teraz możesz zapakować przełącznik Sonoff, otworzyć Node-Red i Node-red dashboard i kliknąć przycisk przełącznika i spojrzeć na kartę debugowania, która powinna teraz zawierać odpowiedzi z Sonoff. Osiągnęliśmy więc kolejny ważny krok - nasz pierwszy przełącznik sterowany z komputera PC/smartfona.

Do tej pory nie wspomnieliśmy o bezpieczeństwie. Istnieje możliwość korzystania z komunikacji szyfrowanej. Jest to dość skomplikowane w konfiguracji i prawdopodobnie bardziej odpowiednie w przypadku korzystania z brokera opartego na chmurze. Istnieje również możliwość dodania nazw użytkowników i haseł do wszystkich podłączonych urządzeń oraz odrzucenia anonimowych użytkowników. Konfiguracja jest dość prosta. A więc teraz do Bezpieczeństwa.

Krok 7: Bezpieczeństwo

MQTT zezwala na nazwy użytkowników i hasła dla każdego klienta. Jest to łatwe w konfiguracji. Prawdopodobnie łatwiej jest najpierw zmienić nazwę każdego urządzenia, a następnie ustawić ich nazwy użytkowników i hasła. Można to zrobić za pomocą poleceń MQTT, a Node-Red jest prawdopodobnie najłatwiejszym sposobem ich wysłania. Najpierw zdecyduj się na konwencję nazewnictwa. Jedną z opcji jest oparcie nazw na lokalizacji i funkcji. Następnie będziesz chciał zapisać nazwę (temat) nazwę użytkownika i hasło wraz z tematem zastępczym. Zauważ, że istnieje również „opcja resetowania”, aby zresetować ustawienia Sonoff do oryginalnego pobrania (patrz Użycie Wiki> Funkcjonalność przycisków).

Włącz pi i po kilku sekundach otwórz przeglądarkę na Node-Red (adres IP: 1880).

W Node-Red skonfiguruj węzeł inject i połącz go z wyjściem mqtt i ustaw serwer mqtt na localhost. Pozostaw temat, użytkownika i hasło puste, ponieważ ustawimy je w węźle inject. Skonfiguruj również węzeł wejściowy mqtt i połącz go z węzłem debugowania, abyśmy mogli zobaczyć odpowiedzi. Ustaw notatkę wejściową mqtt na localhost (powinna być już ustawiona) i wpisz +/+/+ dla tematu, aby przechwycił cały ruch.

Wprowadź następującą sekwencję ustawień w węźle wstrzykiwania.

Najpierw sprawdź łączność z

Temat: cmnd/sonoff/Status

Wiadomość: 6

kliknij „Wstrzyknij raz na początku”. Wdrożyć. Powinniśmy zobaczyć debugowanie zawierające 7 linii danych ze stat/sonoff/STATUS6

Wprowadź temat: cmnd/sonoff/Temat i wiadomość: loungelight. Wdrożyć. Zmienia to nazwę przełącznika z sonoff na loungelight

Karta debugowania powinna pokazywać ponowne uruchomienie urządzenia z nową nazwą/tematem

Temat: cmnd/loungelight/MqttUser

Wiadomość: loungelight

Kliknij Wdróż. Debug powinien być widoczny w stat/loungelight/RESULT za pomocą {“MtqqUser”:”loungelight”}

Temat: cmnd/loungelight/MqttPassword

Wiadomość: loungelightPW (uwaga! Bądź bardziej pomysłowy!)

Wyczyść kartę debugowania i Wdróż.

Odpowiedź powinna być widoczna w stat/loungelight/RESULT z {"MqttPassword":"loungelightPW"}

Teraz wprowadź NodeRed i NodeRedPW jako nazwę użytkownika i hasło w węźle wyjściowym mqtt. Odbywa się to za pomocą ikony ołówka serwera i zakładki zabezpieczeń w oknie, które się otworzy. To jest automatycznie kopiowane do innych węzłów MQTT.

Sprawdź ponownie za pomocą

Temat: cmnd/loungelight/Status i wiadomość: 6. Wdrożyć.

I że odpowiedź jest wysłana.

W tym momencie zmieniliśmy nazwę naszego urządzenia Sonof, aby odsłuchiwało tematy cmnd/loungelight/…… i logowało się na serwerze MQTT przy użyciu nazwy użytkownika loungelight i hasła loungelightPW. Ustawiliśmy również nazwę użytkownika i hasło dla Node-Red.

Następnie musimy powiedzieć serwerowi Mosquito MQTT, aby akceptował tylko klientów z nazwami użytkowników i wypisał nazwy użytkowników i hasła, które mają zostać zaakceptowane.

Procedura to:

  • Zatrzymaj komary
  • Utwórz własny plik konfiguracyjny
  • Edytuj plik konfiguracyjny
  • Utwórz plik z hasłami
  • Dodaj użytkowników/hasła.

Zaloguj się więc za pomocą nowej sesji PuTTY i uruchom następujące polecenia:

sudo /etc/init.d/mosquitto stop

cd /etc/mosquitto/conf.d/

sudo nano mosquitto.conf Uruchamia edytor.

Dodaj wiersze:

allow_anonymous false

plik_hasła /etc/mosquitto/conf.d/passwd

Wymagany_certyfikat fałszywy

Zapisz i wyjdź (Ctrl+X), Y, wprowadź.

sudo touch passwd Spowoduje to utworzenie pliku haseł, a poniższe instrukcje dodają nazwy i hasła.

sudo mosquitto_passwd -b /etc/mosquitto/conf.d/passwd loungelight loungelightPW

sudo mosquitto_passwd -b /etc/mosquitto/conf.d/passwd NodeRed NodeRedPW

sudo /etc/init.d/mosquitto restart

Uwaga podczas dodawania nowego urządzenia będziesz musiał albo wprowadzić użytkownika i hasło przez port szeregowy i dodać je do pliku z hasłami albo tymczasowo zmienić plik konfiguracyjny Mosquitto i skomentować (dodać # na początku linii) wiersze "allow_anonymous false " i "password_file /etc/mosquitto/conf.d/passwd", a następnie zresetuj je, gdy szczegóły zostaną wysłane do urządzenia i dodane do pliku z hasłami, jak powyżej.

Zmieniliśmy nazwę sonoff na loungelight i zaktualizowaliśmy węzeł wyjściowy mqtt (podłączony do przełącznika), aby używał tematu cmnd/loungelight/POWER.

Kliknij Wdróż i sprawdź, czy węzły mqtt pokazują „połączone”.

Następnie wypróbuj przycisk przełącznika i poszukaj debugowania pokazującego odpowiedź przełącznika Sonoff. Zauważysz, że urządzenie pokazuje zmianę z tematem: stat/loungelight/POWER. Więc teraz zmień węzeł wejściowy, który był ustawiony na cmnd/sonoff/POWER na stat/loungelight/POWER. Możemy to wykorzystać, aby zakryć lukę w naszej funkcjonalności. System w początkowej konfiguracji zostanie zsynchronizowany ze wszystkimi zalogowanymi użytkownikami, ale nie zsynchronizuje się ze zmianami przełącznika dokonanymi przez naciśnięcie przycisku na przełączniku Sonoff. Więc teraz podłącz wyjście węzła wejściowego stat/loungelight/POWER mqtt do wejścia przełącznika (LHS). Teraz kliknij dwukrotnie przełącznik i usuń zaznaczenie „jeśli wiadomość zostanie dostarczona na wejściu, przekaż do wyjścia”. Pojawia się kilka nowych opcji - wybierz 'Ikona przełącznika pokazuje stan wejścia'. Wdrożyć. Więc teraz mamy dobrą pętlę sprzężenia zwrotnego. Pozycja przełącznika na desce rozdzielczej będzie się zawsze zmieniać, gdy zmieni się przełącznik Sonoff, niezależnie od tego, gdzie zmiana została zainicjowana.

Dlatego mamy teraz bezpieczny, samodzielny system automatyki domowej, który działa i jest gotowy do rozbudowy o wszystko, czego chcesz. W następnej sekcji omówię niektóre z moich dotychczasowych eksperymentów i wyzwań, z którymi zamierzam się zmierzyć.

Krok 8: Pierwsze kroki do ekspansji

Mam kolejną płytkę rozwojową LED z instruktażową automatyką domową Sonoff-Tasmota, która pokazuje niektóre z dalszych możliwości oprogramowania Sonoff-Tasmota:

Pomiar temperatury i wilgotności

Wykrywanie intruza (wejście przełącznika)

Pilot na podczerwień (do telewizorów itp.)

Ciągi LED - zarówno RGB, jak i NeoPixel (indywidualnie adresowalne)

Czujniki I2C

Do powyższego używam ESP12F i niestandardowej płytki drukowanej. Równie dobrze można zastosować NodeMCU i płytkę prototypową. Umożliwia to te dodatkowe funkcje bez okablowania do urządzenia Sonoff, a zatem jest znacznie bezpieczniejszym podejściem. Dzięki wejściu temperatury mogłem zakończyć automatyzację mojego elektrycznego koca.

Można łatwo dodać muzykę i radio internetowe. Otwiera to opcje włączania określonych stacji lub albumów w określonych godzinach lub w odpowiedzi na wykrycie gościa (telefonu). Ta powiązana instrukcja dotyczy wysokiej jakości odtwarzacza muzycznego i radia internetowego ze sterowaniem smartfonem. Ponieważ jest to również napędzane przez Node-RED, powinno być możliwe posiadanie więcej niż jednego systemu dźwiękowego i używanie komunikacji MQTT do ich napędzania.

Odkrywam także Node-Red, w tym wysyłanie e-maili i ostrzeganie głosowe. Istnieje również możliwość, że system wykryje, kiedy wchodzisz/wychodzisz – poprzez pingowanie adresu IP Twojego telefonu komórkowego. Node-Red może również uzyskać dostęp do pogody i wiadomości - dzięki czemu można dodawać informacje, a także automatyzować.

Jest kilka sztuczek, których można się nauczyć, ale za drugim razem stają się one łatwe.

Inną drogą jest dodanie wyświetlacza do pi, aby pokazać deskę rozdzielczą. To jest „praca w toku” – innymi słowy nie jestem zbyt szczęśliwy. Wyświetlacz, który dostałem, jest trudny do obrócenia w tryb portretowy, a przeglądarka Chromium jest boleśnie powolna. Alternatywą byłoby odebranie starego tabletu w serwisie eBay i użycie go. Mogę spróbować z Pi 2 i sprawdzić, czy to zapewnia wystarczającą poprawę (model B używany do tego rozwoju).

Mam nadzieję, że to pomoże Ci zacząć i pobudzi Twoją wyobraźnię. Potencjalny zakres jest ogromny. W razie potrzeby można nawet zmodyfikować kod Sonoff dla innych czujników.

Ogólnie byłem zdumiony tym, co ten system może zrobić. Moim pierwotnym celem było po prostu niezawodne sterowanie przełącznikiem ze smartfona za pomocą samodzielnego systemu. Miałem wizję potrzeby zarządzania serwerami i klientami oraz pisania html dla interfejsu użytkownika. Tam, gdzie to się skończyło, jest znacznie przed tym, z większym bezpieczeństwem, doskonałą niezawodnością, fantastycznym interfejsem użytkownika, programowaniem typu „przeciągnij i upuść” i ogromnym potencjałem rozwoju. A wszystko to przy znacznie mniejszym wysiłku.

Mikrofon

Krok 9: Dodatek - ładowanie z Raspbian Stretch Lite

Ta opcja pozwala uniknąć nadużywania oprogramowania dostarczanego z pełną wersją Raspbian Stretch. Większość z nich nie będzie potrzebna podczas korzystania z Pi do automatyki domowej. Jednak Node-Red musi być zainstalowany.

Postępuj jak w kroku 1, ale używaj Raspbian Stretch Lite zamiast Raspbian Stretch.

Zamiast Kroku 2 wykonaj następujące czynności:

sudo apt -y zainstaluj npm

npm -v powinno zwrócić: 1.4.21 lub nowszy

sudo npm zainstalować -g n

sudo n 8.9.0

Możemy teraz użyć menedżera pakietów węzłów, aby zainstalować Node-Red:

sudo npm zainstaluj node-red --global --unsafe-perm

Spowoduje to wyświetlenie kilku komunikatów o błędach z powodu nieprawidłowego adresu. System jednak wykonuje „kompilację źródła”, aby rozwiązać ten problem. Jeśli powtórzysz powyższą instrukcję (nie jest to konieczne) błędy nie wystąpią.

Mamy teraz zainstalowany Node-Red i jego pakiety pomocnicze i możemy przejść do kroku 3, ładowanie mosquitto.

Konkurs bezprzewodowy
Konkurs bezprzewodowy
Konkurs bezprzewodowy
Konkurs bezprzewodowy

Drugie miejsce w konkursie sieci bezprzewodowej

Zalecana: