Panowie za namową postanowiłęm zrobić pompę w oparciu o ESPHome a nie o Tasmote - faktycznie wygląda na to że możliwości automatyzacji są bardzo duże.
Siedzę już 6 godzine nad trywialnym problemem. Widać albo jestem ślepy albo żona ma wiecznie rację, że nie mogę nic znaleźć.
Potrzebuję w samym ESPHOME z poziomu jego autonomicznej automatyki odczytać stan przełącznika typu binary sensor po zaniku prądu.
Przełącznik jest mechaniczny i oczywiście działają mi stany on_press i on_release ale jak bez przełączania sprawdzić stan - przecież to nie może być aż tak skomplikowane ?
Próbowałem już chyba wszystkiego - łącznie z kombinacją użycia on_boot które też mi nie działa. Poza tym logika składni YAML jest dla mnie czarna magią - jak można stworzyć język, w którym ilość spacji określa czy działa czy nie - nie kumam tych bloków, definicji a dobrego opisu z przykładami do ESPHOME jeszcze nie znalazłem - weryfikator YAML pisze że spacje dobrze, ESPHOME drze ryje że źle - oszaleć można.
Muszę mieć stan przełącznika mechanicznego bo od tego uzależniam wykonanie programu pompy ciepła - zima czy lato.
Musisz dorzucić bardziej szczegółowe informacje bo bez tego ani rusz. Zdjęcia przełącznika, yaml i jeszcze opisz co chcesz uzyskać bo pogubiłem się w połowie czytania
HMM to proste jak budowa cepa. Zwykły przełącznik typu rocker podłączony do PIN18 i zwierany do masy. Problemem jest odczyt stanu po restercie ESP - nie wiem jak mógłbym to lepiej wytłumaczyć.
Kolega @zebaczpl ponownie optymistycznie zakłada, że dla kogoś kto nie jest zupełnie w jego temacie prostym jest odgadywanie kontekstu z paru zdań o końcowych efektach jakiś prób w ESPHome.
Może zamiast ciągnąć ponownie za język podlinkuję opis układu sprzętowego i założeń jego działania w innym temacie, gdzie walczyliśmy z zawiłościami Tasmota.
Jakie ma znaczenie do czego chce tego użyć - napisałem że interesuje mnie odczyt stanu binary_ sensor po restarcie. Wygląd przełącznika, cel jego użycia nie ma żadnego znaczenia - to mogą być 2 skręcone razem druty i informować mnie że szafa jest otwarta - jakie to ma znaczenie. Zadałem proste pytanie po kilkugodzinnych poszukiwaniach rozwiązania a pomysłu na rozwiązanie nadal nie widzę. Zapewniam, że jakby to było proste to bym gitary na forum nie zawracał.
Moim zdaniem wykorzystujesz niewłaściwe funkcje (automatyzacje)
[…]
on_press:
[…]
on_release:
[…]
zamiast po prostu sprawdzić stan binary_sensor.is_on / binary_sensor.is_off
bo to przecież nie jest przycisk (gdzie trzeba wykryć zdarzenie), tylko jakiś fizyczny przełącznik bistabilny, więc potrzebujesz sprawdzać stan.
I dlatego to o czym pisano wyżej BYŁO TAKIE ISTOTNE, więc nie cwaniakuj.
PS Ten YAML nie jest w istocie językiem programowania, jest wprawdzie językiem, ale formalnym i służącym bardziej do opisywania konfiguracji lub danych, a w ogóle ESPHome taki format konfiguracji przejęło właśnie z HA - to miało być podobne do tego jak się konfigurowało HA przez większość lat jego istnienia (teraz tego typu konfiguracja jest w zaniku na korzyść rozwiązań GUI, ale wciąż cokolwiek bardziej zaawansowanego skonfigurujesz w HA głównie za pomocą YAMLa).
Czegoś tu nie rozumiem, po restarcie stan przełącznika powinien być dostępny “od razu” bo to fizyczne zwarcie/rozwarcie obwodu elektrycznego. U siebie mam kontaktrony podłączone do ESPHome (sterownik Kincony KC868-A8) i po restarcie ESPHome (zrobiłem to przed chwilą kilka razy dla różnych stanów kontaktronu) i zawsze nastepuje odczyt aktualnego stanu.
Dzięki za odpowiedź.
Nie było moją intencją urażenie kogokolwiek i nie cwaniakuję. Po prostu w pewnym momencie szlag mnie trafia że muszę wyważać otwarte drzwi nie z braku własnych chęci i wygody a z powodu beznadziejnej dokumentacji. Dokumentacji stworzonej jak podejrzewam przez programistów dla programistów - tak jak kiedyś pisałem im się wydaje że startuje się ze sporym zasobem wiedzy w programowani (najlepiej z doskonałą znajomością C++) i podstaw nie trzeba tłumaczyć. Stąd też żałosny poziom opisu na stronie ESPHOME - i co ja z tego mam sobie wymyśleć jako człowiek na początku podróży:
on_…: if: <----------------- a w te kropki to co sobie mam wstawić
condition: # Same syntax for is_off
binary_sensor.is_on: my_binary_sensor
i sie zaczyna poszukiwanie działających przykładów, składni która działa i żmudna analiza co ktoś wstawił za te durne kropki - po dłuższej chwili i przeszukaniu 50 stron okazuje się że można tam wstawić on_press, on_release itp
Tylko programista nie wpadł na to że można napisać 3 przykłady i mnóstwo osób będzie miało z górki.
Dlatego staram się pisać na forum jako ostateczność ale w głębi serca nie godze się na takie podejście do sprawy - dla mnie jest to po prostu partacka dokumentacja.
Potem się okazuje że ten YAML to taki YAML ale nie do końcaa YAML bo to taki YAML do HA.
A teraz zastanówcie się ile sami swojego życia zmarnowaliście na takie “wyważanie otwartych drzwi”
P.S. Po przerzuceniu kolejnych 50 stron okazuje się że wyrażenie on_boot: MUSI BYĆ umieszczone na samej górze zaraz po esphome: a nie może być już po definicji rodzaju płytki esp32 bo sypie błędami - niech mi ktoś znajdzie gdzie na stronie ESPHOME jest to wyraźnie napisane.
P.S.2 A na koniec dodam że znalazłem po kolejnych 50 stronach i jest opcja która pokazuje stan binary_sensor po restarcie, dodam więcej - jest opisana w dokumentacj, dodam więcej - pomimo tego nie trafiłem w żadnym przykładzie na jej użycie, a nazywa się “publish_initial_state: true”
I tak ostatecznie na zadane pytania odpowiedziałem sobie sam - mam nadzieję że komuś jeszcze moja odpowiedź się przyda
Tak dokumentacja nie jest mocną stroną ESPHome, ale musisz zrozumieć, że przez pierwsze kilka lat istnienia tego projektu w zasadzie wszystkim zajmowała się jedna osoba (a przez załogę HA projekt został przejęty bodajże rok temu (no może 2 lata temu?).
Nie od razu Kraków zbudowano.
To projekt open-source, jeśli widzisz gdzie są bolączki, to z nimi walcz - możesz przecież sam uzupełniać dokumentację tego projektu (tak - zbudowana jest rekurencyjnie i ze zdecydowanie za małą ilością dobrych przykładów).
Spalasz się wewnętrznie, bo masz złe podejście.
Jeśli zmienisz proporcje między “brać”, a “dawać”, by więcej dawać, to zrozumiesz jakiego nakładu pracy wymaga przygotowanie nawet tak kiepskiej dokumentacji jaką mamy dziś… (a musi być ona aktualizowana wraz ze zmianami w ESPHome, więc rekurencyjna forma wymaga mniejszych nakładów pracy…)
Oczywiście przełączanie mogę zrobić za pomocą przekaźnika - tylko po co ? Najpierw miałem taki plan, w połączeni ze sterowaniem zaworu 3-drożnego ale plan zdechł z prostego powodu. Nagrzanie przez moją pompę 130l wody to od 2 do 5 godzin, piec gazowy 12 kW robi to od 20 do 40 minut a koszt podobny tylko ludzie bardziej zadowoleni. Ogólnie tak jak napisałem układ będzie przełączany 2 razy w roku i tyle - zasadniczo ma być na tyle prosty żeby obsłużyła go moja żona w oparciu o instrukcję 2 zdaniową - te 2 przełączniki w dół i ten przytrzymasz 15 sekund aż usłyszysz kliknięcie - tyle instrukcji, magia jest po mojej stronie.
PS. A na uzupełnianie dokumentacji ESPHome to jestem za cienki, za stary i zbyt niegramatycznie znam angielski. Dlatego też proszę użytkowników forum o empatię i cierpliwość bo po to jest to forum aby wymieniać doświadczenia i się uczyć - przynajmniej mnie się tak wydaje.
Ja ze swojej strony po skończeniu projektu pompy postaram się zamieścić dokładny opis i całą konfigurację dla potomnych.
“Jeśli zmienisz proporcje między “brać”, a “dawać”, by więcej dawać, to zrozumiesz jakiego nakładu pracy wymaga przygotowanie nawet tak kiepskiej dokumentacji jaką mamy dziś…”
Sorry ale po 10 godzinach spędzonych przed kompem w celu rozwiązania problemu na który nikt nie potrafił odpowiedzieć i ostatecznym znalezieniu rozwiązania oraz opisaniu go nie wiem w jaki sposób mógłbym zmienić swoją postawę bardziej na “dawać”. Tak jak napisałem to forum to dla mnie ostatnia deska ratunku.
Fajnie, miło z Twojej strony, to właśnie sposób wyrażenia “dawać” na miarę swoich możliwości.
Tamten wpis pokazuje jak się posługiwać forum, by się skutecznie dzielić kodem YAML (i nie tylko)
Nikt z nas nie ma nieograniczonej ilości wolnego czasu by robić coś za kogoś, chyba nie bierzesz w ogóle pod uwagę tego drobnego szczegółu.
Zapewne gdyby ktoś używał u siebie rozwiązania identycznego z tym, które sobie wymyśliłeś, to by wrzucił jakiś gotowy kawałek YAMLa, ale to jest forum (i są wątki gdzie odpowiedź pojawia się dopiero po tygodniach czy miesiącach), a nie komórka intensywnej pomocy technicznej opłacana przez wielkie korpo gdzie specjaliści zasuwają na etacie - swoją drogą nie wiem czy jeszcze istnieją takie instytucje, bo chyba niemal wszędzie zastąpiono coś takiego tańszymi rozwiązaniami.
Nie wiem po co ta ciągła informacja stanu przełacznika w logach przecież stan przełącznika widzisz w przeglądarce po zalogowaniu się do ESPHome, przykład mojego kontraktonu w ESPHome:
W mojej opinii najprostsza konfiguracja w ESPHome jest wystarczająca:
Stan przełącznika typu rocker będzie prawidłowo odczytywany po każdym restarcie ESPHome.
Ty też musisz być cierpliwy w oczekiwaniu na odpowiedź, dopiero teraz znalazłem czas żeby odpisać w temacie ESPHome, którego używam na prawie wszystkich urządzeniach w domu. Czasami swoje odpowiedzi weryfikuję po testach na tych urządzeniach żeby mieć pewność, że to działa a na to też potrzeba czasu.
Spieszę z wyjaśnieniami - ten kawałek z logowaniem jest tylko informacją dla mnie że ta część kodu działa - docelowo miała tam być inna zawartość.
Niestety po 3 dniach eksperymentów dochodzę do wniosku że założenia projektowe są do kitu - wszystko rozbija się o definicję sensora temperatury.
W prostych słowach - oparłem projekt o zmianę stanu 2 przełączników wykorzystując do tego definicję binary_sensor i reakcję na on_state (ta część działa bezbłędnie).
(kawałek kodu - są 4 definicje dla każdego stau przełącznika)
nie daje spodziewanych rezultatów.
Przekażnik test1 jest wirtualny, miałem w planie dopisanie jego sprawdzania do reguł przełącznika jako kolejny przełącznik ale odczyt jego stanu jest wykonywany tylko w momencie zmiany stanu przełączników głównych SWITCH_piec lub SWITCH_latozima.
Prawdopodobnie cały projekt trzeba oprzeć o programowanie C++ (lambdas) a powiedzieć, że dokumentacja do tego jest skromna to jakby powiedział Kobuszewski - “to takie niedomówienie” - raczej żałosna to najprostsze określenie jakie przychodzi mi do głowy.