Wallbox który pozwala sterować mocą ładowania przez NR

Czy próbował ktoś zaimplementować u siebie to konkretne rozwiązanie dla kontrolowania trybu ładowania EV i korzystania z nadprodukcji?

https://github.com/colwilliamsnz/HASS-Wallbox-Charge-Control

Ewentualnie - czy ktoś może się podzielić swoją automatyzacją w NR ?

Gdy masz wollboxa którym można sterować przy pomocy HA niczym nie różni się jak naprzyklad sterowania grzaniem CWU.
Najlepsza opcja to licznik dwukierunkowy zintegrowany z HA i zainslowana wtyczka

Która oblicza bilansowanie godzinowe między fazowe. Gdy wynik bilansowania jest większy od zera włącz ładowanie auta gdy mniejszy od zera wyłącz.
Można też, gdy mamy zintegrowany falownik on-grid zintegrowany z HA .
Na podstawie mocy falownika określić procentową % moc ładowania auta (lub moc elektryczną w Watach). Więc możliwości jest trochę.
Wykorzystanie jednej i drugiej integracji.


Tak jest, to wszystko mam - tzn. HA, licznik 2 kierunkowy, liczę bilans godzinowy etc, etc.
Chodziło mi stricte o samą automatyzację w NR, która to przy spełnieniu odpowiednich warunków początkowych sprawdzi stan nadprodukcji, zrobi odpowiedni zapas mocy dla domu, przeliczy to co zostało na Ampery i wystawi info do wallboxa. Ważne też aby co chwila nie włączać i nie wyłączać ładowania gdy pojawią się chmury lub żona pójdzie suszyć włosy.

Po prostu myślałem że ktoś ma u siebie zaimplementowane coś podobnego do rozwiązania z tego linku (ew. coś alternatywnego) i byłem ciekaw jak mu się to w rzeczywistości sprawuje.

W zasadzie to wyżej wymieniony robi tylko musisz dostosować do swoich potrzeb.

[{"id":"10e9f99f0e869ee8","type":"tab","label":"Moc grzałki CWU","disabled":false,"info":"","env":[]},{"id":"e1b13715c4844995","type":"switch","z":"10e9f99f0e869ee8","name":"","property":"moc+-","propertyType":"flow","rules":[{"t":"lte","v":"139","vt":"num"},{"t":"gte","v":"200","vt":"num"},{"t":"gte","v":"2700","vt":"num"}],"checkall":"true","repair":false,"outputs":3,"x":750,"y":260,"wires":[["65790f5c70e7e714"],["d07f5ca2727db04e"],["164694fc0fad2ea8"]]},{"id":"d9908881644c301c","type":"api-call-service","z":"10e9f99f0e869ee8","name":"set Moc Grzałki 0% ","server":"50bc555c.bd793c","version":7,"debugenabled":false,"action":"input_number.set_value","floorId":[],"areaId":[],"deviceId":[],"entityId":["input_number.moc_grzalki_cwu"],"labelId":[],"data":"{\"value\":0}","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","blockInputOverrides":true,"domain":"input_number","service":"set_value","x":1350,"y":20,"wires":[[]]},{"id":"8329a268c308d696","type":"api-call-service","z":"10e9f99f0e869ee8","name":"set Moc Grzałki 100% ","server":"50bc555c.bd793c","version":7,"debugenabled":false,"action":"input_number.set_value","floorId":[],"areaId":[],"deviceId":[],"entityId":["input_number.moc_grzalki_cwu"],"labelId":[],"data":"{\"value\":100}","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","blockInputOverrides":true,"domain":"input_number","service":"set_value","x":1160,"y":420,"wires":[[]]},{"id":"11969fdbeea4129e","type":"function","z":"10e9f99f0e869ee8","name":"function 4","func":"msg.payload = ( flow.get(\"moc+-\") / 2700 * 100 )\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":960,"y":180,"wires":[["d43a67ba9607cbb0"]]},{"id":"b35e694791a9524f","type":"api-call-service","z":"10e9f99f0e869ee8","name":"set Moc Grzałki X % ","server":"50bc555c.bd793c","version":7,"debugenabled":false,"action":"input_number.set_value","floorId":[],"areaId":[],"deviceId":[],"entityId":["input_number.moc_grzalki_cwu"],"labelId":[],"data":"{\"value\":msg.payload}","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","blockInputOverrides":true,"domain":"input_number","service":"set_value","x":1420,"y":180,"wires":[[]]},{"id":"d43a67ba9607cbb0","type":"change","z":"10e9f99f0e869ee8","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"$round(payload, 0)","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":1160,"y":180,"wires":[["b35e694791a9524f"]]},{"id":"a90ab3be81a65956","type":"switch","z":"10e9f99f0e869ee8","name":"","property":"moc+-","propertyType":"flow","rules":[{"t":"lte","v":"2700","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":1200,"y":300,"wires":[["11969fdbeea4129e"]]},{"id":"9271f74d2a57f275","type":"trigger","z":"10e9f99f0e869ee8","name":"","op1":"","op2":"moc+-","op1type":"nul","op2type":"flow","duration":"30","extend":false,"overrideDelay":false,"units":"s","reset":"","bytopic":"all","topic":"topic","outputs":1,"x":390,"y":220,"wires":[["65790f5c70e7e714","e1b13715c4844995"]]},{"id":"65790f5c70e7e714","type":"api-current-state","z":"10e9f99f0e869ee8","name":"bilans_netto < 0","server":"50bc555c.bd793c","version":3,"outputs":2,"halt_if":"0","halt_if_type":"num","halt_if_compare":"lte","entity_id":"sensor.energia_bilans_netto","state_type":"str","blockInputOverrides":true,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":900,"y":20,"wires":[["d9908881644c301c"],[]]},{"id":"164694fc0fad2ea8","type":"api-current-state","z":"10e9f99f0e869ee8","name":"bilans_netto > 0","server":"50bc555c.bd793c","version":3,"outputs":2,"halt_if":"0","halt_if_type":"num","halt_if_compare":"gte","entity_id":"sensor.energia_bilans_netto","state_type":"str","blockInputOverrides":true,"outputProperties":[{"property":"moc+-","propertyType":"flow","value":"moc+-","valueType":"flow"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":900,"y":420,"wires":[["8329a268c308d696"],[]]},{"id":"d07f5ca2727db04e","type":"api-current-state","z":"10e9f99f0e869ee8","name":"bilans_netto > 0","server":"50bc555c.bd793c","version":3,"outputs":2,"halt_if":"0","halt_if_type":"num","halt_if_compare":"gte","entity_id":"sensor.energia_bilans_netto","state_type":"str","blockInputOverrides":true,"outputProperties":[{"property":"moc+-","propertyType":"flow","value":"moc+-","valueType":"flow"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":980,"y":280,"wires":[["a90ab3be81a65956"],[]]},{"id":"946c090f888754ca","type":"server-state-changed","z":"10e9f99f0e869ee8","name":"Moc L1-L3 > 100","server":"50bc555c.bd793c","version":6,"outputs":2,"exposeAsEntityConfig":"","entities":{"entity":["sensor.moc_l1_l2_l3"],"substring":[],"regex":[]},"outputInitially":false,"stateType":"str","ifState":"100","ifStateType":"num","ifStateOperator":"gte","outputOnlyOnStateChange":true,"for":"15","forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":240,"y":40,"wires":[["65790f5c70e7e714"],[]]},{"id":"fc28148650356228","type":"aggregator","z":"10e9f99f0e869ee8","name":"","topic":"","intervalCount":"15","intervalUnits":"m","submitIncompleteInterval":true,"submitPerTopic":false,"aggregationType":"mean","x":450,"y":360,"wires":[["cf0fa9e17adef67d"]]},{"id":"bce5b98779b00580","type":"server-state-changed","z":"10e9f99f0e869ee8","name":"","server":"50bc555c.bd793c","version":6,"outputs":1,"exposeAsEntityConfig":"","entities":{"entity":["sensor.opendtu_power"],"substring":[],"regex":[]},"outputInitially":false,"stateType":"num","ifState":"","ifStateType":"num","ifStateOperator":"is","outputOnlyOnStateChange":true,"for":"0","forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":170,"y":360,"wires":[["fc28148650356228"]]},{"id":"cf0fa9e17adef67d","type":"change","z":"10e9f99f0e869ee8","name":"","rules":[{"t":"set","p":"moc+-","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":140,"y":260,"wires":[["9271f74d2a57f275"]]},{"id":"50bc555c.bd793c","type":"server","name":"Home Assistant","addon":true}]

Tylko zamiast mocy grzałki przeliczyć na prąd ładowania samochodu.

Dzięki, będę testował.

Tylko staraj się nie wyłączać ładowania zmieniaj prąd ale też nie za często bo bardzo częste zmiany mogą powodować uszkodzenia baterii, na pewno bardzo częste załączanie i wyłączanie ładowania szkodzi baterii.

Tak jest, histereza obowiązkowo. A najlepiej histereza plus odpowiedni zapas z PV by nie startować ładowania na granicy nadprodukcji.

Przeszukując Internet trafiłem na coś takiego:
https://evcc.io/en/
Swoją drogą ciekawe rozwiązanie - da się w tym pointegrować wszystko a później przez mqtt wysyłać info do HA.

Do kalkulacji warto też dodać dane o przewidywanej produkcji np z solcast GitHub - BJReplay/ha-solcast-solar: Solcast Integration for Home Assistant wtedy biorąc pod uwagę obecne bilansowanie, oraz przewidywaną produkcję najbardziej optymalnie można sterować.

Jeżeli masz wollboxa który zintegrowany jest z Home Assistant
Wejdź w narzędzia deweloperskie wyszukaj wollboxa ustawienia prądu ładowania on/off i zamieść na forum Atrybuty stanu (YAML, opcjonalnie)

Jesli dobrze Cie zrozumiealem - to pytasz o encję, która załącza/wyłącza ładowanie.
W moim przypadku jest to:
“button.keba_p30_keba_p30_enable” oraz “button.keba_p30_keba_p30_disable”.

Atrybutów to zbyt wiele nie ma.
Są to odpowiednio:
icon: mdi:play
friendly_name: KEBA P30 KEBA P30 Enable

oraz

icon: mdi:stop
friendly_name: KEBA P30 KEBA P30 Disable

Na karcie są widoczne jako przyciski do wciśnięcia, by aktywować/dezaktywować ładowanie.

Dodaj noda aciton
Skonfigurować
Nie zmieniaj nazwy serwera.


Dodać noda Inject
Połączyć je ze sobą
Naciśnij Deploy

Po naciśnięciu małego kwadracika w node inject powinno uruchomić ładowanie .