[Gelöst] - Register longPress einer HM-RC-12 ändern

Begonnen von maxritti, 16 Januar 2014, 21:01:03

Vorheriges Thema - Nächstes Thema

maxritti

Hallo,

ich wollte das Register longPress einer Taste meiner HM-RC-12 ändern.
Denn dort steht im Moment 0.4. Also habe ich mal ein

get HMRemote_Button1 regList

gemacht, welches mir das liefert:

list:         register | range              | peer     | description
   1: dblPress         |   0 to 1.5s        |          | time to detect double press
   1: longPress        | 0.3 to 1.8s        |          | time to detect key long press
   1: sign             |     literal        |          | signature (AES) options:on,off
   4: expectAES        |     literal        | required | expect AES options:on,off
   4: peerNeedsBurst   |     literal        | required | peer expects burst options:on,off

   
Dann mal ein

set HMRemote_Button1 regSet longPress 0.8

Damit steht bei den Readings dann "set_0.8 s".

Jetzt dachte ich einfach mal kurz auf den Anlernenknopf der HM-RC-12 drücken.
Im Eventlog sehe ich dann ein

2014-01-16 20:56:11 CUL_HM HMRemote NACK

Drücke ich noch mal auf den Anlernenknopf, bleibt der Event Monitor leer.
Bei den Readings steht immer noch "set_0.8 s".

Hat da jemand eine Idee, was ich da falsch mache?
martinp876 vielleicht? :)

martinp876

nach dem ändern steht das set_ drin - klar. FHEM schickt ein getConfig hinterher, das aber erst nach einem erneuten Anlernen abgearbeitet wird.
Jetzt scheint es ein Problem gegeben zu haben, warum auch immer die Abfrage gescheitert ist. Das Kommando wird erst einmal aus der queue entfernt.
du kannst jetzt das Kommando noch einmal absetzen (getConfig) und anlernen drücken. Das musst du wiederholen, bis es funktioniert hat - also bis CMDS_done angezeigt wird.
Weiterer Tip der Prüfung auf 'konsistenz' ist, mit HMInfo ein configCheck zu machen - das zeigt ob alles gelesen ist.

Wenn du autoReadReg auf 5 setzt versucht FHEM "intensiver" die Daten zu lesen - hängt also ein getConfig automatisch in die Queue sollten die Daten nicht vollständig sein.

Gruss Martin

maxritti

Hm, irgendwo klemmte noch.
Ich bekomme die 0.8 einfach nicht auf den Channel der FB.

Ein HMinfo configCheck liefert mir das:

configCheck done:

missing register list
    HMRemote_AAnlage_On_Off: .RegL_01:,.RegL_04:va_Btn11
    HMRemote_Btn_02: .RegL_01:,.RegL_04:va_Btn2
    HMRemote_Btn_03: .RegL_01:
    HMRemote_Btn_04: .RegL_01:
    HMRemote_Btn_05: .RegL_01:
    HMRemote_Btn_06: .RegL_01:
    HMRemote_Btn_07: .RegL_01:
    HMRemote_Btn_08: .RegL_01:
    HMRemote_Btn_10: .RegL_01:
    HMRemote_Btn_12: .RegL_01:,.RegL_04:va_Btn12
    HMRemote_Kueche_WW: .RegL_01:,.RegL_04:va_Btn2,.RegL_04:va_Btn9
    HMRemote_WZ_Highboard: .RegL_01:
    WZ_Tuer: RegL_00:

PairedTo missing/unknown
    WZ_Tuer


Nur ehrlich gesagt weiss ich das nicht einzuordnen, wo es klemmt.

Manchmal, wenn ich ein "HMremote getConfig" mache, steht da ein "CMDs_pending"
Dann ein anlernen wird eventuell wieder von einem "HMRemote NACK" quittiert.
Danach lerne ich die HMRemote noch mal an, indem ich kurz auf den Anlernbutton drücke, dann sagt er "CMDs_processing..." und auch "CMDs_done"
Nur in dem Channel steht noch bei longPress 0.4.

Wieso kommt immer das "NACK" wenn ich das Register gesetzt habe und anlerne? Gib's doch nicht.

martinp876

Hi,
ZitatManchmal, wenn ich ein "HMremote getConfig" mache, steht da ein "CMDs_pending"
schlecht. Das solle immer so sein.

ZitatDann ein anlernen wird eventuell wieder von einem "HMRemote NACK" quittiert.
das kann passieren. Grund ist, dass eine RC12 viele Daten zu lesen hat - alle 12 Kanäle, deren peers, das Device. Wenn nun ein Prozess dazwischen kommt und das Timing versaut schläft die RC12 ein - und FHEM kann nichts mehr tun. Dann muss man noch einmal probieren.
a) kannst du einmal die rohmessages aufzeichnen - von 2-3 versuchen? Vielleicht gibt es noch etwas zu verbessern. gehe folgendermaßen vor

attr global verbose 1
attr global mseclog 1
attr <hmlan> logIDs all,sys
apptime
set HMRemote getConfig

anlernen drücken
apptime
apptime clear
set HMRemote getConfig

anlernen drücken
apptime
apptime clear
set HMRemote getConfig

anlernen drücken
apptime

ZitatDanach lerne ich die HMRemote noch mal an, indem ich kurz auf den Anlernbutton drücke, dann sagt er "CMDs_processing..." und auch "CMDs_done"
wenn dass der Fall ist mache ein
set hm checkConfig
Die RC12 sollte jetzt komplett sein. Sichere dies (hier selektiv nur dieses Device)
set hm saveConfig -f HMRemote HMRemote.cfg

Du hast jetzt die Möglichkeit fehlende Register aus dem File nach FHEM nachzuladen. Es ist natürlich deine eigene Verantwortung, dass die Daten aus dem File auch deiner HW entsprechen - aber bei "config" devices ist dies ggf hilfreich.
set hm loadConfig -f HMRemote HMRemote.cfg
Siehe auch commandref hierzu.

Noch ein hinweis: sollte das lesen der Config bei einem Device mit vielen Kanälen schief gehen, weil dein System zu instabil in Sachen Timing ist kannst du es auch in Stücken abarbeiten

set HMRemote_Btn_01 getConfig
set HMRemote_Btn_02 getConfig
set HMRemote_Btn_03 getConfig
....

immer die noch von HMInfo gemeldeten Fehlenden nach schieben und anlernen drücken. Das dauert zwar, aber man kommt langsam aber sicher ans Ziel.

ZitatNur in dem Channel steht noch bei longPress 0.4.

und zu guter Letzt war noch ein Fehler im Code - bei Kanälen größer 10. Sollte gelöst sein, seit heute Morgen (update morgen...)
Gruss Martin

maxritti

Zitat von: martinp876 am 18 Januar 2014, 09:52:26
und zu guter Letzt war noch ein Fehler im Code - bei Kanälen größer 10. Sollte gelöst sein, seit heute Morgen (update morgen...)
Gruss Martin
Danke Dir für das Update.
Ich habe mal direkt nach dem Update ein "set HMRemote_Button1 regSet longPress 0.8" gemacht und bei der FB auf Anlernen gedrückt.
Und direkt beim ersten mal war die 0.8 auf einmal drin. Wie es sein sollte.

Vielleicht hätte ich am Anfang direkt erwähnen sollen, dass es nicht der Button 1 sondern Button 11 gewesen ist. Sorry dafür. Dann wärest du vielleicht schneller auf den Fehler gekommen.

Sei es wie es sei.
Nochmal danke schön.