[gelöst] HMCCU: Einschaltdimmwert verstellen über Register (HM-LC-Dim1T-FM)

Begonnen von Nogga, 26 Dezember 2019, 22:38:24

Vorheriges Thema - Nächstes Thema

Nogga

Ich versuche gerade meine ganzen Geräte auf die HMCCU umzuziehen von einem CUL.
Ich dimmer nachts auch meine Treppenhausbeleuchtung, indem ich zeitgesteuert den Einschalt-Dimmwert verstelle:

set OG_Treppenhaus_Licht regSet intKeyVisib visib,
set OG_Treppenhaus_Licht regSet shOnLevel 30 self01,
set OG_Treppenhaus_Licht regSet lgOnLevel 30 self01,
set OG_Treppenhaus_Licht getConfig,

Obige Kommandos funktionieren über ein CUL_HM Device problemlos (tagsüber setze ich wieder auf 100...).
Wie schaffe ich die gleiche Logik über ein HMCCUDEV?

Mein HMCCUDEV sieht so aus:


Internals:
   DEF        LEQ0992149
   FUUID      5deec9dc-f33f-bfba-4c0a-078077c32c6c8d99
   IODev      HM_CCU3
   NAME       HMCCU_OG_TREPPENHAUS_LICHT
   NR         292
   STATE      off
   TYPE       HMCCUDEV
   ccuaddr    LEQ0992149
   ccudevstate active
   ccuif      BidCos-RF
   ccuname    OG_TREPPENHAUS_LICHT
   ccutype    HM-LC-Dim1T-FM
   channels   2
   firmware   2.6
   statevals  devstate|on|off
   READINGS:
     2019-12-26 21:45:21   1.DIRECTION     none
     2019-12-26 21:45:21   1.LEVEL         off
     2019-12-26 21:45:21   control         0
     2019-12-26 21:45:21   hmstate         off
     2019-12-26 21:45:21   state           off
   hmccu:
     devspec    LEQ0992149
     dp:
       0.CONFIG_PENDING:
         OVAL       false
         VAL        false
       0.DUTYCYCLE:
         OVAL       false
         VAL        false
       0.RSSI_DEVICE:
         OVAL       1
         VAL        1
       0.RSSI_PEER:
         OVAL       184
         VAL        184
       0.STICKY_UNREACH:
         OVAL       false
         VAL        false
       0.UNREACH:
         OVAL       false
         VAL        false
       1.DIRECTION:
         OSVAL      none
         OVAL       0
         SVAL       none
         VAL        0
       1.ERROR_OVERHEAT:
         OVAL       0
         VAL        0
       1.ERROR_OVERLOAD:
         OVAL       0
         VAL        0
       1.ERROR_REDUCED:
         OVAL       0
         VAL        0
       1.INHIBIT:
         OVAL       false
         VAL        false
       1.LEVEL:
         OSVAL      on
         OVAL       0.300000
         SVAL       off
         VAL        0.000000
       1.WORKING:
         OVAL       0
         VAL        0
Attributes:
   IODev      HM_CCU3
   ccureadingfilter (^LEVEL$|DIRECTION)
   ccuscaleval LEVEL:0:1:0:100
   cmdIcon    on:general_an off:general_aus
   controldatapoint 1.LEVEL
   hmstatevals ERROR_REDUCED!1:error_reduced;ERROR_OVERHEAT!1:error_overheat;ERROR_OVERLOAD!1:error_overload
   room       HMCCU
   statedatapoint 1.LEVEL
   statevals  on:100,off:0
   stripnumber 1
   substexcl  control
   substitute ERROR_OVERHEAT,ERROR_OVERLOAD,ERROR_REDUCED!(0|false):no,(1|true):yes;LEVEL!#0-0:off,#1-100:on;DIRECTION!0:none,1:up,2:down,3:undefined
   webCmd     control:on:off
   widgetOverride control:slider,0,10,100



zap

Mit dem Befehl

set config

Allerdings musst Du erst mal rausbekommen, wie der entsprechende Parameter heißt und in welchem Kanal er liegt. Leider gibt es dazu bei EQ3 nur für HmIP Devices eine Doku.
Zunächst rufst Du auf der CCU unter Einstellungen/Geräteeinstellungen die Geräteliste auf. Dann den Button Einstellen hinter dem Dimmer Eintrag anklicken. Jetzt kannst Du sehen, in welchem Kanal die von Dir gewünschten Einstellungen liegen, oder ob es Geräteeinstellungen ohne Kanal sind.

Dann führst du in FHEM für dein Device den Befehl get configlist aus. Als Parameter gibst Du entweder den Kanal an, den du vorher in der CCU ermittelt hast (die Nummer) oder gar nichts, wenn der Parameter gerätebezogen ist.

Schau Dir die Liste an, die ausgegeben wird. Vermutlich kannst Fu an den Namen oder den Werten den richtigen Parameter erkennen. Einstellen dann mit set config.
2xCCU3 mit ca. 100 Aktoren, Sensoren
Entwicklung: FHEM auf Proxmox Debian VM
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: HMCCU, (Fully, AndroidDB)

frank

die register sh/lgOnLevel sind sicher aus dem link parameterset und damit noch nicht in fhem verfügbar.

zap denkt noch darüber nach sie verfügbar zu machen.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

zap

Zitat von: frank am 27 Dezember 2019, 11:28:52
die register sh/lgOnLevel sind sicher aus dem link parameterset und damit noch nicht in fhem verfügbar.

zap denkt noch darüber nach sie verfügbar zu machen.

Ist das eine Vermutung? Wenn man die Werte in der CCU einstellen kann, sollten sie eigentlich im MASTER Paramset liegen. Leider habe ich das Gerät nicht.
2xCCU3 mit ca. 100 Aktoren, Sensoren
Entwicklung: FHEM auf Proxmox Debian VM
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: HMCCU, (Fully, AndroidDB)

Nogga

Bin leider erst jetzt zum Testen gekommen.
Die Einstellung versteckt sich offensichtlich im ersten Kanal unter der "internen Gerätetaste". Offensichtlich kann ich aber im HMCCUDEV nur den Kanal selbst editieren (siehe Screenshot).
Wenn ich den Beitrag unter https://forum.fhem.de/index.php?topic=105137.0 richtig interpretiere geht das derzeit auch tatsächlich nicht.

Ist das tatsächlich so? Dann kann ich mein "Nachts dimmen" Szenario nicht über HMCCU realisieren :-(

Pfriemler

OnLevel ist ein peer-bezogenes Register (heißt das auf HMCCUisch link?) - wenn es um den Dimmwert bei lokaler Bedienung geht, ist die Zuordnung zur internen Gerätetaste folgerichtig, da es sich nicht um eine allgemeine Kanaleinstellung handelt.

Mach doch ein zeitbasiertes Skript direkt in der CCU derweil - oder geht Registerprogrammierung da nicht?
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

Nogga

Nunja, ich wollte nach Möglichkeit alle Logik in FHEM zentral haben. Das ist bedeutend übersichtlicher... aber ich Probiers mal in der CCU selbst, auch wenn ich da noch nie was gemacht hab...

Pfriemler

deswegen ja "derweil", solange link- rsp. peerbezogene Programmierungen noch nicht unterstützt werden ...
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

zap

Theoretisch geht es schon, allerdings hat man derzeit keine Chance, den Namen des Parameters rauszubekommen
2xCCU3 mit ca. 100 Aktoren, Sensoren
Entwicklung: FHEM auf Proxmox Debian VM
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: HMCCU, (Fully, AndroidDB)

Nogga

Wie ginge denn das theoretisch, wenn ich den Namen wüsste?

zap

Über eine selbst geschriebene Funktion in myUtils, die die richtige Funktion in HMCCU aufruft. Macht aber keinen Sinn. Solche Hacks funktionieren meist nur bis zum nächsten Update.
2xCCU3 mit ca. 100 Aktoren, Sensoren
Entwicklung: FHEM auf Proxmox Debian VM
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: HMCCU, (Fully, AndroidDB)

Nogga

..ich habe jetzt herausgefunden, wie ich das ganze per HomeMatic Skript bewerkstelligen kann:


xmlrpc.PutParamset(dom.GetObject("BidCos-RF"),"OEQ0105752:1","OEQ0105752:1","SHORT_ON_LEVEL",0.5);


Frage: Ich kann doch auch bestimmt Einzeiler HMSkript an HMCCU weitergeben? Ein paar Varianten habe ich schon versucht, aber glücklos :-(

..ich habe natürlich auch das Wiki bemüht, aber will nicht wirklich jeden einzelnen Dimmer in ein separates File einfügen...

Und das geht auch nicht:

set HM_CCU3 hmscript 'xmlrpc.PutParamset(dom.GetObject("BidCos-RF"),"OEQ0105752:1","OEQ0105752:1","SHORT_ON_LEVEL",0.5);'

zap

Also wenn dieses Schnipsel tatsächlich funktioniert, heißt das, der Parameter liegt doch im MASTER paramset und sollte sich mit set config ändern lassen.

Versuch mal folgendes (angenommen dein HMCCUDEV Device heißt xy):

get xy configlist 1

Dann mal schauen, ob SHORT_ON_LEVEL in der Ausgabe auftaucht.
Wenn ja:

set xy config 1 SHORT_ON_LEVEL 0.5

oder

set xy rpcparameter 1 MASTER SHORT_ON_LEVEL=0.5:DOUBLE
2xCCU3 mit ca. 100 Aktoren, Sensoren
Entwicklung: FHEM auf Proxmox Debian VM
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: HMCCU, (Fully, AndroidDB)

Nogga

Nein er liegt weder in MASTER noch in VALUES, sondern in LINK, ergo als Verknüpfungsparameter auf dem ersten Kanal. Ich verknüpfe quasi nur den Aktor mit der internen Gerätetaste.
Ich hatte schon dazumal ein get configlist 1 gemacht, ohne brauchbare Ergebnisse (siehe Screenshot in einem vorherigen Post).

Wie kann ich den am Einfachsten dieses Script-Schnipsel ausführen?

Ja ich hab den Code auf der CCU selbst getestet...

Nogga

Jetzt habe ich es endlich geschaft:

set HM_CCU3 hmscript [xmlrpc.PutParamset(dom.GetObject("BidCos-RF"),"OEQ0105752:1","OEQ0105752:1","SHORT_ON_LEVEL",0.1)]

Damit kann ich den Einschaltpegel auf 10% deckeln. Manuell kann ich es per Schalter (und FHEM) immer noch übersteuern...

Das kann ich jetzt auch in mein zeitgesteuertes Dimmen einbauen:


defmod Doif_Licht_Dimmen_Nachts DOIF ([{sunset(0,"18:00","19:00")}-{sunrise(0,"8:00","10:00")}]) \
## abends und nachts runterdimmen zum Sonnenuntergang aber frühestens 1800 spätestens 1930\
(\
## OG_Treppenhaus_Licht\
set HM_CCU3 hmscript [xmlrpc.PutParamset(dom.GetObject("BidCos-RF"),"LEQ0992149:1","LEQ0992149:1","SHORT_ON_LEVEL",0.3)],\
)\
DOELSE\
## tagsüber wieder hochdimmen zum Sonnenaufgang aber frühestens um 800 und spätestens um 1000\
(\
## OG_Treppenhaus_Licht\
set HM_CCU3 hmscript [xmlrpc.PutParamset(dom.GetObject("BidCos-RF"),"LEQ0992149:1","LEQ0992149:1","SHORT_ON_LEVEL",1.0)],\
)