Ustawianie licznika / pomocnika

Witam, po raz pierwszy na forum
jesli cos zrobie nie tak nie wylewajcie na mnie wody - poprawie sie…
Mam problem z ktorym walcze jez drugi dzien i AI nie jest w stanie mi pomoc
zrobilem kod do skryptu, ktory restartuje system, wstawia opoznienie na ustalenie sie systemu i realizuje ustawianie licznika / pomocnika na wartosc zalezna od ztanu czujnika drzwiowego. Skrypt nie jest przyjmowany przez system bo ma bledy… ja sie nie moge dopatrzec… zaczalem dopiero zabawe z yaml… ponize podaje kod

script:
  restart_and_set_counter:
    alias: 'Restartuj system i ustaw licznik'
    sequence:
      - service: homeassistant.restart  # Restartuje system
      - delay: '00:01:15'  # Opóźnienie 75 sekund
      - choose:
          - conditions:
              - condition: state
                entity_id: binary_sensor.czujnik_drzwi_lazienka_woox_drzwi
                state: 'on'  # Drzwi otwarte
            sequence:
              - service: input_number.set_value
                target:
                  entity_id: input_number.licznik
                data:
                  value: 3
          - conditions:
              - condition: state
                entity_id: binary_sensor.czujnik_drzwi_lazienka_woox_drzwi
                state: 'off'  # Drzwi zamknięte
            sequence:
              - service: input_number.set_value
                target:
                  entity_id: input_number.licznik
                data:
                  value: 0

Witamy na forum. Zacznik od tego:

OK, dzieki ! Przecwicze…

Pomogłem edytując posta.

A w jakim celu restartujesz HA? HA ma działać 24/7 :slight_smile:. Po restarcie HA wszystko przestaje działać, łacznie ze skryptem, ktory uruchamiasz :wink: Jaki problem chcesz rozwiązać?

Ok, jesli automatyka jest poprawna to na pewno powinno byc to 24/7 jesli nie…
problemem dla mnie nie jest te kilka wierszy na poczatku kodu tylko dalszy fragment kodu zawierajacy warunki, ktory uporczywie nei realizuje tego co - wydaje mi sie - jest w kodzie poprawne . A restartuje jak zmienim skrypt, ktory sie chyba na mnie zezlil…
to co wyslalem - za to przepraszam - malo czytelne dla analizy ale wieczorem sprobuje podeslac kod sformatowany … zamieszcam ten caly kod w script.yaml ale HA nie chce go przyjac, jesli wywale naglowek script: to HA nie chce go wywolac, a kod jest pokazany w skrypcie automatyzacji. Debugowanie nie wykazuje zadnych bledow , nie wykazuje rowniez bledow formatowania. Jesli wstawie naglowek script: wowczas wywala Error:extra keys not allowed @ data i wiecej tresci bledu niz mojego kodu…
Acha… kod wykonany w edytorze wizualnym pracuje poprawnie, wykonuje warunki …

Ale jak ma to się wykonać skoro w automatyzacji restartujesz HA…

To coś w guście próby dojechania do stacji benzynowej przez spuszczenie resztki paliwa do kanalizacji…

1 polubienie

Hmm… dwa tygodnie temu mialem zrobiony skrypt ktory pracowal bezblednie w tej samej formie ale w miedzyczasie zachcialo mi sie wywalic polskie znaki z encji czujnika i zaczal sie problem. Odinstlowalem czujnik i zaznaczylem opcje do odinstalowania jego pozostalosci w automatyce, nadalem nowa nazwe, uzupelnilem tam gdzie krzyczal o brak encji no i teraz jest jak jest… generalnie czesc kodu od choose nie dziala…
zauwazylem, że dzieja sie tu dziwne rzeczy bo widze mój kod jako sformatowany chyba przez Dobra Dusze … bardzo dziekuje !

EDIT:
Acha… robiac ten kod 2 tygodnie temu stwierdzilem, ze restart bedzie potrzebowal czasu na uspokojenie aby dalsza czesc kodu mogla byc wykonana. Czas uispokjania trwal ok 58 sek. dalem 75 z naddatkiem i wszystko gralo

Wyjaśnij proszę do czego ci skrypt restartujący HA?

Wyjasniam, jesli zajdzie potrzeba (teoretycznie bo pracuje 24/7) aby zrestartowac system wowczas po restarcie licznik czujnika ustawia sie na stan dowolny w zakresie 1-4. Stany licznika to 1 do 4 / otwarcie, zamkniecie, otwarcie, zamkniecie. Restart powoduje, że licznik ustawia sie jak chce na stan niezalezny od stanu czujnika drzwiowego. Zdarze sie po restarcie, ze drzwi sa otwarte a stan licznika 0 - blad - wskazuje na drzwi zamkniete wiec trzeba go zsynchronizowac czyli drzwi zamkniete = stan licznika 0 lub 2 jesli sa otwarte = stan licznika 1 lub 3. Jesli nie zsynchronizuje sie wowczas moze zaistniec sytuacja ze otwierajac drzwi do lazienki swiatlo gasnie. Generalnie zasadniczy problem to to, ze kod nie realizuje warunku ale wydaje mi sie, ze chyba mam problem po zmianie nazwy czujnika z nazwy z polskim znakiem na nazwe bez polskiego znaku poniewaz widzialem w logach , ze nieraz encja przedstawia mi sie bez jednego wyrazu w nazwie -lazienka- zatem musze znalezc sposob na usuniecie pozostalosci po poprzedniej nazwie, ktora podejrzewam , że powoduja cale zamieszanie / hazard. Troch moj wywod nieco zawily zlo, jak przeczuwam musze wyczyscic skutecznie reszki po zmianie nazwy encji…
A w ogole to wycialem wiersze z restartem i delay’em pozostawiajac same warunki w skrypcie i zginely bledy, debuger nic nie wykazal, skrypt jest w automatyzacji i wolany jest prawidlowo…zostaje chyba sprzątanie po poprzedniej encji…

Arturze, dzieki za zadanie sensownego pytania … generalnie problemem bylo niedzialanie warunku a powodem bylo uzycie input_number zamiast counter, warunek porownywal liczne zmiennoprzecinkowa ze staloprzecinkowa , po zamianie input_number na counter jest ok … dzieki bardzo !

2 polubienia