Hallo,
ich habe mir die WhatsApp - Funktion eingerichtet und diese funktioniert auch. Nun wollte ich ein Notify schreiben welches mir über die Sonos Lautsprecher etwas ausgibt. Beim Reload der utils kommt es aber zur Fehlermeldung:
ZitatGlobal symbol "$EVTPART0" requires explicit package name at ./FHEM/99_MyUtils.pm line 76.
Global symbol "$EVTPART1" requires explicit package name at ./FHEM/99_MyUtils.pm line 77.
Global symbol "$EVTPART1" requires explicit package name at ./FHEM/99_MyUtils.pm line 80.
Global symbol "$EVTPART1" requires explicit package name at ./FHEM/99_MyUtils.pm line 83.
Folgender Code in der 99_MyUtils.pm
package main;
use strict;
use warnings;
use POSIX;
sub
MyUtils_Initialize($$)
{
my ($hash) = @_;
}
[...]
define SonosNachricht notify WhatsAppSteffen:message.* {
if ($EVTPART0 eq 'Sonos') {
if($EVTPART1 eq 'Buero') {
fhem("set Sonos_Buero Speak 30 de Hallo");
}
elsif ($EVTPART1 eq 'Kueche') {
fhem("set Sonos_Kueche Speak 30 de Hallo");
}
elsif ($EVTPART1 eq 'Wohnzimmer') {
fhem("set Sonos_Wohnzimmer Speak 30 de Hallo");
}
}
}
Vielleicht hat ja einer eine Lösung oder ich sehe den Wald vor lauter Bäumen nicht mehr.
Danke und Grüße,
herrmie
Warum steht ein define in den MyUtils?
Hallo,
ich habs selber gemerkt, als ich den Beitrag abgesendet habe. Habs nun in der fhem.cfg, aber leider ist der Fehler gleich.
Grüße,
$EVENT, $EVNTPART, ... sind keine globalen variablen sondern nur während der ausführung des notify bekannt.
du musst sie aus dem notify an deine sub übergeben. am besten nur $EVENT und dann selber splitten.
gruss
andre
Hallo,
also soll in die fhem.cfg sowas wie:
define SonosNachricht notify WhatsAppSteffen:message.* { SonosNachrichtDo($EVENT) }
Und in meine Utils mache ich dann die sub rein und splitte mir EVENT. Wie greife ich denn das notify dann ab, damit ich auf $EVNTPART1 zugreifen kann?
Grüße,
ja. genau so.
ZitatWie greife ich denn das notify dann ab, damit ich auf $EVNTPART1 zugreifen kann?
das verstehe ich nicht. die event teile sind doch dein gesplittetes $EVENT von oben.
gruss
andre
Hallo,
okay, ich habe es aus der commandref anders verstanden.
Ich dachte ich kann auf $EVNTPART1 direkt zugreifen.
Also ist es so, dass $EVENT mein ganzer String ist und ich selber ein Split machen muss, damit ich das in einem Array habe.
Richtig?
Grüße,
$EVENT zu übergeben und selber zu splitten ist das kürzeste.
du kannst natürlich auch $EVNTPART0 und $EVNTPART1 übergeben. und $EVNTPART2 und ...
gruss
andre
ZitatGlobal symbol "$nachricht" requires explicit package name at ./FHEM/99_MyUtils.pm line 79.
fhem.cfg:
=======
define SonosNachricht notify WhatsAppSteffen:message.* { SonosNachrichtDo($EVENT) }
99_MyUtils.pm
===========
sub SonosNachrichtDo($nachricht)
{
fhem("set Sonos_Buero Speak 40 de $nachricht");
}
parameter übergabe in perl funktioniert anders. z.b. so:sub SonosNachrichtDo($)
{
my ($nachricht) = @_;
fhem("set Sonos_Buero Speak 40 de $nachricht");
}
Hallo,
danke sehr. Ich sollte mir mal ein perl tutorial durchlesen. :)
Grüße,