Inteligentny dom tanim kosztem, HomeKit Tytułowa
Inteligentny dom tanim kosztem, HomeKit „zrób to sam”, cz. 3 „od słów do czynów”
  • 59
  • 11.03.2017
Jaromir Kopp

Inteligentny dom tanim kosztem, HomeKit „zrób to sam”… to będzie ważny odcinek. Dziś dokonamy czegoś, co pozwoli w przyszłości na integrację naszych urządzeń z HomeKit (za pomocą nieoficjalnego HomeBridge). Będzie trochę pracy.

Chcecie zobaczyć na żywo „jak to się robi”?
Zapraszam na MAKE IT SIMPLE – DZIEŃ Z INFORMATYKĄ NA WSB WE WROCŁAWIU, 5 KWIETNIA!

Na początek muszę Wam przypomnieć, że HomeBridge jest tworem „odwrotnej inżynierii” i nie jest wspierany przez Apple, czyli istnieje ryzyko, że wraz z którąś wersją iOS może zostać zablokowany. Jednak nawet w takiej sytuacji (do której mam nadzieję, nie dojdzie) to, co teraz zrobimy, bardzo się przyda, bo uwolnimy nasze Sonoffy od chińskiego serwera i będziemy mogli obsługiwać je z poziomu WWW lub przez brokera MQTT (bardzo popularne rozwiązanie).

Podoba Ci się artykuł? Możesz zafundować mi piwo (lub kawę) ;-) Donate a coder

Apple dba o bezpieczeństwo i wymusza na producentach urządzeń zgodnych z HomeKit wysokie standardy pod tym względem. Dlatego i my pamiętajmy, że przejęcie kontroli nad naszą domową instalacją może mieć śmieszne (jak ktoś zgasi nam światło) lub bardzo poważne konsekwencje (gdy termostat doprowadzi to wybuchu kotła) lub wyłączą nam czujniki gazu abo dymu. Sami zadbajmy o wysoką jakość połączeń elektrycznych i robienie ich „z głową”. Zawsze lepiej poradzić się elektryka niż spalić dom.

Pamiętajcie, że te ingerencje oznaczają utratę gwarancji i robicie to na własną odpowiedzialność!

Pozostałe części cyklu: INTELIGENTNY DOM TANIM KOSZTEM, HOMEKIT.

Inteligentny dom tanim kosztem… zaczynamy.

Pierwsze co musimy zrobić to zapewnić połączenie adaptera USB-TTL (RS) do układów Sonoff’a. Najczęściej wlutowuje się piny lub gniazdko, ale można zaryzykować po prostu wetknięcie pinów czy samych przewodów z męską końcówką w dziurki na płytce. Proces wgrywania firmware trwa około półtorej minuty i musimy w tym czasie zapewnić nieprzerwany kontakt 4 kabelków. W przypadku przerwania połączenia ryzyko zniszczenia Sonoff’a jest na szczęście niezbyt niewielkie, ponieważ bootloadrer znajduje się w kontrolerze, a nie pamięci Flash. Jednak wlutowanie złącza przyda się, gdy będziemy do Sonoffa WiFi lub WiFi RF podłączać sensory, czujniki czy przełączniki (GPIO14, GPIO1, GPIO3), a w Sonoff TH uzyskamy dodatkowe wyprowadzenia GPIO3 i GPIO1 (poza GPIO14 i GPIO4, które są na złączu Jack 2,5 mm) przydatne do tych samych celów.

Choć dawno nie lutowałem, to udało mi się za pierwszym razem, nawet gdy musiałem użyć dużej lutownicy do witraży. Używałem pasty lutowniczej. Przy kontakcie z lutownicą może pryskać, więc uważajcie na oczy, a po lutowaniu dokładnie oczyśćcie z resztek płytkę np. miękką szczoteczką do zębów i jakimś alkoholem. Nie jestem w tym fachowcem, więc nie będę dalej opisywał mojej procedury. Popytajcie lepiej znawców, którzy mogliby „pęc ze śmiechu”, czytając o tym, jak walczyłem z lutownicą.

Zanim zaczniesz…

Przeczytaj przynajmniej dwa razy, najlepiej „ze zrozumieniem” artykuł do końca. Zaoszczędzi to nerwów i rozczarowań.

Do wgrywania użyjemy adaptera USB-TTL najlepiej na układzie FT232 i koniecznie z zasilaniem 3,3 V. Ja używam tego: Adapter USB na UART z FT232 złącze micro USB. Działa bez instalowania dodatkowych sterowników z macOS.

Adapter USB-TTL zworka zasilania 3,3 V

Przypomnę: Przed każdym podpięciem adaptera RS upewnijcie się, że odłączyliście zasilanie sieciowe od Sonoff’a! Tak samo oczywiście przed otwarciem obudowy. Na płytkach są „gołe” ścieżki z napięciem sieciowym! To może zabić lub co gorsze uszkodzić Wam Maka!

Nie ważne, jaką metodę obraliście, połączone ze sobą powinny być cztery piny.

Po lewej adapter USB-TTL, po prawej przeprogramowywane urządzenie.

  • VCCIO -> VDD (3V3) – Zasilanie 3,3 V
  • GND -> GND – Masa zasilania i sygnalizacji
  • TXD -> RX – „Nadawanie” z „odbiorem”
  • RXD -> TX – „Odbiór” z „nadawaniem”
  • Nie podłączamy nic innego!

Adapter USB-TTL złącza Electrodragon Relay złącza Sonof Pow (TH) Sonoff WiFi (RF)

Z połączeniem jednak wstrzymajmy się jeszcze trochę.

Małe wyjaśnienie… pojawił się na zdjęciach Electrodragon Relay, o którym wcześniej nie pisałem. Po prostu mam je dopiero od kilku dni, a wcześniej ich nie znałem. Jest szansa, że niebawem pojawią się w Elty.pl. Napiszę o nim niebawem coś ekstra.

Gdy już wiemy co z czym połączyć, musimy pobrać stosowne oprogramowanie.

Wchodzicie na stronę PlatformIO.org i postępujecie zgodnie z instrukcją, czyli:

Pobieracie edytor Atom

Wchodzicie w menu: Atom -> Preferences -> Install

Wyszukujecie i instalujecie platformio-ide

Można zamknąć i uruchomić Atom jeszcze raz. Będzie on wyposażony w dodatkowe menu PlatformIO.

Gdy mamy już środowisko, pobieramy kod źródłowy oprogramowania.

Wchodzimy na stronę Github arendst/Sonoff-Tasmota.

Po prawej klikamy w zielone: Clone or download. Wybieramy „Download ZIP” (chyba że ktoś jest z Githubem obeznany).

Rozpakowywujemy i umieszczamy w wybranej teczce gdzieś np. w Dokumentach. Dziś pobrałem wersję 4.0.3, ale jak będziecie czytać ten art., mogą być już kolejne, bo oprogramowanie jest stale rozwijane.

Uruchamiamy Atoma, z Menu File wybieramy Open i wskazujemy teczkę z oprogramowaniem. Najprawdopodobniej będzie miała nazwę: Sonoff-Tasmota-master.

Po otwarciu możemy sprawdzić, czy wszystko jest OK, wybierając z menu PlatformIO -> Build lub klikając w Ikonkę z „ptaszkiem” w lewym górnym rogu. Jeżeli wszystko jest ok, to po kilkudziesięciu sekundach na dole w konsoli powinniśmy zobaczyć zielony napis „Success”.

Teraz musimy dostosować firmware do naszych potrzeb. Na liście po lewej klikamy w teczkę Sonoff, dalej wybieramy plik: user_config.h. Będziemy go modyfikować. Jest to droga „na skróty”, pełną przejdziemy następnym razem.

Zaczynamy od góry. Jeżeli chcemy ustawić stały numer IP dla naszego urządzenia, powinniśmy skasować dwa znaki // przed #define USE_STATIC_IP_ADDRESS i poniżej wpisać stosowne numerki oddzielając przecinkiem zamiast kropką (jak na przykładzie). Jeżeli nie wiecie co to „stały numer IP” nic nie zmieniajcie.

Następnie w linijce #define STA_SSID1 wpisujemy w cudzysłowie dokładnie nazwę naszej sieci WiFi (to na zielono). Niżej w #define STA_PASS1 wpisujemy hasło do sieci. Jeszcze niżej analogicznie możemy wpisać drugą sieć WiFi.

W okolicach linii 80 możemy wyłączyć obsługę Domoticz’a (chyba że wiemy, co to jest i chcemy użyć). Aby to zrobić, trzeba wpisać dwa znaki // przed #define USE_DOMOTICZ, po czym linijka zrobi się szara. Podobnie, jeżeli nie będziemy teraz podłączać sensorów z szyną i2c można wyłączyć #define USE_I2C. #define USE_IR_REMOTE odpowiada za obsługę nadajnika IR (pilot na podczerwień), a #define USE_WS2812 odpowiada za obsługę taśm LED ze sterowanymi diorami WS2812. Też można wyłączyć, dodając // z przodu wybranych do wyłączenia usług.

Około linii 88 znajdziemy login i hasło do serwera WWW, jaki będzie działał w urządzeniu: #define WEB_USERNAME „admin” i #define WEB_PASSWORD „”. W cudzysłów możemy wpisać własne hasło (co zalecam, aby choć trochę zabezpieczyć nasze urządzenie).

Atom PlatformIO Kompilacja sukces

Po tych zmianach znów sprawdźmy, czy projekt się kompiluje, klikając ptaszka „Build” lub wybierając tę opcję z menu PlatformIO. Jeżeli wszystko jest OK, to sprawdzimy, czy nasz adapter USB-TTL jest poprawnie rozpoznawany przez system.

Sprawdzenie adaptera USB-TTL

Podłączamy go do komputera (najlepiej bez podpiętego urządzenia) i zaglądamy do menu PlatformIO -> Serial monitor (lub ikonka ze wtyczką). Powinniśmy zobaczyć nazwę urządzenia na liście pod napisem Port. Jeżeli tak jest, odłączamy USB, podpinamy kabelkami urządzenie do adaptera USB->TTL dokładnie wg wcześniejszych wytycznych, sprawdzamy jeszcze raz połączenie i ustawione napięcie zasilania na adapterze (3,3 V).

Teraz wciskamy i przytrzymujemy wciśnięty przycisk w urządzeniu (w Electrdragon BTN2, a Sonoff RF będzie omówiony niżej) i podłączamy adapter do USB (czyli włączamy zasilanie urządzenia). Po włączeniu puszczamy guzik. Nie powinna się świecić żadna diodka (wyjątkiem jest Electrodragon). Następnie wciskamy ikonkę ze strzałką w prawo lub wybieramy z menu PlatformIO -> Uplodad.

Tak wgrywam firmware do Dragona

Jeżeli wszystko jest ok, czyli podłączenia prawidłowe i urządzenie wprowadzone w tryb ładowania firmwaru, to po chwili w oknie konsoli zobaczymy postęp ładowania, a jedna z diodek na adapterze USB-TTL może mrugać dość intensywnie. Zielony napis „Success” w konsoli będzie oznaczał sukces z wgraniem firmwaru.

Wgranie firmwaru - sukces

Jeżeli okno Serial monitor nie otworzy się automatycznie, to klikamy we Wtyczkę i następnie OK. Powinniśmy po chwili zobaczyć między innymi numer IP, pod jakim urządzenie zalogowało się do naszej sieci WiFi (coś jak 192.168.1.104). Następnie wpisujemy ten adres (numer) w przeglądarce WWW i sprawdzamy, czy nasze urządzenie działa. Uwaga: w przypadku Electrodragon zasilanie z adaptera USB może być niewystarczające (ma rozbudowany zasilacz i z 3,3 V generuje też 5 V dla innych urządzeń) co będzie powodować niestabilną pracę. Należy go odłączyć od adaptera, umieścić w obudowie i podpiąć do zasilania sieciowego oczywiście przestrzegając wszystkich zasad BHP. Można też zsilać go z 5V przez odpowiedni (opisany) pin.

W ten oto sposób uwolniliśmy się od chińskiego serwisu i możemy sterować urządzeniem przez przeglądarkę WWW w sieci lokalnej.

Firmware Sonoff-Tasmota serwer WWW

Jeżeli co jakiś czas Sonoff nie będzie reagował, to nie należy się przejmować. Po prostu szuka serwera (brokera) MQTT. Można to wyłączyć przez przeglądarkę w Configuration -> Configure other i tam odhaczając MQTT. MQTT będzie potrzebne dopiero po uruchomieniu brokera MQTT i HomeBridge.

Sonoff RF

W jego przypadku nie wystarczy przytrzymać podczas włączania przycisk, aby wprowadzić go w tryb ładowania firmwaru. Należy jeszcze zewrzeć dwa piny na płytce w tym samym czasie (tylko przy podłączaniu zasilania). Jest to zadanie wymagające zręczności lub pomocy drugiej osoby. Piny i mój sposób na zwieranie widoczny jest na zdjęciu. Jeżeli po włączeniu zasilania zapali się diodka zielona, to znaczy, że coś zrobiliśmy źle i należy zabieg powtórzyć.

Sonoff RF wprowadzanie w tryb ładowania firmwaru

Mam nadzieję, że Wszystko poszło Wam równie sprawnie, jak i mi za pierwszym razem (choć nie miałem takiego opisu) i uwolniliście się już od chińskiego serwera.

W następnym odcinku poznamy więcej opcji konfiguracji oraz spróbujemy podłączyć dodatkowe sensory i przełączniki. Do tego czasu możecie postudiować Wiki projektu Sonoff-Tasmota.

Pamiętajcie o innych częściach cyklu INTELIGENTNY DOM TANIM KOSZTEM, HOMEKIT.

Electrodragon RelaySonoff WiFi (RF) od spoduSonof Pow (TH) od spodu

Użytkownik komputerów Apple od 1991 roku. Fan transportu rowerowego. Domorosły programista (od 1984, Atari, Amiga). Programuje dla iOS i macOS. Dobrze zna Filemaker. Uczulony na Windowsa, Androida i JB. Uznający wyższość „Poniechaj” nad „Anuluj”.
  • Michał Czarkowski

    A to nie ten sonoff co go jeszcze trzeba tam zwierac?

  • Mam takie dwa… mało dokładne (8 bit podaję temp. co 1°C), lepiej weź DHT22, drożysz ale precyzyjny. Bez rezystora, bezpośrednio zasilanie + 3,3V, masa, a dane do GPIO np. 14. Jedna nóżka nie jest wykorzystana w nich.

  • Michał Czarkowski

    Ok. Ten po prostu mi lezy a ze planujego jednego sonoffa na korytarzy to az tak dokladna temp mi mie potrzebna.

    Czyli jak rozumiem do tego tego potrzebuje rezystora a ten dht22 po prodtu sobie wpinam i mam :)

  • Żadnych rezystorów… łączysz kablami i już. Oba…

  • Michał Czarkowski

    Super dzieki ;) to juz mam kolejny pomysl :)

  • Maciej Olejnik

    Ten ma przycisk. W teorii przytrzymuje przycisk, podlaczam USB, puszczam przycisk i powinien byc w trybie ładowania firmware. A nie jest :)

  • Maciej Olejnik

    Czy ktoś komu działa, mógłby rzucić okiem w ustawieniach portu RS w Atomie, jakie na ustawienia zaawansowane. Na screenie w artykule na przykład widać, że ustawiony jest LF na zakończenie linii, a ja miałem standardowo LFCF. Tam jest seria ustawień po „Toggle Advanced Settings”.

    Wrzuciłbym screena, ale niedasię :)

  • Maciej Olejnik

    OK. Poszło! W lekkiej desperacji kombinowałem z długością przytrzymania guzik podczas podłączania do USB i przy około 10s nagle transmisja zadziałała.

  • Michał Czarkowski

    A jeszcze jedno pytanie. Czy aktualizuje Ci temperature jak jestes poza siecia lokalna? Przelacznik i wilgotnosc dziala, ale macu mnie problem z temperatura