Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[resol][WIP] Add Resol Controller Binding - Initial Contribution #8302

Closed
wants to merge 15 commits into from
Closed
1 change: 1 addition & 0 deletions CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,7 @@
/bundles/org.openhab.binding.pushbullet/ @hakan42
/bundles/org.openhab.binding.radiothermostat/ @mlobstein
/bundles/org.openhab.binding.regoheatpump/ @crnjan
/bundles/org.openhab.binding.resol/ @ramack
/bundles/org.openhab.binding.rfxcom/ @martinvw @paulianttila
/bundles/org.openhab.binding.rme/ @kgoderis
/bundles/org.openhab.binding.robonect/ @reyem
Expand Down
32 changes: 32 additions & 0 deletions bundles/org.openhab.binding.resol/.classpath
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/classes" path="src/main/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
<attributes>
<attribute name="test" value="true"/>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry exported="true" kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="target/classes"/>
</classpath>
23 changes: 23 additions & 0 deletions bundles/org.openhab.binding.resol/.project
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>org.openhab.binding.resol</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
</natures>
</projectDescription>
33 changes: 33 additions & 0 deletions bundles/org.openhab.binding.resol/NOTICE
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
This content is produced and maintained by the openHAB project.

* Project home: https://www.openhab.org

== Declared Project Licenses

This program and the accompanying materials are made available under the terms
of the Eclipse Public License 2.0 which is available at
https://www.eclipse.org/legal/epl-2.0/.

== Source Code
ramack marked this conversation as resolved.
Show resolved Hide resolved

https://github.com/openhab/openhab-addons

== Third-party Content

resol-vbus-java
* License: MIT License
* Project: https://github.com/danielwippermann/resol-vbus-java
* Source: https://github.com/danielwippermann/resol-vbus-java

== Third-party license(s)

=== MIT License resol-vbus-java
Copyright (C) 2008-2016, RESOL - Elektronische Regelungen GmbH.

Copyright (C) 2016-2018, Daniel Wippermann.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
106 changes: 106 additions & 0 deletions bundles/org.openhab.binding.resol/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
# Resol Binding

Resol Binding connects to Solar and System Controllers of RESOL - Elektronische Regelungen GmbH, also including branded versions from Viessmann, SOLEX, COSMO, SOLTEX, DeDietrich and many more.

This binding is based on and includes the [Resol-VBUS-Java library](https://github.com/danielwippermann/resol-vbus-java), developed by Daniel Wippermann.

## Supported Things

VBusLAN-Bridge, DataLogger DL2 and DL3 as a live data interface between LAN and Resol VBus.
On the DL3 currently there is only the first VBUS channel supported and the sensors directly connected tot he DL3 are not accessible via this binding.

On top of the bridge devices, which enables access to the VBUS many, if not all, Resol Controllers and Modules like WMZ heat meters, HKM Heating circuit extensions etc. are supported including branded versions from different suppliers. This includes
* Solar controller DeltaSol® A/AX/AX HE
* Solar controller DeltaSol® AL E HE
* Solar controller DeltaSol® CS (Plus)
* Solar controller DeltaSol® B
* Solar controller DeltaSol® BS series
* Solar controller DeltaSol® SLL
* Solar controller DeltaSol® SL
* Solar controller DeltaSol® BX series
* System controller DeltaSol® SLT
* System controller DeltaSol® MX
* System controller DeltaSol® E
* DeltaSol Fresh®
* DeltaSol® Pool
* DeltaSol® Minipool
* DeltaSol® ES
* Frista
* DeltaTherm® HC
* DeltaTherm® FK
* Deltatherm® HT
* DeltaTherm® DH
* Sonnenkraft SKSC3
* Sonnenkraft STRG BX PLUS
* Sonnenkraft SKSC3+
* Sonnenkraft SKSC3HE
* Sonnenkraft SKSR 1/2/3
* Vitosolic 200
* COSMO Multi
* Drainback DeDietrich
* Diemasol C

## Discovery

Discovery is tested for VBus-LAN adapters DL2, DL3 and KM2 devices, it should also work for other devices providing a live data port.

## Binding Configuration

The Resol binding doesn't need any form of configuration in files.

## Bridge Configuration

The bridge is the device connecting the Resol VBUS to the network, usually a VBus-LAN adapter or integrated in some of the solar controllers like DL3.
For the connection from the Resol binding the bridge requires the configuration of

| property | type | Required | description |
|----------------------|---------|----------|------------------------------------------------------------|
| ipAddress | String | yes | IP address or hostname of the VBUS adapter |
| password | String | yes | Password, defaults to 'vbus' for factory setting devices |
| port | Number | no | Port for the TCP connection, defaults to 7053 |
| adapterSerial | String | no | Serialnumber of the device |


## Thing Configuration

Depending on the solar/heating controller you have attached to your VBUS there will be a "controller" and several other things like heat quantity meters, heating circuit controls, etc.
These do not require any specific configuration but will pop up in your inbox after the bridge has received data from them.

## Channels
The channels of a thing are determined automatically based on the received VBUS data.

| channel | type | description |
|-------------------------------|----------------------|----------------------------------------------------|
| Pump_speed_relay_x | Number | |
| Temperature_sensor_x | Number:Temperature | Temperature sensor 'x' of the controller |
| Temperature_Module_y_Sensor_x | Number:Temperature | Temperature sensor 'x' of the extension module 'y' |
| Flow_rate_sensor_x | Number | |
| Pressure_sensor_x | Number | |
| Pump_speed_relay_x | Number | |
| Humidity_sensor_x | Number | |
| Irradiation_sensor_x | Number | |
| Runtime_relay_x | Number | Runtime for relay 'x' in seconds |
| Output_M | Number | PWM/0-10V level value of the output 'M' |
| Flow_set_temperature | Number | Heating circuit set temperature |
| Operating_state | Number | Heating circuit operationg state |
| Operating_state-str | String | Heating circuit operationg state, as text |
| System_date | DateTime | Date and time of the controller clock |
| Error_mask | Number | |
| Error_Sensor_line_broken-str | String |

Channels are dynamically created dependent on the devices connected to the VBus.
So far only reading is supported.
The classical channels are for temperature sensors and the like, but also relais outputs with the output level (0-100%) are visible as numerical values with the corresponding unit.
Some datapoints have an enumeration type and are available in two versions, a numerical and a textual channel.
Examples are Error mask, which is a number for the complete mask and each bit is available as single string channel, or the operation state of a heating circuit.
In those cases the numerical version is hidden and have to be view explicitly if needed, while the string representation has an "-str" suffix in the name.

String values are localized as far as possible, but only French, German and English are supported by the underlaying library which is based on the vbus-specification file from Resol.

## Full Example
Bridge resol:vbuslan:MyController "VBUSLAN" @ "Cellar" [ ipAddress="192.168.0.9", password="vbus", port=7053, adapterSerial="00\
1e66421ddf"] {
Thing device DeltaSol_MX-Controller "DeltaSol MX [Controller]" @ "Cellar" []
Thing device DeltaSol_MX-Heating_circuit-1 "DeltaSol MX [Heating Circuit]" @ "Cellar" []
}

26 changes: 26 additions & 0 deletions bundles/org.openhab.binding.resol/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>

<parent>
<groupId>org.openhab.addons.bundles</groupId>
<artifactId>org.openhab.addons.reactor.bundles</artifactId>
<version>2.5.9-SNAPSHOT</version>
</parent>

<artifactId>org.openhab.binding.resol</artifactId>

<name>openHAB Add-ons :: Bundles :: Resol Binding</name>

<dependencies>
<dependency>
<groupId>de.resol</groupId>
<artifactId>vbus</artifactId>
<version>0.4.0</version>
<scope>compile</scope>
</dependency>
</dependencies>

</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<features name="org.openhab.binding.resol-${project.version}" xmlns="http://karaf.apache.org/xmlns/features/v1.4.0">
<repository>mvn:org.openhab.core.features.karaf/org.openhab.core.features.karaf.openhab-core/${ohc.version}/xml/features</repository>

<feature name="openhab-binding-resol" description="Resol Binding" version="${project.version}">
<feature>openhab-runtime-base</feature>
<bundle start-level="80">mvn:org.openhab.addons.bundles/org.openhab.binding.resol/${project.version}</bundle>
</feature>
</features>