Natywna integracja z Home Assistant (komponent)

  • 60 Odpowiedzi
  • 504 Wyświetleń
*

Offline admin

  • *****
  • 931
  • Twórca i moderator forum
    • Zobacz profil
    • Forum ExtaLife
Natywna integracja z Home Assistant (komponent)
« dnia: Listopad 14, 2019, 17:14:25 »
Oto jest! Obiecana nowa, bardziej funkcjonalna i prostsza w instalacji wersja integracji z Home Assistant! 🔥🔥🔥
Do pobrania z: https://github.com/dgtal1/extalife_custom_component/releases/tag/1.0.0
Zdecydowałem, że będę korzystać z github’a, bo to może trochę pomóc w zarządzaniu wersjami.

Opis rozwiązania:
Pakiet plików w archiwum zip w załączniku pozwala zintegrować Exta Life z Home Assistant z pominięciem pośrednich, dodatkowych narzędzi jak skrypty python oraz MQTT.
Integracja ta działa na zasadzie natywnego komponentu Home Assistant czyli tak jak wszystkie integracje, które możecie zobaczyć na stronie https://www.home-assistant.io/integrations/
Różnica do tych integracji wbudowanych w HA jest taka, że tą integrację trzeba zainstalować samemu zamiast po prostu używać po ściągnięciu HA. Działa ona na zasadzie tzw. Custom Component czyli komponentu, który nie jest oficjalnie dystrybuowany z HA, ale działa na takiej samej zasadzie jak komponenty wbudowane w HA. Posiada taką samą budowę i architekturę jak wbudowane w HA integracje.
Integracja została zbudowana w dużej mierze dzięki pracy twórcy integracji supla. Ta prosta integracja pozwoliła mi zrozumieć jak to powinno się w HA budować. Z nieskrywaną dumą przyznam, że moja integracja Exta Life przerosła już na starcie możliwościami oryginalną integrację supla :) (np wspiera cykliczne discovery bez konieczności restartu HA, aby dodać nowe urządzenie, obsługuje wszystkie typy urządzeń Exta Life).
Instalacja jest banalnie prosta, ale o tym później.

Funkcjonalność:
  • integracja obsługuje tzw. device discovery czyli samoczynnie tworzy nowe encje odpowiadające kanałom odbiorników i czujników Exta Life (dla urządzeń wielokanałowych stworzy się tyle encji ile kanałów z wyjątkiem multisensora RCM, gdzie stworzą się osobne encje dla każdej z wielkości mierzonych, gdyż najprawdopodobniej wszystkie wielkości nadawane są na jednym kanale). Dzieje się to z każdym odpytaniem kontrolera o stan odbiorników czyli co każde 5 minut, ale można zdefiniować w konfiguracji swój interwał czasowy
  • integracja nasłuchuje na osobnym połączeniu wiadomości z kontrolera zawierające tzw notyfikacje zmiany stanu. Czyli HA zostanie powiadomiony o każdej zmianie stanu wywołanej przez aplikację Exta Life oraz o każdej zmianie stanu dowolnego czujnika gdy tylko kontroler otrzyma dane z czujnika i wyśle taką informację. Na tą funkcjonalność niektórzy z Was czekali (choć wierzę, że porzucicie aplikację Exta Life na rzecz aplikacji HA na zasadzie one app to rule them all ;) ) Możliwe jest zatem zrealizowanie sterowania urządzeniami natychmiast po zmianie stanu czujnika ruchu lub kontaktronu! Prawdziwy smart home! :)
  • integracja potrafi samoczynnie wykryć kontroler tak jak to robi aplikacja Exta Life, więc podawanie jego IP nie jest koniecznie, ale możliwe

Obsługiwane urządzenia Exta Life:
  • Odbiorniki: ROM, ROP, RDM, RDP, SRP, SRM oraz nowości 2019 - gniazdko ROG-21, SLR-21/22, RGT-01 i GKN-01
  • Czujniki: czujnik temperatury z RNK oraz czujniki RCT, eksperymentalna obsługa nowych czujników 2019 - multisensor RCM, czujnik zalania RCZ, czujnik ruchu RCR, kontaktron RCK
Powyższe nowe czujniki są obsługiwane na zasadzie moich domysłów co do ich modelu danych i ich reprezentacji w wiadomościach JSON z kontrolera. W rzeczywistości zweryfikujemy czy to działa, gdy tylko się pojawią i gdy ktoś będzie w stanie je przetestować (kolego @shibby - liczę, że będziesz w stanie pozyskać nowości do testów :) ).
Urządzenia Exta Free nie są wspierane.

Czego integracja nie posiada z punktu widzenia funkcjonalności HA:
  • nieobsługiwana jest konfiguracja z GUI (tzw. config flow & config entry), a jedynie w pliku configuration.yaml. Być może kiedyś z czasem się to pojawi, gdy poznam development HA jeszcze lepiej
  • z powyższego względu nieobsługiwany jest feature HA o nazwie Device Registry / integrations. Czyli nie zobaczymy w ekranie integracji (nie mylić z ekranem stanu w narzędziach deweloperskich) wszystkich encji stworzonych przez tą integrację tak jak to widzimy np dla integracji Chromecast, Philips Hue czy Esphome. Nie udało mi się tego zaimplementować, a dodatkowo wymagałoby to sporych zmian w integracji. Może z czasem się to pojawi
  • nieobsługiwany jest nowy feature HA o nazwie Device triggers czyli uproszczone tworzenie automatyzacji. Wiąże się to z powyższymi kwestiami

Instalacja i konfiguracja:
1. Wypakować podkatalog extalife z archiwum do katalogu HA config/custom_components. W razie potrzeby stworzyć katalog custom_components gdy nie istnieje. Po wypakowaniu pliki z kodem (rozszerzenie .py) powinny znajdować się w katalogu HA config/custom_components/extalife

2. w pliku configuration.yaml dodać następujący wpis z parametrami:
extalife:
  user: <user>
  password: <hasło>

Opcjonalnie można też podać “ręcznie” adres IP kontrolera podając parametr controller_ip, jeśli z jakiegoś względu integracja nie poradzi sobie z jego wykryciem w sieci.
Jest także możliwość zdefiniowania własnego interwału czasowego (w minutach) do wykonywania cyklicznych zapytań o stan poprzez podanie parametru poll_interval.

Przykładowa minimalna konfiguracja:
extalife:
  user: root
  password: mojehasloniedozlamania

Przykładowa szczegółowa konfiguracja:
extalife:
  user: root
  password: mojehasloniedozlamania
  controller_ip: 192.168.1.25
  poll_interval: 3


3. Zrestartować HA, aby integracja została załadowana.


Proszę w tym wątku o wszelkie komentarze z problemami, niedziałającymi funkcjami, wrażeniami, sugestiami itp. Im więcej błędów znajdziemy tym lepiej, bo to pozwoli na stworzenie stabilnego i lepszego softu.

Liczę, że ta integracja pozwoli ściągnąć uwagę kolejnych potencjalnych użytkowników Exta Life, a wśród nich może znajdzie się jakiś programista mogący mnie wesprzeć w działaniach integracyjnych. A najlepiej gdyby udało się nawiązać współpracę z Zamel (który powinien być tym na prawdę sam z siebie zainteresowany jako promocją swojego systemu) i tym sposobem testować kompatybilność i nadal rozwijać integrację, choć patrząc na dotychczasowe moje doświadczenia z tą firmą to na to jednak chyba nie mogę liczyć.

Dla chętnych przyłączyć się do pracy nad tą integracją deweloperów - oto link do repozytorium Github.

ROADMAP:
Integrację tą chciałbym nadal rozwijać i sprawiać, że jeszcze głębiej będzie się integrowała z HA i wykorzystywała jego dostępne ficzery, aby użytkownikom jeszcze łatwiej było z niej korzystać i zarządzać encjami reprezentującymi urządzenia Exta Life.
Dlatego zdecydowałem, że może warto, aby wiadomo było w jakim kierunku będzie to podążało
Oto plany na kolejne wersje:
1.1:
- zmienić sposób działania dla rolet wg zasad HA (open = 100, closed = 0). Naprawi to sterowanie przyciskami w GUI Lovelace
- rozszerzyć listę ikon, które spowodują mapowanie urządzeń ROP/ROP jako świateł (encje light) w HA
- wprowadzić dodatkową konfigurację dla encji cover i możliwość modyfikacji listy ikon mapujących dla świateł - także poprzez wpis w configuration.yaml

1.2:
- dodać funkcjonalność Config Entry - czyli możliwości skonfigurowania integracji z poziomu GUI (ekran Integracje). Pierwsze PoC za mną i chyba uda się to zrobić. Dzięki temu możliwe będzie zaimplementowanie kolejnych ficzerów HA w kolejnych wersjach, bo jest to warunek,aby można było je zaimplementować

1.3:
- Dodać tzw. Device Triggers & Device Automations czyli maksymalne uproszczenie tworzenia automatyzacji dla urządzeń Exta Life w HA. Bardzo przydatna sprawa dla mniej technicznych osób
« Ostatnia zmiana: Grudzień 02, 2019, 11:06:04 wysłana przez admin »
Elementy systemu, których używam: 3xSRP-22, 5xRDP-21, 3xROP-22, 4x ROP-21, 1xP-456/36, 1xRNK-24, 3x RNP-21, 1xRCT-22, aplikacja na Android oraz iOS + Home Assistant

Odp: Natywna integracja z Home Assistant (komponent)
« Odpowiedź #1 dnia: Listopad 14, 2019, 17:58:05 »
Biorę się do instalacji. Wielkie dzięki  :)

Odp: Natywna integracja z Home Assistant (komponent)
« Odpowiedź #2 dnia: Listopad 14, 2019, 18:39:12 »
Mam taki błąd po restarcie HA (wersja hass.io 0.101.3):

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/setup.py", line 176, in _async_setup_component
    component.setup, hass, processed_config  # type: ignore
  File "/usr/local/lib/python3.7/concurrent/futures/thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/config/custom_components/extalife/__init__.py", line 98, in setup
    async_track_time_interval(hass, data.update, timedelta(minutes=conf[CONF_POLL_INTERVAL]))
NameError: name 'timedelta' is not defined





*

Offline admin

  • *****
  • 931
  • Twórca i moderator forum
    • Zobacz profil
    • Forum ExtaLife
Odp: Natywna integracja z Home Assistant (komponent)
« Odpowiedź #3 dnia: Listopad 14, 2019, 18:54:03 »
Ups, mały falstart  :-[
Czyściłem kod przed wrzuceniem na gita i skasowałem chyba przypadkowo jeden istotny import.
Już zaktualizowałem i obecny kod powinien działać. Sprawdziłem na instancji testowej.
Zaktualizowałem link do pobrania w 1 poście.
Elementy systemu, których używam: 3xSRP-22, 5xRDP-21, 3xROP-22, 4x ROP-21, 1xP-456/36, 1xRNK-24, 3x RNP-21, 1xRCT-22, aplikacja na Android oraz iOS + Home Assistant

Odp: Natywna integracja z Home Assistant (komponent)
« Odpowiedź #4 dnia: Listopad 14, 2019, 21:16:22 »
Ups, mały falstart  :-[
Czyściłem kod przed wrzuceniem na gita i skasowałem chyba przypadkowo jeden istotny import.
Już zaktualizowałem i obecny kod powinien działać. Sprawdziłem na instancji testowej.
Zaktualizowałem link do pobrania w 1 poście.

Dzięki za nową wersję. Wszystkie moje rolety dodały się prawidłowo, pozycja i stan też OK. Zauważyłem tylko jeden mały problem. Na widoku stanów szczałki góra i dół są odwrócone przez co nie działają. Wygląda jakby stan ich był odwrócony. Jeżeli roleta jest zamknięta to szczałka góra jest disabled a dolna enabled jak jest otwarta to jest odwrotnie. Stop jest enabled cały czas więc OK. Nie wczytywałem się za bardzo w kod ale z tego co widziałem to głównie bazuje na pozycji rolety 0 - open i 100 - closed i te stany są ok tylko wizualizacja coś dziwnego z tym robi ...

Odp: Natywna integracja z Home Assistant (komponent)
« Odpowiedź #5 dnia: Listopad 14, 2019, 23:02:39 »
Na bardzo szybko, u mnie:
- wykrył wszystkie komponenty które mam i te działają ok
- w bonusie widzę "Fake SLR22" oraz "Grzejnik pokój" których nie mam  :D

*

Offline admin

  • *****
  • 931
  • Twórca i moderator forum
    • Zobacz profil
    • Forum ExtaLife
Odp: Natywna integracja z Home Assistant (komponent)
« Odpowiedź #6 dnia: Listopad 15, 2019, 08:30:58 »
Zauważyłem tylko jeden mały problem. Na widoku stanów szczałki góra i dół są odwrócone przez co nie działają. Wygląda jakby stan ich był odwrócony. Jeżeli roleta jest zamknięta to szczałka góra jest disabled a dolna enabled jak jest otwarta to jest odwrotnie. Stop jest enabled cały czas więc OK. Nie wczytywałem się za bardzo w kod ale z tego co widziałem to głównie bazuje na pozycji rolety 0 - open i 100 - closed i te stany są ok tylko wizualizacja coś dziwnego z tym robi ...
Dzięki za test. Cieszę się, że zaczęło działać.
Odnośnie reprezentacji rolet w GUI - zgadza sie. To taki trochę 'known issue' że się tak wyrażę (it's a feature, not a bug ;)). Niestety w HA domyślnie encja / platforma 'cover' reprezentuje stan otwarcia i zamknięcia odwrotnie niż w Exta Life. Jest to opisane w dokumentacji - link. I moim zdaniem jest tutaj pewna niespójność lub ograniczenie, które uważam powinno byćzniesione i chyba otworzę issue do tego. Developer teoretycznie może zaimplementować to odwrotnie z pełną dowolnością i podawać stan 'open' gdy wartość pozycji rolety == 0, ponieważ metoda ma zwrócić true lub false, a nie samą pozycję. Niestety potem jest już hardcode w GUI HA. Zerknij na ten kod HA GUI: 1 i 2
Dla mnie intuicyjnym sposobem jest akurat obsługa jak w aplikacji Exta Life i tak to zaimplementowałem w integracji - pozycja rolety w GUI HA jest numerycznie taka sama jak w aplikcji Exta Life. Np 0 = 0, 20 = 20 itp. Niestety powoduje to właśnie problem z dostępnością strzałek w GUI. W integracji przez MQTT zrobiłem to tak samo. Nie ma na to chyba sposobu, aby GUI zachowywało się tak jak aplikacja Exta Life.

Od jakiegoś czasu myślę, żeby jednak zmienić tą implementację i zrobić to domyślnie tak jak HA przewidział. Będzie to jednak powodowało, że trzeba będzie np w scenach i przy sterowaniu bezpośrednio z GUI podawać wartość odwróconą czyli (100 - pozycja_Exta_Life). Wtedy GUI HA będzie działało poprawnie.

Jednak jeśli komuś nie przeszkadza to, że strzałki niepoprawnie się zachowują to zmierzam rozszerzyć konfigurację w pliku configuration.yaml o nowe parametry.
Np
extalife:
  platform_config:
    cover:
      inverted_status: true
 
i generalnie pod parametrem 'platform_config' dodawać kolejne parametry dla pozostałych platform/domen jeśli pojawi się taka potrzeba.
« Ostatnia zmiana: Listopad 15, 2019, 08:32:32 wysłana przez admin »
Elementy systemu, których używam: 3xSRP-22, 5xRDP-21, 3xROP-22, 4x ROP-21, 1xP-456/36, 1xRNK-24, 3x RNP-21, 1xRCT-22, aplikacja na Android oraz iOS + Home Assistant

*

Offline admin

  • *****
  • 931
  • Twórca i moderator forum
    • Zobacz profil
    • Forum ExtaLife
Odp: Natywna integracja z Home Assistant (komponent)
« Odpowiedź #7 dnia: Listopad 15, 2019, 08:37:06 »
Na bardzo szybko, u mnie:
- wykrył wszystkie komponenty które mam i te działają ok
- w bonusie widzę "Fake SLR22" oraz "Grzejnik pokój" których nie mam  :D
No tak, byłem przekonany, że pousuwałem te fake urządzenia przed publikacją, ale chyba jednak nie :) Opublikuję niedługo kolejną wersję i dam znać.
Ale pomyśl o tym tak - zaoszczędziłeś ponad 4 stówy i masz za darmo dwa dodatkowe urządzenia Exta Life!! ;) Software kreuje rzeczywistość  ;D
Elementy systemu, których używam: 3xSRP-22, 5xRDP-21, 3xROP-22, 4x ROP-21, 1xP-456/36, 1xRNK-24, 3x RNP-21, 1xRCT-22, aplikacja na Android oraz iOS + Home Assistant

Odp: Natywna integracja z Home Assistant (komponent)
« Odpowiedź #8 dnia: Listopad 15, 2019, 08:45:36 »
Ale pomyśl o tym tak - zaoszczędziłeś ponad 4 stówy i masz za darmo dwa dodatkowe urządzenia Exta Life!! ;) Software kreuje rzeczywistość  ;D

Masz rację, w takim razie w salonie "podkręciłem" temperaturę do 25 stopni i ustawiłem ładny nastrojowy zielony kolor  :P

*

Offline admin

  • *****
  • 931
  • Twórca i moderator forum
    • Zobacz profil
    • Forum ExtaLife
Odp: Natywna integracja z Home Assistant (komponent)
« Odpowiedź #9 dnia: Listopad 15, 2019, 08:50:31 »
Ale pomyśl o tym tak - zaoszczędziłeś ponad 4 stówy i masz za darmo dwa dodatkowe urządzenia Exta Life!! ;) Software kreuje rzeczywistość  ;D

Masz rację, w takim razie w salonie "podkręciłem" temperaturę do 25 stopni i ustawiłem ładny nastrojowy zielony kolor  :P
🤣🤣🤣👍
Elementy systemu, których używam: 3xSRP-22, 5xRDP-21, 3xROP-22, 4x ROP-21, 1xP-456/36, 1xRNK-24, 3x RNP-21, 1xRCT-22, aplikacja na Android oraz iOS + Home Assistant

*

Offline admin

  • *****
  • 931
  • Twórca i moderator forum
    • Zobacz profil
    • Forum ExtaLife
Odp: Natywna integracja z Home Assistant (komponent)
« Odpowiedź #10 dnia: Listopad 15, 2019, 10:24:34 »
Beta 2 z usuniętymi testowymi encjami już do pobrania:
https://github.com/dgtal1/extalife_custom_component/archive/1.0.0b2.zip
Elementy systemu, których używam: 3xSRP-22, 5xRDP-21, 3xROP-22, 4x ROP-21, 1xP-456/36, 1xRNK-24, 3x RNP-21, 1xRCT-22, aplikacja na Android oraz iOS + Home Assistant

Odp: Natywna integracja z Home Assistant (komponent)
« Odpowiedź #11 dnia: Listopad 15, 2019, 10:36:56 »
Thx, u siebie usunąłem już wcześniej i oczywiście jest ok, ale jak już czyścisz kod to została jeszcze jakaś "Kuchnia 1-1", co prawda zakomentowana, ale...

*

Offline admin

  • *****
  • 931
  • Twórca i moderator forum
    • Zobacz profil
    • Forum ExtaLife
Odp: Natywna integracja z Home Assistant (komponent)
« Odpowiedź #12 dnia: Listopad 15, 2019, 10:52:45 »
Thx, u siebie usunąłem już wcześniej i oczywiście jest ok, ale jak już czyścisz kod to została jeszcze jakaś "Kuchnia 1-1", co prawda zakomentowana, ale...
Jeśli chodzi ci o to https://github.com/dgtal1/extalife_custom_component/blob/9f27bb9d82c736f0dacadf0efef3e6254a436921/extalife/pyextalife.py#L159 to tak ma być :) To komentarz. Co prawda duży, ale bardzo istotny bo obrazuje jak model danych z kontrolera jest transformowany na model danych biblioteki do obslugi Exta Life. Także tego ;)
Elementy systemu, których używam: 3xSRP-22, 5xRDP-21, 3xROP-22, 4x ROP-21, 1xP-456/36, 1xRNK-24, 3x RNP-21, 1xRCT-22, aplikacja na Android oraz iOS + Home Assistant

Odp: Natywna integracja z Home Assistant (komponent)
« Odpowiedź #13 dnia: Listopad 15, 2019, 11:01:54 »
Aha, oki to już się nie wtrącam  ;D

*

Offline admin

  • *****
  • 931
  • Twórca i moderator forum
    • Zobacz profil
    • Forum ExtaLife
Odp: Natywna integracja z Home Assistant (komponent)
« Odpowiedź #14 dnia: Listopad 15, 2019, 11:03:10 »
Aha, oki to już się nie wtrącam  ;D
Nie no spoko, jak wypatrzysz coś podejrzanego to pisz. Po to jest forum :)
Elementy systemu, których używam: 3xSRP-22, 5xRDP-21, 3xROP-22, 4x ROP-21, 1xP-456/36, 1xRNK-24, 3x RNP-21, 1xRCT-22, aplikacja na Android oraz iOS + Home Assistant