Keresés

Új hozzászólás Aktív témák

  • kis.zsolt

    aktív tag

    válasz Pistivi #56542 üzenetére

    Itt elég sokan próbálunk szkriptet írni a kérésed szerint.
    Hogy egyszerűsítsem a dolgod ;] , én a kiindulópontra koncentráltam, vagyis arra a hozzászólásodra, melyre most válaszolok - azóta persze születtek jobbnál jobb szkriptek, de én az alapokból indulnék ki, ha megengeded:

    Az általad megosztott szkript egy egyszeri végrehajtást biztosít, de nem ismétli meg a ciklust. A kívánt viselkedéshez egy folyamatosan ismétlődő ciklust kell létrehozni, amely figyelembe veszi a kapcsoló állapotát. A repeat funkciót kell használnod a ciklikus viselkedéshez.
    Az alábbi példa szkript megvalósítja a 10 perc bekapcsolt állapotot és 20 perc kikapcsolt állapotot, és ezt addig ismétli, amíg az input_boolean.pince_szelloztetes kapcsoló bekapcsolt állapotban van
    alias: Szelloztetes
    description: "Ventilátor ciklikus vezérlése"
    mode: restart
    trigger:
      - platform: state
        entity_id: input_boolean.pince_szelloztetes
        from: "off"
        to: "on"
    condition: []
    action:
      - repeat:
          while:
            - condition: state
              entity_id: input_boolean.pince_szelloztetes
              state: "on"
          sequence:
            - service: switch.turn_on
              target:
                entity_id: switch.d0............
            - delay: "00:10:00"  # 10 perc
            - service: switch.turn_off
              target:
                entity_id: switch.d0............
            - delay: "00:20:00"  # 20 perc


    Kipróbálni nem tudtam, de mintaként megállja a helyét.
    Remélem segít a problémád megoldásában.

  • Degeczi

    nagyúr

    válasz Pistivi #56542 üzenetére

    Ilyen hosszú időzítéseket nem túl célszerű delay-el megoldani, mert nagyon nagy rá az esély, h az automatizálás futása közben indítod újra a rendszert, és akkor félbeszakad az egész, vagyis már nem fog ki-, vagy épp bekapcsolni...

    Lehet, szellőztetésnél ez csak kellemetlenség, de pl. locsolásnál már komoly anyagi kárt is okozhat egy ilyen hiba, így ahol ez fontos, ott mindenképpen más megoldást érdemes keresni, pl. bekapcsolásnál egy dátum segédváltozóba írni a kikapcsolás elvárt időpontját, és egy percenként lefutó automatizálásban azt nézni, elmúlt-e már az az időpont, az atombiztos.

    Másrészt ha kézzel szerkesztesz yaml file-okat, mindenképpen nevezd át vmi beszédesre az entitásokat, mert a generált id-k olvashatatlanok emberi szemmel, ill. device alapú hivatkozás helyett sima entitás alapút használj, mert az nincs eszközhöz kötve (ha lecserélsz egy kapcsoló hardvert, az újnak is adhatsz ugyanolyan entitás id-t, míg a device id mindenképpen egyedi, és többé nem működik az automatizálás) másrészt jól dokumentált, míg a device alapú automatizálások egyáltalán nem, azok a GUI-n szerkesztésre jók csak.

  • dbius

    veterán

    válasz Pistivi #56542 üzenetére

    Én valami ilyesmit próbálnék első körben:

    description: "Akármi"
    mode: single
    triggers:
      - trigger: state
        entity_id:
          - sensor.marci_szobaja_homerseklet
    conditions: []
    actions:
      - choose:
          - conditions:
              - condition: state
                entity_id: light.tradfri_eloszoba_vilagitas
                state: "on"
            sequence:
              - delay:
                  hours: 0
                  minutes: 10
                  seconds: 0
              - type: turn_off
                device_id: 12d38ffe9e29a9b14e932f1fdf9ee18e
                entity_id: 290d7de698e3c9e3abee2c2f476b6625
                domain: light
            alias: Ha be van kapcsolva
          - conditions:
              - condition: state
                entity_id: light.tradfri_eloszoba_vilagitas
                state: "off"
            sequence:
              - delay:
                  hours: 0
                  minutes: 20
                  seconds: 0
              - type: turn_on
                device_id: 12d38ffe9e29a9b14e932f1fdf9ee18e
                entity_id: 290d7de698e3c9e3abee2c2f476b6625
                domain: light
            alias: Ha ki van kapcsolva

    Röviden:

    Trigger (akkor) az maga a kapcsoló állapotváltozása, (esetleg HA restart)
    Majd hajtsa végre (logikai - választ):
    - ha be van kapcsolva: késleltet 10 percet, majd kapcsolja ki
    - ha ki van kapcsolva: késlelte 20 percet, majd kapcsolja be.
    Failsafe esetre be lehet rakni alapértelmezett műveletként pl. hogy kapcsolja be.

    Ezzel elvileg saját magát indítja újra, amikor vált az állapotok között.

    Szerk: Amíg írtam Vizion is valami hasonlót javasolt. A példámban az entitásnevek csak véletlenszerűen lettek kiválasztva, hogy ki tudjam másolni Neked, hogy szükség esetén be tudd illeszteni YAML módban szerkesztve egy automatizmust.

    [ Szerkesztve ]

  • ViZion

    félisten

    LOGOUT blog

    válasz Pistivi #56542 üzenetére

    delay 3 sec az mi?
    Mitől megy 10 percet és mitől áll 20 percet? :U
    Mindegy. A végére ez kell sztem:
    action: automation.trigger
    data:
    skip_condition: true
    target:
    entity_id: automation.szelloztetes

    Ez triggereli az automatizációt.
    Bár én úgy csinálnám, h
    venti bekapcs
    delay 10 perc
    venti kikapcs
    delay 20 perc
    automation.trigger

Új hozzászólás Aktív témák