Smart Home a GoodWe

Smart Home a GoodWe

V příspěvku ukážeme krok po kroku jak komunikovat přímo se střídačem Goodwe a dostávát aktuální informace (narozdíl od SEMS portálu). Tyto informace jsou nezbytné pokud chceme v chytrém domě nějak reagovat na aktuální parametry např. spínání dodatečného chlazení nebo spínání zásuvky se zátěží.

Hardware

Pi-Home - pokud nemáte, viz sekci Jak na to

Software

OpenHAB 3

Postup:

1) Připojíme se přes SSH na Raspberry a ověříme zda máme nainstalovaný pip3 manager pro knihovny Python:

sudo apt install python3-pip

pak nainstalujeme knihovnu goodwe:

 sudo pip3 install goodwe

 

2) Přejdeme do adresáře skriptů pro OpenHAB, vytvoříme soubor goodwejson.py a otestujeme komunikaci:

cd /etc/openhab/scripts

sudo nano goodwejson.py

 

vložte zde tento obsah, nahraďte červeně označenou IP adresu vaši reálnou IP adresou střídače Goodwe

import asyncio
import goodwe

asyncdef get_runtime_data():
   ip_address = '192.168.1.100
   sensors = [
       "ppv",               # PV total power (W)
       "ppv1",              # PV1 power (W)
       "ppv2",              # PV2 power (W)
       "temperature",       # Inverter Temp Radiator
       "temperature_air",   # Inverter Temp Air
       "battery_temperature", # battery temperature
       "pbattery1",         # battery power (W) + = charging, - = discharging
       "battery_mode",      # 1=standby, 2=discharge, 3=charge
       "battery_soc",       # battery state of charge (%)
       "active_power",      # grid power (W): - = buy, + = sell
       "grid_in_out",       # 1=sell or export, 2=buy or import
       "house_consumption", # own consumption (W)
       "e_day",             # today's PV energy production (kWh)
       "e_total",           # total PV energy production (kWh)
       "meter_e_total_exp", # total sold (exported) energy (kWh)
       "meter_e_total_imp" # total bought or imported energy (kWh)
   ]

   inverter = await goodwe.connect(ip_address)
   runtime_data = await inverter.read_runtime_data()
   print(f'{{')
   for sensor in inverter.sensors():
       if sensor.id_ in runtime_data:
           if sensor.id_ in sensors:
               print(f'"{sensor.id_}": {runtime_data[sensor.id_]},')
   print(f'"end": 0')
   print(f"}}")

asyncio.run(get_runtime_data())


uložte klávesovou zkratkou CTRL+O, potvrďte Enterem a ukončete editor nano (CTRL+X)

Vyzkoušejte zda skript načte aktuální data, např:

python3 goodwejson.py

Goodwe aktuální data

 

3) Vytvořte do stejné složky ještě skript goodwe.sh:

sudo nano goodwe.sh

a vložte následující obsah:


#!/bin/bash
 
RESULT=$(python3 /etc/openhab/scripts/goodwejson.py)

echo"$RESULT"| tr '\n'' '


uložte klávesovou zkratkou CTRL+O, potvrďte Enterem a ukončete editor nano (CTRL+X)

Spustíme ještě nad souborem příkaz ohledně nastavení práv:

sudo chmod 744 goodwe.sh

a přídáme jej také do souboru exec.whitelist kvůli povolení spouštění:

sudo nano /etc/openhab/misc/exec.misc

měl by obsahovat následující:

# For security reasons all commands that are used by the exec binding or transformation need to be whitelisted.
# Every command needs to be listed on a separate line below.
bash /etc/openhab/scripts/goodwe.sh
 

uložte klávesovou zkratkou CTRL+O, potvrďte Enterem a ukončete editor nano (CTRL+X).

4) Vytvoříme .things soubor pro OpenHAB, kde definujeme skript a frekvenci spouštění (dle informací na fórech nechoďte pod 30 vteřin, může vám to pak blokovat SEMS portál)

sudo nano /etc/openhab/things/exec.things

Vložte zde obsah:

exec:command:goodwe_json [command="bash /etc/openhab/scripts/goodwe.sh",interval=30, timeout=10, autorun=false]

uložte klávesovou zkratkou CTRL+O, potvrďte Enterem a ukončete editor nano (CTRL+X).

5) Definujeme .items soubor pro OpenHAB - definice vlastních objektů

sudo nano /etc/openhab/items/goode.items

Vložte zde obsah:

String ZP_JSON_Out "[%s]" {channel="exec:command:goodwe_json:output"}
Number:Energy   zpPv              "zpPv [%.0f W]"        <energy>
Number:Energy   zpPv1             "zpPv [%.0f W]"        <energy>
Number:Energy   zpPv2             "zpPv [%.0f W]"        <energy>
Number:Energy   zpIRad            "zpPv [%.1f °C]"        <energy>
Number:Energy   zpIAir            "zpPv [%.1f ˚C]"        <energy>
Number:Energy   zpBatteryTemp     "zpPv [%.1f °C]"        <energy>
Number:Energy   zpBattery         "zpBattery [%.0f W]"   <battery>
Number          zpBatteryStatus   "zpBatteryStatus [%d]" <battery>
Number          zpSoc             "zpSoc [%d %]"        <battery>
Number:Energy   zpActivePower     "zpActivePower [%.0f W]" <energy>
Number          zpGridStatus      "zpGridStatus [%d]"
Number:Energy   zpConsumption     "zpConsumption [%.0f W]" <energy>
Number:Energy   zpEday            "zpEday [%.1f kWh]"    <energy>
Number:Energy   zpEtotal          "zpEtotal [%.0f kWh]"    <energy>
Number:Energy   zpEtotalExp       "zpEtotalExp [%.0f kWh]"    <energy>
Number:Energy   zpEtotalImp       "zpEtotalImp [%.0f kWh]"    <energy>

uložte klávesovou zkratkou CTRL+O, potvrďte Enterem a ukončete editor nano (CTRL+X).

 6) Finálně definujeme .rules soubor pro OpenHAB - transformace hodnot

sudo nano /etc/openhab/rules/goode.rules

Vložte zde obsah:

rule "ZP JSON transform"
when
    Item ZP_JSON_Out changed
then
    val Pv = transform("JSONPATH","$.ppv",ZP_JSON_Out.state.toString)
    val Pv1 = transform("JSONPATH","$.ppv1",ZP_JSON_Out.state.toString)
    val Pv2 = transform("JSONPATH","$.ppv2",ZP_JSON_Out.state.toString)
    val InvRadTemp = transform("JSONPATH","$.temperature",ZP_JSON_Out.state.toString)
    val InvAirTemp = transform("JSONPATH","$.temperature_air",ZP_JSON_Out.state.toString)
    val BatteryTemp = transform("JSONPATH","$.battery_temperature",ZP_JSON_Out.state.toString)
    val Battery  = transform("JSONPATH","$.pbattery1",ZP_JSON_Out.state.toString)
    val BatteryStatus =  transform("JSONPATH","$.battery_mode",ZP_JSON_Out.state.toString)
    val Soc = transform("JSONPATH","$.battery_soc",ZP_JSON_Out.state.toString)
    val ActivePower = transform("JSONPATH","$.active_power",ZP_JSON_Out.state.toString)
    val GridStatus = transform("JSONPATH","$.grid_in_out",ZP_JSON_Out.state.toString)
    val Consumption = transform("JSONPATH","$.house_consumption",ZP_JSON_Out.state.toString)
    val Eday = transform("JSONPATH","$.e_day",ZP_JSON_Out.state.toString)
    val Etotal = transform("JSONPATH","$.e_total",ZP_JSON_Out.state.toString)
    val EtotalExp = transform("JSONPATH","$.meter_e_total_exp",ZP_JSON_Out.state.toString)
    val EtotalImp = transform("JSONPATH","$.meter_e_total_imp",ZP_JSON_Out.state.toString)


    zpPv.postUpdate(Pv)
    zpPv1.postUpdate(Pv1)
    zpPv2.postUpdate(Pv2)
    zpIRad.postUpdate(InvRadTemp)
    zpIAir.postUpdate(InvAirTemp)
    zpBatteryTemp.postUpdate(BatteryTemp)
    zpBattery.postUpdate(Battery)
    zpBatteryStatus.postUpdate(BatteryStatus)
    zpSoc.postUpdate(Soc)
    zpActivePower.postUpdate(ActivePower)
    zpGridStatus.postUpdate(GridStatus)
    zpConsumption.postUpdate(Consumption)
    zpEday.postUpdate(Eday)
    zpEtotal.postUpdate(Etotal)
    zpEtotalExp.postUpdate(EtotalExp)
    zpEtotalImp.postUpdate(EtotalImp)
end

uložte klávesovou zkratkou CTRL+O, potvrďte Enterem a ukončete editor nano (CTRL+X).

 Hotovo. Nyní se podívejte do OpenHAB pod Items a informace by se vám měly zobrazovat a aktualizovat. Můžete si stáhnout Widget z tohoto vlákna: https://community.openhab.org/t/animated-energy-widget/133510 a dosadit zde vaše hodnoty z GoodWe.

 

Příklady dashboardů s instalovanou FVE:

 

GoodWe Mobile Chytra Domácnost  FVE a chytrá domácnost Chytrá domácnost s FVE

 

 

Hodnocení článku:

Průměr: 5 (79 hlasů)

Podpořte nás:

Přidat komentář:

Přidat komentář

Nejnovější články v blogu

Linux Live Distribution Persistent USB
Vytvoření Persistent Live USBHodnocení: 
20%

Jak si vyzkoušet Linux? Přímo na vašem notebooku nebo počítači nabootováním z USB flash disku, nebo ještě lépe z externího SSD. Pokud se vám to zalíbí, v tomto návodu naleznete postup, jak vytvořit persistentní live distribuci, což znamená, že všechny změny, které v Linuxu uložíte, tam zůstanou. Můžete si tedy nainstalovat aplikace, ukládat dokumenty atd. Prostě takový přenositelný Linux v kapse, který lze spustit na jakémkoliv podporovaném počítači nebo notebooku.

SmartHome WhatsApp notifikace OpenHAB, Home Assistant
WhatsApp - notifikace zdarmaHodnocení: 
0%

Rádi byste dostávali notifikace z chytré domácnosti formou zpráv do WhatsApp messengeru? Ačkoliv z tohoto messengeru nejsme nadšení, mnoho lidí jej používá a je zbytečné instalovat jiný pouze kvůli chytrému domu. Pro daný kontakt je pak možné nastavit specifické zvonění, takže budete hned vědět, že zpráva přišla z vašeho domu. Našli jsme možnost, jak toto využívat bez poplatku. Jmenuje se CallMeBot...

Tailscale - VPN bez veřejné IP
Tailscale - přístup bez veřejné IP adresyHodnocení: 
100%

Služba Tailscale řeší přístup mezi jednotlivými zařízeními, pokud nemáte možnost veřejné IP adresy. Pro jednoho uživatele je zdarma s podporou max 100 zařízení. Ukážeme si jak Tailscale nainstalovat na Raspberry Pi, které budeme mít někde doma a do klienta (Android, iPhone) ze kterého budeme chtít přistupovat k domácímu Raspberry Pi. Náším příkladem bude vzdálený přístup k OpenHAB běžícím na Raspberry Pi. Nicméně stejné nastavení platí pro spoustu jiných aplikací - domácí NAS, PiHole, Home Assistant, Domoticz, NextCloud a jiné.

Shelly MQTT implementace
Shelly a OpenHABHodnocení: 
100%

Značka Shelly je známa svými produkty komunikujicími hlavně přes WiFi a zahrnujicími ovládané zásuvky, relé pod vypínače, relé pro ovládaní žaluzíí a mnoho dalších produktů. Jedna z výhod pro nasazení je možnost načítat a taky ovládat tyto zařízení pomocí univerzálního protokolu MQTT. Napříč existujícímu addonu pro OpenHAB i Home Assistant si ukážeme jak používat Shelly zařízení bez instalace jakéhokoliv rozšíření.

Victron & OpenHAB
Victron a chytrý důmHodnocení: 
100%

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 atp.

GoodWe a chytrá domácnost
Smart Home a GoodWeHodnocení: 
100%

V příspěvku ukážeme krok po kroku jak komunikovat chytrou domácnosti přímo se střídačem Goodwe a dostávát aktuální informace (narozdíl od SEMS portálu). Tyto informace jsou nezbytné pokud chceme v chytrém domě nějak reagovat na aktuální parametry např. spínání dodatečného chlazení nebo spínání zásuvky se zátěží.

Ovládání domu hlasem
Hlasové ovládání domu AlexouHodnocení: 
100%

V tomto článku propojíme hlasového asistenta Amazon Echo Dot s open source domácí automatizací. Nepoužíváme OpenHAB Cloud, tz. vše běží lokálně. V tomto případě je nutných pár nastavení navíc, nicméně výsledek stojí za to!

NFC Tag Chytrý dům
NFC tagy v chytrém doměHodnocení: 
100%

NFC (Near Field Communication) tagy jsou malé plastové nebo papírové nálepky, které mohou být použity k automatizaci různých funkcí v domácnosti. V čláku vám ukážeme příklady použití a návod jak zapsat akci na NFC tag pomocí mobilního telefonu.

WireGuard iOS
Nastavení WireGuard připojení v iOSHodnocení: 
0%

V tomto článku najdete podrobný návod, jak se připojit k WireGuard VPN z iOS.

WireGuard z Androidu
Nastavení WireGuard připojení v AndroiduHodnocení: 
100%

V tomto článku najdete podrobný návod, jak se připojit k WireGuard VPN z Androidu.