Chciałbym w piwnicy zainstalować Wemosa D1 mini z esphome i podłączyć do niego klawisz dzwonkowy aby przy jego pomocy włączać światło.
Miałoby to działać przy pomocy NR na zasadzie że gdy przełączyć na wemosie zmieni stan na ON to załączy się przekaźnik itd.
Problem mam jednak taki, że gdy zewrę pin D5 z masą to nie zmienia się stan przełącznika.
Nie wiem jak fizycznie to połączyć aby zmieniał się stan.
w esphome switch się tworzy, w HA też, ale nie mogę ogarnać fizyczniego klawisza.
Podpowie ktoś jak to zrobić albo czego brakuje ?
Kod esphome wygląda tak:
Na moje oko to potrzebujesz binary_sensor, a nie switch (nie napisałeś wprawdzie gdzie ten przekaźnik i po co NR, ale chyba chcesz sprawdzać stan przycisku fizycznego podpiętego do GPIO14=D5)
Chyba właśnie ma być binary_sensor. Zobaczyłem to w wątku
Jednak cały czas mi to działa na zasadzie-zwarte to jest ON, rozwarte OFF, czyli jak jakby musiał być włącznik bistabilny.
Ja potrzebuję to robić na włączniku monostabilnym.
Chodzi o to, że u góry schodów w piwnicy mam klawisz który steruje przekaźnikiem.
Na dole schodów nie mam przewodu do sterowania tym samym przekaźnikiem. Wszystko i tak by się schodziło do HA, więc wymyśliłem że zrobić taki przycisk i ustawie w NR że gdy się zmieni stan tego przycisku to HA załączy przekaźnik.
Nie mam jak przeciągnąć przewodu z góry na dół schodów
Nie musi być bistabilny, to jest najprostszy przykład jak eksponować stan przycisku, wewnątrz ESPHome masz dostępne proste automatyzacje i z niego możesz “wyprodukować” coś co zachowuje się inaczej.
Nadal nie wiadomo gdzie masz podpięty przekaźnik
jeśli to to samo ESP, to ma być na INNYM GPIO niż przycisk, a sam przycisk możesz wtedy zrobić internal
jeśli natomiast użyjesz innego ESP (bo jak zrozumiałem to ESP ma służyć jedynie do obsługi przycisku) to jednak najprościej użyć go w stanie “surowym” (wtedy oczywiście stan musi być eksponowany, bo automatyka odbędzie się gdzieś indziej więc na 100% nie internal) i np. podebrać za pomocą HA, a automatykę zrobić w drugim ESP (tam gdzie masz wpięty zarówno przycisk lokalny jak i sam przekaźnik).
I muszę robić zwarcie na masę i na 5v żeby zmienił się stan. Jeszcze czasem jest tak że nie działa to za każdym razem i się rozjeżdżają stany między button 8 a relay 8
Czyli np w sekcji switch w polu id: mam wpisać nazwę przekaźnika z HA? np switch.swiatlo_strych_2 ?
Przekaźnik jest podłączony pod arduino mega, a ono usb do HA. esphome ma służyć jak taki zdalny pilot do sterowania przekaźnikiem podłączonym do arduino mega.
Przecież masz przycisk dzwonkowy więc jego stan zmienia się w momencie przycisnięcia a potem wraca do stanu pierwotnego więc nic się nie rozjeżdża - wszystko działa prawidłowo, patrz na moje logi z ESPHome:
# stan: przekaźnik wyłaczony
# nacisnięcie przycisku:
12:49:32 [D] [binary_sensor:036] 'button 1': Sending state ON
# wywołanie akcji dla on_press
12:49:32 [D] [switch:021] 'relay 1' Toggling ON.
# przekaźnik włączony
12:49:32 [D] [switch:037] 'relay 1': Sending state ON
# zwolnienie przycisku
12:49:32 [D] [binary_sensor:036] 'button 1': Sending state OFF
# kolejne naciśnięcie przycisku powoduje wyłaczenie przekaźnika
12:49:36 [D] [binary_sensor:036] 'button 1': Sending state ON
12:49:36 [D] [switch:021] 'relay 1' Toggling OFF.
12:49:36 [D] [switch:037] 'relay 1': Sending state OFF
12:49:36 [D] [binary_sensor:036] 'button 1': Sending state OFF
Sorry ale się pogubiłem, na początku nie przedstawiłeś całego docelowego rozwiązania technicznego i dlatego teraz nie wszystko działa tak jak sobie to wyobrażasz, przedstawiając swój kod do ESPHome podałem je pod inne rozwiązanie niż Ty.
Z racji tego, że na dole schodów nie ma kabla i nie mogę podłączyć klawisza chciałem do tego użyć esphome. Podłączyć do niego klawisz i jeden klik wł przekaźnik podłączony do arduino mega(np przy pomocy HA) a drugi klik go wyłączy.
Coś na zasadzie takiego pilota by to miało być, ale nie mam pomysłu już jak to zrobić.
Mam nadzieję że teraz w miarę jasno nakreśliłem o co mi chodzi i co chciałbym osiągnąć
Czy ten kod jest w stanie mi w tym pomóc?
Wydawało mi się że gdy zwierałem np D5 z masą to robił się przekaźnik ON, a gdy zwierałem D5 z +5v to robił się OFF(lub odwrotnie)
Mam to zamontowane już. Zasilanie jes z zasilacza usb.
Na tym esphome ogólnie mam teraz licznik impulsów do gazu i podłączony czujnik temperatury.
Dołożyć teraz chcę właśnie włącznik światła bo tego mi jeszcze brakuje tam
Wszystko jest teraz z puszcze, a pod puszką hermetyczny dzwonek do drzwi który ma robić za włącznik światła
Wcześniej miałem to zrobione na espeasy i domoticzu, ale zrezygnowałem bo samoistnie się w nocy światło włączało więc odłączyłem i olałem. A teraz jak się przesiałem na HA to pomyślałem żeby to reaktywować
gdzie switch.0x04cf8cdf3c80318f to Twój przekaźnik w HA (“przekaźnik jest podłączony do arduino mega”). W ten sposób uzyskałeś to co chciałeś - “coś na zasadzie takiego pilota”, który znajduje się “na dole schodów”.
No i fajnie, już połowa sukcesu
Ale i tak nie do końca jest jak powinno bo:
esp się uruchamia, początkowo stan jest off. Zwieram D5+mase, zmienia się stan na ON oraz załącza się przekaźnik. Puszczam zwarcie. Stan jest dalej ON, światło świeci.
Teraz powinno być tak że zwieram ponownie D5+ masę i powinien się zmienić stan na OFF i światło powinno zgasnąć.
Dopiero to zwarciu D5 z +5v światło gaśnie i zmienia się stan na OFF.
A potem już się zaczyna chrzanić, Na esp jest stan OFF, światło świeci, zewrę piny to na esp jest ON a światło gaśnie.
I tak w koło
Testuje to teraz na testowym esp jakiś na biurku, W HA się pojawia encja i jest z tej strony oki.
Problem jest tylko teraz że trzeba używać trzech pinów żeby załączyć i wyłączyć przekaźnik.
Teraz w ESP jest stan ON, w HA jest stan ON a światło nie świeci
Czy zweryfikowałeś wszystko jak prosiłem wcześniej bo wg Twojego opisu, może nie jest precyzyjny, coś nie działa jak należy. Aby zdiagnozować problem nie możesz pisać tak ogólnie: “Puszczam zwarcie. Stan jest dalej ON, światło świeci.” bo nie wiem czy stan `button 1’ jest nadal ON czy stan switcha w HA jest ON. Sorry ale diabeł tkwi w szczegółach, pokaż logi z ESPHome bo one nie kłamią .
Zamiast rezystora wystarczy deklaracja pullupu (uwaga to rozwiązanie tylko na bardzo krótkie kable, jeśli przycisk jest daleko od płytki MUSI być fizyczny rezystor!) - to włączy rezystor wbudowany w ESP (to wymaga sprawdzenia dokumentacji czy użyte GPIO ma taką funkcję - ale chyba prościej włączyć i sprawdzić czy działa? - w linkach powyżej masz to opisane) wydawało mi się, że po zdeklarowaniu GPIO jako wejścia pullup jest domyślny, ale nie sprawdziłem tego (a jak się okazuje mam rezystor 100k podpięty do 3V3 w tym urządzeniu gdzie jawnie nie deklarowałem pullupu, ponadto styki switcha są zbocznikowane kondensatorem 100nF jako elektryczny filtr debounce).
Wydaje mi się że można włączyć pullup- tak przeglądałem Internet w tym kierunku i na pinie D5 włączali.
Wrócę z pracy i na biurku przetestuje to na jakimś innym wemosie.
edit.
Wróciłem po pracy
Wygląda na to że teraz jest dobrze.
Kod wygląda tak :