Ankündigung

Einklappen
Keine Ankündigung bisher.

1. Versuch einer Logik

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

    1. Versuch einer Logik

    Hallo zusammen,

    ich gehe gerade meine ersten Schritte in Sachen Logik.
    Ich möchte durch Auswerten des Dämmerungswertes der Wetterstation das Item Tag bzw Nacht aktivieren.

    Meine tag_nacht.py:
    #!/usr/bin/env python
    #
    # Setzt den Status für Tag / Nacht
    #

    if sh.Wetterstation.Messwerte.Daemmerung > ('80') :
    sh.Wetterstation.Status.Tag('1')
    sh.Wetterstation.Status.Nacht('0')
    else :
    sh.Wetterstation.Status.Tag('0')
    sh.Wetterstation.Status.Nacht('1')
    Im Log bekomme ich dann:
    2015-09-15 13:00:55 ERROR Tag_Nacht Logic: Tag_Nacht, File: /usr/smarthome/logics/tag_nacht.py, Line: 6, Method: <module>, Exception: unorderable types: Item() > str()
    Traceback (most recent call last):
    File "/usr/smarthome/lib/scheduler.py", line 327, in _task
    exec(obj.bytecode)
    File "/usr/smarthome/logics/tag_nacht.py", line 6, in <module>
    if sh.Wetterstation.Messwerte.Daemmerung > ('80') :
    TypeError: unorderable types: Item() > str()
    Kann mir bitte einer auf's Pferd helfen?

    Danke und Gruß,
    Norbert
    Zuletzt geändert von NorbertB; 25.12.2015, 10:34.

    #2
    Dann passen die Klammern nicht beim <>, das muß ohne Klammern dort stehen, also if sh.Wetterstation.Messwerte.Daemmerung() > 80:

    und Einrücken nach dem if, else usw. nicht vergessen

    Kommentar


      #3
      Zitat von Sandman60 Beitrag anzeigen
      Dann passen die Klammern nicht beim <>, das muß ohne Klammern dort stehen, also if sh.Wetterstation.Messwerte.Daemmerung() > 80:

      und Einrücken nach dem if, else usw. nicht vergessen
      Jo, klappt jetzt
      Übrigens, eingerückt ist das, wurde nur vom "Quote" weggemacht

      Kommentar


        #4
        Deswegen verwendet man auch CODE für so etwas... Gruß Waldemar
        OpenKNX www.openknx.de

        Kommentar


          #5
          Zitat von mumpf Beitrag anzeigen
          Deswegen verwendet man auch CODE für so etwas... Gruß Waldemar
          Mach' ich beim nächsten Mal

          Kommentar


            #6
            Zur Sache noch: Du solltest die Zeit einbeziehen in Deine Logik. Sonst kann es Dir passieren, das Du bei schönem Morgen/Abend mit schnellen Wolken immer wieder Schwankungen im Dämmerungswert hast und Du einen munteren Tag/Nacht Wechsel hast. Also salopp wenn Zeit < 12 Uhr Mittags und es noch Nacht ist und der Dämmerungswert > 80 ist, dann Tag ein und Nacht aus. Dazu analog wenn Zeit > 12 Uhr und Tags und Dämmerungswert <= 80 dann Nacht = ein und Tag = Aus.
            Das mit der Zeit kannst Du auch noch verfeinern, indem Du sagst statt > oder < 12 Uhr mittags dann Sonnenaufgang +/- 20 min.

            Hier ein Beispiel mit der Zeit für eine Jalousiesteuerung. Die Automatik ist einfach noch ein Schalter um unter bestimmten Bedingungen zu verhindern, das was passiert.
            Code:
            #
            # Wenn morgens zwischen 7:30 und 9:00 die Präsenzmelder in den Räumen
            # an der Frontseite eine Präsenz melden,
            # dann sollen die Jalousien hochgefahren werden
            #
            from datetime import datetime, time
            
            logger.info('Jalousien Front prüfen')
            
            now = datetime.now()
            now_time = now.time()
            
            if now_time >= time(7,00) and now_time <= time(9,00) and sh.Zentral.JalousieWest.Automatik():
                sh.Zentral.JalousieWest.Fahren(0)
                logger.info('--> Jalousien Front hochfahren')
            elif not sh.Zentral.JalousieWest.Automatik():
                logger.info('--> Jalousien Front Automatik ist ausgeschaltet')
            else:
                logger.info('--> Jalousien Front hochfahren außerhalb der Zeit nicht gewünscht')

            Gruß,
            Bernd

            Kommentar

            Lädt...
            X