Hauptmenü

Beschattungssteuerung

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

Vorheriges Thema - Nächstes Thema

SkodaSascha

Da die Sonne nun bald wieder stärker wird (hoffen wir mal), bin ich schon eine ganze Weile am rumsuchen nach einer
Beschattungssteuerung. Am besten hat mir die über das Weather Modul gefallen. Aber so ganz steige ich da nicht durch, will es so einfach wie möglich machen, und direkt in die fhem.cfg schreiben.
Das hier habe ich gebastelt:


my $Temp= ReadingsVal("Wetter","fc1_low_c","999");;\
my $Sonne= ReadingsVal("Wetter","fc1_condition","kein Wert");;\
if (($Temp >= 27) && ($Sonne eq "sonnig") && (Value("FS_201b1b55")!=15) && ($hour >= 10)){\
fhem("set Rollladen 15");;\
Log 1, "Beschattungsposition wird angefahren...";;\
}elsif (($Temp<22) && (Value("Rollladen")==15)){\
fhem ("set FS_201b1b55 off");;\
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";;\
}\
}


Beim speichern sagt mir Fhem : ERROR: Unknown command my, try help
So ganz steig ich da nicht durch, auch nach lesen der help. Kann mir jemand auf die Sprünge helfen?

Ich möchte ganz einfach einen Rolladen ab 10.00 Uhr morgens wenn bei Weather Sonne drin steht und Temperatur über 27 Grad auf off schalten. Bin mir für die weitere Überwachung nicht ganz klar was geht. Vielleicht jede Stunde eine Überprüfung ob immer noch Sonne sowie Temperatur noch über 27 drin steht, wenn nicht wieder hochfahren lassen.
FHEM auf Raspberry Pi, HMLAN + CUL

Rohan

Hallo SkodaSascha,

*genau* dieses Thema wurde hier schon groß und breit durch- und (mM) ausdiskutiert (vor etwas mehr als 1 Monat).

*Ich* bin jetzt aber zu faul zum suchen ;)

Hmmm ... Forensuche: "Rollo sonne temperatur" (ohne '"') ... Viel Spaß beim lesen ;) (Hint: kommt nicht gleich zu Beginn).

Gruß
Thomas
Fhem auf Mini-ITX mit Celeron 2-Core, HMLAN (> 55 Devices), CUL (FS20 und EM), RFXtrx 433E, Arduino (einige DS18B20), RPi mit 1-Wire (DS2423 für S0-Signale, DS18B20+), RPi/Arduino mit MQ-5 und MQ-9 (CO- und CNG/LPG-Sensor), CO-20 IAQ Sensor

MisterEltako

Also, soweit ich das überblicke stimmt der Code. Den Anfang hast du sicher vergessen zu kopieren, oder?

define Rollladensteuerung notify "Wetter:(fc1_low_c.*|fc1_condition.*) {\
my $Temp= ReadingsVal("Wetter","fc1_low_c","999");;\
my $Sonne= ReadingsVal("Wetter","fc1_condition","kein Wert");;\
if (($Temp >= 27) && ($Sonne eq "sonnig") && (Value("FS_201b1b55")!=15) && ($hour >= 10)){\
fhem("set Rollladen 15");;\
Log 1, "Beschattungsposition wird angefahren...";;\
}elsif (($Temp<22) && (Value("Rollladen")==15)){\
fhem ("set FS_201b1b55 off");;\
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";;\
}\
}

Ansonsten würde die Fehlermeldung auf eine fehlende Klammer oder "\" oder Anführunszeichen hindeuten.

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

SkodaSascha

Hallo Thomas, ich weiß nicht ob ich das richtige gefunden habe, abere darin ging es nicht über das Weather Modul. Aber ich weiß, es wurde schon mehrmals darüber geschrieben. Daher habe ich ja auch meine Codeschnipsel...


MisterEltako, habe die erste Zeile noch eingefügt, die Fehlermeldung habe ich aber immer noch, ist das normal ?
Was mir noch so aufgefallen ist, ich wollte das ganze ja mal vorher Testen mit anderen Temperaturen, Sonne ist auch ja auch nicht da, also auf bewölkt. In den Readings von Weather steht ja alles auf Englisch, müsste dann im Code nicht "sunny oder sun" stehen?
FHEM auf Raspberry Pi, HMLAN + CUL

MisterEltako

Hi!

In der Define Zeile hatte ich ein Anführungszeichen vor Wetter zuviel getippt.
Versuche es der Einfachkeit halber nun so und mit den Log Ergänzungen, dann siehst du im Logfile ob "sonnig" oder "sunny" kommt...

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";;\
if (($Temp >= 27) && ($Sonne eq "sonnig") && (Value("FS_201b1b55")!=15) && ($hour >= 10)){\
fhem("set Rollladen 15");;\
Log 1, "Beschattungsposition wird angefahren...";;\
}elsif (($Temp<22) && (Value("Rollladen")==15)){\
fhem ("set FS_201b1b55 off");;\
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

Rohan

Hi,

Zitat von: SkodaSascha schrieb am Mo, 29 April 2013 12:21ich weiß nicht ob ich das richtige gefunden habe,

Bei meinen Suchbegriffen erhalte ich mit der Forensuche 4 Ergebnisse, alle zu dem Thema "rollo abhängig von temperatur (sonnenschutz)" ...

Zitatabere darin ging es nicht über das Weather Modul.

... und spätestens ab diesem Post sehe ich in den Codezeilen z.B.

my $sonne = (ReadingsVal("Test_Wetter","fc1_condition", "kein Wert"));

Meiner bescheidenen Meinung nach deutet "fc1_condition" doch auf das weather-Modul hin, oder?

Gruß
Thomas
Fhem auf Mini-ITX mit Celeron 2-Core, HMLAN (> 55 Devices), CUL (FS20 und EM), RFXtrx 433E, Arduino (einige DS18B20), RPi mit 1-Wire (DS2423 für S0-Signale, DS18B20+), RPi/Arduino mit MQ-5 und MQ-9 (CO- und CNG/LPG-Sensor), CO-20 IAQ Sensor

SkodaSascha

Wie ist es doch so machmal, "Man sieht den Wald vor Bäumen nicht".

Ich habe den Code nun noch eine wenig angepasst, bei RSU gibt es z.B. keine Positionen. Ich werde die Loagdatei mal
im Auge behalten was passiert.
Vielen Dank
FHEM auf Raspberry Pi, HMLAN + CUL

SkodaSascha

Ich habe nun permanent diese Fehlermeldung um Log:



2013.04.30 20:05:26 3: Rolladensteuerung return value: Unknown command {\ my, try help
Unknown command my, try help
Unknown command log, try help
Unknown command if, try help
Unknown command log, try help
Unknown command }elsif, try help


Hier noch einmal mein Code:


define Rolladensteuerung 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";;\
if (($Temp >= 27) && ($Sonne eq "sonnig") && ($hour >= 12)){\
fhem("set RolladenSchlafzimmer off");;\
Log 1, "Beschattungsposition wird angefahren...";;\
}elsif (($Temp<22)
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

Rohan

Hi,

hast du irgendetwas von diesem Code per Cut&Paste in die fhem.cfg eingefügt? Unter welchem Betriebssystem?

Ich vermute, dass nach dem "{\" ein CarriageReturn + LineFeed steht und das geht nur bei Windows-Betriebssystemen gut, nicht aber in Fhem.

Falls meine Vermutung richtig ist, setze den Cursor an das Zeilenende, direkt hinter "{\", drücke so oft auf die <Entf>-Taste, bis die darunterliegende Zeile hochkommt und drücke dann <Return>. Speichern, testen. Gut möglich dass dann noch andere Fehler kommen, wenn da noch mehr CR+LF in dem Code drin stehen.

Falls meine Vermutung richtig ist, solltest du dir evtl. angewöhnen, die fhem.cfg nur mit einem Editor zu bearbeiten, der auch im "Unix-Like"-Format abspeichern kann wie z.B. Notepad++. Entsprechende Option setzen, abspeichern und gut ist.

Oder hast du den Code mit den "\" auf der Detailseite unter "DEF" eingetragen?

Edith fügt noch folgenden Link zur Erklärung ein.

Berichte bitte.

Danke und Gruß
Thomas
Fhem auf Mini-ITX mit Celeron 2-Core, HMLAN (> 55 Devices), CUL (FS20 und EM), RFXtrx 433E, Arduino (einige DS18B20), RPi mit 1-Wire (DS2423 für S0-Signale, DS18B20+), RPi/Arduino mit MQ-5 und MQ-9 (CO- und CNG/LPG-Sensor), CO-20 IAQ Sensor

MisterEltako

Hi!
Rot markiert sind deine Fehlerstellen:

define Rolladensteuerung 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";;\
 if (($Temp >= 27) && ($Sonne eq "sonnig") && ($hour >= 12)){\
 fhem("set RollladenSchlafzimmer off");;\
 Log 1, "Beschattungsposition wird angefahren...";;\
}elsif ($Temp<22) {\
 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.

PS: Rollladen nicht Rolladen.... ;-)
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

SkodaSascha

Supi, das wars schon mal mit den Fehlermeldungen. Das mit den Zeilenumbrüchen werde ich im Kopf behalten.
Nun passiert immer folgendes:

2013.05.01 07:48:22 3: Temperatur ist: 7 und Wetterbedingung ist: fair
2013.05.01 07:48:22 2: FS20 set RolladenSchlafzimmer on
2013.05.01 07:48:23 1: Rolladen wird geöffnet...

Dafür ist ja diese Zeile verantwortlich:

}elsif ($Temp<22) {\
fhem ("set RolladenSchlafzimmer on");;\

Original war diese ja:

}elsif (($Temp<30) && (Value("Rollladen")==15)){\
fhem ("set Rollladen 100");;\

Aber bei meinen RSU´s gibt es aber keine Positionen. So würde ich auch Abends wenn die Rolläden unten sein sollen immer ON schalten.

Hoffe Du kannst mir da noch einmal helfen.

PS: Rolladen...ja ja, die gute alte Rechtschreibung.

FHEM auf Raspberry Pi, HMLAN + CUL

MisterEltako

So geht es am einfachsten:

}elsif (($Temp<22) && (isday()) {\
fhem ("set RolladenSchlafzimmer on");;\


oder

}elsif (($Temp<22) && ($hour >= 6) && ($hour <= 17)) {\
fhem ("set RolladenSchlafzimmer on");;\


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

SkodaSascha

Ich habe jetzt

}elsif (($Temp<22) && ($hour >= 6) && ($hour <= 17)) {\

genommen. Dies bedeutet doch das von 6 bis 17 Uhr dder Rolladen runterfahren soll wenn klener 22 Grad.
Oder? Ich habe jetzt im Log Wiederholungen ohne Ende:

2013.05.02 18:07:43 3: Temperatur ist: 14 und Wetterbedingung ist: wolkig
2013.05.02 18:07:43 2: FS20 set RolladenSchlafzimmer on
2013.05.02 18:07:43 1: Rolladen wird geöffnet...
2013.05.02 18:07:43 3: Temperatur ist: 14 und Wetterbedingung ist: wolkig
2013.05.02 18:07:43 2: FS20 set RolladenSchlafzimmer on
2013.05.02 18:07:43 1: Rolladen wird geöffnet...
2013.05.02 18:07:44 2: FS20 RolladenSchlafzimmer on
2013.05.02 18:07:54 2: FS20 RolladenSchlafzimmer on
2013.05.02 18:37:39 3: Temperatur ist: 14 und Wetterbedingung ist: bewölkt
2013.05.02 18:37:39 2: FS20 set RolladenSchlafzimmer on
2013.05.02 18:37:40 1: Rolladen wird geöffnet...
2013.05.02 18:37:40 3: Temperatur ist: 14 und Wetterbedingung ist: bewölkt
2013.05.02 18:37:40 2: FS20 set RolladenSchlafzimmer on
2013.05.02 18:37:40 1: Rolladen wird geöffnet...
2013.05.02 18:37:40 3: Temperatur ist: 14 und Wetterbedingung ist: bewölkt
2013.05.02 18:37:40 2: FS20 set RolladenSchlafzimmer on
2013.05.02 18:37:40 1: Rolladen wird geöffnet...
2013.05.02 18:37:40 3: Temperatur ist: 14 und Wetterbedingung ist: bewölkt
2013.05.02 18:37:40 2: FS20 set RolladenSchlafzimmer on
2013.05.02 18:37:40 1: Rolladen wird geöffnet...
2013.05.02 18:37:40 3: Temperatur ist: 14 und Wetterbedingung ist: bewölkt
2013.05.02 18:37:40 2: FS20 set RolladenSchlafzimmer on


Warum wird auch nach 17.00Uhr geschaltet? Und wie kann man die ganzen Wiederholungen vermeiden?
FHEM auf Raspberry Pi, HMLAN + CUL

MisterEltako

Also habe das gerade ausprobiert und funktioniert:

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, 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";;\
 }\
 }

und ergänze zur Kontrolle von $hour:

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

mit:

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


MfG, MisterEltako.


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

SkodaSascha

Nun habe ich wieder jede Minute Fehlermeldungen:

2013.05.04 05:50:59 3: Rolladensteuerung return value: Unknown command {\
my, try help
Unknown command my, try help

Hätte nicht gedacht das es doch so viele Schwierigkeiten bereitet.

Um alles besser zu verstehen, was bedeuten diese Zeilen ?

#$Temp=14 ;;\
#$Sonne="Regen";;\
#my $hours=16;;\
FHEM auf Raspberry Pi, HMLAN + CUL