Ankündigung

Einklappen
Keine Ankündigung bisher.

Logic nur starten, wenn der Wert auf 1 geht

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

    Logic nur starten, wenn der Wert auf 1 geht

    Hallo,

    wer kann mir einen Tip geben. Ich habe eine Logik zur Bewässerung meines Gartens. In der Visu habe ich mehrere Buttons (z.B. garten.bewaesserung.auto) um die Bewässerung zu starten. Ich habe nun das Problem, das die Logik gestartet wird, und wenn der wert per Program wieder auf 0 gesetzt wird nochmals gestartet wird.... usw. usw. Was ich brauche, dass nur auf den "ein" Zustand die Logik startet und bei 0 nicht reagiert.
    Code:
    [LIST=1][*]#!/usr/bin/env python[*]# Bewässerungssteuerung mit dezidiertem Wasserverbrauch[*]'''[*]Created on 14.07.2015[*][*]@author: Michael L.[*]'''[*]logger.info("Logic Bewaesserung gestartet")[*]' Erstmal doie Variablen setzen / Menge in Liter / Dauer in Sekunden'[*]menge_vorne = 270[*]menge_hinten = 180[*]menge_seite = 90[*]menge_rasen1 = 500[*]menge_rasen2 = 500[*]menge_rasen3 = 800[*]dauer_vorne = 1200[*]dauer_hinten = 1200[*]dauer_seite = 900[*]dauer_rasen1 = 2700[*]dauer_rasen2 = 2700[*]dauer_rasen3 = 2700[*][*]'welches Programm soll laufen p = 0 keines / P =1 Vorne-Seite-Hinten / P=2 Rasen 1 und 2 / P=3 Vorne-Seite-hinten-Rasen1-Rasen2'[*]prog = 0[*][*]' Ist die Automatik eingeschatet und Programm wählen'[*]if sh.garten.bewaesserung.freigabe_b()and sh.garten.bewaesserung.auto():[*]prog = 1[*]sh.garten.bewaesserung.auto(0)[*]logger.info("Bewaesserung Start prog1")[*][*]if sh.garten.bewaesserung.freigabe_r()and sh.garten.bewaesserung.auto_r():[*]prog = 2[*]sh.garten.bewaesserung.auto_r(0)[*]logger.info("Bewaesserung Start prog2")[*]if sh.garten.bewaesserung.freigabe_r()and sh.garten.bewaesserung.freigabe_b() and sh.garten.bewaesserung.auto_a():[*]prog = 3[*]sh.garten.bewaesserung.auto_a(0)[*]logger.info("Bewaesserung Start prog3")[*][*]if prog == 1 or prog == 3 :[*]'gestartet wird mit vorne'[*]logger.info("Bewaesserung Freigabe_b True")[*]start = 1[*]start_time = time.time()[*]start_bw = sh.verbrauch.brauchwasser.wert()[*]start_fw = sh.verbrauch.frischwasser.wert()[*]sh.garten.bewaesserung.vorne(1)[*]logger.info("Bewaesserung Zone vorne Start")[*]while start :[*]delta_time = time.time() - start_time[*]delta_bw = sh.verbrauch.brauchwasser.wert() - start_bw[*]delta_fw = sh.verbrauch.frischwasser.wert() - start_fw[*]if (delta_bw + delta_fw) > menge_vorne :[*]'Ende über Menge'[*]start = 0[*]sh.garten.bewaesserung.vorne(0)[*]if (delta_time) > dauer_vorne :[*]'Ende über Zeit'[*]start = 0[*]sh.garten.bewaesserung.vorne(0)[*]logger.info("Bewaesserung Zone vorne Ende")[*]' bewaesserung vorne ende'[*]' bewaesserung hinten start'[*]start = 1[*]start_time = time.time()[*]start_bw = sh.verbrauch.brauchwasser.wert()[*]start_fw = sh.verbrauch.frischwasser.wert()[*]sh.garten.bewaesserung.hinten(1)[*]logger.info("Bewaesserung Zone hinten Start")[*]while start :[*]delta_time = time.time() - start_time[*]delta_bw = sh.verbrauch.brauchwasser.wert() - start_bw[*]delta_fw = sh.verbrauch.frischwasser.wert() - start_fw[*]if (delta_bw + delta_fw) > menge_hinten :[*]'Ende über Menge'[*]start = 0[*]sh.garten.bewaesserung.hinten(0)[*][*]if (delta_time) > dauer_hinten :[*]'Ende über Zeit'[*]start = 0[*]sh.garten.bewaesserung.hinten(0)[*][*]logger.info("Bewaesserung Zone hinten Ende")[*]' bewaesserung hinten ende'[*]' bewaesserung seite start'[*]start = 1[*]start_time = time.time()[*]start_bw = sh.verbrauch.brauchwasser.wert()[*]start_fw = sh.verbrauch.frischwasser.wert()[*]sh.garten.bewaesserung.seite(1)[*]logger.info("Bewaesserung Zone seite Start")[*]while start :[*]delta_time = time.time() - start_time[*]delta_bw = sh.verbrauch.brauchwasser.wert() - start_bw[*]delta_fw = sh.verbrauch.frischwasser.wert() - start_fw[*]if (delta_bw + delta_fw) > menge_seite :[*]'Ende über Menge'[*]start = 0[*]sh.garten.bewaesserung.seite(0)[*][*]if (delta_time) > dauer_seite :[*]'Ende über Zeit'[*]start = 0[*]sh.garten.bewaesserung.seite(0)[*][*]logger.info("Bewaesserung Zone seite Ende")[*]' bewaesserung seite ende'[*][*]' nun kommt der Rasen dran'[*]if prog == 2 or prog == 3 :[*]'gestartet wird mit rasen1'[*]logger.info("Bewaesserung Freigabe_r True")[*]start = 1[*]start_time = time.time()[*]start_bw = sh.verbrauch.brauchwasser.wert()[*]start_fw = sh.verbrauch.frischwasser.wert()[*]sh.garten.bewaesserung.rasen1(1)[*]logger.info("Bewaesserung Zone rasen1 Start")[*]while start :[*]delta_time = time.time() - start_time[*]delta_bw = sh.verbrauch.brauchwasser.wert() - start_bw[*]delta_fw = sh.verbrauch.frischwasser.wert() - start_fw[*]if (delta_bw + delta_fw) > menge_rasen1 :[*]'Ende über Menge'[*]start = 0[*]sh.garten.bewaesserung.rasen1(0)[*][*]if (delta_time) > dauer_rasen1 :[*]'Ende über Zeit'[*]start = 0[*]sh.garten.bewaesserung.rasen1(0)[*][*]logger.info("Bewaesserung Zone rasen Ende")[*]' bewaesserung rasen ende'[*]' bewaesserung rasen2 start'[*]start = 1[*]start_time = time.time()[*]start_bw = sh.verbrauch.brauchwasser.wert()[*]start_fw = sh.verbrauch.frischwasser.wert()[*]sh.garten.bewaesserung.rasen2(1)[*]logger.info("Bewaesserung Zone rasen2 Start")[*]while start :[*]delta_time = time.time() - start_time[*]delta_bw = sh.verbrauch.brauchwasser.wert() - start_bw[*]delta_fw = sh.verbrauch.frischwasser.wert() - start_fw[*]if (delta_bw + delta_fw) > menge_rasen2 :[*]'Ende über Menge'[*]start = 0[*]sh.garten.bewaesserung.rasen2(0)[*][*]if (delta_time) > dauer_rasen2 :[*]'Ende über Zeit'[*]start = 0[*]sh.garten.bewaesserung.rasen2(0)[*][*]logger.info("Bewaesserung Zone rasen2 Ende")[*]' bewaesserung rasen2 ende'[*]' bewaesserung rasen3 start'[*]start = 1[*]start_time = time.time()[*]start_bw = sh.verbrauch.brauchwasser.wert()[*]start_fw = sh.verbrauch.frischwasser.wert()[*]sh.garten.bewaesserung.rasen3(1)[*]logger.info("Bewaesserung Zone rasen3 Start")[*]while start :[*]delta_time = time.time() - start_time[*]delta_bw = sh.verbrauch.brauchwasser.wert() - start_bw[*]delta_fw = sh.verbrauch.frischwasser.wert() - start_fw[*]if (delta_bw + delta_fw) > menge_rasen3 :[*]'Ende über Menge'[*]start = 0[*]sh.garten.bewaesserung.rasen3(0)[*][*]if (delta_time) > dauer_rasen3 :[*]'Ende über Zeit'[*]start = 0[*]sh.garten.bewaesserung.rasen3(0)[*][*]logger.info("Bewaesserung Zone rasen3 Ende")[*]' bewaesserung rasen3 ende'[*]sh.garten.bewaesserung.auto(0)[*]sh.garten.bewaesserung.auto_r(0)[*]sh.garten.bewaesserung.auto_a(0)[/LIST]
    logic.conf sieht der Eintrag so aus:

    [Bewaesserung]
    filename = bewaesserung.py
    watch_item = garten.bewaesserung.auto

    in der items:

    [[[auto]]]
    type = bool
    visu_acl = rw
    enforce_updates = yes

    #2
    Eine Möglichkeit eine Logik abhängig von dem Wert eines Items zu starten gibt es nicht. Du kannst aber in der Logik den Trigger abfragen, und Deinen Code nur ausführen, wenn der Trigger Deinen Vorstellungen entspricht.

    Schaust Du hier unter Trigger.

    Du kannst also Deinen Code in ein if-Statement packen. Etwa so:

    Code:
    if trigger['value'] == True:
    
        <Dein Code>
    Viele Grüße
    Martin

    There is no cloud. It's only someone else's computer.

    Kommentar

    Lädt...
    X