[geklärt] split von $EVENT im notify

Begonnen von TomLee, 24 Juli 2021, 12:54:46

Vorheriges Thema - Nächstes Thema

TomLee

#15
Manege frei:

OK, mal nachgedacht:

return if !defined $EVTPART1

TomLee

Zitat von: betateilchen am 24 Juli 2021, 13:13:00
Warum prüfst Du dann im notify nicht einfach auf $EVTPART1?


defmod demo_notify_1 notify demo:Test:.* {no strict;;return unless $EVTPART1;;Debug $EVTPART1;;}


Nur aus Interesse, hat Debug noch weitere Parameter sowas wie Loglevel, ist es irgendwo dokumentiert, hab das hier das erste mal gesehen ?

Otto123

Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

betateilchen

Zitat von: TomLee am 25 Juli 2021, 13:36:02
Nur aus Interesse, hat Debug noch weitere Parameter sowas wie Loglevel

Nein, Debug($msg) ist nur ein quick&dirty Aufruf von 'Log 1, "DEBUG>" . $msg;' und hilfreich zum Testen.

Dokumentiert ist das primär in der fhem.pl
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!


TomLee

Zitat von: Christoph Morrison am 24 Juli 2021, 14:32:56
Das hier ist auch Käse:
Entweder in $ec is ein String, dann braucht man eq. Oder in $ec ist eine Zahl, dann braucht man keine Quotes um die 1.

Hier:

Zitatsub fb_cmp {
my $NAME = shift;
my $EVTPART0 = shift;
my $EVTPART1 = shift;
my $lgtvs = shift;
my $sonoswz = shift;
my $echok = shift;
my $sonosps = shift;
chop($EVTPART0);
$EVTPART1 =~ s/&/und/;
my $extn = ReadingsVal($NAME,'external_name','unbekannt');
my $extnr = ReadingsVal($NAME,'external_number','unbekannt');
my $intnr = ReadingsNum($NAME,'internal_number','unbekannt');
my $intc = ReadingsVal($NAME,'internal_connection','unbekannt');
my $mcr = ReadingsVal($NAME,'missed_call','unbekannt');
my $echodb = qq(set $echok sounds tuerklingel_3);

   if ($EVTPART1 eq "ring") {
   return fhem("set $sonoswz playSound 20 Vibrating") if $extn eq 'unknown';
   return fhem("set $sonoswz playSound 20 Fax-Beep;set $echok speak Fax Eingang") if $intnr == '999999';
   return fhem("set $sonoswz speak 20 Es ist $extn;set $echok speak Es ist $extn;set tb_TelegramBot msg Es ist: $extnr ($extn)");
   }
}

muss ich die Quotes verwenden, sonst klappts nicht, was hab ich hier jetzt nicht verstanden ?

frober

Ich kann dir zwar deine Frage nicht beantworten, aber ich sehe ein anderes Problem:
Zitatmy $extn = ReadingsVal($NAME,'external_name','unbekannt')
.
.
.
return fhem("set $sonoswz playSound 20 Vibrating") if $extn eq 'unknown';
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

TomLee

Glaub zwar nicht das jemals der Fall eintritt das der Ersatzwert genommen wird, werds aber anpassen, Danke.

Christoph Morrison

Was heißt denn "sonst klappts nicht"?

Hast du mal debuggt, was in $intnr drin steht?

TomLee

Was heißt denn "sonst klappts nicht"?

Der Zweig

return fhem("set $sonoswz playSound 20 Fax-Beep;set $echok speak Fax Eingang") if $intnr == '999999';

wird halt nie ausgeführt ohne Quotes.

Zitat
Hast du mal debuggt, was in $intnr drin steht?

Schon, im Eventmonitor und als debug-Ausgabe ins Log und meine Faxnummer kenne ich.

TomLee

Sry, ich merke gerade das es auch ohne geht, nachdem ich noch eine Telegram-Message dazu genommen habe, hab ich wohl im Log nicht richtig geschaut gehabt.
Das verwirrende war das nie playsound abgespielt wurde, das hing wieder damit zusammen das ich normal mute wenn ein call ist und unmute wenn ein disconnect ist, da ich aber vor Monaten rumgetestet hatte und das muten bei einem call rausgenommen hatte erfolgte zufällig immer bei meinem testen heute keine Ausgabe. Und da ich mich wegen einem anderen Thema mehrmals selbst angerufen habe, bei mir aber immer eine Umleitung (also nach einem call dann nochmal ein call  erfolgt) war der Sonosplayer beim testen immer "gemuted". Schwierig zu erkären  ::) , beim Sonosplayer nutz ich halt nur einen setter für mute zum Statuswechsel, kein mute on / off.
if ($EVTPART1 eq "ring") {
return fhem("set $sonoswz playSound 20 Vibrating") if $extn eq 'unknown';
return fhem("set $sonoswz playSound 20 Fax-Beep;set $echok speak Fax Eingang;set tb_TelegramBot msg Faxeingang $extnr ($extn $intnr)") if $intnr == 999999;
return fhem("set $sonoswz speak 20 Es ist $extn;set $echok speak Es ist $extn;set tb_TelegramBot msg Es ist: $extnr ($extn)");
}