Esphome + PCF8575 problem z załączeniem przekaźnika, losowe działanie

Hej

Bardzo dziwna sytuacja dla mnie, ponieważ od pół roku było dobrze a teraz się zaczęły dziwnie rzeczy dziać.
Sytuacja wygląda tak, że jest sobie esp32 i do tego Ekspander PCF8575 64 TERMINAL od easyswitch.
Pierwsza sytuacja była taka że gdy włączone było światło w sypialni, a ktoś nacisnął klawisz do światła w wiatrołapie to gasło światło w sypialni. Działo się to sporadycznie i losowo.
Druga sytuacja z wczoraj, w salonie są dwa kinkiety, każdy na osobnym klawiszu.
Gdy klikam klawisz 1 od kinkietu 1 to gaśnie kinkiet 1(czyli prawidłowo) gdy klikam drugi raz ten sam klawisz to zaświeca się kinkiet 2, za trzecim razem gaśnie. Klawisz 2 od kinkietu 2 nie reaguje. Można klikać kilka razy i się nic nie dzieje. Czasem się zmienia stan na esphome, ale przekaźnik nie reaguje i się kinkiet 2 nie świeci. Dziwne rzeczy się dzieją. Dziś rano wszystko było dobrze. Klikam klawisz 1 świeci kinkiet 1, tam samo gaśnie, klikam klawisz 2 świeci kinkiet 2.

Od czego mogę zacząć diagnostykę? Nie bardzo wiem od czego zacząć, restart nie pomaga. Jeszcze tydzień temu czy dwa było ok, nie było nic aktualizowane prócz samego HA ale zakładam że to nie jest problem po stronie HA a po stronie esphoma lub urządzeń.

Od sprawdzania logów “na żywo”.
Skoro to I2C to zapewne masz ekspander zaraz obok ESP (więc szanse na zakłócenia na tej linii są chyba niewielkie?)

Dokładnie. Na jednej szynie din to wisi.
Czy połączenie między esp a ekspanderem może mieć znaczenie ? Są połączone jakiś cienkim przewodem.

W logu na zywo mało w sumie co jest. tylko że został przyciśnięty klawisz i się zmienił stan na OFF ( o ile dobrze pamiętam)

Póki co tyle wystarczy, będziesz wiedział czy komunikacja dociera do ESP (a jeśli przekaźniki są też na ekspanderze, czy wychodzi).

Prawdę mówiąc sądziłem, że ESP i ekspander stanowią jedno urządzenie jako całość (a nie oddzielne “klocki” pospinane na zewnątrz, no ale skoro to jakaś gotowa konstrukcja… może producent świadczy jakieś wsparcie?).


edit: zajrzałem na

Z tego co widzę, to konstrukcja jest na tyle modułowa, że możesz np. podmienić płytkę ESP na inną, tu zła wiadomość - ze względu na inny MAC-adress przy diagnozowania najprostszą metodą podmiany komponentów niestety w HA będziesz miał wszystkie encje nowe… ale w podobny sposób możesz podmienić ekspander (bez konieczności zmian w konfiguracji).
W sumie to pierwsze co bym podmienił to zasilacz.

Oglądam dalej, jak rozumiem stabilizator napięcia jest częścią integralną modułu.

Kolejna kwestia złącza szpilkowe (goldpiny) - zamiast stosować gniazda bardziej niezawodnym rozwiązaniem jest wlutowanie bezpośrednie w obie PCB.

Nie wiem w jakich warunkach środowiskowych pracuje ten sprzęt, ale biorąc pod uwagę użyte komponenty ten sprzęt powinien pracować w typowych warunkach domowych “wewnątrz pomieszczeń” o temperaturze pokojowej i bez żadnych nawet mało agresywnych czynników środowiskowych, więc pomieszczenia typu nieogrzewanego strychu, zapylonej kotłowni, czy wilgotnej piwnicy są wykluczone.

Awaria zimą takiej elektroniki DIY jest typowa dla ujemnej temperatury otoczenia lub wysokiej wilgotności w miejscu montażu.

To są właśnie takie klocki. Moduł dla esp32 oraz moduł 4 ekspanderów. Próbuję pierw wyeliminować czynnik ludzki i wtedy ewentualnie jakieś reklamację robić.

Kurde zasilacz jest nowy, wszystko ma może z pół roku.
Zasilacz pulsara 12v, przetwornika step-down 8a

Też to jest zachowane wszystko :slight_smile: Urządzenia są w rozdzielni elektrycznej w ogrzewanym pomieszczeniu.

Próbuję trafić na sytuację w której tak się dzieje. Do wieczora było ok, teraz jest tak że esp nie reaguje na klawisz

[19:17:31][D][sensor:125]: 'Uptime Sensor': Sending state 86333.16406 s with 0 decimals of accuracy
[19:17:56][D][binary_sensor:036]: 'Klawisz Salon Kinkiet': Sending state ON
[19:17:56][D][switch:021]: 'Przekaznik_SalonKinkiet' Toggling OFF.
[19:17:56][D][switch:037]: 'Przekaznik_SalonKinkiet': Sending state OFF
[19:17:56][D][binary_sensor:036]: 'Klawisz Salon Kinkiet': Sending state OFF
[19:18:00][D][binary_sensor:036]: 'Klawisz Salon Kinkiet': Sending state ON
[19:18:00][D][switch:021]: 'Przekaznik_SalonKinkiet' Toggling ON.
[19:18:00][D][switch:037]: 'Przekaznik_SalonKinkiet': Sending state ON
[19:18:00][D][binary_sensor:036]: 'Klawisz Salon Kinkiet': Sending state OFF
[19:18:01][D][binary_sensor:036]: 'Klawisz Jadalnia Kinkiet': Sending state ON
[19:18:01][D][switch:021]: 'Przekaznik_sw_JadalniaKinkiet' Toggling OFF.
[19:18:01][D][switch:037]: 'Przekaznik_sw_JadalniaKinkiet': Sending state OFF
[19:18:01][D][binary_sensor:036]: 'Klawisz Jadalnia Kinkiet': Sending state OFF
[19:18:02][D][binary_sensor:036]: 'Klawisz Jadalnia Kinkiet': Sending state ON
[19:18:02][D][switch:021]: 'Przekaznik_sw_JadalniaKinkiet' Toggling ON.
[19:18:02][D][switch:037]: 'Przekaznik_sw_JadalniaKinkiet': Sending state ON
[19:18:02][D][binary_sensor:036]: 'Klawisz Jadalnia Kinkiet': Sending state OFF
[19:18:03][D][binary_sensor:036]: 'Klawisz Jadalnia Kinkiet': Sending state ON
[19:18:03][D][switch:021]: 'Przekaznik_sw_JadalniaKinkiet' Toggling OFF.
[19:18:03][D][switch:037]: 'Przekaznik_sw_JadalniaKinkiet': Sending state OFF
[19:18:03][D][binary_sensor:036]: 'Klawisz Jadalnia Kinkiet': Sending state OFF
[19:18:03][D][binary_sensor:036]: 'Klawisz Salon Kinkiet': Sending state ON
[19:18:03][D][switch:021]: 'Przekaznik_SalonKinkiet' Toggling OFF.
[19:18:03][D][switch:037]: 'Przekaznik_SalonKinkiet': Sending state OFF
[19:18:03][D][binary_sensor:036]: 'Klawisz Salon Kinkiet': Sending state OFF
[19:18:05][D][binary_sensor:036]: 'Klawisz Jadalnia Kinkiet': Sending state ON
[19:18:05][D][switch:021]: 'Przekaznik_sw_JadalniaKinkiet' Toggling ON.
[19:18:05][D][switch:037]: 'Przekaznik_sw_JadalniaKinkiet': Sending state ON
[19:18:05][D][binary_sensor:036]: 'Klawisz Jadalnia Kinkiet': Sending state OFF

Wyżej to wygląda tak, że niby esp zmienia stan przekaźnika, ale światło nie reaguje, czyli tak jakby nie było komunikacji z modułem przekaźników. Tak raczej nie jest bo to działa co jakiś czas.

Teraz np działa wszystko poprawnie, a parę minut temu jednym klawiszem załączałem dwa punkty świetlne, tylko niestety nie miałem jak tego w logach wychwycić

No akurat monitorowanie stanu na GPIO sterującym przekaźnikiem to banał - wystarczy do tego multimetr.
Wniosek: problemy z modułem wykonawczym (lub brak skutecznego połączenia).

Natomiast jakoś nie mogę objąć umysłowo wyzwalania niewłaściwego przekaźnika. (tu mógłby przyczyną być błąd na wejściu z ekspandera, no ale bez testów na żywo tego nie stwierdzisz).

Czyli że to może być problem z modułem ekspanderów lub z połączeniem czegoś ?

Masz na myśli sytuację w której tak się stanie i zaobserwować co w logu ?

Skąd mam wiedzieć jaki masz schemat połączeń?
Logika nakazuje oczywiste połączenia, ale jak masz to zrealizowane konkretnie to przecież sam wiesz najlepiej…

Tak, bo błędny sygnał na wejściu wskazuje na płytkę ekspanderów (jeśli to przez nią przychodzą sygnały z przycisków).
Z tego co napisałeś poniżej wniosek jest taki, że jest problem ze sterowaniem przekaźników (ale ile i jakich modułów w tym bierze udział nie wiemy).

PS
Jak masz podpięte przekaźniki przecież nie wiem.

@paku2020 - daj fotki będzie łatwiej wskazać ewentualne słabe punkty. Jak dla mnie może takim być

ale nie wiemy co dokładnie masz na myśli, to jest jakiś chiński moduł?
Należało by również sprawdzić połączenia galwaniczne całego układu.

1 polubienie

Nie wiem czy dobrze to będzie widać. Połączenia są za pomocą takich przewodów.



Chodzi o te dwa pierwsze espswitch od lewej.
Nie jest to jakoś super zrobione ale działało. Może nieświadomie coś źle zrobiłem…

Przekaźniki jak i klawisze mam wpięte do ekspanderów, a ekspander do esp przez i2c.

Przetwornica pewnie jakaś chińska bo pełno ich jest, tylko nie wydaje mi się żeby to był problem z zasilaczem bo pod niego jest jeszcze inne esp podłączone i z nim nie ma problemu, a przynajmniej tak mi się wydaje :slight_smile:

Osobiście zaczął bym od sprawdzenia wszystkich połączeń miernikiem, bo jak widać miejsc gdzie coś może nie łączyć jest dużo.

1 polubienie

To tak zrobię, jutro posprawdzam i podkręcam wszystko ale nie wydaje mi się żeby przez to jednik klawiszem załączały się dwa różne przekaźniki. Natomiast dziwne jest to że to są lampy koło siebie.
Do salonu mam dwa wejścia i dwa osobne kontakty podpięte do innych pinów.
Dziwne jest to że na obu kontaktach się to samo dzieje. tzn jednym klawiszem załącza się dwa przekaźniki.

Nie wiem czy wystarczająco jasno napisałem to co chciałem przekazać :slight_smile:

edit:

A czy te błędy mogą mieć jakiś związek z tym?

2023-01-09 20:08:09.873 ERROR (MainThread) [homeassistant.components.binary_sensor] Platform esphome does not generate unique IDs. ID esp32-rozdzielniabinary_sensorklawisz_kuchnia_kinkiet already exists - ignoring binary_sensor.klawisz_kuchnia_kinkiet
2023-01-09 20:08:09.874 ERROR (MainThread) [homeassistant.components.binary_sensor] Platform esphome does not generate unique IDs. ID esp32-rozdzielniabinary_sensorklawisz_kuchnia_wiato already exists - ignoring binary_sensor.klawisz_kuchnia_swiatlo
2023-01-09 20:08:09.875 ERROR (MainThread) [homeassistant.components.binary_sensor] Platform esphome does not generate unique IDs. ID esp32-rozdzielniabinary_sensorklawisz_przed_pokj_wiato already exists - ignoring binary_sensor.klawisz_przed_pokoj_swiatlo
2023-01-09 20:08:09.875 ERROR (MainThread) [homeassistant.components.binary_sensor] Platform esphome does not generate unique IDs. ID esp32-rozdzielniabinary_sensorklawisz_jadalnia_kinkiet already exists - ignoring binary_sensor.klawisz_jadalnia_kinkiet
2023-01-09 20:08:09.876 ERROR (MainThread) [homeassistant.components.binary_sensor] Platform esphome does not generate unique IDs. ID esp32-rozdzielniabinary_sensorklawisz_salon_kinkiet already exists - ignoring binary_sensor.klawisz_salon_kinkiet
2023-01-09 20:08:09.876 ERROR (MainThread) [homeassistant.components.binary_sensor] Platform esphome does not generate unique IDs. ID esp32-rozdzielniabinary_sensorklawisz_salon_wiato already exists - ignoring binary_sensor.klawisz_salon_swiatlo
2023-01-09 20:08:09.877 ERROR (MainThread) [homeassistant.components.binary_sensor] Platform esphome does not generate unique IDs. ID esp32-rozdzielniabinary_sensorklawisz_przed_pokj_kinkiet already exists - ignoring binary_sensor.klawisz_przed_pokoj_kinkiet
2023-01-09 20:08:09.878 ERROR (MainThread) [homeassistant.components.binary_sensor] Platform esphome does not generate unique IDs. ID esp32-rozdzielniabinary_sensorklawisz_ganek_swiato_ already exists - ignoring binary_sensor.klawisz_ganek_swiatlo

edit2
Udało mi się teraz osiągnąć efekt taki, że klawiszem “Klawisz Jadalnia Kinkiet” zaświeciłem kinkiet jadalnia, następnym klikiem zgasiłem kinkiet jadalnia, ale jednocześnie zaświeciłem kinkiet salon.
Tak to wygląda w logu:

[22:20:54][D][binary_sensor:036]: 'Klawisz Salon Kinkiet': Sending state ON
[22:20:54][D][switch:021]: 'Przekaznik_SalonKinkiet' Toggling ON.
[22:20:54][D][switch:037]: 'Przekaznik_SalonKinkiet': Sending state ON
[22:20:54][D][binary_sensor:036]: 'Klawisz Salon Kinkiet': Sending state OFF
[22:20:55][D][binary_sensor:036]: 'Klawisz Jadalnia Kinkiet': Sending state ON
[22:20:55][D][switch:021]: 'Przekaznik_sw_JadalniaKinkiet' Toggling ON.
[22:20:55][D][switch:037]: 'Przekaznik_sw_JadalniaKinkiet': Sending state ON
[22:20:55][D][binary_sensor:036]: 'Klawisz Jadalnia Kinkiet': Sending state OFF
[22:20:56][D][binary_sensor:036]: 'Klawisz Jadalnia Kinkiet': Sending state ON
[22:20:56][D][switch:021]: 'Przekaznik_sw_JadalniaKinkiet' Toggling OFF.
[22:20:56][D][switch:037]: 'Przekaznik_sw_JadalniaKinkiet': Sending state OFF
[22:20:56][D][binary_sensor:036]: 'Klawisz Jadalnia Kinkiet': Sending state OFF
[22:20:57][D][binary_sensor:036]: 'Klawisz Jadalnia Kinkiet': Sending state ON
[22:20:57][D][switch:021]: 'Przekaznik_sw_JadalniaKinkiet' Toggling ON.
[22:20:57][D][switch:037]: 'Przekaznik_sw_JadalniaKinkiet': Sending state ON
[22:20:57][D][binary_sensor:036]: 'Klawisz Jadalnia Kinkiet': Sending state OFF
[22:20:59][D][binary_sensor:036]: 'Klawisz Jadalnia Kinkiet': Sending state ON
[22:20:59][D][switch:021]: 'Przekaznik_sw_JadalniaKinkiet' Toggling OFF.
[22:20:59][D][switch:037]: 'Przekaznik_sw_JadalniaKinkiet': Sending state OFF
[22:20:59][D][binary_sensor:036]: 'Klawisz Jadalnia Kinkiet': Sending state OFF
[22:20:59][D][binary_sensor:036]: 'Klawisz Salon Kinkiet': Sending state ON
[22:20:59][D][switch:021]: 'Przekaznik_SalonKinkiet' Toggling OFF.
[22:20:59][D][switch:037]: 'Przekaznik_SalonKinkiet': Sending state OFF
[22:20:59][D][binary_sensor:036]: 'Klawisz Salon Kinkiet': Sending state OFF

Masz klucz krone/lsa? (są 2 szkoły, więc druga powszechna nazwa to nóż krone), bo takie mam wrażenie, że to było upychane wkrętakiem (śrubokrętem :stuck_out_tongue: ) a wtedy zdarza się, że połączenia nie są pewne.

Ideę problemu zrozumiałem, dlatego sugerowałem problem z pracą ekspandera, ale potencjalnych przyczyn może być wiele więcej (niepoprawne połączenia, brak styku rezystorów pullupów, wzajemne zakłócenia na linii, np. przewody różnych kanałów na tych samych parach skrętki, instalacja o napięciu sieciowym poprowadzona zbyt blisko niskonapięciowej itd.)


Nie wiem, to zależy czy logikę sterowania realizujesz wewnątrz ESP czy w HA (ale na podstawie poprzednich logów sądzę, że sterowanie załatwia ESPHome, a HA tylko pokazuje stany)
Błędów można się pozbyć jeśli zapewnisz unikalne id dla każdej encji.

zaciskałem to kluczem , czy też nożem krone :slight_smile:
Tylko te zasicki służą do połączenia z kontaktami, a esp w logach ma że klawisze się klikają wiec wydaje mi się że połączenie jest.

Tylko dziwne że teraz by to wyszło. Ta instalacja ma już kilka lat, a teraz dopiero się zaczynają jakie dziwne problemy.
Zaczynam myśleć że to jest jednak wina ekspanderów. Gdyby było spięcie to w logu(log wyżej) by było że się naciska klawisz kinkiet salon, a w logu podczas tego zdarzenia nie ma nic, nie ma też nic o tym że się zał. przekaźnik kinkiet salon w momencie kiedy się zaświeca to światło. Źle myślę ?

Sterowanie jest na poziomie esphome, w HA tylko stany.

Inna sprawa która może mnie skłaniać w stronę problemu z ekspanderem,
podczas uruchamiana logu z esp czasem wyświetlaa mi że znalazło 4 ekspandery, czasem 2 a czasem że nie znalazło

[22:30:38][C][i2c.arduino:044]:   Recovery: bus successfully recovered
[22:30:38][I][i2c.arduino:054]: Results from i2c bus scan:
[22:30:38][I][i2c.arduino:060]: Found i2c device at address 0x20
[22:30:38][I][i2c.arduino:060]: Found i2c device at address 0x21
[22:30:38][I][i2c.arduino:060]: Found i2c device at address 0x22
[22:30:38][I][i2c.arduino:060]: Found i2c device at address 0x23
[22:32:17][C][i2c.arduino:044]:   Recovery: bus successfully recovered
[22:32:17][I][i2c.arduino:054]: Results from i2c bus scan:
[22:32:17][I][i2c.arduino:060]: Found i2c device at address 0x20
[22:32:17][I][i2c.arduino:060]: Found i2c device at address 0x21
[22:32:17][I][i2c.arduino:060]: Found i2c device at address 0x22
[22:33:10][C][i2c.arduino:044]:   Recovery: bus successfully recovered
[22:33:10][I][i2c.arduino:060]: Found i2c device at address 0x22
[22:33:10][I][i2c.arduino:060]: Found i2c device at address 0x23
[22:33:10][C][pcf8574:021]: PCF8574:
[22:33:10][C][pcf8574:022]:   Address: 0x20
[22:33:10][C][pcf8574:023]:   Is PCF8575: YES
[22:33:10][C][pcf8574:021]: PCF8574:
[22:33:10][C][pcf8574:022]:   Address: 0x21
[22:33:10][C][pcf8574:023]:   Is PCF8575: YES
[22:33:10][C][pcf8574:021]: PCF8574:
[22:33:10][C][pcf8574:022]:   Address: 0x22
[22:33:10][C][pcf8574:023]:   Is PCF8575: YES
[22:33:10][C][pcf8574:021]: PCF8574:
[22:33:10][C][pcf8574:022]:   Address: 0x23
[22:33:10][C][pcf8574:023]:   Is PCF8575: YES
[22:34:40][C][i2c.arduino:044]:   Recovery: bus successfully recovered
[22:34:41][C][pcf8574:021]: PCF8574:
[22:34:41][C][pcf8574:022]:   Address: 0x20
[22:34:41][C][pcf8574:023]:   Is PCF8575: YES
[22:34:41][C][pcf8574:021]: PCF8574:
[22:34:41][C][pcf8574:022]:   Address: 0x21
[22:34:41][C][pcf8574:023]:   Is PCF8575: YES
[22:34:41][C][pcf8574:021]: PCF8574:
[22:34:41][C][pcf8574:022]:   Address: 0x22
[22:34:41][C][pcf8574:023]:   Is PCF8575: YES
[22:34:41][C][pcf8574:021]: PCF8574:
[22:34:41][C][pcf8574:022]:   Address: 0x23
[22:34:41][C][pcf8574:023]:   Is PCF8575: YES

Moduł zawiera w sobie 4 ekspandery na różnych adresach, więc chyba powinno je wszystkie razem wykrywać za każdym razem ?

Też tak myślę, więc do sprawdzenia połączenie I2C oraz zasilanie modułu ekspanderów.

Zakładam, że ktoś, kto projektował zrobił to prawidłowo, ale na przedwczesne starzenie chińskich komponentów nie mamy żadnego wpływu, więc zasilacz wciąż pozostaje podejrzany.
Widziałem w życiu już różne rzeczy i wpadki się zdarzają nawet najlepszym producentom w sprzęcie “za miliony”, a mówimy o “tanich chińczykach”.
Wysyp wylanych kondensatorów elektrolitycznych był dobre 10 czy wręcz 20 lat temu, ale wciąż się trafiają takie rzeczy.

OK, więc strzelam domysłami dalej - zawilgocenie fragmentu instalacji, no chyba sam najlepiej wiesz co się dzieje u Ciebie w domu…
Ale w kilkuletniej instalacji mogą się pojawiać problemy ze śniedziejącymi połączeniami.

Wcześniej pisałeś że to ma dopiero pół roku…

PS dopiero doczytałem, że zreplikowałeś problem zapalania się niewłaściwego światła, to tym bardziej sugeruje problem komunikacji z ekspanderami GPIO (ale nadal nie wyklucza zasilacza).

Być może do sprawdzenia czy moduły przekaźników mają własne kable zasilające prowadzące bezpośrednio do zasilacza (bo na analizę zdjęć to nie mam zdrowia, a masz to przecież przed sobą), - zakłócenia pracy ekspanderów mogą być generowane lokalnie.

Instalacja przewodowa ma jakieś 3 lata, a pół roku mają komponenty w szafie. Wcześniej bylo rpi i arduino ale przerobiłem.

Zasilanie jest zrobione tak:
Zasilacz 12v 5a >przetwornica 5v 8a > blok rozdzielczy do zasilania > zasilanie modułu ekspanderów > moduł z eps32

Wymienię kabelki od i2c, i zobaczymy. Napisałem też do producenta. Może on coś podpowie…

Zmień również prędkość magistrali I2C z 400kHz na 100kHz

frequency: 100kHz

ponieważ to sugeruje problemy z magistalą.

1 polubienie

Hej.
Też kupiłem kilka modułów PCF8575 i się obawiam na stabilność tego chipa. (jeszcze nie integrowałem)
Podstawowym modelem jest PCF8574.
Gdzieś na elektrodzie czytałem że układ ten jest wadliwy.

Podeślesz kod do ESP na priva ?

Oki

Wczoraj się okazało że jest uszkodzony moduł przekaźników. Podczas gdy się załącza klawisz od kinkietu to na module przekaźników się zaświeca dioda, ale przekaźnik nie klika.
Po sprawdzeniu multimetrem napięcie z ekspandera dochodzi.
Przełączyłem na inny przekaźnik i póki co jest ok.

Jednak to nie tłumaczy problemu dlaczego przy wł. światła w wiatrołapie gaśnie światło w sypialni. Napisałem do producenta modułu, może coś podpowie

Może masz przekaźniki 5V i dostaje jakies szczatkowe napiecie ten przekaźnik w sypialni.