Probleme mit Variablen in Perl-Code

Begonnen von miwu, 01 März 2015, 13:47:05

Vorheriges Thema - Nächstes Thema

miwu

Hallo,

ich versuche gerade, meine Kellerbelüftung anhand von verschiedenen Meßwerten automatisch steuern zu lassen.

Hierfür habe ich ein kleines Perl-Script geschrieben (bin da leider ziemlicher Anfänger) und wollte es per Befehlszeile in der Web-Gui in FHEM einbinden:


define Keller_Luefter_Steuerung at +*00:05:00 {
my $aussentemperatur = ReadingsVal("Netatmo_Carport_Aussen", "temperature", "0");
my $aussenfeuchtigkeit = ReadingsVal("Netatmo_Carport_Aussen", "humidity", "100");
my $kellertemperatur = ReadingsVal("Netatmo_Keller", "temperature", "0");
my $kellerfeuchtigkeit = ReadingsVal("Netatmo_Keller", "humidity", "100");
my $luefterstatus = ReadingsVal("Keller_Gruppe_Alle_Luefter", "state", "on");
my $zeile1 = "Aktuelle Messwerte fuer Lueftersteuerung: ";
my $mailtext = $zeile1."Aussentemperatur: ".$aussentemperatur." Kellertemperatur: ".$kellertemperatur." Aussenfeuchtigkeit: ".$aussenfeuchtigkeit." Innenfeuchtigkeit: ".$kellerfeuchtigkeit." Luefterstatus: ".$luefterstatus;
if ($aussentemperatur >= 4 && $aussentemperatur <= $kellertemperatur+10 && $aussenfeuchtigkeit+10 < $kellerfeuchtigkeit)
{if ($luefterstatus eq "off") { fhem ("set Keller_Gruppe_Alle_Luefter on");;DebianMail ('mail@mail.de','Luefter Keller eingeschaltet',$mailtext);;fhem("set Wozi.Dreambox msg message 10 Luefter Keller wurden eingeschaltet");; }}
else
{if ($luefterstatus eq "on") { fhem ("set Keller_Gruppe_Alle_Luefter off");;DebianMail ('mail@mail.de','Luefter Keller ausgeschaltet',$mailtext);;fhem("set Wozi.Dreambox msg message 10 Luefter Keller wurden ausgeschaltet");; }}
}


Beim Anlgene bekomme ich folgende Fehler:

Zitat
Unknown command my, try help.
Unknown command my, try help.
Unknown command my, try help.
Unknown command my, try help.
Unknown command my, try help.
Unknown command my, try help.
IF: no left bracket:  {if ($luefterstatus eq "off") { fhem ("set Keller_Gruppe_Alle_Luefter on");DebianMail ('mail@mail.de','Luefter Keller eingeschaltet',$mailtext);fhem("set Wozi.Dreambox msg message 10 Luefter Keller wurden eingeschaltet"); }} else {if ($luefterstatus eq "on") { fhem ("set Keller_Gruppe_Alle_Luefter off");DebianMail ('mail@mail.de','Luefter Keller ausgeschaltet',$mailtext);fhem("set Wozi.Dreambox msg message 10 Luefter Keller wurden ausgeschaltet"); }} }

Es sieht also so aus, als ob schon die Deklaration der Variablen schief geht. Wo könnte ich da einen Fehler gemacht haben?

Wenn ich das in der fhem.cfg dann abspeichern möchte, taucht dort dann auch nur Folgens auf:

Zitatdefine Keller_Luefter_Steuerung at +*00:05:00 {  my $aussentemperatur = ReadingsVal("Netatmo_Carport_Aussen", "temperature", "0")

der Rest fehlt.

Ich bin für jede Hilfe dankbar :-)

miwu

Habe meinen Fehler selbst gefunden. Wenn ich den Define oben in der Befehlzeile eingebe muß ich ja die Sonderzeichen maskieren, wenn ich die Definition selbst bearbeite macht das die Gui für mich. Problem ist also gelöst.

franky08

Hallo, solche größeren Codeblöcke sollte man in die myUtils auslagern, erspart schonmal viele Fehler  ;)

VG
Frank
Debian Wheezy auf ZBOX nano/ Debian Bullseye auf 2.ter ZBOX nano F2F an 2x RaspiB
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink uvm...

miwu

Danke für den Tip, ich bin leider (noch) nicht so weit, daß ich sowas könnte und wüßte, wie ich das dann auch wieder aufrufen könnte. Aber was nicht ist ...

justme1968

schau dir mal die dewpoint und threshold module und die beispiele dazu an. die sind unter anderem genau zur lüftersteuerung da.

wie myUtils funktioniert findest du im wiki und im einsteiger pdf.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

miwu

dewpoint klingt auf alle Fälle für meinen Einsatzzweck schonmal sehr vielversprechend. Heute ists nun aber zu spät dafür. FHEM bietet jeden Tag neue schöne Überraschungen :-)