Ankündigung

Einklappen
Keine Ankündigung bisher.

UZSU sperren | Sperritem

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    UZSU sperren | Sperritem

    Hallo,

    ist es möglich, die UZSU zu sperren?
    Ich ich möchte die mit der UZSU definierten Automatiken nur ausführen, wenn bestimmte Bedingungen erfüllt sind.
    Wie würdest ihr das machen?

    Danke für die Rückmeldung.

    #2
    "Umweg" über eine Logik mit SperrItem, also UZSU>(Hilfs-)"Logik-"Item>LogikTrigger>If-Clause>Ausführung

    Kommentar


      #3
      Du könntest die UZSU deaktivieren, wenn bestimmte Items gesetzt werden (die Prüfung wäre dann also nicht bei der Ausführung der UZSU sondern bei Ändern der Sperritems).
      Wenn ich mich nicht irre, müsste die Logik dazu etwa folgendermassen aussehen:

      Code:
      uzsu = mein.uzsu.item()
      uzsu['active'] = not speeritem1() and not sperritem2()
      mein.uzsu.item(uzsu)
      Diese setzt die UZSU auf aktiv, wenn beide Sperritems false sind, andernfalls auf inaktiv.

      Kommentar


        #4
        smai
        Das klingt interessant. Allerdings reicht wohl mein Wissen nicht aus, um mit dem Logic-ausschnitt was anfangen zu können.
        Der Code wäre dann eine Logic bspw. uzsu.py und mein.uzsu.item() ist das uszu item des zu schalten items oder das zu schaltende items selbst?

        Kommentar


          #5
          Ehrlich gesagt habe ich noch nie eine Logik gemacht, ich bin immer mit eval ausgekommen. Deshalb weiss ich nicht so genau, wie eine solche aussehen muss.
          Aber mein.uzsu.item wäre die UZSU, nicht das zu schaltende Item.
          Die Logik müsste immer dann ausgelöst werden, wenn der Wert eines der Sperritens ändert.

          Kommentar


            #6
            Ok, verstehe.
            wie würdest Du das eval gestalten?

            Kommentar


              #7
              Gar nicht, weil es hier nicht reicht, da man dies nicht in einem Ausdruck schreiben kann.

              Kommentar


                #8
                Hier ein Logikbeispiel:

                Ich schalte die Zeitschaltuhren meiner Thermostate ein, wenn meine Heizung auf Winterbetrieb schaltet,
                Bei Sommerbetrieb wird ausgeschaltet.
                Als zu überwachendes Item nehme ich meine Heizungspumpe

                logic.yaml:
                Code:
                winter:
                    filename: winter.py
                    watch_item: uvr1611.ausgang.hkpumpe
                Code:
                #!/usr/bin/env python
                #logger.info(trigger)
                
                if sh.uvr1611.ausgang.hkpumpe() == True:
                  value = sh.og.buero.heizung.modus.uzsu()
                  value['active'] = True
                  sh.og.buero.heizung.modus.uzsu(value)
                  value = sh.og.flure.heizung.modus.uzsu()
                  value['active'] = True
                  sh.og.flure.heizung.modus.uzsu(value)
                  value = sh.og.wohnen.heizung.modus.uzsu()
                  value['active'] = True
                  sh.og.wohnen.heizung.modus.uzsu(value)
                  value = sh.eg.badeg.heizung.modus.uzsu()
                  value['active'] = True
                  sh.eg.badeg.heizung.modus.uzsu(value)
                  logger.info("Winterbetrieb")
                else:
                  value = sh.og.buero.heizung.modus.uzsu()
                  value['active'] = False
                  sh.og.buero.heizung.modus.uzsu(value)
                  value = sh.og.flure.heizung.modus.uzsu()
                  value['active'] = False
                  sh.og.flure.heizung.modus.uzsu(value)
                  value = sh.og.wohnen.heizung.modus.uzsu()
                  value['active'] = False
                  sh.og.wohnen.heizung.modus.uzsu(value)
                  value = sh.eg.badeg.heizung.modus.uzsu()
                  value['active'] = False
                  logger.info("Sommerbetrieb")
                Gruß, Mike

                Kommentar


                  #9
                  Und wie sperrst Du dann diese Logik?

                  Sorry, aber ich hätte da die Sorge das ich das in 2-3 Jahren nicht mehr blicke. Aus meiner Sicht sollte man die UZSU via SV aktivieren oder deaktivieren und die UZSU sollte zeigen ob sie triggert oder nicht.

                  Alles andere dann in der Logik mit Sperritem für die Logik.
                  Wenn Deine Logik hohl dreht schaltet diese die UZSU um wie sie will und Du kannst klicken was Du willst. Das geht dann solange bis Du in den Code eingreifst.

                  Kommentar

                  Lädt...
                  X