HMCCU Beispiel Geräte-Definitionen

Begonnen von zap, 25 März 2016, 16:08:13

Vorheriges Thema - Nächstes Thema

DerTom

Moin,

hat schon mel einer einen HM-OU-CFM-TW angebunden und kann ein Beispiel geben?

Gruß

zap

#76
Dantenpunkte sind hier beschrieben:

http://www.eq-3.de/Downloads/eq3/download%20bereich/hm_web_ui_doku/hm_devices_Endkunden.pdf

Einfach nach dem Typ suchen. Leider habe ich keine Infos, was man in den Datenpunk SUBMIT schreiben muss, damit was passiert.

Ich glaube, Du kannst die Angaben aus der CCU bei den Geräteeinstellungen einfach an den DP SUBMIT schicken, also z.B.

set mygong datapoint 1.SUBMIT Angaben

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

zentis666

Hallo!

Ich bin gerade dabei testweise einige Geräte auf HMCCU umzuziehen
Ich hab bereits erfolgreich ein Wandthermostat und ein Heizkörperthermostat eingebunden was gut funktioniert hat.

Nun hänge gerade an der virtuellen Gruppe.
Zitat von: zap am 25 März 2016, 16:08:13

Virtuelle Gerätegruppe aus Wand- und Heizkörper-Thermostat


# Der RPC-Server aktualisiert keine Gruppen-Devices. Daher werden hier die Datenpunkte der echten Devices auf die der Gruppendevices gemappt
attr HM_G_AZ_HZ mapdatapoints KL-AZ-TH:2.SET_TEMPERATURE=G-AZ-HZ:1.SET_TEMPERATURE,KL-AZ-TH:2.CONTROL_MODE=G-AZ-HZ:1.CONTROL_MODE


Bei mir gibt es kein Attribut mapdatapoints,
per "get defaults"  bekomme ich nur:
eventMap = /datapoint 1.MANU_MODE 20.0:Manu/datapoint 1.AUTO_MODE 1:Auto/datapoint 1.BOOST_MODE 1:Boost/datapoint 1.MANU_MODE 4.5:off/datapoint 1.MANU_MODE 30.5:on/
cmdIcon = Auto:sani_heating_automatic Manu:sani_heating_manual Boost:sani_heating_boost on:general_an off:general_aus
substexcl = control
stripnumber = 1
controldatapoint = 1.SET_TEMPERATURE
substitute = LOWBAT!(0|false):no,(1|true):yes;CONTROL_MODE!0:AUTO,1:MANU,2:PARTY,3:BOOST;WINDOW_OPEN_REPORTING!(true|1):open,(false|0):closed;SET_TEMPERATURE!#0-4.5:off,#30.5-40:on
widgetOverride = control:slider,3.5,0.5,30.5,1
ccureadingfilter = (^SET_TEMPERATURE|^TEMPERATURE|^HUMIDITY|LOWBAT$|^VALVE|^CONTROL|^WINDOW_OPEN)
webCmd = control:Auto:Manu:Boost:on:off
statedatapoint = 1.SET_TEMPERATURE


Mein Device sieht so aus:
DeviceOverview
Internals
CFGFN
DEF G_HZ_2OG_AZ group=HM-CC-RT-DN_MEQ1579352,HM-TC-IT-WM-W-EU_2OG_AZ
IODev hm_ccu
NAME HM_G_2OG_AZ_HZ
NR 7608
STATE Initialized
TYPE HMCCUDEV
ccuaddr INT0000001
ccudevstate Active
ccugroup MEQ1579352,NEQ0938382
ccuif VirtualDevices
ccuname G_HZ_2OG_AZ
ccutype HM-CC-VG-1
channels 3
statevals devstate


Hab ich irgendwo nen Fehler oder wie bekomme ich das attrib?

Danke und Gruß
Sven
--
FHEM auf Debian VM - ESXi 6.0 Intel Nuc i5 4th Gen, Homematic auf HMCCU - RaspberryMatic auf Raspberry PI 3,
EM1000 & FS20 über CUNO,  IT über Arduino Firmata, MiLight über WLAN-nRF Gateway, Ebus, 1Wire, diverse Squeezeboxen, Dreambox 920UHD, Homebridge

zap

Da hast Du eine alte Doku erwischt. Das Attribut mapdatapoint gibt es nicht mehr, da der RPC-Server mittlerweile auch die Datenpunkte von Gruppen aktualisieren kann. Dazu ergänzt Du einfach beim I/O Device das Attribut rpcport um den Wert 9292 und startest den RPC-Server neu.
2xCCU3 mit ca. 100 Aktoren, Sensoren
Entwicklung: FHEM auf Proxmox Debian VM
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: HMCCU, (Fully, AndroidDB)

SFAB

Ich habe mir eine CCU2 und eine HM-PBI-4-FM Funk-Tasterschnittstelle 4fach gekauft und mittels HMCCU eingebunden:
Internals:
   CFGFN
   DEF        NEQ... readonly defaults
   IODev      myCCU
   NAME       EZ_Vierfachtaster
   NR         683
   STATE      Initialized
   TYPE       HMCCUDEV
   ccuaddr    NEQ...
   ccudevstate Active
   ccuif      BidCos-RF
   ccuname    HM-PBI-4-FM NEQ...
   ccutype    HM-PBI-4-FM
   channels   5
   statevals  readonly
   Readings:
     2016-12-10 21:28:24   HM-PBI-4-FM_NEQ....0.CONFIG_PENDING 0
     2016-12-10 22:12:13   HM_Taster_01.INSTALL_TEST 1
     2016-12-10 21:25:54   HM_Taster_01.PRESS_CONT 1
     2016-12-10 21:25:54   HM_Taster_01.PRESS_LONG 1
     2016-12-10 22:12:13   HM_Taster_01.PRESS_SHORT 1
     2016-12-10 22:12:03   HM_Taster_02.INSTALL_TEST 1
     2016-12-10 22:12:03   HM_Taster_02.PRESS_SHORT 1
     2016-12-10 22:09:18   HM_Taster_03.INSTALL_TEST 1
     2016-12-10 22:09:18   HM_Taster_03.PRESS_SHORT 1
     2016-12-10 22:09:33   HM_Taster_04.INSTALL_TEST 1
     2016-12-10 22:09:33   HM_Taster_04.PRESS_CONT 1
     2016-12-10 22:09:28   HM_Taster_04.PRESS_LONG 1
     2016-12-10 21:28:54   HM_Taster_04.PRESS_SHORT 1
     2016-12-10 20:59:33   state           Initialized
Attributes:
   IODev      myCCU
   room       Homematic


Allerdings bekomme ich es nicht hin ein funktionierendes DOIF zu erstellen, sodass die einzelnen Tasten Lampen ein- bzw. ausschalten.

([HM_Taster_01] =~ "SHORT") (set AZ_Deckenleuchte on) DOELSEIF ([HM_Taster_02] =~ "SHORT") (set AZ_Deckenleuchte off)
führt nicht zum gewünschten Ergebnis.

Wo liegt mein Fehler? Ich schätze, dass meine Adressierung im DOIF falsch ist, also der Teil "[HM_Taster_01] =~ "SHORT"", aber ich verstehe leider nicht, wie es richtig heißen müsste.

Kann mir bitte jemand auf die Sprünge helfen? Vielen Dank! :)
Raspberry Pi 3
CUL v3 433 (Intertechno/Smartwares)
Jeelink v3 868 (LaCrosse)
Homematic CCU2
Philips Hue Bridge v2

Yil

Vielleicht ist Dir das eine Hilfe. Ich habe einen HM-PB-2-WM55-2 (2 Schalter) mit folgender Definition:

Internals:
   DEF        <sn> 1
   IODev      HMCCU2
   NAME       EG.LichtSchalter
   NR         1219
   STATE      Initialized
   TYPE       HMCCUDEV
   ccuaddr    MEQ1847634
   ccudevstate Active
   ccuif      BidCos-RF
   ccuname    EG.LichtSchalter
   ccutype    HM-PB-2-WM55-2
   channels   3
   statevals  devstate|on|off
   Readings:
     2016-12-11 14:29:19   0.LOWBAT        no
     2016-12-11 14:41:45   1.PRESS_LONG    on
     2016-12-11 14:41:46   1.PRESS_LONG_RELEASE on
     2016-12-11 14:35:28   1.PRESS_SHORT   on
     2016-12-11 14:36:57   2.PRESS_LONG    on
     2016-12-11 14:36:58   2.PRESS_LONG_RELEASE on
     2016-12-11 14:35:31   2.PRESS_SHORT   on
     2016-12-10 11:39:52   state           Initialized
Attributes:
   IODev      HMCCU2
   ccureadingfilter (LOWBAT|PRESS_SHORT|PRESS_LONG)
   ccureadingformat datapoint
   devStateIcon .*:refresh
   devStateStyle style="text-align:right;"
   event-on-update-reading .*
   group      Schalter
   icon       taster
   room       Device,Esszimmer
   statechannel 1
   statevals  on:true,off:false
   substitute LOWBAT!(0|false):no,(1|true):yes;true:on,false:off,1:on,0:off
   webCmd     :


Schau Dir mal die Attribute an - die vereinfachen einiges. Zum Schalten habe ich mir verschiedene notify gebaut, die auf die Schaltzustände reagieren und abfragen, ob sie on oder off sind (vgl. Einstellungen bei attr substitute).

Das notify sieht dann so aus:

define Schalter.A.Short notify EG.LichtSchalter.1.PRESS_SHORT:.*|EG.LichtSchalter.1.PRESS_LONG:.* <Befehl>

Das Pipezeichen kopmbiniert die Abfrage für kurzen und langen Tastendruck. In einem DOIF müsste das dann etwa so aussehen:

define DOIF_Schalter DOIF ([EG.LichtSchalter.1.PRESS_SHORT:.*] eq 'on') (<Befehl>) ... usw
HM CCU3 und HCU mit ca. 50 HM-Komponenten inkl. Bausätzen
fhem auf RPi mit Sonos, EnOcean-CUL, ZWAVE-CUL und Bluetooth,
HUE, UniFi

SFAB

Vielen Dank für Deine Hilfestellung!

Ich habe einige der Attribute übernommen und den Taster umbenannt (EZ_Taster statt EZ_Vierfachtaster):
Internals:
   DEF        SN defaults
   IODev      myCCU
   NAME       EZ_Taster
   NR         96
   STATE      Initialized
   TYPE       HMCCUDEV
   ccuaddr    SN
   ccudevstate Active
   ccuif      BidCos-RF
   ccuname    HM-PBI-4-FM SN
   ccutype    HM-PBI-4-FM
   channels   5
   statevals  devstate|on|off
   Readings:
     2016-12-11 17:23:47   1.PRESS_SHORT   on
     2016-12-11 17:22:57   2.PRESS_SHORT   on
     2016-12-11 17:07:20   3.PRESS_SHORT   on
     2016-12-11 16:54:33   4.PRESS_SHORT   1
Attributes:
   IODev      myCCU
   ccureadingfilter (LOWBAT|PRESS_SHORT|PRESS_LONG)
   ccureadingformat datapoint
   event-on-update-reading .*
   icon       taster
   room       Homematic
   statechannel 1
   statevals  on:true,off:false
   substitute LOWBAT!(0|false):no,(1|true):yes;true:on,false:off,1:on,0:off


Damit funktioniert folgendes Notify:
EZ_Taster.2.PRESS_SHORT:.* set AZ_Deckenleuchte off
:D

Das entsprechende DOIF funktioniert allerdings nicht:
([EZ_Taster.1.PRESS_SHORT:.*] eq "on") (set AZ_Deckenleuchte on) DOELSEIF ([EZ_Taster.2.PRESS_SHORT:.*] eq "on") (set AZ_Deckenleuchte off)

Außerdem ist mir die Funktion des Attributs "statechannel 1" nicht klar. Welchen Channel lege ich hier wofür fest? Das Device hat ja insgesamt 5 Channels, von denen 4 (1 bis 4) den Tastern entsprechen.

Noch eine Idee, wie ich das DOIF zum Laufen bekomme?
Raspberry Pi 3
CUL v3 433 (Intertechno/Smartwares)
Jeelink v3 868 (LaCrosse)
Homematic CCU2
Philips Hue Bridge v2

zap

Das Attribut statechannel gibt es noch, ist aber veraltet. Stattdessen sollte man das Attribut statedatapoint verwenden. Bei HMCCUCHN Devices enthät das nur den Namen des Datenpunktes, der in STATE übernommen werden soll. Bei HMCCUDEV Devices entsprechend die Kanalnummer UND den Datenpunktnamen durch einen Punkt getrennt (z.B. 1.STATE).

Bei den Mehrfachtastern ist das Problem, dass sie mehrere gleichberechtigte Kanäle haben, die alle einen Datenpunkt STATE oder entsprechend PRESS_SHORT oder PRESS_LONG haben. Ich würde daher empfehlen, bei diesen Teilen für jeden Schalt-/Tastkanal ein separates HMCCUCHN Device in FHEM zu definieren. Damit hast Du die einzelnen Kanäle klar voneinander getrennt.

Das löst aber nicht unbedingt Dein Problem, dass DOIF nicht funktioniert während Notify geht. Ich persönlich lasse die Finger von DOIF. Hat bei mir schon zu viele graue Haare verursacht ;-)
2xCCU3 mit ca. 100 Aktoren, Sensoren
Entwicklung: FHEM auf Proxmox Debian VM
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: HMCCU, (Fully, AndroidDB)

SFAB

Vielen Dank für die Erklärung!

In etwa so hatte statechannel/statedatapoint verstanden, ich wusste nur eben bei dem besagten Mehrfachtaster nichts damit anzufangen. Dann werde ich vermutlich noch auf HMCCUCHN-Definitionen umsatteln.

Das DOIF-Problem hat sicher noch etwas mit der Syntax des Devices zu tun, also dem "([EZ_Taster.1.PRESS_SHORT:.*] eq "on")". Ich weiß nur nicht, was ich noch ausprobieren könnte.

Mein größeres Problem ist gerade, dass der Mehrfachtaster anscheinend nicht in die vorgesehen UP-Dose passt, da die Verkabelung dort schon zu viel Platz wegnimmt...
Raspberry Pi 3
CUL v3 433 (Intertechno/Smartwares)
Jeelink v3 868 (LaCrosse)
Homematic CCU2
Philips Hue Bridge v2

zentis666

Hallo!
Ich hänge an der Definition meiner HM-CC-TC Funk-Wandthermostate.
Die Temperatur / Feuchte sowie Dewpoint bekomme ich angezeigt,
setzen / lesen der Soll-Temperatur funktioniert noch nicht richtig.
Kann ich statechannel und statedatapoint verwenden oder nur eins?
Meine Definiton sieht momentan so aus:

Internals:
CFGFN
CHANGED
DEF HM-CC-TC_Bad
IODev hm_ccu
NAME HM_HZ_1OG_W_TC
NR 867
STATE T: 20.8° H: 69% D: 19.000000° P: 14.9°
TYPE HMCCUDEV
ccuaddr JEQ0726089
ccudevstate Active
ccuif BidCos-RF
ccuname HM-CC-TC_Bad
ccutype HM-CC-TC
channels 4
statevals devstate

Readings
DEWPOINT 14.8
HM-CC-TC_Bad.0.CONFIG_PENDING false
HM-CC-TC_Bad.0.LOWBAT no
HM-CC-TC_Bad.0.RSSI_DEVICE 1
HM-CC-TC_Bad.0.RSSI_PEER 188
HM-CC-TC_Bad.0.STICKY_UNREACH false
HM-CC-TC_Bad.0.UNREACH false
HM-CC-TC_Bad.1.HUMIDITY 69
HM-CC-TC_Bad.1.TEMPERATURE 20.7
HM-CC-TC_Bad.2.ADJUSTING_COMMAND 0
HM-CC-TC_Bad.2.ADJUSTING_DATA 0
HM-CC-TC_Bad.2.SETPOINT 19.000000
R-HM-CC-TC_Bad.BUTTON_LOCK 0
R-HM-CC-TC_Bad.DISPLAY_BACKLIGHT_MODE 0
R-HM-CC-TC_Bad.DISPLAY_BACKLIGHT_TIME 0
state Initialized

Attributes:
IODev hm_ccu
ccureadingfilter (^HUMIDITY|^TEMPERATURE|^DEWPOINT|^SET_TEMPERATURE|^LOWBAT$|^WINDOW_OPEN)
controldatapoint 2.SETPOINT
devStateIcon OK:10px-kreis-gruen Error:10px-kreis-rot Initialized:10px-kreis-gelb
event-on-change-reading .*
room 1.30:Bad,Homematic
stateFormat T: HM-CC-TC_Bad.1.TEMPERATURE° H: HM-CC-TC_Bad.1.HUMIDITY% D: HM-CC-TC_Bad.2.SETPOINT° P: DEWPOINT°
statechannel 2
stripnumber 1
substitute LOWBAT!(0|false):no,(1|true):yes;;WINDOW_OPEN_REPORTING!(true|1):open,(false|0):closed
userReadings DEWPOINT {HMCCU_Dewpoint($name,"HM-CC-TC_Bad.1.TEMPERATURE", "HM-CC-TC_Bad.1.HUMIDITY","n/a")}
webCmd control
widgetOverride control:slider,10,1,25


Gruß
Sven
--
FHEM auf Debian VM - ESXi 6.0 Intel Nuc i5 4th Gen, Homematic auf HMCCU - RaspberryMatic auf Raspberry PI 3,
EM1000 & FS20 über CUNO,  IT über Arduino Firmata, MiLight über WLAN-nRF Gateway, Ebus, 1Wire, diverse Squeezeboxen, Dreambox 920UHD, Homebridge

Yil

So lautet meine Definition, die bei mir funktioniert:

Internals:
   CHANGED
   DEF        <sn>
   IODev      HMCCU2
   NAME       EZ.Wandthermostat
   NR         1160
   STATE      T: 20.1° H: 43% T: 20.0° D: 7.1°
   TYPE       HMCCUDEV
   ccuaddr    NEQ0071936
   ccudevstate Active
   ccuif      BidCos-RF
   ccuname    EZ.Wandthermostat
   ccutype    HM-TC-IT-WM-W-EU
   channels   6
   statevals  devstate
   Readings:
     2016-12-11 14:29:22   0.LOWBAT        no
     2016-12-11 14:29:22   0.UNREACH       no
     2016-12-11 23:48:56   1.HUMIDITY      43
     2016-12-11 23:48:56   1.TEMPERATURE   20.1
     2016-12-11 23:48:36   2.SET_TEMPERATURE 20.0
     2016-12-11 23:40:29   2.WINDOW_OPEN_REPORTING closed
     2016-12-11 23:48:56   DEWPOINT        7.1
     2016-12-11 23:48:36   control         20.0
     2016-12-11 23:48:36   state           20.0
Attributes:
   IODev      HMCCU2
   alias      Esszimmer Wandthermostat
   ccureadingfilter (^UNREACH|^HUMIDITY|^TEMPERATURE|^SET_TEMPERATURE|^LOWBAT$|^WINDOW_OPEN)
   ccureadingformat datapoint
   cmdIcon    Auto:sani_heating_automatic Manu:sani_heating_manual Boost:sani_heating_boost on:general_an off:general_aus
   controldatapoint 2.SET_TEMPERATURE
   devStateIcon OK:10px-kreis-gruen Error:10px-kreis-rot Initialized:10px-kreis-gelb
   event-on-change-reading .*
   eventMap   /datapoint 2.MANU_MODE 20.0:Manu/datapoint 2.AUTO_MODE 1:Auto/datapoint 2.BOOST_MODE 1:Boost/datapoint 2.MANU_MODE 4.5:off/datapoint 2.MANU_MODE 30.5:on/
   group      Heizung & Thermostate
   icon       hm-tc-it-wm-w-eu
   room       Device,Esszimmer
   stateFormat T: 1.TEMPERATURE° H: 1.HUMIDITY% T: 2.SET_TEMPERATURE° D: DEWPOINT°
   statechannel 2
   statedatapoint 2.SET_TEMPERATURE
   stripnumber 1
   substexcl  control
   substitute LOWBAT,UNREACH!(0|false):no,(1|true):yes;CONTROL_MODE!0:AUTO,1:MANU,2:PARTY,3:BOOST;WINDOW_OPEN_REPORTING!(true|1):open,(false|0):closed;SET_TEMPERATURE!#0-3.5:off,#30.5-40:on
   userReadings DEWPOINT {HMCCU_Dewpoint($name,"1.TEMPERATURE", "1.HUMIDITY","n/a")}
   webCmd     control:Auto:Manu:Boost:on:off
   widgetOverride control:slider,4.5,0.5,30.5,1


Ist in direkt verbunden mit einem Heizkörperthermostat und einem Fensterschließer
HM CCU3 und HCU mit ca. 50 HM-Komponenten inkl. Bausätzen
fhem auf RPi mit Sonos, EnOcean-CUL, ZWAVE-CUL und Bluetooth,
HUE, UniFi

zentis666

#86
Zitat von: Yil am 11 Dezember 2016, 23:53:00
So lautet meine Definition, die bei mir funktioniert:


   ccureadingformat datapoint
   eventMap   /datapoint 2.MANU_MODE 20.0:Manu/datapoint 2.AUTO_MODE 1:Auto/datapoint 2.BOOST_MODE 1:Boost/datapoint 2.MANU_MODE 4.5:off/datapoint 2.MANU_MODE 30.5:on/
   stateFormat T: 1.TEMPERATURE° H: 1.HUMIDITY% T: 2.SET_TEMPERATURE° D: DEWPOINT°
   substexcl  control
   substitute LOWBAT,UNREACH!(0|false):no,(1|true):yes;CONTROL_MODE!0:AUTO,1:MANU,2:PARTY,3:BOOST;WINDOW_OPEN_REPORTING!(true|1):open,(false|0):closed;SET_TEMPERATURE!#0-3.5:off,#30.5-40:on


Hallo Yil,
mit den Ergänzungen funktioniert es nun bei mir, vielen Dank!
Gruß
Sven
--
FHEM auf Debian VM - ESXi 6.0 Intel Nuc i5 4th Gen, Homematic auf HMCCU - RaspberryMatic auf Raspberry PI 3,
EM1000 & FS20 über CUNO,  IT über Arduino Firmata, MiLight über WLAN-nRF Gateway, Ebus, 1Wire, diverse Squeezeboxen, Dreambox 920UHD, Homebridge

zap

Zitat von: SFAB am 11 Dezember 2016, 18:12:14
Mein größeres Problem ist gerade, dass der Mehrfachtaster anscheinend nicht in die vorgesehen UP-Dose passt, da die Verkabelung dort schon zu viel Platz wegnimmt...

Das Problem kenne ich. Wie sieht es mit Aufbohren aus? Also Dose mehr oder weniger zerstören (zumindest die Rückseite) und mit dem Bohrhammer Platz schaffen. Geht natürlich nicht bei Mietwohnung oder Miethaus.

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

SFAB

Zitat von: zap am 12 Dezember 2016, 07:30:16
Mietwohnung
ist das Zauberwort ::)

Da sich meine Möglichkeiten daher in Grenzen halten, sehe ich das ganze Thema im Moment auch eher als Spielwiese an, um Erfahrungen zu sammeln. Außerdem ist auch eine gewisse Herausforderung unter diesen Bedingungen die eigenen Ideen irgendwie umzusetzen.
Raspberry Pi 3
CUL v3 433 (Intertechno/Smartwares)
Jeelink v3 868 (LaCrosse)
Homematic CCU2
Philips Hue Bridge v2

chris1284

Zitat von: zap am 12 Dezember 2016, 07:30:16
Geht natürlich nicht bei Mietwohnung oder Miethaus.
wieso soll das da nicht gehen.... wenn du bei auszug die dose wieder zurückbaust wo ist das problem (oder einfach die tiefer up-dose drinnen lassen, niemand wirds merken oder meckern)