Hallo Wolfgang,
Du solltest Dich ein bisschen mit (Python) Programmierung vertraut machen um es zu verstehen.
In dem Zusammenhang die time und datetime Module. Das kann man prima in python -i ausprobieren.
Und ja die Logik hat in dem anderen Thread funktioniert, da dort das Zeitfenster größer als Null war.
Bis bald
Marcus
Ankündigung
Einklappen
Keine Ankündigung bisher.
- √ - Kleine Logik, Rollo runter ab bestimmter Temperatur
Einklappen
X
-
Hallo,
ja super, das funktioniert.
Verstanden hab ich das trotzdem nicht so ganz.
Wenn du sagt, now.hour gibt einen Integer zurück, heißt das in dem Fall der Uhrzeit 19:34 ne ganze Zahl also 19? Für mein Vorhaben ist das ok, aber wie hätte es aussehen müssen für die Uhrzeit 19:34?
Diese ist ja größer als 19 Uhr... dann hätte doch meine Logik funktionieren müssen. Vor allem hab ich die Logik in nem anderen Thread im Forum gefunden. Hat das denn mal so funktioniert?
Aber nun gut. Es funktioniert dank deiner Hilfe.
Schönen Abend Euch allen.
Gruß
Wolfgang
Einen Kommentar schreiben:
-
Hallo Wolfgang,
das vormittags kann ja nie True werden.
now.hour gibt ein Integer zurück.
vormittags = now.hour > 19 and now.hour < 20
Aufgelöst für 19:34 gibt das
vormittags = 19 > 19 and 19 < 20
vormittags = False and True
vormittags = False
vormittags = now.hour >= 19 and now.hour <= 20
Bis bald
Marcus
P.S. mit logger.info(now.hour) kannst Du Logeinträge erzeugen oder mit mit einem print(now.hour) im interaktiven oder Debugmodus.
Einen Kommentar schreiben:
-
Hallo,
noch als kleine Ergänzung.
Die anderen Zeit von sh.py passen.
Sowohl die Zeit die auf den Bus für andere Geräte geschickt wird, also auch crontabs für andere Logiken.
Gruß
Wolfgang
Einen Kommentar schreiben:
-
Hallo,
ich wollte nun eine Zeitkomponente mit in die Logik einbringen.
ohne das "vormittags and" hinter dem if funktioniert die kleine Logik.Code:now = sh.now() vormittags = now.hour > 19 and now.hour < 20[FONT=Courier New][SIZE=1][FONT=Courier New][SIZE=1] #nur zum Test auf 19 und 20 Uhr gesetzt [/SIZE][/FONT][/SIZE][/FONT][SIZE=1] if vormittags and sh.Erdgeschoss.Wohnzimmer.Temperatur() >= 23.0: sh.Erdgeschoss.Wohnzimmer.Deckenlicht.an (1) [/SIZE]
Sobald ich die Zeit mit ins Spiel bringe geht's nicht, obwohl mehr als 23° und die Uhrzeit zwischen 19 und 20 Uhr liegt.
Im Log kommt kein Fehler. Liegt das vielleicht an der Zeitzone? Wie kann ich das korrigieren? Gibt es irgendeinen Befehl um anzuzeigen was sh.now zurück gibt? Dann würde man dem Fehler evtl. näher kommen.
Vielen Dank mal wieder.
Gruß
Wolfgang
Einen Kommentar schreiben:
-
Versuchts mal damit:
Beim IST Gleich Operator müssen zwei == angegeben werden.Code:if sh.Zentral.Zentral_Befehle.Dachfenster_Alle() [COLOR=Red]=[/COLOR]= 0: sh.Test.testraum.Heizungspumpe(0) else: sh.Test.testraum.Heizungspumpe(1)
Einen Kommentar schreiben:
-
Hallo,
nachdem meine erste kleine Logik funktioniert scheitere ich an meinem nächsten Versuch.
Wie lautet denn hier die Syntax?
Probiert habe ich auch das hierCode:if sh.Zentral.Zentral_Befehle.Dachfenster_Alle(0): sh.Test.testraum.Heizungspumpe (0) else: sh.Test.testraum.Heizungspumpe (1)
Beim ersten geht mein Dachfenster auf, bei der 2. Logik kommt der Fehler das kein Attribut vorhanden ist...Code:if sh.Zentral.Zentral_Befehle.Dachfenster_Alle() = 0: sh.Test.testraum.Heizungspumpe (0) else: sh.Test.testraum.Heizungspumpe (1)
Erreichen will ich, das wenn das Item Zentral.Zentral_Befehle.Dachfenster_Alle eine "0" empfängt,die Pumpe aus geht und wenn ne 1, dann halt angeht.
Könnte da mal jemand drüber gucken?
DANKE
Wolfgang
Einen Kommentar schreiben:
-
Super...
Es funktioniert. Jetzt muß ich mal um die Zeit (cron) kümmern.
Vielen Dank für Eure Hilfe
Gruß
Wolfgang
Einen Kommentar schreiben:
-
Ah okay, das mit der Uhrzeit habe ich vergessen, du hast recht. Dann ist die Lösung mit crontab natürlich eine von vielen Möglichkeiten
Einen Kommentar schreiben:
-
Danke für den Hinweis mit dem Code... werde ich beachten.
Dann war ich mit der Syntax ja schonmal auf dem richtigen weg, auch wenn noch ein paar Steine da lagen... *freu*
Wenn ich das mit dem Wacht_item mache dann muß ich in die EZH_Rollo.py ja noch die Zeitkomponente rein kriegen.
Daher dachte ich an einen Cron der ab 14 Uhr mit einer Intervall von 15min die Logik aufruft. Dann habe ich in der Logik selbst nichts mit Zeit zu tun. (Weiß nämlich ehrlich gesagt nicht ganz wie ich dort ne Zeit rein bekommen soll) Trotz des Hinweis von macflei. Hab ein Item mit dem Sunset-Cron belegt. Daher kannte ich die Seite mit der Kurzanleitung. Aber das ganze bringt mir ja nichts für die aktuelle Uhrzeit.
Einen Kommentar schreiben:
-
Bitte für code die CODE Blöcke des Forums verwenden (Icon mit dem #).
Dein Beispiel ist wirklich invalide. Versuch es mal mit:
Ebenfalls ungetestet, kann also auch noch Syntaxfehler enthalten. Anstatt des cron_tab = init würde ich eher watch_item = Erdgeschoss.Wohnzimmer.Temperatur machen. Ansonsten wird die Logik nur einmal beim Start ausgeführt. Mit der watch_item Variante jedes mal wenn sich die Temperatur ändert.Code:if sh.Erdgeschoss.Wohnzimmer.Temperatur() >= 21.0: sh.Erdgeschoss.Wohnzimmer.Deckenlicht(1)
Einen Kommentar schreiben:
-
schau doch mal dort ....
smartVISU Kurzanleitung v2.7
das müßte man doch "nur" um die Uhrzeit erweiren
Einen Kommentar schreiben:
-
Hallo,
danke für deine Info. Hab also etwas weiter gesucht, und habe in der Logic.conf folgenden Eintrag gemacht:
im Ordner Logics liegt die ESZ_Rollo.py mit folgendem Inhalt:# logic.conf
#[hello]
# filename = hello.py
# crontab = init
#[dummy]
# filename = dummy_series.py
# cycle = 300
[ESZ_Rollo]
filename = ESZ_Rollo.py
crontab = init
Nach smarthome.py -s und anschließen smarthome.py -d meldet Smarthome einen Syntaxfehler in Zeile 1.if sh.Erdgeschoss.Wohnzimmer.Temperatur ( >= 21,0 )
sh.Erdgeschoss.Wohnzimmer.Deckenlicht (1)
Das heißt für mich, das mein Eintrag in der logic.conf schonmal richtig ist, da die Datei gefunden wurde.
Jetzt liegts dann an meiner Syntax. Könnte mir da jemand nen Schupps geben?
Außerdem würde ich gerne wissen, wie ich auf die Uhrzeit zugreifen kann? Die gibt's ja nicht in einem Item. Der Raspi holt sich die ja aus dem Netz und schickt die Uhrzeit dann per Gruppenadresse auf den Bus. Wie greife ich das ab? Oder würde ich besser hingehen in der logic.conf und würde da per Crontab die ESZ_Rollo.py ab 14 Uhr in 15min Intevallen aufrufen? Dann hätte ich die Uhrzeit in der .conf und nicht in der .py Datei.
Wie mache ich das am sinvollsten?
Gruß
Wolfgang
Einen Kommentar schreiben:
-
Reicht auch aus. Okay, die Syntax stimmt noch nicht, aber die Logik ist korrekt.Zitat von Bit-te Beitrag anzeigenFür mein Anfängerverständnis würde es mir reichen, wenn in einer Datei sowas stehen würde wie:
If (Außentemperatur >=20) and Uhrzeit (>=14 Uhr) Item Rolle=1
Einen Kommentar schreiben:


Einen Kommentar schreiben: