Hauptmenü

Unknown Command my

Begonnen von marcel2803, 20 Oktober 2016, 08:34:10

Vorheriges Thema - Nächstes Thema

marcel2803

Guten Morgen liebes Forum,
ich habe in letzter Zeit immer wieder Probleme mit einem meiner Scripts. Mal läuft es und mal nicht. In lezterem Fall steht im Log der Fehler Unknown Command my. Es hilft dann was notify neu anzulegen aber das ist ja keine dauerhafte Lösung.
Ich weiß leider nicht was ich übersehe ;-/

Hier ist der Code:
update_Sensoren:.* {
my $status1 = AttrVal("wecker1","msgRecipientPush",10);;
my $status2 = AttrVal("wecker2","msgRecipientPush",10);;
my $status3 = AttrVal("wecker3","msgRecipientPush",10);;
my $zeiten = "";;

# Für Wochenende ändern
if ( $status1 eq "inactive" && $status2 eq "inactive" && $status3 eq "inactive" ) {

if (($wday == 0) || ($wday == 6)) {
$zeiten = "8:00";;
} else {
$zeiten = "6:00";;
}

} else {

if($status1 eq "active") {
$zeiten = $zeiten . " " . AttrVal("wecker1","comment",10);;
}

if($status2 eq "active") {
$zeiten = $zeiten . " " . AttrVal("wecker2","comment",10);;
}

if($status3 eq "active") {
$zeiten = $zeiten . " " . AttrVal("wecker2","comment",10);;
}

} #status
system("sudo bash /opt/fhem/www/tablet/Scripts/zeitenSortieren.sh $zeiten &");;

}#alle


Vielen Dank
Marcel

schka17

Das passiert wahrscheinlich wenn man die fhem.cfg direkt editiert womöglich noch mit windows Werkzeugen, möglicherweise irgendwelche Steuerzeichen. Da sind zb. Zeilenumbrüche an der falschen Stelle


Sent from my iPad using Tapatalk
M: Thinclient x64 Debian | CUL FS20, HMS100WD, HMS100TF, HMS100T, HMS100CO, S300, S555TH | OWServer DS1420, DS18B20, DS2408 | RFXCOM UVN128, THWR800, THGR228N,RTGR328, PCR800 |Jeelink PCA301 EC3000|CUNO+IR|HMLAN|HMUSB|CUL433 Somfy|mySensors|espEasy
S1:Raspberry mit BPM810, Jeelink EC3000

dev0

Die Zeilenumbrüche sind nicht maskiert. Wie schka17 schon schrieb, die fhem.cfg besser nicht direkt edieren.
Besser ist es, alles das was länger als 1..2 Zeilen ist, in eine 99_myUtils.pm auszulagern. Dann muss auch nichts maskiert werden und Du kannst einen Editor Deiner Wahl verwenden.

marcel2803

Ich hab aber alles direkt in der FHEM Web-Oberfläche editiert und garnichts an der FHEM.cfg geändert.  :-\

schka17

Du meinst in der Definition des notify oder hast du mit edit files die fhem.cfg bearbeitet? Die doppelten ;; stehen in der cfg aber nicht wenn du das notify bearbeitest. Wie auch immer, die Zeilenumbrüche sind auf jeden fall falsch.


Sent from my iPad using Tapatalk
M: Thinclient x64 Debian | CUL FS20, HMS100WD, HMS100TF, HMS100T, HMS100CO, S300, S555TH | OWServer DS1420, DS18B20, DS2408 | RFXCOM UVN128, THWR800, THGR228N,RTGR328, PCR800 |Jeelink PCA301 EC3000|CUNO+IR|HMLAN|HMUSB|CUL433 Somfy|mySensors|espEasy
S1:Raspberry mit BPM810, Jeelink EC3000

marcel2803

Nein ich hab das in der Definition des notifys editiert.
Also sollten eigentlich nur "FHEM Zeilenumbrüche" drin sein

schka17

D.h. Du hast nach dem = in der 2. Zeile bewusst einen Zeilenumbruch? Richtig wäre z.b. 2. und 3. Zeile in einer, und nur ein semikolon. So zieht sich das durchs ganze notify


Sent from my iPad using Tapatalk
M: Thinclient x64 Debian | CUL FS20, HMS100WD, HMS100TF, HMS100T, HMS100CO, S300, S555TH | OWServer DS1420, DS18B20, DS2408 | RFXCOM UVN128, THWR800, THGR228N,RTGR328, PCR800 |Jeelink PCA301 EC3000|CUNO+IR|HMLAN|HMUSB|CUL433 Somfy|mySensors|espEasy
S1:Raspberry mit BPM810, Jeelink EC3000

betateilchen

Zitat von: schka17 am 20 Oktober 2016, 13:23:02
D.h. Du hast nach dem = in der 2. Zeile bewusst einen Zeilenumbruch?

Ich weiss nicht, wo Du in der zweiten Zeile einen Zeilenumbruch siehst... ich sehe keinen.




Die erste Zeile nach der öffnenden geschweiften Klammer in einem DEF sollte nicht leer sein.
Also einfach mal so probieren:


update_Sensoren:.* { my $status1 = AttrVal("wecker1","msgRecipientPush",10);;
my $status2 = AttrVal("wecker2","msgRecipientPush",10);;


Dann sollte die Meldung verschwinden und das notify funktionieren.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

schka17

Zitat von: betateilchen am 20 Oktober 2016, 16:41:31
Ich weiss nicht, wo Du in der zweiten Zeile einen Zeilenumbruch siehst... ich sehe keinen.




Die erste Zeile nach der öffnenden geschweiften Klammer in einem DEF sollte nicht leer sein.
Also einfach mal so probieren:


update_Sensoren:.* { my $status1 = AttrVal("wecker1","msgRecipientPush",10);;
my $status2 = AttrVal("wecker2","msgRecipientPush",10);;


Dann sollte die Meldung verschwinden und das notify funktionieren.

schaut mit tapatalk anders aus, auf dem Ipad habe ich einen Zeilenumbruch, ich habs gerade mit dem Browser probiert, da sehe ich tatsächlich keinen.
M: Thinclient x64 Debian | CUL FS20, HMS100WD, HMS100TF, HMS100T, HMS100CO, S300, S555TH | OWServer DS1420, DS18B20, DS2408 | RFXCOM UVN128, THWR800, THGR228N,RTGR328, PCR800 |Jeelink PCA301 EC3000|CUNO+IR|HMLAN|HMUSB|CUL433 Somfy|mySensors|espEasy
S1:Raspberry mit BPM810, Jeelink EC3000

marcel2803

Leider derselbe Fehler, ich hab die Zeile jetzt hochgezogen und der Code sieht so aus:
update_Sensoren:.* {my $status1 = AttrVal("wecker1","msgRecipientPush",10);;
my $status2 = AttrVal("wecker2","msgRecipientPush",10);;
my $status3 = AttrVal("wecker3","msgRecipientPush",10);;
my $zeiten = "";;

# Für Wochenende ändern
if ( $status1 eq "inactive" && $status2 eq "inactive" && $status3 eq "inactive" ) {

if (($wday == 0) || ($wday == 6)) {
$zeiten = "8:00";;
} else {
$zeiten = "6:00";;
}

} else {

if($status1 eq "active") {
$zeiten = $zeiten . " " . AttrVal("wecker1","comment",10);;
}

if($status2 eq "active") {
$zeiten = $zeiten . " " . AttrVal("wecker2","comment",10);;
}

if($status3 eq "active") {
$zeiten = $zeiten . " " . AttrVal("wecker2","comment",10);;
}

} #status
system("sudo bash /opt/fhem/www/tablet/Scripts/zeitenSortieren.sh $zeiten &");;

}#alle


Mit trigger bekomme ich aber immer noch den Fehler im Log:
2016.10.20 18:34:35 3: update_Sensoren return value: Unknown command {my, try help.
2016.10.20 18:34:41 3: update_Sensoren return value: Unknown command {my, try help.



schka17

Trau mich gar nichts zu schreiben, aber mit tapatalk sehe ich noch immer die Zeilenumbrüche..., aber auch zwei semikolon am ende der Zeile. Ich habe bei meinen notifys auch immer einen zeilenumbruch nach der ersten Klammer(http://uploads.tapatalk-cdn.com/20161020/16edbbe707b8aa4f8093e7bf15299e47.png)


Sent from my iPad using Tapatalk
M: Thinclient x64 Debian | CUL FS20, HMS100WD, HMS100TF, HMS100T, HMS100CO, S300, S555TH | OWServer DS1420, DS18B20, DS2408 | RFXCOM UVN128, THWR800, THGR228N,RTGR328, PCR800 |Jeelink PCA301 EC3000|CUNO+IR|HMLAN|HMUSB|CUL433 Somfy|mySensors|espEasy
S1:Raspberry mit BPM810, Jeelink EC3000

betateilchen

Zitat von: schka17 am 20 Oktober 2016, 19:06:18
Trau mich gar nichts zu schreiben, aber mit tapatalk sehe ich noch immer die Zeilenumbrüche.

Na und? Wen interessiert, was Dein Tapatalk Dir anzeigt? Das muss noch lange nicht das sein, was da wirklich steht (und ist es auch nicht!)

Zitat von: schka17 am 20 Oktober 2016, 19:06:18
aber auch zwei semikolon am ende der Zeile.

Es ist eigentlich völlig egal, ob am Ende einer perl-Zeile ein, zwei oder fünf Semikolon stehen.




@marcel2803:

Bei mir funktioniert Dein notify völlig problemlos, auch mit einer "leeren" Zeile nach der ersten Klammer und mit vielen Semikolon.


Internals:
   CFGFN
   DEF        update_Sensoren:.* {
my $status1 = AttrVal("wecker1","msgRecipientPush",10);;
my $status2 = AttrVal("wecker2","msgRecipientPush",10);;
my $status3 = AttrVal("wecker3","msgRecipientPush",10);;
my $zeiten = "";;
Debug "notify ausgeführt";;
}
   NAME       n_test
   NOTIFYDEV  update_Sensoren
   NR         17
   NTFY_ORDER 50-n_test
   REGEXP     update_Sensoren:.*
   STATE      2016-10-20 19:52:08
   TYPE       notify
   Readings:
     2016-10-20 19:52:03   state           active
Attributes:


Wenn ich ein "trigger update_Sensoren test" eingebe, erhalte ich die gewünschte Debug Ausgabe im Logfile.

Du musst vielleicht doch irgendwas bei der Anlage/Eingabe des notify selbst falsch machen  :o
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

schka17

Zitat von: betateilchen am 20 Oktober 2016, 19:56:58
Na und? Wen interessiert, was Dein Tapatalk Dir anzeigt? Das muss noch lange nicht das sein, was da wirklich steht (und ist es auch nicht!)

@Betateilchen, sehr überflüssiges Kommentar, aber das kennt man ja aus vielen Posts.

@marcel2803, ich würde nicht ausschliessen dass Steuerzeichen diese Problem auslösen könnten, genau dieses Fehlerbild hatte ich auch schon, habe meine scripts mit editplus erstellt und wollte das mit copy paste kopieren, und da waren eben mal unsichtbare Steuerzeichen dabei wenn ich vergessen habe umzustellen. Mehr kann ich dazu eh nicht mehr beitragen und bin dann draussen.
M: Thinclient x64 Debian | CUL FS20, HMS100WD, HMS100TF, HMS100T, HMS100CO, S300, S555TH | OWServer DS1420, DS18B20, DS2408 | RFXCOM UVN128, THWR800, THGR228N,RTGR328, PCR800 |Jeelink PCA301 EC3000|CUNO+IR|HMLAN|HMUSB|CUL433 Somfy|mySensors|espEasy
S1:Raspberry mit BPM810, Jeelink EC3000

betateilchen

Zitat von: schka17 am 20 Oktober 2016, 21:17:06
@Betateilchen, sehr überflüssiges Kommentar, aber das kennt man ja aus vielen Posts.

Das war nicht überflüssig, sondern voller Ernst. Tapatalk macht sehr viele komische Dinge, man sollte sich nie darauf verlassen, int Tapatalk wirklich das zu sehen, was in einem tapatalk-fähigen Forum tatsächlich in der Datenbank steht. Schon gar nicht, wenn es um Texte innerhalb irgendwelcher Formatierungs-Tags steht.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

marcel2803

Gibt es irgendein Tool, dass die verschiedenen Steuerzeichen anzeigt? Word wird wohl kaum unterscheiden können. Dann könnte ich die mal mit den anderen scripts vergleichen.