Ik heb een GoodWe GW6K-DT omvormer, gekoppeld aan Home Assistant met de standaard GoodWe integratie.DynamicDreams schreef op zaterdag 1 juli 2023 @ 22:31:
[...]
Kun je beschrijven hoe je dat hebt gedaan? En met welke omvormer?
Deze creërt allerlei sensoren, maar ook een number entity waarmee je de export limit in kan stellen (in %):
:strip_exif()/f/image/X9QB8zE85onJkbMxFXl2ce8N.jpg?f=fotoalbum_large)
Voordat deze setting daadwerkelijk iets doet moet je overigens eerst met de GoodWe SolarGo app met je omvormer verbinden om de Export Limit setting aan te zetten, anders kan je in HA klikken wat je wil maar gebeurt er niets (100 punten tip van Sicco92 in "Home Assistant: Open source Python3 home automation - deel 5" )
Sometimes you need to plan for coincidence
Over 4 minuten gaat stroom terugleveren geld kosten (en afnemen geld opleveren).
Ik heb een relais geplaatst voor mijn PV, die ik met mijn domotica kan schakelen.
Mijn domotica haalt de actuele stroomprijs op en schakelt de relais naar aanleiding.
Opbrengst van mijn Tibber Homevolt met externe kWh meter. | Opbrengst van mijn Tibber Homevolt volgens de Tibber Data API.
Het is niet zo erg als jij zegt toch ? Tarieven zijn overal anders , maar het blijven 'maar een paar' probleemuren op de dag. Welel meer en groter dan anderspeterkoster.rb schreef op zaterdag 1 juli 2023 @ 20:45:
Morgen, 2 juli 2023 kost het leveren van stroom 62 cent per kWh. Zonnepanelen uitgezet. Ik ben benieuwd of dat een uitzondering blijft. Helaas morgen niet thuis om nog wat apparatuur aan te zetten.
Morgen eens ff goed testen. Het is weer steeds vroeger donker...
Edit: inmiddels werkt het en getest.
![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
Hier nog de yaml code
https://github.com/fonske..._yaml/modbus_tcp_sma.yamlYAML:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 # https://community.home-assistant.io/t/modbus-data-from-sma-inverter/122425/257 # Using https://github.com/InfernoEmbedded/PowerScraper as a basis for the Modbus registers used on SMA Inverters. # I created this as I am using the Ethernet port on the Inverter for Modnbus over TCP as the web API is unavailable. # But the Inverter can communicate to the cloud ok somehow? I do not have a Pocket WiFi module. # Only tested with ModBus over TCP, no reason why USB - RS485 shouldn't work modbus: - name: SMA1 type: tcp host: 192.168.100.35 ## or create !secret inverter_ip with ip adress port: 502 delay: 5 message_wait_milliseconds: 600 timeout: 5 sensors: - name: SMA Actueel unique_id: fa600021001 unit_of_measurement: W slave: 3 address: 30775 input_type: input data_type: int32 min_value: 0 device_class: power state_class: measurement - name: SMA Vandaag unique_id: fa600021002 unit_of_measurement: Wh slave: 3 address: 30517 data_type: int64 min_value: 0 device_class: energy state_class: total_increasing - name: SMA Totaal unique_id: fa600021003 unit_of_measurement: kWh slave: 3 address: 30531 input_type: input scale: 1.0 precision: 0 data_type: int32 min_value: 0 device_class: energy state_class: total_increasing - name: SMA AC Spanning unique_id: fa600021004 unit_of_measurement: V slave: 3 address: 30783 input_type: input scale: 0.01 precision: 2 data_type: int32 min_value: 0 device_class: voltage state_class: measurement - name: SMA AC Frequentie unique_id: fa600021005 unit_of_measurement: Hz slave: 3 address: 30803 input_type: input scale: 0.01 precision: 2 data_type: int32 min_value: 0 device_class: frequency state_class: measurement - name: SMA DC Spanning 1 unique_id: fa600021006 unit_of_measurement: V slave: 3 address: 30771 input_type: input scale: 0.01 precision: 1 data_type: int32 min_value: 0 device_class: voltage state_class: measurement - name: SMA DC Stroom 1 unique_id: fa600021007 unit_of_measurement: A slave: 3 address: 30769 input_type: input scale: 0.001 precision: 2 data_type: int32 min_value: 0 device_class: current state_class: measurement - name: SMA DC Power 1 unique_id: fa600021008 unit_of_measurement: W slave: 3 address: 30773 input_type: input data_type: int32 min_value: 0 device_class: power state_class: measurement - name: SMA DC Spanning 2 unique_id: fa600021009 unit_of_measurement: V slave: 3 address: 30959 input_type: input scale: 0.01 precision: 1 data_type: int32 min_value: 0 device_class: voltage state_class: measurement - name: SMA DC Stroom 2 unique_id: fa600021010 unit_of_measurement: A slave: 3 address: 30957 input_type: input scale: 0.001 precision: 2 data_type: int32 min_value: 0 device_class: current state_class: measurement - name: SMA DC Power 2 unique_id: fa600021011 unit_of_measurement: W slave: 3 address: 30961 input_type: input data_type: int32 min_value: 0 device_class: power state_class: measurement - name: SMA temperatuur unique_id: fa600021012 unit_of_measurement: °C slave: 3 address: 30953 input_type: input scale: 0.1 precision: 1 data_type: int32 min_value: 0 device_class: temperature state_class: measurement - name: SMA isolatieweerstand unique_id: fa600021013 unit_of_measurement: Ohm slave: 3 address: 30225 input_type: input scale: 0.001 precision: 0 data_type: int32 min_value: 0 ## device_class: resistance state_class: measurement - name: SMA aardlekkage unique_id: fa600021014 unit_of_measurement: A slave: 3 address: 31247 input_type: input scale: 0.001 precision: 3 data_type: int32 min_value: 0 device_class: current state_class: measurement input_number: sma_power_limiet_slider: name: SMA Power Limiet Slider initial: 100 min: 0 max: 100 step: 1 unit_of_measurement: "%" automation: - alias: SMA Power Limiet id: fa600021012 description: '' trigger: - platform: state entity_id: input_number.sma_power_limiet_slider condition: [] action: - service: modbus.write_register data: address: 40016 slave: 3 value: '{{ states("input_number.sma_power_limiet_slider") }}' hub: SMA1 mode: single
[ Voor 67% gewijzigd door AUijtdehaag op 10-02-2024 16:57 ]
Jep. Beide staat goed volgens mijAUijtdehaag schreef op woensdag 17 januari 2024 @ 14:42:
@Dix0r
Je hebt de SMA dan ook ingesteld op externe voorinstelling?
(via installatiewizard of onder externe communicatie / op mijn SMA 2.5)
[Afbeelding] [Afbeelding]
Bij mij wel onder 'system and device control'.
/f/image/w1KO9lNqG3iDJjSdybRhatOg.png?f=fotoalbum_large)
Via de installatiewizard:
De Home Assistant integratie kun je dan aangeven wat t doorgeef percentage is op basis van maximale load die de inverter aankan. Als je dit combineert met een p1 monitoring die live je verbruik/teruglevering in de gaten houdt, kun je die schuif automatisch terug laten zetten als de terugleververgoeding negatief is:
Voeg p1 monitor toe aan je slimme meter: https://www.ztatz.nl/, deze heeft een volledige REST API en ook home-assistant plugins.
icm die modbus over tcp heb je dan volledig inzicht in je stroom oplever- en verbruiks statistieken en kun je real-time acties laten uitvoeren op basis van stroomprijs en hoeveel je 't net terug in duwt
/f/image/QrJBmW7DwiB0JQErZKG4nuzT.png?f=fotoalbum_large)
/f/image/CRODpmaLR76Ghmi0OPjqNm37.png?f=fotoalbum_large)
De 1e van de drie omvormers kan ik inmiddels sturen, nu nog niet nodig natuurlijk. Mijn medeTweakers in dit topic wil ik bedanken voor het delen van hun oplossingen.Wietsee. schreef op woensdag 1 mei 2024 @ 13:09:
Dit wordt een hot topic. Ik ben reeds begonnen met het implementeren van oplossingen voor drie SMA-omvormers nu dit in rap tempo doorgevoerd gaat worden.
nieuws: Eneco gaat 11,5 cent per kWh berekenen voor terugleveren met zonnepan...
https://www.tubantia.nl/e...ten-zonnestroom~ad8f4d19/
Ik schakel binnenkort over naar een dynamisch contract en laat de omvormers bij prijzen beneden < 0 curtailen. Uurtarieven zullen op den duur in de zomer weer wat hoger komen te liggen dan afgelopen jaren.
Sure!
Zoals gezegd, heb ik de "average sensor" integratie via HACS geinstalleerd, om een "average" platform te kunnen gebruiken in de sensors sectie...
Ik heb alle onderdelen/secties van de configuration.yaml uiteen getrokken, elke sectie heeft zijn eigen yaml bestand:
In configuration.yaml :
1
| sensor: !include sensors.yaml |
In sensors.yaml :
1
2
3
4
5
6
| - platform: average name: "Average Home Power Consumption" duration: 15 entities: - sensor.home_power_consumption unique_id: average_home_power_consumption |
De "Home Power Consumption" sensor die hierboven is gebruikt voor deze average sensor, is in een Helper in HA in elkaar geklikt via de "Settings" -> "Devices & services" -> "Helpers". Ik heb een "Template" gekozen, met onderstaande template als waarde:
1
2
3
| {{ (states('sensor.solar_system_active_power')|float + states('sensor.power_consumed')|float - states('sensor.power_produced')|float)|float(0)|round(0) }} |
En nog eenzelfde "Template" helper voor de "Average Home Power Consumption to Solar Power Percent" sensor (het beestje moet een naam hebben toch?), met als state-template:
1
| {{ states('sensor.average_home_power_consumption')|int(0)//40 }} |
Mijn PV omvormer heeft 4kW (4000W) als max. vermogen, en ( (iets / 4000) * 100 ) = ( iets / 40). De Python "//" operator pakt de modulus, dus het geheel aantal malen dat de deler in de noemer past. Oftewel, afgerond naar beneden...
Nu heeft deze laatste sensor altijd het percentage van het maximale PV vermogen wat mijn huis gemiddeld over de afgelopen 15 seconden vroeg. Deze kan dan naar de omvormer onder geschikte voorwaarden. Ik heb daartoe onderstaande "Automation" aangemaakt:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| alias: Solar Power Loadbalancing description: "" trigger: - platform: state entity_id: - sensor.average_power_consumption_to_solar_power_percent for: hours: 0 minutes: 0 seconds: 0 condition: - condition: template value_template: >- {{ states('sensor.energy_price_with_handling')|float(0) < 0 and states('sensor.energy_price_grand_total')|float(0) >= 0 and is_state('sensor.solar_inverter_inverter_working_mode', '2') }} action: - service: number.set_value target: entity_id: number.saj_limit_power data: value: > {{ states('sensor.average_power_consumption_to_solar_power_percent')|int(100) }} mode: single |
Deze Automation triggered elke keer als de "sensor.average_power_consumption_to_solar_power_percent" wijzigt, en stuurt de omvormer aan, als deze in "working_mode" 2 staat (voor mijn SAJ omvormer is dat de reguliere mode, als in: PV opbrengst produceren), *en* als de spotprijs + inkoopvergoeding negatief, maar de totaalprijs nog positief.
Ik heb nog een tweede Automation, die eens per uur kijkt (wanneer de spotprijs verandert), wat er moet gebeuren, en dat is een van de keuzes:
- 100% leveren (spotprijs + inkoopvergoeding > 0);
- loadbalancing inschakelen, ofwel stuur de omvormer aan met het huidige gewenste percentage (spotprijs + inkoopvergoeding < 0 *en* totaalprijs > 0);
- 0% leveren (totaalprijs incl. belastingen < 0);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| alias: Solar Power Limit (Max/Limit/Off) description: "" trigger: - platform: state entity_id: - sensor.nordpool_kwh_nl_eur_3_10_0 for: hours: 0 minutes: 0 seconds: 3 condition: - condition: state entity_id: sensor.solar_inverter_inverter_working_mode state: "2" action: - service: number.set_value target: entity_id: number.saj_limit_power data: value: > {% if states('sensor.energy_price_with_handling')|float(0) >= 0 %} 100 {% elif states('sensor.energy_price_with_handling')|float(0) < 0 and states('sensor.energy_price_grand_total')|float(0) >= 0 %} {{ states('sensor.average_power_consumption_to_solar_power_percent')|int(4) }} {% elif states('sensor.energy_price_grand_total')|float(0) < 0 %} 0 {% else %} 100 {% endif %} mode: single |
Dit alles zorgt bij mij voor een heel aardig werkende nul-op-meter modus wanneer de spotprijs + inkoopvergoeding negatief is, en vrijwel geen opbrengst als de totaalprijs ook negatief is (mijn omvormer wil niet helemaal naar 0%, maar blijft hangen rond de 20W productie
Onderstaande is van 1 mei j.l. toen tussen 11:00 en 13:00 uur en tussen 15:00 en 17:00 uur de spotprijs + inkoopvergoeding negatief was, maar de totaalprijs nog positief. Tussen 13:00 en 15:00 uur was ook de totaalprijs (flink) negatief. Je ziet dus dat ik in die periodes vrijwel op de 0 qua export zat, en tussen 13 en 15 uur alsnog import (want kreeg ik geld voor)...
[ Voor 5% gewijzigd door Gameboy op 06-05-2024 16:03 . Reden: overbodige (en disabled) action verwijderd ]
Weheat BB P60 | 6x 405 Wp Oost, 6x 405 Wp West | Zonneplan Day-Ahead | 1x Sessy 5 kWh
Waarschijnlijk is het script ook voor andere merken aan te passen door de juiste registers te kiezen.
Je kan het script hier vinden:
"Active Power Limit"
https://flows.nodered.org...acc6ebed2f5ebb5988757dfe9
[ Voor 37% gewijzigd door sun62 op 10-05-2024 10:16 ]
:strip_exif()/f/image/o1xAP4BNtfnDxVK7nyUsC06f.jpg?f=fotoalbum_large)
Excel:
https://docs.google.com/s...399407&rtpof=true&sd=true
[ Voor 12% gewijzigd door sun62 op 14-06-2024 09:15 ]
Momenteel beperk ik de output als de prijs nul is via een eenvoudige flow die elke 15 min de prijs checked en dan de output aanpast. Dat is zonder P1 meter, dus als ik de wasmachine aanzet dan trek ik uit het net en moet belasting betalen (dat is een vreemde belasting bij nul of negatieve prijzen want waarom overschot belasten?).
Ik moet extra de P1 waarde uitlezen en als die positief is (= afname uit net met XX Watt) dan de SMA regelen op XX Watt + basisverbruik. Als de waarde negatief is (= levering aan net) dan terug naar basisverbruik. Dat basisverbruik fluctueert 100-200 W afhankelijk van koelkast, lampen ed dus daar wil ik niet de hele tijd op regelen. Misschien elke 5 min samplen.
Op Homey forum niet zoveel te vinden en deze hieronder is al aardig complex en wat ouder (2023) met gebruik van advanced flows.
:strip_exif()/f/image/VzSQLniIsWnV9QXWfEZj2rby.jpg?f=fotoalbum_tile)
:strip_exif()/f/image/BHkbtak99geGiRPTTrLyMl22.jpg?f=fotoalbum_tile)
:strip_exif()/f/image/N4xx6Nl2LRiVVmP0f4zmc1iO.jpg?f=fotoalbum_tile)
:strip_exif()/f/image/MSOxBOfhiotPqc1VwPxnQQwd.jpg?f=fotoalbum_tile)
:strip_exif()/f/image/d96pSCPgROqdgGNZnRwqsahJ.jpg?f=fotoalbum_tile)
:strip_exif()/f/image/Oo1BHNJ8oEppf8DiAV6HlaV7.jpg?f=fotoalbum_tile)
:strip_exif()/f/image/WxFYBO5BEHLWn4Tmt39CWfo4.jpg?f=fotoalbum_tile)
:strip_exif()/f/image/8y15Wqh6aXx8qqhLxXb9alXN.jpg?f=fotoalbum_tile)
:strip_exif()/f/image/smB5TDAx46FUJdADKwsyQXZG.jpg?f=fotoalbum_tile)