Dimmer von Ikea: Wie dimmen?

Begonnen von morfey, 02 Februar 2022, 12:01:54

Vorheriges Thema - Nächstes Thema

morfey

Hi zusammen,
nächster kleiner Schritt mit Fhem:
Ich habe einen Dimmer und eine Lampe von Ikea gekauft und möchte sie nun nutzen.
Über Froscon binde ich die beiden Geräte ein.
Mit Schaltern und Steckdosen kein Problem.
Bei schaltern und Steckdosen habe ich einfach ein Notify erstellt, dass beispielsweise beim auslösen des Events 101 eine Lampe auf on schaltet.
Wie bekomme ich es hin, dass eine lampe heller oder dunkler wird, wenn man den Dimmer auslöst? mein Schalter-Notify sieht etwa so aus:
define n_hauptschalter_on notify hauptschalter:1002 set lampe on
... sicherlich eine blöde frage, finde aber nichts konkret dazu ...

Danke!

Beta-User

Gibt es einen bestimmten Grund, warum du das nicht innerhalb des ZigBee-Systems direkt löst?

Mit Phoscon kann man Gruppen bilden, und es ist (je nach Fernbedienung) ggf. auch möglich, mit Hilfe von deCONZ (GUI) "bindings" herzustellen (die dann auch ohne laufendes deconz funktionieren).

Anders gesagt: Wer es in Hardware/hardwarenah löst, hat das Problem in der Tat nicht.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

morfey

Hi,
ja gibt es: zum Einen möchte ich zusetzlich die Lampe über Homekit mit meinem Iphone steuern können (Homekit läuft schon mit Fhem) und zum Anderen soll in der zweiten Ausbaustufe das Licht zeitgesteuert abgeschaltet werden.

Beta-User

Beim ersten Punkt verstehe ich nicht, warum da eine direkte Schaltung in der Hardware hinderlich sein sollte (unterstellt, die Lampe meldet dann ihren Status an deconz/FHEM - was nicht bei allen Typen der Fall ist). Normale Gruppenfunktionen habe ich jedenfalls auch, und da sieht man den Status der Leuchten/Gruppen in FHEM, soweit ich das bisher geprüft habe. Damit sollte eigentlich auch ein angebissener Apfel klarkommen.

Was den 2. Fall angeht, ist die Frage, ob nach einem Tastendruck bei bestehendem Binding ein Taster-Event kommt. Bei Gruppenfunktion ist jedenfalls auch das der Fall (an dem FB-"Sensor").

Aber jeder wie er kann und mag ;) .
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

morfey

Hi,
ok, evtl. könnte das wirklich eine Lösung sein ... ist das in Fhem denn so kompliziert zu realisieren? Fhem muss doch auch in der Lage sein, Dimmer und das Dimmen zu verarbeiten ... gibt es dazu irgendwo passende Dokumentation?

Beta-User

#5
 ;D klar kann FHEM das, wenn es sein muss - schon gleich, wenn es darum geht, hardware-übergreifend Lösungen zu basteln 8) .

Ich habe nur zwischenzeitlich die Erfahrung gemacht, dass es sehr viel besser funktioniert, wenn man es anders macht und daher die betreffenden notify alle wieder gelöscht, (nach dem Umzug bzww. Umbau zu ZigBee2ZigBee bzw. ZWave2ZWave...). Gewisse Verzögerungen lassen sich so nämlich nicht komplett eliminieren, das war mir zu blöd und auch von der allgemeinen Akzeptanz ist es "direkt" sehr viel besser...

Eine Variante: kurzer Tastendruck: toggle.
langer Tastendruck: Hoch- bzw. runterdimmen mit ramptime (Doku in der commandref zu HUEDevice, Zeit errechnet aus dem vorhandenen Wert, Richtung dto.) starten, wenn loslassen kommt: anhalten...
Oder ein rekursiver Selbstaufruf einer Perl-Funktion ("sub" in myUtils), der solange weitermacht, bis ganz an oder ganz aus ist oder die Taste losgelassen wurde...

Ich würde das (wieder) mit notify machen, gibt aber unter dem Stichwort "dimmen" sicher auch Lösungen mit DOIF (in "normal" und in Perl), wenn dir das besser gefällt und deine Suche erfolgreich ist :P .

EDIT: Einer der Treffer bei einer schnellen Suche ist sogar ein Codeschnippsel von mir: https://forum.fhem.de/index.php/topic,100097.0.html
Geht aber von einem Homematic-Event und "Dauerfunk" aus...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

morfey

Hi!
Danke für die Antworten! Leider finde ich dazu echt wenig ... könnte ich dich um ein Code-Beispiel für ein entsprechendes Notify bitten?

Danke!

Beta-User

#7
Hier mal eines meiner aktuellen notify für einen ZigBee (HUEDevice)-Taster:
define n_Taster_Spuele_dispatch notify Taster_Spuele:.00. { \
if ($EVENT == 3002) {\
    return CommandSet(undef, 'Dunstabzug light_on_off');;}\
if ($EVENT == 6005) {\
    my $command = (ReadingsVal('myMPD','state','play') =~ m{stop} ) ? 'play' : 'pause';;\
    return CommandSet(undef, "myMPD $command");;}\
}

Das
CommandSet(undef, "myMPD $command");ist eher die Abkürzung für Spezialisten, üblicherweise würdest du eher sowas coden:fhem("set myMPD $command");

Zum verlinkten "dim"-Code gibt es eine kleine commandref (aufzurufen mit help myUtils_MiLight). (Der ist aber auch schon "alt" und vermutlich würde ich heute manches auch wieder anders machen; es gibt dazu auch ein "update", sehe ich grade: https://forum.fhem.de/index.php/topic,103493.msg972085.html#msg972085; die dort gezeigten notify sind aber auch nicht optimal, da ohne NOTIFYDEV).
Da holt sich jedenfalls der Code das eigentliche Zieldevice aus eine Attribut (das man als userattr ergänzen muss).

Nachtrag: Hier noch was aus meiner "proudly found elsewhere"-Kiste:
#https://forum.fhem.de/index.php/topic,115067.msg1093484.html#msg1093484
sub incrementHerdLicht() {
  my $pct = ReadingsNum("KuecheHerdLichtLinks", "pct", "");
  my $schalter = ReadingsVal("SchalterHerdLicht", "state", "");
  #Log 1,"incrementHerdLicht : pct ".$pct." schalter ".$schalter;
  if ($pct < 100 && $schalter ne "1003") {
    fhem("set KuecheHerdLichtLinks dimUp;sleep 0.2;set KuecheHerdLichtRechts dimUp");
    fhem("sleep 0.5;{incrementHerdLicht()}");
  }
}

#own code, see https://forum.fhem.de/index.php/topic,115722.msg1100046.html#msg1100046
sub myDimUp_PctToMax {
  my $name   = shift // return;
  my $maxval = shift // 100;
  my $remote = shift;
  my $remotestop = shift // '1003';

  my $pct = ReadingsNum($name, 'pct', 0) +3;
  my $schalter = ReadingsVal($remote, "state", "");
  if ($pct < 103 && $schalter ne $remotestop) {
    fhem("set $name pct $pct");
    fhem("sleep 0.5;{myDimUp_PctToMax($name, 100, $remote, $remotestop)}");
  }
}
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files