ioBroker/ioBroker.digitalstrom

Scene processing wrong

Opened this issue · 3 comments

My livingroom is divided in 4 areas. If a callscene is called for a single area

On Area 1
2022-02-02 16:37:59,106 [21] DEBUG DigitalstromClient.Network.Base.DigitalstromRestClient - Response from /json/event/get?subscriptionID=4919&timeout=400&token=*** => {"result":{"events":[{"name":"callSceneBus","properties":{"callOrigin":"2","zoneID":"1134","originToken":"","originDSUID":"0000000000000000000000000000000000","sceneID":"6","groupID":"1"},"source":{"set":".zone(1134).group(1)","groupID":1,"zoneID":1134,"isApartment":false,"isGroup":true,"isDevice":false}},{"name":"callScene","properties":{"callOrigin":"2","zoneID":"1134","originToken":"","originDSUID":"0000000000000000000000000000000000","sceneID":"6","groupID":"1"},"source":{"set":".zone(1134).group(1)","groupID":1,"zoneID":1134,"isApartment":false,"isGroup":true,"isDevice":false}}]},"ok":true}

Off Area 1
2022-02-02 16:38:01,848 [22] DEBUG DigitalstromClient.Network.Base.DigitalstromRestClient - Response from /json/event/get?subscriptionID=4919&timeout=400&token=*** => {"result":{"events":[{"name":"callSceneBus","properties":{"callOrigin":"2","zoneID":"1134","originToken":"","originDSUID":"0000000000000000000000000000000000","sceneID":"1","groupID":"1"},"source":{"set":".zone(1134).group(1)","groupID":1,"zoneID":1134,"isApartment":false,"isGroup":true,"isDevice":false}},{"name":"callScene","properties":{"callOrigin":"2","zoneID":"1134","originToken":"","originDSUID":"0000000000000000000000000000000000","sceneID":"1","groupID":"1"},"source":{"set":".zone(1134).group(1)","groupID":1,"zoneID":1134,"isApartment":false,"isGroup":true,"isDevice":false}}]},"ok":true}

the Digitalstrom Plugin for IOBroker is showing all light devices in the complete zone with a brigthness of 100% even if this is not the case.
I wanted to use your plugin as a backchannel for Digitalstrom events to KNX in order to set specific position or state data in my MDX Glastaster2 switches.

Due to the fact the plugin is not working correctly i've created this bug.

As a workaround i've created a tool based on the old JSON API and also the new Smarthome API (which is not documented correctly) in order to get the related changes. I did not check your implementation but i think the you are looking to the to events like callscene, undoscene, callscenebus and perhaps to other events like deviceSensorValue etc..

If that is the case the answer from the callscene is not correctly processed. In the above event log you can see that callscene was called for zone 1134 (Wohnzimmer/Living Room) for sceneID 6 = AREA1_ON and than sceneID 1 = AREA1_OFF.

You can get a list of assigned scenes in zones by querying

https://dss.local:8080/json/property/query2?&query=/apartment/zones/*(ZoneID,scenes)/groups/*(group)/scenes/*(scene,name)

But the DS IOBroker Plugins sets all devices to 100%. This could be if the plugin does not know which device is in which area or if the scenes are not handled correctly

1 - Area 1 Off
2 - Area 2 Off
3 - Area 3 Off
4 - Area 4 Off
6 - Area 1 On
7 - Area 2 On
8 - Area 3 On
9 - Area 4 On

Here is the Log from IOBroker

2022-02-02 17:06:33.048 - debug: digitalstrom.0 (17775) EVENT: callScene: {"name":"callScene","properties":{"callOrigin":"2","zoneID":"1134","originToken":"","originDSUID":"0000000000000000000000000000000000","sceneID":"6","groupID":"1"},"source":{"set":".zone(1134).group(1)","groupID":1,"zoneID":1134,"isApartment":false,"isGroup":true,"isDevice":false}}
2022-02-02 17:06:33.049 - debug: digitalstrom.0 (17775) DEVICE event {"name":"callScene","properties":{"callOrigin":"2","zoneID":"1134","originToken":"","originDSUID":"0000000000000000000000000000000000","sceneID":"6","groupID":"1"},"source":{"set":".zone(1134).group(1)","groupID":1,"zoneID":1134,"isApartment":false,"isGroup":true,"isDevice":false}}
2022-02-02 17:06:33.050 - debug: digitalstrom.0 (17775) 1643817993050 PUSH Plan next queue entry (device-getOutputValue-302ed89f43f0000000004540005225dd00-undefined-undefined-undefined) for 302ed89f43f0000000000e400001067300 and prio low in 4136ms
2022-02-02 17:06:33.050 - debug: digitalstrom.0 (17775) DEVICE event {"name":"callScene","properties":{"callOrigin":"2","zoneID":"1134","originToken":"","originDSUID":"0000000000000000000000000000000000","sceneID":"6","groupID":"1"},"source":{"set":".zone(1134).group(1)","groupID":1,"zoneID":1134,"isApartment":false,"isGroup":true,"isDevice":false}}
2022-02-02 17:06:33.051 - debug: digitalstrom.0 (17775) 1643817993051 PUSH Plan next queue entry (device-getOutputValue-302ed89f43f000000000454000524ea700-undefined-undefined-undefined) for 302ed89f43f0000000000e400001067300 and prio low in 4135ms
2022-02-02 17:06:33.052 - debug: digitalstrom.0 (17775) DEVICE event {"name":"callScene","properties":{"callOrigin":"2","zoneID":"1134","originToken":"","originDSUID":"0000000000000000000000000000000000","sceneID":"6","groupID":"1"},"source":{"set":".zone(1134).group(1)","groupID":1,"zoneID":1134,"isApartment":false,"isGroup":true,"isDevice":false}}
2022-02-02 17:06:33.052 - debug: digitalstrom.0 (17775) 1643817993052 PUSH Plan next queue entry (device-getOutputValue-302ed89f43f000000000454000521e5d00-undefined-undefined-undefined) for 302ed89f43f0000000000e400001067300 and prio low in 4134ms
2022-02-02 17:06:33.053 - debug: digitalstrom.0 (17775) DEVICE event {"name":"callScene","properties":{"callOrigin":"2","zoneID":"1134","originToken":"","originDSUID":"0000000000000000000000000000000000","sceneID":"6","groupID":"1"},"source":{"set":".zone(1134).group(1)","groupID":1,"zoneID":1134,"isApartment":false,"isGroup":true,"isDevice":false}}
2022-02-02 17:06:33.053 - debug: digitalstrom.0 (17775) 1643817993053 PUSH Plan next queue entry (device-getOutputValue-302ed89f43f0000000004540005221f800-undefined-undefined-undefined) for 302ed89f43f0000000000e400001067300 and prio low in 4133ms
2022-02-02 17:06:33.075 - info: digitalstrom.0 (17775) State value to set for "digitalstrom.0.apartment.0.1134.1.scenes.sceneId" has to be type "number" but received type "string"
2022-02-02 17:06:33.082 - silly: digitalstrom.0 (17775) States user redis pmessage digitalstrom.0./digitalstrom.0.devices.302ed89f43f0000000000e400001067300.302ed89f43f0000000004540005225dd00.state:{"val":true,"ack":true,"ts":1643817993077,"q":0,"from":"system.adapter.digitalstrom.0","user":"system.user.admin","lc":1643817993077}
2022-02-02 17:06:33.085 - debug: digitalstrom.0 (17775) state digitalstrom.0.devices.302ed89f43f0000000000e400001067300.302ed89f43f0000000004540005225dd00.state changed: true (ack = true)
2022-02-02 17:06:33.087 - silly: digitalstrom.0 (17775) States user redis pmessage digitalstrom.0.
/digitalstrom.0.devices.302ed89f43f0000000000e400001067300.302ed89f43f0000000004540005225dd00.brightness:{"val":100,"ack":true,"ts":1643817993077,"q":0,"from":"system.adapter.digitalstrom.0","user":"system.user.admin","lc":1643817993077}
2022-02-02 17:06:33.088 - debug: digitalstrom.0 (17775) state digitalstrom.0.devices.302ed89f43f0000000000e400001067300.302ed89f43f0000000004540005225dd00.brightness changed: 100 (ack = true)
2022-02-02 17:06:33.091 - silly: digitalstrom.0 (17775) States user redis pmessage digitalstrom.0./digitalstrom.0.devices.302ed89f43f0000000000e400001067300.302ed89f43f000000000454000524ea700.state:{"val":true,"ack":true,"ts":1643817993077,"q":0,"from":"system.adapter.digitalstrom.0","user":"system.user.admin","lc":1643817993077}
2022-02-02 17:06:33.094 - debug: digitalstrom.0 (17775) state digitalstrom.0.devices.302ed89f43f0000000000e400001067300.302ed89f43f000000000454000524ea700.state changed: true (ack = true)
2022-02-02 17:06:33.097 - silly: digitalstrom.0 (17775) States user redis pmessage digitalstrom.0.
/digitalstrom.0.devices.302ed89f43f0000000000e400001067300.302ed89f43f000000000454000524ea700.brightness:{"val":100,"ack":true,"ts":1643817993078,"q":0,"from":"system.adapter.digitalstrom.0","user":"system.user.admin","lc":1643817993078}
2022-02-02 17:06:33.100 - debug: digitalstrom.0 (17775) state digitalstrom.0.devices.302ed89f43f0000000000e400001067300.302ed89f43f000000000454000524ea700.brightness changed: 100 (ack = true)
2022-02-02 17:06:33.100 - silly: digitalstrom.0 (17775) States user redis pmessage digitalstrom.0./digitalstrom.0.devices.302ed89f43f0000000000e400001067300.302ed89f43f000000000454000521e5d00.state:{"val":true,"ack":true,"ts":1643817993078,"q":0,"from":"system.adapter.digitalstrom.0","user":"system.user.admin","lc":1643817993078}
2022-02-02 17:06:33.102 - debug: digitalstrom.0 (17775) state digitalstrom.0.devices.302ed89f43f0000000000e400001067300.302ed89f43f000000000454000521e5d00.state changed: true (ack = true)
2022-02-02 17:06:33.104 - silly: digitalstrom.0 (17775) States user redis pmessage digitalstrom.0.
/digitalstrom.0.devices.302ed89f43f0000000000e400001067300.302ed89f43f000000000454000521e5d00.brightness:{"val":100,"ack":true,"ts":1643817993078,"q":0,"from":"system.adapter.digitalstrom.0","user":"system.user.admin","lc":1643817993078}
2022-02-02 17:06:33.106 - debug: digitalstrom.0 (17775) state digitalstrom.0.devices.302ed89f43f0000000000e400001067300.302ed89f43f000000000454000521e5d00.brightness changed: 100 (ack = true)
2022-02-02 17:06:33.108 - silly: digitalstrom.0 (17775) States user redis pmessage digitalstrom.0./digitalstrom.0.devices.302ed89f43f0000000000e400001067300.302ed89f43f0000000004540005221f800.state:{"val":true,"ack":true,"ts":1643817993078,"q":0,"from":"system.adapter.digitalstrom.0","user":"system.user.admin","lc":1643817993078}
2022-02-02 17:06:33.110 - debug: digitalstrom.0 (17775) state digitalstrom.0.devices.302ed89f43f0000000000e400001067300.302ed89f43f0000000004540005221f800.state changed: true (ack = true)
2022-02-02 17:06:33.114 - silly: digitalstrom.0 (17775) States user redis pmessage digitalstrom.0.
/digitalstrom.0.devices.302ed89f43f0000000000e400001067300.302ed89f43f0000000004540005221f800.brightness:{"val":100,"ack":true,"ts":1643817993079,"q":0,"from":"system.adapter.digitalstrom.0","user":"system.user.admin","lc":1643817993079}
2022-02-02 17:06:33.116 - debug: digitalstrom.0 (17775) state digitalstrom.0.devices.302ed89f43f0000000000e400001067300.302ed89f43f0000000004540005221f800.brightness changed: 100 (ack = true)
2022-02-02 17:06:33.118 - silly: digitalstrom.0 (17775) States user redis pmessage digitalstrom.0./digitalstrom.0.apartment.0.1134.1.scenes.Area1On:{"val":true,"ack":true,"ts":1643817993081,"q":0,"from":"system.adapter.digitalstrom.0","user":"system.user.admin","lc":1643817993081}
2022-02-02 17:06:33.120 - debug: digitalstrom.0 (17775) state digitalstrom.0.apartment.0.1134.1.scenes.Area1On changed: true (ack = true)
2022-02-02 17:06:33.126 - silly: digitalstrom.0 (17775) States user redis pmessage digitalstrom.0.
/digitalstrom.0.apartment.0.1134.1.scenes.Area1Off:{"val":false,"ack":true,"ts":1643817993081,"q":0,"from":"system.adapter.digitalstrom.0","user":"system.user.admin","lc":1643817993081}
2022-02-02 17:06:33.128 - debug: digitalstrom.0 (17775) state digitalstrom.0.apartment.0.1134.1.scenes.Area1Off changed: false (ack = true)
2022-02-02 17:06:33.129 - silly: digitalstrom.0 (17775) States user redis pmessage digitalstrom.0./digitalstrom.0.apartment.0.1134.1.scenes.sceneId:{"val":"6","ack":true,"ts":1643817993081,"q":0,"from":"system.adapter.digitalstrom.0","user":"system.user.admin","lc":1643817993081}
2022-02-02 17:06:33.131 - debug: digitalstrom.0 (17775) state digitalstrom.0.apartment.0.1134.1.scenes.sceneId changed: 6 (ack = true)
2022-02-02 17:06:33.283 - debug: digitalstrom.0 (17775) EVENT: deviceSensorValue: {"name":"deviceSensorValue","properties":{"contextMsg":"","contextId":"0","sensorValueFloat":"23.3","sensorIndex":"0","sensorType":"9"},"source":{"set":"dsid(385c0e7a2f724217b2e119a6c4577d9e00)","dsid":"385c0e7a2f724217b2e119a6c4577d9e00","zoneID":7,"isApartment":false,"isGroup":false,"isDevice":true,"dSUID":"385c0e7a2f724217b2e119a6c4577d9e00"}}
2022-02-02 17:06:33.289 - debug: digitalstrom.0 (17775) EVENT: zoneSensorValue: {"name":"zoneSensorValue","properties":{"sensorValueFloat":"23.275","originDSID":"1eebf52afcf15cc8c09a745e835adeea00","sensorType":"9","sensorValue":"2657"},"source":{"set":".zone(7).group(0)","groupID":0,"zoneID":7,"isApartment":false,"isGroup":true,"isDevice":false}}
2022-02-02 17:06:33.297 - info: digitalstrom.0 (17775) State value to set for "digitalstrom.0.apartment.0.7.sensors.TemperatureValue" has to be type "number" but received type "string"
2022-02-02 17:06:33.298 - silly: digitalstrom.0 (17775) States user redis pmessage digitalstrom.0.
/digitalstrom.0.devices.1eebf52afcf15cc8c09a745e835adeea00.385c0e7a2f724217b2e119a6c4577d9e00.sensors.0:{"val":23.3,"ack":true,"ts":1643817993293,"q":0,"from":"system.adapter.digitalstrom.0","user":"system.user.admin","lc":1643817273328}
2022-02-02 17:06:33.299 - debug: digitalstrom.0 (17775) state digitalstrom.0.devices.1eebf52afcf15cc8c09a745e835adeea00.385c0e7a2f724217b2e119a6c4577d9e00.sensors.0 changed: 23.3 (ack = true)
2022-02-02 17:06:33.303 - silly: digitalstrom.0 (17775) States user redis pmessage digitalstrom.0.*/digitalstrom.0.apartment.0.7.sensors.TemperatureValue:{"val":"23.275","ack":true,"ts":1643817993298,"q":0,"from":"system.adapter.digitalstrom.0","user":"system.user.admin","lc":1643817273342}
2022-02-02 17:06:33.304 - debug: digitalstrom.0 (17775) state digitalstrom.0.apartment.0.7.sensors.TemperatureValue changed: 23.275 (ack = true)

Furthermore i think, not checked it yet correctly, that if i change the preset value of Preset 1 to 10%, 2 to 25%, 3 to 75% and 4 to 100%. I think the plugin sets the value to 100% even if it is only 10%. Has to check it later.

Last but not least if i use the dimming feature a brightness value of between 0 and 1 can occur. Caused by the fact that the plugin is not showing any digits after the comma you should handle only 0,000 as 0 and 0,001-0,999 as 1 as long as you will only support integer values instead of floaring values. This is even a bug in the Digitalstrom App self.

Very fast out of the back of my head: The problem is that the adapter has no way to query the "real % values" per preset, so the adapter can only asumme based on the defaults.

In the setting you can disable this guessing by disabling "Use Scene Preset Values", but then the values are requested from DS which needs time, but is accurate. In fact also right now there would be the wring % value in te state until the real value was requested.

I plan to also use the new value API, but need to find time to do that. then it might be faster updated.

So (if I got your topic right) then you know the reason and the workaround

I leave open here till I have more time to look into ir ot implement the new API

stale commented

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs within the next 7 days. Please check if the issue is still relevant in the most current version of the adapter and tell us. Also check that all relevant details, logs and reproduction steps are included and update them if needed. Thank you for your contributions.
Dieses Problem wurde automatisch als veraltet markiert, da es in letzter Zeit keine Aktivitäten gab. Es wird geschlossen, wenn nicht innerhalb der nächsten 7 Tage weitere Aktivitäten stattfinden. Bitte überprüft, ob das Problem auch in der aktuellsten Version des Adapters noch relevant ist, und teilt uns dies mit. Überprüft auch, ob alle relevanten Details, Logs und Reproduktionsschritte enthalten sind bzw. aktualisiert diese. Vielen Dank für Eure Unterstützung.

stale commented

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs within the next 7 days. Please check if the issue is still relevant in the most current version of the adapter and tell us. Also check that all relevant details, logs and reproduction steps are included and update them if needed. Thank you for your contributions.
Dieses Problem wurde automatisch als veraltet markiert, da es in letzter Zeit keine Aktivitäten gab. Es wird geschlossen, wenn nicht innerhalb der nächsten 7 Tage weitere Aktivitäten stattfinden. Bitte überprüft, ob das Problem auch in der aktuellsten Version des Adapters noch relevant ist, und teilt uns dies mit. Überprüft auch, ob alle relevanten Details, Logs und Reproduktionsschritte enthalten sind bzw. aktualisiert diese. Vielen Dank für Eure Unterstützung.