Pakiet integracyjny Exta Life <-> Home Assistant

  • 104 Odpowiedzi
  • 30036 Wyświetleń
*

Offline admin

  • *****
  • 1657
  • Twórca i moderator forum
    • Zobacz profil
    • Forum ExtaLife
Odp: Pakiet integracyjny Exta Life <-> Home Assistant
« Odpowiedź #30 dnia: Września 16, 2019, 15:03:47 »
a widzisz.... zainstalowałem "python3" i przez myśl mi nie przeszło, że w jessie`m jest wersja 3.4 i stąd problemy.
Tak myślałem :)

Cytuj
Teraz wysypuje się na
root@nas:/apps/docker-root/homeassistant/scripts# docker run -it --rm --name python3 -v /apps/docker-root/homeassistant/scripts:/scripts python-ha:latest python /scripts/main_exta2ha.py --testrun
Traceback (most recent call last):
  File "/scripts/main_exta2ha.py", line 196, in <module>
    prog.main()
  File "/scripts/main_exta2ha.py", line 181, in main
    self.ha_mqtt.ha_update_state_from_device(device)
  File "/scripts/ExtaLife_HA.py", line 742, in ha_update_state_from_device
    cfg_dict = self.HAConfig.get_from_device(i_device)
  File "/scripts/ExtaLife_HA.py", line 552, in get_from_device
    cfg_dict[objid] = self.cfg_dict[objid]      # may raise KeyError exception
KeyError: '13-1'
Tak, to właśnie problem z nieodpornością programu na nowe moduły. I jak się okazało - grzebałem w tym jeszcze w maju, gdy zgłaszałeś problemy z czujnikiem. Po 4 miesiącach nie pamiętam czy rozwiązałem problem, ale patrząc na kod oceniam że z dużym prawdopodobieństwem - tak :)
Chcąc nie chcąc zostajesz testerem nowej wersji. Załączam program z drobnymi zmianami. Podmień plik i zobacz czy teraz będzie działało. Wg mnie powinno. Koniecznie daj znać, to opublikuję w pierwszym poście całą paczkę dla potomnych.

Cytuj
log:
2019-09-16 12:25:00,936 WARNING:CONFIG: Unknown Exta Life device. Mapping failed. Device Category: 1, Type: 16
2019-09-16 12:25:00,937 WARNING:No config found for device: 13
i to pewnie moje nieszczęsne głowice...
Zdecydowanie tak. Sprawdziłem na naszej wiki i nawet kiedyś z kodu aplikacji Exta Life wywnioskowałem, że typ 16 to głowica
W najnowszej wersji powinna zostać zignorowana i wszystko powinno śmigać.

Cytuj
PS zauważyłem, że w opublikowanym skrypcie brakuje wsparcia dla sensora temperatury z RNK-22 - to co wcześniej rozmawialiśmy czyli e ExtaLife_HA.py w linii 89 dodać 2.
Dodane.

Dodatkowo niedawno odkryłem dlaczego urządzenia nie pojawiają się w HA w ekranie integracji w MQTT. Jeśli zgodzisz się trochę potestować to spróbuję zmodyfikować program tak, aby encje wygenerowane przez pakiet integracyjny pojawiły się w ekranie integracji. Daj znać :)
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 shibby

  • ***
  • 193
    • Zobacz profil
Odp: Pakiet integracyjny Exta Life <-> Home Assistant
« Odpowiedź #31 dnia: Września 16, 2019, 15:41:49 »
na skrypcie 1.0.1 parametr testrun wywala

Traceback (most recent call last):
  File "/scripts/main_exta2ha.py", line 27, in <module>
    from ExtaLife_HA import ExtaLifeTCPStream
  File "/scripts/ExtaLife_HA.py", line 895
SyntaxError: (unicode error) 'utf-8' codec can't decode byte 0xb0 in position 0: invalid start byte

nie tworzy się nawet plik z logiem.
Elementy systemu, których używam: EFC-01, 1x RNK-22, 2x RNK-24, P-457/2, ROP-21, 3x ROP-22, RDP-21, 2x RGT-01, SLR-21, SLR-22, 3x RCK, 2x RCM, RCZ, RCR

*

Offline admin

  • *****
  • 1657
  • Twórca i moderator forum
    • Zobacz profil
    • Forum ExtaLife
Odp: Pakiet integracyjny Exta Life <-> Home Assistant
« Odpowiedź #32 dnia: Września 16, 2019, 15:47:09 »
hmm, brzmi poważnie. To o tyle dziwne, że tam nic nie było zmieniane. Plik wyedyowałem notatnikiem windows - może coś się z kodowaniem znaków pochrzniło. Skopiowałem teraz z oryginalnego pliku z linuxa.

Podmień jeszcze raz - załączam ponownie. Mam nadzieję, że ruszy, bo jeśli nie to na razie nie mam pojęcia co jest źle.
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 shibby

  • ***
  • 193
    • Zobacz profil
Odp: Pakiet integracyjny Exta Life <-> Home Assistant
« Odpowiedź #33 dnia: Września 16, 2019, 15:47:55 »
znak °C go bolał. Poprawiłem.

Cytuj
    PS zauważyłem, że w opublikowanym skrypcie brakuje wsparcia dla sensora temperatury z RNK-22 - to co wcześniej rozmawialiśmy czyli e ExtaLife_HA.py w linii 89 dodać 2.

Dodane.

nie dodałeś ;)
WARNING:CONFIG: Unknown Exta Life sensor type: 2. Mapping failed

w 1.0.1 wciąż jest
JSON_DEVICE_ARR_SENS_TEMP = [4,20,21]

;)
Elementy systemu, których używam: EFC-01, 1x RNK-22, 2x RNK-24, P-457/2, ROP-21, 3x ROP-22, RDP-21, 2x RGT-01, SLR-21, SLR-22, 3x RCK, 2x RCM, RCZ, RCR

*

Offline shibby

  • ***
  • 193
    • Zobacz profil
Odp: Pakiet integracyjny Exta Life <-> Home Assistant
« Odpowiedź #34 dnia: Września 16, 2019, 15:58:37 »
na pierwszy rzut oka wygląda że działa. Jak chcesz bym coś testował to pisz śmiało :)

BTW

Cytuj
/scripts/ExtaLife_HA.py:578: YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.
  self.cfg_dict = yaml.load(cfg_file)

ale to tylko warning.
Elementy systemu, których używam: EFC-01, 1x RNK-22, 2x RNK-24, P-457/2, ROP-21, 3x ROP-22, RDP-21, 2x RGT-01, SLR-21, SLR-22, 3x RCK, 2x RCM, RCZ, RCR

*

Offline admin

  • *****
  • 1657
  • Twórca i moderator forum
    • Zobacz profil
    • Forum ExtaLife
Odp: Pakiet integracyjny Exta Life <-> Home Assistant
« Odpowiedź #35 dnia: Września 16, 2019, 16:04:02 »
znak °C go bolał. Poprawiłem.
hmm, kompletnie nie rozumiem dlaczego python tutaj zaprotestował ??? U mnie używam tego znaku i czujnik temperatury pokazuje jednostkę pomiaru w stopniach celsjusza poprawnie. Nie mam tego syntaxa.

Cytuj
    PS zauważyłem, że w opublikowanym skrypcie brakuje wsparcia dla sensora temperatury z RNK-22 - to co wcześniej rozmawialiśmy czyli e ExtaLife_HA.py w linii 89 dodać 2.

Cytuj
Dodane.

nie dodałeś ;)

WARNING:CONFIG: Unknown Exta Life sensor type: 2. Mapping failed

w 1.0.1 wciąż jest
JSON_DEVICE_ARR_SENS_TEMP = [4,20,21]

;)
Faktycznie, nie wiem jak to się stało - patrzyłem na to jeszcze dzisiaj przed opublikowaniem...może ctrl-z wcisnęło się przypadkowo..nie wiem - ale ważne że zauważyłeś i naprawiłeś.

Czyli teraz wszystko działa?? Głowica jest ignorowana?
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 shibby

  • ***
  • 193
    • Zobacz profil
Odp: Pakiet integracyjny Exta Life <-> Home Assistant
« Odpowiedź #36 dnia: Września 16, 2019, 17:24:46 »
tak, wszystko co miało być wykryte zostało, głowica została pomimięta.

Z tym znakiem st. celcjusza chodziło o to, że po zapisie (wersja z notatnika) było .C z czego kropka była jeszcze w czarnej kratce, czyli ewidentnie wina kodowania. Ja poprawiłem na °C, tak jak podesłałeś w drugim skrypcie i działa.
Elementy systemu, których używam: EFC-01, 1x RNK-22, 2x RNK-24, P-457/2, ROP-21, 3x ROP-22, RDP-21, 2x RGT-01, SLR-21, SLR-22, 3x RCK, 2x RCM, RCZ, RCR

*

Offline admin

  • *****
  • 1657
  • Twórca i moderator forum
    • Zobacz profil
    • Forum ExtaLife
Odp: Pakiet integracyjny Exta Life <-> Home Assistant
« Odpowiedź #37 dnia: Września 17, 2019, 10:02:53 »
Do pobrania uaktualniona wersja pakietu integracyjnego! Wprowadziłem numerację wersji dla całości, aby łątwiej było śledzić zmiany. Szczegóły w pliku readme[PL].txt
REJESTR ZMIAN:
 - uodporniono pakiet na nowe, nieobsługiwane przez pakiet urządzenia Exta Life np RGT-01
 - dodano obsługę czujnika temperatury z RNP-22

Całość do pobrania tradycyjnie w pierwszym 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

*

Offline admin

  • *****
  • 1657
  • Twórca i moderator forum
    • Zobacz profil
    • Forum ExtaLife
Odp: Pakiet integracyjny Exta Life <-> Home Assistant
« Odpowiedź #38 dnia: Września 17, 2019, 10:28:00 »
na pierwszy rzut oka wygląda że działa. Jak chcesz bym coś testował to pisz śmiało :)
ano chętnie skorzystam z Twojej propozycji. Dodałem grupowanie encji Exta Life tworzonych przez pakiet integracyjny w ekranie 'Integrations' w Home Assistant w sekcji 'MQTT'. Wygląda to jak w załączniku. Działa analogicznie do innych integracji, które pokazują się na tym ekranie. Wszystkie encje zgrupowane będą pod jedną nazwą 'Exta Life' i urządzeniem EFC-01.

Aby urządzenia się w ten sposób pokazały - wymagane jest przeprowadzenie procedury MQTT Discovery czyli uruchomienie skryptu z parametrem --testrun, lub po prostu uruchomienie 'normalne', gdy nie ma wygenerowanego pliku konfiguracyjnego.
Jeśli skrypt zarejestrował już wcześniej urządzenia Exta Life w HA (encje się wygenerowały) to ponowny proces Discovery w tym przypadku może spowodować pojawienie się zdublowanych encji z numerkami _1 na końcu nazwy. Nie jestem pewny czy tak będzie, ale to bardzo prawdopodobne. Lepiej jest więc to robić na 'czystym' HA. Ewentualnie potem można naprawić duplikaty w ekranie rejestru encji w HA. Tam można zmienić im nazwy, a stare skasować.
Oddaję w Twoje ręce do testowania  :)
Cytuj
BTW

Cytuj
/scripts/ExtaLife_HA.py:578: YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.
  self.cfg_dict = yaml.load(cfg_file)

ale to tylko warning.
Postanowiłem się zająć również i tym. Fix wydaje się banalny. Przyczyną tego warninga jest to, że posiadasz najnowszą wersję biblioteki yaml a tam wprowadzono zmianę ze względó bezpieczeńśtwa. Zmieniłem nieco kod i wygląda, że poprawka działa także na sterej wersji. Pytanie czy będzie dizałać także u ciebie. Sprawdź proszę.

Instalacja wersji z obsługą ekranu integracji oraz poprawką dla yaml - banalna jak zawsze - podmień plik z załącznika.

Miłęgo używania. Jeśli okaże się, że wszystko dobrze to w niedługim czasie opublikuję wersję 1.1 dla wszystkich.
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 shibby

  • ***
  • 193
    • Zobacz profil
Odp: Pakiet integracyjny Exta Life <-> Home Assistant
« Odpowiedź #39 dnia: Września 18, 2019, 08:14:53 »
HA mam już czystego do testów. Teraz walczę z pythonem 3.5 na Debian Jessie (niestety coś Netgear nie kwapi się by udostępnić choćby stretcha na Readynasy). Jednak python w dockerze to pomyłka. Raz, że bardzo wolno chodzi na NASie, a dwa to nie jestem w stanie odpalić twoich skryptów by działały jako "daemon" czyli z & na końcu. Właśnie kompiluję 3.5.2 i jak ruszy to sprawdzę twój skrypt :)
Elementy systemu, których używam: EFC-01, 1x RNK-22, 2x RNK-24, P-457/2, ROP-21, 3x ROP-22, RDP-21, 2x RGT-01, SLR-21, SLR-22, 3x RCK, 2x RCM, RCZ, RCR

*

Offline shibby

  • ***
  • 193
    • Zobacz profil
Odp: Pakiet integracyjny Exta Life <-> Home Assistant
« Odpowiedź #40 dnia: Września 18, 2019, 11:13:12 »
mam ogromne problemy z działaniem HA i mosquitto w dockerze :/ Co rusz mam błędy w stylu

Cytuj
2019-09-18 10:51:59,242 ERROR:Error connecting to MQTT broker
Traceback (most recent call last):
  File "main_exta2ha.py", line 73, in conn_mqtt
    self.mqtt.connect(MQTT_IP, MQTT_PORT, 60)
  File "/root/.pyenv/versions/3.6.9/lib/python3.6/site-packages/paho/mqtt/client.py", line 839, in connect
    return self.reconnect()
  File "/root/.pyenv/versions/3.6.9/lib/python3.6/site-packages/paho/mqtt/client.py", line 962, in reconnect
    sock = socket.create_connection((self._host, self._port), source_address=(self._bind_address, 0))
  File "/root/.pyenv/versions/3.6.9/lib/python3.6/socket.py", line 724, in create_connection
    raise err
  File "/root/.pyenv/versions/3.6.9/lib/python3.6/socket.py", line 713, in create_connection
    sock.connect(sa)
OSError: [Errno 113] No route to host

muszę odpalić wirtualkę, na której mam czystego debiana, HA, MQTT i tam mi wszystko działało jak trzeba i na niej potestuję.
Elementy systemu, których używam: EFC-01, 1x RNK-22, 2x RNK-24, P-457/2, ROP-21, 3x ROP-22, RDP-21, 2x RGT-01, SLR-21, SLR-22, 3x RCK, 2x RCM, RCZ, RCR

*

Offline admin

  • *****
  • 1657
  • Twórca i moderator forum
    • Zobacz profil
    • Forum ExtaLife
Odp: Pakiet integracyjny Exta Life <-> Home Assistant
« Odpowiedź #41 dnia: Września 18, 2019, 17:28:11 »
Jednak python w dockerze to pomyłka. Raz, że bardzo wolno chodzi na NASie, a dwa to nie jestem w stanie odpalić twoich skryptów by działały jako "daemon" czyli z & na końcu. Właśnie kompiluję 3.5.2 i jak ruszy to sprawdzę twój skrypt :)
Hmm, dziwna sprawa, że działa wolno w dockerze. To może kwestia twojego NASa, Docker to bardzo lekka wirtualizacja i strata na wydajności jest minimalna. Inaczej nie dałoby się odpalić HA na malinie. Przecież hass.io działa na dockere, a jakże. Każdy add-on hass.io to osobny kontener dockera.
Podejrzewam, że problem leży jednak w Twoim NAS.
Niestety producenci NASów lubią coś skopać lub pozmieniać na niekorzyść oryginalnego oprogramowania. Na ten przykład - na QNAP Docker niby istnieje, ale pod inną nazwą i jest mocno pozmieniany przez QNAP. W Synology co prawda Docker to Docker, ale Synology także wprowadza do niego swoje małe modyfikacje (na szczęście więcej na plus niż minus - np obsługa przez GUI).
Może twój ReadyNAS ma zmodyfikowaną wersję Dockera i stąd całe kłopoty?

mam ogromne problemy z działaniem HA i mosquitto w dockerze :/ Co rusz mam błędy w stylu

Cytuj
2019-09-18 10:51:59,242 ERROR:Error connecting to MQTT broker
Traceback (most recent call last):
  File "main_exta2ha.py", line 73, in conn_mqtt
    self.mqtt.connect(MQTT_IP, MQTT_PORT, 60)
  File "/root/.pyenv/versions/3.6.9/lib/python3.6/site-packages/paho/mqtt/client.py", line 839, in connect
    return self.reconnect()
  File "/root/.pyenv/versions/3.6.9/lib/python3.6/site-packages/paho/mqtt/client.py", line 962, in reconnect
    sock = socket.create_connection((self._host, self._port), source_address=(self._bind_address, 0))
  File "/root/.pyenv/versions/3.6.9/lib/python3.6/socket.py", line 724, in create_connection
    raise err
  File "/root/.pyenv/versions/3.6.9/lib/python3.6/socket.py", line 713, in create_connection
    sock.connect(sa)
OSError: [Errno 113] No route to host
Patrząc na Twój błąd to wygląda jalby kontenery nie mogły się ze sobą skomunikować. Rozumiem, że masz HA i MQTT w osobnych kontenerach docker? Jeśli tak to koniecznie sprawdź ustawienia dockera dla tych kontenerów. Wg mnie to może być problem. Tylko w tym przypadku raczej nie powinno to działać na zasadzie czasem zadziałą, a czasem nie... ???

Niestety niewiele tutaj pomogę - moja znajomość linuxa jest dość ograniczona. Powodzenia!
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 shibby

  • ***
  • 193
    • Zobacz profil
Odp: Pakiet integracyjny Exta Life <-> Home Assistant
« Odpowiedź #42 dnia: Września 18, 2019, 18:25:49 »
Akurat mój NAS ma to co cenię sobie w nim najbardziej, czyli prawie nietknięty Debian :) Pełny apt, pełne możliwości, czego producent nie przewidział można sobie doinstalować, dokompilować. Docker jest czyściutki, wprost z oficjalnego repo. Jako GUI jest poprostu Portainer jako contener :)

ReadyNAS Pro4, bo o nim mowa, a na pokładzie Atom D510 (2-core, 4-threads), 4GB ram (oryginalnie 1GB, wykosztowałem się 4GB DDR2 so-dimm w jednej kości ale warto było), no i 2x WDred 4TB w RAID1. Tak więc o jego wydajność bym się nie martwił.

Mam na nim php7.2, Nextcloud, mysql, zaś w dockerze siedzi kontroler unifi, pihole, Collabora Online, watchtower i wspomniany wcześniej Portainer.

Żeby było zabawniej w Synology nie udało mi się odpalić Collabora Online w dockerze - nie działa i już :)

Wracając jednak do tematu: poddałeś mi myśl. Ja instalowałem osobno HA (homeassistant/home-assistant) i osobno mosquitto (eclipse-mosquitto) i może tu był problem. Nie przyszło mi do głowy by mosquitto zainstalować jako add-on w HA, a chyba tak właśnie wcześniej na czystym linuxie robiłęm. Zaraz spróbuję.
Elementy systemu, których używam: EFC-01, 1x RNK-22, 2x RNK-24, P-457/2, ROP-21, 3x ROP-22, RDP-21, 2x RGT-01, SLR-21, SLR-22, 3x RCK, 2x RCM, RCZ, RCR

*

Offline admin

  • *****
  • 1657
  • Twórca i moderator forum
    • Zobacz profil
    • Forum ExtaLife
Odp: Pakiet integracyjny Exta Life <-> Home Assistant
« Odpowiedź #43 dnia: Września 18, 2019, 18:55:34 »
Intel Atom. Dobry wybór. Ja mam Celeron. Ważne żeby CPU nie był ARMem. Jako serwer słabo by się wtedy sprawdzał. Szczególnie przy obrabianiu multimediów lub szukaniu w bazach czyli dla HA byłoby słabo.

Z wydajnością chodziło mi nie o podzespoły tylko o problemy w sofcie (jakieś sterowniki, błędy w Linuxie itp). U mnie z wydajnością dockerze nie ma żadnych problemów.

Ja też mam HA i MQTT jako osobne kontenery. Oba działają z siecią jako hist. Może ty masz bridge? Sprawdź bo jak jest 'no ruote to host' to jest jakiś problem z siecią
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 shibby

  • ***
  • 193
    • Zobacz profil
Odp: Pakiet integracyjny Exta Life <-> Home Assistant
« Odpowiedź #44 dnia: Września 18, 2019, 19:15:43 »
Oba działają z siecią jako hist. Może ty masz bridge?

bingo :) dockera dopiero się uczę ;) Jakieś 2 m-c temu go zainstalowałem. Faktycznie miałem jako bridge. Stawiam na nowo jako host i zobaczymy.
Elementy systemu, których używam: EFC-01, 1x RNK-22, 2x RNK-24, P-457/2, ROP-21, 3x ROP-22, RDP-21, 2x RGT-01, SLR-21, SLR-22, 3x RCK, 2x RCM, RCZ, RCR