FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Dome am 02 Februar 2014, 23:32:56

Titel: [gelöst] HM-PB-2-WM55 führt Befehl doppelt aus
Beitrag von: Dome am 02 Februar 2014, 23:32:56
Hallo Zusammen,

ich versuche gerade mein Küchenradio welches an einer IT-Steckdose hängt über einen Homematic Wandtaster zu schalten.
Da einer der beiden Kanäle für das Garagentor zuständig ist, würde ich gerne das Radio über einen einzelnen Kanal schalten.

Dazu habe ich folgendes notify eingefügt:
define RadioKueche notify WandTaster3_1 { if (Value("IT9") eq "off") { fhem("set IT9 on") } else { fhem("set IT9 off") }}

Wenn ich nun am WandTaster3_1 auslöse, schaltet sich die Steckdose erst ein und dann gleich wieder aus.

Ich habe testweise mal folgenden Aufbau gemacht:
define RadioKueche notify WandTaster3_1 { if (Value("IT9") eq "off") { fhem("set IT7 on") } else { fhem("set IT8 on") }}

Wenn ich nun IT9 eingeschalten habe, und den Taster auslöse, geht IT8 an, wenn ich IT9 ausgeschalten habe und den Taster auslöse geht IT7 an.

Wieso funktioniert das nicht wenn Value und Set auf das selbe Device geht?

Vielen Dank schon mal für eure Hilfe!

Beste Grüße aus Augsburg
Dome
Titel: Antw:IF ELSE Schaltung führt beides aus
Beitrag von: betateilchen am 03 Februar 2014, 08:19:51
define RadioKueche notify WandTaster3_1 { my $v = Value('IT9'); if ($v eq 'off') { fhem("set IT9 on") } else { fhem("set IT9 on") }}
Titel: Antw:IF ELSE Schaltung führt beides aus
Beitrag von: Dome am 03 Februar 2014, 18:19:34
Bekomm wenn ich es so einfüge einen Fehler "unknown command if"
Hab dann noch das zweite ; gesetzt:

define RadioKueche notify WandTaster3_1 { my $v = Value('IT9');; if ($v eq 'off') { fhem("set IT9 on") } else { fhem("set IT9 off") }}
define FileLog_RadioKueche FileLog ./log/RadioKueche-%Y.log RadioKueche
attr FileLog_RadioKueche logtype text
attr FileLog_RadioKueche room Filelog


Der Effekt ist der selbe, die Steckdose wird eingeschaltet und sofort wieder ausgeschaltet.
Komischerweise bekomm ich in das FileLog_RadioKueche keine Einträge :o

Im Filelog von der IT9 steht das:
2014-02-03_18:15:30 IT9 off
2014-02-03_18:15:31 IT9 on
Titel: Antw:IF ELSE Schaltung führt beides aus
Beitrag von: Puschel74 am 03 Februar 2014, 18:21:50
Hallo,

was sagt den der Event Monitor wenn du die Taste drückst?

Grüße
Titel: Antw:IF ELSE Schaltung führt beides aus
Beitrag von: betateilchen am 03 Februar 2014, 18:57:31
Zitat von: Dome am 03 Februar 2014, 18:19:34
Bekomm wenn ich es so einfüge einen Fehler "unknown command if"

Wenn Du das, was ich Dir geschrieben hatte, per copy&paste in die Befehlszeile übernimmst und nicht versuchst, direkt in die fhem.cfg zu schreiben (als Anfänger sollte man die Finger von der manuellen Bearbeitung dieser Datei lassen!), darf keine Fehlermeldung kommen.
Titel: Antw:IF ELSE Schaltung führt beides aus
Beitrag von: Dome am 03 Februar 2014, 19:01:00
Hier der Auszug aus dem EventMonitor:
Events:
2014-02-03 18:58:34 IT IT9 off
2014-02-03 18:58:35 IT IT9 on
2014-02-03 18:58:35 CUL_HM WandTaster3_1 Short (to virtueller_Aktor)
2014-02-03 18:58:35 CUL_HM WandTaster3_1 trigger: Short_79
2014-02-03 18:58:35 CUL_HM virtueller_Aktor_Btn5 OFF
2014-02-03 18:58:35 CUL_HM virtueller_Aktor_Btn5 virtActState: OFF
2014-02-03 18:58:35 CUL_HM virtueller_Aktor_Btn5 virtActTrigger: WandTaster3_1
2014-02-03 18:58:35 CUL_HM virtueller_Aktor_Btn5 virtActTrigType: short_Release
2014-02-03 18:58:35 CUL_HM virtueller_Aktor_Btn5 virtActTrigRpt: 1
2014-02-03 18:58:35 CUL_HM virtueller_Aktor_Btn5 virtActTrigNo: 79
2014-02-03 18:58:35 CUL_HM WandTaster3 battery: ok
2014-02-03 18:58:35 CUL_HM WandTaster3 WandTaster3_1 Short (to virtueller_Aktor)



Auch wenn ich über die Befehlszeile gehe bekomm ich ein " Unknown command if, try help."
Titel: Antw:IF ELSE Schaltung führt beides aus
Beitrag von: Puschel74 am 03 Februar 2014, 19:05:15
Hallo,

nur mal so aber ...

dein Wandtaster3_1 sendet 2 Events auf die das regexp des notify zutrifft.

Short
trigger

Logisch schaltet der dir ein/aus  ::)
regexp sind mächtig und gemein (wenn man sie falsch verwendet).

Und nun noch die genaue! Fehlermeldung aus dem Logfile bitte.

Grüße
Titel: Antw:IF ELSE Schaltung führt beides aus
Beitrag von: Dome am 03 Februar 2014, 19:28:52
Hab mich beim Anlegen des Tasters HM-PB-2-WM55 an das Wiki gehalten.
Hier die Einträge in der fhem.cfg:

# Taster 3
define WandTaster3 CUL_HM 24F0A3
attr WandTaster3 .devInfo 020000
attr WandTaster3 .stc 40
attr WandTaster3 expert 1
attr WandTaster3 firmware 1.4
attr WandTaster3 group Schalter3
attr WandTaster3 model HM-PB-2-WM55
attr WandTaster3 peerIDs
attr WandTaster3 room Taster
attr WandTaster3 serialNr KEQ1101088
attr WandTaster3 subType pushButton
attr WandTaster3 webCmd statusRequest:getConfig
define WandTaster3_1 CUL_HM 24F0A301
attr WandTaster3_1 expert 1
attr WandTaster3_1 group Schalter3
attr WandTaster3_1 model HM-PB-2-WM55
attr WandTaster3_1 peerIDs
attr WandTaster3_1 room Taster
define WandTaster3_2 CUL_HM 24F0A302
attr WandTaster3_2 expert 1
attr WandTaster3_2 group Schalter3
attr WandTaster3_2 model HM-PB-2-WM55
attr WandTaster3_2 peerIDs
attr WandTaster3_2 room Taster


und hier für die virtuellen Aktoren:
define virtueller_Aktor_Btn5 CUL_HM 12345605
attr virtueller_Aktor_Btn5 expert 1
attr virtueller_Aktor_Btn5 group Schalter3
attr virtueller_Aktor_Btn5 model virtual_8
attr virtueller_Aktor_Btn5 peerIDs 24F0A301,
attr virtueller_Aktor_Btn5 room Taster
attr virtueller_Aktor_Btn5 webCmd press short:press long
define virtueller_Aktor_Btn6 CUL_HM 12345606
attr virtueller_Aktor_Btn6 expert 1
attr virtueller_Aktor_Btn6 group Schalter3
attr virtueller_Aktor_Btn6 model virtual_8
attr virtueller_Aktor_Btn6 peerIDs 24F0A302,
attr virtueller_Aktor_Btn6 room Taster
attr virtueller_Aktor_Btn6 webCmd press short:press long


das ist aus dem Filelog des WandTaster3.*
2014-02-03_19:25:21 WandTaster3_1 Short (to virtueller_Aktor)
2014-02-03_19:25:21 WandTaster3_1 trigger: Short_85
2014-02-03_19:25:22 WandTaster3 battery: ok
2014-02-03_19:25:22 WandTaster3 WandTaster3_1 Short (to virtueller_Aktor)


und hier noch das Filelog des virtuellen Aktor:
2014-02-03_19:25:22 virtueller_Aktor_Btn5 OFF
2014-02-03_19:25:22 virtueller_Aktor_Btn5 virtActState: OFF
2014-02-03_19:25:22 virtueller_Aktor_Btn5 virtActTrigger: WandTaster3_1
2014-02-03_19:25:22 virtueller_Aktor_Btn5 virtActTrigType: short_Release
2014-02-03_19:25:22 virtueller_Aktor_Btn5 virtActTrigRpt: 1
2014-02-03_19:25:22 virtueller_Aktor_Btn5 virtActTrigNo: 85
Titel: Antw:IF ELSE Schaltung führt beides aus
Beitrag von: Puschel74 am 03 Februar 2014, 19:53:37
Hallo,

ZitatHab mich beim Anlegen des Tasters HM-PB-2-WM55 an das Wiki gehalten.
Das ist schonmal gut - das mach ich mit meinen HM-Geräten auch.

Aber das ist erstmal egal da ich hoffe und davon ausgehe das dein Wandtaster korrekt gepairt ist mit FHEM.
Dahingehend sind auch deine geposteten Logfiles und Definitionen (hab ich um Definitionen gebeten?) - nicht das was ich wollte.

Ich habe dich um
ZitatUnd nun noch die genaue! Fehlermeldung aus dem Logfile bitte.
gebeten.
Die bekomme ich aber nicht - warum auch immer weiß ich nicht.
Obwohl du schreibst das du
ZitatAuch wenn ich über die Befehlszeile gehe bekomm ich ein " Unknown command if, try help."
bekommst.
Naja. Es ist schön wenn jemand der Hilfe möchte die Infos so filtert wie er das denkt und die Infos nicht rausrückt um die man bittet.
Das geht aber zu 99,9% daneben - wie auch hier.

Aber egal.
define RadioKueche notify WandTaster3_1
besitzt KEIN! regexp sondern nur das Device ergo matcht dieses notify auf alles was das Device liefert.

Den Rest kannst du dir bitte aus den vorhergehenden Beiträgen und Hilfestellungsversuchen zusammensuchen und du hast ja jetzt auch ein paar Begriffe die dir bei deiner Suche mittels SuFu weiterhelfen können.

Grüße
Titel: Antw:IF ELSE Schaltung führt beides aus
Beitrag von: Dome am 03 Februar 2014, 22:15:42
Hi Puschel,

vielen Dank für deine Hilfe - der Hinweis das notify auf short und trigger reagiert war gold wert!

Ich habe das Problem so gelöst:
define RadioKueche notify WandTaster3_1 { my $v = Value('virtueller_Aktor_Btn5');; if ($v eq 'OFF') { fhem("set IT9 on") } else { fhem("set IT9 off") }}

Funktioniert jetzt wie gewünscht.

Wenn ich es richtig verstanden habe, kann ich über RegEx dem notify beibringen z.B. nur auf "Short" zu reagieren?
Ich werde mir mal am Wochenende das Tutorial zu gemüte führen: http://www.danielfett.de/internet-und-opensource,artikel,regulaere-ausdruecke

Wo ich dich gerne noch einmal nerven würde ist die Geschichte mit der Fehlermeldung. Möchte doch künftig auch das liefern wonach ich gefragt werde ;)
Ging es um eine Fehlermeldung im primären Logfile von Fhem? Ich bekomme dort nach "Unknown command if, try help." keinen Eintrag. Gibt es noch ein anderes Logfile für Fehlermeldungen?

Als Anfänger ohne Perl-Erfahrung ist das alles doch ein recht komplex Thema und irgendwann platzt der Kopf mit den vielen Tutorials, Codeschnippseln, usw.

Tausend Dank für deine Hilfe!

Beste Grüße aus Augsburg
Dome
Titel: Antw:[gelöst] IF ELSE Schaltung führt beides aus
Beitrag von: Dome am 04 Februar 2014, 23:53:43
Falls mal nochmal irgendwann jemand über das Thema stolpert, hier mein finaler Lösungsansatz:

define RadioKueche2 notify WandTaster3_1:trigger.* { my $v = Value('IT9');; if ($v eq 'off') { fhem("set IT9 on") } else { fhem("set IT9 off") }}
Titel: Antw:[gelöst] HM-PB-2-WM55 führt Befehl doppelt aus
Beitrag von: Puschel74 am 05 Februar 2014, 11:15:28
Hallo,

ZitatGing es um eine Fehlermeldung im primären Logfile von Fhem?
Eigentlich ja da FHEM dort die Fehlermeldungen protokolliert.

ZitatIch bekomme dort nach "Unknown command if, try help." keinen Eintrag.
Durch die Timestamp der Meldungen kannst du das schön den Ereignissen zuordnen.
Wenn bei einem auslösenden Ereigniss keine Fehlermeldung im Logfile auftaucht dann hat FHEM auch keinen Fehler gefunden  ;)

ZitatWenn ich es richtig verstanden habe, kann ich über RegEx dem notify beibringen z.B. nur auf "Short" zu reagieren?
Oder so wie du es gemacht hast auch auf "trigger".
Dabei hilft mir immer der Event Monitor ungemein.
Dort sieht man schön welche Events FHEM "sieht" und kann das regexp gewünscht anpassen/angeben.

Wenn dein "Problem" aber gelöst ist dann bitte den ersten Beitrag bearbeiten und dem Titel ein (Gelöst) vorne dran stellen.
Danke.

Grüße
Titel: Antw:[gelöst] HM-PB-2-WM55 führt Befehl doppelt aus
Beitrag von: thomaso am 10 September 2015, 10:03:04
Ich habe ein ähnliches Problem mit dem merhfachen Aufrufen der Notification.

Ich hab die Notify folgendermassen angelegt:

define n_FrontDoorButton1LongClickNotify notify HM_3618ED_Btn_01:Long.* { system("sudo /home/pi/Scripts/sudowebscript.sh frontDoorButtonLongClickDetectedWeb") }
define n_FrontDoorButton2LongClickNotify notify HM_3618ED_Btn_02:Long.* { system("sudo /home/pi/Scripts/sudowebscript.sh frontDoorButtonLongClickDetectedWeb") }


Also ein Notify für den oberen, eine für den unteren Taster meines HM_Sen_MDIR_W55. Jedoch führt er das Scripts mehrfach aus. In der Log sieht es dann so aus:

2015.09.10 09:52:42 3: n_FrontDoorButton1LongClickNotify return value: -1
<?xml version="1.0" encoding="UTF-8"?>
<prowl>
<success code="200" remaining="965" resetdate="1441871566" />
</prowl>
2015.09.10 09:52:45 3: n_FrontDoorButton1LongClickNotify return value: -1
<?xml version="1.0" encoding="UTF-8"?>
<prowl>
<success code="200" remaining="999" resetdate="1441875168" />
</prowl>
2015.09.10 09:52:48 3: n_FrontDoorButton1LongClickNotify return value: -1
<?xml version="1.0" encoding="UTF-8"?>
<prowl>
<success code="200" remaining="998" resetdate="1441875168" />
</prowl>
2015.09.10 09:52:50 3: n_FrontDoorButton1LongClickNotify return value: -1
<?xml version="1.0" encoding="UTF-8"?>
<prowl>
<success code="200" remaining="997" resetdate="1441875168" />
</prowl>
2015.09.10 09:52:55 3: n_FrontDoorButton1LongClickNotify return value: -1
<?xml version="1.0" encoding="UTF-8"?>
<prowl>
<success code="200" remaining="996" resetdate="1441875168" />
</prowl>
2015.09.10 09:52:57 3: n_FrontDoorButton1LongClickNotify return value: -1


Ich habe dann versucht mit den Attributen event-min-interval bzw. disabledForIntervals bei der Notification versucht, das zu unterbinden, jedoch ohne Erfolg.

Weiß zufällig jemand, woran der mehrfach Aufruf liegen kann?

Vielen Dank im Voraus für Tipps!
Titel: Antw:[gelöst] HM-PB-2-WM55 führt Befehl doppelt aus
Beitrag von: frank am 10 September 2015, 10:12:54
schau in den eventmonitor, nur dort siehst du die events. bau deine regex in die filtermöglichkeit ein.
Titel: Antw:[gelöst] HM-PB-2-WM55 führt Befehl doppelt aus
Beitrag von: thomaso am 10 September 2015, 13:55:37
Also wenn ich auf den Button drücke dann schauts im Event Monitor so aus:

Events (Filter:.*):
2015-09-10 13:52:57 CUL_HM HM_3618ED_Btn_01 Long 1_18 (to HM_3618ED)
2015-09-10 13:52:57 CUL_HM HM_3618ED_Btn_01 trigger: Long_18
2015-09-10 13:52:57 CUL_HM HM_3618ED_Btn_01 trigger_cnt: 18
2015-09-10 13:52:59 CUL_HM HM_3618ED_Btn_01 Long 2_18 (to HM_3618ED)
2015-09-10 13:52:59 CUL_HM HM_3618ED_Btn_01 trigger: Long_18
2015-09-10 13:52:59 CUL_HM HM_3618ED_Btn_01 trigger_cnt: 18
2015-09-10 13:53:02 CUL_HM HM_3618ED_Btn_01 Long 3_18 (to HM_3618ED)
2015-09-10 13:53:02 CUL_HM HM_3618ED_Btn_01 trigger: Long_18
2015-09-10 13:53:02 CUL_HM HM_3618ED_Btn_01 trigger_cnt: 18
2015-09-10 13:53:09 CUL_HM HM_3618ED_Btn_01 Long 4_18 (to HM_3618ED)
2015-09-10 13:53:09 CUL_HM HM_3618ED_Btn_01 trigger: Long_18
2015-09-10 13:53:09 CUL_HM HM_3618ED_Btn_01 trigger_cnt: 18
2015-09-10 13:53:11 CUL_HM HM_3618ED_Btn_01 Long 5_18 (to HM_3618ED)
2015-09-10 13:53:11 CUL_HM HM_3618ED_Btn_01 trigger: Long_18
2015-09-10 13:53:11 CUL_HM HM_3618ED_Btn_01 trigger_cnt: 18
2015-09-10 13:53:12 CUL_HM HM_3618ED CMDs_done
2015-09-10 13:53:15 CUL_HM HM_3618ED_Btn_01 LongRelease 6_18 (to HM_3618ED)
2015-09-10 13:53:15 CUL_HM HM_3618ED_Btn_01 trigDst_F11034: noConfig
2015-09-10 13:53:15 CUL_HM HM_3618ED_Btn_01 trigger: Long_18
2015-09-10 13:53:15 CUL_HM HM_3618ED_Btn_01 trigger_cnt: 18
2015-09-10 13:53:15 CUL_HM HM_3618ED CMDs_done
2015-09-10 13:53:17 CUL_HM HM_3618ED_Btn_01 LongRelease 7_18 (to HM_3618ED)
2015-09-10 13:53:17 CUL_HM HM_3618ED_Btn_01 trigDst_F11034: noConfig
2015-09-10 13:53:17 CUL_HM HM_3618ED_Btn_01 trigger: Long_18
2015-09-10 13:53:17 CUL_HM HM_3618ED_Btn_01 trigger_cnt: 18
2015-09-10 13:53:17 CUL_HM HM_3618ED CMDs_done
2015-09-10 13:53:22 CUL_HM HM_3618ED_Btn_01 LongRelease 8_18 (to HM_3618ED)
2015-09-10 13:53:22 CUL_HM HM_3618ED_Btn_01 trigDst_F11034: noConfig
2015-09-10 13:53:22 CUL_HM HM_3618ED_Btn_01 trigger: Long_18
2015-09-10 13:53:22 CUL_HM HM_3618ED_Btn_01 trigger_cnt: 18


Wie meinst du das genau, bzgl regex in die Filtermöglichkeit?
Titel: Antw:[gelöst] HM-PB-2-WM55 führt Befehl doppelt aus
Beitrag von: frank am 10 September 2015, 14:37:09
Events (Filter:.*):
klick mal auf den *
Titel: Antw:[gelöst] HM-PB-2-WM55 führt Befehl doppelt aus
Beitrag von: thomaso am 10 September 2015, 14:46:19
wenn ich dort dann statt .* die RexEx HM_3618ED_Btn_01:Long.* einfüge, zeigt er gar nichts mehr an, wenn ich am Taster drücke.

EDIT: ich hab jetzt einfach in der cfg beim Anlegen des Notify statt Long.* ein Long.1.* geschrieben, jetzt löst er nur einmal aus. Warum auch immer :)

define n_FrontDoorButton1LongClickNotify notify HM_3618ED_Btn_01:Long.1.* { system("sudo /home/pi/Scripts/sudowebscript.sh frontDoorButtonLongClickDetectedWeb") }
define n_FrontDoorButton2LongClickNotify notify HM_3618ED_Btn_02:Long.1.* { system("sudo /home/pi/Scripts/sudowebscript.sh frontDoorButtonLongClickDetectedWeb") }
Titel: Antw:[gelöst] HM-PB-2-WM55 führt Befehl doppelt aus
Beitrag von: frank am 10 September 2015, 15:22:52
Zitatich hab jetzt einfach in der cfg beim Anlegen des Notify statt Long.* ein Long.1.* geschrieben, jetzt löst er nur einmal aus.
weil jetzt nur noch auf das 1. long event getriggert wird. zb dies:

2015-09-10 13:52:57 CUL_HM HM_3618ED_Btn_01 Long 1_18 (to HM_3618ED)

Zitatwenn ich dort dann statt .* die RexEx HM_3618ED_Btn_01:Long.* einfüge, zeigt er gar nichts mehr an, wenn ich am Taster drücke.
weil es keine "echte" regex ist. den ersten doppelpunkt gibt es nicht im event.

probiere

HM_3618ED_Btn_01.Long.*
Titel: Antw:[gelöst] HM-PB-2-WM55 führt Befehl doppelt aus
Beitrag von: thomaso am 10 September 2015, 15:28:07
Zitat von: frank am 10 September 2015, 15:22:52
weil jetzt nur noch auf das 1. long event getriggert wird. zb dies:

2015-09-10 13:52:57 CUL_HM HM_3618ED_Btn_01 Long 1_18 (to HM_3618ED)

aahhh das macht Sinn. Danke für die Erklärung!

Zitat von: frank am 10 September 2015, 15:22:52
weil es keine "echte" regex ist. den ersten doppelpunkt gibt es nicht im event.

probiere

HM_3618ED_Btn_01.Long.*

jub jetzt funktioniert das auch.

Danke für deine Hilfe Frank!