IKEA Tradfri Schalter (von Schaltsteckdose) als Dimmer nutzen

Begonnen von kermitthefrog, 01 November 2019, 22:17:53

Vorheriges Thema - Nächstes Thema

kermitthefrog

Moin zusammen,

ich habe über einen conbeeII /deconz IKEA devices in FHEM eingebunden. Unter anderem auch einen Sensor (Schalter), und zwar den zu den Schaltsteckdosen von IKEA/Tradfri. Das List zu dem device sieht wie folgt aus:
Internals:
   CFGFN     
   DEF        sensor 3  IODev=deCONZ
   FUUID      5dbc70eb-f33f-7d16-ec21-7b29c42b0aec0730
   FVERSION   31_HUEDevice.pm:0.203190/2019-10-06
   ID         S3
   INTERVAL   
   IODev      deCONZ
   NAME       Schalter_IKEA
   NR         12721
   STATE      2002
   TYPE       HUEDevice
   lastupdated 2019-11-01 21:07:07
   lastupdated_local 2019-11-01 23:07:07
   manufacturername IKEA of Sweden
   modelid    TRADFRI on/off switch
   name       TRADFRI on/off switch
   on         1
   reachable  1
   swversion  2.2.008
   type       ZHASwitch
   uniqueid   00:0d:6f:ff:fe:a7:fa:a5-01-1000
   READINGS:
     2019-11-01 21:47:15   battery         34
     2019-11-01 21:47:15   reachable       1
     2019-11-01 23:07:07   state           2002
   helper:
     devtype    S
     reachable  0
     update_timeout 1
     configList:
     setList:
Attributes:
   IODev      deCONZ
   room       HUEDevice


Der Schalter/Device erzeugt folgende State "Infos":

1001 während man lange auf An drückt
1002 bei kurzen Drücken auf An
1003 nachdem man lange auf An gedrückt hat und wieder loslässt

2001 während man lange auf Aus drückt
2002 bei kurzem Drücken auf Aus
2003 nachdem man lange auf Aus gedrückt hat und wieder loslässt

Über ein Doif auf An/Aus zu triggern bekomme ich hin, aber mir fehlt der Ansatz, wie ich die DimmerFunktionalität umsetze.

Dimmer-Dummy und diesen über ein DOIF steuern?
userReadings innerhalb des eigentlichen Device?
Ganz anders?

Vielen Dank für nen kleinen Hinweis...

Kermit

Gunther

#1
Ich würde das Thema gerne nochmal hoch holen. Ich stehe vor der gleichen Herusforderung.

Hast Du schon eine Lösung gefunden?

Ich nutze die Fernbedienung. Folgendes liefern die Tasten:
# 1002 - Power
#
# 2002 - hochdimmen kurz
# 2001 - hochdimmen lang
# 2003 - hochdimmen loslassen
#
# 3002 - runterdimmen kurz
# 3001 - runterdimmen lang
# 3003 - runterdimmen loslassen
#
# 4002 - links kurz
# 4001 - links lang
# 4003 - links loslassen
#
# 5002 - rechts kurz
# 5001 - rechts lang
# 5003 - rechts loslassen


Da eine Taste bei längerem Drücken nur einen Wert zurückgibt (z. B. 2001), könnte man ja so lange z. B. ein
set hm_dimm_device up
zum hochdimmen ausführen, bis der Wert des Loslassens kommt (z. B. 2003).

Jetzt ist die Frage: Wie macht man es, dass die Dimm-Funktion wie beim internen Taster solange gedrückt gehalten wird?
Kann man da irgendwie mit
set hm_dimm_device pressL
arbeiten (lange Arbeitszeit vorgeben) und den Befehl durch einen weiteren Trigger (2003) abbrechen?
(*wahrscheinlich ist damit aber Dimmen nicht möglich... :-| )

Freue mich über Anregungen. Dimmen muss doch irgendwie mögliich sein, ohne x Mal eine Taste zu drücken...


EDIT: Habe hier eröffnet, da es eher kein Zigbee-spezifisches Thema ist:
https://forum.fhem.de/index.php/topic,105604.0.html
Antworten gerne dort.
FHEM@Proxmox@Nuc: TabletUI als User-Interface (4 Wandtablets) / IOs per ser2net gekapselt
Homematic: Heizung, Fenster, Bewegung | Jeelink: Temperatur | Z-Wave: Bewegung, Temperatur | FS20: Temperatur, Fenster | Viessmann-Heizung eingebunden

binford6000

Da hänge ich mich auch mal dran. Hab ebenfalls die runde FB und "dimme" eine HUEGroup über dimUp/Down tastendruckweise   ???
VG Sebastian

Byte09

#3
ich stelle jetzt einfach mal in den Raum , das diese Umsetzung mit einem MSwitch kein Problem ist . Ich habe aber keine Lust das ins blaue zusammenzustellen . Bei Interesse sagt bescheid, dann baue ich etwas.

gruss Byte09


edit: habe doch mal was gebaut , dieses MSwitch übernimmt die komplette steuerung ( siehe anhang ) . Raw bei Bedarf.

binford6000

Zitatedit: habe doch mal was gebaut , dieses MSwitch übernimmt die komplette steuerung ( siehe anhang ) . Raw bei Bedarf.
^

Bedarf  :)
VG Sebastian

Falkenstein


Gunther

Auch wenn ich eine Lösung habe (vgl. Link oben), habe ich auch Interesse!
FHEM@Proxmox@Nuc: TabletUI als User-Interface (4 Wandtablets) / IOs per ser2net gekapselt
Homematic: Heizung, Fenster, Bewegung | Jeelink: Temperatur | Z-Wave: Bewegung, Temperatur | FS20: Temperatur, Fenster | Viessmann-Heizung eingebunden

Byte09

#7
vorab: wer bisher überwiegend DOIF,Notify etc. in seinem System einsetzt sollte im Grunde dabei bleiben.
Der Einsatz vom MSwitch macht eigentlich nur dann wirklich sinn , wenn es von vornherein konsequent eingesetzt wird, da hier eigentlich das Ziel war , ein Modul für alles zu haben - um genau das zu vermeiden , das  x module für x einzatzzwecke benötigt werden . Da alles was mit MSwitch zu erreichen ist auch mit anderen Modulen geht muss man sich ja nicht wirklich in noch eine Syntax etc. einarbeiten.  ;)


folgende Rawdefinition komplett einspielen . es werden 2 devices im Raum MSwitch_Devices angelegt .

ein MSwitch-dummy (Tradfrisimulation) , diese simuliert nur die Fernbedienung und sendet EVENTS mit den Befehlen ( Zahlencodes ) des ersten Beitrages.

die eigentliche Steuerung ist 'steuerung' , dieses MSwitch übernimmt die Steuerung.

Eingestellt ist das ganze jetzt für eine HUE mit dem Namen "HUEDevice2" . Wenn diese im System nicht vorhanden ist sollte ein roter Warnhinweis erfolgen :

'Achtung: Dieses Device ist nicht vorhanden , bitte mit "set change_renamed" korrigieren !'

eine Korrektur kann mit dem Befehl ( Dropdownliste SET )
set steuerung change_renamed HUEdevice2 NAME-EURES-DEVICES erfolgen , danach bitte auf 'Befehle speichern' bzw. 'modify actions' ( je nach spracheinstellung ) klicken . danach sollte die Lampe über die simulierte Fernbedienung steuerbar sein. ( so zumindest der plan ;-)

gruss Byte09

defmod Steuerung MSwitch Tradfrisimulation     # MSwitch_Self HUEDevice2
attr Steuerung MSwitch_Comments 1
attr Steuerung MSwitch_Debug 1
attr Steuerung MSwitch_Delete_Delays 1
attr Steuerung MSwitch_Event_Id_Distributor state:1002=>cmd1 ID 1\
state:2002=>cmd2 ID 1\
state:1001=>cmd1 ID 2\
state:2001=>cmd2 ID 2\

attr Steuerung MSwitch_Eventhistory 0
attr Steuerung MSwitch_Expert 1
attr Steuerung MSwitch_Extensions 0
attr Steuerung MSwitch_Help 0
attr Steuerung MSwitch_Ignore_Types notify allowed at watchdog doif fhem2fhem telnet FileLog readingsGroup FHEMWEB autocreate eventtypes readingsproxy svg cul
attr Steuerung MSwitch_Include_Devicecmds 1
attr Steuerung MSwitch_Include_MSwitchcmds 0
attr Steuerung MSwitch_Include_Webcmds 0
attr Steuerung MSwitch_Inforoom MSwitch
attr Steuerung MSwitch_Lock_Quickedit 1
attr Steuerung MSwitch_Mode Notify
attr Steuerung MSwitch_Safemode 1
attr Steuerung room MSwitch_Devices


defmod Tradfrisimulation MSwitch # nodevices
attr Tradfrisimulation MSwitch_Debug 0
attr Tradfrisimulation MSwitch_Eventhistory 0
attr Tradfrisimulation MSwitch_Expert 0
attr Tradfrisimulation MSwitch_Help 0
attr Tradfrisimulation MSwitch_Ignore_Types notify allowed at watchdog doif fhem2fhem telnet FileLog readingsGroup FHEMWEB autocreate eventtypes readingsproxy svg cul
attr Tradfrisimulation MSwitch_Inforoom MSwitch
attr Tradfrisimulation MSwitch_Mode Dummy
attr Tradfrisimulation eventMap 1002:on 1001:DimUp 1003:DimUpStop 2002:off 2001:DimDown 2003:DimDownStop
attr Tradfrisimulation room MSwitch_Devices
attr Tradfrisimulation setList 1001 1002 1003 2001 2002 2003
attr Tradfrisimulation webCmd on:off:DimUp:DimDown:DimUpStop:DimDownStop


setstate Steuerung active
setstate Steuerung 2019-11-23 09:26:32 .Device_Affected HUEDevice2-AbsCmd1,HUEDevice2-AbsCmd2,MSwitch_Self-AbsCmd1
setstate Steuerung 2019-11-23 09:28:09 .Device_Affected_Details HUEDevice2-AbsCmd1#[NF]on#[NF]off#[NF]#[NF]#[NF]delay1#[NF]delay1#[NF]00#[dp]00#[dp]00#[NF]00#[dp]00#[dp]00#[NF]#[NF]#[NF]0#[NF]0#[NF]1#[NF]1#[NF]on#[sp]oder#[sp]off#[sp]mit#[sp]kurzem#[sp]tastendruck#[sp]DEVICE#[sp]muss#[sp]angepasst#[sp]werden#[NF]0#[NF]0#[NF]1#[ND]HUEDevice2-AbsCmd2#[NF]dimUp#[NF]dimDown#[NF]#[NF]#[NF]delay1#[NF]delay1#[NF]00#[dp]00#[dp]00#[NF]00#[dp]00#[dp]00#[NF][Tradfrisimulation#[dp]state]#[sp]=#[sp]1001#[sp]AND#[sp][HUEDevice2#[dp]pct]#[sp]<#[sp]100#[NF][Tradfrisimulation#[dp]state]#[sp]=#[sp]2001#[sp]AND#[sp][HUEDevice2#[dp]pct]#[sp]>#[sp]0#[NF]0#[NF]0#[NF]1#[NF]2#[NF]dimup#[sp]und#[sp]dimdown#[sp]#[sp]mit#[sp]langen#[sp]tastendruck#[NF]0#[NF]0#[NF]2#[ND]MSwitch_Self-AbsCmd1#[NF]exec_cmd_1#[NF]exec_cmd_2#[NF]ID#[sp]2#[NF]ID#[sp]2#[NF]delay1#[NF]delay1#[NF]00#[dp]00#[dp]01#[NF]00#[dp]00#[dp]01#[NF][Tradfrisimulation#[dp]state]#[sp]=#[sp]1001#[sp]AND#[sp][HUEDevice2#[dp]pct]#[sp]<#[sp]100#[NF][Tradfrisimulation#[dp]state]#[sp]=#[sp]2001#[sp]AND#[sp][HUEDevice2#[dp]pct]#[sp]>#[sp]0#[NF]0#[NF]0#[NF]2#[NF]2#[NF]dimup#[sp]und#[sp]dimdown#[sp]#[sp]mit#[sp]langen#[sp]tastendruck#[NF]0#[NF]0#[NF]3
setstate Steuerung 2019-11-23 09:28:33 .Device_Events state:1002 #[tr]state:2002 #[tr]state:2003 #[tr]state:1001 #[tr]state:2001
setstate Steuerung 2019-11-22 17:24:07 .First_init done
setstate Steuerung 2019-11-22 17:26:43 .Trigger_cmd_off state:.*
setstate Steuerung 2019-11-22 17:26:43 .Trigger_cmd_on state:.*
setstate Steuerung 2019-11-22 17:24:44 .Trigger_condition
setstate Steuerung 2019-11-22 17:26:43 .Trigger_off no_trigger
setstate Steuerung 2019-11-22 17:26:43 .Trigger_on no_trigger
setstate Steuerung 2019-11-22 17:24:44 .Trigger_time
setstate Steuerung 2019-11-22 17:24:07 .V_Check V2.00
setstate Steuerung 2019-11-23 09:26:53 .sortby priority
setstate Steuerung 2019-11-23 09:28:33 EVENT state:2003
setstate Steuerung 2019-11-23 09:28:33 EVTFULL Tradfrisimulation:state:2003
setstate Steuerung 2019-11-23 09:28:33 EVTPART1 Tradfrisimulation
setstate Steuerung 2019-11-23 09:28:33 EVTPART2 state
setstate Steuerung 2019-11-23 09:28:33 EVTPART3 2003
setstate Steuerung 2019-11-23 09:21:01 Trigger_device Tradfrisimulation
setstate Steuerung 2019-11-22 17:26:43 Trigger_log on
setstate Steuerung 2019-11-23 09:28:33 last_activation_by event
setstate Steuerung 2019-11-23 09:28:33 last_cmd 1
setstate Steuerung 2019-11-23 09:28:33 last_event state:2003
setstate Steuerung 2019-11-23 09:28:33 last_exec_cmd set Steuerung exec_cmd_1 ID 2
setstate Steuerung 2019-11-23 09:28:33 state active
setstate Steuerung 2019-11-23 09:07:56 tocontrol HUEDevice2

setstate Tradfrisimulation DimDownStop
setstate Tradfrisimulation 2019-11-22 17:17:25 .Device_Affected no_device
setstate Tradfrisimulation 2019-11-22 17:17:25 .Device_Events no_trigger
setstate Tradfrisimulation 2019-11-22 17:17:25 .First_init done
setstate Tradfrisimulation 2019-11-22 17:17:25 .Trigger_cmd_off no_trigger
setstate Tradfrisimulation 2019-11-22 17:17:25 .Trigger_cmd_on no_trigger
setstate Tradfrisimulation 2019-11-22 17:17:25 .Trigger_off no_trigger
setstate Tradfrisimulation 2019-11-22 17:17:25 .Trigger_on no_trigger
setstate Tradfrisimulation 2019-11-22 17:17:25 .V_Check V2.00
setstate Tradfrisimulation 2019-11-22 17:17:25 Trigger_log off
setstate Tradfrisimulation 2019-11-23 09:28:33 state 2003

binford6000

#8
Zitatset steuerung change_renamed HUEdevice2 NAME-EURES-DEVICES erfolgen

das muss dann aber so lauten mit deinen Devices:
set Steuerung change_renamed HUEDevice2 NAME-EURES-DEVICES

VG Sebastian

binford6000

Habs mal quick and dirty mit der Stehlampe probiert: Passt!  :)

VG Sebastian

binford6000

Zitat von: Byte09 am 23 November 2019, 09:53:01
vorab: wer bisher überwiegend DOIF,Notify etc. in seinem System einsetzt sollte im Grunde dabei bleiben.
Der Einsatz vom MSwitch macht eigentlich nur dann wirklich sinn , wenn es von vornherein konsequent eingesetzt wird, da hier eigentlich das Ziel war , ein Modul für alles zu haben - um genau das zu vermeiden , das  x module für x einzatzzwecke benötigt werden . Da alles was mit MSwitch zu erreichen ist auch mit anderen Modulen geht muss man sich ja nicht wirklich in noch eine Syntax etc. einarbeiten.  ;)

Hallo Thomas,
du hast in deinem Beispiel
state:1002=>cmd1 ID 1state:2002=>cmd2 ID 1
1002 für on und 2002 für off gewählt.

Was müsste ich einstellen, um für den Event "1002" des Tradfri Schalters eine Art toggle zu bekommen?
Momentan macht das noch mein notify:
if ($EVENT == 1002) {
# mitte
fhem("set media.ms:FILTER=STATE=on off");
fhem("set media.ms:FILTER=STATE=off on");
}


Ich würde aber gerne die komplette Steuerung (1002,n001-n003) (wie Gunther das beschrieben hat) über EINEN MSwitch realisieren  :)
2001/3 und 3001/3 habe ich bereits ändern können. 2002,3002, 4001/2/3 sowie 5001/2/3 fehlen noch.

VG Sebastian

Byte09

hi Sebastian,

bin noch am schaffen und schaue mir das an, wenn ich zu hause bin.

wenn du lust hast können wir ggf. telefonieren... ist mit sicherheit einfacher. Falls du magst lass mir doch deine nummer im Postfach.



gruss thomas

Gesendet von meinem ELE-L29 mit Tapatalk


Byte09

wenn du in den Befehlsausführungen statt des devices direkt ( war in meinem beispiel HUEDeviceX ) ein FreeCMD wählst kannst du den code im grunde so verwenden wie du ihn hast und die schaltbedingung in den Bedingungen setzen
{
fhem("set media.ms:FILTER=STATE=on off");
fhem("set media.ms:FILTER=STATE=off on");
}


gruss Thomas





binford6000

Zitat von: Byte09 am 26 November 2019, 14:56:19
hi Sebastian,
bin noch am schaffen und schaue mir das an, wenn ich zu hause bin.
wenn du lust hast können wir ggf. telefonieren... ist mit sicherheit einfacher. Falls du magst lass mir doch deine nummer im Postfach.

gruss thomas

Gesendet von meinem ELE-L29 mit Tapatalk

Hi Thomas,
danke für dein Hilfsangebot! Aber ich habe für jetzt für mich beschlossen, nur die langen Tastendrücke über jeweils ein MSwitch Device zu erledigen.
Die kurzen Tastendrücke erledige ich weiterhin über mein notify. Ein MSwitch für alles wird mir zu unübersichtlich  ;D

VG Sebastian