Hallo,
beim Ausführen eines DOIF-Kommandos kommt es zu einer unspezifizierten Fehlermeldung durch Erzeugung des Readings "error". Dort steht nur das Kommando drinne ohne weiteren Fehlertext. Auch im Event oder FHEM-Log steht nichts weiter.
Hier die Definition des DOIF
Internals:
DEF ([mt:state] eq "WLANOff"){
(qx"sudo ssh fhem\@192.168.1.1 -i /home/pi/.ssh/id_rsa '[/caps-man manager set enabled=no];:beep frequency=900 length=1s'")
}DOELSEIF ([mt:state] eq "WLANOn"){
(qx"sudo ssh fhem\@192.168.1.1 -i /home/pi/.ssh/id_rsa '[/caps-man manager set enabled=yes];:beep frequency=900 length=1s'")
}DOELSEIF ([mt:state] eq "VPNOn"){
(qx"sudo ssh fhem\@192.168.1.1 -i /home/pi/.ssh/id_rsa '[/ip firewall filter enable [find dst-port=\"443\" and protocol=\"tcp\" and in-interface=\"bridge\" and action=\"accept\"]]'")
}DOELSEIF ([mt:state] eq "VPNOff"){
(qx"sudo ssh fhem\@192.168.1.1 -i /home/pi/.ssh/id_rsa '[/ip firewall filter disable [find dst-port=\"443\" and protocol=\"tcp\" and in-interface=\"bridge\" and action=\"accept\"]]'")
}DOELSEIF ([mt:state] eq "WLANClients"){
my $clientCount = qx"sudo ssh fhem\@192.168.1.1 -i /home/pi/.ssh/id_rsa '[/caps-man registration-table print count-only]'";
fhem("setreading mt ConnectedWLANDevices $clientCount");
}
FUUID 60bb9ba6-f33f-8b20-46c5-38279c9f44185852
MODEL FHEM
NAME mtDOIF
NOTIFYDEV mt,global
NR 337
NTFY_ORDER 50-mtDOIF
STATE initialized
TYPE DOIF
VERSION 24195 2021-04-08 21:50:20
READINGS:
2021-06-05 22:38:53 cmd 0
2021-06-05 22:38:53 mode enabled
2021-06-05 22:38:53 state initialized
Regex:
accu:
collect:
cond:
mt:
0:
state ^mt$:^state:
1:
state ^mt$:^state:
2:
state ^mt$:^state:
3:
state ^mt$:^state:
4:
state ^mt$:^state:
attr:
cmdState:
wait:
waitdel:
condition:
0 ::ReadingValDoIf($hash,'mt','state') eq "WLANOff"
1 ::ReadingValDoIf($hash,'mt','state') eq "WLANOn"
2 ::ReadingValDoIf($hash,'mt','state') eq "VPNOn"
3 ::ReadingValDoIf($hash,'mt','state') eq "VPNOff"
4 ::ReadingValDoIf($hash,'mt','state') eq "WLANClients"
do:
0:
0 { (qx"sudo ssh fhem\@192.168.1.1 -i /home/pi/.ssh/id_rsa '[/caps-man manager set enabled=no];:beep frequency=900 length=1s'") }
1:
0 { (qx"sudo ssh fhem\@192.168.1.1 -i /home/pi/.ssh/id_rsa '[/caps-man manager set enabled=yes];:beep frequency=900 length=1s'") }
2:
0 { (qx"sudo ssh fhem\@192.168.1.1 -i /home/pi/.ssh/id_rsa '[/ip firewall filter enable [find dst-port=\"443\" and protocol=\"tcp\" and in-interface=\"bridge\" and action=\"accept\"]]'") }
3:
0 { (qx"sudo ssh fhem\@192.168.1.1 -i /home/pi/.ssh/id_rsa '[/ip firewall filter disable [find dst-port=\"443\" and protocol=\"tcp\" and in-interface=\"bridge\" and action=\"accept\"]]'") }
4:
0 { my $clientCount = qx"sudo ssh fhem\@192.168.1.1 -i /home/pi/.ssh/id_rsa '[/caps-man registration-table print count-only]'"; fhem("setreading mt ConnectedWLANDevices $clientCount"); }
5:
helper:
DEVFILTER ^global$|^mt$
NOTIFYDEV global|mt
globalinit 1
last_timer 0
sleeptimer -1
readings:
all mt:state
uiState:
uiTable:
Attributes:
do always
Die Kommandos werden zwar durch das DOIF korrekt ausgeführt, aber der Fehlermeldung würde ich gerne auf den Grund gehen. Diese taucht erst auf, als ich den Teil
;:beep frequency=900 length=1s
bei den ersten beiden Befehlen ergänzt habe.
Kann mir einer einen Tipp geben, wie ich die Fehlermeldung weg bekommen (siehe Bild im Anhang)? Vielen Dank!
Es wird offenbar vom Systembefehl ein String zurückgeliefert, der nicht leer ist, das wird als Fehler interpretiert. Du kannst return("") am Ende dranhängen, wenn dich die Information stört.
{ qx"sudo ssh fhem\@192.168.1.1 -i /home/pi/.ssh/id_rsa '[/caps-man manager set enabled=no];:beep frequency=900 length=1s'";return("");}
Danke für den Hinweis. Das "beep"
;:beep frequency=900 length=1s
scheint einen Zeilenumbruch zurückzuliefern.