Hauptmenü

Beschattungssteuerung

Begonnen von SkodaSascha, 28 April 2013, 13:07:01

Vorheriges Thema - Nächstes Thema

MisterEltako


#$Temp=14 ;;\
#$Sonne="Regen";;\
#my $hours=16;;\

Kannst du weglöschen. Das habe ich nur eingefügt um verschiedene Werte zu testen.
Das Zeichen "#" bedeutet diese Zeile ist auskommentiert, also nicht aktiv.

Schreibe bitte testweise für:
Log 3, "Temperatur ist: $Temp und Wetterbedingung ist: $Sonne, Stunde: $hour";;\

nun:
Log 3, "Temperatur ist: $Temp und Wetterbedingung ist: $Sonne";;\
Log 3, "Stunde: $hour";;\


MfG, MisterEltako.
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

SkodaSascha

Nach dem Speichern dauert es eine sehr lange Zeit bis der Fehler im Log auftaucht.



2013.05.04 09:54:25 3: CUL: Possible commands: BCFiAGMRTVWXefmltux
2013.05.04 09:54:26 1: Including ./log/fhem.save
2013.05.04 10:24:27 3: Rolladensteuerung return value: Unknown command {\
my, try help
Unknown command my, try help
2013.05.04 10:24:27 3: Rolladensteuerung return value: Unknown command {\
my, try help
FHEM auf Raspberry Pi, HMLAN + CUL

MisterEltako

Kannst du bitte deine Codezeilen posten? Bei mir läuft das oben geschriebene Fehlerfrei...

MfG, MisterEltako
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

SkodaSascha

Aber klar doch:

define Rolladensteuerung notify Wetter {\
my $Temp= ReadingsVal("Wetter","fc1_low_c","999");;\
my $Sonne= ReadingsVal("Wetter","fc1_condition","kein Wert");;\
#$Temp=14 ;;\
#$Sonne="Regen";;\
#my $hours=16;;\
Log 3, "Temperatur ist: $Temp und Wetterbedingung ist: $Sonne";;\
Log 3, "Stunde: $hour";;\
if (($Temp >= 27) && ($Sonne eq "sonnig") && ($hour >= 12)){\
fhem("set RolladenSchlafzimmer off");;\
Log 1, "Beschattungsposition wird angefahren...";;\
}elsif (($Temp<22) && ($hour>= 6) && ($hour<=17)){\
fhem ("set RolladenSchlafzimmer on");;\
Log 1,"Rolladen wird geöffnet...";;\
} elsif (($Temp==999) || ($Sonne eq "kein Wert")) {\
Log 1, "Yahoo-Wetter nicht erreichbar oder kein Wert geliefert";;\
} else {\
Log 1, "Rolladen unverändert";;\
}\
}
FHEM auf Raspberry Pi, HMLAN + CUL

MisterEltako

Dein Code brachte auch bei mir eine Fehlermeldung. Die Änderung auf nachfolgende Version funktioniert wieder:

define Rollladensteuerung notify Wetter {\
my $Temp= ReadingsVal("Wetter","fc1_low_c","999");;\
my $Sonne= ReadingsVal("Wetter","fc1_condition","kein Wert");;\
Log 3, "Temperatur ist: $Temp und Wetterbedingung ist: $Sonne";;\
Log 3, "Stunde: $hour";;\
if (($Temp >= 27) && ($Sonne eq "sonnig") && ($hour >= 12)){\
fhem("set RollladenSchlafzimmer off");;\
Log 1, "Beschattungsposition wird angefahren...";;\
}elsif (($Temp<22) && ($hour>= 6) && ($hour<=17)){\
fhem ("set RollladenSchlafzimmer on");;\
Log 1,"Rollladen wird geöffnet...";;\
} elsif (($Temp==999) || ($Sonne eq "kein Wert")) {\
Log 1, "Yahoo-Wetter nicht erreichbar oder kein Wert geliefert";;\
} else {\
Log 1, "Rollladen unverändert";;\
}\
}


MfG, MisterEltako
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

SkodaSascha

Die Fehlermeldungen sind nun weg, nun zum Log.

Vor 6 Uhr alles gut:

2013.05.05 05:41:35 3: Temperatur ist: 9 und Wetterbedingung ist: teilweise wolkig
2013.05.05 05:41:35 3: Stunde: 5
2013.05.05 05:41:35 1: Rolladen unverändert


Nach 6 Uhr kommt immer:

2013.05.05 06:11:34 3: Temperatur ist: 9 und Wetterbedingung ist: teilweise wolkig
2013.05.05 06:11:34 3: Stunde: 6
2013.05.05 06:11:34 2: FS20 set RolladenSchlafzimmer on
2013.05.05 06:11:34 1: Rolladen wird geöffnet...

und auch geschaltet wird wenige Sekeunden später:

2013.05.05 06:11:37 3: Temperatur ist: 9 und Wetterbedingung ist: teilweise wolkig
2013.05.05 06:11:37 3: Stunde: 6
2013.05.05 06:11:37 2: FS20 set RolladenSchlafzimmer on
2013.05.05 06:11:37 1: Rolladen wird geöffnet...
2013.05.05 06:11:37 2: FS20 RolladenSchlafzimmer on
2013.05.05 06:11:46 2: FS20 RolladenSchlafzimmer on

2013.05.05 07:11:37 3: Temperatur ist: 9 und Wetterbedingung ist: teilweise wolkig
2013.05.05 07:11:37 3: Stunde: 7
2013.05.05 07:11:37 2: FS20 set RolladenSchlafzimmer on
2013.05.05 07:11:37 1: Rolladen wird geöffnet...
2013.05.05 07:11:37 2: FS20 RolladenSchlafzimmer on
2013.05.05 07:11:47 2: FS20 RolladenSchlafzimmer on



Eigentlich macht er ja genau das was er soll, nur gibt es nicht die Möglichkeit diesen Schaltvorgang nur einmal ausführen zu lassen.
FHEM auf Raspberry Pi, HMLAN + CUL

Dietmar63

Doch, du musst dir den Zustand der des Rollos merken und in den Bedingungen mit abfragen.

Kann schnell kompliziert werden.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

SkodaSascha

Das stimmt, wird echt schnell kompliziert. OK, werde mal danach suchen, vielleicht finde ich ja was zum einbauen.
FHEM auf Raspberry Pi, HMLAN + CUL

Dietmar63

Du solltest versuchen den Code in die 99_Utils auslagern. Dann wird es übersichtlicher.

... Und, wenn möglich mit einem externen Editor arbeiten, dann hast du Syntax Highlighting für Perl und findest die Fehler einfacher.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Dietmar63

sieh dir mal das Attribut event-on-change-reading an.

Beispiel:
Link

... und das Wetter nicht so oft von yahoo holen. Es ändert sich sowieso nocht so oft.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

MisterEltako

define Rollladensteuerung notify Wetter {\
 my $Temp= ReadingsVal("Wetter","fc1_low_c","999");;\
 my $Sonne= ReadingsVal("Wetter","fc1_condition","kein Wert");;\
 Log 3, "Temperatur ist: $Temp und Wetterbedingung ist: $Sonne";;\
 Log 3, "Stunde: $hour";;\
 if (($Temp >= 27) && ($Sonne eq "sonnig") && ($hour >= 12) && (Value("RollladenSchlafzimmer") ne "off")){\
 fhem("set RollladenSchlafzimmer off");;\
 Log 1, "Beschattungsposition wird angefahren...";;\
 }elsif (($Temp<22) && ($hour>= 6) && ($hour<=17) && (Value("RollladenSchlafzimmer") ne "on")){\
 fhem ("set RollladenSchlafzimmer on");;\
 Log 1,"Rollladen wird geöffnet...";;\
 } elsif (($Temp==999) || ($Sonne eq "kein Wert")) {\
 Log 1, "Yahoo-Wetter nicht erreichbar oder kein Wert geliefert";;\
 } else {\
 Log 1, "Rollladen unverändert";;\
 }\
 }



oder in 99_myUtils:


fhem.cfg:
define Rollladensteuerung notify Wetter {Steuerung()};;

99_myUtils.pm:
sub
Steuerung (){
 my $Temp= ReadingsVal("Wetter","fc1_low_c","999");
 my $Sonne= ReadingsVal("Wetter","fc1_condition","kein Wert");

 Log 3, "Temperatur ist: $Temp und Wetterbedingung ist: $Sonne";
 Log 3, "Stunde: $hour";

 if (($Temp >= 27) && ($Sonne eq "sonnig") && ($hour >= 12) && (Value("RollladenSchlafzimmer") ne "off")){
      fhem("set RollladenSchlafzimmer off");
      Log 1, "Beschattungsposition wird angefahren...";
 }elsif (($Temp<22) && ($hour>= 6) && ($hour<=17) && (Value("RollladenSchlafzimmer") ne "on")){
     fhem ("set RollladenSchlafzimmer on");
     Log 1,"Rollladen wird geöffnet...";
 } elsif (($Temp==999) || ($Sonne eq "kein Wert")) {
     Log 1, "Yahoo-Wetter nicht erreichbar oder kein Wert geliefert";
 } else {
     Log 1, "Rollladen unverändert";
     }
  }
}




MfG,MisterEltako
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

SkodaSascha

Das hat doch schon einmal gestern gut geklappt...

Nur meiner Frau gefällt das so noch nicht ganz. Die Temperatur fällt wenn die Sonne untergegengen ist nur langsam ab, also bleibt den ganzen Abend das Rollo auf der Sonnenseite geschlossen.

Ich habe auch noch "teilweise wolkig" eingebaut, sonst wäre es gestern nicht runtergefahren.

if (($Temp >= 18) && (($Sonne eq "sonnig") || ($Sonne eq "teilweise wolkig")) && ($hour >= 12) && (Value("RolladenSchlafzimmer") ne "off")){\


Ich müßte diese Zeile:

}elsif (($Temp<15) && ($hour>= 12) && ($hour<=20) && (Value("RolladenSchlafzimmer") ne "on")){\

so Umbauen das der Rollladen hochfährt wenn es nicht "Sonnig" und nicht "teilweise wolkig" ist. Sonst würde ja bei aufkommendem schlecht Wetter, der Rollladen unten bleiben.
Sollte das Wetter aber gut bleiben möchte ich gerne eine halbe Stunde vor "sunset" den geschlossenen Rollladen wieder öffnen.
Und damit mir der Rollladen nicht in der Winterzeit wieder hochfährt, nachdem mein Helligkeitssensor schon schließen gemeldet hat, wäre eine Angabe mit "von Mai bis September" nicht schlecht.

Ich hoffe ich habe das so rübergebracht das man das versteht. Wer kann noch einmal helfen bitte?
FHEM auf Raspberry Pi, HMLAN + CUL

MisterEltako

Versuche einzubauen:

...}elsif (($Temp<15) && ($hour>= 12) && ($hour<=20) && (Value("RolladenSchlafzimmer") ne "on"))&& (($mmonth >= 5) || ($mmonth <= 9)) && (($Sonne ne "sonnig") || ($Sonne ne "teilweise wolkig")) {.....



und vor dem "else":
} elsif (($Sonne eq "sonnig") || ($Sonne eq "teilweise "wolkig")){\
  fhem("define Schoenwetter at +{sunset_abs(-1800)} set RollladenSchlafzimmer on");;\
  Log 3, "Es ist schoenes Wetter - Rollo 30min nach Sonnenuntergang öffnen...");;\
}else..

 
MfG, MisterEltako.
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

SkodaSascha

Ich habe es ein wenig nach meinen Wünschen noch geändert, es sieht nun so aus:

}elsif (($Sonne eq "sonnig") || ($Sonne eq "teilweise "wolkig")){\
fhem("define Schoenwetter at -{sunset_abs(-4800)} set RolladenSchlafzimmer on");;\
Log 3, "Es ist schoenes Wetter - Rollo 80min vor Sonnenuntergang öffnen...");;\
}elsif (($hour>= 12) && ($hour<=18) && (Value("RolladenSchlafzimmer") ne "on")) && (($mmonth >= 5) || ($mmonth <= 9)) && (($Sonne ne "sonnig") || ($Sonne ne "teilweise wolkig")){\
fhem ("set RolladenSchlafzimmer on");;\


Beim speichern keine Fehlermeldung, und im Log bis jetzt auch nicht. sieht das Ok so aus?
FHEM auf Raspberry Pi, HMLAN + CUL

SkodaSascha

Leider doch zu früh gefreut. Nach eine halben Stunde taucht das hier im Log auf:

2013.05.06 20:10:31 1: Including ./log/fhem.save
Bareword found where operator expected at (eval 6488) line 1, near ""teilweise "wolkig"
   (Missing operator before wolkig?)
String found where operator expected at (eval 6488) line 1, near "wolkig")){ fhem(""
Bareword found where operator expected at (eval 6488) line 1, near "")){ fhem("define"
   (Missing operator before define?)
Bareword found where operator expected at (eval 6488) line 1, near "} set"
   (Missing operator before set?)
String found where operator expected at (eval 6488) line 1, near "on"); Log 3, ""
Bareword found where operator expected at (eval 6488) line 1, near ""); Log 3, "Es"
   (Missing operator before Es?)
Number found where operator expected at (eval 6488) line 1, near "Rollo 80"
   (Do you need to predeclare Rollo?)
Bareword found where operator expected at (eval 6488) line 1, near "80min"
   (Missing operator before min?)
2013.05.06 20:40:28 3: Rolladensteuerung return value: Unrecognized character \xC3; marked by <-- HERE after untergang <-- HERE near column 638 at (eval 6488) line 1.
FHEM auf Raspberry Pi, HMLAN + CUL