Wo ist der fehler im 99 Modul

Begonnen von Dastony, 27 April 2017, 20:16:13

Vorheriges Thema - Nächstes Thema

Dastony

define checkWindows notify checkWindows {
my $winKitchen=Value("[Name of the Shutter contact in the Kitchen]");
my $winSleepingroom=Value("[Name of the Shutter contact in the Sleepingroom]");
my $winLivingroom=Value("[Name of the Shutter contact in the Livingroom]");
my $winBath=Value("[Name of the Shutter contact in the Bathingroom]");
if (($winKitchen ne "closed") || ($winSleepingroom ne "closed") || ($winLivingroom ne "closed") || ($winBath ne "closed")) {
  my $openWindows="";
  if ($winKitchen ne "closed") { $openWindows="Kitchen "; }
  if ($winSleepingroom ne "closed") { $openWindows=$openWindows . "Sleepingroom "; }
  if ($winLivingroom ne "closed") { $openWindows=$openWindows . "Livingroom "; }
  if ($winBath ne "closed") { $openWindows=$openWindows . "Bathingroom"; }
  fhem("set push msg 'ATTENTION: Window(s) open!' '" . $openWindows . "' '[Push Device]' 1 ''");
} else {
  fhem("set push msg 'SAVE' 'All windows are closed.' '[Push Device]' -1 ''");
}
}

Ich finde einfach den Fehler nicht.
Jedermal gibt es die Nachricht das ich die my Bereiche noch definiert habe.

Puschel74

Wonach sollen die Helfer suchen?
Du hast sicher mehr Infos (Fehlermeldungen aus dem Logfile) die du doch sicher noch posten könntest um den Helfenden die Hilfe nicht unnötig schwer zu machen.

Aber nach deinem gezeigten Code, und der nicht vorhandenen Hilfe deinerseits, würde ich mal sagen:
Value("[Name of the Shutter contact in the Kitchen]");
das wird sicher nicht korrekt aufgelöst.

Das ist mir aber nur auf die Schnelle ins Auge gestochen - den Rest schau ich mir mit so wenig Infos nicht auch noch an.

Edith: Es sei den du verrätst uns was es zu gewinnen gibt - der Titel lässt nämlich einen Gewinn vermuten wenn jemand den Fehler findet.
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.

CoolTux

Mach die Eckigen Klammern weg bei der Variablendeklaration.
Ich gebe Puschel Recht.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Dastony

Also was in den variablen steht ist nur als Beispiel gedacht.
my ($winKitchen)=Value("Balkon");
my ($winLivingroom)=Value("Wohnzimmer");
my ($winBath)=Value("Bad");

So sieht der Bereich eigentlich aus.

Error:Modul 99_FensterStatus_myUtils deactivated:
syntax error at ./FHEM/99_FensterStatus_myUtils.pm line 26, near "if"
Global symbol "$winKitchen" requires explicit package name at ./FHEM/99_FensterStatus_myUtils.pm line 26, <$fh> line 4.
Global symbol "$winSleepingroom" requires explicit package name at ./FHEM/99_FensterStatus_myUtils.pm line 26, <$fh> line 4.
Global symbol "$winLivingroom" requires explicit package name at ./FHEM/99_FensterStatus_myUtils.pm line 26, <$fh> line 4.
Global symbol "$winBath" requires explicit package name at ./FHEM/99_FensterStatus_myUtils.pm line 26, <$fh> line 4.
syntax error at ./FHEM/99_FensterStatus_myUtils.pm line 33, near "}"

Und das gibt der log dazu aus

CoolTux

Hast du dieses define checkWindows notify auch in der myUtils?
Mal ganz davon ab das das ganze 99_myUtils_Status.pm also nach 99 kommt myUtils

Informiere Dich bitte über 99_myUtils Aufbau
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

franky08

Oh, oh da ist ja so ziemlich ALLES daneben, schwer da was dazu zu sagen! Wie CoolTux und Puschel schon schrieb, sieh dir mal den Aufbau einer Utils an ---> WIKI

https://wiki.fhem.de/wiki/99_myUtils_anlegen
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...

viegener

Achso und zur Klarstellung

define ist ein FHEM Befehl / notify ist ein FHEM-Konstrukt

in perl Modulen (und 99... irgendwas mit pm am Ende ist ein perl modul) muss perl Syntax stehen

Also würde ich auch noch ein bisschen über perl nachlesen, denn vermutlich möchteste Du komfortabler eine perl-Sequenz in einem notify verwenden.

Dazu sind zwei Schritte nötig --> perl subroutine in myutils (siehe Links oben) --> Gibt es auch Beispiele
und dann ein notify, das die perl-routine aufruft --> Dazu gibt es sogar in der commandref/wiki Beispiele

Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können