# Integracja Sonoff (urzadzenia z oryginalnym firmwarem)

**URL:** <https://ai-speaker.discourse.group/t/integracja-sonoff-urzadzenia-z-oryginalnym-firmwarem/156>\
**Category:** Komponenty niestandardowe\
**Created:** [13 Styczeń 2020 11:57 UTC](https://ai-speaker.discourse.group/t/integracja-sonoff-urzadzenia-z-oryginalnym-firmwarem/156 "2020-01-13T11:57:36Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Autor:** ![badzio](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/badzio/32/313_2.png) [@badzio](https://ai-speaker.discourse.group/u/badzio)\
**Data wpisu:** [13 Styczeń 2020 11:57 UTC](https://ai-speaker.discourse.group/t/integracja-sonoff-urzadzenia-z-oryginalnym-firmwarem/156/1 "2020-01-13T11:57:36Z")

</div>

Nie wiem czy wszyscy o tym wiedza, ale jest mozliwosc integracji urzadzen firmy Sonoff z AIS bez potrzeby zmiany softu. Przydatne dla tych, ktorzy albo nie chca albo nie moga podmienic softu (bo np nie chca stracic dostepu do oryginalnej apki EweLink lub boja sie podpinac kabelkow tudziez rozbierac urzadzen).  
Cala procedura polega na wykorzystaniu tzw _custom\_components_ i jest opisana na tej stronie: [GitHub - peterbuga/HASS-sonoff-ewelink: Home Assistant component to control Sonoff/eWeLink devices with original firmware](https://github.com/peterbuga/HASS-sonoff-ewelink). Jedyne co - domyslnie bramka AIS nie ma obslugi websocket w pythonie i trzeba je doinstalowac. U mnie pomogly komendy:  
pip install websockets  
pip install websocket-client  
pip3 install -r requirements.txt  
pip3 install websockets  
pip3 install websocket-client

Wydaje mi sie czesc z tych komend byla zbedna ale zadna nie zaszkodzila. A robilem to jakies 2tyg temu, pozno w nocy wiec przepisalem po prostu polecenia z historii.

Nastepnie w configuration.yaml dopisujemy sekcje sonoff wg instrukcji i finito - mozna dodawac urzadzenia sonoff do AIS.

Teraz uwaga praktyczna - u mnie wiekszosc urzadzen sonoff sluzy do zapalania swiatel a AIS (podobnie jak HA) domyslnie traktuje je jako przelaczniki (czym w praktyce sa). Na szczescie HA/AIS daja mozliwosc zmiany typu urzadzenia. Aby to uczynic nalezy:

- w pliku configuration.yaml dopisac sekcje light: !include light.yaml
- stworzyc sobie plik ~/AIS/light.yaml w ktorym beda wpisy typu

> - platform: switch  
> name: Twoja nazwa nr 1  
> entity\_id: switch.sonoff\_xxxxxxx
> - platform: switch  
> name: Twoja nazwa nr 2  
> entity\_id: switch.sonoff\_xxxxxxx

Gdzie sonoff\_xxxxxxx to id urzadzenia. Mozna je znalezc na liscie encji w AIS.\

Uwagi praktyczne:

- przedefiniowanie przelacznikow jako swiatla pozwoli na latwe operowanie typu “wylacz wszystkie swiatla”. ponadto, latwiej uzywac identyfikatorow typu light.kuchnia niz switch.sonoff\_10890890 😉
- zamiast tworzenia light.yaml mozna te informacje wpisac bezposrednio w pliku configuration.yaml. Ja po prostu lubie miec porzadek
- kazdy przelacznik Sonoff przedefiniowane w pliku light.yaml bedzie dostepne w AIS w obydwu postaciach - zarowno jako typ switch jak i light
- Sonoff ma ograniczenia jesli chodzi o jednoczesne sesje logowania sie uzytkownika. To oznacza ze zalogowanie sie na konto Sonoff w AIS spowoduje automatyczne wylogowanie z aplikacji EweLink. Natomiast ciekawostka - nie spowoduje to wylogowania na koncie Amazon Alexa ani Google Home 🙂

Aha - tradycyjnie na koniec nalezy sprawdzic poprawnosc pliku configuration.yaml (menu Configuration → Server Controls → Check Config) i zrestartowac bramke poprzez panel www/aplikacje

---

<div class="post-metadata">

**Autor:** ![Iron](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/iron/32/63_2.png) [@Iron](https://ai-speaker.discourse.group/u/Iron)\
**Data wpisu:** [13 Styczeń 2020 18:18 UTC](https://ai-speaker.discourse.group/t/integracja-sonoff-urzadzenia-z-oryginalnym-firmwarem/156/2 "2020-01-13T18:18:02Z")

</div>

Zgadza się działa ale w logach ten custom component sonoff sypie błędami. Używam jednego sonoff SV (do włączania pieca gazowego), który nie dał się sflashować bo nie ma pinów do programowania ale za to ma fabrycznie pełne wyjście beznapięciowe przekaźnika NC/NO/COM bez żadnych przeróbek.

---

<div class="post-metadata">

**Autor:** ![badzio](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/badzio/32/313_2.png) [@badzio](https://ai-speaker.discourse.group/u/badzio)\
**Data wpisu:** [13 Styczeń 2020 20:25 UTC](https://ai-speaker.discourse.group/t/integracja-sonoff-urzadzenia-z-oryginalnym-firmwarem/156/3 "2020-01-13T20:25:27Z")

</div>

Skoro nie dal sie sflaszowac to rozumiem ze masz oryginalny soft Sonoff. Wkleisz logi? U mnie tez sypalo logami wlasnie zwiazanymi z websockets. Ja co prawda nie integrowalem Sonoff SV ale parowalem kilka innych urzadzen (slampher, sonoff rf oraz sonoff s20/s26).

Moze byc tez temat roznic w platformie - z tego co zrozumialem watek odnosnie hard resetu, rozne urzadzenia moga miec rozne wersje softy platformy AIS, wiec Tobie moze brakowac czegos innego.

Podrzuc logi, zobaczymy co tam masz ciekawego.

---

<div class="post-metadata">

**Autor:** ![Iron](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/iron/32/63_2.png) [@Iron](https://ai-speaker.discourse.group/u/Iron)\
**Data wpisu:** [13 Styczeń 2020 20:30 UTC](https://ai-speaker.discourse.group/t/integracja-sonoff-urzadzenia-z-oryginalnym-firmwarem/156/4 "2020-01-13T20:30:01Z")

</div>

**[custom\_components.sonoff] websocket error: [Errno 7] No address associated with hostname**

---

<div class="post-metadata">

**Autor:** ![badzio](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/badzio/32/313_2.png) [@badzio](https://ai-speaker.discourse.group/u/badzio)\
**Data wpisu:** [13 Styczeń 2020 21:54 UTC](https://ai-speaker.discourse.group/t/integracja-sonoff-urzadzenia-z-oryginalnym-firmwarem/156/5 "2020-01-13T21:54:42Z")

</div>

Takiego bledy nie mialem, zwlaszcza ze ja nigdzie nie podaje adresu serwera sonoff 😕 Rozumiem ze DNS na AIS dziala Ci poprawnie? Warto na wszelki wypadek sprawdzic:

> host eu-disp.coolkit.cc  
> host cn-disp.coolkit.cc  
> host us-disp.coolkit.cc

Ja integracje Sonoff-HA robilem w pazdzierniku. Teraz prostu przegralem folder sonoff z RPi na AIS. Ale sprawdzilem, od pazdziernika nie zmienil sie kod na githubie, wiec zmiane w sofcie mozna odrzucic. Na liscie wspieranych urzadzen nie ma Sonoff SV ale z tego co kojarze roznica pomiedzy Sonoff SV a Sonoff Basic to tylko kwestia napiec.

Mozesz przetestowac jedna rzecz - zaloz sobie zupelnie nowe konto ewelink, nie podpinaj do niego zadnych urzadzen ale sprobuj je zintegrowac z AIS.

---

<div class="post-metadata">

**Autor:** ![Tomasz](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/tomasz/32/286_2.png) [@Tomasz](https://ai-speaker.discourse.group/u/Tomasz)\
**Data wpisu:** [14 Styczeń 2020 12:07 UTC](https://ai-speaker.discourse.group/t/integracja-sonoff-urzadzenia-z-oryginalnym-firmwarem/156/6 "2020-01-14T12:07:22Z")

</div>

> [@badzio](#):
>
> > - platform: switch  
> > name: Twoja nazwa nr 1  
> > entity\_id: switch.sonoff\_xxxxxxx
> > - platform: switch  
> > name: Twoja nazwa nr 2  
> > entity\_id: switch.sonoff\_xxxxxxx
> 
> Gdzie sonoff\_xxxxxxx to id urzadzenia. Mozna je znalezc na liscie encji w AIS.\
> 
> - kazdy przelacznik Sonoff przedefiniowane w pliku light.yaml bedzie dostepne w AIS w obydwu postaciach - zarowno jako typ switch jak i light

Czyli będą dwie encje, light i switch ?  
Czy switch zamieni się w light i tylko ta encja zostanie ?  
Bo nie ma jak tego teraz sprawdzić

---

<div class="post-metadata">

**Autor:** ![badzio](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/badzio/32/313_2.png) [@badzio](https://ai-speaker.discourse.group/u/badzio)\
**Data wpisu:** [14 Styczeń 2020 12:42 UTC](https://ai-speaker.discourse.group/t/integracja-sonoff-urzadzenia-z-oryginalnym-firmwarem/156/7 "2020-01-14T12:42:28Z")

</div>

Tak, beda dwie encje na kazde urzadzenie - jedna switch.sonoff\_xxx a druga to light.TwojaPrzyjaznaNazwa

---

<div class="post-metadata">

**Autor:** ![Tomasz](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/tomasz/32/286_2.png) [@Tomasz](https://ai-speaker.discourse.group/u/Tomasz)\
**Data wpisu:** [14 Styczeń 2020 13:16 UTC](https://ai-speaker.discourse.group/t/integracja-sonoff-urzadzenia-z-oryginalnym-firmwarem/156/8 "2020-01-14T13:16:17Z")

</div>

Ok, dzięki. 👍  
A czy ktoś zna sposób jak zmienić istniejące encje Switch na Light, tak żeby była tylko ta jedna light ?

---

<div class="post-metadata">

**Autor:** ![badzio](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/badzio/32/313_2.png) [@badzio](https://ai-speaker.discourse.group/u/badzio)\
**Data wpisu:** [14 Styczeń 2020 14:04 UTC](https://ai-speaker.discourse.group/t/integracja-sonoff-urzadzenia-z-oryginalnym-firmwarem/156/9 "2020-01-14T14:04:00Z")

</div>

Nigdy tego nie testowalem ale wg dokumentacji HA mozna zdefiniowac czy encja ma byc widoczna czy nie. Trzeba uzyc sekcji _customize_, opis jest [tutaj](https://www.home-assistant.io/docs/configuration/customizing-devices/)

---

<div class="post-metadata">

**Autor:** ![Tomasz](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/tomasz/32/286_2.png) [@Tomasz](https://ai-speaker.discourse.group/u/Tomasz)\
**Data wpisu:** [14 Styczeń 2020 16:22 UTC](https://ai-speaker.discourse.group/t/integracja-sonoff-urzadzenia-z-oryginalnym-firmwarem/156/10 "2020-01-14T16:22:48Z")

</div>

Ok, pobawię się ale bardziej szukam takiego rozwiązania, żeby encje **switch.kuchnia** zamienić na **light.kuchnia** bez tworzenia nowej encji 😉

Edit:

> [@badzio](#):
>
> w pliku configuration.yaml dopisac sekcje \*light: !include.light"

tu chyba jest błąd, winno być:  
`light: !include light.yaml`

Edit:

> Nigdy tego nie testowalem ale wg dokumentacji HA mozna zdefiniowac czy encja ma byc widoczna czy nie. Trzeba uzyc sekcji _customize_ , opis jest [tutaj](https://www.home-assistant.io/docs/configuration/customizing-devices/)

Coś nie działa te ukrywanie, zrobiłem zgodnie z opisem czyli w customize.yaml ma wpis:

```
 switch.incan_korytarz_gora:
   friendly_name: Korytarz Góra
   hidden: true

```

a i tak encja jest widoczna  
 ![SharedScreenshot](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/1X/0c856e205022ba205e47b79bbc0e5859567956ee.jpeg)  
Ktoś ma jakiś pomysł ?  
Mam kilka własnych DIY w których np. 2 przełącznik są switch (gniazdko + pompa do basenu) a 2 to włączniki światła a wszystkie w AIS pokazują się albo jako 4 switch albo 4 light (zależy jak wybiorę przy dodawaniu do bramki), muszę je rozdzielić…tylko jak ?

---

<div class="post-metadata">

**Autor:** ![Cino111](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/cino111/32/283_2.png) [@Cino111](https://ai-speaker.discourse.group/u/Cino111)\
**Data wpisu:** [14 Styczeń 2020 17:04 UTC](https://ai-speaker.discourse.group/t/integracja-sonoff-urzadzenia-z-oryginalnym-firmwarem/156/11 "2020-01-14T17:04:51Z")

</div>

Podbijam temat. Mam tem sam problem.

---

<div class="post-metadata">

**Autor:** ![badzio](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/badzio/32/313_2.png) [@badzio](https://ai-speaker.discourse.group/u/badzio)\
**Data wpisu:** [14 Styczeń 2020 19:07 UTC](https://ai-speaker.discourse.group/t/integracja-sonoff-urzadzenia-z-oryginalnym-firmwarem/156/12 "2020-01-14T19:07:10Z")

</div>

> [@Tomasz](#):
>
> tu chyba jest błąd, winno być:  
> `light: !include light.yaml`

Tak, sorry - zbyt duzo rzeczy naraz. Chcialem poprawic wpis w oryginalnym poscie ale nie moge 😕

---

<div class="post-metadata">

**Autor:** ![jolka](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/jolka/32/5_2.png) [@jolka](https://ai-speaker.discourse.group/u/jolka)\
**Data wpisu:** [15 Styczeń 2020 07:21 UTC](https://ai-speaker.discourse.group/t/integracja-sonoff-urzadzenia-z-oryginalnym-firmwarem/156/13 "2020-01-15T07:21:45Z")

</div>

> [@Tomasz](#):
>
> A czy ktoś zna sposób jak zmienić istniejące encje Switch na Light, tak żeby była tylko ta jedna light ?

Znamy sposób ale z oprogramowaniem Tasmota:

`SetOption30`

Enforce Home Assistant auto-discovery as ligh  
`0` = relays are announced as a switch and PWM as a light _(default)_  
`1` = both relays and PWM are announced as light

czyli jak coś takiego wpiszesz w konsoli urządzenia które jest przełącznikiem:

`SetOption30 1`

to w Asystencie domowym takie urządzenie przedstawi się jak światło a nie przełącznik

> **[GitHub - arendst/Tasmota: Alternative firmware for ESP8266 and ESP32 based...](https://github.com/arendst/Tasmota)**
>
> Alternative firmware for ESP8266 and ESP32 based devices with easy configuration using webUI, OTA updates, automation using timers or rules, expandability and entirely local control over MQTT, HTTP...

---

<div class="post-metadata">

**Autor:** ![Tomasz](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/tomasz/32/286_2.png) [@Tomasz](https://ai-speaker.discourse.group/u/Tomasz)\
**Data wpisu:** [15 Styczeń 2020 13:20 UTC](https://ai-speaker.discourse.group/t/integracja-sonoff-urzadzenia-z-oryginalnym-firmwarem/156/14 "2020-01-15T13:20:00Z")

</div>

@jolka dziękuje pięknie.  
Oczywiście działa z tym, że można tylko zmienić wszystkie na Light albo wszystkie na Switch, czyli jak mam na jednym DIY cztery przekaźniki to nie można cześć zrobić Light a część Switch.

---

<div class="post-metadata">

**Autor:** ![Tomasz](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/tomasz/32/286_2.png) [@Tomasz](https://ai-speaker.discourse.group/u/Tomasz)\
**Data wpisu:** [15 Styczeń 2020 13:43 UTC](https://ai-speaker.discourse.group/t/integracja-sonoff-urzadzenia-z-oryginalnym-firmwarem/156/15 "2020-01-15T13:43:39Z")

</div>

> [@badzio](#):
>
> > tu chyba jest błąd, winno być:  
> > `light: !include light.yaml`
> 
> Tak, sorry - zbyt duzo rzeczy naraz. Chcialem poprawic wpis w oryginalnym poscie ale nie moge 😕

Poprawione i teraz jest OK

---

<div class="post-metadata">

**Autor:** ![badzio](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/badzio/32/313_2.png) [@badzio](https://ai-speaker.discourse.group/u/badzio)\
**Data wpisu:** [17 Styczeń 2020 10:27 UTC](https://ai-speaker.discourse.group/t/integracja-sonoff-urzadzenia-z-oryginalnym-firmwarem/156/16 "2020-01-17T10:27:09Z")

</div>

> [@Iron](#):
>
> [custom\_components.sonoff] websocket error: [Errno 7] No address associated with hostname

Po wczorajszej aktualizacji bramki cos mi sie popsulo i mam dokladnie ten sam problem. “No address associated with hostname” pojawia sie kilkukrotnie. Wyglada na jakas regresje.  
Zalaze osobny watek bo problemy sa nie tylko z modulem sonoff.

---

<div class="post-metadata">

**Autor:** ![jolka](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/jolka/32/5_2.png) [@jolka](https://ai-speaker.discourse.group/u/jolka)\
**Data wpisu:** [17 Styczeń 2020 14:06 UTC](https://ai-speaker.discourse.group/t/integracja-sonoff-urzadzenia-z-oryginalnym-firmwarem/156/17 "2020-01-17T14:06:30Z")

</div>

To nie jest wspierane, trzeba zrozumieć czy są custom componetns i dlaczego nie są dodane oficjalnie do Home Assistant.

Nikt nie zagwarantuje działania czegoś takiego bo to nie jest legalne - producent (Sonoff czy Tuya) nie wie o tym, że ktoś tego w ten sposób używa (podszywając się pod ich aplikacje), to w każdej chwili może przestać działać. Nie mamy żadnej umowy z Tuya czy Sonoff (nie informują nikogo o zmianach w interfejsie). Jedyny sposób na stabilnie działające urządzenia tych firm to lokalne MQTT które dostarczamy na bramce i wspieramy. Bo do tego mamy kody i na działanie tego mamy wpływ.

Stosowanie custom components może powodować, że będziesz miał problemy ze stabilnością całego systemu na bramce, tym bardziej, że jak sam przyznajesz nie dokońca rozumiesz co robisz:

> U mnie pomogly komendy:  
> pip install websockets  
> pip install websocket-client  
> pip3 install -r requirements.txt  
> pip3 install websockets  
> pip3 install websocket-client  
> Wydaje mi sie czesc z tych komend byla zbedna ale zadna nie zaszkodzila.

To co instalujesz na bramce ma wpływ na inne komponenty. I może prowadzić do tego, że przestanie Ci coś działać lub się instalować - z powodu zależności pomiędzy pakietami.

PS  
Żeby była sprawa jasna nie zabraniamy nikomu eksperymentować, ale nie zgłaszaj wyniku swoich eksperymentów jako problemów/regresji na bramce, bo to nie prawda.

Wprowadzimy kategorie: Komponenty niestandardowe / Custom components i będziemy tam przenosili te tematy żeby była jasność, że to nie jest wspierane.

---

<div class="post-metadata">

**Autor:** ![badzio](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/badzio/32/313_2.png) [@badzio](https://ai-speaker.discourse.group/u/badzio)\
**Data wpisu:** [17 Styczeń 2020 14:37 UTC](https://ai-speaker.discourse.group/t/integracja-sonoff-urzadzenia-z-oryginalnym-firmwarem/156/18 "2020-01-17T14:37:53Z")

</div>

Po czesci sie zgadzam. Na pewno dobrym pomyslem jest stworzenie osobnej kategorii dla _custom components_🙂  
W konkretnym przypadku z instalacja websockets - moje watpliwosci byly glownie czy powinienem uzyc pip czy pip3 bo nie wiem czy sonoff wymagal pythona 2.x czy tez 3.x.

do reszty odniose sie w innym watku

---

<div class="post-metadata">

**Autor:** ![jolka](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/jolka/32/5_2.png) [@jolka](https://ai-speaker.discourse.group/u/jolka)\
**Data wpisu:** [17 Styczeń 2020 14:46 UTC](https://ai-speaker.discourse.group/t/integracja-sonoff-urzadzenia-z-oryginalnym-firmwarem/156/19 "2020-01-17T14:46:31Z")

</div>

wujaśnię, że każdy pakiet pythona który mamy na bramce jest w ściśle określonej wersji, to ten numerek po znaku ==

```auto
PyJWT==1.7.1
PyNaCl==1.3.0
aiohttp==3.6.1
aiohttp_cors==0.7.0
astral==1.10.1
async_timeout==3.0.1
attrs==19.3.0
bcrypt==3.1.7
certifi>=2019.11.28
cryptography==2.8
defusedxml==0.6.0
distro==1.4.0

+ dziesiątki innych pakietów

```

robiąc coś takiego:

```auto
pip install websockets

```

instalujesz websockets w najnowszej wersji dostępnej w repo z którego to zostanie zainstalowane  
w sumie to nie wiadomo w jakiej

Jeżeli jakiś wbudowany komponent w Home Assistant będzie wymagał websockets we innej wersji niż ta którą ręcznie zainstalowałeś, to nie uda się jego instalacja - nie będą spełnione zależności.

Jeżeli ten komponent dojdzie w aktualizacji to nie uda się aktualizacja Twojego systemu.

---

<div class="post-metadata">

**Autor:** ![Pattio](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/pattio/32/10849_2.png) [@Pattio](https://ai-speaker.discourse.group/u/Pattio)\
**Data wpisu:** [11 Luty 2020 18:42 UTC](https://ai-speaker.discourse.group/t/integracja-sonoff-urzadzenia-z-oryginalnym-firmwarem/156/20 "2020-02-11T18:42:42Z")

</div>

Ok a mam pytanie jeśli wydałem polecenie  
pip install websockets  
i chyba po nim zaczęły szwankować komendy wydawane do pilota, to jak powrócić do oryginalnej wersji?

[Następna strona](https://ai-speaker.discourse.group/t/integracja-sonoff-urzadzenia-z-oryginalnym-firmwarem/156.md?page=2)
