Hallo liebe FHEM-Gemeinde,
ich habe mir über einen RasPi 2, fhem, einem 6-Tastenfeld, einer Funk-Sirene, 2 MP§-Gongs und diversen Türkontakten (allesamt von Homematic) eine kleine Alarmanlage zu Hause gebaut.
Es funktioniert auch alles, wie es soll (man, hab ich gebraucht, bis ich ein Statusmodell fertig hatte...) - allerdings nicht ohne Makel.
Wenn ich das Tastenfeld bediene (ein Knopfdruck zum entschärfen - Tastenfeld HM-PB-6-WM55), dann geschieht laut Log folgendes:
2016-09-06_05:52:09 Flur_Tastenfeld battery: ok
2016-09-06_05:52:09 Flur_Tastenfeld Taster_unscharf Short
2016-09-06_05:52:09 Flur_Tastenfeld Taster_unscharf Short
Und das, obwohl die Taste nur einmal kurz betätigt wurde.
Daraufhin meldet das Log vom Funkgong:
2016-09-06_05:52:09 Flur_Funkgong CMDs_pending
2016-09-06_05:52:15 Flur_Funkgong CMDs_done
2016-09-06_05:52:23 Flur_Funkgong CMDs_done
Und das FHEM-Log sieht dazu folgendermaßen aus:
2016.09.06 05:52:09 3: CUL_HM set Flur_MP3 playTone 005
2016.09.06 05:52:09 3: CUL_HM set Sz_MP3 playTone 005
2016.09.06 05:52:09 3: CUL_HM set Sirene_Alarm off
2016.09.06 05:52:10 3: CUL_HM set Flur_MP3 playTone 005
2016.09.06 05:52:10 3: CUL_HM set Sirene_Alarm off
2016.09.06 05:52:10 3: CUL_HM set Flur_MP3 playTone 005
2016.09.06 05:52:10 3: CUL_HM set Sirene_Alarm off
2016.09.06 05:52:10 3: CUL_HM set Flur_MP3 playTone 005
2016.09.06 05:52:10 3: CUL_HM set Sirene_Alarm off
2016.09.06 05:52:10 3: CUL_HM set Flur_MP3 playTone 005
2016.09.06 05:52:10 3: CUL_HM set Sirene_Alarm off
und in der Tat, fängt der Gong an, eine Sprachansage abzuspielen, bricht diese mittendrin ab und fängt wieder von vorne an. Manchmal spielt er diese dann vollständig ab, ab und zu bricht er auch den 2., 3. und vielleicht sogar vierten Anlauf ab und spielt dann erst den darauf folgenden Versuch ab.
Es ist auch auffällig, dass zwischen Tastendruck und beginn der Abfolge (ob nun zum scharf, oder zum unscharf schalten) manchmal mehrere Sekunden liegen.
Hat jemand einen Tip für mich, wo ich mal nach einem Fehler suchen soll?
Oder gibt es bekannte Probleme dieser Art? Bei einer Suche im Forum bin ich nicht glücklich geworden.
Hallo monek,
ich denke pauschal kann ich nur sagen: Da hast Du wohl irgendwo eine Schleife gebaut, aber wo? Da fehlt der Überblick.
Schau Dir das Ganze doch mal im Eventmonitor an, ich denke da findest Du am ehesten einen Hinweis.
Gruß Otto
Hallo Otto,
das Problem ist, dass es quasi bei allen notify's das selbe ist.
Jedes notify braucht anscheinen diverse Sekunden, bevor es ausgeführt wird - dementsprechend eben auch z.B. die Sprachausgabe an den mp3-Gongs oder auch die LEDs.
Der Eventmonitor... das, was der mir ausspuckt ist für mich wie chinesisch ^^
Soll ich den quasi anschalten und dann einmal eine der lang dauernden Aktionen durchführen?
Hab auf der global das verbose schon mal auf 5 gesetzt, denn bisher ist in den Logs nichts zu erkennen, außer die Zeilen, die ich im Startbeitrag schon gepostet habe...
Zitat von: monek am 06 September 2016, 15:40:03
Jedes notify braucht anscheinen diverse Sekunden, bevor es ausgeführt wird -
Nein, braucht es nicht. Dein Problem liegt mit Sicherheit nicht am notify.
Meine Vermutung: Dein Funk-Wandtaster ist in fhem nicht korrekt eingerichtet und wartet deshalb erfolglos auf das ACK einer Zentrale. Wenn das nicht in einer vorgegebenen Zeit kommt, wird der gesendete Befehl per funk wiederholt - und zwar (default) genau sechs Mal, was zufällig der Anzahl der ausgelösten notify entspricht...
Hilfreich wäre es übrigens auch, wenn Du das notify selbst einfach mal hier in code Tags zeigen würdest.
Ich würde, wenn ich wüsste, was du meinst.
Die Definition?
oder generell die ganzen internals?
vorausgesetzt, Du verstehst unter "Definition" das gleiche wie ich, würde die Definition reichen.
Grundsätzlich solltest Du Dich bitte nochmal mit den hier im Forum vorhandenen Hinweisen dazu, wie (und wo!) man Probleme in fhem korrekt beschreibt, befassen. Das könnte den Mitgliedern, die versuchen, Dir zu helfen, ihre Bemühungen erheblich erleichtern.
@monek - commandref list ist Dein Freund ...
Gesendet von meinem Lenovo B6000-H mit Tapatalk
Du hast natürlich Recht @betateilchen, ich werde mich bemühen.
@ Ralf - das mit der Commandref liest man immer wieder, aber die ist leider eben nicht jedermans Freund.
Ich finde darin eigentlich so gut wie nie, wonach ich suche. Einfach zu unübersichtlich (und dazu meist wenig Plan, wonach ich eigentlich genau suche).
Code Tag(s) habe ich dort auch nicht gefunden...
Die Internals vom Tastenfeld sind:
CUL_0_MSGCNT 242
CUL_0_RAWMSG A0BDFA2403529CF12345606E7::-48:CUL_0
CUL_0_RSSI -48
CUL_0_TIME 2016-09-06 17:51:38
DEF 3529CF
IODev CUL_0
LASTInputDev CUL_0
MSGCNT 242
NAME Flur_Tastenfeld
NOTIFYDEV global
NR 27
NTFY_ORDER 50-Flur_Tastenfeld
STATE Taster_unscharf Short
TYPE CUL_HM
channel_01 Taster_Weg
channel_02 Taster_Nacht
channel_03 Taster_Urlaub
channel_04 HM_3529CF_Btn_04
channel_05 Taster_Test
channel_06 Taster_unscharf
lastMsg No:DF - t:40 s:3529CF d:123456 06E7
protLastRcv 2016-09-06 17:51:38
rssi_at_CUL_0 avg:-48.01 lst:-48 max:-37.5 min:-65.5 cnt:242
Die Internals vom Taster_unscharf
DEF 3529CF06
NAME Taster_unscharf
NOTIFYDEV global
NR 34
NTFY_ORDER 50-Taster_unscharf
STATE Short (to 123456)
TYPE CUL_HM
chanNo 06
device Flur_Tastenfeld
und dann die Definition zum notify n_Taster_unscharf
(Taster_unscharf) {
my $nachtstatus = ReadingsVal("Nachtstatus","state","");
if ($nachtstatus eq "active") {
fhem ("set Alarmschalter off;set n_Alarm inactive;set Statusgeber off;set n_Statusgeber inactive; set Flur_MP3 playTone 005;set Sz_MP3 playTone 005;set Status unscharf;set Nachtstatus inactive;set Troete off;set Sirene_Alarm off")
} else {
fhem ("set Alarmschalter off;set n_Alarm inactive;set Statusgeber off;set n_Statusgeber inactive; set Flur_MP3 playTone 005;set Status unscharf;set Nachtstatus inactive;set Troete off;set Sirene_Alarm off")
}
}
Ich hoffe, das ist einigermaßen verständlich.
Ich lese derweil weiter im Forum, wie ich mich besser ausdrücken kann bzw. bessere Angaben mache...
Code-Tags sind hier im Forum zu finden und nicht in der commandref (s. Screenshot)
Und die Internals sind auch nur die halbe Wahrheit.
Ein list (http://fhem.de/commandref_DE.html#list) des device ist, was gefragt war (s. Hinweis von Ralf (https://forum.fhem.de/index.php/topic,57422.msg488552.html#msg488552))
brauchen wir alles nicht mehr, die Fehlerursache steht schon hier im Thread.
Definition zum notify n_Taster_unscharf
(Taster_unscharf) { ... }
Du triggerst auf JEDES event, das von "Taster_unscharf" ausgelöst wird, das heißt, Du triggerst auch auf battery, cmd... usw.
Da brauchst Du Dich nicht wundern, wenn die definierten Aktionen unzählige Male ausgeführt werden.
Korrigiere Dein notify so, dass es wirklich nur auf Short oder Long reagiert und alles wird gut.
@Benni - da sind wir bei kein Plan. Ich habe ist ist gelesen und dachte, Ralf hat sich verschrieben. Sehr peinlich. Ich hatte es als allgemeingültigen Hinweis gelesen. Ich gelobe Besserung.
@betateilchen - vielen Dank - ich hatte ursprünglich gehofft, dass ich nur auf Tastendruck triggere, nicht auf wirklich JEDES event, um Probleme mit einem zu langen Tastendruck zu umgehen (von wegen short und long)... War wohl etwas kurzsichtig gedacht.
Werde das denn auf (Taster_unscharf:Short|Taster_unscharf:Long) umstellen.
Danke euch.
Und wenn Du den Eventmonitor offen gehabt hättest, hättest Du eigentlich den Schlamassel beobachten können 8)
Ich habe im Eventmonitor nur erkannt, dass er etliche male getriggert hat.
Habe aber daraus nicht erkennen können, woran das liegt :(
Aber schau mal, das notify ist doch in der commandref (http://fhem.de/commandref_DE.html#notify) ziemlich geradlinig erklärt.
Und dann sieht man doch, dass es mehrere Events gibt und dein notify offenbar so gestrickt ist, dass es auf alle anspringt?
Ja ich weiß, dass mit dem RegExp ist schwierig. Aber im Zweifelsfall suchst Du Dir im Eventmonitor aus den xx Events die ein Tastendruck erzeugt, einen aus der eindeutig ist. Und den musst Du im <Suchmuster> unterbringen und kontrollieren ob das Filter auch wirkt.
Ich habe irgendwie versucht die Vorgehensweise mal verbal zu erklären, ich hoffe verständlich 8)
Gruß Otto
Ja, jetzt ist es für mich verständlich.
Wie ich schon schrieb, hatte ich eigentlich extra nicht auf :Short.* getriggert, weil ich auch "Long" abdecken wollte. Ich hab zu einfach gedacht, und nicht erkannt, was alles Events sind...
Aus Fehlern lernt man bekanntlich und ich habe jetzt noch diverse andere notifys angepasst 8)