Vylepšení Proteus

Nemůžu Proteus najít na GitHubu, chtěl jsem pár drobností přidat, s Reactem umím, ale zřejmě to nemáte veřejné.
Napadlo mě:

  • přidat geolokační api pro souřadnice instalace
  • gravatar pro ikonu

A to nejdůležitější, nabíjet elektromobil když je levná/záporná cena, to si asi budu muset napsat sám v HomeAssistentu

Proteus zatím veřejně nemáme, ale chtěli bychom mít jednotlivé konektory na zařízení… O jaké auto se jedná? Budete ovládat přes wallbox nebo přes auto?

Nechcete se zapojit do našeho beta testingu nových funkcí proteuse? Vidím, že máte u nás Victron pro který to vše stavíme :slight_smile:

1 Like

Vážený pane Hicle, ano prosím, testování já rád. Pracuju jako React programátor.

Mám Hyundai Kona 64 kWh, Victron wallboxy. Na automatiku dobíjím z přebytků, ale v zimě bych dobíjel podle spotu. Momentálně jsem ve výpovědní lhůtě u ČEZ, ale do těch 3 měsíců bych to chtěl mít odladěné pro spot

Dělám i videa: https://youtu.be/wtjJ73gip68

nabíjení ovládám z 90% wallboxem, buď pomocí VRM portálu, nebo přes webovou stránku wallboxu.

Také bych se rád zapojil do beta testingu. Mám Victron, wallbox Victron, 3* AC coupling Fronius, TČ Nibe. Diky

Aby to fungovalo 100% a s wallboxem, tak potrebujeme implentovat droubnou upravu. Poslete mi, prosim, do zpravy vas email - pridam vas tam. Diky

vaclavbasek@gmail.com

1 Like

Dobrý den, pochvala za práci. Mám sazbu D25d, to znamená, že mám 0:00 - 6:00 sazbu za distribuci 180 Kč/Kw a jinak mám sazbu 1766 kW/Kw. Jinými slovy je rozdíl v ceně distribuce mnohdy větší než v ceně silové elektřiny. Dá se nějak vyřešit úprava ceny včetně distribuce, aby to dávalo smysl? Děkuji.

Jak pise Tygr, ta poloha by pomohla. Obvykle se totiz zacina zemepisnou sirkou a pak delkou. V Proteusu je to naopak a tak jsem mel nepozornosti FVE par dni nekde v australii :grinning:

Btw tech vylepseni muze byt spoustu, treba vypinani krivek v grafu. Kdyz uz plan je v tabulce tak nejak barevne odlisit ruzne rezimy FVE, promitnout tyto data treba do grafu, tenka appka do mobilu. Ale chapu, ze vse je beta zatim.

Taky nerozumim moc dvema predikcim v jednom grafu u spotreby i vyroby. Neni tam popisek.

Ale diky moc za počin.

Bylo by fajn, kdyby Proteus uměl importovat číselník časů NT když má člověk EV nebo TČ. Ten rozdíl je taky významný. @jan.hicl nějaké úvahy tímto směrem? Díky moc za vaši práci.

Také děkuji za super práci. možná v návaznosti na různé návrhy na vylepšení by stálo za to před tím, než se rozhodne o implementaci alespoň umožnit nějaké externí přepínání modů Proteus. Pak se spousta věcí dá udělat v rámci nodered jako doplněk.
Já například mám Proteus, ale v případě osvitu chci dát TČ povel na nahřátí vody případně natopení. A to mám v Nodered. Měl jsem u DESS i třeba stav, kdy jsem před víkendem změnil min SOC na vyšší hodnotu a jakoby “přednabil” baterku, protože jsem čekal větší spotřebu. Což šlo, jelikož stačilo přepnout DESS mode na NodeRED, nastavit hodnoty a přepnout zpět. Tak něco podobného. Spousta lidí by pak mohla udělat nějaký workaround, než by došlo právě na implementaci.

EDIT: Ještě jsem přemýšlel, jak to udělat univerzálně, ne jen na Victron - nejsem žádný programátor, NodeRED jsem zbastlil jako svůj první pokus, ale napadá mě nějaká forma webhooku? Ale to by asi byl potřeba token a podobně a to nevím, jak by se v NodeRED dělalo :slight_smile: Respektive jak by se token vyžádal, aby se dal webhook zavolat. Vlastně podle mě stačí 2 vstupy pro Protheus - min SOC a mode.(auto, nabít baterii,normal, atd.)

1 Like

Jelikož sám si dokážu domácnost zautomatizovat a spotřebovávat přebytky doma (klima, boiler, auto), tak Protea vypínám. @jan.hicl je možné přidat funkci pouze pro hlídání/blokování záporných cen (vč. poplatku) bez řízení FVE? V zimě určitě Proteus, v létě si elektriku zbaštím sám. Díky moc

na zaporne ceny nepotrebujes proteus, je funkcni flow v node red. mas ho nize.
jen si uprav cenu ve funkci “buypricenow” ja tam mam 500 a pripadne logiku a konkretne co chces vypinat. ja mam AC Coupling s Froniusem, takze vypinam AC feed in.

[
{
“id”: “5d22477b21ed1b65”,
“type”: “tab”,
“label”: “pretoky”,
“disabled”: false,
“info”: “”,
“env”:
},
{
“id”: “74b238ae4d159526”,
“type”: “function”,
“z”: “5d22477b21ed1b65”,
“name”: “Get Date”,
“func”: “const date = new Date();\nconst isodate = date.toISOString().split(‘T’)[0];\nreturn { payload:isodate };\n//[{"StartDate":"2023-01-01","EndDate":"2023-01-01"}]”,
“outputs”: 1,
“noerr”: 0,
“initialize”: “”,
“finalize”: “”,
“libs”: ,
“x”: 130,
“y”: 320,
“wires”: [
[
“6cc8f0d1e4bc07fe”
]
],
“icon”: “node-red/timer.svg”
},
{
“id”: “6cc8f0d1e4bc07fe”,
“type”: “template”,
“z”: “5d22477b21ed1b65”,
“name”: “Get Sentence”,
“field”: “payload”,
“fieldType”: “msg”,
“format”: “json”,
“syntax”: “mustache”,
“template”: “[{"StartDate":"{{payload}}","EndDate":"{{payload}}"}]”,
“output”: “str”,
“x”: 110,
“y”: 360,
“wires”: [
[
“818bca5488b88d1b”
]
],
“icon”: “node-red/comment.svg”
},
{
“id”: “818bca5488b88d1b”,
“type”: “json”,
“z”: “5d22477b21ed1b65”,
“name”: “Convert”,
“property”: “payload”,
“action”: “”,
“pretty”: false,
“x”: 130,
“y”: 400,
“wires”: [
[
“bd7f166404ea3ff9”
]
],
“icon”: “node-red/envelope.svg”
},
{
“id”: “60dd70d7a71eb3ea”,
“type”: “debug”,
“z”: “5d22477b21ed1b65”,
“name”: “Buy Price Now”,
“active”: false,
“tosidebar”: false,
“console”: false,
“tostatus”: true,
“complete”: “payload”,
“targetType”: “msg”,
“statusVal”: “payload”,
“statusType”: “auto”,
“x”: 730,
“y”: 200,
“wires”:
},
{
“id”: “70a883496837ba4e”,
“type”: “function”,
“z”: “5d22477b21ed1b65”,
“name”: “Buy Price now?”,
“func”: “const now = new Date();\nconst HaM = now.getHours();\nvar data = (msg.payload.Result.Item[HaM].Price)-500;\n\nreturn {payload: data}\n//return {payload: -123}\n\n\n\n//{"Result":{"Item":[{"Date":"2023-01-11T00:00:00.000Z","Hour":"1","Price":"467.23","Volume":"2243.1"},{"Date":"2023-01-11T00:00:00.000Z","Hour":"2","Price":"130.24","Volume":"2186.7"},{"Date":"2023-01-11T00:00:00.000Z","Hour":"3","Price":"189.72","Volume":"2259.7"},{"Date":"2023-01-11T00:00:00.000Z","Hour":"4","Price":"47.01","Volume":"2319.9"},{"Date":"2023-01-11T00:00:00.000Z","Hour":"5","Price":"363.37","Volume":"2246.5"},{"Date":"2023-01-11T00:00:00.000Z","Hour":"6","Price":"1367.14","Volume":"1925.6"},{"Date":"2023-01-11T00:00:00.000Z","Hour":"7","Price":"2731.89","Volume":"2645.1"},{"Date":"2023-01-11T00:00:00.000Z","Hour":"8","Price":"3727.51","Volume":"2602.4"},{"Date":"2023-01-11T00:00:00.000Z","Hour":"9","Price":"3981.99","Volume":"2993.8"},{"Date":"2023-01-11T00:00:00.000Z","Hour":"10","Price":"4259.02","Volume":"3067.6"},{"Date":"2023-01-11T00:00:00.000Z","Hour":"11","Price":"3866.62","Volume":"2747.5"},{"Date":"2023-01-11T00:00:00.000Z","Hour":"12","Price":"3742.14","Volume":"2658.0"},{"Date":"2023-01-11T00:00:00.000Z","Hour":"13","Price":"3785.55","Volume":"2605.1"},{"Date":"2023-01-11T00:00:00.000Z","Hour":"14","Price":"3430.57","Volume":"2384.0"},{"Date":"2023-01-11T00:00:00.000Z","Hour":"15","Price":"3545.94","Volume":"2522.5"},{"Date":"2023-01-11T00:00:00.000Z","Hour":"16","Price":"3553.62","Volume":"2533.7"},{"Date":"2023-01-11T00:00:00.000Z","Hour":"17","Price":"3672.34","Volume":"2579.0"},{"Date":"2023-01-11T00:00:00.000Z","Hour":"18","Price":"3788.91","Volume":"2608.2"},{"Date":"2023-01-11T00:00:00.000Z","Hour":"19","Price":"3722.95","Volume":"2677.6"},{"Date":"2023-01-11T00:00:00.000Z","Hour":"20","Price":"3741.66","Volume":"2710.1"},{"Date":"2023-01-11T00:00:00.000Z","Hour":"21","Price":"3505.17","Volume":"2840.5"},{"Date":"2023-01-11T00:00:00.000Z","Hour":"22","Price":"3070.32","Volume":"2802.7"},{"Date":"2023-01-11T00:00:00.000Z","Hour":"23","Price":"2968.86","Volume":"2841.7"},{"Date":"2023-01-11T00:00:00.000Z","Hour":"24","Price":"2478.13","Volume":"3051.0"}]}}\n”,
“outputs”: 1,
“noerr”: 0,
“initialize”: “”,
“finalize”: “”,
“libs”: ,
“x”: 540,
“y”: 220,
“wires”: [
[
“60dd70d7a71eb3ea”,
“f11888f79371742f”
]
],
“icon”: “font-awesome/fa-money”
},
{
“id”: “f11888f79371742f”,
“type”: “function”,
“z”: “5d22477b21ed1b65”,
“name”: “Feed in set”,
“func”: “var feedin = -1;\nvar price = msg.payload;\nif (price > 0) {\nfeedin = 0;\n// block of code to be executed if the condition is true\n} else {\nfeedin = 1;\n// block of code to be executed if the condition is false\n}\n\nreturn {payload: feedin}”,
“outputs”: 1,
“noerr”: 0,
“initialize”: “”,
“finalize”: “”,
“libs”: ,
“x”: 540,
“y”: 280,
“wires”: [
[
“0da1a139fed22d6b”,
“8bbaa1ff23391a36”
]
]
},
{
“id”: “0da1a139fed22d6b”,
“type”: “debug”,
“z”: “5d22477b21ed1b65”,
“name”: “Feed in”,
“active”: false,
“tosidebar”: false,
“console”: false,
“tostatus”: true,
“complete”: “payload”,
“targetType”: “msg”,
“statusVal”: “payload”,
“statusType”: “auto”,
“x”: 710,
“y”: 280,
“wires”:
},
{
“id”: “8bbaa1ff23391a36”,
“type”: “victron-output-ess”,
“z”: “5d22477b21ed1b65”,
“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”
},
“writable”: true
},
“initial”: “”,
“name”: “ESS Feed-in set”,
“onlyChanges”: true,
“x”: 620,
“y”: 400,
“wires”:
},
{
“id”: “7e4cd656.31676”,
“type”: “inject”,
“z”: “5d22477b21ed1b65”,
“name”: “Every Second”,
“props”: [
{
“p”: “payload”
},
{
“p”: “topic”,
“vt”: “str”
}
],
“repeat”: “1”,
“crontab”: “”,
“once”: false,
“onceDelay”: 0.1,
“topic”: “”,
“payload”: “”,
“payloadType”: “date”,
“x”: 130,
“y”: 200,
“wires”: [
[
“d9dc9f17.84ef68”
]
]
},
{
“id”: “8183d8ac.01c1e”,
“type”: “rbe”,
“z”: “5d22477b21ed1b65”,
“name”: “Is change”,
“func”: “rbe”,
“gap”: “”,
“start”: “”,
“inout”: “out”,
“septopics”: true,
“property”: “payload”,
“topi”: “topic”,
“x”: 130,
“y”: 280,
“wires”: [
[
“74b238ae4d159526”
]
]
},
{
“id”: “d9dc9f17.84ef68”,
“type”: “function”,
“z”: “5d22477b21ed1b65”,
“name”: “Get Hour”,
“func”: “function gethour() {\n var date = new Date();\n var hour = ("0"+date.getHours()).substr(-2);\n return hour;\n}\n\nvar hour = gethour();\n\nreturn { payload : hour };”,
“outputs”: 1,
“noerr”: 0,
“initialize”: “”,
“finalize”: “”,
“libs”: ,
“x”: 130,
“y”: 240,
“wires”: [
[
“8183d8ac.01c1e”
]
]
},
{
“id”: “bd7f166404ea3ff9”,
“type”: “soap request”,
“z”: “5d22477b21ed1b65”,
“name”: “OTE portal”,
“topic”: “”,
“wsdl”: “5479529c397fa8a3”,
“method”: “GetDamPriceE”,
“x”: 360,
“y”: 200,
“wires”: [
[
“70a883496837ba4e”,
“bc8fb3c49fba0acb”
]
]
},
{
“id”: “bc8fb3c49fba0acb”,
“type”: “function”,
“z”: “5d22477b21ed1b65”,
“name”: “Price now?”,
“func”: “const now = new Date();\nconst HaM = now.getHours();\nvar data = (msg.payload.Result.Item[HaM].Price);\n\nreturn {payload: data}\n//return {payload: -123}\n\n\n\n//{"Result":{"Item":[{"Date":"2023-01-11T00:00:00.000Z","Hour":"1","Price":"467.23","Volume":"2243.1"},{"Date":"2023-01-11T00:00:00.000Z","Hour":"2","Price":"130.24","Volume":"2186.7"},{"Date":"2023-01-11T00:00:00.000Z","Hour":"3","Price":"189.72","Volume":"2259.7"},{"Date":"2023-01-11T00:00:00.000Z","Hour":"4","Price":"47.01","Volume":"2319.9"},{"Date":"2023-01-11T00:00:00.000Z","Hour":"5","Price":"363.37","Volume":"2246.5"},{"Date":"2023-01-11T00:00:00.000Z","Hour":"6","Price":"1367.14","Volume":"1925.6"},{"Date":"2023-01-11T00:00:00.000Z","Hour":"7","Price":"2731.89","Volume":"2645.1"},{"Date":"2023-01-11T00:00:00.000Z","Hour":"8","Price":"3727.51","Volume":"2602.4"},{"Date":"2023-01-11T00:00:00.000Z","Hour":"9","Price":"3981.99","Volume":"2993.8"},{"Date":"2023-01-11T00:00:00.000Z","Hour":"10","Price":"4259.02","Volume":"3067.6"},{"Date":"2023-01-11T00:00:00.000Z","Hour":"11","Price":"3866.62","Volume":"2747.5"},{"Date":"2023-01-11T00:00:00.000Z","Hour":"12","Price":"3742.14","Volume":"2658.0"},{"Date":"2023-01-11T00:00:00.000Z","Hour":"13","Price":"3785.55","Volume":"2605.1"},{"Date":"2023-01-11T00:00:00.000Z","Hour":"14","Price":"3430.57","Volume":"2384.0"},{"Date":"2023-01-11T00:00:00.000Z","Hour":"15","Price":"3545.94","Volume":"2522.5"},{"Date":"2023-01-11T00:00:00.000Z","Hour":"16","Price":"3553.62","Volume":"2533.7"},{"Date":"2023-01-11T00:00:00.000Z","Hour":"17","Price":"3672.34","Volume":"2579.0"},{"Date":"2023-01-11T00:00:00.000Z","Hour":"18","Price":"3788.91","Volume":"2608.2"},{"Date":"2023-01-11T00:00:00.000Z","Hour":"19","Price":"3722.95","Volume":"2677.6"},{"Date":"2023-01-11T00:00:00.000Z","Hour":"20","Price":"3741.66","Volume":"2710.1"},{"Date":"2023-01-11T00:00:00.000Z","Hour":"21","Price":"3505.17","Volume":"2840.5"},{"Date":"2023-01-11T00:00:00.000Z","Hour":"22","Price":"3070.32","Volume":"2802.7"},{"Date":"2023-01-11T00:00:00.000Z","Hour":"23","Price":"2968.86","Volume":"2841.7"},{"Date":"2023-01-11T00:00:00.000Z","Hour":"24","Price":"2478.13","Volume":"3051.0"}]}}\n”,
“outputs”: 1,
“noerr”: 0,
“initialize”: “”,
“finalize”: “”,
“libs”: ,
“x”: 750,
“y”: 160,
“wires”: [
[
“bba2f1336dc566d0”
]
],
“icon”: “font-awesome/fa-money”
},
{
“id”: “bba2f1336dc566d0”,
“type”: “debug”,
“z”: “5d22477b21ed1b65”,
“name”: “OTE Price Now”,
“active”: false,
“tosidebar”: false,
“console”: false,
“tostatus”: true,
“complete”: “payload”,
“targetType”: “msg”,
“statusVal”: “payload”,
“statusType”: “auto”,
“x”: 940,
“y”: 120,
“wires”:
},
{
“id”: “5479529c397fa8a3”,
“type”: “soap-config”,
“wsdl”: “http://www.ote-cr.cz/services/PublicDataService”,
“auth”: “0”,
“user”: “”,
“pass”: “”,
“key”: “”,
“cert”: “”,
“token”: “”
}
]