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

initial contribution Windcentrale binding #1535

Merged
merged 3 commits into from
Jun 11, 2017

Conversation

marcelrv
Copy link
Contributor

@marcelrv marcelrv commented Dec 7, 2016

Signed-off-by: Marcel Verpaalen [email protected]

@kaikreuzer kaikreuzer added the new binding If someone has started to work on a binding. For a new binding PR. label Dec 7, 2016
Copy link
Member

@martinvw martinvw left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hello Marcel,

Great binding, I made some items with the HTTP binding to monitor my 'winddelen' . However I could not get real time data from this API I had to use a different API for that.

I used the following url for real-time data:
http://backend.windcentrale.nl/windcentrale/productie_1.txt

I did some small review of your code.

@@ -0,0 +1,124 @@

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this still have a role in the binding or was it only for the development.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is only as reference. It is not used in any way in the binding.
Main purpose for me is that when the windcentrale protocol/API is changing, I know the 'from' situation.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A nicer and more functional way to add such information would be if it was part of a unit test.


try {

//String getMillData = "{\"powerProducerId\":\"563fbecd-d6f8-4d5e-9c3a-5e8577c7e256\",\"windSpeed\":4.0,\"windDirection\":\"NW\",\"powerAbsTot\":141.0,\"powerAbsWd\":26.0,\"powerRel\":17.0,\"diameter\":29.0,\"rpm\":22.4,\"pulsating\":false,\"kwh\":1459683.0,\"kwhForecast\":2767000.0,\"hoursRunThisYear\":4606.0,\"runPercentage\":97.98130630630631,\"windSpeedForecast\":3.0,\"windDirectionForecast\":\"NW\",\"timestamp\":\"2016-07-14T11:30:08\"}";
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Commented code

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Indeed can be cleaned.
Thx

import org.eclipse.smarthome.core.types.RefreshType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/*
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Commented code

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Indeed can be cleaned.
Thx

// List of all Channel IDs
public final static String CHANNEL_WIND_SPEED = "windSpeed";
public final static String CHANNEL_WIND_DIRECTION = "windDirection";
public final static String CHANNEL_POWER_TOTAL = "powerAbsTot";
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a reason you shortened this variable

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Only to avoid very long names

public final static String CHANNEL_LAST_UPDATE = "timestamp";

public final static String PROPERTY_MILL_ID = "millId";
public final static String PROPERTY_WD = "wd";
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a reason you shortened this variable, do you refer to a windDelerId?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is not the winddelerId. This is the number of owned winddelen... used to multiply the per winddeel power to the power assigned to you.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To help others to update the binding later on, it might be a better choice to not use uncommon abbreviations.

@@ -0,0 +1,21 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: WindCentraler Binding
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

WindCentraler seems like a typo?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Indeed. Thx

</config-description>
</thing-type>

<channel-type id="windSpeedType">
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe channel-type id's should be lower case, but I'm not sure.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have not seen that being in the guidelines
e.g. https://www.eclipse.org/smarthome/documentation/development/bindings/thing-definition.html
has in the example a camelcase

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, I will leave it up to @kaikreuzer maybe the discussion was specific to a binding.

Copy link
Member

@wborn wborn Feb 19, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Too bad there is no convention for this. Bindings now all differentiate between:

  • channelName
  • channelname
  • channel-name

The most common form I see used in bindings is camelCased.

Though I personally prefer lowercase. That's because I prefer the nicer looks with the lowercase binding ID and thing ID. It also saves key strokes with typing, because you do not constantly need a shift modifier. Also you do not have to think about what is upper and lower case. But this is still all personal preference.

@martinvw
Copy link
Member

martinvw commented Jan 1, 2017

Can you add a downloaded jar, so others can download and test it?

@marcelrv
Copy link
Contributor Author

marcelrv commented Jan 3, 2017 via email

@martinvw
Copy link
Member

martinvw commented Jan 3, 2017

Installing will not be the problem, I am/was just a little bit lazy to build it myself.

I believe you can even drop it in the comment field, then it will be hosted by Github

@marcelrv
Copy link
Contributor Author

marcelrv commented Jan 4, 2017

Please find it here

org.openhab.binding.windcentrale-2.0.0-SNAPSHOT.zip

@martinvw
Copy link
Member

martinvw commented Jan 4, 2017

While linking all channel to there default new values, I get a clash between Vermogen en Energy Forecast (Also a mix of dutch and English)

@martinvw
Copy link
Member

martinvw commented Jan 4, 2017

The same collision with "Productie vermogen (%)" and "Run percentage"

@martinvw
Copy link
Member

martinvw commented Jan 4, 2017

The only thing which I have now with my custom setup and will lose with yours is today's production, I use it store yesterday productions and compare it with today production until now.

For the rest its great and it works!

@marcelrv
Copy link
Contributor Author

marcelrv commented Jan 8, 2017

While linking all channel to there default new values, I get a clash between Vermogen en Energy Forecast (Also a mix of dutch and English)
This is a strange one... the proper translation is in the file i18 file channel.windcentrale.kwhForecast.label = Verwachte Productie maybe this is a bug in the framework? as some labels come from the channel-type, others come from the channel?
What do you mean by clash? Do you see differences per screen? twice the same translation?

The same collision with "Productie vermogen (%)" and "Run percentage"
Here the translation was missing. Can you check if you see it now. (I've still to found how I can get the NL versions in the UI)

The total daily production is not in the feed indeed (think it also does not appear in the realtime URL you gave)
The only place I can see it is in the XML file (https://zep-api.windcentrale.nl/production/131?method=getProductie&molenid=131
), where you can also find the exact daily productions of the current month/year/day by hour etc.
As this needs only daily update, probably best to use http binding + XSLT transformation

@marcelrv
Copy link
Contributor Author

marcelrv commented Jan 8, 2017

@martinvw
Copy link
Member

Sorry for my slow response.

I think I spotted the problem with the labels

  • The translation file contains two times the text "Productie Vermogen (%)" 'powerAbsTot' vs 'powerRelType'
  • A translation label is missing for 'powerType', 'timestampType', 'windSpeed', 'windDirection', 'powerRel', 'kwh', 'timestamp'
  • In the thing file some items contain a sub-element label while others do not, I don't whether this is intended.

@martinvw
Copy link
Member

The problem with the daily production is that you also need to apply a certain factor, so it makes it non-trivial.

@wborn
Copy link
Member

wborn commented Feb 19, 2017

As a fellow winddeler I'll also be testing this binding @marcelrv. I already gave the code a quick look and wonder why often the "C" is capitalized in WindCentrale? It seems that Windcentrale themselves are very consequent in their branding by always writing Windcentrale.

See for instance their blog: https://www.windcentrale.nl/blog

@marcelrv
Copy link
Contributor Author

@wborn I think you have a fair point here.
There was no particular reason for it besides the regular java camelcasing. I'll update it

Copy link
Member

@wborn wborn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@marcelrv I've now had a more thorough look at the code and added some comments where I see room for improvement. Nothing really major so good job! :-)

Now I'll be putting your code to work and see if I can use it to replace my existing HTTP Binding items.

xsi:schemaLocation="http://eclipse.org/smarthome/schemas/binding/v1.0.0 http://eclipse.org/smarthome/schemas/binding-1.0.0.xsd">

<name>WindCentrale Binding</name>
<description>Binding for a WindCentrale windmills</description>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The "a" can be removed so it reads like "Binding for Windcentrale windmills"

@@ -0,0 +1,24 @@
# binding
binding.windcentrale.name = WindCentrale Binding
binding.windcentrale.description = Binding voor WindCentrale reports.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"reports" is not Dutch, and if this were a direct translation from English it would read "Binding voor Windcentrale windmolens"


# thing types
thing-type.windcentrale.mill.label = WindCentrale WindMolen
thing-type.config.windcentrale.mill.millId.label = Wind Molen
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This file uses for the Dutch word "windmolen" the words "WindMolen" "Wind Molen". Windcentrale does not see it as some kind of branded word, and also just refers to a windmill as "windmolen".

# thing types
thing-type.windcentrale.mill.label = WindCentrale WindMolen
thing-type.config.windcentrale.mill.millId.label = Wind Molen
thing-type.config.windcentrale.mill.wd.label = Aantal Wind Delen
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Windcentrale does use a branded word for wind shares. That's why they refer to them with a capital "W", i.e. "Winddelen"

thing-type.windcentrale.mill.label = WindCentrale WindMolen
thing-type.config.windcentrale.mill.millId.label = Wind Molen
thing-type.config.windcentrale.mill.wd.label = Aantal Wind Delen
thing-type.config.windcentrale.mill.wd.description = Aantal Wind delen in bezit
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So this sentence should also use "Winddelen"


int pollingPeriod = 30;
param = getConfig().get(PROPERTY_REFRESH_INTERVAL);
if (param instanceof BigDecimal && param != null) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When param is null it is no instanceof BigDecimal, so the null check is not necessary.

channel.windcentrale.powerAbsTot.label = Productie Vermogen (%)
channel.windcentrale.powerAbsWd.label = Vermogen van de winddelen
channel.windcentrale.kwhForecast.label = Verwachte Productie
channel.windcentrale.runPercentage.label = Molen Productie percentage
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be better if the same capitalization style was used everywhere in the translations. So either:

  • each sentence starts with a capital and uses lowercase for the rest of the sentence (excl. branded words)

or

  • each word is capitalized

The same applies to the English translations.

String urlString = baseURL + millId + "/live?ignoreLoadingBar=true";
try {
URL url = new URL(urlString);
URLConnection connection = url.openConnection();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be better when any connections are explicitly closed in a finally block.

<default>131</default>
</parameter>
<parameter name="wd" type="integer" required="false">
<label>Wind Parts</label>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"Wind Shares" might be a better translation of the Dutch "Winddelen".

</parameter>
<parameter name="wd" type="integer" required="false">
<label>Wind Parts</label>
<description># of wind parts ("winddelen")</description>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But then this line would also need to be updated to read "wind shares"

<item-type>Number</item-type>
<label>Power</label>
<category>Energy</category>
<state pattern="%.1f Wh" readOnly="true" />
Copy link
Member

@wborn wborn Feb 19, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Power (Watt) and Energy (Watt/hour) are two different things. If the consumed power of a LED light is 10W then after 1 hour it has consumed 10Wh of energy (or. 0.01kWh). The same goes for the windmill instead it produces instead of consumes. So when there is "Power" in the label I would expect a "W" or "kW" unit. The category might also be wrong. But ESH is not clear about this.

<item-type>Number</item-type>
<label>Power</label>
<category>Energy</category>
<state pattern="%.1f kWh" readOnly="true" />
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The unit is probably "kW", see remark about power and energy above.

<label>Total Power</label>
</channel>
<channel id="powerAbsWd" typeId="powerType">
<label>WD Power</label>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you make this more clear for English users? E.g. something like "Wind share power"? The Dutch have a more describing label with "Vermogen van de winddelen" . But I can imagine the Dutch label does not fit in some UIs because of its length. :-)

```
Group gReiger "WindCentrale Reiger" <wind>

Number ReigerWindSpeed "Wind Snelheid[%1.0f Bf]" <wind> (gReiger) {channel="windcentrale:mill:reiger:windSpeed")
Copy link
Member

@wborn wborn Feb 19, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All the documentation is in English. So using English labels would be better.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would doubt any non-Dutch would ever use this binding, hence I kept this in Dutch, so it can be easy pasted in any item file.

@wborn
Copy link
Member

wborn commented Feb 19, 2017

Besides all my minor comments the binding does work well @marcelrv! So this will be a good replacement for the HTTP Binding items I've been using.

@marcelrv
Copy link
Contributor Author

@wborn thanks for your good input.
Think I fixed them all

org.openhab.binding.windcentrale_2.1.0.201702192344.zip

Copy link
Member

@wborn wborn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for reworking the code so quickly @marcelrv! I've gone through all files again and added some minor remaining remarks.

@@ -0,0 +1,23 @@
# binding
binding.windcentrale.name = Windcentrale Binding
binding.windcentrale.description = Binding voor Windcentrale windmolens.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is a bit illogical that this translation does end with a "." whereas the other Dutch and English translations do not.

thing-type.config.windcentrale.mill.wd.label = Aantal Winddelen
thing-type.config.windcentrale.mill.wd.description = Aantal Winddelen in bezit
thing-type.config.windcentrale.mill.refreshInterval.label = Ververs interval
thing-type.config.windcentrale.mill.refreshInterval.description = Ververs interval in seconden.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is a bit illogical that this translation does end with a "." whereas the other Dutch and English translations do not.

thing-type.config.windcentrale.mill.refreshInterval.description = Ververs interval in seconden.

# channels
channel.windcentrale.windSpeed.label = Windsnelheid (Bf)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The abbreviation for Beaufort seems to be "Bft".

xsi:schemaLocation="http://eclipse.org/smarthome/schemas/thing-description/v1.0.0 http://eclipse.org/smarthome/schemas/thing-description-1.0.0.xsd">

<thing-type id="mill">
<label>Windcentrale Wind Mill</label>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In English they refer to a "windmolen" as "windmill", i.e. without the space. There are many other occurrences in the code/XML that refer to "Wind Mill" or "Wind Mills".

Can you also give the English labels/descriptions the same capitalization treatment as you did with the Dutch ones? The Dutch ones look fine now. The English labels/descriptions now use a different capitalization strategy (first letter of each word capitalized) compared to the Dutch ones (first letter of sentence capitalized).

</parameter>
<parameter name="wd" type="integer" required="false">
<label>Wind Shares</label>
<description># of wind shares ("Winddelen")</description>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Replacing "#" with "Number" would be better. It is already done so in the Dutch translations.

}

updateProperty(Thing.PROPERTY_VENDOR, "Windcentrale");
updateProperty(Thing.PROPERTY_MODEL_ID, "WindMolen");
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would make sense to replace this "M" with a "m" now that all other occurrences are written in lower case.

}

private synchronized void updateData() {
logger.debug("Update WindMolen data '{}'", getThing().getUID());
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All the binding logging is in English, except for this "WindMolen".

import org.eclipse.smarthome.core.thing.ThingTypeUID;

/**
* The {@link windcentraleBinding} class defines common constants, which are
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

{@link windcentraleBinding} should be {@link WindcentraleBindingConstants}.

<channel-type id="timestamp">
<item-type>DateTime</item-type>
<label>Last Updated</label>
<category>Date</category>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.



## Full example
```
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Service-Component: OSGI-INF/*
Export-Package: org.openhab.binding.windcentrale,
org.openhab.binding.windcentrale.handler
Require-Bundle: org.apache.commons.io
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The manifest must not contain any “Require-Bundle” entries. Instead, “Import-Package” must be used.

Copy link
Member

@wborn wborn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM now Marcel

@martinvw martinvw self-requested a review April 18, 2017 15:27
@martinvw martinvw requested a review from kaikreuzer May 30, 2017 06:38
@martinvw
Copy link
Member

martinvw commented May 30, 2017

You can then squash the commits of me & @wborn in to an also-by

@marcelrv marcelrv force-pushed the windcentrale branch 2 times, most recently from be04cd2 to cac82ea Compare May 31, 2017 19:29
Binding for windcentrale incl code reviews & updates

Also-by: Wouter Born <[email protected]>
Also-by: Martin van Wingerden <[email protected]>

Signed-off-by: Marcel Verpaalen <[email protected]>
Copy link
Member

@kaikreuzer kaikreuzer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks - a great service, which I would like to have in Germany as well!

Nice code and pretty straight-forward - I only have a few last comments.

logger.debug("Refreshing {}", channelUID);
updateData();
} else {
logger.warn("This binding is a read-only binding and cannot handle commands");
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please reduce to debug and thus simply ignore commands


try {
String getMillData = getMillData();
JsonParser parser = new JsonParser();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you really need to create a new instance on every update? f not, it would be much better to keep this as a field in your class.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nope, improved it.

public void handleCommand(ChannelUID channelUID, Command command) {
if (command == RefreshType.REFRESH) {
logger.debug("Refreshing {}", channelUID);
updateData();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You might receive a REFRESH command for all channels sequentially - this could result in many concurrent ( and blocking) HTTP calls. You might be interested in this feature.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, implemented this new cache mechanism.

}

private String getMillData() throws IOException {
try (InputStream connection = millUrl.openStream()) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

URLConnection is not really advised as it is sometimes a bit difficult to manage regarding error handling and proxy support. I'd suggest to go for HttpUtil.executeUrl() instead, which ESH provides and encapsulates all code using the Jetty HTTP client.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Indeed. Simplifies & improves. Done

@kaikreuzer kaikreuzer added the awaiting feedback Awaiting feedback from the pull request author label Jun 6, 2017
@kaikreuzer kaikreuzer removed the awaiting feedback Awaiting feedback from the pull request author label Jun 11, 2017
@kaikreuzer
Copy link
Member

Perfect, many thanks!

@kaikreuzer kaikreuzer merged commit 83fcbb5 into openhab:master Jun 11, 2017
@marcelrv marcelrv deleted the windcentrale branch June 12, 2017 13:43
holmes added a commit to holmes/openhab2-addons that referenced this pull request Jun 16, 2017
* master:
  [senseBox] Forgot to add binding to feature.xml (openhab#2371)
  [Kodi] Fix audio sink (openhab#2301) (openhab#2303)
  Initial contribution of a Niko Home Control binding. (openhab#1589)
  [keba] fixed typo (openhab#2370)
  Removed utilisation of org.apache.http.client (openhab#2369)
  [RFXCOM] Make LWRF mood buttons work (openhab#2366)
  [senseBox] Switch caching to ESH ExpiringCacheMap (openhab#2361)
  Fixed problems found by AuthorTagCheck in the cometvisu bundle (openhab#2364)
  Added author tag where missing. (openhab#2351)
  [RFXCOM] Fix chill temperature (openhab#2362)
  initial contribution Windcentrale binding (openhab#1535)
  Tesla : reset the Even Stream connection to the Tesla Back-end if the event time stamps differ too much from the current system time (openhab#2358)
  Homematic: Some updates (openhab#2346)
  [RFXCOM] Support all data from wind sensors (openhab#2329)
  Gardena: Optimized refresh after command (openhab#2353)
  Fix some javadocs. (openhab#2349)
  Some small non-standard copyright banners which we missed while reviewing (openhab#2347)
@kaikreuzer kaikreuzer modified the milestone: 2.1 Jun 24, 2017
falkena pushed a commit to falkena/openhab-addons that referenced this pull request Jun 29, 2017
* WindCentrale binding

Binding for windcentrale incl code reviews & updates

Also-by: Wouter Born <[email protected]>
Also-by: Martin van Wingerden <[email protected]>
Signed-off-by: Marcel Verpaalen <[email protected]>
qvistgaard pushed a commit to qvistgaard/openhab2-addons that referenced this pull request Jun 30, 2017
* WindCentrale binding

Binding for windcentrale incl code reviews & updates

Also-by: Wouter Born <[email protected]>
Also-by: Martin van Wingerden <[email protected]>
Signed-off-by: Marcel Verpaalen <[email protected]>
jsjames pushed a commit to jsjames/openhab-addons that referenced this pull request Jul 1, 2017
* WindCentrale binding

Binding for windcentrale incl code reviews & updates

Also-by: Wouter Born <[email protected]>
Also-by: Martin van Wingerden <[email protected]>
Signed-off-by: Marcel Verpaalen <[email protected]>
reyem pushed a commit to reyem/openhab2-addons that referenced this pull request Jul 1, 2017
* WindCentrale binding

Binding for windcentrale incl code reviews & updates

Also-by: Wouter Born <[email protected]>
Also-by: Martin van Wingerden <[email protected]>
Signed-off-by: Marcel Verpaalen <[email protected]>
Markinus pushed a commit to Markinus/openhab2-addons that referenced this pull request Jul 2, 2017
* WindCentrale binding

Binding for windcentrale incl code reviews & updates

Also-by: Wouter Born <[email protected]>
Also-by: Martin van Wingerden <[email protected]>
Signed-off-by: Marcel Verpaalen <[email protected]>
ppieczul pushed a commit to ppieczul/openhab2-addons that referenced this pull request Jul 2, 2017
* WindCentrale binding

Binding for windcentrale incl code reviews & updates

Also-by: Wouter Born <[email protected]>
Also-by: Martin van Wingerden <[email protected]>
Signed-off-by: Marcel Verpaalen <[email protected]>
reyem pushed a commit to reyem/openhab2-addons that referenced this pull request Jul 3, 2017
* WindCentrale binding

Binding for windcentrale incl code reviews & updates

Also-by: Wouter Born <[email protected]>
Also-by: Martin van Wingerden <[email protected]>
Signed-off-by: Marcel Verpaalen <[email protected]>
aogorek pushed a commit to aogorek/openhab2-addons that referenced this pull request Jul 5, 2017
* WindCentrale binding

Binding for windcentrale incl code reviews & updates

Also-by: Wouter Born <[email protected]>
Also-by: Martin van Wingerden <[email protected]>
Signed-off-by: Marcel Verpaalen <[email protected]>
Markinus pushed a commit to Markinus/openhab2-addons that referenced this pull request Sep 8, 2017
* WindCentrale binding

Binding for windcentrale incl code reviews & updates

Also-by: Wouter Born <[email protected]>
Also-by: Martin van Wingerden <[email protected]>
Signed-off-by: Marcel Verpaalen <[email protected]>
@martinvw
Copy link
Member

martinvw commented Sep 26, 2017

@marcelrv could you remove the binding from the marketplace, I think it adds no value now its part of the build since release 2.1

See also:

image

Thanks!

@marcelrv
Copy link
Contributor Author

@martinvw agree. done.

hillmanr pushed a commit to hillmanr/openhab2-addons-pollytts that referenced this pull request Dec 6, 2017
* WindCentrale binding

Binding for windcentrale incl code reviews & updates

Also-by: Wouter Born <[email protected]>
Also-by: Martin van Wingerden <[email protected]>
Signed-off-by: Marcel Verpaalen <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
new binding If someone has started to work on a binding. For a new binding PR.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants