Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Kleine Logik, Rollo runter ab bestimmter Temperatur

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

  • callidomus
    antwortet
    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

    Einen Kommentar schreiben:


  • Bit-te
    antwortet
    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:


  • callidomus
    antwortet
    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:


  • Bit-te
    antwortet
    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:


  • Bit-te
    antwortet
    Hallo,

    ich wollte nun eine Zeitkomponente mit in die Logik einbringen.

    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]
    ohne das "vormittags and" hinter dem if funktioniert die kleine Logik.
    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:


  • Bit-te
    antwortet
    Vielen Dank.

    So funktioniert es nun... :-)

    Einen Kommentar schreiben:


  • fuxl66
    antwortet
    Versuchts mal damit:

    Code:
    if sh.Zentral.Zentral_Befehle.Dachfenster_Alle() [COLOR=Red]=[/COLOR]= 0:
        sh.Test.testraum.Heizungspumpe(0)
    else:
        sh.Test.testraum.Heizungspumpe(1)
    Beim IST Gleich Operator müssen zwei == angegeben werden.

    Einen Kommentar schreiben:


  • Bit-te
    antwortet
    Hallo,

    nachdem meine erste kleine Logik funktioniert scheitere ich an meinem nächsten Versuch.

    Wie lautet denn hier die Syntax?

    Code:
    if sh.Zentral.Zentral_Befehle.Dachfenster_Alle(0):
     sh.Test.testraum.Heizungspumpe (0)
    else:
      sh.Test.testraum.Heizungspumpe (1)
    Probiert habe ich auch das hier

    Code:
    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...

    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:


  • Bit-te
    antwortet
    Super...

    Es funktioniert. Jetzt muß ich mal um die Zeit (cron) kümmern.

    Vielen Dank für Eure Hilfe

    Gruß
    Wolfgang

    Einen Kommentar schreiben:


  • 2ndsky
    antwortet
    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:


  • Bit-te
    antwortet
    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:


  • 2ndsky
    antwortet
    Bitte für code die CODE Blöcke des Forums verwenden (Icon mit dem #).

    Dein Beispiel ist wirklich invalide. Versuch es mal mit:

    Code:
    if sh.Erdgeschoss.Wohnzimmer.Temperatur() >= 21.0:
        sh.Erdgeschoss.Wohnzimmer.Deckenlicht(1)
    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.

    Einen Kommentar schreiben:


  • macflei
    antwortet
    schau doch mal dort ....
    smartVISU Kurzanleitung v2.7

    das müßte man doch "nur" um die Uhrzeit erweiren

    Einen Kommentar schreiben:


  • Bit-te
    antwortet
    Hallo,

    danke für deine Info. Hab also etwas weiter gesucht, und habe in der Logic.conf folgenden Eintrag gemacht:

    # logic.conf
    #[hello]
    # filename = hello.py
    # crontab = init
    #[dummy]
    # filename = dummy_series.py
    # cycle = 300
    [ESZ_Rollo]
    filename = ESZ_Rollo.py
    crontab = init
    im Ordner Logics liegt die ESZ_Rollo.py mit folgendem Inhalt:

    if sh.Erdgeschoss.Wohnzimmer.Temperatur ( >= 21,0 )
    sh.Erdgeschoss.Wohnzimmer.Deckenlicht (1)
    Nach smarthome.py -s und anschließen smarthome.py -d meldet Smarthome einen Syntaxfehler in Zeile 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:


  • 2ndsky
    antwortet
    Zitat von Bit-te Beitrag anzeigen
    Fü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
    Reicht auch aus. Okay, die Syntax stimmt noch nicht, aber die Logik ist korrekt.

    Einen Kommentar schreiben:

Lädt...
X