Hallo,
Ich möchte gerne meine Lampe per Knopf hoch bzw. runter dimmen. Leider hat diese keinen entsprechenden set Befehl (dimup/dimdown).
Habe gedacht mit der setlist entsprechende Befehle umzusetzten, aber wie kann ich das reading brightness hoch bzw. runtersetzen?
Oder habt ihr andere Lösungsvorschläge?
defmod Licht_Wohnzimmer_Komode MQTT2_DEVICE zigbee_0x00158d000327cee9
attr Licht_Wohnzimmer_Komode IODev MQTT2_FHEM_Server
attr Licht_Wohnzimmer_Komode alias Komode
attr Licht_Wohnzimmer_Komode group Licht
attr Licht_Wohnzimmer_Komode icon light_control
attr Licht_Wohnzimmer_Komode model L_02b_zigbee2mqtt_light_cct
attr Licht_Wohnzimmer_Komode readingList zigbee2mqtt/0x00158d000327cee9:.* { json2nameValue($EVENT) }
attr Licht_Wohnzimmer_Komode room Wohnzimmer,hidden
attr Licht_Wohnzimmer_Komode setList on:noArg zigbee2mqtt/0x00158d000327cee9/set {"state":"ON"}\
off:noArg zigbee2mqtt/0x00158d000327cee9/set {"state":"OFF"}\
brightness:colorpicker,BRI,0,5,255 zigbee2mqtt/0x00158d000327cee9/set {"state":"on","$EVTPART0":"$EVTPART1"}\
color_temp:colorpicker,CT,154,2,500 zigbee2mqtt/0x00158d000327cee9/set {"$EVTPART0":"$EVTPART1"}
attr Licht_Wohnzimmer_Komode webCmd toggle:on:off:brightness:color_temp
setstate Licht_Wohnzimmer_Komode ON
setstate Licht_Wohnzimmer_Komode 2019-09-13 12:08:41 associatedWith MQTT2_zigbee_pi
setstate Licht_Wohnzimmer_Komode 2019-09-13 12:50:57 brightness 1
setstate Licht_Wohnzimmer_Komode 2019-09-13 12:50:57 color_mode 2
setstate Licht_Wohnzimmer_Komode 2019-09-13 12:50:57 color_temp 370
setstate Licht_Wohnzimmer_Komode 2019-09-13 12:50:57 color_x 0.458
setstate Licht_Wohnzimmer_Komode 2019-09-13 12:50:57 color_y 0.41
setstate Licht_Wohnzimmer_Komode 2019-09-13 12:50:57 linkquality 42
setstate Licht_Wohnzimmer_Komode 2019-09-13 12:50:57 state ON
Vielen Dank für Hilfe
Vorab mal: Willkommen im Forum!
Habe eben mal in der Doku bei zigbee2mqtt geschaut. Soweit erkennbar, gibt es für's Dimmen keinen direkten Befehl (was besser wäre). Mit etwas Perl sollte es gehen, in's unreine mal für hochdimmen:
dim_up:noArg {my nextlevel = ReadingsVal($name,"brightness",0) + 5;; "zigbee2mqtt/0x00158d000327cee9/set {\"brightness\":\"$nextlevel\"}" }
Das Problem dabei ist evtl., dass der (optisch wahnehmbare) Verlauf nicht linear ist, die 5 kannst du anpassen oder ggf. mit einer Korrekturfunktion ermitteln, wenn das nicht linear sein soll.
(Wenn du was funktionierendes hast: Ich bau's gerne in's attrTemplate ein ;) )
EDIT: Code geändert.
Guten Morgen,
hat es das Dimmen jetzt irgendwie in die Templates geschafft? Ich habe gerade ein Ikea Panel von einem "HUEDevice" zu einem "MQTT2_DEVICE" umkonfiguriert und stelle fest, dass ich nun weniger Funktionalität habe.
Gruss und Danke
Christian
Zitat von: Beta-User am 13 September 2019, 13:37:26
Das Problem dabei ist evtl., dass der (optisch wahnehmbare) Verlauf nicht linear ist, die 5 kannst du anpassen oder ggf. mit einer Korrekturfunktion ermitteln, wenn das nicht linear sein soll.
(Wenn du was funktionierendes hast: Ich bau's gerne in's attrTemplate ein ;) )
Solange ich keine Rückmeldung auf solche Aufforderungen erhalte, passiert in der Regel auch nichts, und der aktuelle Stand ist jeweils im svn ersichtlich bzw. wird per update verteilt. Reinschauen und du kennst die Antwort...
Zur Sache:
In den Shelly habe ich jüngst testweise was in die Richtung eingebaut: https://svn.fhem.de/trac/browser/trunk/fhem/FHEM/lib/AttrTemplate/mqtt2.template#L1985
Da sind aber vermutlich einige escape-Anweisungen drin, die man nicht braucht und die Stufen sind ziemlich grob. Ich fände es immer noch besser, wenn wir eine etwas "smoothere" Logik hätten, am besten einen zentralen Code in MQTT2_DEVICE (oder Color.pm), bei dem man ein paar Ankerpunkte und den "gefühlten Unterschied" angeben kann und damit die nächste Dimmstufe passend ermitteln.
Vorschläge nehme ich weiter gerne entgegen, und wir können sowas auch erst mal über myUtils-Code machen, wenn/solange es noch keine ausgereifte Lösung gibt.
Guten Morgen Beta-User,
der Blick ins SVN repository macht mich nun auch nicht schlauer - aber immer gut zu wissen, was ihr so treibt. Mir würde selbst ein holpriges Dimmen (up/down) schon reichen. Ich habe halt mehrere :
https://www.zigbee2mqtt.io/devices/ICPSHC24-30EU-IL-1.html
https://www.zigbee2mqtt.io/devices/L1527.html
und halt einige von den hier
https://www.zigbee2mqtt.io/devices/L1527.html
und, wenn ich dich richtig verstehe, dann sind gerade 4 von den 5 Tasten auf dieser RC nun funktionslos - ist das so?
Christian
Hmm,
Danke erst mal noch für die Links, das hat mich daran erinnert, dass es ja auch noch die Möglichkeit gibt, transitiontime mitzugeben - noch eine Variable, mit der man spielen könnte, um es "schön" zu machen.
Ich würde jetzt mal folgendes vorschlagen: Du bastelst "händisch" was in eines deiner Devices rein, das in die Richtung geht, was jüngst in den shelly Einzug gehalten hat. Dann kann ich das ggf. übernehmen, bitte dabei aber auch darauf achten, dass die Benennung der setter so ist, dass es für webCmd auch hübsch aussieht.
Du darfst gerne dabei auch die transitiontime mit "verwursten" bzw. einen weiteren setter dafür hinzufügen, falls erforderlich.
Dann können wir gerne das template erweitern bzw. das im Zigbee2-mqtt-Thread mal vorstellen, vielleicht fällt dazu noch jemandem anderem was ein, der das derzeit nutzt...
Was die Fernbedienung angeht: k.A., wie das genau ist (bin auf deconz), aber mir war so, als könnte man das direkt koppeln (in der zigbee2mqtt-Doku sollte das unter "bind" zu finden sein).
Tja, da ist meine Ironie nicht angekommen ;D ich kann, weil kein Perl-Guru wie ihr Entwickler, nicht einfach was zusammenbasteln (kann nur mit Wissen über Storage und Server dienen) .... ich versuche mit "Codeschnipseln" mich hier "über Wasser zu halten".
Ich schau mir das mit dem "bind" mal an ... sonst geht es halt für die dimmbaren devices einfach auf "HUEDevice" zurück - da geht es halt (und das ist keine Kritik, sondern ein Fakt) out of the box.
Christian
Ironiefrei:
Ich bin kein Perl-Guru, und eigentlich nicht mal ein richtiger Entwickler...
Schnipsel hatte ich versucht zu liefern, aber: Testen kann man sowas dann deutlich besser, wenn man Hardware dahinter hat, denn "1, 2 oder 3 [...] ob richtig oder nicht, zeigt euch gleich das Licht!"
Aber mach', wie du lustig bist, erfahrungsgemäß greift das schon jemand auf, wenn es für ihn (so) wichtig ist (, dass er notfalls auch "verschnitppselten Perl-Code" selbst zusammenklebt)...
Der Titel erinnert mich irgendwie so wage an eine schöne Funktion in einem gewissen Shelly Dimmer ::) *gg*
Aber gut zu wissen, dass die Lampen die ich mal testen wollte, hier verarbeitet und genutzt werden:
Zitat von: ChristianH am 07 April 2020, 10:54:14
https://www.zigbee2mqtt.io/devices/L1527.html
Ist zwar nur teilweise eine FHEM Frage, aber zwei Sachen interessieren mich sehr:
Wie ist das Licht des 30x30 cm Panels ? (Heller / dunlker , Kälter / wärmer ... Vergleichbar mit anderer Beleuchtung die Du da hast - Typ und größe wären als Info hilfreich)
War es problematisch den Treiber in FHEM (zigbee2mqtt) einzubinden ?
Vielen Dank im Voraus :)
Grüße
Andreas
Tja, was soll ich sagen .... ist für mich das beste Leuchtmittel von IKEA, dimmt fliessend und auch die Farbwechsel sind stufenlos von warm zu kalt. Einbinden via MQTT2 war auch kein Problem und wenn man weiss, welches von den vielen zigbee2mqtt templates man nutzen sollte, dann ist das Einbinden kein Problem.
Ich werde mich noch an Codezeile L1985 probieren und sehen, ob das mit den Handfernbedienungen hilft - wenn nicht, dann geht es zurück zu HUEDevice. Licht, was sich nur per App/web schalten/dimmen lässt hat negativen WAF und gefährdet häuslichen Frieden - ganz nach "Happy wife, happy life"
Zitat von: ChristianH am 07 April 2020, 13:46:48
Ich werde mich noch an Codezeile L1985 probieren und sehen, ob das mit den Handfernbedienungen hilft - wenn nicht, dann geht es zurück zu HUEDevice. Licht, was sich nur per App/web schalten/dimmen lässt hat negativen WAF und gefährdet häuslichen Frieden - ganz nach "Happy wife, happy life"
Ich habe noch nicht ganz verstanden, wie das mit den Fernbedienungen gemeint ist: Wenn du ein Event von einer FB hast, kannst du den Dimm-Befehl auch direkt in ein notify oä. packen, das hat nicht direkt was mit der setList zu tun.
Wenn du die FB direkt mit "bind" (?) mit dem Leuchtmittel "peerst", sollte es auch ohne FHEM oder ein notify klappen, weil dann die Geräte direkt miteinander reden müßten.
Jedenfalls nach meinem Verständnis brauchst du den setter analog Zeile 1985 eigentlich nur, wenn du das Ding (die Lampe, nicht die Fernbedienung!) aus FHEMWEB heraus steuern können willst.
@flummy1978: Evtl. magst du den setter für den shelly nochmal kritisch beäugen, zwei Dinge sind mir noch unklar:
- gibt es nette Symbole, wenn man z.B. webCmd mit dimUp:dimDown ergänzt? (sonst müßte man das so umbenennen, dass FHEMWEB das automatisch richtig macht)
- Sind die "\" erforderlich oder nur "Hosenträger und Gürtel kombiniert" - ich meine eigentlich, das sollte ohne gehen bzw. (jüngst gelernt) mit einer "qq"-Anweisung einfacher:
dimUp:noArg { my $num=ReadingsNum($NAME,'pct',0)+10;; return qq{shellies/DEVNAME/light/0/set {"turn": "on", "brightness": $num}};; }\
Ich glaube, wir schreiben aneinander vorbei ..... das liegt sicher an mir. Ich kriege es nicht hin mit einer erfolgreichen gepairten FB irgendeine IKEA Leuchte zu dimmen.
Im vorherigen HUEDevice gab es für die Leuchten in der Auswahliste des set Kommandos neben on, off, toggle usw dimUp und dimDown. Diese fehlen bei dem MQTT2_DEVICE, hier habe ich lediglich brightness.
Mein
([MQTT2_zigbee_IkeaTasterKueche:"^click:.brightness_down$"]) (set Ikea_Kuechen_Leiste dimDown)
klappt also nicht.
Gerne biete ich ein ZoomMeeting an.
Christian
Aha, du hast also entweder "nur" ein Problem mit dem Eventhandler (DOIF kann ich nicht), oder du brauchst die Anpassung am MQTT2_DEVICE, damit das klappt.
Das ist kein Ding für ein Zoom-Meeting, das sind erhebliche Verständnislücken bei den Grundlagen...
Da wir bei Grundlagen sind: An der Syntax ist zu erkennen, dass du da wohl ein DOIF hast, aber wir täten uns ggf. leichter, wenn du schlicht und ergreifend die Konventionen hier einhalten könntest und list's liefern (bzw. für MQTT2_DEVICE auch gerne eine RAW-Definition)...
Aus der Hüfte würde ich ungetestet mal mit dem hier gehen:
define n_Ikeataster_Kueche notify MQTT2_zigbee_IkeaTasterKueche.click:.brightness_down { my $num=maxNum(ReadingsNum('Ikea_Kuechen_Leiste','brightness',0)-20,0);; fhem("set Ikea_Kuechen_Leiste brightness $num");;}
Btw.: Man kann sowas auch generalisieren, ich habe dafür allerdings etwas andere Geräte, aber der "Steinbruch" dafür wäre hier zu finden: https://github.com/rejoe2/FHEM/blob/master/99_myUtils_MiLight.pm
Zitat von: ChristianH am 07 April 2020, 13:46:48
Tja, was soll ich sagen .... ist für mich das beste Leuchtmittel von IKEA, dimmt fliessend und auch die Farbwechsel sind stufenlos von warm zu kalt. Einbinden via MQTT2 war auch kein Problem und wenn man weiss, welches von den vielen zigbee2mqtt templates man nutzen sollte, dann ist das Einbinden kein Problem.
Vielen Dank für die Infos. Das steigert meine Neugier nach diesen Dingern noch mehr :) Wenn ich da mal was habe, kann ich hier auch sicherlich dann onTopic ein wenig mitreden :D
Zitat von: Beta-User am 07 April 2020, 16:34:02
@flummy1978: Evtl. magst du den setter für den shelly nochmal kritisch beäugen.....
Mache ich in den nächsten Tagen, spätestens wenn ich auch das andere mitmache. Ich werde dann im MQTT Thread antworten wenn ich Ergebnisse habe.
Grüße
Andreas
Ich habe nie behauptet ein Notify zu haben .... ob nun DOIF oder Notify ist ja meist Geschmackssache.
Danke, damit kann ich wohl alle Widrigkeiten umschiffen - verstehen tue ich es zwar nicht, aber es lässt sich wohl auch für Farbtemperatur anpassen.
Von daher, noch mal DANKE!
anbei noch der LIST:
Internals:
CFGFN
DEF MQTT2_zigbee_IkeaTasterKueche:click:.brightness_up {{ my $num=maxNum(ReadingsNum('Ikea_Kuechen_Leiste','brightness',0)+20,0);; fhem("set Ikea_Kuechen_Leiste brightness $num");;}}
FUUID 5e8ca774-f33f-a47d-e789-6b755647a5264c80
NAME NF.Ikea_Taster_Kueche_DIM_Up
NOTIFYDEV MQTT2_zigbee_IkeaTasterKueche
NR 466
NTFY_ORDER 50-DF.MQTT_Ikea_Taster_Kueche_DIM_Up_notify_1
REGEXP MQTT2_zigbee_IkeaTasterKueche:click:.brightness_up
STATE active
TRIGGERTIME 1586277787.4728
TYPE notify
Helper:
DBLOG:
state:
myDbLog:
TIME 1586277856.6006
VALUE active
READINGS:
2020-04-07 18:44:16 state active
Attributes:
Zitat von: Beta-User am 07 April 2020, 17:45:45
Aha, du hast also entweder "nur" ein Problem mit dem Eventhandler (DOIF kann ich nicht), oder du brauchst die Anpassung am MQTT2_DEVICE, damit das klappt.
Das ist kein Ding für ein Zoom-Meeting, das sind erhebliche Verständnislücken bei den Grundlagen...
Da wir bei Grundlagen sind: An der Syntax ist zu erkennen, dass du da wohl ein DOIF hast, aber wir täten uns ggf. leichter, wenn du schlicht und ergreifend die Konventionen hier einhalten könntest und list's liefern (bzw. für MQTT2_DEVICE auch gerne eine RAW-Definition)...
Aus der Hüfte würde ich ungetestet mal mit dem hier gehen:
define n_Ikeataster_Kueche notify MQTT2_zigbee_IkeaTasterKueche.click:.brightness_down { my $num=maxNum(ReadingsNum('Ikea_Kuechen_Leiste','brightness',0)-20,0);; fhem("set Ikea_Kuechen_Leiste brightness $num");;}
Btw.: Man kann sowas auch generalisieren, ich habe dafür allerdings etwas andere Geräte, aber der "Steinbruch" dafür wäre hier zu finden: https://github.com/rejoe2/FHEM/blob/master/99_myUtils_MiLight.pm (https://github.com/rejoe2/FHEM/blob/master/99_myUtils_MiLight.pm)
Hi,
der Code Funktioniert ja Prächtig. Ich habe es mit einem Tradfri Dimmtaster und einer Tradfri Bulb von Ikea am laufenn.
Jetzt die Frage: Wie bekomme ich es hin das ein längerer Tastendruck erkannt wird und das dimmen Praktisch von 0-100 über einen langen Klick realisiert wird?
Mein Momentaner Code:
define licht_heller notify Tadfri_Switch:brightness_up_click {{ my $num=maxNum(ReadingsNum('Ikea_lampe','brightness',0)+20,0);; fhem("set IKEA_lampe brightness $num");;}}
[/size][/size]Danke
Zitat von: kinghill am 19 Oktober 2020, 11:22:52
Jetzt die Frage: Wie bekomme ich es hin das ein längerer Tastendruck erkannt wird und das dimmen Praktisch von 0-100 über einen langen Klick realisiert wird?
Viele Wege führen nach Rom.
Der erste Schritt wäre, dass es überhaupt Events für "längerer Tastendruck" sowie das Release gibt (oder viele Events für "ist noch gedrückt"...?)...
Dann könntest du (z.B.):
- ein notify nutzen, um einen dimmup-Zyklus zu starten (ein sich selbst immer wieder aufrufender Code, bis volle Helligkeit erreicht ist oder abgebrochen wird;
- ein notify, das den Zyklus unterbricht, wenn das Loslassen-Event kommt.
Grundsätzlich kann man m.E. alle drei Events (long-up/down und Loslassen) in einem notify abhandeln, ich würde dazu aber immer noch etwas myUtils-Code gut finden, der das dann auseinanderfieselt, welche Reaktion erfolgen soll und wie die Dimmstufen ggf. ausfallen sollen.
(OT: Was soll das mit den doppelten geschweiften Klammern?)
Hallo,
vielen Dank für die ausfühliche Antwort.
Ich bin leider nicht so der fhem Crack und bin mir nicht sicher wie das aussehen könnte. Finde deine Vorschläge aber Super. Denke sie würden beide den gleichen Efekt erzielen.
Der Ikea Taster gibt bei langem druck das Event : brightness_up_click und beim los lasen das : brightness_stop_click.
Wie könnte so ein notify aussehen?
Die doppelten klammern sind natürlich blödsinn. Den Fehler hatte ich noch garnicht edntdeckt gehabt.
Zitat von: kinghill am 19 Oktober 2020, 15:21:49Wie könnte so ein notify aussehen?
So:
define licht_heller notify Tadfri_Switch:brightness_[a-z]+p_click|Tadfri_Switch:brightness_down_click { myDimm('Ikea_lampe',$EVENT)}
Den myUtils-Code müßtest du dann dazu noch basteln, Anleitung für den Einstieg findest du im Wiki unter https://wiki.fhem.de/wiki/99_myUtils_anlegen (https://wiki.fhem.de/wiki/99_myUtils_anlegen), guter Einstiegspunkt für unser Dimmer-Thema hier ist das letzte Beispiel "Countdown Timer" bei den Links oder das hier: https://forum.fhem.de/index.php/topic,115121.msg1093796.html#msg1093796 (https://forum.fhem.de/index.php/topic,115121.msg1093796.html#msg1093796) (ich finde es besser, sowas mit InternalTimer() zu lösen statt mit at, ist aber teilweise Geschmackssache).
Bevor ich keine eigenen Versuche oder wenigstens vernünftige lists hier sehe, werde ich nichts weiter dazu schreiben, siehe
Antw:In welcher Gruppe sollte ich meine Fragen stellen (https://forum.fhem.de/index.php/topic,13092.msg105687.html#msg105687) und
Unbedingt vor dem ersten Post lesen (https://forum.fhem.de/index.php/topic,71806.0.html).
Hallo zusammen,
nachdem ich gestern Abend ziemlich lange rum probiert habe, und zu keinem brauchbaren Ergebniss mit der 99_myUtils.pm gekommen bin, habe ich eine andere brauchbare Lösung über ein Doif gebastelt.
Ich bin leider kein Phytonkenner und bekomme so ein Programm einfach nicht geschrieben. Es war mir aber immerhin möglich den alten Zustand über die 99_myUtils.pm abzubilden.
Hier meine jetztige Löung:
Lampe heller dimmen
define licht_heller DOIF ([Tadfri_Switch] eq "brightness_up_click") { my $num=maxNum(ReadingsNum('IKEA_Lampe','brightness',0)+10,0);; fhem("set IKEALampe brightness $num")}
attr licht_heller repeatcmd 0.2
Das attr repeatcmd macht genau das was ich wollte, und wiederholt den Code alle 0,2 sekunden.
Lampe dunkler dimmen
define licht_dunkler DOIF ([Tadfri_Switch] eq "brightness_down_click" and [IKEALampe:brightness] >10 ) { my $num=maxNum(ReadingsNum(IKEALampe','brightness',0)-10,0);; fhem("set IKEALampe brightness $num")}
attr licht_dunkler repeatcmd 0.2
Hier habe ich noch eine zweite variable mit >10 eingebaut. Somit ist es nicht möglich die Lampe ganz OFF zu dimmen.
Ich hoffe da hilft jemandem weiter.
LG Frank
Naja, es fehlt aber eine Abbruchbedingung, sonst hört deine Wiederholung nie auf.
Dieser Einzeiler wiederholt alle 0.2 Sekunden bis brightness bei 100 angekommen ist:
defmod di_lamp_on DOIF {["Tadfri_Switch:brightness_up_click"];;set_Exec("timer",'$count == 0 ? 0 : 0.2','fhem_set("IKEALampe brightness ".(ReadingsNum("IKEA_Lampe","brightness",0)+10))','ReadingsNum("IKEA_Lampe","brightness",0) <= 100')}
siehe: https://fhem.de/commandref_DE.html#DOIF_set_Exec
Hi.
doch das funktioniert auch so Perfekt. Der Taster wechselt beim loslassen das Event brightness_up_click auf brightness_stop_click. Dadurch sind nicht mehr alle Bedingungen erfüllt und der Befehl wird gestopt.
Zitat von: kinghill am 20 Oktober 2020, 10:08:21
Hi.
doch das funktioniert auch so Perfekt. Der Taster wechselt beim loslassen das Event brightness_up_click auf brightness_stop_click. Dadurch sind nicht mehr alle Bedingungen erfüllt und der Befehl wird gestopt.
Dann ist ja alles bestens.