Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
ich möchte gern mit einer Schleife meinen Regensensor überwachen. Hierzu sende ich mir beim Auslösen eine Nachricht. Ich habe leider das Problem das ich hin und wieder einen Fehlalarm bekomme (ca 1 mal pro Woche) Um nun Fenster zu steuern wäre es wichtig den Impuls zu überspringen. Hier der Code den ich nutze:
def Thread():
last_value = 1
#global current_value
while 1:
current_value = wert()
if current_value = 1 and last_value =1:
Message()
last_value = current_value
time.sleep(4)
th1=threading.Thread(target=Thread)
th1.start()
Wie kann ich erreichen wenn wert() das erste mal 1 ist, die schleife dies ignoriert und erst beim zweiten mal Message() ausführt. Kleine Info noch wenn es regnet wird alle 10 sec eine 1 in wert() geschrieben oder eben eine 0 wenn es nicht regnet. Hätte jemand einen Tipp ?
sorry ihr habe natürlich recht ich versuche zur Zeit verschiedene Varianten aber auch mit 0 filtert er den ersten wert nicht aus sondern durchläuft gleich die Schleife.
@firstfacility: Zeig doch mal tatsächlichen Code denn es macht wenig Sinn über Fehler in Code zu reden der vielleicht so ähnlich aussieht, aber den Fehler gar nicht enthält. Und die *Schleife* wird natürlich jedesmal durchlaufen. Muss sie ja auch.
while True:
if get_value() == 1:
while get_value() == 1:
show_message()
Durch die vorherige `if`-Abfrage hätte man die erste zu ignorierende 1 wunschgemäß weggeworfen. Das spart das Merken des vorherigen Wertes ein, mag aber für manche nicht so gut lesbar zu sein. Ich würde vermutlich die Variante mit dem Merken des Vorgängers wählen, weil mir das weniger fehleranfällig erscheint.