Share your current setup and future plans

I am just starting out with a few basic Sonoff devices. Bought the iFan03 controller because the ceiling fan in the bedroom does not have speed control, all settings are max speed. Will replace it with the iFan with the benefit of having the remote as well. Also have one Sonoff camera that is being used as a baby monitor at the moment.

Want to add the SV's to a Centurion D5 evo gate motor. Can you see the status of the gate as well, open or close? Also on a Xtrac garage door motor if possible.

Still running off the eWelink app but will get a server if I get more devices. Getting the pool pump connected will also be nice, will help with setting schedules and being able to turn it off without going outside.
 
Can you see the status of the gate as well, open or close?

‘I couldn’t manage that with Tasmota (I might be too stupid though). I wrote up something using ESPHome on an SV in order to monitor door state though.
 
Finally got the chance to tart up the power side of things in Home Assistant. I still need to find a way to hide the header properly without the (now unsupported) custom header component. I’ll get there though...

83459BF9-2D6D-4C3E-BFDA-5BDBA23AF746.png
 
Finally got the chance to tart up the power side of things in Home Assistant. I still need to find a way to hide the header properly without the (now unsupported) custom header component. I’ll get there though...

View attachment 940094
Really cool. Can you explain to me what your setup is there with regards to energy consumption. Solar, battery, etc. How much did it cost and how much do you save each month?
 
Really cool. Can you explain to me what your setup is there with regards to energy consumption. Solar, battery, etc. How much did it cost and how much do you save each month?
Man oh man that’ll be an essay :ROFL:

Basically I have a Goodwe Hybrid inverter for which a few of us developed a custom integration into Home Assistant. This integration draws data directly from the UDP port of the WiFi adapter of the inverter to get real-time data. This protocol isn’t publicly available so we had to do a lot of reverse engineering to get the data. There’s probably a lot more data being displayed than what anyone would need, but it’s there in order to validate what’s happening. It helps with fine tuning things. Realistically most of the data will remain in the back end and used for automations.

What I find most useful is how much power I’m drawing in a day, how much solar I’m generating and how much am I either using or feeding back to the grid by the end of the day. Based on this data, and things like weather and solar forecasts, I can decide if my pool pump should run, if my geaser might need a boost, maybe enough sun to use AC should I want to, etc. The main idea is to understand what is the power hogs are and decide if their presence is justified vs my goal of keeping my grid meter as close as possible to zero (I obviously don’t want to feed back more than I need to, while still using eskom as a battery where I can).

As far as system, I have 16 * 405W JA mono panels and 4 * US2000 Pylontechs. My average usage used to be between 800-900kWh a month and has come down to around 250kWh as of the last bill. Truth be told, you save maybe R1500-R2000 a month. It’s a massive investment for very small immediate gains, but this has become a pet project/hobby for me so there’s that, hehe
 
Man oh man that’ll be an essay :ROFL:

Basically I have a Goodwe Hybrid inverter for which a few of us developed a custom integration into Home Assistant. This integration draws data directly from the UDP port of the WiFi adapter of the inverter to get real-time data. This protocol isn’t publicly available so we had to do a lot of reverse engineering to get the data. There’s probably a lot more data being displayed than what anyone would need, but it’s there in order to validate what’s happening. It helps with fine tuning things. Realistically most of the data will remain in the back end and used for automations.

What I find most useful is how much power I’m drawing in a day, how much solar I’m generating and how much am I either using or feeding back to the grid by the end of the day. Based on this data, and things like weather and solar forecasts, I can decide if my pool pump should run, if my geaser might need a boost, maybe enough sun to use AC should I want to, etc. The main idea is to understand what is the power hogs are and decide if their presence is justified vs my goal of keeping my grid meter as close as possible to zero (I obviously don’t want to feed back more than I need to, while still using eskom as a battery where I can).

As far as system, I have 16 * 405W JA mono panels and 4 * US2000 Pylontechs. My average usage used to be between 800-900kWh a month and has come down to around 250kWh as of the last bill. Truth be told, you save maybe R1500-R2000 a month. It’s a massive investment for very small immediate gains, but this has become a pet project/hobby for me so there’s that, hehe
Very interesting. Where can I get the local Goodwe wifi home assistant integration?
 
Set up AptCacherNg since I've got an increasing number of debian based things floating around.

Surprised how well it works. Improves speeds (for virtualized stuff its 10Gbe) and hitrate higher than expected too.

Setup Flightradar24 ADS-B antenna. And just learned that apparently/allegedly they allow rich people to buy the right to be hidden on there...so now also streaming the data to https://www.adsbexchange.com/
 
Last edited:
I've finally got a cheap Teclast tablet in to use as a display in the kitchen. And also finally got the desire to mess with some themes and tarting the interface up a little. Now just to 3D print a nice frame for the tablet so it can be mounted properly.

Ignore the Android icons; they came up when I took a screenshot on the tablet. You don't see these normally. Best of all, this is the standard HA options. With the latest HA version there's no need to use the custom header component at all; they've integrated most of that straight into HA. You don't even need to run kiosk mode either.

Screenshot_20201108-123201.png
 
Some slight updates, mostly around how Solcast is now determining how my Inverter behaves:

1606223574602.png

1. Every 5 minutes (during daylight), I send Solcast the PV I generated for the previous 5 minutes. I've been doing this for the last two weeks. That's about the time it needed to tune to my setup and give reasonably accurate forecast for what the system is likely to produce for today and tomorrow.
2. Every hour (during daytime) I poll the Solcast server to give me an idea of the amount of potential PV production I can expect for the rest of the day. I use this information to decide if I'm going to run the pool pump - in my case I run an automation at 10am and if there's more than 20kWh projected for the day, it'll run the pump for the set period.
3. During the day, I force the inverter to not discharge the batteries, only to charge.
4. At around 9pm at night (after any heavy loads have finished), I query the Solcast server for an estimate of what PV generation it expects for the next day. My system can potentially generate around 40kWh of PV on a good day. If the projection is more than 20kWh, then I start running the night time loads off battery till they use 60% of the capacity. If the projection is more than 30kWh, I allow the loads to use up to 70% of the battery. (I have 9.6kWh of battery storage). If the projection is lower than 20kWh, I don't allow the night time loads to discharge the battery at all. The science isn't exact, it is just a forecast, but I'll be letting this run to see how effective it works. It's a balance between using as much of the batteries as I can vs. the risk of load shedding in the morning and having enough capacity available till there's enough PV to carry the loads and charge the batteries.
5. If there is load shedding, the system will monitor the state of the battery. When the state drops below 50%, it'll switch off the two freezers and fridge as a belts and braces approach to stretch the available power a little further till (hopefully) there's enough sun to pick up the slack again.

Anyway, I figured it's an interesting enough approach to automating the various data points to use the hardware as best as possible.
 
Some slight updates, mostly around how Solcast is now determining how my Inverter behaves:

View attachment 959180

1. Every 5 minutes (during daylight), I send Solcast the PV I generated for the previous 5 minutes. I've been doing this for the last two weeks. That's about the time it needed to tune to my setup and give reasonably accurate forecast for what the system is likely to produce for today and tomorrow.
2. Every hour (during daytime) I poll the Solcast server to give me an idea of the amount of potential PV production I can expect for the rest of the day. I use this information to decide if I'm going to run the pool pump - in my case I run an automation at 10am and if there's more than 20kWh projected for the day, it'll run the pump for the set period.
3. During the day, I force the inverter to not discharge the batteries, only to charge.
4. At around 9pm at night (after any heavy loads have finished), I query the Solcast server for an estimate of what PV generation it expects for the next day. My system can potentially generate around 40kWh of PV on a good day. If the projection is more than 20kWh, then I start running the night time loads off battery till they use 60% of the capacity. If the projection is more than 30kWh, I allow the loads to use up to 70% of the battery. (I have 9.6kWh of battery storage). If the projection is lower than 20kWh, I don't allow the night time loads to discharge the battery at all. The science isn't exact, it is just a forecast, but I'll be letting this run to see how effective it works. It's a balance between using as much of the batteries as I can vs. the risk of load shedding in the morning and having enough capacity available till there's enough PV to carry the loads and charge the batteries.
5. If there is load shedding, the system will monitor the state of the battery. When the state drops below 50%, it'll switch off the two freezers and fridge as a belts and braces approach to stretch the available power a little further till (hopefully) there's enough sun to pick up the slack again.

Anyway, I figured it's an interesting enough approach to automating the various data points to use the hardware as best as possible.

I like it Gert! Very similar to how my setup behaves!

I actually find the Solcast forecast a little bit more accurate than most weather forecasts :)
 
Some slight updates, mostly around how Solcast is now determining how my Inverter behaves:

View attachment 959180

1. Every 5 minutes (during daylight), I send Solcast the PV I generated for the previous 5 minutes. I've been doing this for the last two weeks. That's about the time it needed to tune to my setup and give reasonably accurate forecast for what the system is likely to produce for today and tomorrow.
2. Every hour (during daytime) I poll the Solcast server to give me an idea of the amount of potential PV production I can expect for the rest of the day. I use this information to decide if I'm going to run the pool pump - in my case I run an automation at 10am and if there's more than 20kWh projected for the day, it'll run the pump for the set period.
3. During the day, I force the inverter to not discharge the batteries, only to charge.
4. At around 9pm at night (after any heavy loads have finished), I query the Solcast server for an estimate of what PV generation it expects for the next day. My system can potentially generate around 40kWh of PV on a good day. If the projection is more than 20kWh, then I start running the night time loads off battery till they use 60% of the capacity. If the projection is more than 30kWh, I allow the loads to use up to 70% of the battery. (I have 9.6kWh of battery storage). If the projection is lower than 20kWh, I don't allow the night time loads to discharge the battery at all. The science isn't exact, it is just a forecast, but I'll be letting this run to see how effective it works. It's a balance between using as much of the batteries as I can vs. the risk of load shedding in the morning and having enough capacity available till there's enough PV to carry the loads and charge the batteries.
5. If there is load shedding, the system will monitor the state of the battery. When the state drops below 50%, it'll switch off the two freezers and fridge as a belts and braces approach to stretch the available power a little further till (hopefully) there's enough sun to pick up the slack again.

Anyway, I figured it's an interesting enough approach to automating the various data points to use the hardware as best as possible.
Wow. Could you share some of your automations? Also what theme are you using - it's really nice.
 
I like it Gert! Very similar to how my setup behaves!

I actually find the Solcast forecast a little bit more accurate than most weather forecasts :)
Thank you Eben. Truth be told, a lot of the examples you posted elsewhere was the main motivator for going the Solcast route. Now that it’s tuned, I do find it pretty good at predicting, at least, the potential PV for the next day. It really is a very powerful tool. And now that we are cracking more of the Goodwe UDP protocol we can do cool things like change DoD on the fly. It allows us the dynamically change how the inverter behaves based on geo and weather data, and how the battery is applied to the system. Something that definitely isn’t possible with the Goodwe out the box.
 
Wow. Could you share some of your automations? Also what theme are you using - it's really nice.
Thanks, just give me a reminder in the morning. It’s a little difficult posting code over with the iPad.

I‘m using the iOS dark and light themes. I panelbeated some of the colours to my liking but theres a few themes to choose from

https://github.com/basnijholt/lovelace-ios-themes

For the graphs I used this

https://github.com/kalkih/mini-graph-card

It is really one of the most appealing graphing tools I’ve seen so far, being able to colour the severity of a graph in a very sleek way.
 
For the graphs I used this

https://github.com/kalkih/mini-graph-card

It is really one of the most appealing graphing tools I’ve seen so far, being able to colour the severity of a graph in a very sleek way.

thanks for sharing -- it does look pretty cool!! I especially like that it has an aggregate function and that you can then do hourly consumption type things :)

Thank you Eben. Truth be told, a lot of the examples you posted elsewhere was the main motivator for going the Solcast route. Now that it’s tuned, I do find it pretty good at predicting, at least, the potential PV for the next day. It really is a very powerful tool. And now that we are cracking more of the Goodwe UDP protocol we can do cool things like change DoD on the fly. It allows us the dynamically change how the inverter behaves based on geo and weather data, and how the battery is applied to the system. Something that definitely isn’t possible with the Goodwe out the box.

I'm glad you guys are getting there!! Hope it stays consistently open after you reverse it. Pity more manufacturers wouldn't just make the data in their devices open -- especially with these type of things which costs an arm and a leg and I expect to use for 20 years... Goodwe/Victron might not even exist in it's current form after at that time, or the device is no longer supported by their "cloud", or they start charging you for the cloud service etc.

We've seen this behaviour in a bunch of other IOT manufacturers (and is one of the core beliefs of the Home Assistant project -- that it should be local and not dependent on some cloud).
 
Wow. Could you share some of your automations? Also what theme are you using - it's really nice.
This is pretty much my whole automations.yaml file. Yes, I can get it more sleek with Node Red, but I've been actively trying to avoid going that route. It's just another thing I need to learn that'll do my head in.

YAML:
- alias: Sunset
  trigger:
    platform: sun
    event: sunset
  action:
  - service: switch.turn_on
    entity_id: switch.tasmotaoutsidefrontlights_tasmotaoutsidefrontwalllights
  - service: switch.turn_on
    entity_id: switch.tasmotat0kitchenoutside_tasmotat0kitchenoutside
  - service: switch.turn_on
    entity_id: switch.tasmotat0dressroom_tasmotat0outsidebacklights
  - service: switch.turn_on
    entity_id: switch.tasmotat0patio_tasmotat0patiooutside
  id: 753308d7ee064021a4fa6ac9f754203a
- alias: Sunrise
  trigger:
    platform: sun
    event: sunrise
  action:
  - service: switch.turn_off
    entity_id: switch.tasmotaoutsidefrontlights_tasmotaoutsidefrontwalllights
  - service: switch.turn_off
    entity_id: switch.tasmotat0kitchenoutside_tasmotat0kitchenoutside
  - service: switch.turn_off
    entity_id: switch.tasmotat0dressroom_tasmotat0outsidebacklights
  - service: switch.turn_off
    entity_id: switch.tasmotat0patio_tasmotat0patiooutside
  id: 14d6257fd7be4839b42c18a49144adaf
- id: '1603045736685'
  alias: Turn Off Aircons
  description: ''
  trigger:
  - platform: time
    at: '21:30'
  condition: []
  action:
  - service: climate.turn_off
    data: {}
    entity_id: climate.bedroom_ac
  - service: climate.turn_off
    data: {}
    entity_id: climate.tv_ac
  mode: single
- id: '1603638775439'
  alias: Pool Pump On
  description: ''
  trigger:
  - platform: time
    at: '10:00:00'
  condition:
  - condition: numeric_state
    entity_id: sensor.solcast_forecast
    above: '15'
  action:
  - service: switch.turn_on
    data: {}
    entity_id: switch.tasmotapool
  mode: single
- id: '1603638874652'
  alias: Pool Pump Off
  description: ''
  trigger:
  - platform: time
    at: '14:00:00'
  condition: []
  action:
  - service: switch.turn_off
    data: {}
    entity_id: switch.tasmotapool
  mode: single
- id: '1604841238317'
  alias: Solcast Tune
  description: Send tuning data to Solcast every 5 mins
  trigger:
  - platform: time_pattern
    minutes: /5
  condition:
  - condition: sun
    before: sunset
    before_offset: -00:30:00
    after: sunrise
    after_offset: 00:30:00
  action:
  - service: rest_command.solcast_tune
    data: {}
  mode: single
- id: '1605879149401'
  alias: Goodwe DoD Night 60
  description: Conditions for 60% DoD
  trigger:
  - platform: time
    at: '21:00:00'
  condition:
  - condition: numeric_state
    entity_id: sensor.solcast_forecast
    attribute: tomorrow
    above: '20.00'
    below: '30.00'
  action:
  - service: goodwe.set_ongrid_battery_dod
    data:
      entity_id: sensor.goodwe_inverter
      ongrid_battery_dod: 60
  mode: single
- id: '1605879219607'
  alias: Goodwe DoD Day
  description: ''
  trigger:
  - platform: time
    at: 06:00:00
  condition: []
  action:
  - service: goodwe.set_ongrid_battery_dod
    data:
      entity_id: sensor.goodwe_inverter
      ongrid_battery_dod: 0
  mode: single
- id: '1606211453192'
  alias: Solcast Update
  description: Update the Solcast prediction for the day
  trigger:
  - platform: time_pattern
    hours: /01
  condition:
  - condition: sun
    before: sunset
    before_offset: -00:30:00
    after: sunrise
    after_offset: 00:30:00
  action:
  - service: solcast.update_forecast
    data: {}
  mode: single
- id: '1606212123693'
  alias: Goodwe DoD Night 70
  description: Conditions for 70% DoD
  trigger:
  - platform: time
    at: '21:00:00'
  condition:
  - condition: numeric_state
    entity_id: sensor.solcast_forecast
    attribute: tomorrow
    above: '29.9999'
  action:
  - service: goodwe.set_ongrid_battery_dod
    data:
      entity_id: sensor.goodwe_inverter
      ongrid_battery_dod: 70
  mode: single
- id: '1606212920680'
  alias: Shed Loads when Offgrid
  description: Shed certain loads when power failure and SoC drops to 50%
  trigger:
  - platform: numeric_state
    entity_id: sensor.goodwe_battery_soc
    below: '50'
  condition:
  - condition: numeric_state
    entity_id: sensor.goodwe_vgrid
    below: '200'
  action:
  - service: switch.turn_off
    data: {}
    entity_id: switch.tasmotaplugdefyfreezer_tasmotaplugdefyfreezer
  - service: switch.turn_off
    data: {}
    entity_id: switch.tasmotaplugkicfreezer_tasmotaplugkicfreezer
  - service: switch.turn_off
    data: {}
    entity_id: switch.tasmotaplugsamsungfridge_tasmotaplugsamsungfridge
  mode: single
- id: '1606213305876'
  alias: Shed Return Loads when OnGrid
  description: Switch loads back on that was turned off previously
  trigger:
  - platform: numeric_state
    entity_id: sensor.goodwe_vgrid
    above: '200'
  condition:
  - condition: state
    entity_id: switch.tasmotaplugdefyfreezer_tasmotaplugdefyfreezer
    state: 'off'
  action:
  - service: switch.turn_on
    data: {}
    entity_id: switch.tasmotaplugdefyfreezer_tasmotaplugdefyfreezer
  - service: switch.turn_on
    data: {}
    entity_id: switch.tasmotaplugkicfreezer_tasmotaplugkicfreezer
  - service: switch.turn_on
    data: {}
    entity_id: switch.tasmotaplugsamsungfridge_tasmotaplugsamsungfridge
  mode: single
 
thanks for sharing -- it does look pretty cool!! I especially like that it has an aggregate function and that you can then do hourly consumption type things :)

I only saw that after I used this graphing tool. Currently, I'm doing aggregation with the Utility Meter and integration platforms to work out daily/monthly PV/House/Utility use. The Goodwe inverter, believe it or not, does provide this information but it's wrong. I kid you not. So I had to manually aggregate the data for display in HA

I'm glad you guys are getting there!! Hope it stays consistently open after you reverse it. Pity more manufacturers wouldn't just make the data in their devices open -- especially with these type of things which costs an arm and a leg and I expect to use for 20 years... Goodwe/Victron might not even exist in it's current form after at that time, or the device is no longer supported by their "cloud", or they start charging you for the cloud service etc.

We've seen this behaviour in a bunch of other IOT manufacturers (and is one of the core beliefs of the Home Assistant project -- that it should be local and not dependent on some cloud).

It's a genuine concern. But I suspect Goodwe will never 'open up' their inverter UDP protocol. Most of the grunt work was done sniffing the packets over UDP, but the real breakthrough came when one of the guys managed to decompile the PV Master app. We were all pretty shocked at how bad the programming is, hence why I think Goodwe are too shy to open it up lol. It did help identify a few things I wasn't able to figure out by sniffing the packets.
 
Top
Sign up to the MyBroadband newsletter
X