Problem z PCF 8575

Awatar użytkownika
YoMan
Posty: 2250
Rejestracja: czw kwie 30, 2020 5:18 pm
Lokalizacja: Częstochowa

marcepanfazik pisze: pt lut 03, 2023 3:13 pm Sprawdziłem po raz kolejny

2.jpg
1.jpg

We wszystkich opcjach (wciśnięcie, zwolnienie, przytrzymanie, zmiana stanu)
Akcja "Załącz" - OK
Akcja "Wyłącz" - OK
Akcja "Przełącz" - Tylko załączenie
Opcje w cloudzie nie dotykane

Jak pobrać logi żeby Wam pokazać?
putty lub arduino IDE
YoMan
________________________________________
Wziąłem udział w Supla Offline Party 2023 ;)
marcepanfazik
Posty: 57
Rejestracja: wt lis 27, 2018 8:31 pm

Kod: Zaznacz cały

17:06:04.316 -> Connected to Supla Server
17:06:04.316 -> Current status: [10] Register in progress
17:06:04.472 -> Device registered (activity timeout 120 s, server version: 19, server min version: 1)
17:06:04.472 -> Current status: [17] Registered and ready
17:06:04.472 -> Changing activity timeout to 30
17:06:04.658 -> Activity timeout set to 30 s
17:06:04.803 -> AT[1] received config with active actions: 0x0
17:06:04.803 -> AT[3] received config with active actions: 0x0
17:06:21.589 -> Relay[0] toggle (duration 0 ms)
17:06:21.589 -> Relay[0] turn ON (duration 0 ms)
17:06:21.589 ->  **** Digital write[0], gpio: 152; value 1
17:06:21.589 -> Channel(0) value changed to 1
17:06:26.066 -> Relay[0] toggle (duration 0 ms)
17:06:26.066 -> Relay[0] turn ON (duration 0 ms)
17:06:26.111 ->  **** Digital write[0], gpio: 152; value 1
17:06:27.711 -> Relay[0] toggle (duration 0 ms)
17:06:27.711 -> Relay[0] turn ON (duration 0 ms)
17:06:27.711 ->  **** Digital write[0], gpio: 152; value 1
powyższe przy trzykrotnym wciśnięciu i puszczeniu przycisku

a poniższe to kanał skonfigurowany jako krańcówka
17:10:50.728 -> Channel(10) value changed to 0
17:10:52.099 -> Channel(10) value changed to 1
17:10:53.687 -> Channel(10) value changed to 0
17:10:55.023 -> Channel(10) value changed to 1
17:10:57.058 -> Channel(10) value changed to 0
17:10:58.112 -> Channel(10) value changed to 1
marcepanfazik
Posty: 57
Rejestracja: wt lis 27, 2018 8:31 pm

Przepraszam że post pod postem ale właśnie sprawdziłem cały moduł instalując na innym Wemosie ESPhome i wrzuciłem go do modułu na którym ma być Supla no i wszystkie wejścia i wyjścia działają prawidłowo więc niestety gdzieś jest bug w programie.
Awatar użytkownika
klew
Posty: 8184
Rejestracja: czw cze 27, 2019 12:16 pm
Lokalizacja: Wrocław

marcepanfazik pisze: pt lut 03, 2023 7:26 pm Przepraszam że post pod postem ale właśnie sprawdziłem cały moduł instalując na innym Wemosie ESPhome i wrzuciłem go do modułu na którym ma być Supla no i wszystkie wejścia i wyjścia działają prawidłowo więc niestety gdzieś jest bug w programie.
Patrząc na logi z przyciskiem, widać że odpala się "toggle", które odczytuje stan z "gpio" i ustawia przeciwny.
Nie wiem jak to jest w GG zrobione, ale albo jest jakiś błąd w odczycie stanu gpio i zawsze zwraca "0" albo jest to problem tego ekspandera.
Przykładowo w esp32 gpio trzeba ustawić na input/output aby dało się odczytać stan, bo gdy jest ustawione tylko output, to czytanie stanu nie działa.
Także tu nie ma problemu z odczytem stanu przycisku, tylko stanu gpio od przekaźnika.
Widzimy się na Supla Offline Party vol. 2 :!:
marcepanfazik
Posty: 57
Rejestracja: wt lis 27, 2018 8:31 pm

Na bank nie jest to problem ekspandera gdyż jak pisałem podmieniłem tylko wemosa z innym softem i wszystko działa jak należy (oprócz koncertu przekaźników przy restarcie)
Awatar użytkownika
klew
Posty: 8184
Rejestracja: czw cze 27, 2019 12:16 pm
Lokalizacja: Wrocław

marcepanfazik pisze: pt lut 03, 2023 7:40 pm Na bank nie jest to problem ekspandera gdyż jak pisałem podmieniłem tylko wemosa z innym softem i wszystko działa jak należy (oprócz koncertu przekaźników przy restarcie)
Supla przy akcji "toggle" odczytuje stan gpio wyjścia sterującego przekaźnikiem i ustawia stan przeciwny. Jeśli odczyt jest zawsze 0, to zawsze ustawi 1.
Jeśli ten inny soft nie czyta stanu z gpio, tylko np zapamiętuje co było ustawione poprzednio, to będzie to działać dobrze, nawet jeśli odczyt gpio nie działa.

Także może to być problem softu lub sprzętu. Nie oznacza to że sprzęt jest uszkodzony, bo on może po prostu tak działać.

Poczekajmy może aż np krycha88 się tutaj wypowie
Widzimy się na Supla Offline Party vol. 2 :!:
krycha88
Posty: 5186
Rejestracja: pt lis 16, 2018 7:25 am
Kontakt:

marcepanfazik pisze: pt lut 03, 2023 7:40 pm Na bank nie jest to problem ekspandera gdyż jak pisałem podmieniłem tylko wemosa z innym softem i wszystko działa jak należy (oprócz koncertu przekaźników przy restarcie)
Nie mam teraz wolnego ekspandera aby to przetestować.
Podeślij linka do tego softu na którym działa.
https://gui-generic-builder.supla.io/
marcepanfazik
Posty: 57
Rejestracja: wt lis 27, 2018 8:31 pm

log z ESPhome
[21:20:34][D][binary_sensor:036]: 'IN_01': Sending state ON
[21:20:34][D][switch:021]: 'PK1' Toggling ON.
[21:20:34][D][switch:056]: 'PK1': Sending state ON
[21:20:34][D][binary_sensor:036]: 'IN_01': Sending state OFF
[21:20:37][D][binary_sensor:036]: 'IN_01': Sending state ON
[21:20:37][D][switch:021]: 'PK1' Toggling OFF.
[21:20:37][D][switch:056]: 'PK1': Sending state OFF
[21:20:37][D][binary_sensor:036]: 'IN_01': Sending state OFF
[21:20:39][D][binary_sensor:036]: 'IN_02': Sending state ON
[21:20:39][D][switch:021]: 'PK2' Toggling ON.
[21:20:39][D][switch:056]: 'PK2': Sending state ON
[21:20:42][D][binary_sensor:036]: 'IN_02': Sending state OFF
[21:20:42][D][switch:021]: 'PK2' Toggling OFF.
[21:20:42][D][switch:056]: 'PK2': Sending state OFF
Wcześniejszy log
[21:19:56][C][switch.gpio:076]: GPIO Switch 'PK1'
[21:19:56][C][switch.gpio:098]: Restore Mode: restore defaults to OFF
[21:19:56][C][switch.gpio:031]: Pin: 12 via PCF8574
[21:19:56][C][switch.gpio:076]: GPIO Switch 'PK2'
[21:19:56][C][switch.gpio:098]: Restore Mode: restore defaults to OFF
[21:19:56][C][switch.gpio:031]: Pin: 13 via PCF8574
[21:19:56][C][switch.gpio:076]: GPIO Switch 'PK3'
[21:19:56][C][switch.gpio:098]: Restore Mode: restore defaults to OFF
[21:19:56][C][switch.gpio:031]: Pin: 14 via PCF8574
[21:19:56][C][switch.gpio:076]: GPIO Switch 'PK4'
[21:19:56][C][switch.gpio:098]: Restore Mode: restore defaults to OFF
[21:19:56][C][switch.gpio:031]: Pin: 15 via PCF8574
[21:19:56][C][switch.gpio:076]: GPIO Switch 'PK5'
[21:19:56][C][switch.gpio:098]: Restore Mode: restore defaults to OFF
[21:19:56][C][switch.gpio:031]: Pin: 8 via PCF8574
[21:19:56][C][switch.gpio:076]: GPIO Switch 'PK6'
[21:19:56][C][switch.gpio:098]: Restore Mode: restore defaults to OFF
[21:19:56][C][switch.gpio:031]: Pin: 9 via PCF8574
[21:19:56][C][switch.gpio:076]: GPIO Switch 'PK7'
[21:19:56][C][switch.gpio:098]: Restore Mode: restore defaults to OFF
[21:19:56][C][switch.gpio:031]: Pin: 10 via PCF8574
[21:19:56][C][switch.gpio:076]: GPIO Switch 'PK8'
[21:19:56][C][switch.gpio:098]: Restore Mode: restore defaults to OFF
[21:19:56][C][switch.gpio:031]: Pin: 11 via PCF8574
[21:19:56][C][gpio.binary_sensor:015]: GPIO Binary Sensor 'IN_01'
[21:19:56][C][gpio.binary_sensor:016]: Pin: 0 via PCF8574
[21:19:56][C][gpio.binary_sensor:015]: GPIO Binary Sensor 'IN_02'
[21:19:56][C][gpio.binary_sensor:016]: Pin: 1 via PCF8574
[21:19:56][C][gpio.binary_sensor:015]: GPIO Binary Sensor 'IN_03'
[21:19:56][C][gpio.binary_sensor:016]: Pin: 2 via PCF8574
[21:19:56][C][gpio.binary_sensor:015]: GPIO Binary Sensor 'IN_04'
[21:19:56][C][gpio.binary_sensor:016]: Pin: 3 via PCF8574
[21:19:56][C][gpio.binary_sensor:015]: GPIO Binary Sensor 'IN_05'
[21:19:56][C][gpio.binary_sensor:016]: Pin: 4 via PCF8574
[21:19:56][C][gpio.binary_sensor:015]: GPIO Binary Sensor 'IN_06'
[21:19:56][C][gpio.binary_sensor:016]: Pin: 5 via PCF8574
[21:19:56][C][gpio.binary_sensor:015]: GPIO Binary Sensor 'IN_07'
[21:19:56][C][gpio.binary_sensor:016]: Pin: 6 via PCF8574
[21:19:56][C][gpio.binary_sensor:015]: GPIO Binary Sensor 'IN_08'
[21:19:56][C][gpio.binary_sensor:016]: Pin: 7 via PCF8574
Ekspander to oczywiście PCF8575
A tak wygląda konfiguracja
pcf8574:
- id: 'pcf8575_1'
address: 0x20
pcf8575: True
switch:
- platform: gpio
name: "PK1"
id: 'PK1'
pin:
pcf8574: pcf8575_1
number: 12
mode:
output: true
inverted: false
- platform: gpio
name: "PK2"
id: 'PK2'
pin:
pcf8574: pcf8575_1
number: 13
mode:
output: true
inverted: false

binary_sensor:
- platform: gpio
name: "IN_01"
id: in_01
pin:
pcf8574: pcf8575_1
number: 0
mode:
input: true
inverted: true
on_press:
then:
- switch.toggle: PK1
- platform: gpio
name: "IN_02"
id: in_02
pin:
pcf8574: pcf8575_1
number: 1
mode:
input: true
inverted: true
on_state:
then:
- switch.toggle: PK2
Link: https://esphome.io
krycha88
Posty: 5186
Rejestracja: pt lis 16, 2018 7:25 am
Kontakt:

marcepanfazik pisze: czw lut 02, 2023 9:10 pm 2 - to już na pewno problem programowy a mianowicie przełączniki. Podanie sygnału na wejście ekspandera załącza przekaźnik ale już go nie wyłącza niezależnie od ustawienia. Jeśli te same wejścia skonfiguruję jako krańcówki to wszystko działa jak należy więc problem sprzętowy odpada. Wejścia ekspandera podłączone są przez transpotory z pullupem.
Odpaliłem to na GG v5.9.7
Czy ktoś z Was miał podobne problemy?
Czy możesz przetestować wersję dostępną na:
https://gui-generic-builder.supla.io/test.php
https://gui-generic-builder.supla.io/
Awatar użytkownika
Hrumque
Posty: 275
Rejestracja: pn cze 27, 2022 10:11 am
Lokalizacja: Opole

marcepanfazik pisze: czw lut 02, 2023 9:10 pm przekaźniki załączane są stanem wysokim przez ULN2803.
2 - to już na pewno problem programowy a mianowicie przełączniki. Podanie sygnału na wejście ekspandera załącza przekaźnik ale już go nie wyłącza niezależnie od ustawienia.
To problem sprzętowo-programowy.
Mianowicie funkcja "przełącz" przycisku działa tak, że " odczytaj stan PORTU który chcesz zmienic - gdy jest na wyjściu (którym sterujemy) stan niski - to przełącz na wysoki, a jak jest wysoki - to przełącz na niski" . Logiczne, nie?
- jest stan niski, przekaźnik wyłączony, naciskasz guzik - układ stwierdza stan niski, załącza stan wysoki i koniec imprezy (tak ci się wydaje)...
- przekaźnik jest załączony, bo "port w stanie wysokim" - tyle ze zwierany prawie do masy przez bramkę tranzystora bipolarnego NPN (a takie masz w ULN) - więc elektrycznie tam jakies 0.7-1v więc ODCZYTYWANY stan z portu jest niskim ! Więc funkcja zmiany "znów zmienia na wysoki" - nie wyłączy, a ponownie włącza.

Jak to samo zadasz z poziomu cloud/aplikacji - to cloud nie sprawdza stanu portu, a stan sprawdza sobie zapamiętany w cloud i wysyła do ESP "ustaw nsiki" lub "ustaw wysoki" - czyli z tego miejsca działa poprawnie.

Tak już jest, gdy port wyjściowy "za bardzo obciążasz" - czy przypadkiem tych ULN2803 nie wpiąłeś wprost do portów wyjściowych? Powinny tam trafić rezystory pomiędzy gpio/port a wejście uln. Albo używaj mosfetów - one mają "wejście pojemnosciowe" które nie zwiera do masy jak dioda - więc ten problem nie wystepuje...
krycha88 pisze: yyy

czyżbyś przepisał ten fragment kodu "device" inaczej? bo nie widać:

https://github.com/krycha88/GUI-Generic ... y.cpp#L146

Kod: Zaznacz cały

 return Supla::Io::digitalRead(channel.getChannelNumber(), pin) ==
         pinOnValue();
Nadal odczytuje stan PORTU przez digital-read, a nie jakiegoś lokalnego bufora "jaki tam stan powinien być"
ODPOWIEDZ

Wróć do „Ogólna dyskusja”