Automatizace v domácnosti

Omlouvám se za topic ne zcela o Proteovi/Flexibilitě, ale zajímalo by mě na co reálně se dá použít automatizace v domácnosti. Nejde mi o nějaké základy jak to funguje, dovedu si to dost dobře představit, mám vlastní NodeRED flow pro TČ na Victronu. Ptám se na realistické využití ne jen na hračku. Sám jsem hračička, jen nenacházím reálné scénáře proč dělat automatizaci ala HA, Loxone atd.
Upřesním:
Normální barák, vše na eletriku. Barák byl novostavba v 2002. Nedělal jsem venkovní žaluzie. Aktuálně mám TČ, které si umí poslechnout informaci, že je přebytek a zařídit se podle toho (chytře, tzn dá do fronty povel o posunutí ohřebu TUV na aktuální hodinu i o zvýšení teploty, ale až na pokyn dojde řada, tzn není to tvrdé on/off)
A teď přemýšlím, co dalšího se dá automatizovat, aby mělo smysl řešit právě automatizaci - vzít třeba RPi, které mám 3 v šuplíku, dát Docker na synův rack server v garáži a běží nepřetržitě a podobně.
Myčka - nápad hezký, ale programuje se přímo na myčce, integrace externě tam není nebo o ní nevím a zapínat zásuvku natvrdo sice lze, ale myčka se stejně nerozjede. A musí tam být tableta, nádobí rozumně naskládané, atd. - vyžaduje lidskou ruku
Pračka - někdo musí dát prádlo do pračky, tzn vědět, že ho bude automatizace spínat. Není to bezobslužné teda a když už u té pračky někdo je, tak tam odložený start klikne rychleji. A po skončení to prádlo nemůže ležet 3 hodiny mokré uvnitř, takže člověk ho musí vyndat.
Sušička - je nesmysl dát mokré prádlo a nechat ho tam 4 hodiny smrdět než to automatizace zapne. A stejně se prádlo musí z pračky vyndat a přendat. Kopit kombinovanou pračku/sušičku nepomůže, jelikož sušička většinou chce polovinu dávky z pračky, musí se za každým sušením ideálně z filtru vyndat chuchvalce prachu z oblečení. A aby prádlo nebylo zmačkané, v 90% se po praní stejně vytřepává a skládá do sušičky. Opět externí spínaní kromě tvrdého zapnutí zásuvky nevím a po zapnutí myslím že stejně nezačně program
Trouba - někdo by musel syrové jídlo dát dovnitř a pak čekat, že se nezačne třeba kazit maso z lednice než se začne péci. Opět trouba jde velmi jednoduše zapnout časovačem v určitou dobu, kdy tam člověk jídlo dává
Indukce - tady bych to odloženě asi ani nechtěl zapínat, pokud člověk netáhne vývar přes noc, tak toto vůbec nepotřebuje
Světla - nedovedu si představit scénář kromě simulace obyvatel v případě dovolené
- externí řízení není nijak pokročilé, má to kontakt, mají vlastní řízení invertoru, v čemž mi automatizace mimo ekosystém moc nepomůže
EV - zatím nemám (příští rok bude) ale tady si asi nějakou automatizaci dovedu představit, na druhou stranu si myslím, že to půjde pomocí NodeRED minimálně řídit Victron nabíječku podel budoucího API.
Může mi nekdo upravit mé vnímání a dát příklad, na co se automatizace v reálném světe využívá, aby to nebylo samoúčelné hraní? :slight_smile:

V lete zalevani zahrady, na zaklade casu a vlhkosti pudy. Me se ted treba zapina venkovni osvetleni stromecku, na zaklade casu. Rizeni teploty v dome na zaklade casu.

A svetla by se taky dala - treba venkovni osvetleni cesty, pokud tam neni pohybovka a potrebuji tam chodit kazdy den ve stejnou dobu. Pripadne vypinani pohybovky, pokud je tam pes/jezdi kolem auta/atd, v noci, aby me to nerusilo

Díky moc - jo zalévání ok, světla mám úplně jednoduché čínské solar pohybovky

Ja mám rozchozeno kromě obvyklých věcí (řizení vytápění, TČ, ohřev vody z přebytků FVE) ještě např:

  • Automatické vypínání vody hned za vodoměrem, jako ochrana proti poruše potrubí když nejsme doma. Velmi primitivní, ale funguje už mnoho let bez problémů. V chodbě pohybové čidlo, za vodoměrem elektromagnetický ventil, a logika je že se ventil zavře po nastaveném času od posledního pohybu. (Mám tam nastaveno 8 hod, aby stihla i dojet odložená pračka když nejsem doma.)

  • Větrání sklepa, pro odvlhčování. Hlídá se teplota a relativní vlhkost ve sklepě a venku, z nich se počítá absolutní vlhkost, a když je absolutní vlhkost venku aspoň o 10% nižší než ve sklepě, zapnou se větrací ventilátory.

Pavel

Díky - ten vodoměr zajímavá myšlenka.

Podle me je hlavni vyhodou HA (loxone vubec neznam), ze dokaze jednoduse integrovat zarizeni ruznych vyrobcu a mezi nimi delat ruzne interakce.

Mam treba jeden salavy panel, ktery mam zapojeny do wifi zasuvky tplink. Pak mam teplomer zigbee a v HA pak jednoduse vytvorim propojeni, ktere se tvari jako celek:
image

climate:
  - platform: generic_thermostat
    name: LoznicePanel
    heater: switch.zasuvka_panel_loznice
    target_sensor: sensor.teplomerloznice_temperature
    cold_tolerance: 0
    hot_tolerance: 0
    precision: 0.1

Dalsi priklady:

  • zapinani “hloupeho” bojleru zapojeneho do wifi tplink zasuvky podle prebytku fve, ceny elektriny, potreby manzelky :slight_smile: a soucasne mereni teploty uvnitr a nahore pomoci wifi cidla teploty
  • rizeni topeni (evohome od honeywell) tak, ze to zacne topit na vyssi teplotu az je nekdo doma (pripojene mobily k wifi - pripojeny router k HA, pripadne dle polohy - aplikace HA v mobilu)
  • po vypnuti televize v obyvaku (napojeno na android tv) automaticky snizi teplotu v obyvaku (evohome)
  • po vypnuti televize v loznici pusti “usinaci” hudbu na sonosu
  • po doprani pracky nebo dosuseni susicky (v zasuvce je shelly mereni spotreby) zahlasi v obyvaku na google nesthubu, ze je doprano/dosuseno
  • podle vlhkosti (zigbee cidlo) spusti v koupelne odsavani (zigbee switch) a soucasne s tim zapne topeni zebriku v koupelne (evohome)

Ale urcite to uz je faze hrani si :smiley:

R

Super, díky :slight_smile:

Některým věcem rozumím, i když pro můj scénář asi nevyužiju - Sušička Miele dává vědět na Apple watch sama, stejně tak Pračka AEG. Vlastně i trouba AEG si myslím že oznámit konec pečení, i když to nevyužívám. V ložnici televizi nemám :slight_smile: Topení mám tepelné čerpadlo s časovým programem takže nehýbu moc dynamicky, pouze ten prgoram hýbe v rozmezí 3 stupňů
odsávání vhkosti mám větráky s čidlem vlhkosti :slight_smile:

Jak jsem psal, dovedl bych si asi představit zalévání (měl jsem ho již v zemi, ale manželka měla postoj, že je to blbost, takže jsem to opět vyndal a prodal)
Dovedl bych si představit zatahování venkovních žaluzií podle počasí, větru pokud bych je měl.
Ostatní mi právě přišlo z kategorie krásná hračka :slight_smile:

nabíjení EV velká věc. Čím větší spotřeba to je, tak tím víc dává smysl to pořádně automatizovat.
Takže možná si dát doma různé měřáky, snažit se zjistit co dělá velkou spotřebu a to pak snažit řídit.

Díky @tygr
To se budu snažit řešit, jak si v příštím roce pořídím auto. Myšlenka byla nechat Victron nabíječku na auto mode, tzn ze slunce a pak asi trochu zkoumat NodeREd, zda by šlo jak jak dělám čerpadlo, tak podle toho co teče do sítě měnit proud, samozřejmě s nějakou rozumnou dynamikou (tzn ne realtime, vyhlazovat špičky jako to dělám u čerpadla, ale podobným způsobem). Takže spíš neřídit zbytek nad rámec současného, ale řídit to auto

já to mám na auto a funguje to. Pak mám dvě automatizace, jedna nabíjí manuálně když je cena spotu nižší než x to mám hlavně na zimu. Pak druhou, která nabíjí manuálně dokud je baterie má víc než y, to je hlavně pro jaro a podzim kdy svítí přes den, ale auto je ještě venku.

Naše pračka LG a myčka Bosch mají integraci do HA a tlačítko povolení vzdáleného startu. Když spotřebiče připravím, povolím vzdálený start, tak přes HA můžu spustit ve vhodnou dobu.

Pak mám pravidlo, že pokud kapacita baterie dosáhne 95% tak TČ nahřeje vodu na vyšší teplotu než běžně. To jsem teď na zimu vypnul. Chci aby se aspoň občas baterka nabila na 100% kvůli balancování článků.

Až přejdu na spotové ceny na jaře, tak toto budu řídit podle spotových cen případně podle aktuální výroby FVE.

S tou pračkou a sušičkou tomu z teoretického hlediska rozumím ale jak jsem psal, nějak jsem nepochytil praktickou stránku:
Díky Eu dneska pračka na ty svoje ECO programy pere třeba 4 hodiny místo 1.
Do pračky se vejde až 9 kg prádla
Sušička suší podle vlhkosti 1.5-3 hodiny. Zpravidla očekává něco kolem 5 kg prádla, které se zpravidla skládá, aby nebylo zmuchlané (tzn při překládání z pračky se vlhké prádlo složí).
Takže když dám odložený start pračky, tak to můžu (ale to dělá skoro každá pračka sama o sobě). Ale po dojetí to musí být v době, aby u toho někdo byl, jinak to zůstane vlhké v pračce a bude smrdět. Ten někdo to musí vyndat a naskládat do sušičky (možná i měnší dávku). Pak jí sice pustí vzdáleně, ale složení se nevyhne, dlouho to tam kvuli zápachu také být nemůže.
Po dojetí sušičky se to sice může točit, ale to je zase zbytečná spotřeba.
proto mě zajímalo, jak to manželka používá :slight_smile:

Jinak TČ dělám jak jsem psal - pokud by to někoho zajímalo, tak takto. Nekamenujte mě, bylo to v zásadě moje první flow v NodeRED - nikdy jsem v tom nedělal (už teda po jedné revizi). V sekci variables stačí nastavit spotřebu kompresoru TČ a pokud je to na jiné fázi než L3, tak node AC consumption L3 změnit na příslušné L.
A nakonec v prepare for weekend a v Daylight timerech nastavit swoje GPS souřadnice (nahradit řetězec my_lat, my_lon za souřadnice)

Standardně řší nahřívání až od solárního poledne, kromě 3 dní přes víkend, kdy to řeší od rána (tzn rozhodovací funkce posuzuje od poledne/od rána podle dnů v týdnu). Je tam vyhlazování, respektive jakoby trend - tzn ne špičky výroby/spotřeby, ale pokud trend po cca 8 minutách je pozitivní, tak spíná relé 2.
Jsou tam i nody na override, kdy se dá do příslušného poslat 0 nebo 1 ručně
funkce řeší i záporné ceny/zakázané přetoky, tzn v ten moment rozhoduje jinak/dříve.

[
    {
        "id": "48be19420f90dfab",
        "type": "tab",
        "label": "DynESS VRMBeta",
        "disabled": false,
        "info": "",
        "env": []
    },
    {
        "id": "8723590cdc0e7405",
        "type": "group",
        "z": "48be19420f90dfab",
        "name": "Variables",
        "style": {
            "label": true
        },
        "nodes": [
            "b16cd5869686a698",
            "4b8ad810ed639ef4",
            "2eb4f78b7d18299f",
            "b54e73d030ebb663",
            "a9fe5716d33704e7",
            "a4896c9b2b6c9ebf",
            "9ae3fe0270f3f334",
            "474eae43ec161d17",
            "2482af2929a7fb4b",
            "45395fb4c98287fe"
        ],
        "x": 54,
        "y": 39,
        "w": 1072,
        "h": 262
    },
    {
        "id": "bd1e8a80da2037b3",
        "type": "group",
        "z": "48be19420f90dfab",
        "name": "Excess For Heatpump",
        "style": {
            "label": true
        },
        "nodes": [
            "c9af35d60da1c9a3",
            "d28592c66eb2ea7d",
            "44e172fbc830b60e",
            "f4c5ba26f4078114",
            "87ac239b3f969651",
            "382f72da71066703",
            "501660f7f19da133",
            "23d28c4c4cd047e7",
            "89636215732ba57d",
            "8f43c547c036074d",
            "65e6673ca17423b1",
            "b48462a624b689c1",
            "e258b4b208e7a416",
            "ef09d94eb83fb90c",
            "7d55ec160def7c15",
            "024e3d8110ddb48d",
            "d02f91807bb663e1",
            "2ad4395fb244c4cd",
            "472cd06c73651b15",
            "41cda282d6b91926",
            "c01e509b4ff3a7ef",
            "0dedbfe531f498f8",
            "639e7a61b1ecf620"
        ],
        "x": 54,
        "y": 339,
        "w": 1192,
        "h": 442
    },
    {
        "id": "b16cd5869686a698",
        "type": "inject",
        "z": "48be19420f90dfab",
        "g": "8723590cdc0e7405",
        "name": "HeatPump_Consumption",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": true,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "2400",
        "payloadType": "num",
        "x": 210,
        "y": 80,
        "wires": [
            [
                "4b8ad810ed639ef4"
            ]
        ]
    },
    {
        "id": "4b8ad810ed639ef4",
        "type": "change",
        "z": "48be19420f90dfab",
        "g": "8723590cdc0e7405",
        "name": "HeatPump",
        "rules": [
            {
                "t": "set",
                "p": "heatpump",
                "pt": "flow",
                "to": "payload",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 450,
        "y": 80,
        "wires": [
            []
        ]
    },
    {
        "id": "c9af35d60da1c9a3",
        "type": "victron-input-system",
        "z": "48be19420f90dfab",
        "g": "bd1e8a80da2037b3",
        "service": "com.victronenergy.system/0",
        "path": "/Ac/Grid/L1/Power",
        "serviceObj": {
            "service": "com.victronenergy.system/0",
            "name": "Venus system"
        },
        "pathObj": {
            "path": "/Ac/Grid/L1/Power",
            "type": "float",
            "name": "Grid L1 (W)"
        },
        "name": "",
        "onlyChanges": false,
        "x": 200,
        "y": 380,
        "wires": [
            [
                "382f72da71066703"
            ]
        ]
    },
    {
        "id": "d28592c66eb2ea7d",
        "type": "victron-input-system",
        "z": "48be19420f90dfab",
        "g": "bd1e8a80da2037b3",
        "service": "com.victronenergy.system/0",
        "path": "/Ac/Grid/L2/Power",
        "serviceObj": {
            "service": "com.victronenergy.system/0",
            "name": "Venus system"
        },
        "pathObj": {
            "path": "/Ac/Grid/L2/Power",
            "type": "float",
            "name": "Grid L2 (W)"
        },
        "name": "",
        "onlyChanges": false,
        "x": 200,
        "y": 440,
        "wires": [
            [
                "501660f7f19da133"
            ]
        ]
    },
    {
        "id": "44e172fbc830b60e",
        "type": "victron-input-system",
        "z": "48be19420f90dfab",
        "g": "bd1e8a80da2037b3",
        "service": "com.victronenergy.system/0",
        "path": "/Ac/Grid/L3/Power",
        "serviceObj": {
            "service": "com.victronenergy.system/0",
            "name": "Venus system"
        },
        "pathObj": {
            "path": "/Ac/Grid/L3/Power",
            "type": "float",
            "name": "Grid L3 (W)"
        },
        "name": "",
        "onlyChanges": false,
        "x": 200,
        "y": 500,
        "wires": [
            [
                "23d28c4c4cd047e7"
            ]
        ]
    },
    {
        "id": "f4c5ba26f4078114",
        "type": "victron-input-system",
        "z": "48be19420f90dfab",
        "g": "bd1e8a80da2037b3",
        "service": "com.victronenergy.system/0",
        "path": "/Ac/Consumption/L3/Power",
        "serviceObj": {
            "service": "com.victronenergy.system/0",
            "name": "Venus system"
        },
        "pathObj": {
            "path": "/Ac/Consumption/L3/Power",
            "type": "float",
            "name": "AC Consumption L3 (W)"
        },
        "name": "",
        "onlyChanges": false,
        "x": 230,
        "y": 560,
        "wires": [
            [
                "89636215732ba57d"
            ]
        ]
    },
    {
        "id": "87ac239b3f969651",
        "type": "join",
        "z": "48be19420f90dfab",
        "g": "bd1e8a80da2037b3",
        "name": "one_message",
        "mode": "custom",
        "build": "object",
        "property": "payload",
        "propertyType": "msg",
        "key": "topic",
        "joiner": "\\n",
        "joinerType": "str",
        "accumulate": false,
        "timeout": "",
        "count": "7",
        "reduceRight": false,
        "reduceExp": "",
        "reduceInit": "",
        "reduceInitType": "",
        "reduceFixup": "",
        "x": 740,
        "y": 460,
        "wires": [
            [
                "b48462a624b689c1"
            ]
        ]
    },
    {
        "id": "382f72da71066703",
        "type": "change",
        "z": "48be19420f90dfab",
        "g": "bd1e8a80da2037b3",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "topic",
                "pt": "msg",
                "to": "grid_l1",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 510,
        "y": 380,
        "wires": [
            [
                "87ac239b3f969651"
            ]
        ]
    },
    {
        "id": "501660f7f19da133",
        "type": "change",
        "z": "48be19420f90dfab",
        "g": "bd1e8a80da2037b3",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "topic",
                "pt": "msg",
                "to": "grid_l2",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 510,
        "y": 440,
        "wires": [
            [
                "87ac239b3f969651"
            ]
        ]
    },
    {
        "id": "23d28c4c4cd047e7",
        "type": "change",
        "z": "48be19420f90dfab",
        "g": "bd1e8a80da2037b3",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "topic",
                "pt": "msg",
                "to": "grid_l3",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 510,
        "y": 500,
        "wires": [
            [
                "87ac239b3f969651"
            ]
        ]
    },
    {
        "id": "89636215732ba57d",
        "type": "change",
        "z": "48be19420f90dfab",
        "g": "bd1e8a80da2037b3",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "topic",
                "pt": "msg",
                "to": "ac_l3",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 510,
        "y": 560,
        "wires": [
            [
                "87ac239b3f969651"
            ]
        ]
    },
    {
        "id": "8f43c547c036074d",
        "type": "victron-input-system",
        "z": "48be19420f90dfab",
        "g": "bd1e8a80da2037b3",
        "service": "com.victronenergy.system/0",
        "path": "/Dc/Battery/Soc",
        "serviceObj": {
            "service": "com.victronenergy.system/0",
            "name": "Venus system"
        },
        "pathObj": {
            "path": "/Dc/Battery/Soc",
            "type": "float",
            "name": "Battery State of Charge (%)"
        },
        "name": "",
        "onlyChanges": false,
        "roundValues": "0",
        "x": 250,
        "y": 620,
        "wires": [
            [
                "65e6673ca17423b1"
            ]
        ]
    },
    {
        "id": "65e6673ca17423b1",
        "type": "change",
        "z": "48be19420f90dfab",
        "g": "bd1e8a80da2037b3",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "topic",
                "pt": "msg",
                "to": "soc",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 510,
        "y": 620,
        "wires": [
            [
                "87ac239b3f969651"
            ]
        ]
    },
    {
        "id": "b48462a624b689c1",
        "type": "function",
        "z": "48be19420f90dfab",
        "g": "bd1e8a80da2037b3",
        "name": "Decision",
        "func": "var counter = flow.get(\"counter\") || 0\nvar l1 = msg.payload.grid_l1||0\nvar l2 = msg.payload.grid_l2||0\nvar l3 = msg.payload.grid_l3||0\nvar ac3 = msg.payload.ac_l3||0\nvar day = flow.get(\"day\")||0\nvar hp = flow.get(\"heatpump\")||2400\nvar soc = msg.payload.soc||0\n/*var fd = flow.get(\"feed\")||1 */\nvar fd = msg.payload.feed||0\nvar rly2 = msg.payload.relay2||0\nmsg.payload.day = day\nmsg.payload.feed = fd\nif (ac3 < hp/2 && rly2 == 0) {\n\tif (fd == 0 && day == \"1\") {\n\t\tif (l1+l2+l3+hp < 0) {\n\t\t\tcounter +=2\n\t\t} else {\n\t\t\tcounter -=3\n\t\t}\n\t} else {\n\t\tif (fd == 1 && soc > 66) {\n\t\t\tcounter +=2\n\t\t} else {\n\t\t\tcounter -=3\n\t\t}\n\t}\n}\nif (rly2 == 1) {\n\tif (fd == 0 && day == \"1\") {\n\t\tif (l1+l2+l3 < -100 && soc > 90) {\n\t\t\tcounter +=1\n\t\t} else {\n\t\t    \n\t\t\tcounter -=1\n\t\t}\n\t} else {\n\t\tif (fd == 1 && soc > 66) {\n\t\t\tcounter +=1\n\t\t} else {\n\t\t\tcounter -=1\n\t\t}\n\t}\n}\nif (fd == 0 && day == 0) {counter -= 3 }\n\nflow.set(\"counter\", counter)\nmsg.payload.counter = counter\nreturn msg\n",
        "outputs": 1,
        "timeout": "",
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 920,
        "y": 460,
        "wires": [
            [
                "e258b4b208e7a416"
            ]
        ]
    },
    {
        "id": "e258b4b208e7a416",
        "type": "switch",
        "z": "48be19420f90dfab",
        "g": "bd1e8a80da2037b3",
        "name": "switch",
        "property": "payload.counter",
        "propertyType": "msg",
        "rules": [
            {
                "t": "gte",
                "v": "200",
                "vt": "str"
            },
            {
                "t": "lte",
                "v": "-200",
                "vt": "str"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 2,
        "x": 750,
        "y": 580,
        "wires": [
            [
                "7d55ec160def7c15"
            ],
            [
                "024e3d8110ddb48d"
            ]
        ]
    },
    {
        "id": "ef09d94eb83fb90c",
        "type": "victron-output-relay",
        "z": "48be19420f90dfab",
        "g": "bd1e8a80da2037b3",
        "service": "com.victronenergy.system/0",
        "path": "/Relay/1/State",
        "serviceObj": {
            "service": "com.victronenergy.system/0",
            "name": "Venus device"
        },
        "pathObj": {
            "path": "/Relay/1/State",
            "type": "enum",
            "name": "Venus relay 2 state",
            "enum": {
                "0": "Open",
                "1": "Closed"
            },
            "writable": true
        },
        "initial": "",
        "name": "Venus Relay 2",
        "onlyChanges": false,
        "x": 1140,
        "y": 600,
        "wires": []
    },
    {
        "id": "7d55ec160def7c15",
        "type": "function",
        "z": "48be19420f90dfab",
        "g": "bd1e8a80da2037b3",
        "name": "close_relay",
        "func": "var counter = flow.get(\"counter\")||0\ncounter = counter / 2\nflow.set(\"counter\",counter)\n/*msg.payload = 1\nreturn msg*/\nreturn {payload: 1}\n",
        "outputs": 1,
        "timeout": "",
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 930,
        "y": 560,
        "wires": [
            [
                "ef09d94eb83fb90c",
                "d02f91807bb663e1"
            ]
        ]
    },
    {
        "id": "024e3d8110ddb48d",
        "type": "function",
        "z": "48be19420f90dfab",
        "g": "bd1e8a80da2037b3",
        "name": "open_relay",
        "func": "var counter = flow.get(\"counter\")||0\ncounter = counter / 2\nflow.set(\"counter\",counter)\n/*msg.payload = 0\nreturn msg*/\nreturn {payload: 0}\n",
        "outputs": 1,
        "timeout": "",
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 930,
        "y": 640,
        "wires": [
            [
                "ef09d94eb83fb90c",
                "d02f91807bb663e1"
            ]
        ]
    },
    {
        "id": "d02f91807bb663e1",
        "type": "debug",
        "z": "48be19420f90dfab",
        "g": "bd1e8a80da2037b3",
        "name": "debug 1",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "true",
        "targetType": "full",
        "statusVal": "",
        "statusType": "auto",
        "x": 1120,
        "y": 540,
        "wires": []
    },
    {
        "id": "2ad4395fb244c4cd",
        "type": "debug",
        "z": "48be19420f90dfab",
        "g": "bd1e8a80da2037b3",
        "name": "debug 2",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "statusVal": "",
        "statusType": "auto",
        "x": 1120,
        "y": 380,
        "wires": []
    },
    {
        "id": "472cd06c73651b15",
        "type": "victron-input-relay",
        "z": "48be19420f90dfab",
        "g": "bd1e8a80da2037b3",
        "service": "com.victronenergy.system/0",
        "path": "/Relay/1/State",
        "serviceObj": {
            "service": "com.victronenergy.system/0",
            "name": "Venus system"
        },
        "pathObj": {
            "path": "/Relay/1/State",
            "type": "enum",
            "name": "Venus relay 2 state",
            "enum": {
                "0": "Open",
                "1": "Closed"
            }
        },
        "initial": "",
        "name": "",
        "onlyChanges": false,
        "x": 220,
        "y": 680,
        "wires": [
            [
                "41cda282d6b91926"
            ]
        ]
    },
    {
        "id": "41cda282d6b91926",
        "type": "change",
        "z": "48be19420f90dfab",
        "g": "bd1e8a80da2037b3",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "topic",
                "pt": "msg",
                "to": "relay2",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 510,
        "y": 680,
        "wires": [
            [
                "87ac239b3f969651"
            ]
        ]
    },
    {
        "id": "b54e73d030ebb663",
        "type": "bigtimer",
        "z": "48be19420f90dfab",
        "g": "8723590cdc0e7405",
        "outtopic": "",
        "outpayload1": "1",
        "outpayload2": "0",
        "name": "prepare for weekend",
        "comment": "",
        "lat": "my_lat",
        "lon": "my_lon",
        "starttime": "5003",
        "endtime": "5004",
        "starttime2": 0,
        "endtime2": 0,
        "startoff": 0,
        "endoff": 0,
        "startoff2": 0,
        "endoff2": 0,
        "offs": "1",
        "outtext1": "",
        "outtext2": "",
        "timeout": 1440,
        "sun": true,
        "mon": false,
        "tue": false,
        "wed": false,
        "thu": false,
        "fri": true,
        "sat": true,
        "jan": true,
        "feb": true,
        "mar": true,
        "apr": true,
        "may": true,
        "jun": true,
        "jul": true,
        "aug": true,
        "sep": true,
        "oct": true,
        "nov": true,
        "dec": true,
        "day1": 0,
        "month1": 0,
        "day2": 0,
        "month2": 0,
        "day3": 0,
        "month3": 0,
        "day4": 0,
        "month4": 0,
        "day5": 0,
        "month5": 0,
        "day6": 0,
        "month6": 0,
        "day7": 0,
        "month7": 0,
        "day8": 0,
        "month8": 0,
        "day9": 0,
        "month9": 0,
        "day10": 0,
        "month10": 0,
        "day11": 0,
        "month11": 0,
        "day12": 0,
        "month12": 0,
        "d1": 0,
        "w1": 0,
        "d2": 0,
        "w2": 0,
        "d3": 0,
        "w3": 0,
        "d4": 0,
        "w4": 0,
        "d5": 0,
        "w5": 0,
        "d6": 0,
        "w6": 0,
        "xday1": 0,
        "xmonth1": 0,
        "xday2": 0,
        "xmonth2": 0,
        "xday3": 0,
        "xmonth3": 0,
        "xday4": 0,
        "xmonth4": 0,
        "xday5": 0,
        "xmonth5": 0,
        "xday6": 0,
        "xmonth6": 0,
        "xday7": 0,
        "xmonth7": 0,
        "xday8": 0,
        "xmonth8": 0,
        "xday9": 0,
        "xmonth9": 0,
        "xday10": 0,
        "xmonth10": 0,
        "xday11": 0,
        "xmonth11": 0,
        "xday12": 0,
        "xmonth12": 0,
        "xd1": 0,
        "xw1": 0,
        "xd2": 0,
        "xw2": 0,
        "xd3": 0,
        "xw3": 0,
        "xd4": 0,
        "xw4": 0,
        "xd5": 0,
        "xw5": 0,
        "xd6": 0,
        "xw6": 0,
        "suspend": false,
        "random": false,
        "randon1": false,
        "randoff1": false,
        "randon2": false,
        "randoff2": false,
        "repeat": false,
        "atstart": false,
        "odd": false,
        "even": false,
        "x": 340,
        "y": 200,
        "wires": [
            [
                "a9fe5716d33704e7"
            ],
            [],
            []
        ]
    },
    {
        "id": "a9fe5716d33704e7",
        "type": "change",
        "z": "48be19420f90dfab",
        "g": "8723590cdc0e7405",
        "name": "weekend",
        "rules": [
            {
                "t": "set",
                "p": "weekend",
                "pt": "flow",
                "to": "payload",
                "tot": "msg"
            },
            {
                "t": "set",
                "p": "day",
                "pt": "flow",
                "to": "payload",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 560,
        "y": 200,
        "wires": [
            [
                "a4896c9b2b6c9ebf"
            ]
        ]
    },
    {
        "id": "a4896c9b2b6c9ebf",
        "type": "bigtimer",
        "z": "48be19420f90dfab",
        "g": "8723590cdc0e7405",
        "outtopic": "",
        "outpayload1": "1",
        "outpayload2": "0",
        "name": "Daylight",
        "comment": "",
        "lat": "my_lat",
        "lon": "my_lon",
        "starttime": "5002",
        "endtime": "5004",
        "starttime2": "0",
        "endtime2": 0,
        "startoff": "-60",
        "endoff": "1",
        "startoff2": 0,
        "endoff2": 0,
        "offs": "1",
        "outtext1": "",
        "outtext2": "",
        "timeout": 1440,
        "sun": true,
        "mon": true,
        "tue": true,
        "wed": true,
        "thu": true,
        "fri": true,
        "sat": true,
        "jan": true,
        "feb": true,
        "mar": true,
        "apr": true,
        "may": true,
        "jun": true,
        "jul": true,
        "aug": true,
        "sep": true,
        "oct": true,
        "nov": true,
        "dec": true,
        "day1": 0,
        "month1": 0,
        "day2": 0,
        "month2": 0,
        "day3": 0,
        "month3": 0,
        "day4": 0,
        "month4": 0,
        "day5": 0,
        "month5": 0,
        "day6": 0,
        "month6": 0,
        "day7": 0,
        "month7": 0,
        "day8": 0,
        "month8": 0,
        "day9": 0,
        "month9": 0,
        "day10": 0,
        "month10": 0,
        "day11": 0,
        "month11": 0,
        "day12": 0,
        "month12": 0,
        "d1": 0,
        "w1": 0,
        "d2": 0,
        "w2": 0,
        "d3": 0,
        "w3": 0,
        "d4": 0,
        "w4": 0,
        "d5": 0,
        "w5": 0,
        "d6": 0,
        "w6": 0,
        "xday1": 0,
        "xmonth1": 0,
        "xday2": 0,
        "xmonth2": 0,
        "xday3": 0,
        "xmonth3": 0,
        "xday4": 0,
        "xmonth4": 0,
        "xday5": 0,
        "xmonth5": 0,
        "xday6": 0,
        "xmonth6": 0,
        "xday7": 0,
        "xmonth7": 0,
        "xday8": 0,
        "xmonth8": 0,
        "xday9": 0,
        "xmonth9": 0,
        "xday10": 0,
        "xmonth10": 0,
        "xday11": 0,
        "xmonth11": 0,
        "xday12": 0,
        "xmonth12": 0,
        "xd1": 0,
        "xw1": 0,
        "xd2": 0,
        "xw2": 0,
        "xd3": 0,
        "xw3": 0,
        "xd4": 0,
        "xw4": 0,
        "xd5": 0,
        "xw5": 0,
        "xd6": 0,
        "xw6": 0,
        "suspend": false,
        "random": false,
        "randon1": false,
        "randoff1": false,
        "randon2": false,
        "randoff2": false,
        "repeat": false,
        "atstart": true,
        "odd": false,
        "even": false,
        "x": 880,
        "y": 200,
        "wires": [
            [
                "9ae3fe0270f3f334"
            ],
            [],
            []
        ]
    },
    {
        "id": "9ae3fe0270f3f334",
        "type": "change",
        "z": "48be19420f90dfab",
        "g": "8723590cdc0e7405",
        "name": "day",
        "rules": [
            {
                "t": "set",
                "p": "day",
                "pt": "flow",
                "to": "payload",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 1050,
        "y": 200,
        "wires": [
            []
        ]
    },
    {
        "id": "c01e509b4ff3a7ef",
        "type": "victron-input-ess",
        "z": "48be19420f90dfab",
        "g": "bd1e8a80da2037b3",
        "service": "com.victronenergy.settings",
        "path": "/Settings/CGwacs/PreventFeedback",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "Venus settings"
        },
        "pathObj": {
            "path": "/Settings/CGwacs/PreventFeedback",
            "type": "enum",
            "name": "Don’t feed excess AC-coupled PV into grid",
            "enum": {
                "0": "Feed excess AC-tied PV into grid",
                "1": "Don’t feed excess AC-tied PV into the grid"
            }
        },
        "initial": "",
        "name": "",
        "onlyChanges": false,
        "x": 290,
        "y": 740,
        "wires": [
            [
                "0dedbfe531f498f8"
            ]
        ]
    },
    {
        "id": "0dedbfe531f498f8",
        "type": "change",
        "z": "48be19420f90dfab",
        "g": "bd1e8a80da2037b3",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "topic",
                "pt": "msg",
                "to": "feed",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 590,
        "y": 740,
        "wires": [
            [
                "87ac239b3f969651"
            ]
        ]
    },
    {
        "id": "2eb4f78b7d18299f",
        "type": "inject",
        "z": "48be19420f90dfab",
        "g": "8723590cdc0e7405",
        "name": "",
        "props": [
            {
                "p": "payload"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "0",
        "payloadType": "num",
        "x": 150,
        "y": 140,
        "wires": [
            [
                "b54e73d030ebb663"
            ]
        ]
    },
    {
        "id": "474eae43ec161d17",
        "type": "inject",
        "z": "48be19420f90dfab",
        "g": "8723590cdc0e7405",
        "name": "",
        "props": [
            {
                "p": "payload"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "1",
        "payloadType": "num",
        "x": 150,
        "y": 260,
        "wires": [
            [
                "b54e73d030ebb663"
            ]
        ]
    },
    {
        "id": "2482af2929a7fb4b",
        "type": "inject",
        "z": "48be19420f90dfab",
        "g": "8723590cdc0e7405",
        "name": "",
        "props": [
            {
                "p": "payload"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "1",
        "payloadType": "num",
        "x": 710,
        "y": 260,
        "wires": [
            [
                "a4896c9b2b6c9ebf"
            ]
        ]
    },
    {
        "id": "45395fb4c98287fe",
        "type": "inject",
        "z": "48be19420f90dfab",
        "g": "8723590cdc0e7405",
        "name": "",
        "props": [
            {
                "p": "payload"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "0",
        "payloadType": "num",
        "x": 710,
        "y": 140,
        "wires": [
            [
                "a4896c9b2b6c9ebf"
            ]
        ]
    },
    {
        "id": "639e7a61b1ecf620",
        "type": "inject",
        "z": "48be19420f90dfab",
        "g": "bd1e8a80da2037b3",
        "name": "",
        "props": [
            {
                "p": "payload"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "1",
        "payloadType": "num",
        "x": 1110,
        "y": 440,
        "wires": [
            [
                "7d55ec160def7c15"
            ]
        ]
    }
]

Já mám třeba kombinaci podlahového topení (bohužel elektrické odporové dráty) s topením klimatizací - je tam “chytristika” co vybírá ten správný zdroj v tu danou chvíli.

Světla jsou v celém domě řízena Loxonem skrze pohybová čidla Jablotron - takže děti když jsou kdykoliv někde na návštěvě, tak neumí nikde zhasínat . . .

Mno a pak ty “okrajové věci” kterou jsou paradoxně ale asi nejvíce praktické:

  • automatické zavlažování trávníků
  • automatické zavlažování skleníku
  • automatické přepínání zdroje zvlažování z jímky a z řadu na základě hladiny v jímce
  • automatické zavírání garáže a vrat na základě západu slunce - tzn. přes den nechává otevřeno, protože děti běhají sem tam, ale jakmile se setmí, tak vše zavře.
  • udělal jsem plnou automatizaci bazénu - měří to PH, ORP a podle toho spíná salinátor atd.
  • boost rekuperace podle vlhkosti v koupelnách
  • bojler sepínání v závislosti na výkonu FVE a nabití baterky - plus měřím teplotu, takže reguluji teplotu podle ročního období
  • circulace teplé vody na základě mnoha pravidel :slight_smile:
  • ventilace sauny podle vlhkosti uvnitř a dalších parametrů - prostě aby se tam netvořila plíseň

asi jsem na mnoho zapomněl, ale pokud ano, už to asi nebude důležité :slight_smile:

1 Like

díky - ta jímka je zajímavá - akorát jsem při stavbě zahradního domku přidával druhou nádrž a budu přečerpávat. Ale volil jsem toto - mám objednáno :slight_smile: HRH-9 • Eshop ELKO EP
to zavření vrat pro jistotu je zajímavý nápad - už se mi hodněkrát stalo, že větrám celou noc :slight_smile:

Filtrace bazénu. Vezme si to kolem 500 W a měla by běžet 2-4 hodiny denně, klidně více - podle venkovní teploty. V zásadě je ale jedno, kdy to běží. Dělá to tak 300-400 kWh za rok klidně.
A možná tepelné čerpadlo v bazénu - to si vezme tak 2 kW, ale na jaře nemá smysl topit (moc velká zima), stejně jako uprostřed léta (moc velké teplo).

Taky jsem se tomu bránil, pak jsem zaintegroval první věc do Home Assistenta a začlo se to nabalovat :slight_smile:. Člověk si musí chtít s tím hrát a pak má možnost kombinovat různé systémy mezi sebou.

Myčka - spuštění v noci když mám NT a je levná elektřina, stačí zapnout remote start místo spuštění programu a Home Asistant to pustí ve správný okamžik. Pračku máme hloupou a ručně se to nikomu nastavovat nechce.

Světla - automatizace je super na propojení různých systémů, třeba rozsvítit příjezdovou cestu když se otevřou vrata nebo když kamera detekuje osobu nebo auto. Chytrá světla mi taky vyřešila umístění vypínačů bez sekání do zdí nebo spínání světel na více okruzích jedním vypínačem.

Topení nebo větrání - na jaře přitápění ve skleníku, větrání sklepa podle vlhkosti.

Bazén - měření pH, ORP a teploty podle toho spouštění filtrace, elektrolyzéru a ohřevu podle čidel a výroby FVE. Tohle byla asi největší úspora času a přidání komfortu

Zalévání - přepínám vodu z různých zdrojů podle hladiny, zalévání podle vlhkosti půdy, detekce příliš dlouho puštěného čerpadla na zalévání (typicky děti někde nedovřely kohoutek).

Elektřina - nabíjení baterky za levno, spotřeba ze sítě když to dává smysl, vypínání přetoků, ohřev bojleru z přebytků nebo když je hodně levná elektřina (jinak plynem), ohřev bazénu z přebytků, atd. Tohle by třeba časem mohl dělat Proteus až bude nějaké API pro spínání spotřeby (aktuálně je pro úplně nepoužitelný protože ČEZ Distribuce někde ztratil moje časy NT, takže si je Proteus nemá jak zjistit a ručně zadat to nejde).

Jen ze zvědavosti - proč bohužel elektrické odporové dráty?

Mám v HA hromadu automatizací - od jednoduchých notifikačních (dojela myčka, pračka, sušička; na svoz odpadu, došla voda ve zvlhčovači, lednice nebo mrazák chladí nezvykle dlouho), přes řízení světel (pohybovkou, dveřním čidlem, bezdrátovým tlačítkem), po ovládání topení (žebřík v koupelně), žaluzií (v létě dle času a teploty v místnosti naklápím určité žaluzie), odvětrání koupelny, řízení zvlhčovačů, vypínání určitých spotřebičů když nejsme doma a asi jsem něco i zapomněl.

Bohužel kvůli účinnosti - u drátů je max 1:1, ale tepelná čerpadla dosahují 4:1 a více. Tzn. vytápění by mohlo být více pokryto z toho mála co FVE více vyrobí, tzn. celková spotřeba domácnosti nižší (myslím si že výrazně).

1 Like