Victron a chytrý dům
V tomto příspěvku si ukážeme jak načítat informace z fotovoltaické elektrárny od firmy Victron. Propojíme se s jednotkou Cerbo přes MQTT. Na základě těchto hodnot pak můžeme spínat různé spotřebiče (topení, bojler atp.) a předejít plýtvání baterie pro velké spotřebiče v době, kdy nemusí běžet.
Hardware
Pi-Home - pokud nemáte, viz sekci Jak na to
Victron FVE
Software
OpenHAB 3
Postup:
1) Zjistíme si IP adresu cerba na našem routeru. Většinou v záložce DHCP, pro MikroTik například IP-> DHCP Server -> Leases. V tomto příkladě 10.1.1.125. Hledejte hostname einstein.
2) Zadáme IP do prohlížeče a zapneme v Settings -> Services funkci MQTT Broker
3) V OpenHAB v Settings ->Things přidáme nový MQTT Broker (New Thing -> MQTT -> MQTT Broker) a zadáme IP adresu Cerba. Jako identifikator dejte ccgx a pojmenujeme například MQTT CCGX
4) Připojíme se přes SSH na Raspberry
ssh openhabian@IP-ADRESA-RASPBERRY
5) Připojíme se přes SSH na Raspberry (naše fiktivní IP OpenHAB je 10.1.1.125)
mosquitt_sub -h 10.1.1.125 -t "#"
Pokud vše funguje, dostaneme VRM ID:
V dalších částech nahraďte ID svým vlastním ID.Jelikož MQTT na Cerbe jde po 60 vteřinách "spát", musíme stále obnovovat komunikaci a říct mu že někdo poslouchá. Na to stačí jednoduché pravidlo v Rules přímo v OpenHAB 3 UI. Přejděte do Rules, přidejte nové pravidlo, nějak jej pojmenujte, přepněte na záložku Code a zkopírujte níže uvedené pravidlo:
triggers:
- id: "1"
configuration:
cronExpression: 0/30 * * * * ? *
type: timer.GenericCronTrigger
conditions: []
actions:
- inputs: {}
id: "2"
configuration:
type: application/vnd.openhab.dsl.rule
script: |
val actions = getActions("mqtt", "mqtt:broker:ccgx")
actions.publishMQTT("R/c0619*****/system/0/Serial", "")
logInfo("Solar", "CCGX MQTT Keep Alive Timer fired!!")
type: script.ScriptAction
Zvolte Save. Pak je možné vytvořit nový Thing pro jednotlivé položky co chceme načítat do OpenHAB. Zvolíme opět Settings -> Things a ikonou + vytvoříme nový. Vyplňte dle vzoru níže, nezapomeňte v MQTT Broker vybrat výše vytvořený MQTT Victron.
Po vytvoření rozbalte záložku Code kde můžete nakopírovat následující channels:
UID: mqtt:topic:pihome:vitronthings
label: Victron Things
thingTypeUID: mqtt:topic
configuration: {}
bridgeUID: mqtt:broker:ccgx
channels:
- id: pv_battery_soc
channelTypeUID: mqtt:dimmer
label: Battery SoC
description: null
configuration:
stateTopic: N/c0619*******/system/0/Dc/Battery/Soc
transformationPattern: JSONPATH:$.value
- id: pv_battery_temp
channelTypeUID: mqtt:dimmer
label: Battery Temperature
description: null
configuration:
stateTopic: N/c0619*******/system/0/Dc/Battery/Temperature
transformationPattern: JSONPATH:$.value
- id: pv_battery_state
channelTypeUID: mqtt:dimmer
label: Battery State
description: null
configuration:
stateTopic: N/c0619*******/system/0/Dc/Battery/State
transformationPattern: JSONPATH:$.value
- id: pv_battery_voltage
channelTypeUID: mqtt:number
label: Battery Voltage
description: null
configuration:
formatBeforePublish: "%.4f"
stateTopic: N/c0619*******/system/0/Dc/Battery/Voltage
transformationPattern: JSONPATH:$.value
- id: pv_battery_power
channelTypeUID: mqtt:number
label: Battery Power
description: null
configuration:
formatBeforePublish: "%.4f"
stateTopic: N/c0619*******/system/0/Dc/Battery/Power
transformationPattern: JSONPATH:$.value
- id: pv_power_pv
channelTypeUID: mqtt:number
label: Solar Power
description: null
configuration:
stateTopic: N/c0619*******/system/0/Dc/Pv/Power
transformationPattern: JSONPATH:$.value
- id: pv_power_consumptionL1
channelTypeUID: mqtt:number
label: Consumption L1
description: null
configuration:
stateTopic: N/c0619*******/system/0/Ac/Consumption/L1/Power
transformationPattern: JSONPATH:$.value
- id: pv_power_consumptionL2
channelTypeUID: mqtt:number
label: Consumption L2
description: null
configuration:
stateTopic: N/c0619*******/system/0/Ac/Consumption/L2/Power
transformationPattern: JSONPATH:$.value
- id: pv_power_consumptionL3
channelTypeUID: mqtt:number
label: Consumption L3
description: null
configuration:
stateTopic: N/c0619*******/system/0/Ac/Consumption/L3/Power
transformationPattern: JSONPATH:$.value
- id: grid_power_consumptionL1
channelTypeUID: mqtt:number
label: Grid L1
description: null
configuration:
stateTopic: N/c0619*******/system/0/Ac/Grid/L1/Power
transformationPattern: JSONPATH:$.value
- id: grid_power_consumptionL2
channelTypeUID: mqtt:number
label: Grid L2
description: null
configuration:
stateTopic: N/c0619*******/system/0/Ac/Grid/L2/Power
transformationPattern: JSONPATH:$.value
- id: grid_power_consumptionL3
channelTypeUID: mqtt:number
label: Grid L3
description: null
configuration:
stateTopic: N/c0619*******/system/0/Ac/Grid/L3/Power
transformationPattern: JSONPATH:$.value
- id: pv0_power
channelTypeUID: mqtt:number
label: PV0 Power
description: null
configuration:
stateTopic: N/c0619*******/solarcharger/0/Yield/Power
transformationPattern: JSONPATH:$.value
- id: pv1_power
channelTypeUID: mqtt:number
label: PV1 Power
description: null
configuration:
stateTopic: N/c0619*******/solarcharger/1/Yield/Power
transformationPattern: JSONPATH:$.value
Po vytvoření Channels finálně zajděte do Settings -> Items -> Add Items from Textual Definition a vložte tyto řádky:
Group Victron "Victron" <energy> ["Inverter"]
Number pv_battery_soc "Battery SoC" <energy> (Victron) ["Energy"] { channel="mqtt:topic:pihome:vitronthings:pv_battery_soc" }
Number pv_battery_temp "Battery Temperature" <energy> (Victron) ["Temperature"] { channel="mqtt:topic:pihome:vitronthings:pv_battery_temp" }
Number pv_battery_state "Battery State" <energy> (Victron) ["Status"] { channel="mqtt:topic:pihome:vitronthings:pv_battery_state" }
Number pv_battery_voltage "Battery Voltage" <energy> (Victron) ["Voltage"] { channel="mqtt:topic:pihome:vitronthings:pv_battery_voltage" }
Number pv_battery_power "Battery Power" <energy> (Victron) ["Power"] { channel="mqtt:topic:pihome:vitronthings:pv_battery_power" }
Number pv_power_pv "Solar Power" <energy> (Victron) ["Power"] { channel="mqtt:topic:pihome:vitronthings:pv_power_pv" }
Number pv_power_consumptionL1 "Consumption L1" <energy> (Victron) ["Power"] { channel="mqtt:topic:pihome:vitronthings:pv_power_consumptionL1" }
Number pv_power_consumptionL2 "Consumption L2" <energy> (Victron) ["Power"] { channel="mqtt:topic:pihome:vitronthings:pv_power_consumptionL2" }
Number pv_power_consumptionL3 "Consumption L3" <energy> (Victron) ["Power"] { channel="mqtt:topic:pihome:vitronthings:pv_power_consumptionL3" }
Number grid_power_consumptionL1 "Grid L1" <energy> (Victron) ["Power"] { channel="mqtt:topic:pihome:vitronthings:grid_power_consumptionL1" }
Number grid_power_consumptionL2 "Grid L2" <energy> (Victron) ["Power"] { channel="mqtt:topic:pihome:vitronthings:grid_power_consumptionL2" }
Number grid_power_consumptionL3 "Grid L3" <energy> (Victron) ["Power"] { channel="mqtt:topic:pihome:vitronthings:grid_power_consumptionL3" }
Number pv0_power "PV0 Power" <energy> (Victron) ["Power"] { channel="mqtt:topic:pihome:vitronthings:pv0_power" }
Number pv1_power "PV1 Power" <energy> (Victron) ["Power"] { channel="mqtt:topic:pihome:vitronthings:pv1_power" }
vložte a máte hotovo! V OpenHAB nyní máte aktuální hodnoty z Victronu. Můžete na ně navazovat různá pravidla a získáváte také historii a grafy těchto hodnot v OpenHAB. Teď už je to jen na Vás jak si to zobrazíte v Dashboardu a jaké pravidla vytvoříte.
Za tipy využití budeme rádi v komentářích.
Kompletní seznam hodnot co lze vyčíst ke stažení zde:
Tip: U všech items lze přidat Add metadata -> State description a v položce Pattern změnit formátování.
Například hodnota %.1f W v poli Pattern znamená zaokrouhlení na jedno desetinné místo a jednotka Watt.
Přidat komentář