openhab / openhab-addons

Add-ons for openHAB
https://www.openhab.org/
Eclipse Public License 2.0
1.86k stars 3.57k forks source link

[Homematic] Support for internal groups (e.g. heating) #1523

Closed andreheuer closed 7 years ago

andreheuer commented 7 years ago

The homematic binding does not add things for internal groups in ccu2 (e.g. INT000001 for a heating including wall thermostat, window contacts and thermostats). The binding in openhab1 supported those items. Is there a way to add them? It would be great to use them as there is it better if e.g. a temperature is set to the group instead of setting the temperature of a single device in the group.

MHerbst commented 7 years ago

I don't know whether it is a bug or a feature (I think @gerrieg can say more about it), but there are some overlapping features in the CCU and in openHAB. Instead of defining a group in the CCU and setting the group's temperature the you could use a rule on openHAB to achieve the same result.

@gerrieg I have also defined several groups in the CCU but I am not sure yet whether I want to see them in openHAB or not. Maybe its possible to configure this behaviour in the bindin's configuration.

gerrieg commented 7 years ago

The 1.x binding uses a mix of API calls and TCL-Scripts. The CCU internal groups are available via the scripts. The 2.x binding is 100% Homematic API compliant and i do not know at the moment, if they are supported only via the API. I'll test it and let you know

gerrieg commented 7 years ago

I have a internal group of smoke detectors and this group is available in PaperUI. Groups are prefixed with a T- (team), so your group should have the address T-INT000001 in openHab.

If you can't see the group, please switch the binding into TRACE mode and send me a full startup log

log:set TRACE org.openhab.binding.homematic
MHerbst commented 7 years ago

@gerrieg I can see the smoke detector group but no other groups. Maybe this has to do with the group types. The smoke detector group was automatically created when I added the smoke detector device to the CCU. I have 5 groups defined manually (e.g. INT0000007) but none of them is discovered. openhab.zip

gerrieg commented 7 years ago

I'm not sure if we are talking about the same thing.

There are two kind of groups, one that are automatically added like the smoke detector group and one that we can manually add via settings -> groups. The latter are only groups of the CCU-UI. These groups are not available via API methods.

MHerbst commented 7 years ago

Yes, you may right that was a misunderstaning. But I am quite sure that @andreheuer also was talking about the same type of (manually defined) groups as I did, because I have a similar device combination in my living room. As far as I know there is no other way of combining these devices to a group.

Update 19.12. These groups allow that the device can communicate among each eather. E.g. if I open the window all radiators lower their temperature and I can use the wall thermostat to set the temperature of the radiators. This is possible without (manually) adding in the CCU. So these groups are not only used to group the devices in the UI.

gh-h2s commented 7 years ago

I have the same issue.

I mean these groups are available over API methods. It's just not a "BidCos-RF" datapoint but an "VirtualDevices" datapoint.

HM-CC-VG-1 - Group heating control Datapoint: VirtualDevices.INTxxxxxxxxx

Following the state query of my environment. 2x HM-CC-RT-DN, 1x HM-SEC-RHS

Channel: XXXXXXXXXXXXXX INT0000001:0 / 4033 / / Datapoint: VirtualDevices.INT0000001:0.UPDATE_PENDING / 4043 / UPDATE_PENDING / 20.0 / / 2 / 2017-01-12 21:42 / 1484253756 / 5 Channel: XXXXXXXXXXXXXX INT0000001:0 / 4033 / / Datapoint: VirtualDevices.INT0000001:0.RSSI_DEVICE / 4039 / RSSI_DEVICE / 20.0 / / 8 / 2017-01-12 21:42 / 1484253756 / 5 Channel: XXXXXXXXXXXXXX INT0000001:0 / 4033 / / Datapoint: VirtualDevices.INT0000001:0.AES_KEY / 4034 / AES_KEY / 20.0 / / 8 / 2017-01-12 21:42 / 1484253756 / 1 Channel: XXXXXXXXXXXXXX INT0000001:0 / 4033 / / Datapoint: VirtualDevices.INT0000001:0.DEVICE_IN_BOOTLOADER / 4036 / DEVICE_IN_BOOTLOADER / 20.0 / / 2 / 2017-01-12 21:42 / 1484253756 / 5 Channel: XXXXXXXXXXXXXX INT0000001:0 / 4033 / / Datapoint: VirtualDevices.INT0000001:0.CONFIG_PENDING / 4035 / CONFIG_PENDING / 20.0 / / 2 / 2017-01-12 21:42 / 1484253757 / 5 Channel: XXXXXXXXXXXXXX INT0000001:0 / 4033 / / Datapoint: VirtualDevices.INT0000001:0.UNREACH / 4042 / UNREACH / 20.0 / / 2 / 2017-01-12 21:42 / 1484253757 / 5 Channel: XXXXXXXXXXXXXX INT0000001:0 / 4033 / / Datapoint: VirtualDevices.INT0000001:0.LOWBAT / 4038 / LOWBAT / 20.0 / / 2 / 2017-01-12 21:42 / 1484253757 / 5 Channel: XXXXXXXXXXXXXX INT0000001:0 / 4033 / / Datapoint: VirtualDevices.INT0000001:0.STICKY_UNREACH / 4041 / STICKY_UNREACH / 20.0 / / 2 / 2017-01-12 21:42 / 1484253757 / 7 Channel: XXXXXXXXXXXXXX INT0000001:0 / 4033 / / Datapoint: VirtualDevices.INT0000001:0.RSSI_PEER / 4040 / RSSI_PEER / 20.0 / / 8 / 2017-01-12 21:42 / 1484253757 / 5 Channel: XXXXXXXXXXXXXX INT0000001:1 / 4044 / TRUE / TRUE Datapoint: VirtualDevices.INT0000001:1.CONTROL_MODE / 4050 / CONTROL_MODE / 0 / / 16 / 2017-01-14 22:54 / 1484430844 / 5 Channel: XXXXXXXXXXXXXX INT0000001:1 / 4044 / TRUE / TRUE Datapoint: VirtualDevices.INT0000001:1.ACTUAL_HUMIDITY / 4045 / ACTUAL_HUMIDITY / 20.0 / % / 4 / 2017-01-12 21:42 / 1484253757 / 5 Channel: XXXXXXXXXXXXXX INT0000001:1 / 4044 / TRUE / TRUE Datapoint: VirtualDevices.INT0000001:1.BOOST_MODE / 4048 / BOOST_MODE / / / 2 / / 0 / 2 Channel: XXXXXXXXXXXXXX INT0000001:1 / 4044 / TRUE / TRUE Datapoint: VirtualDevices.INT0000001:1.AUTO_MODE / 4047 / AUTO_MODE / / / 2 / / 0 / 2 Channel: XXXXXXXXXXXXXX INT0000001:1 / 4044 / TRUE / TRUE Datapoint: VirtualDevices.INT0000001:1.SET_TEMPERATURE / 4063 / SET_TEMPERATURE / 24.000000 / °C / 4 / 2017-01-14 22:54 / 1484430844 / 7 Channel: XXXXXXXXXXXXXX INT0000001:1 / 4044 / TRUE / TRUE Datapoint: VirtualDevices.INT0000001:1.ACTUAL_TEMPERATURE / 4046 / ACTUAL_TEMPERATURE / 23.900000 / °C / 4 / 2017-01-14 22:54 / 1484430844 / 5 Channel: XXXXXXXXXXXXXX INT0000001:1 / 4044 / TRUE / TRUE Datapoint: VirtualDevices.INT0000001:1.MANU_MODE / 4052 / MANU_MODE / / °C / 4 / / 0 / 2 Channel: XXXXXXXXXXXXXX INT0000001:1 / 4044 / TRUE / TRUE Datapoint: VirtualDevices.INT0000001:1.COMFORT_MODE / 4049 / COMFORT_MODE / / / 2 / / 0 / 2 Channel: XXXXXXXXXXXXXX INT0000001:1 / 4044 / TRUE / TRUE Datapoint: VirtualDevices.INT0000001:1.LOWERING_MODE / 4051 / LOWERING_MODE / / / 2 / / 0 / 2 Channel: XXXXXXXXXXXXXX INT0000001:1 / 4044 / TRUE / TRUE Datapoint: VirtualDevices.INT0000001:1.PARTY_TEMPERATURE / 4062 / PARTY_TEMPERATURE / 5.000000 / °C / 4 / 2017-01-14 22:54 / 1484430844 / 3 Channel: XXXXXXXXXXXXXX INT0000001:1 / 4044 / TRUE / TRUE Datapoint: VirtualDevices.INT0000001:1.PARTY_START_TIME / 4056 / PARTY_START_TIME / 208 / minutes / 16 / 2017-01-14 22:54 / 1484430844 / 3 Channel: XXXXXXXXXXXXXX INT0000001:1 / 4044 / TRUE / TRUE Datapoint: VirtualDevices.INT0000001:1.PARTY_START_DAY / 4054 / PARTY_START_DAY / 1 / day / 16 / 2017-01-14 22:54 / 1484430844 / 3 Channel: XXXXXXXXXXXXXX INT0000001:1 / 4044 / TRUE / TRUE Datapoint: VirtualDevices.INT0000001:1.PARTY_START_MONTH / 4055 / PARTY_START_MONTH / 1 / month / 16 / 2017-01-14 22:54 / 1484430844 / 3 Channel: XXXXXXXXXXXXXX INT0000001:1 / 4044 / TRUE / TRUE Datapoint: VirtualDevices.INT0000001:1.PARTY_START_YEAR / 4057 / PARTY_START_YEAR / 0 / year / 16 / 2017-01-14 22:54 / 1484430844 / 3 Channel: XXXXXXXXXXXXXX INT0000001:1 / 4044 / TRUE / TRUE Datapoint: VirtualDevices.INT0000001:1.PARTY_STOP_TIME / 4060 / PARTY_STOP_TIME / 0 / minutes / 16 / 2017-01-14 22:54 / 1484430845 / 3 Channel: XXXXXXXXXXXXXX INT0000001:1 / 4044 / TRUE / TRUE Datapoint: VirtualDevices.INT0000001:1.PARTY_STOP_DAY / 4058 / PARTY_STOP_DAY / 1 / day / 16 / 2017-01-14 22:54 / 1484430845 / 3 Channel: XXXXXXXXXXXXXX INT0000001:1 / 4044 / TRUE / TRUE Datapoint: VirtualDevices.INT0000001:1.PARTY_STOP_MONTH / 4059 / PARTY_STOP_MONTH / 1 / month / 16 / 2017-01-14 22:54 / 1484430845 / 3 Channel: XXXXXXXXXXXXXX INT0000001:1 / 4044 / TRUE / TRUE Datapoint: VirtualDevices.INT0000001:1.PARTY_STOP_YEAR / 4061 / PARTY_STOP_YEAR / 0 / year / 16 / 2017-01-14 22:54 / 1484430845 / 3 Channel: XXXXXXXXXXXXXX INT0000001:1 / 4044 / TRUE / TRUE Datapoint: VirtualDevices.INT0000001:1.PARTY_MODE_SUBMIT / 4053 / PARTY_MODE_SUBMIT / / / 20 / / 0 / 2 Channel: XXXXXXXXXXXXXX INT0000001:2 / 4064 / TRUE / TRUE Datapoint: VirtualDevices.INT0000001:2.STATE / 4065 / STATE / false / / 2 / 2017-01-14 19:20 / 1484418011 / 5

gerrieg commented 7 years ago

What API method did you use? I can't find one that returns these groups.

Anyway, a gateway like the CCU should be a dumb gateway, you can do the same with a openHab group and a small rule. The Homematic binding does not fully 'emulate' a CCU in openHab. It's main purpose is to control the devices via openHab.

gh-h2s commented 7 years ago

Today I tested something with XML-RPC. It is possible to query the groups over port 9292. I have test this with the Chrome extension XML-RPC Client.

http://${HMIP}:9292/groups listDevices

<?xml version="1.0" encoding="ISO-8859-1"?>

TYPE HM-CC-VG-1 SUBTYPE ADDRESS INT0000001 RF_ADDRESS ...
gerrieg commented 7 years ago

Thanks a lot! Never heard of this port, seems to work. I still have two issues i have to fix until i can make it public.

MHerbst commented 7 years ago

Anyway, a gateway like the CCU should be a dumb gateway, you can do the same with a openHab group and a small rule. The Homematic binding does not fully 'emulate' a CCU in openHab. It's main purpose is to control the devices via openHab.

I agree with @gerrieg essentially. But the CCU and openHAB have overlapping functionality and it is not always very easy to decide what to implement in openHAB and what with the CCU. The definition of groups on the CCU has one big advantage: all devices added to group can communicate directly without the CCU. I.e. it will work even if the CCU is not active.

Especially in @andreheuer 's case it is possible to use the group functionality indirectly without the need to directly access the group: I have got a very similiar Homematic configuration in my living room: a wall mount thermostat, 3 radiators and a door/window contact. All devices are combined in a group. In openHAB I have defined an item to set the temperature via the wall mount thermostat thing. Because of the group definition the temperatures of all radiators is set automatically and I don't have to write a rule (neither in openHAB nor in the CCU). Same happens with the window contact. If the window is opened, all radiator valves are automatically closed (because they belong to the same group). In addition I have defined an item for the window contact to see in my sitemap that the window is open. In this case I really don't need to access the group in openHAB but it makes things easier because I don't need to write special rules.

Today I tested something with XML-RPC. It is possible to query the groups over port 9292.

I have XML-RPC installed, too. It is very helpful to see some internal values. If you want to see all options you can open this URL after the installation http:///addons/xmlapi/info.html. But it is a third party addon that needs to be installed separately.

gerrieg commented 7 years ago

Added group support with https://github.com/openhab/openhab2-addons/pull/1622

qrioniclabs commented 7 years ago

Hi @gerrieg! Thanks for adding the group support. I have just yesterday created my very first group ("INT0000001") in CCU2 and am trying to add it as a thing via PaperUI. But it does not find it. How do I add it manually? Or do I have to update by Homematic Binding? Help would be appreciated. Thanks!

MHerbst commented 7 years ago

The update has not been merged, yet. Therefore the new functionality is not yet available in a release binding version.

qrioniclabs commented 7 years ago

Alright, thanks @MHerbst! Is there any way to use the development version by @gerrieg? Do I have to switch the branch? How would I do that? Thanks!

MHerbst commented 7 years ago

You can find the branch in gerriegs repo: https://github.com/gerrieg/openhab2-addons/tree/homematic. If you clone this repo you can probably build the add-on via maven. Or you can contact @gerrieg and ask him whether he can provide a jar file to test it.

MHerbst commented 7 years ago

Looking good with #1622. I think this issue can be closed now. What do you think @andreheuer ?

andreheuer commented 7 years ago

Hi @MHerbst, I totally agree! It´s looking good right now! Thank you for your effort!!

gorzan14 commented 7 years ago

Im not familiar with building on my own. Do I get the newest version when i install OH2 snapshot? Should I do this for my produktiv OH2-Installation?

gerrieg commented 7 years ago

Do I get the newest version when i install OH2 snapshot?

yes

Should I do this for my produktiv OH2-Installation?

Regarding the homematic binding yes, there are many fixes and optimizations based on user feedback in the snapshot builds

gorzan14 commented 7 years ago

OK downloaded only ...homematic.jar from snapshot. After copying to addons it works well. And it does find all groups. But the data points do not sync and work. I will try to get the logs with trace option and open an new issue.