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
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.
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.
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.
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 :-(
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?
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...
deswegen ja "derweil", solange link- rsp. peerbezogene Programmierungen noch nicht unterstützt werden ...
Theoretisch geht es schon, allerdings hat man derzeit keine Chance, den Namen des Parameters rauszubekommen
Wie ginge denn das theoretisch, wenn ich den Namen wüsste?
Ü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.
..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);'
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
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...
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)],\
)
Die 4.4 wird LINK unterstützen.
Klasse, ich teste dann sobald das Modul da ist!