deCONZ Window covering device: bri vs. lift

Begonnen von Weisswurstverkäufer, 19 Juli 2023, 08:48:17

Vorheriges Thema - Nächstes Thema

Weisswurstverkäufer

Hallo,

ich habe mich gerade gewundert wieso meine Ikea FYRTUR Rollos in FHEM nicht mehr richtig dargestellt werden. Es stellt sich heraus dass sie "bri" deprecated haben, weil es jetzt "lift" (Prozentwert) gibt: https://dresden-elektronik.github.io/deconz-rest-doc/endpoints/lights/#window-covering-parameters und bei den FYRTUR kommen die "bri" Werte über die API auch nicht (anders bei den Ubisys J1 die ich auch habe - da kommt sowohl "bri" als auch "lift"). Weiterhin gibt es jetzt "open" statt "on".

Jedenfalls wird "lift"/"open" irgendwie nicht in FHEM als Reading übernommen. Könnte das hinzugefügt werden?

So sieht das beispielhaft aus wenn es komplett offen, halb offen und geschlossen ist:

{
  "config": {
    "groups": [
      "0",
      "31"
    ]
  },
  "etag": "...",
  "hascolor": false,
  "lastannounced": null,
  "lastseen": "2023-07-19T06:38Z",
  "manufacturername": "IKEA of Sweden",
  "modelid": "FYRTUR block-out roller blind",
  "name": "Rollo DG",
  "state": {
    "lift": 0,
    "open": true,
    "reachable": true
  },
  "swversion": "2.2.009",
  "type": "Window covering device",
  "uniqueid": "..."
}

{
  "config": {
    "groups": [
      "0",
      "31"
    ]
  },
  "etag": "...",
  "hascolor": false,
  "lastannounced": null,
  "lastseen": "2023-07-19T06:42Z",
  "manufacturername": "IKEA of Sweden",
  "modelid": "FYRTUR block-out roller blind",
  "name": "Rollo DG",
  "state": {
    "lift": 50,
    "open": false,
    "reachable": true
  },
  "swversion": "2.2.009",
  "type": "Window covering device",
  "uniqueid": "..."
}

{
  "config": {
    "groups": [
      "0",
      "31"
    ]
  },
  "etag": "...",
  "hascolor": false,
  "lastannounced": null,
  "lastseen": "2023-07-19T06:41Z",
  "manufacturername": "IKEA of Sweden",
  "modelid": "FYRTUR block-out roller blind",
  "name": "Rollo DG",
  "state": {
    "lift": 100,
    "open": false,
    "reachable": true
  },
  "swversion": "2.2.009",
  "type": "Window covering device",
  "uniqueid": "..."
}

Bei dem Ubisys J1 sind noch beide Werte enthalten. "lift"/"open" würde hier also auch schon funktionieren:

{
  "config": {
    "groups": []
  },
  "etag": "...",
  "hascolor": false,
  "lastannounced": null,
  "lastseen": "2023-07-19T06:43Z",
  "manufacturername": "ubisys",
  "modelid": "J1 (5502)",
  "name": "Rollo Wohnzimmer",
  "state": {
    "bri": 0,
    "lift": 0,
    "on": false,
    "open": true,
    "reachable": true,
    "tilt": 0
  },
  "swversion": "1.9.1",
  "type": "Window covering device",
  "uniqueid": "..."
}

Weisswurstverkäufer

Ich habe mal bei Dresden Elektronik nachgefragt ob die Entfernung von "bri" Absicht war oder ein Bug. Es ist so beabsichtigt. Wenn FHEM die Geräte weiterhin unterstützen soll müsste man das also hinzufügen. Wird wohl nach und nach auch für die anderen Geräte kommen.

tk-ham

Moin aus Hamburg,

ich kann nur zustimmen. Mein FYRTUR lässt sich nach dem update von deconz (2.23.1) nicht mehr steuern, da die FHEM Kommandos nicht mehr verstanden werden:

curl -X PUT http://fhem.fritz.box:8090/api/XXXXXX/lights/2/state -d '{"bri": 20}'
[{"error":{"address":"/lights/2/state","description":"parameter, bri, not available","type":6}}]t

curl -X PUT http://fhem.fritz.box:8090/api/XXXXXX/lights/2/state -d '{"on": true}'
[{"error":{"address":"/lights/2/state","description":"parameter, on, not available","type":6}}]

bri, bri_inc, on und sat sind deprecated: https://dresden-elektronik.github.io/deconz-rest-doc/endpoints/lights/#parameters_2

Wäre jemand so nett das anzupassen?

Danke!

Hugo Becker

Bei mir natürlich dasselbe Verhalten. Die letzte funktionierende Version ist V2.21.2.
Auch ich wäre sehr dankbar für eine Korrektur.   ;D
Ist "justme1968" noch Maintainer des Moduls ?

tk-ham

Danke für das Herausfinden der funktionierenden Version - hast Du ein downgrade probiert?

Weisswurstverkäufer

Ein Downgrade muss man eigentlich nicht machen. Es reicht schon das DDF auszutauschen. Das habe ich schon grob skizziert: https://forum.fhem.de/index.php?topic=134139.msg1286790#msg1286790

Hugo Becker

Bei der zu tauschenden DDF-Datei handelt es sich also in unserem Fall um die "fyrtur_block-out_roller_blind.json", richtig ?
Ich kann also einfach die Datei mit der aus Deinem Link https://github.com/dresden-elektronik/deconz-rest-plugin/commit/4cdd240e744094b1eb765eebc9ec50c35260ee6e ersetzen ?
Die hinzugefügten Zeilen (+) und die weggefallenen (-) sind ja markiert. Muß ich da noch etwas anpassen ?

Sorry wenn ich blöde Fragen stelle. Ich bin da nicht so fit.

Hugo Becker

Zitat von: tk-ham am 26 September 2023, 16:32:37Danke für das Herausfinden der funktionierenden Version - hast Du ein downgrade probiert?
Ja, funktioniert. Ich hatte die "neue" V2.23.01 probiert, aber wg. bri/lift keine Steuerung des Rollos möglich. Danach wieder zurück zur "alten" V2.21.2 und zack, funktioniert.

Weisswurstverkäufer

Wenn Du einen Raspberry Pi hast:

Das originale DDF-File liegt in
/usr/share/deCONZ/devices/ - also
/usr/share/deCONZ/devices/ikea/fyrtur_block-out_roller_blind.json.

Um DDF Dateien zu Überladen legt man sie in
/home/pi/.local/share/dresden-elektronik/deCONZ/devices/ (in meinem Fall auf dem Raspberry Pi jedenfalls - Abhängig vom konkreten Setup).

Ich habe mir also
/usr/share/deCONZ/devices/ikea/fyrtur_block-out_roller_blind.json nach
/home/pi/.local/share/dresden-elektronik/deCONZ/devices/ikea/fyrtur_block-out_roller_blind.json kopiert um meine Änderungen vorzunehmen. Ich habe allerdings nur state/battery weil sich das auf der aktuellen Firmware anders verhält.

Ich würde sagen du musst dann

Zitat{
                    "name": "state/bri",
                    "parse": {
                        "at": "0x0008",
                        "cl": "0x0102",
                        "ep": 1,
                        "eval": "Item.val = Math.round((254 * Attr.val) / 100)",
                        "fn": "zcl"
                    },
                    "read": {
                        "fn": "none"
                    },
                    "deprecated": "2020-04-08"
                },

und

                {
                    "name": "state/on",
                    "parse": {
                        "at": "0x0008",
                        "cl": "0x0102",
                        "ep": 1,
                        "eval": "Item.val = Attr.val > 0",
                        "fn": "zcl"
                    },
                    "read": {
                        "fn": "none"
                    },
                    "deprecated": "2020-04-08"
                },

wieder in das JSON reinnehmen. Ich vermute alternativ dürfte es auch funktionieren die alte Version des DDF 1:1 zu übernehmen. Die findest Du hier: https://raw.githubusercontent.com/dresden-elektronik/deconz-rest-plugin/30841081fa9cd025418a00ef307b5361e21da2f0/devices/ikea/fyrtur_block-out_roller_blind.json

Hugo Becker

Vielen Dank für Deine wirklich aushührliche Anleitung !!!
Ich werde es testen (allerdings erst am WE) und berichten.

Nochmals DANKE dafür !!!

Gruß
Hugo

Jamo

Ja, danke, das hat funktioniert. Vor dem update von V2.21.2. auf V2.23.1 folgendes machen:
cp /usr/share/deCONZ/devices/ikea/kadrilj_blind.json                 ~/.local/share/dresden-elektronik/deCONZ/devices/ikea
cp /usr/share/deCONZ/devices/ikea/fyrtur_block-out_roller_blind.json ~/.local/share/dresden-elektronik/deCONZ/devices/ikea

Dann das update von V2.21.2. auf V2.23.1 machen. Und schon gehts!
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

Weisswurstverkäufer

Mit

diff /usr/share/deCONZ/devices/ikea/fyrtur_block-out_roller_blind.json ~/.local/share/dresden-elektronik/deCONZ/devices/ikea/fyrtur_block-out_roller_blind.json
könntest Du jetzt noch nachgucken welche weiteren Änderungen es im DDF seit der Version 2.21.2 gab. Vermutlich nichts relevantes, aber vielleicht würde es sich ja lohnen eine "FHEM Version" des DDF zu pflegen solange das Modul nicht aktualisiert wird.

Jamo

Gute Idee: Hier ist der diff:diff /usr/share/deCONZ/devices/ikea/fyrtur_block-out_roller_blind.json ~/.local/share/dresden-elektronik/deCONZ/devices/ikea/fyrtur_block-out_roller_blind.json
2,138c2,90
<     "schema": "devcap1.schema.json",
<     "manufacturername": "$MF_IKEA",
<     "modelid": "FYRTUR block-out roller blind",
<     "vendor": "IKEA of Sweden",
<     "product": "FYRTUR block-out roller blind",
<     "sleeper": false,
<     "status": "Gold",
<     "subdevices": [
<         {
<             "type": "$TYPE_WINDOW_COVERING_DEVICE",
<             "restapi": "/lights",
<             "uuid": [
<                 "$address.ext",
<                 "0x01"
<             ],
<             "items": [
<                 {
<                     "name": "attr/id"
<                 },
<                 {
<                     "name": "attr/lastannounced"
<                 },
<                 {
<                     "name": "attr/lastseen"
<                 },
<                 {
<                     "name": "attr/manufacturername"
<                 },
<                 {
<                     "name": "attr/modelid"
<                 },
<                 {
<                     "name": "attr/name"
<                 },
<                 {
<                     "name": "attr/swversion"
<                 },
<                 {
<                     "name": "attr/type"
<                 },
<                 {
<                     "name": "attr/uniqueid"
<                 },
<                 {
<                     "name": "state/lift"
<                 },
<                 {
<                     "name": "state/open",
<                     "parse": {
<                         "fn": "zcl",
<                         "ep": 1,
<                         "cl": "0x0102",
<                         "at": "0x0008",
<                         "eval": "Item.val = Attr.val === 0"
<                     },
<                     "read": {
<                         "fn": "none"
<                     }
<                 },
<                 {
<                     "name": "state/reachable"
<                 }
<             ]
<         },
<         {
<             "type": "$TYPE_BATTERY_SENSOR",
<             "restapi": "/sensors",
<             "uuid": [
<                 "$address.ext",
<                 "0x01",
<                 "0x0001"
<             ],
<             "fingerprint": {
<                 "profile": "0x0104",
<                 "device": "0x0202",
<                 "endpoint": "0x01",
<                 "in": [
<                     "0x0000",
<                     "0x0001",
<                     "0x0102"
<                 ],
<                 "out": [
<                     "0x0019"
<                 ]
<             },
<             "items": [
<                 {
<                     "name": "attr/id"
<                 },
<                 {
<                     "name": "attr/lastannounced"
<                 },
<                 {
<                     "name": "attr/lastseen"
<                 },
<                 {
<                     "name": "attr/manufacturername"
<                 },
<                 {
<                     "name": "attr/modelid"
<                 },
<                 {
<                     "name": "attr/name"
<                 },
<                 {
<                     "name": "attr/swversion",
<                     "read": {
<                         "fn": "none"
<                     }
<                 },
<                 {
<                     "name": "attr/type"
<                 },
<                 {
<                     "name": "attr/uniqueid"
<                 },
<                 {
<                     "name": "config/on"
<                 },
<                 {
<                     "name": "config/reachable"
<                 },
<                 {
<                     "name": "state/battery",
<                     "refresh.interval": 3700,
<                     "parse": {
<                         "fn": "zcl",
<                         "ep": 1,
<                         "cl": "0x0001",
<                         "at": "0x0021",
<                         "eval": "Item.val = Attr.val"
<                     }
<                 },
<                 {
<                     "name": "state/lastupdated"
<                 }
<             ]
---
>   "schema": "devcap1.schema.json",
>   "manufacturername": "$MF_IKEA",
>   "modelid": "FYRTUR block-out roller blind",
>   "vendor": "IKEA of Sweden",
>   "product": "FYRTUR block-out roller blind",
>   "sleeper": false,
>   "status": "Gold",
>   "subdevices": [
>     {
>       "type": "$TYPE_WINDOW_COVERING_DEVICE",
>       "restapi": "/lights",
>       "uuid": [
>         "$address.ext",
>         "0x01"
>       ],
>       "items": [
>         {
>           "name": "attr/id"
>         },
>         {
>           "name": "attr/lastannounced"
>         },
>         {
>           "name": "attr/lastseen"
>         },
>         {
>           "name": "attr/manufacturername"
>         },
>         {
>           "name": "attr/modelid"
>         },
>         {
>           "name": "attr/name"
>         },
>         {
>           "name": "attr/swversion"
>         },
>         {
>           "name": "attr/type"
>         },
>         {
>           "name": "attr/uniqueid"
>         },
>         {
>           "name": "state/bri",
>           "parse": {
>             "at": "0x0008",
>             "cl": "0x0102",
>             "ep": 1,
>             "eval": "Item.val = (254 * Attr.val) / 100;",
>             "fn": "zcl"
>           },
>           "read": {
>             "fn": "none"
>           },
>           "deprecated": "2020-04-08"
>         },
>         {
>           "name": "state/lift"
>         },
>         {
>           "name": "state/on",
>           "parse": {
>             "at": "0x0008",
>             "cl": "0x0102",
>             "ep": 1,
>             "eval": "Item.val = Attr.val > 0",
>             "fn": "zcl"
>           },
>           "read": {
>             "fn": "none"
>           },
>           "deprecated": "2020-04-08"
>         },
>         {
>           "name": "state/open",
>           "parse": {
>             "at": "0x0008",
>             "cl": "0x0102",
>             "ep": 1,
>             "eval": "if (Attr.val == 100) { Item.val = false; } else { Item.val = true; }",
>             "fn": "zcl"
>           },
>           "read": {
>             "fn": "none"
>           }
>         },
>         {
>           "name": "state/reachable"
140,141c92,144
<     ],
<     "bindings": [
---
>       ]
>     },
>     {
>       "type": "$TYPE_BATTERY_SENSOR",
>       "restapi": "/sensors",
>       "uuid": [
>         "$address.ext",
>         "0x01",
>         "0x0001"
>       ],
>       "fingerprint": {
>         "profile": "0x0104",
>         "device": "0x0202",
>         "endpoint": "0x01",
>         "in": [
>           "0x0000",
>           "0x0001"
>         ]
>       },
>       "items": [
>         {
>           "name": "attr/id"
>         },
>         {
>           "name": "attr/lastannounced"
>         },
>         {
>           "name": "attr/lastseen"
>         },
>         {
>           "name": "attr/manufacturername"
>         },
>         {
>           "name": "attr/modelid"
>         },
>         {
>           "name": "attr/name"
>         },
>         {
>           "name": "attr/swversion",
>           "read": {
>             "fn": "none"
>           }
>         },
>         {
>           "name": "attr/type"
>         },
>         {
>           "name": "attr/uniqueid"
>         },
>         {
>           "name": "config/on"
>         },
143,144c146,152
<             "bind": "unicast",
<             "src.ep": 1,
---
>           "name": "config/reachable"
>         },
>         {
>           "name": "state/battery",
>           "refresh.interval": 3700,
>           "parse": {
>             "at": "0x0021",
146,154c154,157
<             "report": [
<                 {
<                     "at": "0x0021",
<                     "dt": "0x20",
<                     "min": 1,
<                     "max": 3600,
<                     "change": "0x00000001"
<                 }
<             ]
---
>             "ep": 0,
>             "eval": "Item.val = Attr.val",
>             "fn": "zcl"
>           }
157,168c160,192
<             "bind": "unicast",
<             "src.ep": 1,
<             "cl": "0x0102",
<             "report": [
<                 {
<                     "at": "0x0008",
<                     "dt": "0x20",
<                     "min": 1,
<                     "max": 300,
<                     "change": "0x00000001"
<                 }
<             ]
---
>           "name": "state/lastupdated"
>         }
>       ]
>     }
>   ],
>   "bindings": [
>     {
>       "bind": "unicast",
>       "src.ep": 1,
>       "dst.ep": 1,
>       "cl": "0x0001",
>       "report": [
>         {
>           "at": "0x0021",
>           "dt": "0x20",
>           "min": 1,
>           "max": 3600,
>           "change": "0x00000001"
>         }
>       ]
>     },
>     {
>       "bind": "unicast",
>       "src.ep": 1,
>       "dst.ep": 1,
>       "cl": "0x0102",
>       "report": [
>         {
>           "at": "0x0008",
>           "dt": "0x20",
>           "min": 1,
>           "max": 300,
>           "change": "0x00000001"
170,171c194,197
<     ]
< }
---
>       ]
>     }
>   ]
> }
\ No newline at end of file
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

Weisswurstverkäufer

Oh, das sind ja doch einige Änderungen drin. Ich habe jetzt mal die aktuelle Version genommen und um state/bri und state/on erweitert. Selbst testen kann ich es gerade aber nicht. Wenn Du willst kannst Du es ja mal ausprobieren (am besten vorher ein Backup der funktionierenden Version machen).

Jamo

#14
Danke, deine um state/bri und state/on geänderte Version funktioniert.  Vor dem Test ein "sudo systemctl restart deconz"durchgeführt.
Backup der funktionierenden Version ist "fyrtur_block-out_roller_blind.json.V2.21.2". Deine um state/bri und state/on geänderte Version ist die "fyrtur_block-out_roller_blind.json".

jamo@inuc:~/.local/share/dresden-elektronik/deCONZ/devices/ikea$ diff fyrtur_block-out_roller_blind.json fyrtur_block-out_roller_blind.json.V2.21.2
51c51
<            "eval": "Item.val = Math.round((254 * Attr.val) / 100)",
---
>            "eval": "Item.val = (254 * Attr.val) / 100;",
53,57c53,57
<            },
<            "read": {
<              "fn": "none"
<            },
<            "deprecated": "2020-04-08"
---
>          },
>          "read": {
>            "fn": "none"
>          },
>          "deprecated": "2020-04-08"
73c73
<            },
---
>          },
79,81d78
<            "fn": "zcl",
<            "ep": 1,
<            "cl": "0x0102",
83c80,83
<            "eval": "Item.val = Attr.val === 0"
---
>            "cl": "0x0102",
>            "ep": 1,
>            "eval": "if (Attr.val == 100) { Item.val = false; } else { Item.val = true; }",
>            "fn": "zcl"
108,112c108
<          "0x0001",
<          "0x0102"
<        ],
<        "out": [
<          "0x0019"
---
>          "0x0001"
156,158d151
<            "fn": "zcl",
<            "ep": 1,
<            "cl": "0x0001",
160c153,156
<            "eval": "Item.val = Attr.val"
---
>            "cl": "0x0001",
>            "ep": 0,
>            "eval": "Item.val = Attr.val",
>            "fn": "zcl"
172a169
>      "dst.ep": 1,
186a184
>      "dst.ep": 1,
199c197
< }
---
> }
\ No newline at end of file
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack