Probleme mit Fernbedienung

Begonnen von Kiter192, 06 August 2013, 18:07:01

Vorheriges Thema - Nächstes Thema

Kiter192

Hallo zusammen,

ich habe folgendes Problem:

Ich habe mir einen HM-RC-Sec3-B (3 Tasten Fernbedienung) gekauft.
Diese habe ich angelernt und bekomme auch alle Daten in FHEM (FB7390).

define CUL_HM_HM_RC_SEC3_B_1ADC30 CUL_HM 1ADC30
attr CUL_HM_HM_RC_SEC3_B_1DDD30 .devInfo 030000
attr CUL_HM_HM_RC_SEC3_B_1DDD30 .stc 40
attr CUL_HM_HM_RC_SEC3_B_1DDD30 firmware 1.3
attr CUL_HM_HM_RC_SEC3_B_1DDD30 model HM-RC-SEC3-B
attr CUL_HM_HM_RC_SEC3_B_1DDD30 room CUL_HM
attr CUL_HM_HM_RC_SEC3_B_1DDD30 serialNr JEQ0646019
attr CUL_HM_HM_RC_SEC3_B_1DDD30 subType remote

define Fern_HMS_int CUL_HM 1ADC3001# CUL_HM_HM_RC_SEC3_B_1ADC30_Btn_01
attr Fern_HMS_int model HM-RC-SEC3-B

define Fern_HMS_ext CUL_HM 1ADC3002 # CUL_HM_HM_RC_SEC3_B_1ADC30_Btn_02
attr Fern_HMS_ext model HM-RC-SEC3-B

define Fern_HMS_unscharf CUL_HM 1ADC30 # CUL_HM_HM_RC_SEC3_B_1ADC30_Btn_03
attr Fern_HMS_unscharf model HM-RC-SEC3-B


Mein Problem ist, das ich über folgendes Notify den dummy "A_Anlage_schalten" Ein/Aus schalte.

define Fernbed_abfrage notify Fern_HMS_unscharf.*(Short).* { fhem("set A_Anlage_schalten Aus")}
define Fernbed_abfrage2 notify Fern_HMS_int.*(Short).* { fhem("set A_Anlage_schalten Ein")}

Das nun beschaltete dummy "A_Anlage_schalten" wiederum schaltet all die anderen schönen Sachen.

define AAnlage_Ein notify (A_Anlage_schalten) {if ("$value{A_Anlage_schalten}" eq "Aus") { fhem "set A_Anlage Aus;;set Alarm_Quit reset;;set Alarm Aus;;set Alarm_neu Aus;;set Alarm_G Aus"} else {if ("$value{A_Anlage_schalten}" eq "Ein") { fhem "set A_Anlage Ein;;set Alarm_Quit ready;;set Alarm_neu Aus;;set Mails_erlauben Ein"}}}

Leider schaltet nun aber nur der dummy A_Anlage_schalten Ein/Aus, das zweite notify, welches auf diesen ja erst reagieren soll, macht aber gar nichts.


Ich habe dann mal versucht, virtuelle Taster zu erzeugen, welche schon mal der Fernbedienung ein ACK zurücksenden und mit dessen Status ich arbeiten könnte.
Das mit dem ACK funktioniert zwar, aber die Virtuellen Taster selber nehmen keinen Wert an mit dem ich weiter arbeiten könnte.

define VFern_HMS CUL_HM 332211
attr VFern_HMS expert 2_full
attr VFern_HMS model virtual_1
attr VFern_HMS peerIDs 1ADC3001,
attr VFern_HMS subType virtual


Als State steht immer nur ???

martinp876

hi,

was steht in $value{A_Anlage_schalten}?
probiere es doch einmal

define AAnlage_Ein notify A_Anlage_schalten {Log 1,"gefunden wurde:".value{A_Anlage_schalten}}
und schau im Logfile nach , was Sache ist.

dann kannst du probieren:
define AAnlage_Ein notify A_Anlage_schalten {if ($value{A_Anlage_schalten} eq "Aus") { fhem "set A_Anlage Aus;;set Alarm_Quit reset;;set Alarm Aus;;set Alarm_neu Aus;;set Alarm_G Aus"} else { fhem "set A_Anlage Ein;;set Alarm_Quit ready;;set Alarm_neu Aus;;set Mails_erlauben Ein"}}

Gruss Martin


Kiter192

Hallo,

also zunächst $value{A_Anlage_schalten} bringt folgenden Fehler ==>Unknown command $value{A_Anlage_schalten}, try help  

Das Merkwürdige ist, ich habe bereits eine FS20 Fernbedienung, welche via notify A_Anlage_schalten Ein/Aus schaltet, genau wie die HM Remote.

Wenn ich mir den State von A-Anlage_schalten ansehe, ändert sich dieser auch und zwar bei beiden Fernbedienungen.

Der Unterschied ist nur, das zweite notify, welches auf A_Anlage_schalten reagieren soll, reagiert nur wenn ich mit der FS20 Fernbedienung schalte???

Was kann das sein, ich habe echt keine Idee, eigentlich schaltet der zu schaltende dummy ja, nur der daraus resultierende notify will nicht??!!

Kiter192

kurzer Einwurf:

{Value("A_Anlage_schalten")}  => erzeugt je nach Tastendruck Ein bzw Aus, wie gesagt, das scheint zu klappen.

martinp876

was jetzt $value oder Value? Du solltest nur eines nehmen.

dein erstes Notify hat eine Verbindung zu HM - aber das zweite ist unabhängig - egal ob FS20 oder HM.
Prüfe noch einmal, was du geschrieben hast in beiden Fällen

Gruss Martin

Kiter192

Hallo,

genau das verstehe ich halt nicht.

Das erste notify regiert auf die Fernbedienungen (FS20 oder HM) und schaltet A_Anlage_schalten entweder Ein oder Aus.

Das zweite notify reagiert aud A_Anlage_schalten und schaltet diverse andere Dinge (siehe oben).

Das MERKWÜRDIGE jetz ist, das bei Betätigung von der FS20 Fernbedinung A_Anlage_schalten den Status Ein bzw. Aus annimt und auch das zweite notify funktioniert.

Wenn ich nun die HM Fernbedienung betätige, ändert A-Anlage_schalten auch den Status, aber das zweite notify wird nicht bearbeitet!?????
 

betateilchen

define AAnlage_Ein notify (A_Anlage_schalten)

Lass mal die Klammer weg, die macht an der Stelle keinen Sinn.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Kiter192

Hallo,

auch das weglassen der Klammer bringt keine Besserung.

martinp876

Hi,

$value ist wohl nicht korrekt, auch die Hochkomma
Probiere besser einmal:

define AAnlage_Ein notify A_Anlage_schalten {\
      if (Value{A_Anlage_schalten} eq "Aus") {\
       fhem "  set A_Anlage Aus;;\
       set Alarm_Quit reset;;\
       set Alarm Aus;;\
       set Alarm_neu Aus;;\
       set Alarm_G Aus"}\
      elsif (Value{A_Anlage_schalten} eq "Ein") { \
fhem "  set A_Anlage Ein;;\
       set Alarm_Quit ready;;\
set Alarm_neu Aus;;\
set Mails_erlauben Ein"}}


wenn man nicht weiter kommt sollte man immer mit einfachen Konstellationen zu debuggen anfangen. Versuche doch einmal festzustellen, was dein "value" liefert:

define AAnlage_Ein notify A_Anlage_schalten {\
      Log 1,"value of A_Anlage_schalten is:".Value{A_Anlage_schalten}}


Gruss Martin

Kiter192

Hallo,

ich habe mal folgenden Code von Dir probiert:

define AAnlage_Ein notify A_Anlage_schalten {\
      Log 1,"value of A_Anlage_schalten is:".Value{A_Anlage_schalten}}

Ergebnis:
2013.08.10 15:52:12 3: AAnlage_Ein return value: Bareword "A_Anlage_schalten" not allowed while "strict subs" in use at (eval 10986) line 1.

Was heißt das????

martinp876

sollte mit Value() gehen anstelle von Value{}.

oder Value("")


Kiter192

So,

folgender Code funktioniert:

define AAnlage_Ein3 notify A_Anlage_schalten {\
Log 1,"value of A_Anlage_schalten is:".Value("A_Anlage_schalten")}


Bei Betätigung der FS20 Fernbedieung wird im Log die Statusänderung angezeigt.
Bei Betätigung der HM Fernbedieung nicht.

Aktualisiere ich den Browser (F5) dann sieht man aber das der Status von A_Anlage_schalten auch bei der HM-Fernbedienung sich ändert.

Das Problem, das dies der Log nicht mitbekommt ist denke ich auch dann das selbe, das die nachfolgenden notifys es nicht mitbekommen.

martinp876

bei HM wird während der Bearbeitung eines events das Triggern weiterer gesperrt.
Falls dies innerhalb des codes passiert achte ich darauf, dass der trigger nachträglich ausgelöst wird um die Kausalität zu wahren.
Möglich, dass FS20 dies nicht benötigt.

Du kannst also den Wert setzen, aber nicht "hierarchisch triggern" innerhalb eines triggers.

Du kannst es aber gezielt selbst forcieren. Nutze anstelle von
set A_Anlage Ein
besser
trigger A_Anlage Ein

Gruss Martin