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

    - √ - Kleine Logik, Rollo runter ab bestimmter Temperatur

    Hallo,

    hab ein funktionierenden Raspi mit fertigem Image im Einsatz. Gestern Abend nochmal frisch installiert.

    Was muß ich tun um folgendes zu realisieren?

    Hab einen Außentemperaturfühler (1-wire)
    Ich hätte gerne, dass die Rollos im Schlafzimmer ab einer gewissen Außentemperatur um eine festgelegte Uhrzeit runter fahren, damit das Schlafzimmer nicht überhitzt im Sommer.

    Wie setze ich das um? Wo muß ich welche Einträge machen? Wie sieht die Logik-Datei dazu aus?

    Wäre super wenn mir jemand dazu einen Lösungsansatz geben könnte.

    Ich glaube ich habe die meisten Beiträge zum Thema Logik hier im Smarthome Forum gelesen. Aber die meisten enden damit, dass man ein fertiges Plugin hat. Muß das immer so sein?

    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
    Ihr werdet wahrscheinlich jetzt lachen, aber ich weiß mir halt da nicht zu helfen...

    Vielen Dank
    Wolfgang

    #2
    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.
    Mit freundlichen Grüßen
    Niko Will

    Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
    - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

    Kommentar


      #3
      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

      Kommentar


        #4
        schau doch mal dort ....
        smartVISU Kurzanleitung v2.7

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

        Kommentar


          #5
          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.
          Mit freundlichen Grüßen
          Niko Will

          Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
          - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

          Kommentar


            #6
            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.

            Kommentar


              #7
              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
              Mit freundlichen Grüßen
              Niko Will

              Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
              - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

              Kommentar


                #8
                Super...

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

                Vielen Dank für Eure Hilfe

                Gruß
                Wolfgang

                Kommentar


                  #9
                  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

                  Kommentar


                    #10
                    Versuchts mal damit:

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

                    Kommentar


                      #11
                      Vielen Dank.

                      So funktioniert es nun... :-)

                      Kommentar


                        #12
                        Hallo,

                        ich wollte nun eine Zeitkomponente mit in die Logik einbringen.

                        Code:
                         now = sh.now()
                         vormittags = now.hour > 19 and now.hour < 20 #nur zum Test auf 19 und 20 Uhr gesetzt
                         if vormittags and sh.Erdgeschoss.Wohnzimmer.Temperatur() >= 23.0:
                         sh.Erdgeschoss.Wohnzimmer.Deckenlicht.an (1)
                         
                        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

                        Kommentar


                          #13
                          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

                          Kommentar


                            #14
                            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.

                            Kommentar


                              #15
                              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

                              Kommentar

                              Lädt...
                              X