FVE se střídači GoodWe - SEMS Portal
- Lion®
- Administrátor fóra
- Příspěvky: 1609
- Registrován: 28. září 2020, 14:07
- Bydliště: podkrkonoší
- Dal poděkování: 145 poděkování
- Dostal poděkování: 194 poděkování
- Kontaktovat uživatele:
Re: FVE se střídači GoodWe - SEMS Portal
No, to asi nemáš zač.
Počítáš také s tím, že ty baterie asi budou postupně ztrácet na kapacitě?
Mě se ten utility_meter celkem líbí. Uděláš si senzory podle tarifu a podle toho jaký potřebuješ cyklus z jakékoliv měřené entity. Pak už je jen +-*/. Input_number - em můžeš hejbat s cenou atp...
Počítáš také s tím, že ty baterie asi budou postupně ztrácet na kapacitě?
Mě se ten utility_meter celkem líbí. Uděláš si senzory podle tarifu a podle toho jaký potřebuješ cyklus z jakékoliv měřené entity. Pak už je jen +-*/. Input_number - em můžeš hejbat s cenou atp...
________________
Přispěj a získej přístup do obsahu fóra pro dárce.
Oficiální sada s Raspberry Pi 4B/4GB, černá +Argon NEO Raspberry Pi 4 Case
Patriot Burst 2.5" SATA SSD 120GB + AXAGON EE25-XA6 ALINE box
Galerie realizací
Přispěj a získej přístup do obsahu fóra pro dárce.
Oficiální sada s Raspberry Pi 4B/4GB, černá +Argon NEO Raspberry Pi 4 Case
Patriot Burst 2.5" SATA SSD 120GB + AXAGON EE25-XA6 ALINE box
Galerie realizací
-
- Moderátor
- Příspěvky: 905
- Registrován: 03. červenec 2021, 18:35
- Dal poděkování: 108 poděkování
- Dostal poděkování: 210 poděkování
Re: FVE se střídači GoodWe - SEMS Portal
S baterií počítám - kapacita 28.8kWh, integrace mi hází SOH pro obě baterie - takže si ho dovolím zprůměrovat, aktuálně 98%, při vybití na 10% se odpojuje (a i odpojená může klesnout na 9%) - takže mám vlastně nyní využitelných maximálně 88% z 28.8 kWh s tím že to o těch 10% posunuji, tzn. pokud je baterie na 10% je k dispozici čistá nula.
for i in range(1,10)
parsuj
senzor_zap(i) = vyparsovaná hodnota
tak by to bylo jednoduché.
Jenže v HA nemůžu.
Musím z druhé strany
value_template: a tady zapsat jednu hodnotu
ono by stačilo kdyby se daly našablonovat i jen atributy, jenže to taky nejde, v tom následujícím název atributu zap1 až zap10, vyp1 až vyp10 taky nezapíšu šablonou, jen hodnotu.
attribute_templates:
zap1: > a tady zapsat jednu hodnotu
Pro dvacet senzorů bych musel ctrl+c ctrl-v nakopírovat téměř stejný kód, jen si do proměnné zadat který z výsledků v průběhu cyklu chci "zapsat"
Jestli to jde nějak líp tak nevím jak.
Aktuálně mám rozepsáno následující. Z HH:MM z atributů senzoru nizky_tarif mi to udělá konkrétní datumočasy zapnutí a vypnutí VT na následující dva dny (jeden, pokud je mezi půlnocí a svítáním + posun), s tím že bere do úvahy jestli se jedná o pracden nebo víkendový.
Řádky "tady nastav senzor" jsou nerealizovatelné, nebo jsem nepřišel na to jak to udělat - v Node Red by šlo alespoň call service, tady fakt nevím.
Otestováno proti nějakým datům (přechod VT přes půlnoc),
zruším vypisování ZAP/VYP a výsledkem bude jen hodnota kolik zbývá HH:MM:SS VT od teď do určeného času.
Pro automatizaci to bude stačit, použiji invertovaný "binary_sensor.nizky_tarif", pak nahradím fyzickým senzorem VT.
Jinak to tu nechám, je to celkem jednoduše upravitelné aby vypisoval jednotlivé intervaly VT - kdyby někdo potřeboval takové senzory.
Nainstalovaný CEZ a vývojářské nástroje, šablony:
právě kdybych nějak dokázal vyrobit něco jako
for i in range(1,10)
parsuj
senzor_zap(i) = vyparsovaná hodnota
tak by to bylo jednoduché.
Jenže v HA nemůžu.
Musím z druhé strany
value_template: a tady zapsat jednu hodnotu
ono by stačilo kdyby se daly našablonovat i jen atributy, jenže to taky nejde, v tom následujícím název atributu zap1 až zap10, vyp1 až vyp10 taky nezapíšu šablonou, jen hodnotu.
attribute_templates:
zap1: > a tady zapsat jednu hodnotu
Pro dvacet senzorů bych musel ctrl+c ctrl-v nakopírovat téměř stejný kód, jen si do proměnné zadat který z výsledků v průběhu cyklu chci "zapsat"
Jestli to jde nějak líp tak nevím jak.
Aktuálně mám rozepsáno následující. Z HH:MM z atributů senzoru nizky_tarif mi to udělá konkrétní datumočasy zapnutí a vypnutí VT na následující dva dny (jeden, pokud je mezi půlnocí a svítáním + posun), s tím že bere do úvahy jestli se jedná o pracden nebo víkendový.
Řádky "tady nastav senzor" jsou nerealizovatelné, nebo jsem nepřišel na to jak to udělat - v Node Red by šlo alespoň call service, tady fakt nevím.
Otestováno proti nějakým datům (přechod VT přes půlnoc),
zruším vypisování ZAP/VYP a výsledkem bude jen hodnota kolik zbývá HH:MM:SS VT od teď do určeného času.
Pro automatizaci to bude stačit, použiji invertovaný "binary_sensor.nizky_tarif", pak nahradím fyzickým senzorem VT.
Jinak to tu nechám, je to celkem jednoduše upravitelné aby vypisoval jednotlivé intervaly VT - kdyby někdo potřeboval takové senzory.
Nainstalovaný CEZ a vývojářské nástroje, šablony:
Kód: Vybrat vše
Prvni vec - spocitej celkovou delku VT:
Cas T je nejblizsi usvit + posun (pomocnik, číslo, input_number.po_vychodu_slunce)
Najdi vsechny casy mezi ted a casem T
#}
ted je: {% set nyni=(now()) -%} {{ nyni }}
slunce vyjde v:{% set vychod = as_datetime(strptime(state_attr("sun.sun", "next_rising"), "")) | as_local %} {{ vychod }}
tedy slunce vyjde za {{ (vychod - nyni) }}
{% set konec_rizeni = (vychod + timedelta( minutes=states('input_number.po_vychodu_slunce')|float*60)) | as_local %}
{{ (konec_rizeni - nyni) }}
{% if (nyni + timedelta(days=1, minutes=-5)) < konec_rizeni %}
{% set konec_rizeni = konec_rizeni - timedelta(days = 1) %}
{%- endif %}
a baterku se budu snazit udrzet pro VT od dnesniho zapadu slunce do:
{{ konec_rizeni | as_local()}}
{#
***********************************************************************************************************
**** konec_rizeni je jen cas do ktereho budu pocitat by mela vystacit baterie *********
***********************************************************************************************************
Z CEZU dostavam dva datove objekty [0] pro pracovni dny, [1] pro vikend
zacneme jednoduse - proste to vypis
********************************** jdeme pridat nejakou logiku ******************************
Zjistit cas dalsiho zapnuti VT - tedy od now()
a celkovou dobu trvani VT az do "konec_rizeni"#}
{%- set ns = namespace() -%} {# musim pouzit namespace pokud promennou upravuji v cyklu a chci ji mit i po skonceni cyklu#}
{%- set nyni = now() -%} {#jeden cas vsude, at neni binec v mikrosekundach#}
{%- set ns.doba_vt = nyni -%} {# inicializace - po pruchodu cykly chci mit zbyvajici doba VT do konec_mereni jako "timedelta"#}
{%- set ns.doba_vt = ns.doba_vt - ns.doba_vt -%} {# Nulova datetime promenna, nevim jak jinak#}
{%- set ns.vt_index = 1 -%} {#udelam si index pro pripadne pouziti Zap VT[index] aby mi navazovali, v cyklech pak musim odecitat#}
{%- set is_vt = False -%} {# je nyni VT?#}
{%- set ns.j = 0 -%} {# pomocna pro index#}
{%- set ns.prechod = False -%} {# Pokud budu parsovat dva dny nastavim na konci parsovani prvniho dne pokud zacal VT uz ten prvni den a neskoncil#}
{%- set den = as_datetime(nyni.strftime('%Y-%m-%d')) -%} {# bud proparsujeme jen dnesek nebo i o den vice#}
{%- set ns.vypvt = nyni -%} {#cas posledniho Vypnuti VT VT VT !, #}
{%- set ns.zapvt = nyni -%} {#cas posledniho Zapnuti VT#}
{% if nyni.weekday() != konec_rizeni.weekday() %} #mam parsovat i dnesek? ano, vychod slunce je az zitra?, parsuji dva dny
{% if nyni.weekday() < 5 %} # pracovni nebo vikend ?
{% set vikend = 0 %}
{%- else -%}
{% set vikend = 1 %}
{%- endif -%}
{%- set ns.vypvt = den.combine(den,strptime((state_attr('binary_sensor.nizky_tarif','response_json')['data'][vikend]['CAS_ZAP_1']) | string, '%H:%M').time()) -%}
{%- if ns.vypvt > den %} # testuji jestli prvni zapnuti NT neni tedy o pulnoci, tzn. od pulnoci do tohoto CAS_ZAP_1(NT!) jiz bezi VT
Zap0 VT0> {{ den }}
Vyp0 VT0> {{ ns.vypvt }}
{%- if ns.vypvt >= nyni >= den -%} #jsme zrovna v p prvnim useku VT ?? prvni vypnuti vt >= nyni >= pulnoc - jsme mezi prvnim vypnutim VT a pulnoci?
{%- set ns.doba_vt = ns.vypvt - nyni -%} #prvni usek doby vt je od ted do xx
{{ ns.doba_vt }}
{%- endif -%}
{%- endif -%}
{% for i in range(1,10) -%}
{% if (state_attr('binary_sensor.nizky_tarif','response_json'))["data"][vikend]['CAS_VYP_' ~ i] %} {# je v datech cez definovan dalsi casovy usek ?#}
{% set ns.zapvt = den.combine(den,strptime((state_attr('binary_sensor.nizky_tarif','response_json')['data'][vikend]['CAS_VYP_' ~ i ]) | string, '%H:%M').time()) %}
{%-if ns.zapvt < den + timedelta( days=1, minutes = -1) %} {#vyfiltruji pokud by pripadny konec byl ve 23:59#}
{{ 'Zap1 VT'~i~' > ' ~ ns.zapvt -}}
{%- set ns.prechod = true -%} {#- -#}
{% endif %}
{% set ns.j = i %}
{%- endif -%}
{%- if ((state_attr('binary_sensor.nizky_tarif','response_json'))["data"][vikend]['CAS_ZAP_' ~ (i | int +1) ]) -%}
{% set ns.vypvt = den.combine(den,strptime((state_attr('binary_sensor.nizky_tarif','response_json')['data'][vikend]['CAS_ZAP_' ~ (i | int +1) ]) | string, '%H:%M').time()) %}
{{- ' Vyp1 VT'~i~' > ' ~ ns.vypvt }}
{%- set ns.prechod = false -%} {#- -#}
{%- endif %}
{% if ns.zapvt and ns.zapvt<ns.vypvt %} #pokud neprochazime pres prazdna data nebo posledni ZAP_VT neni fiktivni CEZ 23:59
rozdil1 vyp - zap {{ns.vypvt - ns.zapvt }}
{% if ns.zapvt | as_local <= nyni <= ns.vypvt | as_local %} # jsme nyni v intervalu, posuneme zacatek na nyni
{% set ns.zapvt = nyni %} aaaaaaaaaaaaaaaaaaaaaaaaaa
{% endif %}
# nemusim testovat zda rizeni konci v tomto intervalu, tento den to urcite nebude
{% if ns.zapvt | as_local >= nyni and ns.vypvt | as_local <= konec_rizeni %} #interval je cely mezi nyni a koncem mereni
{%- set ns.doba_vt = ns.doba_vt + (ns.vypvt | as_local - ns.zapvt | as_local) %}
{% endif %}
doba_vt1 - vysledek senzoru {{ ns.doba_vt }}
{% endif %}
{%- endfor %}
>>>>>>>> ns.prechod {{ns.prechod}}
>>>>>>>>>>>>>>>>>v ns.j mam posledni index pro VT_ZAP a zkusim jestli k nemu take existuje vyp- no kravina- nebude, vdyt posledni uz davno mam {{ ns.j }}
>>>>>>>>>>> bud to konci VTvyp - a tedy az do pulnoci vt neni,
>>>>>>>>>>>>nebo to konci VTzap a hlasim dalsimu cyklu prechod vt pres pulnoc
>>>>>>>>>>>> jen musim osetrit aby uz nevypisovat pokud najdu VTzap (tedy NT_vyp, CAS_VYP) ve 23:59 bo CEZ
{%- if ((state_attr('binary_sensor.nizky_tarif','response_json'))["data"][vikend]['CAS_VYP_' ~ j ]) -%}
{% set ns.zapvt = den.combine(den,strptime((state_attr('binary_sensor.nizky_tarif','response_json')['data'][vikend]['CAS_VYP_' ~ j ]) | string, '%H:%M').time()) %}
{{ 'Vyp VT'~j~' > ' ~ ns.vypvt }}
{%- endif -%}
{% if ns.vypvt < den + timedelta( minutes = -1) %} #pokud neni VT vypnut do pulnoci (tedy 23:59, ale CEZ to ma tak divne v datech)
vt prvniho dne neni vypnut o pulnoci !!! dodelat
{%- endif %}
{% set den = den + timedelta(days=1) %}
melo by to byt zitra> {{den}}
v ns.vypvt {{ ns.vypvt }} cas posledniho vypnuti VT
v ns.zapvt {{ ns.zapvt }} cas posledniho zapnuti VT
{% endif %} # parsuj vzdy den konce_rizeni
--Druhy nebo jediny den:---------------------- 22222222222222222222222222222222222222222222222222222222222222
{% if konec_rizeni.weekday() < 5 %} # pracovni nebo vikend ?
{% set vikend = 0 %}
{%- else -%}
{% set vikend = 1 %}
{%- endif %}
{% if ns.prechod %} #je vt zapnuty z minuleho pruchodu???
{% set test = ns.zapvt %} #tak testujeme proti poslednimu zapnuti vcera {{ test }}
{% else %}
{% set test = den %} # nebo proti dnesni pulnoci {{ test }}
{%- endif %}
{%- set ns.vypvt = den.combine(den,strptime((state_attr('binary_sensor.nizky_tarif','response_json')['data'][vikend]['CAS_ZAP_1']) | string, '%H:%M').time()) -%}
{%- if ns.vypvt > test %} # testuji jestli prvni zapnuti NT neni tedy o pulnoci, tzn. od pulnoci do tohoto CAS_ZAP_1(NT!) jiz bezi VT
Zap0 VT0> {{ test }}
Vyp0 VT0> {{ ns.vypvt }}
{%- if ns.vypvt|as_local >= nyni|as_local >= test | as_local -%} #jsme zrovna v p prvnim useku VT ?? prvni vypnuti vt >= nyni >= posledni zapnuti vt - jsme mezi prvnim vypnutim VT a pulnoci?
{%- set ns.doba_vt = ns.doba_vt + (ns.vypvt - nyni) -%} #prvni usek doby vt je od ted do xx
{{ doba_vt }}
{% elif nyni < ns.vypvt|as_local %} # nebo jsme pred timto usekem VT, tak ho zapocitame cely od pulnoci nebo pripadnemu vcerejsimu zapnuti (pokud za usekem tak nas nezajima)
{% set ns.doba_vt = ns.doba_vt + ( ns.vypvt - test ) %}
{%- endif -%}
{%- endif -%}
{% for i in range(1,10) -%}
{% if (state_attr('binary_sensor.nizky_tarif','response_json'))["data"][vikend]['CAS_VYP_' ~ i] %} {# je v datech cez definovan dalsi casovy usek ?#}
{% set ns.zapvt = den.combine(den,strptime((state_attr('binary_sensor.nizky_tarif','response_json')['data'][vikend]['CAS_VYP_' ~ i ]) | string, '%H:%M').time()) %}
{%-if ns.zapvt < den + timedelta( days=1, minutes = -1) %} {#vyfiltruji pokud by pripadny konec byl ve 23:59#}
{{ 'Zap2 VT'~i~' > ' ~ ns.zapvt -}}
{% endif %}
{% set ns.j = i %}
{%- endif -%}
{%- if ((state_attr('binary_sensor.nizky_tarif','response_json'))["data"][vikend]['CAS_ZAP_' ~ (i | int +1) ]) -%}
{% set ns.vypvt = den.combine(den,strptime((state_attr('binary_sensor.nizky_tarif','response_json')['data'][vikend]['CAS_ZAP_' ~ (i | int +1) ]) | string, '%H:%M').time()) %}
{{- ' Vyp2 VT'~i~' > ' ~ ns.vypvt -}}
{%- endif %}
{%- if ns.zapvt and ns.zapvt<ns.vypvt -%} {#pokud neprochazime pres prazdna data nebo posledni ZAP_VT neni fiktivni CEZ 23:59#}
rozdil2 vyp - zap {{ ns.vypvt - ns.zapvt }}
{%- if ns.zapvt | as_local <= nyni <= ns.vypvt | as_local %} # jsme nyni v intervalu, posuneme zacatek na nyni
{% set ns.zapvt = nyni %} aaaaaaaaaaaaaaaaaaaaaaaaaa
{%- endif %}
{% if ns.zapvt | as_local <= konec_rizeni <= ns.vypvt | as_local %}# rizeni konci v tomto intervalu, posuneme konec
{% set ns.vypvt = konec_rizeni %} zzzzzzzzzzzzzzzzzzzzzz
{% endif %}
{%- if ns.zapvt | as_local >= nyni and ns.vypvt | as_local <= konec_rizeni -%} #interval je cely mezi nyni a koncem mereni
{% set ns.doba_vt = ns.doba_vt + (ns.vypvt | as_local - ns.zapvt | as_local) -%}
{%- endif -%}
doba_vt2, tedy VYSLEDNA HODNOTA TOHOTO SENZORU: {{ ns.doba_vt }}
{% endif %}
{%- endfor %}
v ns.vypvt {{ ns.vypvt }} cas posledniho vypnuti VT
Vše co si přinesu domů je buď Shelly, nebo to skončí buď pod ESPhome nebo pod Zigbee2mqtt.
Ajťák co pamatuje BBS a OS/2 Warp a je mu jedno o jaký systém nebo síťařinu běží.
HA OS jako jedna z Proxmox VM na Odroid H3+/64GB https://github.com/tteck/Proxmox
Ajťák co pamatuje BBS a OS/2 Warp a je mu jedno o jaký systém nebo síťařinu běží.
HA OS jako jedna z Proxmox VM na Odroid H3+/64GB https://github.com/tteck/Proxmox
-
- Moderátor
- Příspěvky: 905
- Registrován: 03. červenec 2021, 18:35
- Dal poděkování: 108 poděkování
- Dostal poděkování: 210 poděkování
Re: FVE se střídači GoodWe - SEMS Portal
Tak senzor zbývajících minut VT do "vychod_slunce + offset" je hotový.
Jako atribut zobrazuje i "Konec rizeni" - konkrétní datum/čas do kterého aktuálně počítá součty intervalů VT.
Konec rizeni je od teď vždy vzdálený
- od cca 0 minut (za okamžik nastane čas "východ slunce + offset")
- do cca 24 hodin (čas "východ slunce + offset" byl před chvílí - takže počítej do zítřejšího)
Údaje bere z následujících zdrojů:
Entita: binary_sensor.nizky_tarif - což je senzor z HACS integrace https://github.com/zigul/HomeAssistant-CEZdistribuce
Entita: input_number.po_vychodu_slunce - což je pomocník typu "číslo" a je v hodinách (nebo zlomcích hodin)
Entita: sun.sun - což je slunce přítomné v HA již od jeho instalace
configuration.yaml:
Jako atribut zobrazuje i "Konec rizeni" - konkrétní datum/čas do kterého aktuálně počítá součty intervalů VT.
Konec rizeni je od teď vždy vzdálený
- od cca 0 minut (za okamžik nastane čas "východ slunce + offset")
- do cca 24 hodin (čas "východ slunce + offset" byl před chvílí - takže počítej do zítřejšího)
Údaje bere z následujících zdrojů:
Entita: binary_sensor.nizky_tarif - což je senzor z HACS integrace https://github.com/zigul/HomeAssistant-CEZdistribuce
Entita: input_number.po_vychodu_slunce - což je pomocník typu "číslo" a je v hodinách (nebo zlomcích hodin)
Entita: sun.sun - což je slunce přítomné v HA již od jeho instalace
configuration.yaml:
Kód: Vybrat vše
sensor:
- platform: template
sensors:
doba_vt_do:
friendly_name: "Doba VT zbývající do: východ slunce + offset"
value_template: >-
{%-set vychod = as_datetime(strptime(state_attr("sun.sun", "next_rising"), "")) | as_local-%}
{%- set nyni = now() -%} {#jeden cas vsude, at neni binec v mikrosekundach#}
{%-set konec_rizeni = (vychod + timedelta( minutes=states('input_number.po_vychodu_slunce')|float*60)) | as_local-%}
{%-if (nyni + timedelta(days=1, minutes=-5)) < konec_rizeni-%}
{%-set konec_rizeni = konec_rizeni - timedelta(days = 1)-%}
{%- endif%}
{%- set ns = namespace() -%} {# musim pouzit namespace pokud promennou upravuji v cyklu a chci ji mit i po skonceni cyklu#}
{%- set ns.doba_vt = nyni -%} {# inicializace - po pruchodu cykly chci mit zbyvajici doba VT do konec_mereni jako "timedelta"#}
{%- set ns.doba_vt = ns.doba_vt - ns.doba_vt -%} {# Nulova datetime promenna, nevim jak jinak#}
{%- set ns.prechod = False -%} {# Pokud budu parsovat dva dny nastavim na konci parsovani prvniho dne pokud zacal VT uz ten prvni den a neskoncil#}
{%- set den = as_datetime(nyni.strftime('%Y-%m-%d')) -%} {# bud proparsujeme jen dnesek nebo i o den vice#}
{%- set ns.vypvt = nyni -%} {#cas posledniho Vypnuti VT VT VT !, #}
{%- set ns.zapvt = nyni -%} {#cas posledniho Zapnuti VT#}
{%-if nyni.weekday() != konec_rizeni.weekday()-%} {#mam parsovat i dnesek? ano, vychod slunce je az zitra?, parsuji dva dny#}
{%-if nyni.weekday() < 5-%} {# pracovni nebo vikend ?#}
{%-set vikend = 0-%}
{%- else -%}
{%-set vikend = 1-%}
{%- endif -%}
{%- set ns.vypvt = den.combine(den,strptime((state_attr('binary_sensor.nizky_tarif','response_json')['data'][vikend]['CAS_ZAP_1']) | string, '%H:%M').time()) -%}
{%- if ns.vypvt > den-%} {# testuji jestli prvni zapnuti NT neni tedy o pulnoci, tzn. od pulnoci do tohoto CAS_ZAP_1(NT!) jiz bezi VT#}
{%- if ns.vypvt >= nyni >= den -%} {#jsme zrovna v p prvnim useku VT ?? prvni vypnuti vt >= nyni >= pulnoc - jsme mezi prvnim vypnutim VT a pulnoci?#}
{%- set ns.doba_vt = ns.vypvt - nyni -%} {#prvni usek doby vt je od ted do xx #}
{{ ns.doba_vt }}
{%- endif -%}
{%- endif -%}
{%-for i in range(1,10) -%}
{%-if (state_attr('binary_sensor.nizky_tarif','response_json'))["data"][vikend]['CAS_VYP_' ~ i]-%} {# je v datech cez definovan dalsi casovy usek ?#}
{%-set ns.zapvt = den.combine(den,strptime((state_attr('binary_sensor.nizky_tarif','response_json')['data'][vikend]['CAS_VYP_' ~ i ]) | string, '%H:%M').time())-%}
{%-if ns.zapvt < den + timedelta( days=1, minutes = -1)-%} {#vyfiltruji pokud by pripadny konec byl ve 23:59#}
{%- set ns.prechod = true -%} {#- -#}
{%-endif-%}
{%- endif -%}
{%- if ((state_attr('binary_sensor.nizky_tarif','response_json'))["data"][vikend]['CAS_ZAP_' ~ (i | int +1) ]) -%}
{%-set ns.vypvt = den.combine(den,strptime((state_attr('binary_sensor.nizky_tarif','response_json')['data'][vikend]['CAS_ZAP_' ~ (i | int +1) ]) | string, '%H:%M').time())-%}
{%- set ns.prechod = false -%} {#- -#}
{%- endif-%}
{%-if ns.zapvt and ns.zapvt<ns.vypvt-%} {#pokud neprochazime pres prazdna data nebo posledni ZAP_VT neni fiktivni CEZ 23:59#}
{%-if ns.zapvt | as_local <= nyni <= ns.vypvt | as_local-%} {# jsme nyni v intervalu, posuneme zacatek na nyni#}
{%-set ns.zapvt = nyni-%}
{%-endif-%}
{%-if ns.zapvt | as_local >= nyni and ns.vypvt | as_local <= konec_rizeni-%}
{%- set ns.doba_vt = ns.doba_vt + (ns.vypvt | as_local - ns.zapvt | as_local)-%}
{%-endif-%}
{%-endif-%}
{%- endfor-%}
{%-if ns.vypvt < den + timedelta( minutes = -1)-%}
{%- endif-%}
{%-set den = den + timedelta(days=1)-%} {# druhy nebo jediny den projdi vzdy#}
{%-endif-%}
{%-if konec_rizeni.weekday() < 5-%}
{%-set vikend = 0-%}
{%- else -%}
{%-set vikend = 1-%}
{%- endif-%}
{%-if ns.prechod-%}
{%-set test = ns.zapvt-%}
{%-else-%}
{%-set test = den-%}
{%- endif-%}
{%- set ns.vypvt = den.combine(den,strptime((state_attr('binary_sensor.nizky_tarif','response_json')['data'][vikend]['CAS_ZAP_1']) | string, '%H:%M').time()) -%}
{%- if ns.vypvt > test-%}
{%- if ns.vypvt|as_local >= nyni|as_local >= test | as_local -%}
{%- set ns.doba_vt = ns.doba_vt + (ns.vypvt - nyni) -%}
{{ doba_vt }}
{%-elif nyni < ns.vypvt|as_local-%}
{%-set ns.doba_vt = ns.doba_vt + ( ns.vypvt - test )-%}
{%- endif -%}
{%- endif -%}
{%-for i in range(1,10) -%}
{%-if (state_attr('binary_sensor.nizky_tarif','response_json'))["data"][vikend]['CAS_VYP_' ~ i]-%}
{%-set ns.zapvt = den.combine(den,strptime((state_attr('binary_sensor.nizky_tarif','response_json')['data'][vikend]['CAS_VYP_' ~ i ]) | string, '%H:%M').time())-%}
{%-if ns.zapvt < den + timedelta( days=1, minutes = -1)-%}
{%-endif-%}
{%- endif -%}
{%- if ((state_attr('binary_sensor.nizky_tarif','response_json'))["data"][vikend]['CAS_ZAP_' ~ (i | int +1) ]) -%}
{%-set ns.vypvt = den.combine(den,strptime((state_attr('binary_sensor.nizky_tarif','response_json')['data'][vikend]['CAS_ZAP_' ~ (i | int +1) ]) | string, '%H:%M').time())-%}
{%- endif-%}
{%- if ns.zapvt and ns.zapvt<ns.vypvt -%}
{%- if ns.zapvt | as_local <= nyni <= ns.vypvt | as_local-%}
{%-set ns.zapvt = nyni-%}
{%- endif-%}
{%-if ns.zapvt | as_local <= konec_rizeni <= ns.vypvt | as_local-%}
{%-set ns.vypvt = konec_rizeni-%}
{%-endif-%}
{%- if ns.zapvt | as_local >= nyni and ns.vypvt | as_local <= konec_rizeni -%}
{%-set ns.doba_vt = ns.doba_vt + (ns.vypvt | as_local - ns.zapvt | as_local) -%}
{%- endif -%}
{%-endif-%}
{%- endfor-%}
{{ (ns.doba_vt.total_seconds() | int / 60) | int }}
unit_of_measurement: "min"
attribute_templates:
konec_rizeni: >-
{% set nyni=(now()) -%}
{% set vychod = as_datetime(strptime(state_attr("sun.sun", "next_rising"), "")) | as_local %}
{% set konec_rizeni = (vychod + timedelta( minutes=states('input_number.po_vychodu_slunce')|float*60)) | as_local %}
{% if (nyni + timedelta(days=1, minutes=-5)) < konec_rizeni %}
{% set konec_rizeni = konec_rizeni - timedelta(days = 1) %}
{%- endif %}
{{ konec_rizeni | as_local()}}
Vše co si přinesu domů je buď Shelly, nebo to skončí buď pod ESPhome nebo pod Zigbee2mqtt.
Ajťák co pamatuje BBS a OS/2 Warp a je mu jedno o jaký systém nebo síťařinu běží.
HA OS jako jedna z Proxmox VM na Odroid H3+/64GB https://github.com/tteck/Proxmox
Ajťák co pamatuje BBS a OS/2 Warp a je mu jedno o jaký systém nebo síťařinu běží.
HA OS jako jedna z Proxmox VM na Odroid H3+/64GB https://github.com/tteck/Proxmox
- Pete30
- Moderátor
- Příspěvky: 3461
- Registrován: 30. září 2020, 20:33
- Dal poděkování: 174 poděkování
- Dostal poděkování: 373 poděkování
Re: FVE se střídači GoodWe - SEMS Portal
Když vidím tvou pěknou práci a je vidět že se vyznáš, dostal jsem nápad
Mám tu 4x solární panel (pouze 640W na balkon se víc nevejde ) a ty mám řízeny přes TriStar MPPT controller (TS-MPPT-45) do akumulátoru LIFEPO4. TriStar má RS232, propojení s PC kde pomocí prográmku pro tento regulátor bylo možné vidět aktuální výkon panelů, proud, napětí a nastavovat hodnoty regulátoru(na win 10 to nějak už nefunguje, ale nevadí již si to žije několik let svým životem bez problému).
Otázka:
Bylo by možné vyčítat data přes tu RS232 připojenou na nodemcu TX-RX (ESPhome) a dále je zpracovat v HA?
Něco mi říká že ano, ale nevím jak začít
Mám tu 4x solární panel (pouze 640W na balkon se víc nevejde ) a ty mám řízeny přes TriStar MPPT controller (TS-MPPT-45) do akumulátoru LIFEPO4. TriStar má RS232, propojení s PC kde pomocí prográmku pro tento regulátor bylo možné vidět aktuální výkon panelů, proud, napětí a nastavovat hodnoty regulátoru(na win 10 to nějak už nefunguje, ale nevadí již si to žije několik let svým životem bez problému).
Otázka:
Bylo by možné vyčítat data přes tu RS232 připojenou na nodemcu TX-RX (ESPhome) a dále je zpracovat v HA?
Něco mi říká že ano, ale nevím jak začít
Pokud nejsem přítomen tak jsem na rybách
-
- Moderátor
- Příspěvky: 905
- Registrován: 03. červenec 2021, 18:35
- Dal poděkování: 108 poděkování
- Dostal poděkování: 210 poděkování
Re: FVE se střídači GoodWe - SEMS Portal
Nastavení portu by mohlo být jako tady: https://www.manualslib.com/manual/73946 ... =50#manual
Googlím dál, nacházím popis protokolu: https://www.stellavolta.com/content/MSC ... US-Doc.pdf
A ještě jednou - modbus rtu - https://www.home-assistant.io/integrations/modbus/
Takže bych také řekl že to půjde. Asi bych začal s nějakým usb/serial převodníkem připojeným do USB na HA a tou modbus integrací výše
A pak - nevím zatím sice jak je to s nějakým "remote serial" u ESP - zkusit zkusit si rozchodit nějakou sériovou linku/bridge přes wifi
narazil jsem na esp-link
a možná https://community.home-assistant.io/t/r ... ows/280111
Sériovou komunikaci asi taky výhledově začnu řešit - mám tu pár věcí kde bych to využil.
Googlím dál, nacházím popis protokolu: https://www.stellavolta.com/content/MSC ... US-Doc.pdf
A ještě jednou - modbus rtu - https://www.home-assistant.io/integrations/modbus/
Takže bych také řekl že to půjde. Asi bych začal s nějakým usb/serial převodníkem připojeným do USB na HA a tou modbus integrací výše
A pak - nevím zatím sice jak je to s nějakým "remote serial" u ESP - zkusit zkusit si rozchodit nějakou sériovou linku/bridge přes wifi
narazil jsem na esp-link
a možná https://community.home-assistant.io/t/r ... ows/280111
Sériovou komunikaci asi taky výhledově začnu řešit - mám tu pár věcí kde bych to využil.
Vše co si přinesu domů je buď Shelly, nebo to skončí buď pod ESPhome nebo pod Zigbee2mqtt.
Ajťák co pamatuje BBS a OS/2 Warp a je mu jedno o jaký systém nebo síťařinu běží.
HA OS jako jedna z Proxmox VM na Odroid H3+/64GB https://github.com/tteck/Proxmox
Ajťák co pamatuje BBS a OS/2 Warp a je mu jedno o jaký systém nebo síťařinu běží.
HA OS jako jedna z Proxmox VM na Odroid H3+/64GB https://github.com/tteck/Proxmox
- Pete30
- Moderátor
- Příspěvky: 3461
- Registrován: 30. září 2020, 20:33
- Dal poděkování: 174 poděkování
- Dostal poděkování: 373 poděkování
Re: FVE se střídači GoodWe - SEMS Portal
Dík, prolezu to. Mám stažené i nějaké dokumenty Tristar MPPT modbus dokumentace.
Mám z toho v hlavě bordel, případně ještě zapojím syna(naštěstí je programátor).
Když jsem se připojil serial-USB dostanu z něj přes jejich prográmek MSview toto:
Mám z toho v hlavě bordel, případně ještě zapojím syna(naštěstí je programátor).
Když jsem se připojil serial-USB dostanu z něj přes jejich prográmek MSview toto:
Pokud nejsem přítomen tak jsem na rybách
-
- Moderátor
- Příspěvky: 905
- Registrován: 03. červenec 2021, 18:35
- Dal poděkování: 108 poděkování
- Dostal poděkování: 210 poděkování
Re: FVE se střídači GoodWe - SEMS Portal
Což počítám přes tu modbus integraci taky.
Vše co si přinesu domů je buď Shelly, nebo to skončí buď pod ESPhome nebo pod Zigbee2mqtt.
Ajťák co pamatuje BBS a OS/2 Warp a je mu jedno o jaký systém nebo síťařinu běží.
HA OS jako jedna z Proxmox VM na Odroid H3+/64GB https://github.com/tteck/Proxmox
Ajťák co pamatuje BBS a OS/2 Warp a je mu jedno o jaký systém nebo síťařinu běží.
HA OS jako jedna z Proxmox VM na Odroid H3+/64GB https://github.com/tteck/Proxmox
- Pete30
- Moderátor
- Příspěvky: 3461
- Registrován: 30. září 2020, 20:33
- Dal poděkování: 174 poděkování
- Dostal poděkování: 373 poděkování
Re: FVE se střídači GoodWe - SEMS Portal
Tady mám problém že regulátor je od HA vzdálen cca 15m, proto to chci řešit přes ESPhome(nejlépe).
Asi bude potřeba vytvořit vlastní komponentu v ESP.
https://esphome.io/components/uart.html
https://esphome.io/cookbook/uart_text_s ... =uart_read
Potom se , ale už ztrácím jak zpracovat data z dokumentace regulátoru modbus, protože to pravděpodobně vysype surová data 0x003A(Output Power) například. Zatím jen teorie ještě jsem nic nezkoušel a ani netuším jaké napětí používá na TX-RX regulátor abych neodprásk nodemcu
Asi bude potřeba vytvořit vlastní komponentu v ESP.
https://esphome.io/components/uart.html
https://esphome.io/cookbook/uart_text_s ... =uart_read
Potom se , ale už ztrácím jak zpracovat data z dokumentace regulátoru modbus, protože to pravděpodobně vysype surová data 0x003A(Output Power) například. Zatím jen teorie ještě jsem nic nezkoušel a ani netuším jaké napětí používá na TX-RX regulátor abych neodprásk nodemcu
Pokud nejsem přítomen tak jsem na rybách
-
- Moderátor
- Příspěvky: 905
- Registrován: 03. červenec 2021, 18:35
- Dal poděkování: 108 poděkování
- Dostal poděkování: 210 poděkování
Re: FVE se střídači GoodWe - SEMS Portal
Ono to bude mít asi standardní RS232, tzn. možná nějakých +-12V
Na konverzi 5V/3,3V signálů stačí tohle https://www.laskarduino.cz/4-kanaly-obo ... -5v-a-3-3v
a na konverzi 5V na RS-232 tohle: https://www.laskarduino.cz/prevodnik-tt ... --max3232/
Teoreticky by ten RS-232 modul měl fungovat i na 3,3V, ale pro jistotu...
Pak bych zkusil najít nějaký FW pro ESP který by zařídil TCP/MODBUS
a na HA použil tu modbus integraci.
Zkusím se po něčem podívat
Na konverzi 5V/3,3V signálů stačí tohle https://www.laskarduino.cz/4-kanaly-obo ... -5v-a-3-3v
a na konverzi 5V na RS-232 tohle: https://www.laskarduino.cz/prevodnik-tt ... --max3232/
Teoreticky by ten RS-232 modul měl fungovat i na 3,3V, ale pro jistotu...
Pak bych zkusil najít nějaký FW pro ESP který by zařídil TCP/MODBUS
a na HA použil tu modbus integraci.
Zkusím se po něčem podívat
Vše co si přinesu domů je buď Shelly, nebo to skončí buď pod ESPhome nebo pod Zigbee2mqtt.
Ajťák co pamatuje BBS a OS/2 Warp a je mu jedno o jaký systém nebo síťařinu běží.
HA OS jako jedna z Proxmox VM na Odroid H3+/64GB https://github.com/tteck/Proxmox
Ajťák co pamatuje BBS a OS/2 Warp a je mu jedno o jaký systém nebo síťařinu běží.
HA OS jako jedna z Proxmox VM na Odroid H3+/64GB https://github.com/tteck/Proxmox
-
- Moderátor
- Příspěvky: 905
- Registrován: 03. červenec 2021, 18:35
- Dal poděkování: 108 poděkování
- Dostal poděkování: 210 poděkování
Re: FVE se střídači GoodWe - SEMS Portal
Tak to asi bude všechno ještě jednodušší -
Příklad - přečíst všechno z modbus a poslat přes mqtt:
https://github.com/ashish8284/ESP8266_M ... WAY_GOODWE
Vzít příklad, upravit podle dokumentace k tristar a asi hotovo. MQTT je už počítám v pohodě.
Příklad - přečíst všechno z modbus a poslat přes mqtt:
https://github.com/ashish8284/ESP8266_M ... WAY_GOODWE
Vzít příklad, upravit podle dokumentace k tristar a asi hotovo. MQTT je už počítám v pohodě.
Vše co si přinesu domů je buď Shelly, nebo to skončí buď pod ESPhome nebo pod Zigbee2mqtt.
Ajťák co pamatuje BBS a OS/2 Warp a je mu jedno o jaký systém nebo síťařinu běží.
HA OS jako jedna z Proxmox VM na Odroid H3+/64GB https://github.com/tteck/Proxmox
Ajťák co pamatuje BBS a OS/2 Warp a je mu jedno o jaký systém nebo síťařinu běží.
HA OS jako jedna z Proxmox VM na Odroid H3+/64GB https://github.com/tteck/Proxmox