HmIP-SWSD Rauchmelder - doppelte Datenpunkte im Rading

Begonnen von Rewe2000, 12 Februar 2017, 11:02:29

Vorheriges Thema - Nächstes Thema

Rewe2000

Hallo,

beobachte seltsame Einträge im Reading der HmIP-SWSD Rauchmelder.

Lege ich den Rauchmelder neu in FHEM an, so wird im Reading nach "get update", unter anderen Einträgen folgendes angezeigt:

1.SMOKE_DETECTOR_ALARM_STAT ...
1.SMOKE_DETECTOR_TEST_RESUL ...


Nach einigen Stunden wird das Reading um 2 weitere Einträge ergänzt:

1.SMOKE_DETECTOR_ALARM_STAT ...
1.SMOKE_DETECTOR_ALARM_STATUS ...
1.SMOKE_DETECTOR_TEST_RESUL ...
1.SMOKE_DETECTOR_TEST_RESULT ...


Werden hier bei der Anlage einfach die letzten Buchstaben verschluckt?
Liegt das Problem an der CCU2 oder bei Fhem?
Hineis:
Die verkürzten Readings kommen nur, wenn der Befehl "get update" abgesetzt wird, lege ich das Gerät neu in FHEM an und führe "get update" nicht aus, so stehen nach ein paar Stunden die korrekten Datenpunkte im Reading.

Blöd ist nur, solange der korrekte Befehl im Reading von Fhem nicht aftaucht, kann dieser auch unter "set datapoint" im Dropdownfeld auch nicht korrekt ausgewählt werden.

Ist nichts dramatisches, aber irgendwie irritieren die Readings.

Gruß Reinhard
Fhem 6.3 auf Raspberry Pi4 SSD mit Raspbian Bookworm, Homematic, Homematic IP, CCU3 mit RapberryMatic, WAGO 750-880, E3DC S10E Hauskraftwerk, E3DC Wallbox, my-PV AC ELWA-E Heizstab, Fritz!Box 7590, KIA Bluelinky

zap

Ich schließe einen Fehler in HMCCU nicht aus. Was wird angezeigt, wenn Du statt "get update" ein "get deviceinfo" ausführst?

Mach auch bitte mal ein list für das Device, damit ich sehen kann, wie es definiert ist.
2xCCU3 mit ca. 100 Aktoren, Sensoren
Entwicklung: FHEM auf Proxmox Debian VM
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: HMCCU, (Fully, AndroidDB)

Rewe2000

Hallo zap,

auch bei Deviceinfo stehen die verkürzten Readings in der Ausgabe:

CHN 000A55699D5E60:0 EG_RM1_Wohnzimmer:0
  DPT {b} HmIP-RF.000A55699D5E60:0.CONFIG_PENDING = false [RE]
  DPT {b} HmIP-RF.000A55699D5E60:0.DUTY_CYCLE = false [RE]
  DPT {b} HmIP-RF.000A55699D5E60:0.LOW_BAT = false [RE]
  DPT {n} HmIP-RF.000A55699D5E60:0.RSSI_DEVICE = 192 [RE]
  DPT {n} HmIP-RF.000A55699D5E60:0.RSSI_PEER = 0 [RE]
  DPT {n} HmIP-RF.000A55699D5E60:0.TIME_OF_OPERATION = 192 [RE]
  DPT {b} HmIP-RF.000A55699D5E60:0.UNREACH = false [RE]
  DPT {b} HmIP-RF.000A55699D5E60:0.UPDATE_PENDING = false [RE]
CHN 000A55699D5E60:1 HmIP-SWSD 000A55699D5E60:1
  DPT {i} HmIP-RF.000A55699D5E60:1.ERROR_CODE = 0 [RE]
  DPT {i} HmIP-RF.000A55699D5E60:1.SMOKE_DETECTOR_ALARM_STAT = 0 [RE]
  DPT {i} HmIP-RF.000A55699D5E60:1.SMOKE_DETECTOR_COMMAND =  [W]
  DPT {i} HmIP-RF.000A55699D5E60:1.SMOKE_DETECTOR_TEST_RESUL = 0 [RE]


Hier das Listing des Device:
Die Readings 1.SMOKE_DETECTOR_.. sind hier in voller Länge enthalten, da ich mit "set clear" die Readings gelöscht habe. Nach einigen Stunden werden diese wie in diesem Listing neu (unverkürzt) angelegt. Lösche ich das Reading nicht, welches ich mit "get update" erzeugt habe, stehen die einträge 1.SMOKE_DETECTOR_.. doppelt im Reading (siehe meinen ersten Beitrag).

defmod HM_EG_RM1_Wohnzimmer HMCCUDEV 000A55699D5E60
attr HM_EG_RM1_Wohnzimmer DbLogExclude .*
attr HM_EG_RM1_Wohnzimmer IODev CCU2
attr HM_EG_RM1_Wohnzimmer event-on-change-reading .*
attr HM_EG_RM1_Wohnzimmer group Sicherheit
attr HM_EG_RM1_Wohnzimmer icon secur_smoke_detector
attr HM_EG_RM1_Wohnzimmer room EG_Wohnzimmer,Homematic
attr HM_EG_RM1_Wohnzimmer statedatapoint 1.SMOKE_DETECTOR_COMMAND
attr HM_EG_RM1_Wohnzimmer statevals on:2,off:1
attr HM_EG_RM1_Wohnzimmer userReadings Batteriezustand {\
return "00" if(ReadingsVal($name,"0.LOW_BAT","0") gt "0" );;;; \
return "100" },\
Devicename {return 'EG Wohnzimmer - Rauchmelder 1' },\
Batteriespannung { return '0' },\
Batterie_leer { ReadingsVal($name,"0.LOW_BAT","");; }

setstate HM_EG_RM1_Wohnzimmer 2017-02-13 13:52:25 0.DUTY_CYCLE 0
setstate HM_EG_RM1_Wohnzimmer 2017-02-13 13:52:25 0.LOW_BAT 0
setstate HM_EG_RM1_Wohnzimmer 2017-02-13 13:52:25 0.RSSI_DEVICE -64
setstate HM_EG_RM1_Wohnzimmer 2017-02-13 13:52:25 0.TIME_OF_OPERATION 192
setstate HM_EG_RM1_Wohnzimmer 2017-02-13 13:52:25 0.UNREACH 0
setstate HM_EG_RM1_Wohnzimmer 2017-02-13 13:52:25 1.ERROR_CODE 0
setstate HM_EG_RM1_Wohnzimmer 2017-02-13 13:52:25 1.SMOKE_DETECTOR_ALARM_STATUS 0
setstate HM_EG_RM1_Wohnzimmer 2017-02-13 13:52:25 1.SMOKE_DETECTOR_TEST_RESULT 0
setstate HM_EG_RM1_Wohnzimmer 2017-02-13 13:52:25 Batterie_leer 0
setstate HM_EG_RM1_Wohnzimmer 2017-02-13 13:52:25 Batteriespannung 0
setstate HM_EG_RM1_Wohnzimmer 2017-02-13 13:52:25 Batteriezustand 100
setstate HM_EG_RM1_Wohnzimmer 2017-02-13 13:52:25 Devicename EG Wohnzimmer - Rauchmelder 1
setstate HM_EG_RM1_Wohnzimmer 2017-02-13 13:52:25 hmstate Initialized
setstate HM_EG_RM1_Wohnzimmer 2017-02-12 11:21:32 state Initialized


Auch vermisse ich das Reading "1.SMOKE_DETECTOR_COMMAND" ich bekomme dieses nicht angezeigt, auch eine Programmierung in der CCU2 bringt hier überhaupt nichts. Die Funktion über "set HM_EG_RM1_Wohnzimmer datapoint 1.SMOKE_DETECTOR_COMMAND 2" wird jedoch korrekt (blind) ausgeführt.
Gibt es danoch einen Kniff auf welchen ich bisher noch nicht gekommen bin?

Gruß Reinhard
Fhem 6.3 auf Raspberry Pi4 SSD mit Raspbian Bookworm, Homematic, Homematic IP, CCU3 mit RapberryMatic, WAGO 750-880, E3DC S10E Hauskraftwerk, E3DC Wallbox, my-PV AC ELWA-E Heizstab, Fritz!Box 7590, KIA Bluelinky

zap

#3
Bei SMOKE_DETECTOR_COMMAND musst Du die Flags bei der Ausgabe von "get deviceinfo" beachten:


DPT {i} HmIP-RF.000A55699D5E60:1.SMOKE_DETECTOR_ALARM_STAT = 0 [RE]
DPT {i} HmIP-RF.000A55699D5E60:1.SMOKE_DETECTOR_COMMAND =  [W]
DPT {i} HmIP-RF.000A55699D5E60:1.SMOKE_DETECTOR_TEST_RESUL = 0 [RE]


Das [W] steht für Write. Soll heißen: Dieser Datenpunkt ist nur beschreibbar. R = Read: Dieser Datenpunkt kann gelesen werden. Und  E=Event: Diese Datenpunkte werden automatisch aktualisiert.
Daher wird es für [W] only Datenpunkte niemals Readings geben.

Insofern würde ich Dir raten, folgende Attribute zu setzen:

statedatapoint 1.SMOKE_DETECTOR_ALARM_STATUS
eventMap /datapoint 1.SMOKE_DETECTOR_COMMAND 1:off/datapoint 1.SMOKE_DETECTOR_COMMAND 2:on/

Dann kannst Du statt "set datapoint 1.SMOKE_DETECTOR_COMMAND xxx" auch "set on" oder "set off" verwenden.

Bzgl. der verkürzten Namen: Es gibt einen wesentlichen Unterschied zwischen "get update/get deviceinfo" und der automatischen Aktualisierung: Bei den get Befehlen wird HomeMatic Script verwendet, d.h. die Logikebene der CCU2. Bei der automatischen Aktualisierung hingegen die RPC-Ebene. Möglicherweise ist die Länge der Datenpunktnamen bei der Logikebene auf 25 Zeichen begrenzt. Muss mal suchen, ob das so ist.

2xCCU3 mit ca. 100 Aktoren, Sensoren
Entwicklung: FHEM auf Proxmox Debian VM
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: HMCCU, (Fully, AndroidDB)