homeassistant- klimatizace - rizeni NODERED
homeassistant- klimatizace - rizeni NODERED
zdravím,
máte někdo implementované řízení přebytků pres klimatizaci?
Nebo vymýšlím kolo od začátku?
Máte nějaké podmínky navíc ? Resp. jaké máte (lepší) podmínky pro zapínání- vypínání?
upozornění: bez záruky, pravé testování přijde v září (pokud bude sluníčko)
máte někdo implementované řízení přebytků pres klimatizaci?
Nebo vymýšlím kolo od začátku?
Máte nějaké podmínky navíc ? Resp. jaké máte (lepší) podmínky pro zapínání- vypínání?
upozornění: bez záruky, pravé testování přijde v září (pokud bude sluníčko)
-
- Příspěvky: 51
- Registrován: čtv srp 04, 2022 7:21 am
- Výkon panelů v FVE [Wp]: 8
- Kapacita baterie [kWh]: 14
Re: homeassistant- klimatizace - rizeni NODERED
Řeším v nodered podobný problém - nahřívání nádrže přes SSR.
Nahřívání nezapínám až když je SoC > 90%, ale koukám, i jestli je predikce zbývající dnešní výroby větší než 2.5x nenabitá kapacita baterky. Dovoluje to tak spustit nahřívání výrazně dříve.
Nahřívání nezapínám až když je SoC > 90%, ale koukám, i jestli je predikce zbývající dnešní výroby větší než 2.5x nenabitá kapacita baterky. Dovoluje to tak spustit nahřívání výrazně dříve.
8kWp JJZ | GW10k-ET | Pylontech Force H2 14,2kWh
Re: homeassistant- klimatizace - rizeni NODERED
Jaké používáš SSR a hlavně, jak ho řídíš? Zajímalo by mě to zařízení. Pokud to není třeba loxone nebo WR...
Rád bych takhle výhlědově dával přebytky do pomocného malého elektrokotle, řízení pomocí NR přes SSR.
Rád bych takhle výhlědově dával přebytky do pomocného malého elektrokotle, řízení pomocí NR přes SSR.
3x Victron MP2 48/5000, 3x MPPT 150/100, Cerbo GX (s NodeRED),
15 kWp na ploché střeše = 5 kWp východ (15°) + 5 kWp jih (37°+43°) + 5 kWp západ (15°),
baterie 3 packy, celkem 23 kWh skládané na 48 V 16s.
15 kWp na ploché střeše = 5 kWp východ (15°) + 5 kWp jih (37°+43°) + 5 kWp západ (15°),
baterie 3 packy, celkem 23 kWh skládané na 48 V 16s.
-
- Příspěvky: 66
- Registrován: pát kvě 13, 2022 9:34 pm
- Výkon panelů v FVE [Wp]: 9600
- Kapacita baterie [kWh]: 17
Re: homeassistant- klimatizace - rizeni NODERED
Klimy v NR mám sice naintegrované, ale nespínám automaticky, jen občas ručně přes mobil
A automaticky z NR v noci jen vypínám v čase, abych na to nemusel myslel,nezapomínal na ni v dětském pokoj a neběžela do rána.
Mám ale automatiku na bojler, DIN spínací relé od Shelly ke spirále.
Spínám až při určitém přetoku do sítě a SoC>90%, u toho kontroluji i teplotu vody podle nastavené hystereze.
A vypínám když je bojler nahřátý nebo klesne SoC pod 90%.
Relé pak nespíná moc často a šetřím kontakty
Měl jsem to jako dočasné řešení, než pořídím nějaký wattrouter s SSR, ale zjistil jsem, že to stojí zlomek, nikde to nic neruší a úplně mi to stačí
Nepotřebuji vytěžovat přesně na 0, přetoky mi dále krmí virtuálku
A automaticky z NR v noci jen vypínám v čase, abych na to nemusel myslel,nezapomínal na ni v dětském pokoj a neběžela do rána.
Mám ale automatiku na bojler, DIN spínací relé od Shelly ke spirále.
Spínám až při určitém přetoku do sítě a SoC>90%, u toho kontroluji i teplotu vody podle nastavené hystereze.
A vypínám když je bojler nahřátý nebo klesne SoC pod 90%.
Relé pak nespíná moc často a šetřím kontakty
Měl jsem to jako dočasné řešení, než pořídím nějaký wattrouter s SSR, ale zjistil jsem, že to stojí zlomek, nikde to nic neruší a úplně mi to stačí
Nepotřebuji vytěžovat přesně na 0, přetoky mi dále krmí virtuálku
Solax X3 Hybrid G4 10.0-D + 17,4 kWh LiFePo4 (3* Solax TriplePower T58)
21 panelů x 455Wp = 9,6kWp, 2 stringy, vše na čistý jihozápad
MiniPC NUC + Home Assistant + Grafana + Node red + Shelly věci
Virtuální baterie od ČEZu
21 panelů x 455Wp = 9,6kWp, 2 stringy, vše na čistý jihozápad
MiniPC NUC + Home Assistant + Grafana + Node red + Shelly věci
Virtuální baterie od ČEZu
Re: homeassistant- klimatizace - rizeni NODERED
- ohledně predikce (mám https://www.home-assistant.io/integrati ... cast_solar) je jedna věc, která nefunguje a to je, že forecast_solar nezohlednuje panely pod sněhem.
- nevím, zda někam ještě nepřidat podmínku (for x minutes)
- u SSR je spínání jednodušší, u klimy se musí dodržet aspoň nejaký čas, aby bežela..
- možná na zimu bude lepší začínat u podminky SOC>90, takto:
- nevím, zda někam ještě nepřidat podmínku (for x minutes)
- u SSR je spínání jednodušší, u klimy se musí dodržet aspoň nejaký čas, aby bežela..
- možná na zimu bude lepší začínat u podminky SOC>90, takto:
-
- Příspěvky: 51
- Registrován: čtv srp 04, 2022 7:21 am
- Výkon panelů v FVE [Wp]: 8
- Kapacita baterie [kWh]: 14
Re: homeassistant- klimatizace - rizeni NODERED
Na ten power_sell bych ještě přidal smooth a pak to řešil switchem. Takhle ti to může zbytečně vypnout, když ti zrovna přejde mrak, nebo dá žena vařit vodu na čaj.
A spíš než na prodej, bych tam přidal hysterezi - zapnout pri >90% a vypnout (třeba) při <85% a na power_sell bych se vykašlal. Bude to jednodušší než průměrovat ty přetoky.
Omezení intervalu spínání se dá řešit tak, že se tam dá delay uzel a nastaví se jak často pustí zprávu o změně stavu. V té zprávě je potom "on", nebo "off", které se vyhodnotí switchem, který vypne, nebo zapne tu klimu.
V zimě ty panely pod sněhem (u mě) není potřeba řešit, protože topím elektřinou, takže vše prakticky okamžitě spotřebuji.
Mám to dělané přes funkce v nodered. Tyhle podmínky bych těmi tahacími uzly asi nedal.
U toho SSR to mám drobet komplikovanější:
- vždy udržuji minimální teplotu, aby tekla alespoň vlažná voda
- v čase cca od 15:00 nahřívám bojlery na minimální teplotu potřebnou na nádobí a koupání bez ohledu na baterie a předpověď (Zima)
- pokud je baterie nabitá nad 10% minimamální nastavené úrovně, je dostupný volný výkon, je příznivá dnešní predikce (porovnávání s kapacitou baterie) tak nahřívám na vyšší teplotu a nechám baterii nabíjet cca 1 kW, pokud SoC baterie stoupne na 88% (úroveň od kdy začíná balancovat), tak ji nechám k nabíjení jen 200 W
- pokud je predikce na zítra nepříznivá, tak z přebytků natápím na ještě vyšší teplotu, abych překlenul více dní
- taky jsem omezen cca 3.3 kW na fázi, takže hlídám, aby sepnutí SSR nepřesáhlo tuto úroveň a já zbytečně nedokupoval (problém hlavně v zimě, případně když se spustí nějaký výkonější spotřebič)
A spíš než na prodej, bych tam přidal hysterezi - zapnout pri >90% a vypnout (třeba) při <85% a na power_sell bych se vykašlal. Bude to jednodušší než průměrovat ty přetoky.
Omezení intervalu spínání se dá řešit tak, že se tam dá delay uzel a nastaví se jak často pustí zprávu o změně stavu. V té zprávě je potom "on", nebo "off", které se vyhodnotí switchem, který vypne, nebo zapne tu klimu.
V zimě ty panely pod sněhem (u mě) není potřeba řešit, protože topím elektřinou, takže vše prakticky okamžitě spotřebuji.
Mám to dělané přes funkce v nodered. Tyhle podmínky bych těmi tahacími uzly asi nedal.
U toho SSR to mám drobet komplikovanější:
- vždy udržuji minimální teplotu, aby tekla alespoň vlažná voda
- v čase cca od 15:00 nahřívám bojlery na minimální teplotu potřebnou na nádobí a koupání bez ohledu na baterie a předpověď (Zima)
- pokud je baterie nabitá nad 10% minimamální nastavené úrovně, je dostupný volný výkon, je příznivá dnešní predikce (porovnávání s kapacitou baterie) tak nahřívám na vyšší teplotu a nechám baterii nabíjet cca 1 kW, pokud SoC baterie stoupne na 88% (úroveň od kdy začíná balancovat), tak ji nechám k nabíjení jen 200 W
- pokud je predikce na zítra nepříznivá, tak z přebytků natápím na ještě vyšší teplotu, abych překlenul více dní
- taky jsem omezen cca 3.3 kW na fázi, takže hlídám, aby sepnutí SSR nepřesáhlo tuto úroveň a já zbytečně nedokupoval (problém hlavně v zimě, případně když se spustí nějaký výkonější spotřebič)
8kWp JJZ | GW10k-ET | Pylontech Force H2 14,2kWh
Re: homeassistant- klimatizace - rizeni NODERED
ok. Komentare zapracovany. Tahle verze se mi libi tedy vic:
ja mam primarne topeni plynem. V zime tedy pokud budou pretoky bych prave rad nadbytecnou elektrinu spotreboval, nez prodavat za 0.2 Kc/Kwh.
ja mam primarne topeni plynem. V zime tedy pokud budou pretoky bych prave rad nadbytecnou elektrinu spotreboval, nez prodavat za 0.2 Kc/Kwh.
-
- Příspěvky: 51
- Registrován: čtv srp 04, 2022 7:21 am
- Výkon panelů v FVE [Wp]: 8
- Kapacita baterie [kWh]: 14
Re: homeassistant- klimatizace - rizeni NODERED
Ten delay z toho můžeš vyhodit. Navíc to máš asi stejně blbě nastavené a neplní to úplně účel (já tam po změně na ratelimit mám jiný text). Je tam potřeba rate limit a myslel jsem to takhle. Viz obrázek. Tam se ty 2 větve spojí v jednom ratelimiteru a nedovolí to častou změnu.
Tím, že tam je máš rozdíl 5% v SoC, tak chvíli trvá, než se to vybije z 95% na 90% (a obráceně), takže tam nějaký přirozený ratelimit máš. U toho active_power máš 2 výstupy, takže jsi tam asi zapomněl podmínku - tu jsi nahradil tím smooth+switch.
Tím, že tam je máš rozdíl 5% v SoC, tak chvíli trvá, než se to vybije z 95% na 90% (a obráceně), takže tam nějaký přirozený ratelimit máš. U toho active_power máš 2 výstupy, takže jsi tam asi zapomněl podmínku - tu jsi nahradil tím smooth+switch.
8kWp JJZ | GW10k-ET | Pylontech Force H2 14,2kWh
Re: homeassistant- klimatizace - rizeni NODERED
ten delay jsem tam dal tak jen pro test...
U active_power jsem podminku zapomnel, opraveno. Myslim, ze dalsi upravy budou az pri pouzivani.
(ja v tom noderedu neumim, plugin mam nainstalovan of tohoto pondeli)
U active_power jsem podminku zapomnel, opraveno. Myslim, ze dalsi upravy budou az pri pouzivani.
(ja v tom noderedu neumim, plugin mam nainstalovan of tohoto pondeli)
-
- Příspěvky: 51
- Registrován: čtv srp 04, 2022 7:21 am
- Výkon panelů v FVE [Wp]: 8
- Kapacita baterie [kWh]: 14
Re: homeassistant- klimatizace - rizeni NODERED
Na první pokus dobrý. Žádný učený z nebe nespadl
8kWp JJZ | GW10k-ET | Pylontech Force H2 14,2kWh
Re: homeassistant- klimatizace - rizeni NODERED
tak po mesici fungovani sem davam aktualni verzi
a/ pridano - zavislost na https://www.home-assistant.io/integrati ... cast_solar
b/ helper na prepnuti na manualni rizeni
Nodered AC enable
input_boolean.nodered_ac_enable
Input boolean
a/ pridano - zavislost na https://www.home-assistant.io/integrati ... cast_solar
b/ helper na prepnuti na manualni rizeni
Nodered AC enable
input_boolean.nodered_ac_enable
Input boolean
Kód: Vybrat vše
[
{
"id": "9ef7ece0ab2ec02f",
"type": "tab",
"label": "Klima kancelar",
"disabled": false,
"info": "",
"env": []
},
{
"id": "e01fec0f0a73be6c",
"type": "api-current-state",
"z": "9ef7ece0ab2ec02f",
"name": "battery SOC >90",
"server": "c10ba6d.0704058",
"version": 3,
"outputs": 2,
"halt_if": "90",
"halt_if_type": "num",
"halt_if_compare": "gt",
"entity_id": "sensor.battery_state_of_charge",
"state_type": "str",
"blockInputOverrides": false,
"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": 450,
"y": 80,
"wires": [
[
"7ef24478b5e92616"
],
[]
]
},
{
"id": "da76fe8e6f02d4b1",
"type": "inject",
"z": "9ef7ece0ab2ec02f",
"name": "",
"props": [
{
"p": "payload"
}
],
"repeat": "30",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "",
"payloadType": "date",
"x": 130,
"y": 80,
"wires": [
[
"e01fec0f0a73be6c",
"a294e3337feccd65",
"ab7fd9384aa5b1f6"
]
]
},
{
"id": "2046e80e05cac6f0",
"type": "api-call-service",
"z": "9ef7ece0ab2ec02f",
"name": "",
"server": "c10ba6d.0704058",
"version": 5,
"debugenabled": false,
"domain": "climate",
"service": "turn_on",
"areaId": [],
"deviceId": [
"56422900c10f7bbb1a233e689b7a1f96"
],
"entityId": [],
"data": "",
"dataType": "jsonata",
"mergeContext": "",
"mustacheAltTags": false,
"outputProperties": [],
"queue": "none",
"x": 1040,
"y": 300,
"wires": [
[
"52db68c481010120"
]
]
},
{
"id": "ab03bfcd277cbeef",
"type": "catch",
"z": "9ef7ece0ab2ec02f",
"name": "",
"scope": null,
"uncaught": false,
"x": 440,
"y": 180,
"wires": [
[]
]
},
{
"id": "dac4bfeefb79a92d",
"type": "comment",
"z": "9ef7ece0ab2ec02f",
"name": "Jednou za 30 sekund",
"info": "",
"x": 140,
"y": 40,
"wires": []
},
{
"id": "5376473fbda4bf2f",
"type": "comment",
"z": "9ef7ece0ab2ec02f",
"name": "nastaveni hvac",
"info": "",
"x": 1040,
"y": 600,
"wires": []
},
{
"id": "178828aa65c6bc96",
"type": "api-call-service",
"z": "9ef7ece0ab2ec02f",
"name": "",
"server": "c10ba6d.0704058",
"version": 5,
"debugenabled": true,
"domain": "climate",
"service": "turn_off",
"areaId": [],
"deviceId": [
"56422900c10f7bbb1a233e689b7a1f96"
],
"entityId": [],
"data": "",
"dataType": "jsonata",
"mergeContext": "",
"mustacheAltTags": false,
"outputProperties": [],
"queue": "none",
"x": 1020,
"y": 720,
"wires": [
[]
]
},
{
"id": "682d0a53f9ba229b",
"type": "api-current-state",
"z": "9ef7ece0ab2ec02f",
"name": "",
"server": "c10ba6d.0704058",
"version": 3,
"outputs": 2,
"halt_if": "off",
"halt_if_type": "str",
"halt_if_compare": "is",
"entity_id": "climate.9424b8b1111",
"state_type": "str",
"blockInputOverrides": false,
"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": 1110,
"y": 160,
"wires": [
[
"17034f88a89a8d28"
],
[]
]
},
{
"id": "0f4a4cc1a93d00d3",
"type": "api-current-state",
"z": "9ef7ece0ab2ec02f",
"name": "",
"server": "c10ba6d.0704058",
"version": 3,
"outputs": 2,
"halt_if": "off",
"halt_if_type": "str",
"halt_if_compare": "is_not",
"entity_id": "climate.9424b8b1111",
"state_type": "str",
"blockInputOverrides": false,
"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": 730,
"y": 420,
"wires": [
[
"bb7f5b7022d7a388"
],
[]
]
},
{
"id": "8c6c01c976733707",
"type": "comment",
"z": "9ef7ece0ab2ec02f",
"name": "nastaveni hvac",
"info": "",
"x": 1040,
"y": 240,
"wires": []
},
{
"id": "a244e84790d9adbb",
"type": "comment",
"z": "9ef7ece0ab2ec02f",
"name": "zapinam hvac pokud je vypnuta (if state==off )",
"info": "",
"x": 1130,
"y": 120,
"wires": []
},
{
"id": "be41baea409e90e5",
"type": "comment",
"z": "9ef7ece0ab2ec02f",
"name": "pokud je hvac zapnuta vypinam (if state<>off)",
"info": "",
"x": 750,
"y": 380,
"wires": []
},
{
"id": "d38c125cd68d0c8c",
"type": "comment",
"z": "9ef7ece0ab2ec02f",
"name": "payload > 600 Watt",
"info": "",
"x": 830,
"y": 120,
"wires": []
},
{
"id": "8dc1a0e48fd8e7b2",
"type": "api-call-service",
"z": "9ef7ece0ab2ec02f",
"name": "",
"server": "c10ba6d.0704058",
"version": 5,
"debugenabled": true,
"domain": "climate",
"service": "set_temperature",
"areaId": [],
"deviceId": [
"56422900c10f7bbb1a233e689b7a1f96"
],
"entityId": [
"climate.9424b8b1111"
],
"data": "{\"temperature\":\" 25\"}",
"dataType": "json",
"mergeContext": "",
"mustacheAltTags": true,
"outputProperties": [],
"queue": "none",
"x": 1070,
"y": 440,
"wires": [
[
"b93baafc73dd1d3b"
]
]
},
{
"id": "52db68c481010120",
"type": "api-call-service",
"z": "9ef7ece0ab2ec02f",
"name": "",
"server": "c10ba6d.0704058",
"version": 5,
"debugenabled": true,
"domain": "climate",
"service": "set_hvac_mode",
"areaId": [],
"deviceId": [
"56422900c10f7bbb1a233e689b7a1f96"
],
"entityId": [
"climate.9424b8b1111"
],
"data": "{\"hvac_mode\":\"heat\"}",
"dataType": "json",
"mergeContext": "",
"mustacheAltTags": true,
"outputProperties": [],
"queue": "none",
"x": 1070,
"y": 360,
"wires": [
[
"8dc1a0e48fd8e7b2"
]
]
},
{
"id": "b93baafc73dd1d3b",
"type": "api-call-service",
"z": "9ef7ece0ab2ec02f",
"name": "",
"server": "c10ba6d.0704058",
"version": 5,
"debugenabled": true,
"domain": "climate",
"service": "set_fan_mode",
"areaId": [],
"deviceId": [
"56422900c10f7bbb1a233e689b7a1f96"
],
"entityId": [
"climate.9424b8b1111"
],
"data": "{\"fan_mode\":\"low\"}",
"dataType": "json",
"mergeContext": "",
"mustacheAltTags": true,
"outputProperties": [],
"queue": "none",
"x": 1060,
"y": 500,
"wires": [
[]
]
},
{
"id": "9632d4c02d0ba62a",
"type": "comment",
"z": "9ef7ece0ab2ec02f",
"name": "battery SOC >90 %",
"info": "",
"x": 450,
"y": 40,
"wires": []
},
{
"id": "d8262de394f45965",
"type": "api-current-state",
"z": "9ef7ece0ab2ec02f",
"name": "battery SOC <80",
"server": "c10ba6d.0704058",
"version": 3,
"outputs": 2,
"halt_if": "80",
"halt_if_type": "num",
"halt_if_compare": "lt",
"entity_id": "sensor.battery_state_of_charge",
"state_type": "str",
"blockInputOverrides": false,
"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": 450,
"y": 220,
"wires": [
[
"f794314f9c88d40d"
],
[]
]
},
{
"id": "f794314f9c88d40d",
"type": "delay",
"z": "9ef7ece0ab2ec02f",
"name": "",
"pauseType": "delay",
"timeout": "5",
"timeoutUnits": "minutes",
"rate": "1",
"nbRateUnits": "1",
"rateUnits": "second",
"randomFirst": "1",
"randomLast": "5",
"randomUnits": "seconds",
"drop": false,
"allowrate": false,
"outputs": 1,
"x": 540,
"y": 300,
"wires": [
[
"0f4a4cc1a93d00d3",
"e1123dd9f65d4b61"
]
]
},
{
"id": "e002f3cc42af120d",
"type": "smooth",
"z": "9ef7ece0ab2ec02f",
"name": "",
"property": "payload",
"action": "mean",
"count": "10",
"round": "",
"mult": "single",
"reduce": false,
"x": 660,
"y": 160,
"wires": [
[
"a4c0697d0553797b",
"79b11d097335d035"
]
]
},
{
"id": "a4c0697d0553797b",
"type": "switch",
"z": "9ef7ece0ab2ec02f",
"name": "",
"property": "payload",
"propertyType": "msg",
"rules": [
{
"t": "gt",
"v": "600",
"vt": "str"
}
],
"checkall": "true",
"repair": false,
"outputs": 1,
"x": 810,
"y": 160,
"wires": [
[
"682d0a53f9ba229b",
"2a286f6e466ee55c"
]
]
},
{
"id": "b77b2b84fbb6a922",
"type": "comment",
"z": "9ef7ece0ab2ec02f",
"name": "average 10",
"info": "",
"x": 660,
"y": 120,
"wires": []
},
{
"id": "2a286f6e466ee55c",
"type": "debug",
"z": "9ef7ece0ab2ec02f",
"name": "dbg10",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": true,
"complete": "payload",
"targetType": "msg",
"statusVal": "payload",
"statusType": "auto",
"x": 830,
"y": 240,
"wires": []
},
{
"id": "7ef24478b5e92616",
"type": "api-current-state",
"z": "9ef7ece0ab2ec02f",
"name": "",
"server": "c10ba6d.0704058",
"version": 3,
"outputs": 1,
"halt_if": "",
"halt_if_type": "str",
"halt_if_compare": "is",
"entity_id": "sensor.active_power",
"state_type": "str",
"blockInputOverrides": false,
"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": 740,
"y": 60,
"wires": [
[
"e002f3cc42af120d"
]
]
},
{
"id": "79b11d097335d035",
"type": "debug",
"z": "9ef7ece0ab2ec02f",
"name": "dbg11",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": true,
"complete": "payload",
"targetType": "msg",
"statusVal": "payload",
"statusType": "auto",
"x": 670,
"y": 240,
"wires": []
},
{
"id": "0284c61f7c24828c",
"type": "file",
"z": "9ef7ece0ab2ec02f",
"name": "",
"filename": "/homeassistant/nodered/file.txt",
"filenameType": "str",
"appendNewline": true,
"createDir": false,
"overwriteFile": "false",
"encoding": "none",
"x": 630,
"y": 660,
"wires": [
[]
]
},
{
"id": "e1123dd9f65d4b61",
"type": "function",
"z": "9ef7ece0ab2ec02f",
"d": true,
"name": "function 1",
"func": "\n\n//msg.payload = { \"data\": { \"title\": \"off: \" + msg.payload } }\n\n\nvar date=new Date();\nvar hour =date.getHours();\nhour=hour+2;\ndate.setHours(hour);\n\n\nmsg.payload = { \"data\": { \"title\": \"off: \" + date.toUTCString() } };\nreturn msg;",
"outputs": 1,
"timeout": 0,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 400,
"y": 660,
"wires": [
[
"0284c61f7c24828c"
]
]
},
{
"id": "bb7f5b7022d7a388",
"type": "api-current-state",
"z": "9ef7ece0ab2ec02f",
"name": "",
"server": "c10ba6d.0704058",
"version": 3,
"outputs": 2,
"halt_if": "unavailable",
"halt_if_type": "str",
"halt_if_compare": "is_not",
"entity_id": "climate.9424b8b1111",
"state_type": "str",
"blockInputOverrides": false,
"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": 730,
"y": 520,
"wires": [
[
"949c0a24cb1f8de0",
"ac4b8304d68580eb"
],
[]
]
},
{
"id": "cb3763a634414d13",
"type": "comment",
"z": "9ef7ece0ab2ec02f",
"name": "plus jeste podminka state<>unavailable",
"info": "",
"x": 730,
"y": 480,
"wires": []
},
{
"id": "19adf8f4d5d517fd",
"type": "comment",
"z": "9ef7ece0ab2ec02f",
"name": " [‘auto’, ‘cool’, ‘dry’, ‘fan_only’, ‘heat’, ‘heat_cool’, ‘off’] ",
"info": "",
"x": 1410,
"y": 360,
"wires": []
},
{
"id": "3184cbeccfb30170",
"type": "comment",
"z": "9ef7ece0ab2ec02f",
"name": "Auto, Low, Medium-Low, Medium, Medium-High, High, Turbo",
"info": "",
"x": 1420,
"y": 500,
"wires": []
},
{
"id": "0805de54c03933c9",
"type": "comment",
"z": "9ef7ece0ab2ec02f",
"name": "{\"temperature\":\" 24\"}",
"info": "",
"x": 1310,
"y": 440,
"wires": []
},
{
"id": "949c0a24cb1f8de0",
"type": "debug",
"z": "9ef7ece0ab2ec02f",
"name": "debug 15",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": true,
"complete": "payload",
"targetType": "msg",
"statusVal": "payload",
"statusType": "auto",
"x": 700,
"y": 620,
"wires": []
},
{
"id": "79761c60576e62df",
"type": "api-current-state",
"z": "9ef7ece0ab2ec02f",
"name": "",
"server": "c10ba6d.0704058",
"version": 3,
"outputs": 2,
"halt_if": "14",
"halt_if_type": "num",
"halt_if_compare": "lt",
"entity_id": "sensor.energy_production_tomorrow",
"state_type": "str",
"blockInputOverrides": false,
"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": 190,
"y": 300,
"wires": [
[
"d8262de394f45965"
],
[
"c82a2001ead09312"
]
]
},
{
"id": "a294e3337feccd65",
"type": "function",
"z": "9ef7ece0ab2ec02f",
"name": "enable/disable",
"func": "// 0 for prediction off\nmsg.payload=1;\nreturn msg;",
"outputs": 1,
"timeout": 0,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 120,
"y": 200,
"wires": [
[
"6cccfa943b5d9356"
]
]
},
{
"id": "6cccfa943b5d9356",
"type": "switch",
"z": "9ef7ece0ab2ec02f",
"name": "",
"property": "payload",
"propertyType": "msg",
"rules": [
{
"t": "eq",
"v": "0",
"vt": "str"
},
{
"t": "neq",
"v": "0",
"vt": "str"
}
],
"checkall": "true",
"repair": false,
"outputs": 2,
"x": 110,
"y": 240,
"wires": [
[
"d8262de394f45965"
],
[
"79761c60576e62df"
]
]
},
{
"id": "c82a2001ead09312",
"type": "api-current-state",
"z": "9ef7ece0ab2ec02f",
"name": "battery SOC >65",
"server": "c10ba6d.0704058",
"version": 3,
"outputs": 2,
"halt_if": "65",
"halt_if_type": "num",
"halt_if_compare": "gt",
"entity_id": "sensor.battery_state_of_charge",
"state_type": "str",
"blockInputOverrides": false,
"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": 350,
"y": 460,
"wires": [
[],
[
"f794314f9c88d40d"
]
]
},
{
"id": "ed7e63a3725303c3",
"type": "comment",
"z": "9ef7ece0ab2ec02f",
"name": "enable/disable prediction 0 to disable",
"info": "",
"x": 180,
"y": 160,
"wires": []
},
{
"id": "25b5af4bc6851931",
"type": "comment",
"z": "9ef7ece0ab2ec02f",
"name": "forecast > 14 then podminka na SOC=60",
"info": "",
"x": 180,
"y": 360,
"wires": []
},
{
"id": "ab7fd9384aa5b1f6",
"type": "api-current-state",
"z": "9ef7ece0ab2ec02f",
"name": "",
"server": "c10ba6d.0704058",
"version": 3,
"outputs": 1,
"halt_if": "",
"halt_if_type": "str",
"halt_if_compare": "is",
"entity_id": "sensor.esphome_esp32_01_outside_temperature",
"state_type": "str",
"blockInputOverrides": false,
"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": 410,
"y": 720,
"wires": [
[]
]
},
{
"id": "17034f88a89a8d28",
"type": "api-current-state",
"z": "9ef7ece0ab2ec02f",
"name": "Nodered_enable",
"server": "c10ba6d.0704058",
"version": 3,
"outputs": 2,
"halt_if": "on",
"halt_if_type": "str",
"halt_if_compare": "is",
"entity_id": "input_boolean.nodered_ac_enable",
"state_type": "str",
"blockInputOverrides": false,
"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": 1230,
"y": 220,
"wires": [
[
"2046e80e05cac6f0"
],
[]
]
},
{
"id": "ac4b8304d68580eb",
"type": "api-current-state",
"z": "9ef7ece0ab2ec02f",
"name": "Nodered_enable",
"server": "c10ba6d.0704058",
"version": 3,
"outputs": 2,
"halt_if": "on",
"halt_if_type": "str",
"halt_if_compare": "is",
"entity_id": "input_boolean.nodered_ac_enable",
"state_type": "str",
"blockInputOverrides": false,
"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": 1030,
"y": 660,
"wires": [
[
"178828aa65c6bc96"
],
[]
]
},
{
"id": "6646757ec0bc1de5",
"type": "comment",
"z": "9ef7ece0ab2ec02f",
"name": "chybi jeste osetreni stavu, kdyz forecast ukaze chybu",
"info": "",
"x": 250,
"y": 520,
"wires": []
},
{
"id": "c10ba6d.0704058",
"type": "server",
"name": "Home Assistant",
"addon": true
}
]