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
du hast in Deiner Funktion (in der 99_myUtils) das return vergessen.
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?
Am Ende des {...} Ausdrucks fehlt ein return (https://perldoc.perl.org/functions/return.html). Vor knapp 4 Jahren war das auch nicht anders. ;)
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}
Schalte das Licht an, es sei denn es ist Tag
Danke xD
Ich formuliere die Frage anders
wie muss ich den programmcode dafür anpassen?
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.
Es hat bis jetzt auch funktioniert
nur seit ein 2 tagen geht es nicht mehr :o
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?
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.
Habe ich auch gerade erst durch's Nachschlagen exakt verstanden ;)
Weist ja, man lernt nieeeee aus ;) ;D
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 -.-
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.
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 }
ok alles klar danke
jetzt dürfte es funktionieren
lg michi