Bewegungsmelder mit Relaisplatine peeren und schalten

Begonnen von cpfeil81, 26 Dezember 2013, 14:34:50

Vorheriges Thema - Nächstes Thema

cpfeil81

Hi,

habe einen Bewegungsmelder HM-SEC-MDIR und eine 4 Kanal Schaltplatine HM-LC-SW4-PCB im Einsatz.
Beide laufen an FHEM/CUL (gepairt) und sind miteinander gepeert.

Wird Bewegung erkannt soll für 10 Sekunden der erste Ausgang (Relais) geschaltet werden. Klappt aber nicht.

Ich habe die beiden gepeert mit:

set Bewegungsmelder_Flur peerChan 0 CUL_HM_HM_LC_SW4_PCB_224BE9_Sw_01 single set


Das hat prima geklappt, in der peerList des ersten Relais Kanals (CUL_HM_HM_LC_SW4_PCB_224BE9_Sw_01) taucht auch mein Bewegungsmelder auf. Beim Event Monitor wird auch der Trigger gemeldet. Und nun?

Ich dachte ich könnte den Trigger nun so benutzen indem ich auf dem 1. Relais Kanal folgendes setze:

lgOnTime 100 Bewegungsmelder_Flur

Geht aber nicht!

Gruß
Christian

martinp876

Hallo Christian,

du machst sicher
set CUL_HM_HM_LC_SW4_PCB_224BE9_Sw_01 regset lgOnTime 100 Bewegungsmelder_Flur

Dann sollte dies auch in den Registern stehen - korrekt?
Was steht in den anderen registern zu "lg" des peers "Bewegungsmelder_Flur" im Kanal 1 des CUL_HM_HM_LC_SW4_PCB_224BE9?

Die ist z.B. der actiontype gesetzt?

Gruss Martin

cpfeil81

Zitat von: martinp876 am 27 Dezember 2013, 07:43:38
Hallo Christian,

du machst sicher
set CUL_HM_HM_LC_SW4_PCB_224BE9_Sw_01 regset lgOnTime 100 Bewegungsmelder_Flur

Dann sollte dies auch in den Registern stehen - korrekt?
Was steht in den anderen registern zu "lg" des peers "Bewegungsmelder_Flur" im Kanal 1 des CUL_HM_HM_LC_SW4_PCB_224BE9?

Die ist z.B. der actiontype gesetzt?

Hi Martin,

Ja, das Kmmando oben wird auch in das Register eingetragen. Aber wenn ich versuche den actionType zu setzen mit:

set CUL_HM_HM_LC_SW4_PCB_224BE9_Sw_01 regSet lgActionType toggleToCntInv Bewegungsmelder_Flur

Bekomme ich folgende Meldung von fhem:

cannot calculate value. Please issue set CUL_HM_HM_LC_SW4_PCB_224BE9_Sw_01 getConfig first

Wenn ich getConfig am Kanal 1 zuerst aufrufe ändert das aber nichts und die Meldung bleibt.

Woran kann das liegen?

Gruß

martinp876

Hallo Christian,

Zitatcannot calculate value. Please issue set CUL_HM_HM_LC_SW4_PCB_224BE9_Sw_01 getConfig first
das Register ist nur ein bitfeld, kleiner 1 Byte. FHEM bracht die restlichen Daten des Bytes um nichts kaputt zu schreiben.
ein getConfig sollte alles lesen. Wenn es funktioniert hat sollte hernach im protState cmds_done stehen - ohne fehler.

Wenn es funktioniert kannst du die roh.registerdaten sehen, wenn du expert auf 2 setzt. Wenn die fehlen hat etwas nicht funktioniert.
ggf. poste ein list der entity - mit expert 2.

Gruss Martin

cpfeil81

Hi Martin,

danke! Ich habe mal das Ergebnis getConfig des ersten Relais-Kanals (Empfänger) sowie des Bewegungsmelders angehängt als Bild.
Zwar schaltet der Bewegunsgmelder den ersten Relais Kanal nun in einem Toogle Modus, aber ich kann dennoch z.B. folgendes Kommando nicht ausführen:

set CUL_HM_HM_LC_SW4_PCB_224BE9_Sw_01 regSet shActionType toggleToCntInv

Ich möchte eigentlich erreichen das bei Bewegung das Relais für ca. 1 Sekunde eingeschaltet wird und dann wieder aus geht.

Gruß
Christian


martinp876

hallo Christian,

getConfig wurde nicht ausgeführt. In protState steht CMDs_pending.  Das kannst du auch daran erkennen, dass das Register 'set_...' ist.

der SW4_PCB sollte eigentlich immer senden, so lange das IO device operationell ist.
wann war der letzte update?
falls es aktuell ist,
kannst du ein list des device schicken - aber bitte in Ascii

Gruss Martin

cpfeil81

#6
Hallo Martin,

bin schon etwas am verzweifeln!

Ich habe mittlerweile sichergestellt, dass proState bei beiden Geräten auf CMDs_done_event steht.
Sowohl beim 4-Kanal-Funkschalter als auch beim Bewegungsmelder mache ich davor ein set ... getConfig.

Gepeert habe ich mit:

set Bewegungsmelder_Flur peerChan 0 Kanal1 single set

Die Befehle...

set Kanal1 regSet lgOnTime 10 Bewegungsmelder_Flur
set Kanal1 regSet shOnTime 10 Bewegungsmelder_Flur


...nimmt fhem ohne Probleme an und sie tauchen in den Readings des 4-Kanal-Funkempfängers im Kanal1 wie gewünscht auf!

Wenn ich allerdings ausführe...

set Kanal1 regSet shActionType toggleToCnt Bewegungsmelder_Flur

...erhalte ich nach wie vor die Meldung:

cannot calculate value. Please issue set Kanal1 getConfig first

Ich habe keine Ahnung warum er dieses Kommando nicht an nimmt. Alles schon versucht.
Kannst du mir helfen Martin?

Im Anhang ein Screenshot von der Seite des 1. Kanals des 4-Kanal-Funkempfängers.

Danke,
Gruß
Christian

martinp876

Hallo Christian,

Etwas Hintergrund:
einige register sind kleiner 1 Byte - diese müssen sich ggf. das Byte mit anderen Registern teilen. Wenn dies der Fall ist (z.B. shActionType) muss FHEM erst die anderen register im Byte kennen/gelesen haben. Wenn die Daten vorliegen, kann das setzen ausgeführt werden - wenn nicht  kommt die Meldung, dass erst einmal gelesen werden muss.

Wenn aber das Register das ganze Byte belegt kann das setzen sowieso ausgeführt werden.
Schreiben kann man nur ganze Bytes.

Du hast lgOnTime und shOnTime gesetzt. Aber es ist nicht geklärt, ob es geschrieben wurde. Ggf sind noch nicht einmal die Messages übertragen. Du kannst in CUL_HM_LC_SW4_PCB_224BE9 feststellen, ob commands pending sind oder Fehler aufgetreten sind.

Wir sollen also erst einmal das getConfig klar bekommen. Kannst du hierzu einmal die rohmessages aufzeichnen? Prüfe, ob und welche Fehler auftreten (im Device, nicht im Kanal)

Wenn es nicht klappt - probiere noch einmal das pairen - wenn nicht gepairt ist spielt er auch nicht mit uns. Ggf auch aufzeichnen und posten

Gruss Martin

cpfeil81

Hallo Martin,

erst mal Danke für die tolle Unterstützung!
Ich fange langsam an die Hintergründe zu verstehen.

Zitat von: martinp876 am 29 Dezember 2013, 10:04:57Wenn die Daten vorliegen, kann das setzen ausgeführt werden - wenn nicht  kommt die Meldung, dass erst einmal gelesen werden muss.

OK. Soweit verstanden! Und das "Setzen" mache ich indem ich getConfig ausführe, am Aktor/Sender kurz die Anlerntaste drücke damit die Daten übertragen werden und warte bis CMD auf "done" steht um zu sehen ob die Übertragung abgeschlossen ist!?

Zitat von: martinp876 am 29 Dezember 2013, 10:04:57
Wir sollen also erst einmal das getConfig klar bekommen. Kannst du hierzu einmal die rohmessages aufzeichnen? Prüfe, ob und welche Fehler auftreten (im Device, nicht im Kanal)

Wie kann ich überprüfen ob getConfig erfolgreich war? Dies wäre ja die Voraussetzung so wie ich verstanden habe um überhaupt shActionType setzen zu können.

Wie kann ich die "Rohmessages" aufzeichnen und hier posten?

Gruß
Christian

martinp876

ZitatUnd das "Setzen" mache ich indem ich getConfig ausführe, am Aktor/Sender kurz die Anlerntaste drücke damit die Daten übertragen werden und warte bis CMD auf "done" steht um zu sehen ob die Übertragung abgeschlossen ist!?

ich würde von 'Lesen' reden - ja, geht mir getConfig. Wenn du es auf einen Kanal anwendest werden all dessen Daten gelesen.
Wenn du es auf ein Device machst wird dies UND ALLE seine Kanäle gelesen.

Der MDIR sollte 2 modi unterstützen, um daten zu übertragen
config: wenn du anlernen drückst sendet das device eine message und FHEM sendet alle aufgestauten Daten zum Device

wakeup: sollte auch gehen. Wenn der mdir aufwacht (alle 10 min?) sendet FHEM auch alle messages - ohne dass du anlernen drücken musst.

im Device sind in der Gruppe "internals" einträge "proto..." zu finden. wenn CMDS_pending dort steht warten messages auf senden. CMDS_processing - es wird gerade gesendet, CMDS_done - fertig CMDS_done_events... - fertig, aber es hat Fehler gegeben.

Du kannst erst einmal die Zähler löschen, dann ein getConfig machen, dann nachsehen

set <device> clear msgEvents
set <device> getConfig
#anlernen drücken oder warten
=> prüfen, was in proto... steht

rohmessages loggen  wie in
http://forum.fhem.de/index.php/topic,16563.msg107848.html#msg107848
Gruss Martin

cpfeil81

Hi Martin,

ich habe nun bemerkt, dass beim Befehl getConfig auf den 4-Kanal-Schaltaktor HM-LC-SW4-PCB unter dem Punkt protState der Wert CMDs_done_events:9 steht. D.h. es gab wohl 9 Fehler!?

Für die Rohmessages habe ich die fhem.cfg wie im folgenden Beitrag angepasst.

Nun steht im Logfile des Devices HM-LC-SW4-PCB folgendes:

2013-12-29_20:25:30 CUL_HM_HM_LC_SW4_PCB_224BE9 MISSING ACK
2013-12-29_20:32:36 CUL_HM_HM_LC_SW4_PCB_224BE9 RESPONSE TIMEOUT:RegisterRead
2013-12-29_20:33:00 CUL_HM_HM_LC_SW4_PCB_224BE9 RESPONSE TIMEOUT:RegisterRead


OK, d.h. wohl getConfig schlägt fehl und daher kann ich wohl auch shActionType nicht übertragen, korrekt?
Was sagt mir die Fehlermeldung RESPONSE TIMEOUT nun?

Gruß
Christian

Martin Thomas Schrott

Hi zusammen,

ich hatte genau das gleiche Problem mit einem sw2-fm actor und einer pbi Schnittstelle.
Bin der Ursache aber auch nicht auf die Schliche gekommen. Geholfen hat ein reset und neu anlernen, danach neu peeren. Bin gespannt ob ihr das Problem lösen könnt ohne von vorne anzufangen.

martinp876

Hi,

wenn es einen response-timeout gibt ist wohl eine Antwort nicht gekommen.
Ihr habt sicher die aktuelle SW?
dann bitte ein log schicken, wenn du es aufgezeichnet hast

Gruss Martin

cpfeil81

Zitat von: martinp876 am 30 Dezember 2013, 20:12:19
Hi,

wenn es einen response-timeout gibt ist wohl eine Antwort nicht gekommen.
Ihr habt sicher die aktuelle SW?
dann bitte ein log schicken, wenn du es aufgezeichnet hast

Gruss Martin

Hi Martin,

Habe mir die Version von der Webseite installiert:

ZitatLast released version: (as of 2013-09-29): fhem-5.5.tar.gz

Oder soll ich lieber den aktuellsten Nightly Build holen und Updaten?

Gruß Christian

Martin Thomas Schrott

Hi,

ja ich hab sicher die aktuellste Version, kann das Problem jetzt allerdings natürlich nicht reproduzieren, weil ich ja alles resetted habe. Falls es nochmal auftritt, bzw. bei einem weiteren Actor auftritt geb ich dir bescheid.
Das Problem war derart unnachvollziehbar, dass ich schon fast den actor tauschen wollte, aber dann ein letztes mal versucht habe alles zu löschen und neu zu programmieren.
Bin gespannt ob es ein Einzelfall war oder wieder einmal auftritt. Ev. ist auch einfach der actor irgendwie abgestürtzt, das hatte ich letztens bei einem bl1, wo nur noch Strom abschalten half.

Liebe Grüße
Martin