-
-
Notifications
You must be signed in to change notification settings - Fork 512
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
Feature: Implement go-e Controller integration #2330
base: master
Are you sure you want to change the base?
Feature: Implement go-e Controller integration #2330
Conversation
@@ -80,7 +80,7 @@ | |||
v-model="mqttConfigList.mqtt_publish_interval" | |||
type="number" | |||
min="5" | |||
max="86400" | |||
max="65535" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I updated this value because I saw the correct value in the firmware and when copying UI elements I noticed this value being incorrect.
:label="$t('integrationsadmin.goecontrollerHostname')" | ||
v-model="integrationsConfig.goe_ctrl_hostname" | ||
type="text" | ||
placeholder="go-econtroller_XXXXXX" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is the hostname format, the X's being the serial number, usually starting with 9 as the first digit.
webapp/src/locales/fr.json
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I do not speak this language so I left the keys to the english translations
@@ -5,7 +5,7 @@ | |||
:class="[wide ? 'col-sm-4' : 'col-sm-2', isCheckbox ? 'form-check-label' : 'col-form-label']" | |||
> | |||
{{ label }} | |||
<BIconInfoCircle v-if="tooltip !== undefined" v-tooltip :title="tooltip" /> | |||
<BIconInfoCircle v-if="tooltip !== undefined" v-tooltip :title="tooltip" class="ms-1" /> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
webapp/.nvmrc
Outdated
@@ -0,0 +1 @@ | |||
21.1.0 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some JS devs have a script to load these .nvmrc files and set the correct node version automatically. I also updated the package.json file with the correct node engine version.
|
||
const bool reachable = Datastore.getIsAllEnabledReachable(); | ||
|
||
_loopTask.setInterval((reachable ? integrationsConfig.GoeControllerUpdateInterval : std::min(integrationsConfig.GoeControllerUpdateInterval, 5U)) * TASK_SECOND); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Increase timeout when no data is available because we do not need to publish "0" so often.
The go-e Controller needs to be fed a value every couple seconds or else it will "forget" the value was set, so not sending does not work unfortunately. I also do not know the exact interval tho.
6fb7297
to
7ae94d8
Compare
FYI this will require #2331 to have successful CI runs |
7ae94d8
to
4239a0d
Compare
All rebased now, should be ready to merge! 🎉 |
Sorry I may be numb or uninformed. Can you maybe explain what go-e Controller can be used for and/or some documentation pointers on what this integration actually achieves ;) |
The go-e Controller enables people who own a go-e Charger to measure their home power consumption. It is kinda a smart-meter, but you install it on a DIN rail in your apartment. It can forward this information to go-e Chargers and also has a homeassistant integration. The information about solar can be used for pv-surplus charging for electric cars. https://go-e.com/de-at/loesungen/fuer-kunden/pv-ueberschussladen Also, when you have a microinverter your typical setup is that when you measure your grid consumption you do not know how much energy your home uses unless you know how much energy you are producing. This integration sets the consumption on both solar and optionally home category. These external category powers ( Also here is a information I found on go-e's website: |
Basically without this integration opendtu & go-e controller users will have a problem figuring out how much their home actually consumes (unless it is on its own fuse). For me, the garden outlet is on the same cable as the living room and a workdesk for example. |
@stefan123t Hi, I wanted to ask if this is good like that or if I need to add more info? |
@CommanderRedYT thanks for the details Florian. I think now it is up to tbnobody or probably @schlimmchen at the downstream OpenDTU-OnBattery project to decide whether they want to add support for the go-e Controller. |
I am not so sure about that. This "power meter integration" here is just for telling the go-e Controller how much solar energy is produced so values like the home measurements are correct. It does not mean that someone needs a battery for example, so imo it would fit in here too. It does not really have something todo with charging a battery. |
@CommanderRedYT yes but the whole Power Meter and Dynamic Power Limit functionality is kept out of the mainline OpenDTU project for now, this is a feature which is available only in the OpenDTU-OnBattery daughter project. |
Again, you don't seem to understand. This has nothing Todo with limiting power. This is just so that the go-e Controller has the correct power levels and the pv surplus charging knows how much pv energy is there. This MR only sets the values fetched from the inverters to the solar power value on the power meter because it is not possible to measure it due to the outlet being on the same circuit as 30 other devices |
4239a0d
to
d4069c5
Compare
d4069c5
to
4379879
Compare
Rebased the PR to newest master |
4379879
to
438773f
Compare
@stefan123t Do you know what the progress is here? |
@CommanderRedYT yes I understand that this is a general use-case, but OpenDTU usually does not accept these extensions. @schlimmchen @AndreasBoehm is this PR #2330 something you would eventually consider in OpenDTU-OnBattery ? |
@stefan123t Another use case that has nothing to do with charging is that you then can for example control your water heater only when solar energy is there. There are many applications which do not involve EVs at all. It would mean that everyone who wants to use this would need to switch. And idk if you can just upload a onBattery binary as OTA for the original project. How fast is the release cycle of onBattery? If it only takes a day or so from a opendtu release to a new onBattery release it's fine but if not I would be happier with just maintaining my own fork (which will basically just be me rebasing this PR all the time). |
I am not aware of any time committment from OpenDTU-OnBattery folks at hoylabs to merge / pull updates from upstream within a day or so. I would assume though that in order to merge your PR into ODOB it would require some changes. Regarding your question about OTA, I have successfully flashed forth- and backward between OpenDTU and ODOB in the past. |
I don't see this as a feature for OpenDTU-OnBattery to be honest. go-e offers mqtt and i think that this can be easily integrated using HA or nodeRed with the current data provided by openDTU: https://github.com/goecharger/go-eCharger-API-v2/blob/main/mqtt-de.md#werte-setzen |
@AndreasBoehm that means having additional things running. More software that requires more resources and that can fail. With HA the setting of external categories on the controller is not a feature afaik and with nodered its just another software stack just for a simple mqtt publish. That also means one would need to buy something like a raspberry pi. When having it inside the opendtu firmware, one can even rely on go-e's cloud for data storage for example. |
I can umderstand all three POVs:
As @CommanderRedYT already points out in his opening post it will be maintained in his own fork as a separate plugin. I think we should somehow formalize this plugin approach eventually allowing multiple extensions to run in parallel and enhancing the functionality of OpenDTU and the features of ODOB. Even though this may create additional overhead in the build framework I think the benefits of having this and other useful extensions running in the same context on the ESP32 are obvious. Here is an example implementation of such a plugin framework: I also understand that this may be neither necessary upstream in OpenDTU nor downstream in ODOB it would still benefit the Open*** ecosystem. Though as it may pose the risk of Tasmota*zation of the build setup (i.e. a build bot which allows to generate firmware blobs with wanted and needed features) we should define the requirements for such a side car (pun intended) as a community rather thoroughly. |
@stefan123t With maintaining I meant if any problems exist with the code I am always there to fix it. But also of course for development and testing, as long as I don't have push permissions, I will maintain it as my own fork. |
This is a PR for adding a integration for go-e Controller.
I implemented it in a way that more integrations can be done at a later point (group it as "Integration Settings").
This is the link to the go-e API documentation: https://github.com/goecharger/go-eCharger-API-v2/blob/main/http-en.md
I am setting the api-key
ecp
on the go-e Controller (hostname/ip configurable via the webui) to a array with the values for the solar category and optionally the home category. It uses the local HTTP-Api of the go-e Controller. (Not Cloud HTTP API!!)Note: Because I do not speak french, I could only set them to the english values.
I am offering to be the maintainer for at least this part of the project if wanted.