Hallo,
ich habe versucht, beine CCU nach dem Artikel (https://wiki.fhem.de/wiki/HMCCU_Best_Practice) anzuzapfen. Leider ist daraus so recht nichts geworden.
In meiner CCU2 (2.35.16) betreibe ich derzeit:
2x Handfernbedienung HM-RC-4-3
1x Handfernbedienung HM-RC-8
4x Funkrauchmelder HM-Sec-SD-2
1x Bewegungsmelder HM-Sec-MDIR-3
2x Bewegungsmelder HM-Sen-MDIR-O-3
1x Temperatursensor HM-WDS10-TH-O
9x Heizkörperthermostat HM-CC-RT-DN
14x Fensterkontakt HM-Sec-SCo
1x Wandthermostat HM-TC-IT-WM-W-EU
(alles "nur" HM Geräte und kein Homematic IP)
Bisher lauscht FHEM bei mir nur, was die Geräte so melden:
define vccu CUL_HM 1A2B3C
attr vccu .mId FFF0
attr vccu IODev CUL_1
attr vccu IOList CUL_1
attr vccu model CCU-FHEM
attr vccu subType virtual
attr vccu webCmd virtual:update
define ActionDetector CUL_HM 000000
attr ActionDetector .mId no
attr ActionDetector event-on-change-reading .*
attr ActionDetector model ACTIONDETECTOR
attr ActionDetector subType virtual
...
Leider bekomme ich so nicht alles mit (bspw. Feueralarm der Rauchmelder). Daher wollte ich FHEM jetzt mit der CCU verbinden. Ich habe mich da an den Artikel gehalten und folgenden Code ergänzt:
define d_ccu HMCCU 192.168.1.2
#
# Schnittstellen
attr d_ccu rpcinterfaces BidCos-RF,VirtualDevices
#
# Externen RPC Server verwenden
attr d_ccu ccuflags procrpc
#
# RPC-Server nach dem Start von FHEM automatisch starten
attr d_ccu rpcserver on
#
# Status anzeigen
attr d_ccu stateFormat rpcstate/state
#
# Buttons für das Starten und Stoppen des RPC-Servers anzeigen
attr d_ccu cmdIcon on:general_an off:general_aus
attr d_ccu eventMap /rpcserver on:on/rpcserver off:off/
set d_ccu defaults
Jetzt benötigt FHEM ewig zum Starten.
Und ich habe keine Ahnung, wie ich meine Geräte nun über den Weg FHEM>CCU2 abfragen oder sogar steuern kann.
So wirkt das neue Setup erst einmal instabiler/viel langsamer.
Was muss ich denn tun?
So sieht mein d_ccu jetzt aus - siehe Bild anbei.
Wie bekomme ich denn jetzt die Geräte aus der CCU nach FHEM?
Wiki HMCCU (https://wiki.fhem.de/wiki/HMCCU#Autocreate_von_Client_Devices)
autocreate (https://wiki.fhem.de/wiki/HMCCU#Autocreate_von_Client_Devices)
get <io-dev> devicelist create <dev-expr> [Options ...] [<attr>=<value [...]]
Zitat
Beispiel 1: In FHEM Devices für alle CCU Geräte anlegen, deren Namen mit "HM-KL" beginnt. Alle neuen FHEM Devices beginnen mit "HM_". Sofern vorhanden werden Default Attribute gesetzt. Die Konfiguration wird gespeichert.
get d_ccu devicelist create ^HM-KL.* t=dev f=HM_%n defattr save room=Homematic
Beispiel 2: In FHEM Devices für alle CCU Geräte anlegen, deren Namen mit "HM" oder "Hm" (HmIP-Geräte) beginnt. Alle neuen FHEM Devices haben den Namen wie in der CCU und können dann mit dem Attribut "alias" verständlicher benannt werden. Sofern vorhanden, werden default Attribute gesetzt. Die Konfiguration wird gespeichert. Der Room "CCU_HM" ist angelehnt an "CUL_HM".
get d_ccu devicelist create ^H[M|m].* t=dev f=%n defattr save room=CCU_HM
Wenn ich das so mache (also alle Homematic Devices so anlege) benötige ich doch mein vccu Objekt vermutlich nicht mehr, oder? D.h. ich lege alle Geräte auf dem neuen Weg an und lösche vccu und die Homematic Geräte, die ich durch Lauschen erfasst habe, oder?
Wie ist denn so die Performance über die Verbindung zur CCU? Wenn ich meine CCU über deren Webinterface aufrufe, ist sie schon sehr langsam.
Ich meine die CCU Performance wird sich nicht weiter verschlechtern (ich habe eine CCU2).
Du mußt nicht alle dev und chn übernehmen, dafür gibt es ja die regex Filterfunktion.
P.S.: Ich habe zunächst mit den HMIP Geräten begonnen, bin aber mittlerweile vollständig HMCCU umgestiegen.
Wow, ich habe es tatsächlich hinbekommen, die CCU zu verbinden:
define d_ccu HMCCU 192.168.178.21
setuuid d_ccu 5e6e57b6-f33f-2cfb-f1d1-7d29f8b4fcf9c94b
attr d_ccu ccuflags procrpc
attr d_ccu cmdIcon on:general_an off:general_aus
attr d_ccu eventMap /rpcserver on:on/rpcserver off:off/
attr d_ccu room CCU
attr d_ccu rpcinterfaces BidCos-RF,VirtualDevices
attr d_ccu rpcport 2001,9292
attr d_ccu rpcserver on
, und die Geräte in FHEM anzulegen:
define HM_PIR_Sued_Ost HMCCUDEV PEQ1324749
setuuid HM_PIR_Sued_Ost 5e7132ab-f33f-2cfb-bca0-a6d8aaa93d38e104
attr HM_PIR_Sued_Ost IODev d_ccu
attr HM_PIR_Sued_Ost room CCU
define HM_RC_Schuppen HMCCUDEV PEQ1918935
setuuid HM_RC_Schuppen 5e7132ab-f33f-2cfb-d047-85514b4626febf5b
attr HM_RC_Schuppen IODev d_ccu
attr HM_RC_Schuppen room CCU
define HM_RC_Hand HMCCUDEV OEQ1006857
setuuid HM_RC_Hand 5e7132ab-f33f-2cfb-8153-d47c036f3eaa09d2
attr HM_RC_Hand IODev d_ccu
attr HM_RC_Hand room CCU
define HM_RM_Flur_OG HMCCUDEV OEQ0599952
setuuid HM_RM_Flur_OG 5e7132ab-f33f-2cfb-e42d-dbc37f2ef404345b
attr HM_RM_Flur_OG IODev d_ccu
attr HM_RM_Flur_OG ccureadingfilter STATE
attr HM_RM_Flur_OG hmstatevals ERROR_ALARM_TEST!1:alarm_test_failed;;ERROR_SMOKE_CHAMBER!1:degraded_smoke_chamber
attr HM_RM_Flur_OG room CCU
attr HM_RM_Flur_OG statedatapoint 1.STATE
attr HM_RM_Flur_OG substitute STATE!(0|false):ok,(1|true):alarm;;ERROR_ALARM_TEST!0:no,1:failed;;ERROR_SMOKE_CHAMBER!0:no,1:degraded
define HM_HT_Bad HMCCUDEV NEQ0875375
setuuid HM_HT_Bad 5e7132ab-f33f-2cfb-cf11-55808bfb10f484a0
attr HM_HT_Bad IODev d_ccu
attr HM_HT_Bad ccureadingfilter (TEMPERATURE|VALVE_STATE|CONTROL|BATTERY_STATE)
attr HM_HT_Bad cmdIcon Auto:sani_heating_automatic Manu:sani_heating_manual Boost:sani_heating_boost on:general_an off:general_aus
attr HM_HT_Bad controldatapoint 4.SET_TEMPERATURE
attr HM_HT_Bad eventMap /datapoint 4.MANU_MODE 20.0:Manu/datapoint 4.AUTO_MODE 1:Auto/datapoint 4.BOOST_MODE 1:Boost/datapoint 4.MANU_MODE 4.5:off/datapoint 4.MANU_MODE 30.5:on/
attr HM_HT_Bad hmstatevals FAULT_REPORTING!1:valve_tight,2:range_too_large,3:range_too_small,4:communication_error,5:other_error,6:battery_low,7:valve_error_pos
attr HM_HT_Bad room CCU
attr HM_HT_Bad statedatapoint 4.SET_TEMPERATURE
attr HM_HT_Bad stripnumber 1
attr HM_HT_Bad substexcl control
attr HM_HT_Bad substitute CONTROL_MODE!0:AUTO,1:MANU,2:PARTY,3:BOOST;;SET_TEMPERATURE!#0-4.5:off,#30.5-40:on;;FAULT_REPORTING!0:no,1:valve_tight,2:range_too_large,3:range_too_small,4:communication_error,5:other_error,6:battery_low,7:valve:error_pos
attr HM_HT_Bad webCmd control:Auto:Manu:Boost:on:off
attr HM_HT_Bad widgetOverride control:slider,4.5,0.5,30.5,1
define HM_SC_Badezimmer HMCCUDEV NEQ0634544
setuuid HM_SC_Badezimmer 5e7132aa-f33f-2cfb-42cf-38276c03ffe5b2a0
attr HM_SC_Badezimmer IODev d_ccu
attr HM_SC_Badezimmer ccureadingfilter STATE
attr HM_SC_Badezimmer hmstatevals ERROR!7:sabotage;;SABOTAGE!1:sabotage
attr HM_SC_Badezimmer room CCU
attr HM_SC_Badezimmer statedatapoint 1.STATE
attr HM_SC_Badezimmer substitute STATE!(0|false):closed,(1|true):open
define HM_TH_Garten HMCCUDEV NEQ1381391
setuuid HM_TH_Garten 5e7132ab-f33f-2cfb-37f0-3dcdab0407412df7
attr HM_TH_Garten IODev d_ccu
attr HM_TH_Garten ccureadingfilter (^HUMIDITY|^TEMPERATURE)
attr HM_TH_Garten room CCU
attr HM_TH_Garten statedatapoint 1.TEMPERATURE
attr HM_TH_Garten stripnumber 1
Schaue ich jetzt in Event Monitor, sehe ich keinerlei Aktivitäten dieser neuen Geräte.
Wie kann ich denn jetzt:
- Fensterkontakte (HM_SC_...)
- Rauchmelder (HM_RM_...)
- Bewegungsmelder (HM_PIR_...)
- Handfernbedienungen (HM_RC_...)
auswerten, oder auch noch Diagramme erzeugen?
Führe ein set <devicename> defaults aus z.B.:
set HM_RC_Schuppen defaults
Zitat von: supernova1963 am 18 März 2020, 06:53:25
Führe ein set <devicename> defaults aus z.B.:
set HM_RC_Schuppen defaults
Dieses Beispiel liefert:
HMCCUDEV: HM_RC_Schuppen HMCCU: No default attributes found
Bei anderen Geräten passiert nix. Die Config sieht aus wie vorher.
Mache ich was falsch?
Die folgenden device's müßten funktionieren und mit der CCU abgleichbar sein:
get HM_RM_Flur_OG update
get HM_HT_Bad update
get HM_SC_Badezimmer update
get HM_TH_Garten update
Bei den anderen fehlt die Ausgabe. Hier könnte man die Verbindung zur CCU testen, in dem zunächst das ccureadingfilter Attribut auf .* setzt:
attr HM_PIR_Sued_Ost ccureadingfilter .*
attr HM_RC_Schuppen ccureadingfilter .*
attr HM_RC_Hand ccureadingfilter .*
Und anschließend ein update mit der CCU durchführt:
get HM_PIR_Sued_Ost update
get HM_RC_Schuppen update
get HM_RC_Hand update
Danach sollten diese device's alle readings von der CCU bekommen.
Wenn das nicht funktioniert, bin ich raus, und hoffe ein anderer Leser kann Dir weiterhelfen.
Ich habe nun einmal get-Befehle ausgeführt (bspw. get HM_HT_Bad update). Jetzt sehe ich mehr Readings:
Readings
4.ACTUAL_TEMPERATURE 25.9 2020-03-23 14:58:58
4.BATTERY_STATE 3.0 2020-03-23 14:58:58
4.CONTROL_MODE AUTO 2020-03-23 14:58:58
4.PARTY_TEMPERATURE 5.0 2020-03-23 14:58:58
4.SET_TEMPERATURE 23.0 2020-03-23 14:58:58
4.VALVE_STATE 9 2020-03-23 14:58:58
control 23.0 2020-03-23 14:58:58
hmstate 23.0 2020-03-23 14:58:58
state 23.0 2020-03-23 14:58:58
vorher gab es nur:
Readings
state 23.0 2020-03-23 14:58:58
Der Rauchmelder () liefert jetzt:
1.STATE ok 2020-03-23 14:55:44
control ok 2020-03-23 14:55:44
hmstate ok 2020-03-23 14:55:44
state ok 2020-03-23 14:55:44
Heißt das jetzt auch, dass ich in FHEM automatisch Events dieser Geräte bekomme und diese per notify abfangen (z.B. niedriger Batterie-Stand oder Feueralarm) kann?
Ich habe gerade einmal den Heizungsthermostat per App über die CCU den Befehl gegeben, den Modus auf manuell zu setzen und die Temperatur auf 27,5°C zu erhöhen. In FHEM sehe ich trotz Reload davon übrigens nix. ASuch der Event.Monitor zeigt das nicht an. Das wäre jetzt meine Hoffnung gewesen. Lediglich ein erneutes get HM_HT_Bad update liefert die aktuellsten Daten. Gibt es hier keine automatische Benachrichtigung?
commandref #HMCCUCHN -> ccureadingfilter <filter-rule[;...]> <filter-rule[;...]> (https://fhem.de/commandref.html#HMCCUCHN)
Aber stelle die Frage doch mal im Homematic Bereich, oder, die Moderatoren: KernSani, Amenophis86 verschieben diese Beitrag.
Jetzt habe ich zum Device noch ein Channel angelegt (Fensterkontakt), aber der Event-Monitor zeigt noch immer nix an (beim Fenster Öffnen oder schließen):
Oh, ein Neustart hat geholfen. Nachdem ich ein Fenster öffne:
2020-03-24 16:09:08 HMCCUCHN SC_Arbeit_TEST 1.LOWBAT: 0
2020-03-24 16:09:08 HMCCUCHN SC_Arbeit_TEST hmstate: closed
2020-03-24 16:09:08 HMCCUDEV HM_SC_Arbeitszimmer 1.LOWBAT: 0
2020-03-24 16:09:08 HMCCUDEV HM_SC_Arbeitszimmer hmstate: closed
2020-03-24 16:09:08 HMCCUCHN SC_Arbeit_TEST 1.STATE: open
2020-03-24 16:09:08 HMCCUCHN SC_Arbeit_TEST control: open
2020-03-24 16:09:08 HMCCUCHN SC_Arbeit_TEST open
2020-03-24 16:09:08 HMCCUCHN SC_Arbeit_TEST hmstate: open
Warum sendet der Kontakt aber vorher noch ein closed?
Ist bei mir auch so (und stört mich nicht)
Warum ...: Keine konkrete Ahnung, vermute aber, dass zunächst der alte Status und anschliessend der neue übermittelt wird
020-03-24 17:35:42 HMCCUDEV 21_FSFenster_01 1.LOWBAT: OK
2020-03-24 17:35:42 HMCCUDEV 21_FSFenster_01 hmstate: geschlossen
2020-03-24 17:35:42 HMCCUDEV 21_FSFenster_01 StatusText: Fenster Büro ist geschlossen!
2020-03-24 17:35:42 HMCCUDEV 21_FSFenster_01 SystemState: aktuell
2020-03-24 17:35:42 HMCCUDEV 21_FSFenster_01 online: true
2020-03-24 17:35:42 HMCCUDEV 21_FSFenster_01 1.STATE: offen
2020-03-24 17:35:42 HMCCUDEV 21_FSFenster_01 control: offen
2020-03-24 17:35:42 HMCCUDEV 21_FSFenster_01 offen
2020-03-24 17:35:42 HMCCUDEV 21_FSFenster_01 hmstate: offen
2020-03-24 17:35:42 HMCCUDEV 21_FSFenster_01 StatusText: Fenster Büro ist offen!
2020-03-24 17:35:42 HMCCUDEV 21_FSFenster_01 SystemState: aktuell
2020-03-24 17:35:42 HMCCUDEV 21_FSFenster_01 online: true
2020-03-24 17:35:49 HMCCUDEV 21_FSFenster_01 1.STATE: geschlossen
2020-03-24 17:35:49 HMCCUDEV 21_FSFenster_01 control: geschlossen
2020-03-24 17:35:49 HMCCUDEV 21_FSFenster_01 geschlossen
2020-03-24 17:35:49 HMCCUDEV 21_FSFenster_01 hmstate: geschlossen
2020-03-24 17:35:49 HMCCUDEV 21_FSFenster_01 StatusText: Fenster Büro ist geschlossen!
2020-03-24 17:35:49 HMCCUDEV 21_FSFenster_01 SystemState: aktuell
2020-03-24 17:35:49 HMCCUDEV 21_FSFenster_01 online: true
Bevor du fragst, ich habe mehr Einträge aufgrund meiner device Definition, die sehr speziell für meinen fhemweb Aufbau ist:
defmod 21_FSFenster_01 HMCCUDEV PEQ0571766
attr 21_FSFenster_01 IODev CCU2
attr 21_FSFenster_01 alexaName Fenster Büro
attr 21_FSFenster_01 alexaRoom Büro
attr 21_FSFenster_01 alias Fenster Büro
attr 21_FSFenster_01 ccureadingfilter .*
attr 21_FSFenster_01 devStateIcon offen:fts_window_1w_open@OrangeRed\
geschlossen:fts_window_1w@Green\
gekippt:fts_window_1w_tilt@gold\
OK:measure_battery_100@Green\
LEER:measure_battery_0@Red\
bereit:general_ok@Green \
Sabotage:message_attention@red \
info:rc_INFO@Darkblue\
true:10px-kreis-gruen\
false:10px-kreis-rot\
veraltet:refresh@OrangeRed:x_update\
aktuell:rc_BLANK
attr 21_FSFenster_01 devStateStyle style="text-align:right;;"
attr 21_FSFenster_01 event-on-update-reading .*
attr 21_FSFenster_01 genericDeviceType contact
attr 21_FSFenster_01 group 1_Sicherheit
attr 21_FSFenster_01 hmstatevals ERROR!7:sabotage;;SABOTAGE!1:sabotage
attr 21_FSFenster_01 homebridgeMapping ContactSensorState=state,values=geschlossen:CONTACT_DETECTED;;offen:CONTACT_NOT_DETECTED\
StatusLowBattery=1.LOWBAT,values=OK:BATTERY_LEVEL_NORMAL;;/^.*/:BATTERY_LEVEL_LOW\
history:size=1024
attr 21_FSFenster_01 icon fts_window_1wbb_open
attr 21_FSFenster_01 room 20_KELLERGESCHOSS->21_Buero,Homekit,Homematic
attr 21_FSFenster_01 stateFormat StatusText\
SystemState\
1.LOWBAT\
state\
online
attr 21_FSFenster_01 statedatapoint 1.STATE
attr 21_FSFenster_01 substitute STATE!(0|false):geschlossen,(1|true):offen;;ERROR!0:bereit,1:Sabotage;;LOWBAT!(0|false):OK,(1|true)=LEER
attr 21_FSFenster_01 userReadings StatusText \
{\
my $regex = "";;\
my $subst = "";;\
if (uc(ReadingsVal($NAME,"control","")) eq "OFF") {\
$regex = qr/(off|OFF)/mp;;\
$subst = 'aus';;}\
else {\
$regex = qr/(on|ON)/mp;;\
$subst = 'an';;}\
my $result = ReadingsVal($NAME,"control","") =~ s/$regex/$subst/rg;;\
return AttrVal($NAME,"alias","")." ist ".$result."!"\
},\
SystemState \
{\
if ( ReadingsVal($NAME,"0.CONFIG_PENDING","") eq "true") {\
return "veraltet";;\
}\
else {\
return "aktuell";;\
}\
},\
online \
{\
my $iod = InternalVal($NAME,"IODev","CCU2");;\
my $ccu = InternalVal("$iod","ccuip","");;\
if ( ReadingsVal($NAME,"0.UNREACH","") eq "true") {\
return "false";;\
}\
else {\
return "true";;\
}\
}
attr 21_FSFenster_01 webCmd ::