Hallo zusammen,
ich suche hier schon eine Weile rum, finde jedoch keine Lösung zu meinem Anliegen.
Deshalb schrei ich hier mal um Hilfe.
Ich habe also einen HM-LC-Sw1PBU-FM mit alternativer Firmware geflashed. Anhand dieser Anleitung:
https://wiki.fhem.de/wiki/HM-LC-Sw1PBU-FM_Alternative_Firmware_am_Raspi_bauen_u._flashen
(https://wiki.fhem.de/wiki/HM-LC-Sw1PBU-FM_Alternative_Firmware_am_Raspi_bauen_u._flashen)
Hat alles geklappt, außer die Fuses wollten sich nicht setzen lassen.
Hab aber gefunden, dass auch andere das Problem hatten und in folgender Reihenfolge war dann alles erfolgreich:
avrdude -p m644p -P gpio -c gpio -U flash:w:bootloader.hex
avrdude -p m644p -P gpio -c gpio -U lfuse:w:0xFD:m -U hfuse:w:0xD8:m -U lock:w:0x3F:m
avrdude -p m644p -P gpio -c gpio -U flash:w:firmware.hex
Dann Schalter in fhem gelöscht, Schalter angeschlossen und neu angelernt, danach getConfig.
Hier das Ergebnis:
Internals:
CFGFN
DEF 52C28D
IODev kroUART
LASTInputDev kroUART
MSGCNT 13
NAME HM_52C28D
NOTIFYDEV global
NR 758
STATE ???
TYPE CUL_HM
kroUART_MSGCNT 13
kroUART_RAWMSG 0501003AC2805E52C28D4F6D880000000000000377000000
kroUART_RSSI -58
kroUART_TIME 2017-10-01 17:03:42
lastMsg No:C2 - t:5E s:52C28D d:4F6D88 0000000000000377000000
protLastRcv 2017-10-01 17:03:42
protSnd 7 last_at:2017-10-01 17:03:15
protState CMDs_done
rssi_at_kroUART lst:-58 min:-59 max:-58 cnt:13 avg:-58.46
READINGS:
2017-10-01 17:01:34 CommandAccepted yes
2017-10-01 17:01:33 D-firmware 1.5
2017-10-01 17:01:33 D-serialNr PS00000002
2017-10-01 17:03:15 PairedTo 0x4F6D88
2017-10-01 17:01:37 R-pairCentral 0x4F6D88
2017-10-01 17:03:15 RegL_00. 02:01 05:00 0A:4F 0B:6D 0C:88 12:00 00:00
helper:
HM_CMDNR 194
cSnd 014F6D8852C28D00040000000000,014F6D8852C28D00040000000000
supp_Pair_Rep 0
expert:
def 1
det 0
raw 1
tpl 0
io:
newChn +52C28D,00,01,00
nextSend 1506870222.3586
prefIO
rxt 0
vccu
p:
52C28D
00
01
00
mRssi:
mNo C2
io:
kroUART -56
prt:
bErr 0
sProc 0
rspWait:
q:
qReqConf
qReqStat
role:
chn 1
dev 1
rssi:
at_kroUART:
avg -58.4615384615385
cnt 13
lst -58
max -58
min -59
shadowReg:
tmpl:
Attributes:
IODev kroUART
autoReadReg 4_reqStatus
expert 2_raw
firmware 1.5
model unknown
room CUL_HM
serialNr PS00000002
subType
Das Modul habe ich geladen (zuvor schon):
Latest Revision: 15154
File Rev Last Change
fhem.pl 15112 2017-09-21 07:22:33Z rudolfkoenig
96_allowed.pm 14888 2017-08-13 12:07:12Z rudolfkoenig
No Id found for 99_Asksin_HM_LC_Sw1PBU_FM_CustomFW.pm
90_at.pm 14995 2017-09-03 14:23:14Z rudolfkoenig
...
Wenn ich auf den Schalter drücke, passiert folgendes:
Oben:
2017-10-01 17:04:46 CUL_HM HM_52C28D trigDst_4F6D88: noConfig
2017-10-01 17:04:46 CUL_HM HM_52C28D trigger: Short_8
2017-10-01 17:04:46 CUL_HM HM_52C28D trigger_cnt: 8
Unten:
2017-10-01 17:04:50 CUL_HM HM_52C28D trigDst_4F6D88: noConfig
2017-10-01 17:04:50 CUL_HM HM_52C28D trigger: Short_7
2017-10-01 17:04:50 CUL_HM HM_52C28D trigger_cnt: 7
Was ich komisch finde, ist:
- model unknown
Ist das normal?
- serialNr PS00000002
Das ist nicht die die ich in /root/hm_switch/Asksin_OTA_Bootloader/devices/HM-LC-Sw1PBU-FM.h angegeben habe.
- noConfig im log
get regList liefert folgendes:
list: register | range | peer | description
0: pairCentral | 0 to 16777215 | | pairing to central
1: sign | literal | | signature (AES) options:off,on
get regTable:
No regs found for:
HM_52C28D type: -
list:peer register :value
0: pairCentral :0x4F6D88
Mit der originalen FW war hier viel mehr.
Nun weiß ich 1. nicht ob mit dem flashen alles in Ordnung war und 2. wie ich den Schalter selbst mit set regSet und in fhem konfigurieren muss, damit er tut was ich von ihm will.
Das hat mit der originalen FW tadellos funktioniert:
set <HM_LC_Sw1PBU_FM_Sw_01> regSet shActionType jmpToTarget self01;
set <HM_LC_Sw1PBU_FM_Sw_01> regSet shSwJtOn dlyOff self01;
set <HM_LC_Sw1PBU_FM_Sw_01> regSet shSwJtOff dlyOn self01;
set <HM_LC_Sw1PBU_FM_Sw_01> regSet shSwJtDlyOn on self01;
set <HM_LC_Sw1PBU_FM_Sw_01> regSet shSwJtDlyOff off self01;
set <HM_LC_Sw1PBU_FM_Sw_01> regSet shActionType jmpToTarget self02;
set <HM_LC_Sw1PBU_FM_Sw_01> regSet shSwJtOn dlyOff self02;
set <HM_LC_Sw1PBU_FM_Sw_01> regSet shSwJtOff dlyOn self02;
set <HM_LC_Sw1PBU_FM_Sw_01> regSet shSwJtDlyOn on self02;
set <HM_LC_Sw1PBU_FM_Sw_01> regSet shSwJtDlyOff off self02;
z.B.
set HM_52C28D regSet shActionType jmpToTarget self01;
liefert jetzt folgendes:
shActionType failed: supported register are pairCentral sign
Danke im Voraus!
Gruß,
kroman
Hab eine Idee.
Bitte aktuell nicht zu viel Zeit investieren.
Melde mich bald wieder.
So, da bin ich wieder.
Ich war nicht sicher, ob ich im Arduino IDE alles richtig gemacht hatte, da zum ersten mal verwendet.
Nun hab ich alles nochmal kontrolliert.
Die Serial ID in Register.h Zeile 16 hatte ich vergessen anzupassen und jetzt nachgeholt. Das erklärt wohl das:
Zitat
- serialNr PS00000002
Der Rest war auch vorher schon richtig denke ich.
Zusätzlich habe ich noch wie im Wiki beschrieben gleich die Zentrale eingetragen.
Danach nochmals kompiliert und geflashed.
Das Ergebnis ist bis auf die serialNr recht ähnlich dem davor.
Danach habe ich ein
set HM_52C28D virtual 1
welches glaube ich notwendig ist gemacht (?).
Das list danach:
Internals:
CFGFN
DEF 52C28D
IODev kroUART
LASTInputDev kroUART
MSGCNT 315
NAME HM_52C28D
NOTIFYDEV global
NR 250900
STATE CMDs_done
TYPE CUL_HM
channel_01 HM_52C28D_Btn1
kroUART_MSGCNT 315
kroUART_RAWMSG 050101362C805E52C28D4F6D88000000000000037B000000
kroUART_RSSI -54
kroUART_TIME 2017-10-02 21:37:15
lastMsg No:2C - t:5E s:52C28D d:4F6D88 000000000000037B000000
protLastRcv 2017-10-02 21:37:15
protSnd 13 last_at:2017-10-02 21:24:29
protState CMDs_done
rssi_at_kroUART cnt:315 max:-54 min:-73 lst:-54 avg:-61.81
READINGS:
2017-10-02 20:51:01 CommandAccepted yes
2017-10-02 20:13:26 D-firmware 1.5
2017-10-02 20:13:26 D-serialNr NEQ1831929
2017-10-02 20:51:51 PairedTo 0x4F6D88
2017-10-02 20:13:31 R-pairCentral 0x4F6D88
2017-10-02 20:51:51 RegL_00. 02:00 05:00 0A:4F 0B:6D 0C:88 12:00 00:00
2017-10-02 21:24:29 recentStateType info
2017-10-02 21:24:29 state CMDs_done
2017-10-02 21:24:22 trigger Short_6
2017-10-02 20:57:19 triggerTo_208557 Short_5
2017-10-02 20:57:16 triggerTo_21D629 Short_4
2017-10-02 21:24:22 triggerTo_21D63B Short_6
2017-10-02 21:24:22 trigger_cnt 6
helper:
BNO 6
BNOCNT 1
HM_CMDNR 44
cSnd 114F6D8852C28D0400,014F6D8852C28D00040000000000
cfgChkResult No regs found for:
HM_52C28D type: -
list:peer register :value
0: pairCentral :0x4F6D88
supp_Pair_Rep 0
ack:
208557 HM_52C28D_Btn1:03
21D629 HM_52C28D_Btn1:02
21D63B HM_52C28D:01
expert:
def 1
det 0
raw 1
tpl 0
io:
newChn +52C28D,00,01,00
nextSend 1506973035.50006
prefIO
rxt 0
vccu
p:
52C28D
00
01
00
mRssi:
mNo 2C
io:
kroUART -52
prt:
bErr 0
sProc 0
rspWait:
q:
qReqConf
qReqStat
role:
dev 1
rssi:
at_kroUART:
avg -61.8126984126984
cnt 315
lst -54
max -54
min -73
shadowReg:
tmpl:
nb:
cnt 2
Attributes:
IODev kroUART
autoReadReg 4_reqStatus
expert 2_raw
firmware 1.5
model unknown
room CUL_HM
serialNr NEQ1831929
subType virtual
Das:
set HM_52C28D virtual 1
hat den Button erzeugt.
Ein list darauf:
Internals:
CFGFN
DEF 52C28D01
NAME HM_52C28D_Btn1
NOTIFYDEV global
NR 257627
STATE Short 2_3 (to 208557)
TYPE CUL_HM
chanNo 01
device HM_52C28D
READINGS:
2017-10-02 20:56:52 peerList
2017-10-02 21:24:28 state Short 2_3 (to 208557)
2017-10-02 21:24:28 trigger Short_3
2017-10-02 21:24:28 triggerTo_208557 Short_3
2017-10-02 21:24:26 triggerTo_21D629 Short_3
2017-10-02 21:24:28 trigger_cnt 3
helper:
BNO 3
BNOCNT 2
cfgChkResult No regs found for:
expert:
def 1
det 0
raw 1
tpl 0
role:
chn 1
vrt 1
tmpl:
nb:
cnt 1
Attributes:
model unknown
peerIDs
webCmd press short:press long
Jetzt muss Schalter-intern gepeert werden, richtig?
Z.B. das
set HM_52C28D_Btn1 peerChan 0 HM_52C28D_Sw_01 dual set
ergibt
please enter peer
Kann mir jemand sagen, was nun in fhem zu tun ist?
Danke...
Es handelt sich hier um ein spezifisches Problem mit der ALTERNATIVEN Firmware, das solltest Du im Betreff auch so kennzeichnen und ggf. nach Lösungen oder ähnlichen Problemen im zugehörigen Thread suchen. Die Firmware wird nicht von allzuvielen genutzt, von mir auch nicht.
Über "trigDst_4F6D88: noConfig" würde ich mir weniger Gedanken machen. Aus dem Bauch heraus ist die Hardwareerkennung beim Anlernen fehlgeschlagen, und solange "model unknown" besteht, blendet FHEM auch nicht die dafür gültigen Registersätze ein und belässt es daher beim Minimalsatz "pairCentral" und "sign". Du solltest also das korrekte Model nachtragen oder dafür sorgen, dass die Erkennung beim Anlernen funktioniert. Rechteproblem beim Einkopieren?
Noch falscher halte ich den Ansatz, virtuelle Buttons in dem Gerät zu erzeugen. Das ist für etwas ganz anderes gedacht.
Wie die Buttons auszuwerten und anzusprechen sind, entzieht sich meiner Detailkenntnis, aber wie gesagt: der Firmwarethread ist da richtiger.
So, jetzt funktionierts :)
Das war die Lösung auf dem fhem-pi:
sudo apt-get install libswitch-perl
Das wär schon wichtig für's Wiki.
Danke für deine Tipps! Vorallem der mit dem virtuellen Button hat mich von der falschen Spur weggebracht.
Model händisch nachtragen hat übrigens nichts gebracht und das war auch nach einem reset oder getConfig wieder weg.
Schönen Tag!
Meiner wird's jetzt...