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

[sunspec] Modbus: SunSpec Binding initial contribution #4220

Closed
wants to merge 6 commits into from

Conversation

mrbig
Copy link

@mrbig mrbig commented Nov 11, 2018

[modbus] SunSpec bundle - add support for SunSpec compatible inverters and meters

SunSpec is an open standard for solar inverters and other related devices to share data about their internal state. The standard is implemented by several vendors like ABB, Fronius, SMA, Schneider Electric, Solaredge, etc.

The goal of this work is to add user friendly support of these devices to openHAB.

The standard is built on the Modbus protocol, so this work is heavily based on the Modbus binding. Also the Bluetooth binding and several of it's solutions were taken as an example how to extend an already existing binding with a new bundle.

Related issue: #3216

In this PR two model types are supported: inverters and meters. The structure allows for easy extension with other model types.

This PR contains two more commits to the Modbus binding: one adds the framework for auto discovery, and the other handles a minor issue where connected items to the Modbus bridge did not get notified about bridge changes.

I'm submitting my work for initial review and to get your feedback. Thank you for reviewing my work.

@wborn wborn added the new binding If someone has started to work on a binding. For a new binding PR. label Nov 11, 2018
@wborn wborn changed the title SunSpec support [sunspec] Modbus: SunSpec Binding initial contribution Dec 18, 2018
@openhab-bot
Copy link
Collaborator

This pull request has been mentioned on openHAB Community. There might be relevant details there:

https://community.openhab.org/t/modbus-2-x-tcp-errors-on-startup/61707/4

@openhab-bot
Copy link
Collaborator

This pull request has been mentioned on openHAB Community. There might be relevant details there:

https://community.openhab.org/t/modbus-and-system-air/6212/88

@mrbig mrbig requested a review from a team as a code owner January 19, 2019 02:13
@mrbig mrbig force-pushed the 3216-binding-sunspec-modbus branch 2 times, most recently from e215b97 to 99816ae Compare January 25, 2019 00:59
This seems to be necessary to get the children notified about the change

Signed-off-by: Nagy Attila Gabor <mrbig@sneaker.hu>
Created discovery service based on the implementation in the
bluetooth bundle

Signed-off-by: Nagy Attila Gabor <mrbig@sneaker.hu>
SunSpec is a Modbus based specification for solar inverters, electricity maters, batteries
and other connected appliance. This protocol allows monitoring of these
devices and retrieving live data.

This new binding extends the Modbus binding with the SunSpec specific
things. Currently two new type of things are added: inverters (single,
split, three-phase) and meters (single, split, wye/delta connected)

Items are automatically discovered at an endpoint.

Signed-off-by: Nagy Attila Gabor <mrbig@sneaker.hu>
Signed-off-by: Nagy Attila Gabor <mrbig@sneaker.hu>
@mrbig mrbig force-pushed the 3216-binding-sunspec-modbus branch from 56fdd56 to 64d658c Compare January 26, 2019 10:35
Signed-off-by: Nagy Attila Gabor <mrbig@sneaker.hu>
Signed-off-by: Nagy Attila Gabor <mrbig@sneaker.hu>
@mrbig mrbig force-pushed the 3216-binding-sunspec-modbus branch from 64d658c to 0d0f297 Compare January 26, 2019 12:05
@mrbig
Copy link
Author

mrbig commented Jan 26, 2019

Just a quick update: I've fixed a reported null pointer issue, rebased the PR to the current master and updated the licence texts according the up to date standards

@openhab-bot
Copy link
Collaborator

This pull request has been mentioned on openHAB Community. There might be relevant details there:

https://community.openhab.org/t/openhab1-2-nilan-heatpump/23538/72

</config-description>


</config-description:config-descriptions>
Copy link
Member

Choose a reason for hiding this comment

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

no newline

</channels>
</channel-group-type>

</thing:thing-descriptions>
Copy link
Member

Choose a reason for hiding this comment

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

no newline

</channel-type>

</thing:thing-descriptions>

Copy link
Member

Choose a reason for hiding this comment

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

whitespace in last line

</channels>
</channel-group-type>

</thing:thing-descriptions>
Copy link
Member

Choose a reason for hiding this comment

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

no newline

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

<channel-group-type id="meter-ac-general">
<label>Summary</label>
Copy link
Member

Choose a reason for hiding this comment

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

Why no description? :)

*
* @param manager the modbus manager from org.openhab.io.transport.modbus package
*/
@Reference(service = ModbusManager.class, cardinality = ReferenceCardinality.MANDATORY, policy = ReferencePolicy.STATIC, unbind = "unsetManager")
Copy link
Member

@davidgraeff davidgraeff Mar 21, 2019

Choose a reason for hiding this comment

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

Please remove unbind (its implicit) and policy. The default is reasonable. Also MANDATORY is default.

*/
public class CommonModelBlock extends AbstractSunSpecMessageBlock {

/**
Copy link
Member

Choose a reason for hiding this comment

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

If possible, can you use immutable classes (everything set in the constructor, everything public final, no getters, no setters)? That helps for thread safety but also for reviewing, because less lines of boilerplate code.

try {
new SunspecDiscoveryProcess(handler, listener).detectModel();
} catch (EndpointNotInitializedException ex) {
logger.debug("Could not start discovery process");
Copy link
Member

Choose a reason for hiding this comment

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

Raise to "warn". Its an actual error that should be highlighted in the logs don't you think.
And also: Add the exception as last argument. That adds a stacktrace and the exception message to the log.

}

/**
*
Copy link
Member

Choose a reason for hiding this comment

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

Hm?

*/
private InverterModelParser parser = new InverterModelParser();
/**
* Logger instance
Copy link
Member

Choose a reason for hiding this comment

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

commented the obvious

@davidgraeff
Copy link
Member

davidgraeff commented Mar 21, 2019

A binding of more than 5000 LOC is hard to review. I have noticed that you are doing two things in here as well.

I know this is a bit more work (although not really), but will help to merge things faster. Can you make a separate PR for extending modbus first and then reduce this PR?

I have left some inline comments. You sometimes comment the obvious which increases the code size. And you are using getters/setters although they could be avoided with immutable classes and other means. Please try to reduce the code size if you find more places.

@mrbig
Copy link
Author

mrbig commented Mar 24, 2019

Dear @davidgraeff
Thank you very much for your review.

I understand that reviewing this much of change at once can be hard. I tried to help this work by organizing my work into commits by the goal of the change. So modbus changes are commits f86056 and ed1ac0 and the rest is the new binding. So if you like that better, I can quickly split this into two separate pull requests.

And you are using getters/setters although they could be avoided with immutable classes and other means.

I'm in a bit trouble with this request. SunSpec model block can have 10-50 properties at least. Changing these to immutable classes as you requested would result in classes with a constructor with that many parameters, which is very hard to read and work with. Also that would need the controller plane to do first everything in local variables before instantiating the data object. I hardly believe this would reduce code size.

On the other side if our goal is thread safety and real immutable classes, then we could use chainable setters that return a copy of the object with the selected property altered. That would work something like the BigDecimal. This would make the user side a bit more compact, so instead of this:

        MeterModelBlock block = new MeterModelBlock();

        block.setSunspecDID(...);

        block.setLength(...);

        block.setAcCurrentTotal(...);

        block.setAcCurrentPhaseA(...);

        block.setAcCurrentPhaseB(...);

        block.setAcCurrentPhaseC(...);

        block.setAcCurrentSF(...);

        block.setAcVoltageLinetoNAverage(...);

one could write this:

        MeterModelBlock block = new MeterModelBlock()
            .setSunspecDID(...)
            .setLength(...)
            .setAcCurrentTotal(...)
            .setAcCurrentPhaseA(...)
            .setAcCurrentPhaseB(...)
            .setAcCurrentPhaseC(...)
            .setAcCurrentSF(...)
            .setAcVoltageLinetoNAverage(...)
            [...]

But apart of the removed new lines this does not save code either.

One more design goal was to leave room for implementation divergences. It's very likely that there will be manufacturers that diverge from the standard either by purpose or by mistake.

With the current architecture my goal was to have a clear separation of concerns:
_Parser classes are there to convert raw byte arrays to java types and to handle any implementation errors
_Block classes are there to act as DTO-s, to store the parsed data
_Handler classes are responsible to forward parsed values to the right channel and group of the thing.

The most code could be eliminated by removing the parser/block layer, but this would result in overcrowded handler classes.

Do you have any ideas which way to go from here?

@davidgraeff
Copy link
Member

davidgraeff commented Mar 24, 2019

I understand that reviewing this much of change at once can be hard. I tried to help this work by organizing my work into commits by the goal of the change. So modbus changes are commits f86056 and ed1ac0 and the rest is the new binding. So if you like that better, I can quickly split this into two separate pull requests.

That would be awesome. The thing is: I can only accept the entire PR or nothing.
And I would rather merge in smaller pieces that I'm sure of.

Do you have any ideas which way to go from here?

If the code is indeed modularized, then multiple PRs are very doable, I guess? Like in:

  • The modbus library changes
  • The basics of the new binding
  • More parsers/block layers

_Block classes are there to act as DTO-s, to store the parsed data

Can you have those in a "model" or "dto" package? That has been established as an accepted pattern

With the current architecture my goal was to have a clear separation of concerns:

The architecture is quite good, it is just the pure size of the PR.

@ssalonen
Copy link
Contributor

ssalonen commented Apr 22, 2019

Note that #5498 will break this PR since ModbusBitUtilities.extractStateFromRegisters will now return State, not DecimalType.

Since this PR uses that method with integer valuetypes, it is safe to cast to DecimalType.

EDIT: API is changing still a bit (not settling on Optional<DecimalType>), refer to PR for more details.

@mrbig
Copy link
Author

mrbig commented Apr 23, 2019

Thank you @ssalonen. I've put this on hold for a while until issue #5005 gets worked out. Then I'll do the necessary refactoring.

@ramack
Copy link
Contributor

ramack commented Aug 9, 2019

@mrbig the description of you bundle sounds promising and I am looking forward to try it. Do you already have plans to get this finally merged?

@ramack
Copy link
Contributor

ramack commented Oct 27, 2019

#5498 and #5005 are both closed. So is there some progress here? - I'd really love to have that, as today I have a very longish and unsatisfying manual ModBus-config for my Fronius solar inverter and this Binding seems to be perfectly solving this.

@mrbig
Copy link
Author

mrbig commented Oct 30, 2019

Thank you @ramack for your follow up on this. I started to reorganize the code to match up the new bundle organization, and to be able to split up into smaller PR-s.
I do not plan to do big changes to the logic itself, so if you are able to try out the current version on a 2.4 install and report back any issues you find would be a great help.

@Hilbrand
Copy link
Member

@mrbig FYI in case you didn't see it. There is a tutorial on the forum to guide you with the migration to the new build system:
https://community.openhab.org/t/tutorial-migrate-your-binding-to-the-maven-bnd-based-build-system/81389?u=hilbrand

mrbig referenced this pull request in mrbig/openhab2-addons Nov 2, 2019
SunSpec is an open standard for solar inverters and other related devices to share data about their internal state. The standard is implemented by several vendors like ABB, Fronius, SMA, Schneider Electric, Solaredge, etc.

The goal of this work is to add user friendly support of these devices to openHAB.

The standard is built on the Modbus protocol, so this work is heavily based on the Modbus binding. Also the Bluetooth binding and several of it's solutions were taken as an example how to extend an already existing binding with a new bundle.

Related issue: openhab#3216

This is a stripped down version of a SunSpec bundle aimed to ease reviewing.

Original PW with all the features can be found here:
  https://github.com/openhab/openhab2-addons/pull/4220

This version contains only a limited support for single phase inverters, but no auto discovery or any other fancy features are included.

Other changes from my original PR:
 - migrated to the new build system
 - using NonNull values wherever possible
 - modell classes were moved to a dto package and highly simplified
 - other minor code changes

Signed-off-by: Nagy Attila Gabor <mrbig@sneaker.hu>
@Raketenschnitzel
Copy link

I am also interested in this binding. The PR is 16 days old now.
Is there any progress in the reviewing?
I unfortunately can't do it myself. The only thing i could offer is testing it on a real device, what i am already doing but only making slow progress.

@Hilbrand Hilbrand added the awaiting other PR Depends on another PR label Jan 23, 2020
mrbig referenced this pull request in mrbig/openhab2-addons Jan 26, 2020
SunSpec is an open standard for solar inverters and other related devices to share data about their internal state. The standard is implemented by several vendors like ABB, Fronius, SMA, Schneider Electric, Solaredge, etc.

The goal of this work is to add user friendly support of these devices to openHAB.

The standard is built on the Modbus protocol, so this work is heavily based on the Modbus binding. Also the Bluetooth binding and several of it's solutions were taken as an example how to extend an already existing binding with a new bundle.

Related issue: openhab#3216

This is a stripped down version of a SunSpec bundle aimed to ease reviewing.

Original PW with all the features can be found here:
  https://github.com/openhab/openhab2-addons/pull/4220

This version contains only a limited support for single phase inverters, but no auto discovery or any other fancy features are included.

Other changes from my original PR:
 - migrated to the new build system
 - using NonNull values wherever possible
 - modell classes were moved to a dto package and highly simplified
 - other minor code changes

Signed-off-by: Nagy Attila Gabor <mrbig@sneaker.hu>
mrbig referenced this pull request in mrbig/openhab2-addons Mar 12, 2020
SunSpec is an open standard for solar inverters and other related devices to share data about their internal state. The standard is implemented by several vendors like ABB, Fronius, SMA, Schneider Electric, Solaredge, etc.

The goal of this work is to add user friendly support of these devices to openHAB.

The standard is built on the Modbus protocol, so this work is heavily based on the Modbus binding. Also the Bluetooth binding and several of it's solutions were taken as an example how to extend an already existing binding with a new bundle.

Related issue: openhab#3216

This is a stripped down version of a SunSpec bundle aimed to ease reviewing.

Original PW with all the features can be found here:
  https://github.com/openhab/openhab2-addons/pull/4220

This version contains only a limited support for single phase inverters, but no auto discovery or any other fancy features are included.

Other changes from my original PR:
 - migrated to the new build system
 - using NonNull values wherever possible
 - modell classes were moved to a dto package and highly simplified
 - other minor code changes

Signed-off-by: Nagy Attila Gabor <mrbig@sneaker.hu>
@mrbig
Copy link
Author

mrbig commented Mar 13, 2020

I close this PR, because I'm sure in this form it will not be merged.

I'll keep posting refactored versions step by step once they get approved.

Anyone interested in this binding please look at the following pull requests: #6331, #6994, #7432, #7441

@mrbig mrbig closed this Mar 13, 2020
mrbig referenced this pull request in mrbig/openhab2-addons Mar 21, 2020
SunSpec is an open standard for solar inverters and other related devices to share data about their internal state. The standard is implemented by several vendors like ABB, Fronius, SMA, Schneider Electric, Solaredge, etc.

The goal of this work is to add user friendly support of these devices to openHAB.

The standard is built on the Modbus protocol, so this work is heavily based on the Modbus binding. Also the Bluetooth binding and several of it's solutions were taken as an example how to extend an already existing binding with a new bundle.

Related issue: openhab#3216

This is a stripped down version of a SunSpec bundle aimed to ease reviewing.

Original PW with all the features can be found here:
  https://github.com/openhab/openhab2-addons/pull/4220

This version contains only a limited support for single phase inverters, but no auto discovery or any other fancy features are included.

Other changes from my original PR:
 - migrated to the new build system
 - using NonNull values wherever possible
 - modell classes were moved to a dto package and highly simplified
 - other minor code changes

Signed-off-by: Nagy Attila Gabor <mrbig@sneaker.hu>
J-N-K referenced this pull request Apr 18, 2020
* [sunspec] Modbus: SunSpec bundle basic version

SunSpec is an open standard for solar inverters and other related devices to share data about their internal state. The standard is implemented by several vendors like ABB, Fronius, SMA, Schneider Electric, Solaredge, etc.

The goal of this work is to add user friendly support of these devices to openHAB.

The standard is built on the Modbus protocol, so this work is heavily based on the Modbus binding. Also the Bluetooth binding and several of it's solutions were taken as an example how to extend an already existing binding with a new bundle.

Related issue: #3216

This is a stripped down version of a SunSpec bundle aimed to ease reviewing.

Original PW with all the features can be found here:
  https://github.com/openhab/openhab2-addons/pull/4220

This version contains only a limited support for single phase inverters, but no auto discovery or any other fancy features are included.

Other changes from my original PR:
 - migrated to the new build system
 - using NonNull values wherever possible
 - modell classes were moved to a dto package and highly simplified
 - other minor code changes

Signed-off-by: Nagy Attila Gabor <mrbig@sneaker.hu>
yfre referenced this pull request in yfre/openhab-addons Apr 27, 2020
* [sunspec] Modbus: SunSpec bundle basic version

SunSpec is an open standard for solar inverters and other related devices to share data about their internal state. The standard is implemented by several vendors like ABB, Fronius, SMA, Schneider Electric, Solaredge, etc.

The goal of this work is to add user friendly support of these devices to openHAB.

The standard is built on the Modbus protocol, so this work is heavily based on the Modbus binding. Also the Bluetooth binding and several of it's solutions were taken as an example how to extend an already existing binding with a new bundle.

Related issue: openhab#3216

This is a stripped down version of a SunSpec bundle aimed to ease reviewing.

Original PW with all the features can be found here:
  https://github.com/openhab/openhab2-addons/pull/4220

This version contains only a limited support for single phase inverters, but no auto discovery or any other fancy features are included.

Other changes from my original PR:
 - migrated to the new build system
 - using NonNull values wherever possible
 - modell classes were moved to a dto package and highly simplified
 - other minor code changes

Signed-off-by: Nagy Attila Gabor <mrbig@sneaker.hu>
Signed-off-by: Eugen Freiter <freiter@gmx.de>
markus7017 referenced this pull request in markus7017/openhab-addons May 29, 2020
* [sunspec] Modbus: SunSpec bundle basic version

SunSpec is an open standard for solar inverters and other related devices to share data about their internal state. The standard is implemented by several vendors like ABB, Fronius, SMA, Schneider Electric, Solaredge, etc.

The goal of this work is to add user friendly support of these devices to openHAB.

The standard is built on the Modbus protocol, so this work is heavily based on the Modbus binding. Also the Bluetooth binding and several of it's solutions were taken as an example how to extend an already existing binding with a new bundle.

Related issue: openhab#3216

This is a stripped down version of a SunSpec bundle aimed to ease reviewing.

Original PW with all the features can be found here:
  https://github.com/openhab/openhab2-addons/pull/4220

This version contains only a limited support for single phase inverters, but no auto discovery or any other fancy features are included.

Other changes from my original PR:
 - migrated to the new build system
 - using NonNull values wherever possible
 - modell classes were moved to a dto package and highly simplified
 - other minor code changes

Signed-off-by: Nagy Attila Gabor <mrbig@sneaker.hu>
LoungeFlyZ referenced this pull request in LoungeFlyZ/openhab2-addons Jun 8, 2020
* [sunspec] Modbus: SunSpec bundle basic version

SunSpec is an open standard for solar inverters and other related devices to share data about their internal state. The standard is implemented by several vendors like ABB, Fronius, SMA, Schneider Electric, Solaredge, etc.

The goal of this work is to add user friendly support of these devices to openHAB.

The standard is built on the Modbus protocol, so this work is heavily based on the Modbus binding. Also the Bluetooth binding and several of it's solutions were taken as an example how to extend an already existing binding with a new bundle.

Related issue: openhab#3216

This is a stripped down version of a SunSpec bundle aimed to ease reviewing.

Original PW with all the features can be found here:
  https://github.com/openhab/openhab2-addons/pull/4220

This version contains only a limited support for single phase inverters, but no auto discovery or any other fancy features are included.

Other changes from my original PR:
 - migrated to the new build system
 - using NonNull values wherever possible
 - modell classes were moved to a dto package and highly simplified
 - other minor code changes

Signed-off-by: Nagy Attila Gabor <mrbig@sneaker.hu>
J-N-K referenced this pull request in J-N-K/openhab-addons Jul 14, 2020
* [sunspec] Modbus: SunSpec bundle basic version

SunSpec is an open standard for solar inverters and other related devices to share data about their internal state. The standard is implemented by several vendors like ABB, Fronius, SMA, Schneider Electric, Solaredge, etc.

The goal of this work is to add user friendly support of these devices to openHAB.

The standard is built on the Modbus protocol, so this work is heavily based on the Modbus binding. Also the Bluetooth binding and several of it's solutions were taken as an example how to extend an already existing binding with a new bundle.

Related issue: openhab#3216

This is a stripped down version of a SunSpec bundle aimed to ease reviewing.

Original PW with all the features can be found here:
  https://github.com/openhab/openhab2-addons/pull/4220

This version contains only a limited support for single phase inverters, but no auto discovery or any other fancy features are included.

Other changes from my original PR:
 - migrated to the new build system
 - using NonNull values wherever possible
 - modell classes were moved to a dto package and highly simplified
 - other minor code changes

Signed-off-by: Nagy Attila Gabor <mrbig@sneaker.hu>
CSchlipp referenced this pull request in CSchlipp/openhab-addons Jul 26, 2020
* [sunspec] Modbus: SunSpec bundle basic version

SunSpec is an open standard for solar inverters and other related devices to share data about their internal state. The standard is implemented by several vendors like ABB, Fronius, SMA, Schneider Electric, Solaredge, etc.

The goal of this work is to add user friendly support of these devices to openHAB.

The standard is built on the Modbus protocol, so this work is heavily based on the Modbus binding. Also the Bluetooth binding and several of it's solutions were taken as an example how to extend an already existing binding with a new bundle.

Related issue: openhab#3216

This is a stripped down version of a SunSpec bundle aimed to ease reviewing.

Original PW with all the features can be found here:
  https://github.com/openhab/openhab2-addons/pull/4220

This version contains only a limited support for single phase inverters, but no auto discovery or any other fancy features are included.

Other changes from my original PR:
 - migrated to the new build system
 - using NonNull values wherever possible
 - modell classes were moved to a dto package and highly simplified
 - other minor code changes

Signed-off-by: Nagy Attila Gabor <mrbig@sneaker.hu>
Signed-off-by: CSchlipp <christian@schlipp.de>
andrewfg referenced this pull request in andrewfg/openhab-addons Aug 31, 2020
* [sunspec] Modbus: SunSpec bundle basic version

SunSpec is an open standard for solar inverters and other related devices to share data about their internal state. The standard is implemented by several vendors like ABB, Fronius, SMA, Schneider Electric, Solaredge, etc.

The goal of this work is to add user friendly support of these devices to openHAB.

The standard is built on the Modbus protocol, so this work is heavily based on the Modbus binding. Also the Bluetooth binding and several of it's solutions were taken as an example how to extend an already existing binding with a new bundle.

Related issue: openhab#3216

This is a stripped down version of a SunSpec bundle aimed to ease reviewing.

Original PW with all the features can be found here:
  https://github.com/openhab/openhab2-addons/pull/4220

This version contains only a limited support for single phase inverters, but no auto discovery or any other fancy features are included.

Other changes from my original PR:
 - migrated to the new build system
 - using NonNull values wherever possible
 - modell classes were moved to a dto package and highly simplified
 - other minor code changes

Signed-off-by: Nagy Attila Gabor <mrbig@sneaker.hu>
andrewfg referenced this pull request in andrewfg/openhab-addons Aug 31, 2020
* [sunspec] Modbus: SunSpec bundle basic version

SunSpec is an open standard for solar inverters and other related devices to share data about their internal state. The standard is implemented by several vendors like ABB, Fronius, SMA, Schneider Electric, Solaredge, etc.

The goal of this work is to add user friendly support of these devices to openHAB.

The standard is built on the Modbus protocol, so this work is heavily based on the Modbus binding. Also the Bluetooth binding and several of it's solutions were taken as an example how to extend an already existing binding with a new bundle.

Related issue: openhab#3216

This is a stripped down version of a SunSpec bundle aimed to ease reviewing.

Original PW with all the features can be found here:
  https://github.com/openhab/openhab2-addons/pull/4220

This version contains only a limited support for single phase inverters, but no auto discovery or any other fancy features are included.

Other changes from my original PR:
 - migrated to the new build system
 - using NonNull values wherever possible
 - modell classes were moved to a dto package and highly simplified
 - other minor code changes

Signed-off-by: Nagy Attila Gabor <mrbig@sneaker.hu>
andrewfg referenced this pull request in andrewfg/openhab-addons Aug 31, 2020
* [sunspec] Modbus: SunSpec bundle basic version

SunSpec is an open standard for solar inverters and other related devices to share data about their internal state. The standard is implemented by several vendors like ABB, Fronius, SMA, Schneider Electric, Solaredge, etc.

The goal of this work is to add user friendly support of these devices to openHAB.

The standard is built on the Modbus protocol, so this work is heavily based on the Modbus binding. Also the Bluetooth binding and several of it's solutions were taken as an example how to extend an already existing binding with a new bundle.

Related issue: openhab#3216

This is a stripped down version of a SunSpec bundle aimed to ease reviewing.

Original PW with all the features can be found here:
  https://github.com/openhab/openhab2-addons/pull/4220

This version contains only a limited support for single phase inverters, but no auto discovery or any other fancy features are included.

Other changes from my original PR:
 - migrated to the new build system
 - using NonNull values wherever possible
 - modell classes were moved to a dto package and highly simplified
 - other minor code changes

Signed-off-by: Nagy Attila Gabor <mrbig@sneaker.hu>
andrewfg referenced this pull request in andrewfg/openhab-addons Aug 31, 2020
* [sunspec] Modbus: SunSpec bundle basic version

SunSpec is an open standard for solar inverters and other related devices to share data about their internal state. The standard is implemented by several vendors like ABB, Fronius, SMA, Schneider Electric, Solaredge, etc.

The goal of this work is to add user friendly support of these devices to openHAB.

The standard is built on the Modbus protocol, so this work is heavily based on the Modbus binding. Also the Bluetooth binding and several of it's solutions were taken as an example how to extend an already existing binding with a new bundle.

Related issue: openhab#3216

This is a stripped down version of a SunSpec bundle aimed to ease reviewing.

Original PW with all the features can be found here:
  https://github.com/openhab/openhab2-addons/pull/4220

This version contains only a limited support for single phase inverters, but no auto discovery or any other fancy features are included.

Other changes from my original PR:
 - migrated to the new build system
 - using NonNull values wherever possible
 - modell classes were moved to a dto package and highly simplified
 - other minor code changes

Signed-off-by: Nagy Attila Gabor <mrbig@sneaker.hu>
DaanMeijer referenced this pull request in DaanMeijer/openhab-addons Sep 1, 2020
* [sunspec] Modbus: SunSpec bundle basic version

SunSpec is an open standard for solar inverters and other related devices to share data about their internal state. The standard is implemented by several vendors like ABB, Fronius, SMA, Schneider Electric, Solaredge, etc.

The goal of this work is to add user friendly support of these devices to openHAB.

The standard is built on the Modbus protocol, so this work is heavily based on the Modbus binding. Also the Bluetooth binding and several of it's solutions were taken as an example how to extend an already existing binding with a new bundle.

Related issue: openhab#3216

This is a stripped down version of a SunSpec bundle aimed to ease reviewing.

Original PW with all the features can be found here:
  https://github.com/openhab/openhab2-addons/pull/4220

This version contains only a limited support for single phase inverters, but no auto discovery or any other fancy features are included.

Other changes from my original PR:
 - migrated to the new build system
 - using NonNull values wherever possible
 - modell classes were moved to a dto package and highly simplified
 - other minor code changes

Signed-off-by: Nagy Attila Gabor <mrbig@sneaker.hu>
Signed-off-by: Daan Meijer <daan@studioseptember.nl>
markus7017 referenced this pull request in markus7017/openhab-addons Sep 19, 2020
* [sunspec] Modbus: SunSpec bundle basic version

SunSpec is an open standard for solar inverters and other related devices to share data about their internal state. The standard is implemented by several vendors like ABB, Fronius, SMA, Schneider Electric, Solaredge, etc.

The goal of this work is to add user friendly support of these devices to openHAB.

The standard is built on the Modbus protocol, so this work is heavily based on the Modbus binding. Also the Bluetooth binding and several of it's solutions were taken as an example how to extend an already existing binding with a new bundle.

Related issue: openhab#3216

This is a stripped down version of a SunSpec bundle aimed to ease reviewing.

Original PW with all the features can be found here:
  https://github.com/openhab/openhab2-addons/pull/4220

This version contains only a limited support for single phase inverters, but no auto discovery or any other fancy features are included.

Other changes from my original PR:
 - migrated to the new build system
 - using NonNull values wherever possible
 - modell classes were moved to a dto package and highly simplified
 - other minor code changes

Signed-off-by: Nagy Attila Gabor <mrbig@sneaker.hu>
@wborn wborn removed the awaiting other PR Depends on another PR label Dec 23, 2022
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.

None yet

8 participants