Ankündigung

Einklappen
Keine Ankündigung bisher.

Markise steuern

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

    Markise steuern

    Ich habe eine Markise auf der Terasse und möchte damit automatisch abschatten, damit es im Wohnzimmer nicht zu warm wird. Die Frage ist, wie mache ich das am besten:
    - im Winter soll die Markise nicht abschatten, damit sich der Raum aufheizen kann => das würde ich von der Außentemperatur abhängig machen und ggf. von der Heizperiode
    - Abschattung bringt nur was, wenn die Sonne runterbrennt, nicht aber, wenn nur die Außentemperatur hoch ist, aber kein Sonnenschein ist (z.B. bewölkt)

    Ich kann Innen- und Außentemperatur erfassen, habe aber keinen Helligkeitsmesser im Freien. Ich hätte Helligkeitsmesser in Innenräumen an meinen Bewegungsmeldern, aber die unterliegen natürlich Einflüssen, wie künstliches Licht, Rollos, etc. Die Innentemperatur ist zu träge, denn wenn diese steigt, ist eine "Überhitzung" des Raumes eigentlich nicht mehr aufzuhalten.

    Hat einer eine gute Idee oder wie macht Ihr das?

    #2
    Hab mir jetzt folgendes ausgedacht:
    ein Temperatursensor im Schatten, einen in der "prallen" Sonne. Wenn die Temperaturdifferenz der beiden groß wird, dann muss die Sonne scheinen.

    Meinen mangelden Java-Kenntnissen geschuldet, komme ich aber jetzt mit meiner Rule nicht weiter. Für einen Programmierer sicherlich eine Kleinigkeit. Für einen Tipp wäre ich sehr dankbar!
    Folgende Items und Rule habe ich im Einsatz:

    Items:
    Code:
    //Tempfühler Balkon
    Number TempUPDose "Schatten [%.1f °C]" <temperature>   (gBalkon,gAussenTemperatur)    { onewire="28.CCE056050000#temperature" }
    Number TempDach "Sonne [%.1f °C]" <temperature>   (gBalkon,gAussenTemperatur)    { onewire="28.F80557050000#temperature" }
    Rule:
    Code:
    import org.openhab.core.library.types.*
    import java.lang.Math
    
    rule "Sonne"
    when
        Item TempUPDose changed or
        Item TempDach changed
    then
        var Number UPDose = TempUPDose.state
        var Number Dach = TempDach.state
        var Diff = (Dach - UPDose)
        if (IsDay==ON && (Diff > 10) || (Dach > 30) && IsWinter.state==OFF) {
            logInfo("Sonne Rules", "TempDach - TempUPDose > 10 Grad, Sonne scheint")
            sendCommand(Sonne, ON)    
        } else {
            sendCommand(Sonne, OFF)
            logInfo("Sonne Rules", "Sonne scheint nicht")
        }
     
    end
    Hier die Fehlermeldung. Hat vermutlich was mit der Variablendeklaration zu tun?
    Code:
    07:33:45.086 ERROR o.o.c.s.ScriptExecutionThread[:50]- Error during the execution of rule 'Sonne': Could not invoke method: org.openhab.model.script.lib.NumberExtensions.operator_minus(java.lang.Number,java.lang.Number) on instance: null
    Wer findet den Fehler?
    Vielen Dank schon mal vorab!!!

    Kommentar


      #3
      Bin nun selber draufgekommen (viele Beispiele ausprobiert). SO scheint es jetzt zu funktionieren:

      Rule:
      Code:
      import org.openhab.core.library.types.*
      import org.openhab.model.script.actions.*
      import java.lang.Math
      
      
      
      rule "Sonne"
      when
          Item TempUPDose changed or
          Item TempDach changed
      
          if (TempUPDose.state instanceof DecimalType && TempDach.state instanceof DecimalType) {
      
              if (IsDay==ON && (TempDach.state as DecimalType - TempUPDose.state as DecimalType > 10) || (TempDach.state as DecimalType > 30) && IsWinter.state==OFF) {    
                  logInfo("Sonne Rules", "TempDach - TempUPDose > 10 Grad, Sonne scheint")
                  sendCommand(Sonne, ON)    
              } else {
                  sendCommand(Sonne, OFF)
                  logInfo("Sonne Rules", "Sonne scheint nicht")
              }
           }
      end

      Kommentar

      Lädt...
      X