Sterowanie Bramą Garażową poprzez moduł SONOFF SV (AI-Speaker - Home Assistant)

Fajnie by było jakby powstały poradniki.
@Cezary.K pomyśl o kanale na YouTube :slightly_smiling_face::slightly_smiling_face:
Będę oglądał regularnie :grinning::grinning::grinning:

1 polubienie

Dzięki za propozycję ale :movie_camera: to nie moja bajka :sunglasses:. Osobiście jestem zwolennikiem czytania poradników, jak są ilustrowane to już super. Jak mogę z nimi pracować w swoim tempie z mnóstwem pootwieranych okien to jest to. Najlepiej testować od razu na żywym sprzęcie, jestem w swoim żywiole (warsztacie). Poradniki YT szybko zaczynam przewijać i łatwo zgubić istotne szczegóły.

To może warto założyć bloga. :slightly_smiling_face::slightly_smiling_face:
Nie ma takiego polskojęzycznego bloga który objaśniał był dobrze tasmota :slightly_smiling_face:
Idealna nisza do zagospodarowania.

Jak będzie trzeba to jak najbardziej będę chętny na wszelką pomoc ale być może wystarczy dobrze skonfigurować Tasmotę lub HA i będzie grało tak jak ma być.
Screen z logów:


“Zasterowany” - miałem na myśli, że po rozłączeniu i ponownym połączeniu z siecią WiFi jest reakcja przekaźnika, taka jak to ja bym “wcisnął” przycisk w panelu HA.
Więc jeżeli nie będzie trzeba to zostaję przy tasmot’a, a jak nie będzie innego wyjścia to chciałem wgrać ESP
Pozdrawiam

Widać z log’ow że komenda idzie z HA, ale nie bardzo rozumiem dlaczego POWER2 jest podpięte pod przekaźnik, bo tak wynika z twojego opisu.
Pokaż kartę konfiguracji modułu Tasmota z widokiem przypisanych GPIO.

O tą kartę chodzi?

Z rzutu ekranu nie widzę wszystkiego w logach brakuje także momentu zerwania i połączenia ponownego do wi-fi.
Ale na początek podaj co masz w konsoli po wpisaniu PowerOnState ?

Jako tako połączenia nie zrywa (w linii prostej Sonoff jest 2m od routera) ale w przypadku zaniku prądu / restarcie Sonoffa, otwiera mi się brama garażowa i można wejść do domu. Więc jedt ot sytuacja niedopuszczalna. Ewentualnie mógłbym mieć powiadomienie PUSH na telefon na którym mam zainstalowany HA (iOS) i z którego mam dostęp do całego HA. Tylko jak takie powiadomienie zrobić?
Wyniki z konsoli:
12:34:17.598 CMD: PowerOnState
12:34:17.605 MQT: stat/dom_XXXXXX/RESULT = {“PowerOnState”:0}
Oczywiście nie ma dom_XXXX ale tej wartości raczej nie powinienem podawać?
Dodam, że po restarcie samego HA również sonoff “otwiera” bramę

Czyli konfiguracja PowerOnState jest jak najbardziej OK.

To jest niedopuszczalna sytuacja…
Nie mam za bardzo pewności bez pełnych logów od momentu uruchomienia modułu z Tasmota. Bez tego nie wiemy czy winny jest HA czy Tasmota. Jedyne co zrobiłeś inaczej to podłączenie kontaktronu i tu może być pies pogrzebany. PowerOnState nakazuje po uruchomieniu stan OFF a Ty opcją SwitchMode2 2 odwróciłeś logikę działania.

Proponuję ustawić:

Przełącznik_n - oznacza odwrotne (fizyczne) działanie.
Ponownie ustaw SwitchMode2 1

Mam nadzieję, że to dobry trop :wink:

Zrobiłem tak jak powiedziałeś ale spodziewanego efektu brak, za to w HA nie widzę teraz status czy brama jest otwarta czy zamknięta.
Zrobiłem restart z GUI i załączam log:

00:00:00.001 HDW: ESP8266EX
00:00:00.053 CFG: Wczytano z pamięci flash w F7, Licz 53
00:00:00.066 Projekt ais-dom - Brama_garazowa Wersja 10.0.0(tasmota)-2_7_4_9(2021-10-26T09:40:24)
00:00:00.521 WIF: Łączenie z AP1 Domek Parter Channel 1 BSSId C8:D3:A3:05:D0:EE w trybie 11n jak dom-XXXXXX-1425...
00:00:01.753 WIF: Połączony
00:00:02.005 HTP: Aktywny serwer Web dom-XXXXXX-1425 z adresem IP 192.168.8.195
13:12:18.003 MQT: Próba połączenia...
13:12:18.022 MQT: Połączony
13:12:18.026 MQT: tele/dom_XXXXXX/LWT = Online (Zachowane)
13:12:18.029 MQT: cmnd/dom_XXXXXX/POWER = 
13:12:18.040 MQT: tele/dom_XXXXXX/INFO1 = {"Info1":{"Module":"Sonoff SV","Version":"10.0.0(tasmota)","FallbackTopic":"cmnd/DOM_XXXXXX_fb/","GroupTopic":"cmnd/dom/"}}
13:12:18.049 MQT: tele/dom_XXXXXX/INFO2 = {"Info2":{"WebServerMode":"Admin","Hostname":"dom-XXXXXX-1425","IPAddress":"192.168.8.195"}}
13:12:18.060 MQT: tele/dom_XXXXXX/INFO3 = {"Info3":{"RestartReason":"Software/System restart"}}
13:12:18.068 MQT: stat/dom_XXXXXX/RESULT = {"POWER":"OFF"}
13:12:18.071 MQT: stat/dom_XXXXXX/POWER = OFF (Zachowane)
13:12:18.230 MQT: stat/DOM_XXXXXX_fb/RESULT = {"Command":"Error"}
13:12:18.284 MQT: tele/DOM_XXXXXX_fb/STATE = {"Time":"2021-10-31T13:12:18","Uptime":"0T00:00:05","UptimeSec":5,"Heap":29,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":22,"MqttCount":1,"POWER":"ON","Wifi":{"AP":1,"SSId":"Domek Parter","BSSId":"C8:D3:A3:05:D0:EE","Channel":1,"Mode":"11n","RSSI":64,"Signal":-68,"LinkCount":1,"Downtime":"0T00:00:03"}}
13:12:18.309 MQT: stat/DOM_XXXXXX_fb/RESULT = {"POWER":"ON"}
13:12:18.313 MQT: stat/DOM_XXXXXX_fb/POWER = ON (Zachowane)
13:12:18.331 MQT: stat/DOM_XXXXXX_fb/RESULT = {"Command":"Error"}
13:12:18.381 MQT: stat/DOM_XXXXXX_fb/RESULT = {"Command":"Error"}
13:12:18.833 MQT: tele/dom_XXXXXX/STATE = {"Time":"2021-10-31T13:12:18","Uptime":"0T00:00:05","UptimeSec":5,"Heap":29,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"POWER":"OFF","Wifi":{"AP":1,"SSId":"Domek Parter","BSSId":"C8:D3:A3:05:D0:EE","Channel":1,"Mode":"11n","RSSI":70,"Signal":-65,"LinkCount":1,"Downtime":"0T00:00:03"}}
13:12:18.858 MQT: stat/dom_XXXXXX/RESULT = {"POWER":"OFF"}
13:12:18.863 MQT: stat/dom_XXXXXX/POWER = OFF (Zachowane)
13:12:22.442 MQT: tele/dom_XXXXXX/STATE = {"Time":"2021-10-31T13:12:22","Uptime":"0T00:00:09","UptimeSec":9,"Heap":28,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"POWER":"OFF","Wifi":{"AP":1,"SSId":"Domek Parter","BSSId":"C8:D3:A3:05:D0:EE","Channel":1,"Mode":"11n","RSSI":70,"Signal":-65,"LinkCount":1,"Downtime":"0T00:00:03"}}
13:12:22.468 MQT: tele/dom_XXXXXX/SENSOR = {"Time":"2021-10-31T13:12:22","Switch2":"OFF"}
13:12:27.505 MQT: homeassistant/device_automation/XXXXXX_SW_2_TOGGLE/config =  (Zachowane)
13:12:27.509 MQT: homeassistant/device_automation/XXXXXX_SW_2_HOLD/config =  (Zachowane)
13:12:27.515 MQT: homeassistant/binary_sensor/XXXXXX_SW_2/config = {"name":"Brama_garazowa Switch2","stat_t":"stat/dom_XXXXXX/SWITCH2","val_tpl":"{{value_json.STATE}}","frc_upd":true,"pl_on":"ON","pl_off":"OFF","uniq_id":"XXXXXX_SW_2","dev":{"ids":["XXXXXX"]},"avty_t":"tele/dom_XXXXXX/LWT","pl_avail":"Online","pl_not_avail":"Offline"} (Zachowane)
13:12:27.565 MQT: homeassistant/switch/XXXXXX_RL_1/config = {"name":"Brama_garazowa","stat_t":"tele/dom_XXXXXX/STATE","avty_t":"tele/dom_XXXXXX/LWT","pl_avail":"Online","pl_not_avail":"Offline","cmd_t":"cmnd/dom_XXXXXX/POWER","pl_off":"OFF","pl_on":"ON","val_tpl":"{{value_json.POWER}}","uniq_id":"XXXXXX_RL_1","dev":{"ids":["XXXXXX"]}} (Zachowane)
13:12:27.601 MQT: homeassistant/sensor/XXXXXX_status/config = {"name":"Brama_garazowa status","stat_t":"tele/dom_XXXXXX/HASS_STATE","avty_t":"tele/dom_XXXXXX/LWT","pl_avail":"Online","pl_not_avail":"Offline","json_attr_t":"tele/dom_XXXXXX/HASS_STATE","unit_of_meas":"%","val_tpl":"{{value_json['RSSI']}}","ic":"mdi:information-outline","uniq_id":"XXXXXX_status","dev":{"ids":["XXXXXX"],"name":"Brama_garazowa","mdl":"Sonoff SV","sw":"10.0.0(tasmota)","mf":"AI-Speaker"}} (Zachowane)

Może to coś wyjaśni

1 polubienie

Proszę zedytuj swój zapis kodu…
tak

lub używając na początku i końcu kodu trzech znaków tyldy < ``` >

Wyczyścić sonoffa programem FLASH_DOWNLOAD_TOOLS_v1.2 i plikiem blank_1mb
blank_1MB.bin (1 MB)

takimi ustawieniami:


Potem ponownie wgraj Tasmote

Niestety wywala mi błąd.

Traceback (most recent call last):
  File "download_panel_info.pyo", line 220, in OnButton_StartButton
  File "download_panel_info.pyo", line 422, in flash_config
  File "shutil.pyo", line 84, in copy
  File "shutil.pyo", line 51, in copyfile
IOError: [Errno 2] No such file or directory: u'C:\\Users\\W\u9abftowiczS\u7824womir\\Desktop\\ESP\\FLASH_DOWNLOAD_TOOLS_v1.2_150512\\bin_tmp\\downloadPanel1\\blank_1MB.bin_rep'

BTW, wiem na 1000%, że sonoff załącza przekaźnik w momencie podłączenia się do HA przez mqtt

Czu umieściłeś właściwą dla siebie ścieżkę do pliku blank_1MB.bin ?

Oczywiście że tak, korzystałem z przycisku “…”. Uruchomiłem program z prawami administratora. Przeniosłem plik do lokalizacji bez polskich znaków ale nic nie pomagało. Ale tak jak piszę, problem pojawia się przy połączeniu z MQTT. Sam sonoff nawet po ponownym uruchomieniu nie “włącza” przekaźnika, dopiero podłączenie do HA jednokrotnie “włącza” przekaźnik, według mnie błąd będzie po stronie HA lub problem będzie z oprogramowaniem Tasmota?

Zastanawiają mnie te logi:

Jeśli @Tomasz miał podobne doświadczenie z tym modułem SV to należy pójść za jego radą. Wyczyścić pamięć ESP wgrywając pusty plik bin. Nie wiem czy tak istotna jest adresacja dla wgrywanego pliku. Na początek można wypróbować jeszcze komendę Reset2

Jak nie pomoże, to próbować z innymi programami czyścić pamięć.
Może z Tasmotizer pójdzie łatwiej:

Albo jeszcze prościej dla Win:

Napiszę w skrócie, co do _fb/RESULT = {“Command”:“Error”} to jest to “odpowiedź” gdy “krańcówka” dojedzie do czytnika czyli czytaj to tak → brama otwarta ale myślę, że to jest mało istotna gdyż w HA widzę wtedy, że brama jest otwarta. ESP Flasher się odpala na Win10 więc jutro spróbuję wyczyścić Sonoffa tym plikiem blank_1mb - próbowałem to zrobić Tasmota PyFlasher ale wywala błąd, że to nie prawidłowy obraz? Może lepiej się “poddać” i napisać powiadomienie na aplikację w telefonie, tak aby wyrzucła PUSH UP gdy brama jest otwarta dłużej niż 5 min? - Jak to ogarnąć?

Powiadomienie to słaby pomysł…proteza. Jeśli nie wyjdzie Ci z Tasmota spróbuj z ESPHome. Gotowca podał @Stravi . Widziałem, że masz już HA więc doinstalowujesz AddOn ESPHome i kompilujesz swoją biharkę w parę minut wraz z przerobieniem YAML. Plik wgrywasz bezpośrednio z Dashboard tego dodatku:



Powiadomienie o otwarciu możesz wykonać za pomocą automatyzacji.
Wyzwalacz, to stan encji/urządzenia informujące o otwarciu przez dany czas:

w akcji na ten wyzwalacz wybierasz odpowiednią usługę dla powiadomienia:

alias: Otwarte drzwi garaż
description: Powiadomienie o otwartych drzwiach pomiędzy garażem a korytarzem
trigger:
  - type: opened
    platform: device
    device_id: xyz
    entity_id: binary_sensor.shelly_shdw_2_a4cf12f4332f_door_window
    domain: binary_sensor
    for:
      hours: 0
      minutes: 2
      seconds: 0
      milliseconds: 0
condition: []
action:
  - service: ais_ai_service.mob_notify
    data:
      device_id: abc
      message: 'Drzwi do garażu są otwarte '
mode: single

Witam ponownie,
Co do prób wgrania blank_1mb.bin
Log z ESP_Flasher (Zostawiam dla potomnych ponieważ FAIL):

Using 'COM2' as serial port.
Connecting....
Detecting chip type... ESP8266
Connecting...

Chip Info:
 - Chip Family: ESP8266
 - Chip Model: ESP8266EX
 - Chip ID: 0065C591
 - MAC Address: 8C:AA:B5:65:C5:91
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 460800
Changed.
 - Flash Size: 1MB
Unexpected error: The firmware binary is invalid (magic byte=FF, should be E9)

Tasmotizer wgrał plik czyszczący, teraz wgrywam nim Tasmotę. Będę działać z Sonoffem, jutro bądź wieczorem dam znać o efektach.
Pozdrawiam Sławek

EDIT: Efektu brak, wciąż po restarcie urządzenia działa przekaźnik. BTW. może należało by zmienić któreś ustawienie w w configuration.yaml w HA?

  - platform: mqtt
    name: "Brama_garazowa"
    state_topic: "cmnd/DOM_XXXXX_fb/POWER2"
    command_topic: "cmnd/DOM_XXXXX_fb/POWER"
    payload_open: "ON"
    payload_close: "ON"
    payload_stop: "ON"
    state_open: "ON"
    state_closed: "OFF"
    optimistic: false
    retain: false

??
Jak nie pomoże, to będę próbować z ESPHome

Może masz coś źle z tematami MQTT… Uruchom program MQTT Explorer i podejrzyj sobie komunikację z brokera na bramce AIS w momencie “zasterowania” przekaźnika.
Wydaje mi się, że state_topic masz nieprawidłowy. Nie powinno byś w logach wpisów z błędami {"Command":"Error"}