Hilfe, hilfe...korrekte Syntax???

Begonnen von AndyUM61, 26 Februar 2013, 18:28:17

Vorheriges Thema - Nächstes Thema

AndyUM61

Ein Hallo an die erfahrenen FHEM-Nutzer!

Ich bin - noch - absoluter Einsteiger, und weiß mir einfach keinen Rat mehr:(!

Irgendwie nervt die Syntax oder ich habe einfach nur Denkfehler.

Ich versuche krampfhaft das Heizungs-Script - in leicht abgeänderter Form, da ich einen InterTechno-Schalter verwenden möchte - für meine Heizung einzubinden, doch ich erhalte immer wieder:
"n_heizung return value: Unknown command {my, try help
Unknown command my, try help"

Das Script:

define n_heizung notify n_heizung {\
my $brauche_waerme=0;;\
my $ventile_im_leerlauf=0;;\
my @@fhts=devspec2array("TYPE=FHT");;\
foreach(@@fhts) {\
my $ventil=ReadingsVal($_, "actuator", "101%");;\
$ventil=(substr($ventil, 0, (length($ventil)-1)));;\
if ($ventil > 10) {brauche_waerme=1};;\
if ($ventil < 5) {$ventile_im_leerlauf++}};;\
if ($brauche_waerme != 0) {Log(3,"Wärme benoetigt. Vorheriger Heizungsstatus: " . $heizung_status);; fhem("set heizung on")} else {if ($ventile_im_leerlauf == @@fhts) {Log(3,"Keine Wärme (mehr) benoetigt. Vorheriger Heizungsstatus: " . $heizung_status);;fhem("set heizung off")} else {Log(3,"Heizbedarf: " . $ventile_im_leerlauf . " von " . @@fhts . " Heizkörper im Leerlauf.")}}}\



Also das Script soll bei mir in eine heizung.cfg, welche auch schon korrekt in die fhem.cfg includiert ist.

Wo ist mein Fehler?? Was mache ich falsch??

Schon mal Danke!
Internette Grüße
Andy

MisterEltako

Hi!

Eine "}" war zumindestens zuviel:if ($ventil < 5) {$ventile_im_leerlauf++}};;\

define n_heizung notify n_heizung {\
my $brauche_waerme=0;;\
my $ventile_im_leerlauf=0;;\
my @@fhts=devspec2array("TYPE=FHT");;\
foreach(@@fhts) {\
my $ventil=ReadingsVal($_, "actuator", "101%");;\
$ventil=(substr($ventil, 0, (length($ventil)-1)));;\
if ($ventil > 10) {brauche_waerme=1};;\
if ($ventil < 5) {$ventile_im_leerlauf++};;\
if ($brauche_waerme != 0) {\
     Log(3,"Wärme benoetigt. Vorheriger Heizungsstatus: " . $heizung_status);;\
    fhem("set heizung on");;\
} else {\
       if ($ventile_im_leerlauf == @@fhts) {\
           Log(3,"Keine Wärme (mehr) benoetigt. Vorheriger Heizungsstatus: " . $heizung_status);;\
           fhem("set heizung off");; \
       } else {\
           Log(3,"Heizbedarf: " . $ventile_im_leerlauf . " von " . @@fhts . " Heizkörper im Leerlauf.");;\
       }\
}\
}

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

Puschel74

Hallo,

wenn ich mir auf die schnelle deine { und } durchzähle hast du eine } am Schluss zu viel.
Lösch mal eine Klammer weg und versuchs nochmal.

Grüße

Edith: Zu langsam ;-)
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

AndyUM61

...na das muss ich doch gleich noch mal probieren:)!

Danke erst einmal!!

P.S. Also diese PERL-Syntax ist aber auch ein Fall für sich;)...

thunder

Kleiner Tipp wegen des Syntax Checks:

Wenn ich so ein Problem habe kopiere ich mir das Perl Script in eine Datei und lasse dann perl im Syntax-Check-Modus drüberlaufen. Damit bekomme ich aussagekräftigere Meldungen da mir Perl die entsprechende Zeilennummer ausgibt...

also script mit cut&paste z.B in bla.pl ablegen
danach perl -c bla.pl

und dann die Fehler rauspicken..

Viel Spass,
Uwe

AndyUM61

Ja also Syntax-Fehler habe ich nun nicht mehr, das ist ja schon mal schön:).

ABER:

n_heizung return value: Can't modify constant item in scalar assignment at (eval 881) line 1, at EOF
Bareword "brauche_waerme" not allowed while "strict subs" in use at (eval 881) line 1.

Was sollten mir diese Zeilen sagen:(????

Puschel74

Hallo,

das soll $brauche_waerme heissen.
Hier fehlt das $

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

AndyUM61

Das gibt es doch nicht;)!

Also ich Programmiere ja nun auch schon so einige Jahre, allerdings mehr PHP & Co....
Vielleicht sollte ich ja mal meine Augen prüfen lassen;)!

DANKE!

Puschel74

Hallo,

gern geschehen.

Ich kenn das mit dem "Augen prüfen" auch ;-)
Keine Panik. Sowas passiert ab und an mal.
Bin ja froh das ich auch mal helfen konnte.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

AndyUM61

@Puschel74

DANKE!!
Es läuft endlich ohne Fehler:)!

...so, nun auf zu weiteren Taten;)...