Nachdem es ein paar Nachfragen gab und ich der Meinung bin, dass ein System es unterstützen sollte habe ich in HMInfo ein x-deviceReplace eingebaut.
"x-" damit es als Letztes in der Kommandoliste vorkommt. Das Kommando darf man nicht leichtfertig nutzen. nun, was macht es...
Muss man ein defektes Device ersetzen (oder ersetzt aus irgendwelchen anderen Gründen) kann man das Kommando nutzen.
Anfangsbedingung - man hat:
- ein altes Device in FHEM definiert, es liegen noch alle Daten vor. Insbesondere die Attributlisten und die Register-readings
- das System ist komplett eingelesen - man hat also alle peerings und Readings im FHEM present (zumindest die, welche man benötigt... alle die ncht da sind findet das Komamndo nicht)
- das neue Device ist in FHEM gepairt, getConfig ist komplett. Es hat natürlich einen anderen Namen.
nun löst man
set hm x-deviceReplace <oldDev> <newDev>
aus.
Man bekommt erst einmal eine Liste von Aktionen welche ablaufen würden. Dann löst man das identische Kommando noch einmal aus. nun wird es durchgeführt.
- renamen des Device und der Kanäle des alten und des neuen Device!
- Umprogrammieren des peerings und der Register des neuem Device, also kopieren der Daten des alten
- umsetzen der Templates, so man welche hat
- umprogrammieren der Peers des Device: löschen des alten Peers und Setzen des neuen, korrektur der Register und Templates.
danach kann das alte device (jetzt old-<oldDev>) gelöscht werden.
Die Vorsichts masshnahmen sind drin, damit keine es einfach ausführt - bspw mit 2 Devices in seinem System und dann alles durcheinander wirft.
Zu beachen ist natürlich, dass die Kommandos auf ausgeführt werden. Bspw das Umprogrammieren einer remote welche nur auf "config" reagiert muss natürlich durch drücken des Config Buttons erweckt werden.
Es werden ggf einige Nachrichten ausgetauscht. Man sollte vorher ein
set hm clearG msgErrors
ausführen, nach dem Kommando kann man (wie immer, was rede ich ) mit
set hm protoEvents
kontrollieren, was noch in der Queue hängt und wo Fehler aufgetreten sind. Damit muss man dann umgehen.
Nutzt man templates ist es einfacher und sicherer. Templates werden in FHEM verwaltet. Das Umstellen ist also kein Problemm da es FHEM-inern passiert (keine messages). Mit
get hm configCheck
kann man schlussendlich prüfen, dass die Register korrekt gesetzt sind. Und mit
set hm templateExe
werden fehlende Register nachgetragen. Temporäre Übertragungsfehler sind damit korrigierbar.
Setzt natürlich voraus, dass man Templates nutzt.
Jetzt wollte ich das mal ausprobieren mit einem Wandthermostat
set hm x-deviceReplace Az.Wandthermostat HM_645E00
, bekomme aber nach dem Aufruf die Fehlermeldung:
only valid for CUL_HM devices
Altes Device:
Internals:
DEF 2701AB
HMLGW_2_MSGCNT 80
HMLGW_2_RAWMSG 0500002C3F84702701AB00000000F22E
HMLGW_2_RSSI -44
HMLGW_2_TIME 2018-06-21 16:19:17
HMLGW_3_MSGCNT 80
HMLGW_3_RAWMSG 050000373F84702701AB00000000F22E
HMLGW_3_RSSI -55
HMLGW_3_TIME 2018-06-21 16:19:17
HMLGW_MSGCNT 79
HMLGW_RAWMSG 0500002D3F84702701AB00000000F22E
HMLGW_RSSI -45
HMLGW_TIME 2018-06-21 16:19:17
IODev HMLGW
LASTInputDev HMLGW_2
MSGCNT 239
NAME Az.Wandthermostat
NOTIFYDEV global
NR 327
NTFY_ORDER 50-Az.Wandthermostat
STATE CMDs_done
TYPE CUL_HM
channel_01 Az.Wandthermostat_Weather
channel_02 Az.Wandthermostat_Climate
channel_03 Az.Wandthermostat_WindowRec
channel_06 Az.Wandthermostat_remote
channel_07 Az.Wandthermostat_SwitchTr
lastMsg No:3F - t:70 s:2701AB d:000000 00F22E
protCondBurst forced_off
protLastRcv 2018-06-21 16:19:17
protSnd 48 last_at:2018-06-21 16:07:28
protState CMDs_done
rssi_at_HMLGW cnt:79 min:-45 max:-45 avg:-45 lst:-45
rssi_at_HMLGW_2 cnt:80 min:-45 max:-41 avg:-44.07 lst:-44
rssi_at_HMLGW_3 cnt:80 min:-57 max:-55 avg:-55.02 lst:-55
Helper:
DBLOG:
battery:
myFHEMdb:
TIME 1529589068.57138
VALUE ok
batteryLevel:
myFHEMdb:
TIME 1529590311.51643
VALUE 3.5
measured-temp:
myFHEMdb:
TIME 1529589194.31991
VALUE 24.2
myFHEMdb_LT:
TIME 1529589194.34202
VALUE 24.2
state:
myFHEMdb:
TIME 1529590048.95307
VALUE CMDs_done
myFHEMdb_LT:
TIME 1529590048.97547
VALUE CMDs_done
READINGS:
2018-06-21 15:44:36 Activity alive
2018-06-21 16:07:16 CommandAccepted yes
from archivexx D-firmware 1.3
from archivexx D-serialNr LEQ0077642
2017-09-04 09:49:51 HMLAN1_RSSI_old -45
2018-03-24 17:00:59 HMLGW_2_RSSI_old -50
2018-03-24 17:00:59 HMLGW_3_RSSI_old -57
2018-03-24 17:00:59 HMLGW_RSSI_old -47
2018-06-18 20:56:55 PairedTo 0x272E57
2015-09-12 20:21:36 R-btnLock off
2014-10-28 16:47:57 R-burstRx on
2014-10-28 16:47:57 R-cyclicInfoMsg on
2014-10-28 16:47:57 R-cyclicInfoMsgDis 0
2014-10-28 16:47:57 R-globalBtnLock off
2014-10-28 16:47:57 R-localResDis off
2014-10-13 12:13:12 R-lowBatLimitRT 2.2 V
2015-09-12 18:22:13 R-modusBtnLock off
2018-06-18 20:56:55 R-pairCentral 0x272E57
2018-06-18 20:56:55 RegL_00. 01:01 02:01 09:01 0A:27 0B:2E 0C:57 0F:00 11:00 12:16 16:00 18:00 19:00 1A:00 00:00
2018-06-21 16:13:54 RegL_07.
2018-06-21 16:11:51 battery ok
2018-06-21 16:11:51 batteryLevel 3.5
2018-06-21 16:11:51 desired-temp on
2016-06-26 09:40:13 lastBatChange Sun Jun 26 09:40:13 2016
2018-06-21 16:11:51 measured-temp 24.2
2018-06-18 20:55:41 powerOn 2018-06-18 20:55:41
2018-06-18 20:55:41 recentStateType info
2018-06-21 16:07:28 state CMDs_done
2018-06-18 20:56:53 time-request -
helper:
HM_CMDNR 63
cSnd 01272E572701AB02040000000008,01272E572701AB02040000000009
mId 00AD
regLst ,0
rxType 6
supp_Pair_Rep 0
tmplChg 0
ack:
expert:
def 1
det 1
raw 1
tpl 1
io:
newChn +2701AB,00,01,00
nextSend 1529590757.61131
rxt 0
vccu vccu
p:
2701AB
00
01
00
prefIO:
HMLGW
mRssi:
mNo 3F
io:
HMLGW:
-37
-37
HMLGW_2:
-44
-44
HMLGW_3:
-55
-55
prt:
awake 0
bErr 0
sProc 0
rspWait:
q:
qReqConf
qReqStat
role:
dev 1
prs 1
rssi:
at_HMLGW:
avg -45
cnt 79
lst -45
max -45
min -45
at_HMLGW_2:
avg -44.075
cnt 80
lst -44
max -41
min -45
at_HMLGW_3:
avg -55.025
cnt 80
lst -55
max -55
min -57
shRegW:
07 02
shadowReg:
tmpl:
Attributes:
IODev HMLGW
IOgrp vccu:HMLGW
actCycle 000:10
actStatus alive
autoReadReg 5_readMissing
burstAccess 0_off
comment Batteriewechsel:
18.06.2018
event-min-interval battery.*:72000
event-on-change-reading .*
expert 251_anything
firmware 1.3
group Heizung
icon HM-TC-IT-WM-W-EU_
model HM-TC-IT-WM-W-EU
msgRepeat 1
room Arbeitszimmer
serialNr LEQ0077642
subType thermostat
webCmd getConfig:clear msgEvents
Neues Device:
Internals:
CFGFN
DEF 645EE0
HMLGW_2_MSGCNT 307
HMLGW_2_RAWMSG 05000035158470645EE000000000FC2A
HMLGW_2_RSSI -53
HMLGW_2_TIME 2018-06-21 16:18:51
HMLGW_3_MSGCNT 320
HMLGW_3_RAWMSG 05000041158470645EE000000000FC2A
HMLGW_3_RSSI -65
HMLGW_3_TIME 2018-06-21 16:18:51
HMLGW_MSGCNT 309
HMLGW_RAWMSG 05000049158470645EE000000000FC2A
HMLGW_RSSI -73
HMLGW_TIME 2018-06-21 16:18:51
IODev HMLGW
LASTInputDev HMLGW_3
MSGCNT 936
NAME HM_645EE0
NOTIFYDEV global
NR 1868
STATE CMDs_done
TYPE CUL_HM
channel_01 HM_645EE0_Weather
channel_02 HM_645EE0_Climate
channel_03 HM_645EE0_WindowRec
channel_06 HM_645EE0_remote
channel_07 HM_645EE0_SwitchTr
lastMsg No:15 - t:70 s:645EE0 d:000000 00FC2A
protCmdDel 16
protLastRcv 2018-06-21 16:18:51
protResnd 3 last_at:2018-06-21 16:00:47
protResndFail 2 last_at:2018-06-21 16:00:49
protSnd 398 last_at:2018-06-21 16:12:50
protState CMDs_done
rssi_at_HMLGW cnt:309 min:-84 max:-62 avg:-69.7 lst:-73
rssi_at_HMLGW_2 cnt:307 min:-88 max:-52 avg:-66.73 lst:-53
rssi_at_HMLGW_3 cnt:320 min:-76 max:-63 avg:-64.14 lst:-65
Helper:
DBLOG:
Activity:
myFHEMdb:
TIME 1529588902.51361
VALUE alive
D-firmware:
myFHEMdb:
TIME 1529588897.26714
VALUE 1.3
D-serialNr:
myFHEMdb:
TIME 1529588897.26714
VALUE OEQ1670151
R-burstRx:
myFHEMdb:
TIME 1529588903.27923
VALUE on
R-cyclicInfoMsg:
myFHEMdb:
TIME 1529588903.27923
VALUE on
R-cyclicInfoMsgDis:
myFHEMdb:
TIME 1529588903.27923
VALUE 0
R-pairCentral:
myFHEMdb:
TIME 1529588903.27923
VALUE 0x272E57
battery:
myFHEMdb:
TIME 1529590721.5742
VALUE ok
batteryLevel:
myFHEMdb:
TIME 1529590721.5742
VALUE 3.5
desired-temp:
myFHEMdb:
TIME 1529590721.5742
VALUE 17.0
myFHEMdb_LT:
TIME 1529590721.65727
VALUE 17.0
measured-temp:
myFHEMdb:
TIME 1529590721.5742
VALUE 25.2
myFHEMdb_LT:
TIME 1529590721.65727
VALUE 25.2
state:
myFHEMdb:
TIME 1529590370.64735
VALUE CMDs_done
myFHEMdb_LT:
TIME 1529590370.66923
VALUE CMDs_done
time-request:
myFHEMdb:
TIME 1529588918.74639
VALUE -
READINGS:
2018-06-21 15:48:22 Activity alive
2018-06-21 16:12:49 CommandAccepted yes
2018-06-21 15:48:17 D-firmware 1.3
2018-06-21 15:48:17 D-serialNr OEQ1670151
2018-06-21 16:00:38 PairedTo 0x272E57
2018-06-21 15:48:23 R-burstRx on
2018-06-21 15:48:23 R-cyclicInfoMsg on
2018-06-21 15:48:23 R-cyclicInfoMsgDis 0
2018-06-21 15:48:23 R-pairCentral 0x272E57
2018-06-21 16:00:38 RegL_00. 01:01 02:01 09:01 0A:27 0B:2E 0C:57 0F:00 11:00 12:16 16:01 18:00 19:00 1A:00 00:00
2018-06-21 16:13:54 RegL_07.
2018-06-21 16:18:41 battery ok
2018-06-21 16:18:41 batteryLevel 3.5
2018-06-21 16:18:41 desired-temp 17.0
2018-06-21 16:18:41 measured-temp 25.2
2018-06-21 16:12:50 state CMDs_done
2018-06-21 15:48:38 time-request -
helper:
HM_CMDNR 21
PONtest 1
cSnd 01272E57645EE00603,01272E57645EE006040000000001
mId 00AD
regLst ,0,1
rxType 6
supp_Pair_Rep 0
ack:
expert:
def 1
det 0
raw 1
tpl 0
io:
newChn +645EE0,00,01,00
nextSend 1529590731.95826
prefIO
rxt 0
vccu
p:
645EE0
00
01
00
mRssi:
mNo 15
io:
HMLGW:
-71
-71
HMLGW_2:
-53
-53
HMLGW_3:
-65
-65
prt:
awake 0
bErr 0
sProc 0
rspWait:
q:
qReqConf
qReqStat
role:
dev 1
rssi:
at_HMLGW:
avg -69.7087378640776
cnt 309
lst -73
max -62
min -84
at_HMLGW_2:
avg -66.7361563517916
cnt 307
lst -53
max -52
min -88
at_HMLGW_3:
avg -64.1468750000001
cnt 320
lst -65
max -63
min -76
shRegW:
07 02
shadowReg:
tmpl:
Attributes:
IODev HMLGW
IOgrp vccu:HMLGW
actCycle 000:10
actStatus alive
autoReadReg 4_reqStatus
expert 2_raw
firmware 1.3
model HM-TC-IT-WM-W-EU
msgRepeat 1
room CUL_HM
serialNr OEQ1670151
subType thermostat
webCmd getConfig:clear msgEvents
Das alte Thermostat ist vorhanden und läuft. Ich will es nur austauschen, da ich nach einem Batteriewechsel das Wandthermostat immer neu einrichten muss.
du hast den namen vom neuen device im befehl falsch geschrieben.
Zitatset hm x-deviceReplace Az.Wandthermostat HM_645E00
Großes Danke! Ich glaub' ich muss mal wieder zum Augenarzt ;)
LG
Holger
So, Kommando jetzt richtig geschrieben. Ich bekomme aber folgende Meldungen nach dem 2. Aufruf:
2018.06.22 10:19:08 3: Rename: 1) rename
2018.06.22 10:19:08 3: Rename: Az.Wandthermostat - channel_01: rename Az.Wandthermostat_Weather old-Az.Wandthermostat_Weather
2018.06.22 10:19:08 3: Rename: Az.Wandthermostat - channel_02: rename Az.Wandthermostat_Climate old-Az.Wandthermostat_Climate
2018.06.22 10:19:08 3: Rename: Az.Wandthermostat - channel_03: rename Az.Wandthermostat_WindowRec old-Az.Wandthermostat_WindowRec
2018.06.22 10:19:08 3: Rename: Az.Wandthermostat - channel_06: rename Az.Wandthermostat_remote old-Az.Wandthermostat_remote
2018.06.22 10:19:08 3: Rename: Az.Wandthermostat - channel_07: rename Az.Wandthermostat_SwitchTr old-Az.Wandthermostat_SwitchTr
2018.06.22 10:19:08 3: Rename: Az.Wandthermostat - dev: rename Az.Wandthermostat old-Az.Wandthermostat
2018.06.22 10:19:08 3: Rename: HM_645EE0 - channel_01: HM_645EE0_Weather Az.Wandthermostat_Weather
2018.06.22 10:19:08 3: Rename: HM_645EE0 - channel_02: HM_645EE0_Climate Az.Wandthermostat_Climate
2018.06.22 10:19:08 3: Rename: HM_645EE0 - channel_03: HM_645EE0_WindowRec Az.Wandthermostat_WindowRec
2018.06.22 10:19:08 3: Rename: HM_645EE0 - channel_06: HM_645EE0_remote Az.Wandthermostat_remote
2018.06.22 10:19:08 3: Rename: HM_645EE0 - channel_07: HM_645EE0_SwitchTr Az.Wandthermostat_SwitchTr
2018.06.22 10:19:08 3: Rename: HM_645EE0 - dev: HM_645EE0 Az.Wandthermostat
2018.06.22 10:19:08 3: Rename: 2) copy peers from old to new
2018.06.22 10:19:08 3: Rename: 3) copy registerlist from old to new
2018.06.22 10:19:08 3: Rename: 4) copy templates from old to new
2018.06.22 10:19:08 3: Rename: 5) for peer devices: remove ols peers
2018.06.22 10:19:08 3: Rename: 5a) add new peering
2018.06.22 10:19:08 3: Rename: 5b) apply reglist for new peer
2018.06.22 10:19:08 3: Rename: 5c) remove old peering
2018.06.22 10:19:08 3: Rename: 5d) update peer templates
2018.06.22 10:19:08 1: Error: >old-Az.Wandthermostat< has no TYPE, but following keys: >READINGS,helper<
2018.06.22 10:19:08 1: Error: >old-Az.Wandthermostat_Climate< has no TYPE, but following keys: >READINGS,helper<
2018.06.22 10:19:08 1: Error: >old-Az.Wandthermostat_SwitchTr< has no TYPE, but following keys: >READINGS,helper<
2018.06.22 10:19:08 1: Error: >old-Az.Wandthermostat_Weather< has no TYPE, but following keys: >READINGS,helper<
2018.06.22 10:19:08 1: Error: >old-Az.Wandthermostat_WindowRec< has no TYPE, but following keys: >READINGS,helper<
2018.06.22 10:19:08 1: Error: >old-Az.Wandthermostat_remote< has no TYPE, but following keys: >READINGS,helper<
Beim Device Az.Wandthermostat und den dazugehörigen Kanälen ist der TYPE CUL_HM vorhanden. Obwohl ein rename auf old-Az.Wandthermostat angestoßen wird (davon gehe ich aufgrund der Fehlermeldung aus) erfolgt keine Umbenennung.
Danach habe ich zum Testen einfach mal die 1. Anweisung
rename Az.Wandthermostat_Weather old-Az.Wandthermostat_Weather
zu Fuß eingegeben und bekomme dabei folgende Fehlermeldung:
Invalid characters in name (not A-Za-z0-9._): old-Az.Wandthermostat_Weather
Der "-" (Bindestrich) im Namen ist nach meinem Kenntnisstand unzulässig.
Ich musste heute einen defekten Switch austauschen und wollte das Tool mal ausprobieren. Bin an der gleichen Stelle gescheitert wie Omega und gehe davon aus, dass Omega's Schlßfolgerung korrekt ist.
Jedenfalls erfolgt keine Umbenennung und so habe ich es doch wieder per Hand gemacht. In dem Fall war ein einfach.
Vllt. kannst du nochmal nachbessern Martin, finde das Hilfsmittel sehr nützlich , danke für deine Arbeit !
LG
Heiko
Danke, werde es reparieren.
solle jetzt klappen
Ich habe gestern einen defekten Außentemperatursensor getauscht. Hat super geklappt. Alle Register perfekt übernommen, Device umbenannt - läuft. Attribute wie Group, Room oder Icon wurden nicht übernommen. Ist wohl auch laut Beschreibung nicht beabsichtigt. Insgesamt Tolle Sache!
Vielen Dank für die Arbeit.
Gruß
Andi
Hi,
ich wollte ein HM-CC-RT-DN jetzt mit set hm x-deviceReplace <oldDev> <newDev>
tauschen und habe dazu das neue device erst mit fhem gepairt und das getconfig durchgeführt, nachdem alle daten da waren habe ich dann ein set hm x-deviceReplace Gaeste_WC HM_71374E
durchgeführt und nach der anzeieg was alles durchgeführt wird das kommando nochmal abgesetzt, dabei stürzt fhem dann aber ab.
Im Log hab ich dann jede menge dieser Meldungen
2020.10.24 14:37:18.991 1: PERL WARNING: Use of uninitialized value in hash element at ./FHEM/98_HMinfo.pm line 2528.
2020.10.24 14:37:18.991 1: stacktrace:
2020.10.24 14:37:18.992 1: main::__ANON__ called by ./FHEM/98_HMinfo.pm (2528)
2020.10.24 14:37:18.992 1: main::HMinfo_deviceReplace called by ./FHEM/98_HMinfo.pm (1910)
2020.10.24 14:37:18.993 1: main::HMinfo_SetFn called by fhem.pl (3812)
2020.10.24 14:37:18.993 1: main::CallFn called by ./FHEM/98_freezemon.pm (1235)
2020.10.24 14:37:18.993 1: main::freezemon_callFn called by ./FHEM/98_freezemon.pm (1348)
2020.10.24 14:37:18.994 1: main::__ANON__ called by fhem.pl (1923)
2020.10.24 14:37:18.994 1: main::DoSet called by fhem.pl (1955)
2020.10.24 14:37:18.995 1: main::CommandSet called by fhem.pl (1255)
2020.10.24 14:37:18.995 1: main::AnalyzeCommand called by ./FHEM/98_freezemon.pm (1256)
2020.10.24 14:37:18.996 1: main::freezemon_AnalyzeCommand called by ./FHEM/98_freezemon.pm (1366)
2020.10.24 14:37:18.996 1: main::__ANON__ called by fhem.pl (1106)
2020.10.24 14:37:18.996 1: main::AnalyzeCommandChain called by ./FHEM/01_FHEMWEB.pm (2717)
2020.10.24 14:37:18.997 1: main::FW_fC called by ./FHEM/01_FHEMWEB.pm (984)
2020.10.24 14:37:18.997 1: main::FW_answerCall called by ./FHEM/01_FHEMWEB.pm (592)
2020.10.24 14:37:18.998 1: main::FW_Read called by fhem.pl (3812)
2020.10.24 14:37:18.998 1: main::CallFn called by ./FHEM/98_freezemon.pm (1235)
2020.10.24 14:37:18.998 1: main::freezemon_callFn called by ./FHEM/98_freezemon.pm (1348)
2020.10.24 14:37:18.999 1: main::__ANON__ called by fhem.pl (763)
war ein coding fehler. Ist korrigiert.
Bitte rückmendung, wenn den klappt, wie es gelaufen ist, was verbessert werden könnte.
Hi,
erstmal vielen Dank fürs schnelle korrigieren, allerdings bekomme ich jetzt nach dem Update und dem erneuten Versuch diese Meldung
new channel channel_02:HM_71374E_Climate already has peers: 00000000,
anscheint hat beim ersten mal irgendwas funktioniert....
Heißt dann wohl das ich es doch händisch machen muss....