Ankündigung

Einklappen
Keine Ankündigung bisher.

Automatische Beschattung

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

  • JanT
    antwortet
    Hallo Sprocky,

    offline hat einen schönen Ansatz implementiert, siehe Forumsthread Logik für Raffstore-Steuerung oder auch SmartHome Wiki. Ich habe für mich seine Lokik erweitert in dem ich mit raumbezogene Abhängigkeiten wie Anwesendheit, Kunstlicht aktiv, Heiz/Kühlbedarf sowie Solarstrahlung die Raffstore ansteuere. Weiterhin habe ich die Berechnung der optimale Lamellenstellung für eine Beschattung in Abhängigkeit der Lamellengeometrie und Sonnenhöhe eingefügt. Die Logik ist ziemlich mit meiner Item-Struktur verwogen und außerdem noch "in Bearbeitung". Solltest Du dennoch über offlines Implementation hinaus den Bedarf haben, melde Dich bitte noch mal.

    Viele Grüße,

    Jan

    Einen Kommentar schreiben:


  • chriscrown
    antwortet
    Hallo Sprocky!

    Ich habe mich letztes Jahr mit meiner ersten smarthome.py-Logik dem Thema Sonnenschutz gewidmet. Es war mein erster Python-Gehversuch und ist daher mit Sicherheit etwas dirty und verbos, aber es funktioniert einwandfrei. Ich kann ganz simpel im Wohnzimmer mit einem Taster die Automatik ein- oder ausschalten, was auch zu einem einigermaßen hohen WAF führte.

    Nochmal kurz zusammengefasst was es macht:
    Ich habe für meine mit Rollladen ausgerüsteten Fenster mittels iPhone-Kompass die Winkel ermittelt, bei denen Sonne in das Fenster einfällt. down -> Rollladen runter, up -> Rollladen wieder hoch. Dazu kann man noch angeben, wie weit der Rollladen runter fahren soll. (Das kann man bestimmt auch noch schön bei den eigentlichen Rollladen-items hinterlegen, aber ich wollte es erstmal langsam angehen... :-))
    Dann gehe ich einfach die entsprechenden items durch und setze die Werte, sobald die Bedingungen entsprechend erfüllt sind. Ausnahmen gibt es bei meinen Fenstern zur Terrasse: Ist ein Fenster geöffnet, wird es von der Automatik ausgenommen, damit man sich nicht aussperrt.
    Ein- und ausgeschaltet wird die Logik mit dem item "sunprotection_enabled".

    Die Logik wird folgendermaßen getriggert:

    Code:
    [sunprotection]
        filename = sunProtection.py
        crontab = init | 0,15,30,45 9,10,11,12,13,14,15,16,17,18,19,20,21 * *
        watch_item = sunprotection_enabled
    Vielleicht ist das ja ein nützlicher Startpunkt für Dich.
    Viel Spaß damit!

    Code:
    #!/usr/bin/env python
    
    import math
    
    logger.info('********** SUNPROTECTION 1.0 **********')
    
    SHUTTER_AZIMUT_MAPPING = {  
      'livingroom.shutter.bayLeft':        { 'downPos': 80, 'down': 110, 'up': 212 },
      'kitchen.shutter':                   { 'downPos': 80, 'down': 140, 'up': 264 },
      'livingroom.shutter.bayMidLeft':     { 'downPos': 50, 'down': 140, 'up': 264 },
      'livingroom.shutter.bayMidRight':    { 'downPos': 80, 'down': 140, 'up': 264 },
      'sleepingroom.shutter':              { 'downPos': 80, 'down': 140, 'up': 264 },
      'livingroom.shutter.cornerGarden':   { 'downPos': 80, 'down': 160, 'up': 264 },
      'livingroom.shutter.bayRight':       { 'downPos': 80, 'down': 215, 'up': 264 },
      'livingroom.shutter.cornerDriveway': { 'downPos': 80, 'down': 215, 'up': 264 }
    }
    
    if sh.return_item('sunprotection_enabled')():
      logger.info('Sonnenschutz ist aktiviert')
      currentAzimut = math.degrees(sh.sun.pos()[0])
      logger.info('Azimut: ' + str(currentAzimut))
      for shutterItem, values in SHUTTER_AZIMUT_MAPPING.items():
        position = None
        item = sh.return_item(shutterItem)
    
        # Azimut prüfen und Position setzen
        if currentAzimut > values['down']:
          position = values['downPos']/100*255
        if currentAzimut > values['up']:
          position = 0
    
        # Ausnahmen
        if item.id() == 'kitchen.shutter' and item.return_parent().contact():
          position = None
          logger.info('Küchentür offen, nicht herunterfahren')
        elif item.id() == 'livingroom.shutter.bayMidRight' and item.return_parent().return_parent().contact_sliding():
          position = None
          logger.info('Schiebeelement offen, nicht herunterfahren')
        elif item.id() == 'livingroom.shutter.cornerGarden' and item.return_parent().return_parent().contact_parallel():
          position = None
          logger.info('PSK offen, nicht herunterfahren')
    
        # Wert senden
        if position is not None:
          logger.info(str(item) + ': Position ' + str(position))
          item.position(position)
    
    else:
      logger.info('Sonnenschutz ist deaktiviert')

    Einen Kommentar schreiben:


  • Sprocky
    hat ein Thema erstellt Automatische Beschattung.

    Automatische Beschattung

    Hallo,

    hat jemand von Euch eine automatische Beschattung der Rolladen/Jalousien programmiert?
    Ich würde gerne die Rolladen anhand von Sonnenstand, Temperatur,... steuern.

    Kann ich was übernehmen oder muss ich selber tätig werden? Im Forum bin ich nicht so recht fündig geworden.

    Gruß

    Sprocky
Lädt...
X