FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: sylvester am 29 Oktober 2013, 19:58:52

Titel: Notify Return Value in Log
Beitrag von: sylvester am 29 Oktober 2013, 19:58:52
Hallo,

ich versuche mich gerade ein wenig im Programmieren.
Nun habe ich ein return value eines notify im Log stehen, das ich eigentlich gerne unterbinden möchte.

2013.10.26 17:42:42 3: Squeezebox Mute (on)
2013.10.26 17:42:42 3: EZ_Squeezebox_MuteNotify return value: 1

Den Eintrag vom Notify habe ich nicht bestellt ...
Kann mir jemand verraten, wie ich den Eintrag verhindere?

In meiner 99_myUtils.pm findet sich jetzt folgendes:

########Squeezebox Mute ############################################
# What : Switches Squeezebox Mute on or off
# Call : { SB_Mute_switch("Server_IP","Server_Port","Squeezebox_ID","on") }
#
sub SB_Mute_switch (@) {
my ($ip,$port,$id,$cmd) = @_;
use Net::Telnet;
my $telnet = new Net::Telnet ( Timeout=>15, Errmode=>'die', Port=>$port);
$telnet->open($ip);
Log 3, "Squeezebox Mute ($cmd)";
if ($cmd =~ m"on"i) { # on or ON
$telnet->print("$id mixer muting 1\n");
# Log 3, "$id mixer muting 1";
}
if ($cmd =~ m"off"i) { # off or OFF
$telnet->print("$id mixer muting 0\n");
# Log 3, "$id mixer muting 0";
}
$telnet->print('exit');
}


Zusammen mit den folgenden Einträgen in der fhem.cfg:

# Squeezebox Esszimmer
########################
define EZ_Squeezebox_Mute dummy
attr EZ_Squeezebox_Mute devStateIcon [Oo]n:Mute.On [Oo]ff:Mute.Off
attr EZ_Squeezebox_Mute fp_Grundriss 255,386,1,Squeezebox
attr EZ_Squeezebox_Mute room R_Esszimmer
attr EZ_Squeezebox_Mute setList on off
attr EZ_Squeezebox_Mute webCmd on:off
define EZ_Squeezebox_MuteNotify notify EZ_Squeezebox_Mute { if (Value("EZ_Squeezebox_Mute") =~ /[Oo]n/) {SB_Mute_switch("192.168.178.21","9090","00:04:20:22:7b:91","on") } else {SB_Mute_switch("192.168.178.21","9090","00:04:20:22:7b:91","off") }}
attr EZ_Squeezebox_MuteNotify room hidden

# CallMonitor
##############
define FritzboxAnrufe FB_CALLMONITOR 192.168.178.1:1012
define CallMonitorRing_notify notify FritzboxAnrufe:event.*ring set EZ_Squeezebox_Mute on
define CallMonitorDisconnect_notify notify FritzboxAnrufe:event.*disconnect set EZ_Squeezebox_Mute off


Vielen Dank für eure Hilfe

Stephan
Titel: Antw:Notify Return Value in Log
Beitrag von: betateilchen am 29 Oktober 2013, 20:03:42
du hast in Deiner Funktion (in der 99_myUtils) das return vergessen.
Titel: Antw:Notify Return Value in Log
Beitrag von: leachim200 am 02 August 2017, 08:01:46
Hallo
Ich verwende folgenden Befehl im notify um mein Wintergartenlicht ein zu schalten wenn die Sonne unter gegangen ist und ich nach hause komme

Home:home { fhem('set WintergartenLicht on') unless isday() }

Seit neuesten habe ich leider folgende Fehlermeldung im Logfile
2017.08.02 07:52:52 2: RESIDENTS set Home home
2017.08.02 07:52:52 3: Lichtan return value: 1

Hat wer eine Idee woran das liegt?

Titel: Antw:Notify Return Value in Log
Beitrag von: dev0 am 02 August 2017, 08:17:12
Am Ende des {...} Ausdrucks fehlt ein return (https://perldoc.perl.org/functions/return.html). Vor knapp 4 Jahren war das auch nicht anders. ;)
Titel: Antw:Notify Return Value in Log
Beitrag von: leachim200 am 02 August 2017, 09:00:35
Ok danke so weit verstanden
das einzige was ich jetzt nicht verstehe ist was heißt das sry bin kein perl genie. :/

würde das bedeuten Home:home { fhem('set WintergartenLicht on') unless isday() return}
Titel: Antw:Notify Return Value in Log
Beitrag von: CoolTux am 02 August 2017, 09:38:00
Schalte das Licht an, es sei denn es ist Tag
Titel: Antw:Notify Return Value in Log
Beitrag von: leachim200 am 02 August 2017, 10:17:14
Danke xD
Ich formuliere die Frage anders
wie muss ich den programmcode dafür anpassen?
Titel: Antw:Notify Return Value in Log
Beitrag von: CoolTux am 02 August 2017, 10:21:46
Also wenn Du nach Hause kommst soll das Licht angehen wenn kein Tag ist?
Dann sollte es genau so gehen. Das mit dem return kann ich mir selber nicht erklären, normalerweise brauch man da kein return.
Titel: Antw:Notify Return Value in Log
Beitrag von: leachim200 am 02 August 2017, 10:39:59
Es hat bis jetzt auch funktioniert
nur seit ein 2 tagen geht es nicht mehr  :o
Titel: Antw:Notify Return Value in Log
Beitrag von: dev0 am 02 August 2017, 10:49:27
Zitat von: leachim200 am 02 August 2017, 09:00:35
Home:home { fhem('set WintergartenLicht on') unless isday() return}
Nach dem isday() fehlt ein Semikolon.

Zitat von: CoolTux am 02 August 2017, 10:21:46
Also wenn Du nach Hause kommst soll das Licht angehen wenn kein Tag ist?
Dann sollte es genau so gehen. Das mit dem return kann ich mir selber nicht erklären, normalerweise brauch man da kein return.
perlsub (https://perldoc.perl.org/perlsub.html): If no return is found and if the last statement is an expression, its value is returned.

Zitat von: leachim200 am 02 August 2017, 10:39:59
Es hat bis jetzt auch funktioniert
Kann ich mir nicht vorstellen. global verbose verstellt?
Titel: Antw:Notify Return Value in Log
Beitrag von: CoolTux am 02 August 2017, 11:15:45
Zitat von: dev0 am 02 August 2017, 10:49:27
perlsub (https://perldoc.perl.org/perlsub.html): If no return is found and if the last statement is an expression, its value is returned.

Die Info hatte mir gefehlt. Vielen Dank. Wieder was dazu gelernt.
Titel: Antw:Notify Return Value in Log
Beitrag von: dev0 am 02 August 2017, 11:53:03
Habe ich auch gerade erst durch's Nachschlagen exakt verstanden ;)
Titel: Antw:Notify Return Value in Log
Beitrag von: CoolTux am 02 August 2017, 12:24:36
Weist ja, man lernt nieeeee aus  ;) ;D
Titel: Antw:Notify Return Value in Log
Beitrag von: leachim200 am 02 August 2017, 12:57:49
Ok anscheinend bin ich einfach zu doof :(

Home:home { fhem('set WintergartenLicht on') unless isday();}

2017.08.02 12:55:17 2: RESIDENTS set Home home
2017.08.02 12:55:17 3: Lichtan return value: 1

Immer noch wenn ich unless isday wegnehme gehts -.-
Titel: Antw:Notify Return Value in Log
Beitrag von: frank am 02 August 2017, 13:00:08
Zitat von: leachim200 am 02 August 2017, 10:39:59
Es hat bis jetzt auch funktioniert
nur seit ein 2 tagen geht es nicht mehr  :o
dann solltest du wissen, was du verändert hast.
Titel: Antw:Notify Return Value in Log
Beitrag von: CoolTux am 02 August 2017, 13:40:58
Zitat von: leachim200 am 02 August 2017, 12:57:49
Ok anscheinend bin ich einfach zu doof :(

Home:home { fhem('set WintergartenLicht on') unless isday();}

2017.08.02 12:55:17 2: RESIDENTS set Home home
2017.08.02 12:55:17 3: Lichtan return value: 1

Immer noch wenn ich unless isday wegnehme gehts -.-

Nicht doof, nur unaufmerksam

Home:home { fhem('set WintergartenLicht on') unless isday(); return }
Titel: Antw:Notify Return Value in Log
Beitrag von: leachim200 am 03 August 2017, 08:11:12
ok alles klar danke
jetzt dürfte es funktionieren
lg michi