Unterstützung neuste AHA Commands 04.2020

Begonnen von roedler86, 30 Mai 2020, 14:06:19

Vorheriges Thema - Nächstes Thema

amenomade

Zitat von: roedler86 am 08 Juni 2020, 00:05:55


Durch deine eingebaute Logik If the bulb was in "color" mode, it will change to "white" mode. schaltet dann die Lampe wieder auf weiß. Könntest du den switch mode nur dann machen, wenn die angegebene Temperatur höher 2000 K oder so ist? Dann sollte es meiner Meinung nach perfekt sein.

Neue Version. colortemperature <2500 wird ignoriert
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

roedler86

#31
Damit klappt jetzt die Farbauswahl in der HomeKit App auch per Colorpicker. Irgendwie scheitern zwar noch die Vorauswahlen/Favoriten, aber das muss ich mir mal in Ruhe anschauen.

Nochmal vielen Dank!

amenomade

Zitat von: roedler86 am 08 Juni 2020, 01:13:14
Irgendwie scheitern zwar noch die Vorauswahlen/Favoriten, aber das muss ich mir mal in Ruhe anschauen.

Dann warte ich auf deine Analyse, bevor ich den Patch für Rudi erstelle.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

amenomade

Hast Du schon eine Rückmeldung für uns?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

roedler86

#34
Ich bin immer noch am Testen. Kann gar nicht richtig in Worte fassen, was die App so komisches macht.

Ich habe mir extra schon einen Dummy angelegt, um herauszufinden, ob es an der Lampe oder an Apples HomeKit-App liegt.


defmod DECT_500_Kinderzimmer_dummy dummy
attr DECT_500_Kinderzimmer_dummy genericDeviceType light
attr DECT_500_Kinderzimmer_dummy homebridgeMapping Brightness=dim,minValue=0,maxValue=100,minStep=1,cmd=dim\
Hue=hue,cmd=hue,minStep=1\
Saturation=saturation,factor=0.392156862745098,maxValue=255,cmd=saturation,minStep=1\
ColorTemperature=colortemperature,factor=0.1,cmd=colortemperature,minValvue=1,minStep=1\
StatusActive=present,valueOn=yes,valueOff=no\
On=state
attr DECT_500_Kinderzimmer_dummy readingList dim hue saturation colortemperature present state
attr DECT_500_Kinderzimmer_dummy room HomeKitLabor,Kinderzimmer
attr DECT_500_Kinderzimmer_dummy setList dim hue saturation colortemperature present state on off

setstate DECT_500_Kinderzimmer_dummy on
setstate DECT_500_Kinderzimmer_dummy 2020-06-11 23:50:03 colortemperature 5000
setstate DECT_500_Kinderzimmer_dummy 2020-06-11 23:45:48 dim 51
setstate DECT_500_Kinderzimmer_dummy 2020-06-11 23:57:20 hue 336
setstate DECT_500_Kinderzimmer_dummy 2020-06-11 20:54:00 present yes
setstate DECT_500_Kinderzimmer_dummy 2020-06-11 23:57:20 saturation 255
setstate DECT_500_Kinderzimmer_dummy 2020-06-11 23:45:48 state on


Was ich dabei herausgefunden habe, ist, dass sich das HomeKit von unterschiedlichen iOS Versionen different verhält. So wird bspw. nur in der älteren Version die ColorTemperatur bei jeder Änderung der Farbe mitgesendet. Die Beschränkung auf >2500 K ist hinfällig, da Apple die Temperatur-Werte zehntelt und somit 500 auf 5000 gemappt werden.

Aber um hier weiter oder zu einem Abschluss zu kommen:

- Die Beschränkung auf > 2500 K kann wieder raus.
- Wäre es möglich den Modus-Wechsel nur dann durchzuführen, wenn sich der bzw. die Werte auch wirklich geändert haben? Also wenn ich in Color-Mode bin und das alte HomeKit bei jeder Farbänderung auch immer wieder die gleichbleibende Farbtemperatur schickt, bleibt der ColorMode aktiv?

amenomade

#35
Danke für die Rückmeldung.

Zitat von: roedler86 am 13 Juni 2020, 00:03:57

- Wäre es möglich den Modus-Wechsel nur dann durchzuführen, wenn sich der bzw. die Werte auch wirklich geändert haben? Also wenn ich in Color-Mode bin und das alte HomeKit bei jeder Farbänderung auch immer wieder die gleichbleibende Farbtemperatur schickt, bleibt der ColorMode aktiv?
Also, technisch ist alles möglich. Das wird aber langsam sehr "homebridge" spezifisch, was in einem FBDECT Modul wenig Sinn macht.

In der App (zumindest die Version, die ich jetzt benutzte) gibt es zwei Reiter: einmal Weiss und einmal Farbe. Wenn man den Reiter wechselt, wechselt die Lampe auch.
Ich könnte die Logik so ändern:
- die Änderung von Hue & Saturation oder von Temperature ändert den Modus nicht
- ein zusätzliches Kommando setzt tatsächlich den Modus.

Das Problem ist, dass, abhängig vom Modus, die Werte von der Fritzbox gemeldetwerden oder nicht. Wenn man z.B. im Farbmodus ist, könnte man "im Hintergrund" die Temperatur wechseln, ohne dass etwas passiert. Aber erst nach Schalten zum Weissmodus würde man merken, dass die Einstellung sich geändert hat. Ein bisschen unabsehbar...
Zusätzlich müsste man eine evtle externe Steuerung (z.B. mit der App) merken. Das kriegt man aber durch den "current_mode" gemeldet.

Wäre das eine Lösung? Wie würde dann der Homebridge den Modus wechseln?

EDIT: hier die Definition im Homebridge:
export class Lightbulb extends Service {

  static UUID: string = '00000043-0000-1000-8000-0026BB765291';

  constructor(displayName?: string, subtype?: string) {
    super(displayName, Lightbulb.UUID, subtype);

    // Required Characteristics
    this.addCharacteristic(Characteristic.On);

    // Optional Characteristics
    this.addOptionalCharacteristic(Characteristic.Brightness);
    this.addOptionalCharacteristic(Characteristic.Hue);
    this.addOptionalCharacteristic(Characteristic.Saturation);
    this.addOptionalCharacteristic(Characteristic.Name);
    this.addOptionalCharacteristic(Characteristic.ColorTemperature); //Manual fix to add temperature
  }
}

Es gibt tatsächlich keine für den weiss/farbe Modus
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

amenomade

Die AHA Schnittstelle hat übrigens nur 2 mögliche Kommandos:
setcolor&hue=$hue&saturation=$saturation&duration=0
setcolortemperature&temperature=$temperature&duration=0

Das Wechseln des Modus erfolgt abhängig vom Kommando.

Wenn homebridge alles schickt, so dass beide Kommandos nacheinander ausgeführt werden, dann kann man das Wechslen nicht verhindern.
Ich überlege nochmal weiter...
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

amenomade

#37
Anscheinend haben andere ähnliche Problemen:
https://github.com/homebridge/HAP-NodeJS/issues/618
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

amenomade

Und übrigens: bist Du sicher, dass "Apple die Temperatur-Werte zehntelt"?
Laut Apple Doku: https://developer.apple.com/documentation/homekit/hmcharacteristictypecolortemperature
ZitatThe corresponding value is an integer representing the color temperature in micro-reciprocal degrees (mired), which is 1,000,000 divided by the color temperature in kelvins. For example, to emulate a traditional tungsten light with a color temperature of 3200 K, use a mired value of about 312.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

amenomade

Ist es das gleiche, wenn Du im Weiss Modus bin, sprich: werden auch Hue und Sat immer mit der Temperatur mitgeschickt?
Wenn nicht, hätte ich vielleicht eine Lösung.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

roedler86

Zitat von: amenomade am 13 Juni 2020, 01:14:41
Und übrigens: bist Du sicher, dass "Apple die Temperatur-Werte zehntelt"?
Laut Apple Doku: https://developer.apple.com/documentation/homekit/hmcharacteristictypecolortemperature

Du hast Recht. Leider. Da muss ich anscheinend doch weiter ausholen, um micro-reciprocal in Kelvin mittels Faktor umzurechnen. Mal sehen.

roedler86

#41
Zitat von: amenomade am 13 Juni 2020, 01:53:38
Ist es das gleiche, wenn Du im Weiss Modus bin, sprich: werden auch Hue und Sat immer mit der Temperatur mitgeschickt?
Wenn nicht, hätte ich vielleicht eine Lösung.

In der aktuellen HomeKit App werden nur die Werte der Farbtemperatur gesendet:



[2020-6-14 14:53:32] [FHEM] DECT_500_Kinderzimmer_dummy: executing set cmd for ColorTemperature with value 150
[2020-6-14 14:53:32] [FHEM]   executing: http://127.0.0.1:8083/fhem?cmd=set%20DECT_500_Kinderzimmer_dummy%20colortemperature%201500&fwcsrf=csrf_123466393831291&XHR=1
  2020-06-14 14:53:32 caching: DECT_500_Kinderzimmer_dummy-colortemperature: 1500
[2020-6-14 14:53:32] [FHEM]     caching: ColorTemperature: 150 (as number; from '1500')
[2020-6-14 14:53:32] [FHEM] DECT_500_Kinderzimmer_dummy: executing set cmd for ColorTemperature with value 148
[2020-6-14 14:53:32] [FHEM]   executing: http://127.0.0.1:8083/fhem?cmd=set%20DECT_500_Kinderzimmer_dummy%20colortemperature%201480&fwcsrf=csrf_123466393831291&XHR=1
  2020-06-14 14:53:32 caching: DECT_500_Kinderzimmer_dummy-colortemperature: 1480
[2020-6-14 14:53:32] [FHEM]     caching: ColorTemperature: 148 (as number; from '1480')
[2020-6-14 14:53:32] [FHEM] DECT_500_Kinderzimmer_dummy: executing set cmd for ColorTemperature with value 147
[2020-6-14 14:53:32] [FHEM]   executing: http://127.0.0.1:8083/fhem?cmd=set%20DECT_500_Kinderzimmer_dummy%20colortemperature%201470&fwcsrf=csrf_123466393831291&XHR=1
  2020-06-14 14:53:33 caching: DECT_500_Kinderzimmer_dummy-colortemperature: 1470
[2020-6-14 14:53:33] [FHEM]     caching: ColorTemperature: 147 (as number; from '1470')
[2020-6-14 14:53:33] [FHEM] DECT_500_Kinderzimmer_dummy: executing set cmd for ColorTemperature with value 142
[2020-6-14 14:53:33] [FHEM]   executing: http://127.0.0.1:8083/fhem?cmd=set%20DECT_500_Kinderzimmer_dummy%20colortemperature%201420&fwcsrf=csrf_123466393831291&XHR=1
  2020-06-14 14:53:33 caching: DECT_500_Kinderzimmer_dummy-colortemperature: 1420
[2020-6-14 14:53:33] [FHEM]     caching: ColorTemperature: 142 (as number; from '1420')
[2020-6-14 14:53:34] [FHEM] DECT_500_Kinderzimmer_dummy: executing set cmd for ColorTemperature with value 140
[2020-6-14 14:53:34] [FHEM]   executing: http://127.0.0.1:8083/fhem?cmd=set%20DECT_500_Kinderzimmer_dummy%20colortemperature%201400&fwcsrf=csrf_123466393831291&XHR=1
  2020-06-14 14:53:34 caching: DECT_500_Kinderzimmer_dummy-colortemperature: 1400
[2020-6-14 14:53:34] [FHEM]     caching: ColorTemperature: 140 (as number; from '1400')
  2020-06-14 14:53:35 caching: DECT200_Kueche_Licht-voltage: 236.570 V
[2020-6-14 14:53:35] [FHEM]     caching: Custom Voltage: 236.57 (as number; from '236.570 V')
  2020-06-14 14:53:35 caching: DECT200_Farbdrucker-voltage: 235.762 V
[2020-6-14 14:53:35] [FHEM]     caching: Custom Voltage: 235.762 (as number; from '235.762 V')
[2020-6-14 14:53:37] [FHEM] DECT_500_Kinderzimmer_dummy: executing set cmd for ColorTemperature with value 143
[2020-6-14 14:53:37] [FHEM]   executing: http://127.0.0.1:8083/fhem?cmd=set%20DECT_500_Kinderzimmer_dummy%20colortemperature%201430&fwcsrf=csrf_123466393831291&XHR=1
  2020-06-14 14:53:37 caching: DECT_500_Kinderzimmer_dummy-colortemperature: 1430
[2020-6-14 14:53:37] [FHEM]     caching: ColorTemperature: 143 (as number; from '1430')
[2020-6-14 14:53:37] [FHEM] DECT_500_Kinderzimmer_dummy: executing set cmd for ColorTemperature with value 146
[2020-6-14 14:53:37] [FHEM]   executing: http://127.0.0.1:8083/fhem?cmd=set%20DECT_500_Kinderzimmer_dummy%20colortemperature%201460&fwcsrf=csrf_123466393831291&XHR=1
  2020-06-14 14:53:37 caching: DECT_500_Kinderzimmer_dummy-colortemperature: 1460
[2020-6-14 14:53:37] [FHEM]     caching: ColorTemperature: 146 (as number; from '1460')
[2020-6-14 14:53:38] [FHEM] DECT_500_Kinderzimmer_dummy: executing set cmd for ColorTemperature with value 143
[2020-6-14 14:53:38] [FHEM]   executing: http://127.0.0.1:8083/fhem?cmd=set%20DECT_500_Kinderzimmer_dummy%20colortemperature%201430&fwcsrf=csrf_123466393831291&XHR=1
  2020-06-14 14:53:38 caching: DECT_500_Kinderzimmer_dummy-colortemperature: 1430
[2020-6-14 14:53:38] [FHEM]     caching: ColorTemperature: 143 (as number; from '1430')
[2020-6-14 14:53:38] [FHEM] DECT_500_Kinderzimmer_dummy: executing set cmd for ColorTemperature with value 147
[2020-6-14 14:53:38] [FHEM]   executing: http://127.0.0.1:8083/fhem?cmd=set%20DECT_500_Kinderzimmer_dummy%20colortemperature%201470&fwcsrf=csrf_123466393831291&XHR=1
  2020-06-14 14:53:38 caching: DECT_500_Kinderzimmer_dummy-colortemperature: 1470
[2020-6-14 14:53:38] [FHEM]     caching: ColorTemperature: 147 (as number; from '1470')

[2020-6-14 14:59:19] [FHEM] DECT_500_Kinderzimmer_dummy: executing set cmd for ColorTemperature with value 499
[2020-6-14 14:59:19] [FHEM]   executing: http://127.0.0.1:8083/fhem?cmd=set%20DECT_500_Kinderzimmer_dummy%20colortemperature%204990&fwcsrf=csrf_123466393831291&XHR=1
  2020-06-14 14:59:19 caching: DECT_500_Kinderzimmer_dummy-colortemperature: 4990
[2020-6-14 14:59:19] [FHEM]     caching: ColorTemperature: 499 (as number; from '4990')


Mit der alten HomeKit App kann ich erst heute Abend testen.

EDIT: Ging doch früher... Erkenntnis bleibt die gleich: Bei Änderungen an der Farbtemperatur wird auch nur diese übertragen:


[2020-6-14 16:18:07] [FHEM]   executing: http://127.0.0.1:8083/fhem?cmd=set%20DECT_500_Kinderzimmer_dummy%20colortemperature%201410&fwcsrf=csrf_123466393831291&XHR=1
  2020-06-14 16:18:07 caching: DECT_500_Kinderzimmer_dummy-colortemperature: 1410
[2020-6-14 16:18:07] [FHEM]     caching: ColorTemperature: 141 (as number; from '1410')
[2020-6-14 16:18:07] [FHEM] DECT_500_Kinderzimmer_dummy: executing set cmd for ColorTemperature with value 144
[2020-6-14 16:18:07] [FHEM]   executing: http://127.0.0.1:8083/fhem?cmd=set%20DECT_500_Kinderzimmer_dummy%20colortemperature%201440&fwcsrf=csrf_123466393831291&XHR=1
  2020-06-14 16:18:07 caching: DECT_500_Kinderzimmer_dummy-colortemperature: 1440
[2020-6-14 16:18:07] [FHEM]     caching: ColorTemperature: 144 (as number; from '1440')
[2020-6-14 16:18:07] [FHEM] DECT_500_Kinderzimmer_dummy: executing set cmd for ColorTemperature with value 145
[2020-6-14 16:18:07] [FHEM]   executing: http://127.0.0.1:8083/fhem?cmd=set%20DECT_500_Kinderzimmer_dummy%20colortemperature%201450&fwcsrf=csrf_123466393831291&XHR=1
  2020-06-14 16:18:07 caching: DECT_500_Kinderzimmer_dummy-colortemperature: 1450
[2020-6-14 16:18:07] [FHEM]     caching: ColorTemperature: 145 (as number; from '1450')
[2020-6-14 16:18:08] [FHEM] DECT_500_Kinderzimmer_dummy: executing set cmd for ColorTemperature with value 145
[2020-6-14 16:18:08] [FHEM]   executing: http://127.0.0.1:8083/fhem?cmd=set%20DECT_500_Kinderzimmer_dummy%20colortemperature%201450&fwcsrf=csrf_123466393831291&XHR=1
[2020-6-14 16:18:08] [FHEM] DECT_500_Kinderzimmer_dummy: executing set cmd for ColorTemperature with value 142
[2020-6-14 16:18:08] [FHEM]   executing: http://127.0.0.1:8083/fhem?cmd=set%20DECT_500_Kinderzimmer_dummy%20colortemperature%201420&fwcsrf=csrf_123466393831291&XHR=1
  2020-06-14 16:18:08 caching: DECT_500_Kinderzimmer_dummy-colortemperature: 1420
[2020-6-14 16:18:08] [FHEM]     caching: ColorTemperature: 142 (as number; from '1420')
[2020-6-14 16:18:09] [FHEM] DECT_500_Kinderzimmer_dummy: executing set cmd for ColorTemperature with value 143
[2020-6-14 16:18:09] [FHEM]   executing: http://127.0.0.1:8083/fhem?cmd=set%20DECT_500_Kinderzimmer_dummy%20colortemperature%201430&fwcsrf=csrf_123466393831291&XHR=1
  2020-06-14 16:18:09 caching: DECT_500_Kinderzimmer_dummy-colortemperature: 1430
[2020-6-14 16:18:09] [FHEM]     caching: ColorTemperature: 143 (as number; from '1430')
[2020-6-14 16:18:09] [FHEM] DECT_500_Kinderzimmer_dummy: executing set cmd for ColorTemperature with value 144
[2020-6-14 16:18:09] [FHEM]   executing: http://127.0.0.1:8083/fhem?cmd=set%20DECT_500_Kinderzimmer_dummy%20colortemperature%201440&fwcsrf=csrf_123466393831291&XHR=1
  2020-06-14 16:18:09 caching: DECT_500_Kinderzimmer_dummy-colortemperature: 1440
[2020-6-14 16:18:09] [FHEM]     caching: ColorTemperature: 144 (as number; from '1440')

amenomade

#42
Danke
Dann wäre mein Vorschlag:

- set colortemp mit 150 < Wert < 600 wird als "mired" Wert interpretiert und wird erst den modus von "color" auf "white" ändern, wenn der Wert sich tatsächlich ändert. Das löst dein Problem mit dem Schalten, und du brauchst dann keine Skala / Kalkulation in homeBridgeMapping (ich wüsste übrigens nicht, wie man eine antiproportionale Zuordnung in homeBridgeMapping einstellen könnte)

- set colortemp mit 2000 < Wert < 6800 wir als "Kelvin" Wert interpretiert und schaltet  wie vorher

Mit diesen Ranges interpretieren auch Aurora und HUEDevice die ct

EDIT:
Ich bräuchte noch von dir die echte diskrete Werte, die vom Bridge für jede Kelvin vordefinierte Farbtemperatur der DECT500 Lampe zurückgegeben werden:
- 2700K => 370.370 mireds => 370 oder 371?
- 3000K => 333.333 mireds => 333 oder 334?
- 3400K => 294.117 =>
- 3800K => 263.157 =>
- 4200K => 238.095 =>
- 4700K => 212.765 =>
- 5300K => 188.679 =>
- 5900K => 169.491 =>
- 6500K => 153.846 =>
um ein "Pendeln" zwischen set-Wert und Rückgabe-Wert und ggf das Schalten des Modus  zu vermeiden
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

amenomade

Neue Version zum Testen.

Dein homeBridgeMapping musst Du wahrscheinlich ändern:
ColorTemperature=colortemperaturemireds,cmd=colortemperature,minValue=1,minStep=1
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

roedler86

Zitat von: amenomade am 14 Juni 2020, 18:54:10
Neue Version zum Testen.

Dein homeBridgeMapping musst Du wahrscheinlich ändern:
ColorTemperature=colortemperaturemireds,cmd=colortemperature,minValue=1,minStep=1

Erstklassig. Vielen Dank. Sogar mit angepasstem Mapping. Wow.