Skip to content

Commit

Permalink
kostal plenticore
Browse files Browse the repository at this point in the history
  • Loading branch information
benderl committed Feb 23, 2022
1 parent 75c19e2 commit 43cf720
Show file tree
Hide file tree
Showing 6 changed files with 350 additions and 387 deletions.
129 changes: 63 additions & 66 deletions modules/bezug_kostalplenticoreem300haus/kostal_plenticore.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
#########################################################
#
# ermittelt Werte Kostal Plenticore mit EM300
# fuer alle 3 Phasen Leistung, Strom, Spannung
# für alle 3 Phasen Leistung, Strom, Spannung
# dann Netzfrequenz und Bezug/Einspeisung
#
# Werte werden im Wechselrichter-Modul ausgelesen, hier nur
Expand All @@ -15,77 +15,74 @@
# This file is part of openWB
#
#########################################################
from datetime import datetime, timezone
import os
import logging
from typing import List

import shutil
import sys

kostalplenticorehaus = int(sys.argv[1])
Debug = int(os.environ.get('debug'))
myPid = str(os.getpid())
from helpermodules.cli import run_using_positional_cli_args

log = logging.getLogger("Kostal-Plenticore")

def DebugLog(message):
local_time = datetime.now(timezone.utc).astimezone()
print(local_time.strftime(format = "%Y-%m-%d %H:%M:%S") + ": PID: "+ myPid +": " + message)

if Debug >= 2:
DebugLog('Kostal Plenticore Haus: ' + str(kostalplenticorehaus))
def update(kostalplenticorehaus: int):
log.debug('Kostal Plenticore Haus: ' + str(kostalplenticorehaus))

# Unterscheidung EM300 Sensorposition zur Bestimmung Bezug EVU
if kostalplenticorehaus == 1:
# EM300 Sensorposition 2 (am EVU-Uebergabepunkt = grid connection)
# Bezug EVU wurde bereits im wr_plenticore Modul aus den Modbus-Registern gelesen
shutil.copy("/var/www/html/openWB/ramdisk/temp_wattbezug", "/var/www/html/openWB/ramdisk/wattbezug")
else:
# EM300 Sensorposition 1 (im Hausverbrauchszweig = home consumption)
# Werte aus (temporaerer) ramdisk lesen
# aktueller Hausverbrauch
with open("/var/www/html/openWB/ramdisk/temp_wattbezug", "r") as f:
home_consumption = int(f.read())
# aktuelle PV-Leistung
with open("/var/www/html/openWB/ramdisk/pvwatt", "r") as f:
pv_power_ac = int(f.read())
# aktuelle Speicherleistung
with open("/var/www/html/openWB/ramdisk/temp_speicherleistung", "r") as f:
actual_batt_ch_disch_power = int(f.read())
# Bezug berechnen
bezug = pv_power_ac + actual_batt_ch_disch_power + home_consumption
# und in die ramdisk
with open("/var/www/html/openWB/ramdisk/wattbezug", "w") as f:
f.write(str(bezug))
if Debug >= 1:
DebugLog('Watt: ' + str(bezug))
# Unterscheidung EM300 Sensorposition zur Bestimmung Bezug EVU
if kostalplenticorehaus == 1:
# EM300 Sensorposition 2 (am EVU-Übergabepunkt = grid connection)
# Bezug EVU wurde bereits im wr_plenticore Modul aus den Modbus-Registern gelesen
shutil.copy("/var/www/html/openWB/ramdisk/temp_wattbezug", "/var/www/html/openWB/ramdisk/wattbezug")
else:
# EM300 Sensorposition 1 (im Hausverbrauchszweig = home consumption)
# Werte aus (temporärer) ramdisk lesen
# aktueller Hausverbrauch
with open("/var/www/html/openWB/ramdisk/temp_wattbezug", "r") as f:
home_consumption = int(f.read())
# aktuelle PV-Leistung
with open("/var/www/html/openWB/ramdisk/pvwatt", "r") as f:
pv_power_ac = int(f.read())
# aktuelle Speicherleistung
with open("/var/www/html/openWB/ramdisk/temp_speicherleistung", "r") as f:
actual_batt_ch_disch_power = int(f.read())
# Bezug berechnen
bezug = pv_power_ac + actual_batt_ch_disch_power + home_consumption
# und in die ramdisk
with open("/var/www/html/openWB/ramdisk/wattbezug", "w") as f:
f.write(str(bezug))
log.debug('Watt: ' + str(bezug))

# Daten aus temporärer ramdisk zur globalen Weiterverarbeitung in die
# entsprechenden ramdisks kopieren. Die temporären Werte stammen aus dem
# wr_plenticore Modul, werden dort zentral aus den Modbus-Registern gelesen

# Daten aus temporaerer ramdisk zur globalen Weiterverarbeitung in die
# entsprechenden ramdisks kopieren. Die temporaeren Werte stammen aus dem
# wr_plenticore Modul, werden dort zentral aus den Modbus-Registern gelesen
# Bezug Strom Phase 1
shutil.copy("/var/www/html/openWB/ramdisk/temp_bezuga1", "/var/www/html/openWB/ramdisk/bezuga1")
# Bezug Strom Phase 2
shutil.copy("/var/www/html/openWB/ramdisk/temp_bezuga2", "/var/www/html/openWB/ramdisk/bezuga2")
# Bezug Strom Phase 3
shutil.copy("/var/www/html/openWB/ramdisk/temp_bezuga3", "/var/www/html/openWB/ramdisk/bezuga3")
# Netzfrequenz
shutil.copy("/var/www/html/openWB/ramdisk/temp_evuhz", "/var/www/html/openWB/ramdisk/evuhz")
# Bezug Leistung Phase 1
shutil.copy("/var/www/html/openWB/ramdisk/temp_bezugw1", "/var/www/html/openWB/ramdisk/bezugw1")
# Bezug Leistung Phase 2
shutil.copy("/var/www/html/openWB/ramdisk/temp_bezugw2", "/var/www/html/openWB/ramdisk/bezugw2")
# Bezug Leistung Phase 3
shutil.copy("/var/www/html/openWB/ramdisk/temp_bezugw3", "/var/www/html/openWB/ramdisk/bezugw3")
# Spannung Phase 1
shutil.copy("/var/www/html/openWB/ramdisk/temp_evuv1", "/var/www/html/openWB/ramdisk/evuv1")
# Spannung Phase 2
shutil.copy("/var/www/html/openWB/ramdisk/temp_evuv2", "/var/www/html/openWB/ramdisk/evuv2")
# Spannung Phase 3
shutil.copy("/var/www/html/openWB/ramdisk/temp_evuv3", "/var/www/html/openWB/ramdisk/evuv3")
# Power Faktor Phase 1
shutil.copy("/var/www/html/openWB/ramdisk/temp_evupf1", "/var/www/html/openWB/ramdisk/evupf1")
# Power Faktor Phase 2
shutil.copy("/var/www/html/openWB/ramdisk/temp_evupf2", "/var/www/html/openWB/ramdisk/evupf2")
# Power Faktor Phase 3
shutil.copy("/var/www/html/openWB/ramdisk/temp_evupf3", "/var/www/html/openWB/ramdisk/evupf3")

# Bezug Strom Phase 1
shutil.copy("/var/www/html/openWB/ramdisk/temp_bezuga1", "/var/www/html/openWB/ramdisk/bezuga1")
# Bezug Strom Phase 2
shutil.copy("/var/www/html/openWB/ramdisk/temp_bezuga2", "/var/www/html/openWB/ramdisk/bezuga2")
# Bezug Strom Phase 3
shutil.copy("/var/www/html/openWB/ramdisk/temp_bezuga3", "/var/www/html/openWB/ramdisk/bezuga3")
# Netzfrequenz
shutil.copy("/var/www/html/openWB/ramdisk/temp_evuhz", "/var/www/html/openWB/ramdisk/evuhz")
# Bezug Leistung Phase 1
shutil.copy("/var/www/html/openWB/ramdisk/temp_bezugw1", "/var/www/html/openWB/ramdisk/bezugw1")
# Bezug Leistung Phase 2
shutil.copy("/var/www/html/openWB/ramdisk/temp_bezugw2", "/var/www/html/openWB/ramdisk/bezugw2")
# Bezug Leistung Phase 3
shutil.copy("/var/www/html/openWB/ramdisk/temp_bezugw3", "/var/www/html/openWB/ramdisk/bezugw3")
# Spannung Phase 1
shutil.copy("/var/www/html/openWB/ramdisk/temp_evuv1", "/var/www/html/openWB/ramdisk/evuv1")
# Spannung Phase 2
shutil.copy("/var/www/html/openWB/ramdisk/temp_evuv2", "/var/www/html/openWB/ramdisk/evuv2")
# Spannung Phase 3
shutil.copy("/var/www/html/openWB/ramdisk/temp_evuv3", "/var/www/html/openWB/ramdisk/evuv3")
# Power Faktor Phase 1
shutil.copy("/var/www/html/openWB/ramdisk/temp_evupf1", "/var/www/html/openWB/ramdisk/evupf1")
# Power Faktor Phase 2
shutil.copy("/var/www/html/openWB/ramdisk/temp_evupf2", "/var/www/html/openWB/ramdisk/evupf2")
# Power Faktor Phase 3
shutil.copy("/var/www/html/openWB/ramdisk/temp_evupf3", "/var/www/html/openWB/ramdisk/evupf3")

exit(0)
def main(argv: List[str]):
run_using_positional_cli_args(update, argv)
21 changes: 8 additions & 13 deletions modules/bezug_kostalplenticoreem300haus/main.sh
Original file line number Diff line number Diff line change
@@ -1,24 +1,19 @@
#!/bin/bash
OPENWBBASEDIR=$(cd `dirname $0`/../../ && pwd)
RAMDISKDIR="$OPENWBBASEDIR/ramdisk"
MODULEDIR=$(cd `dirname $0` && pwd)
OPENWBBASEDIR=$(cd "$(dirname "$0")/../../" && pwd)
RAMDISKDIR="${OPENWBBASEDIR}/ramdisk"
#DMOD="EVU"
DMOD="MAIN"
Debug=$debug

#For development only
#Debug=1

if [ $DMOD == "MAIN" ]; then
MYLOGFILE="$RAMDISKDIR/openWB.log"
if [ ${DMOD} == "MAIN" ]; then
MYLOGFILE="${RAMDISKDIR}/openWB.log"
else
MYLOGFILE="$RAMDISKDIR/evu_json.log"
MYLOGFILE="${RAMDISKDIR}/evu.log"
fi

python3 /var/www/html/openWB/modules/bezug_kostalplenticoreem300haus/kostal_plenticore.py "${kostalplenticorehaus}" >>$MYLOGFILE 2>&1
bash "$OPENWBBASEDIR/packages/legacy_run.sh" "bezug_kostalplenticoreem300haus.kostal_plenticore" "${kostalplenticorehaus}" >>"${MYLOGFILE}" 2>&1
ret=$?

openwbDebugLog ${DMOD} 2 "RET: ${ret}"

wattbezug=$(</var/www/html/openWB/ramdisk/wattbezug)
echo $wattbezug
wattbezug=$(<"$RAMDISKDIR/wattbezug")
echo "$wattbezug"
17 changes: 12 additions & 5 deletions modules/speicher_kostalplenticore/kostal_plenticore.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,18 @@
# entsprechenden ramdisks kopieren. Die temporären Werte stammen aus dem
# wr_plenticore Modul, werden dort zentral aus den Modbus-Registern gelesen

from typing import List
import shutil

# Speicherleistung WR 1
shutil.copy("/var/www/html/openWB/ramdisk/temp_speicherleistung", "/var/www/html/openWB/ramdisk/speicherleistung")
# Speicher Ladestand von Speicher am WR 1
shutil.copy("/var/www/html/openWB/ramdisk/temp_speichersoc", "/var/www/html/openWB/ramdisk/speichersoc")
from helpermodules.cli import run_using_positional_cli_args

exit(0)

def update():
# Speicherleistung WR 1
shutil.copy("/var/www/html/openWB/ramdisk/temp_speicherleistung", "/var/www/html/openWB/ramdisk/speicherleistung")
# Speicher Ladestand von Speicher am WR 1
shutil.copy("/var/www/html/openWB/ramdisk/temp_speichersoc", "/var/www/html/openWB/ramdisk/speichersoc")


def main(argv: List[str]):
run_using_positional_cli_args(update, argv)
17 changes: 5 additions & 12 deletions modules/speicher_kostalplenticore/main.sh
Original file line number Diff line number Diff line change
@@ -1,26 +1,19 @@
#!/bin/bash

OPENWBBASEDIR=$(cd `dirname $0`/../../ && pwd)
OPENWBBASEDIR=$(cd "$(dirname "$0")/../../" && pwd)
RAMDISKDIR="${OPENWBBASEDIR}/ramdisk"
#MODULEDIR=$(cd `dirname $0` && pwd)
#DMOD="BATT"
DMOD="MAIN"
Debug=$debug

#For Development only
#Debug=1

if [ ${DMOD} == "MAIN" ]; then
MYLOGFILE="${RAMDISKDIR}/openWB.log"
MYLOGFILE="${RAMDISKDIR}/openWB.log"
else
MYLOGFILE="${RAMDISKDIR}/speicher.log"
MYLOGFILE="${RAMDISKDIR}/speicher.log"
fi

python3 /var/www/html/openWB/modules/speicher_kostalplenticore/kostal_plenticore.py >>$MYLOGFILE 2>&1
bash "$OPENWBBASEDIR/packages/legacy_run.sh" "speicher_kostalplenticore.kostal_plenticore" >>"${MYLOGFILE}" 2>&1
ret=$?

openwbDebugLog ${DMOD} 2 "RET: ${ret}"

speicherleistung=$(<${RAMDISKDIR}/speicherleistung)

speicherleistung=$(<"${RAMDISKDIR}/speicherleistung")
openwbDebugLog ${DMOD} 1 "BattLeistung: ${speicherleistung}"
15 changes: 5 additions & 10 deletions modules/wr_plenticore/main.sh
Original file line number Diff line number Diff line change
Expand Up @@ -16,30 +16,25 @@
# WR3 kann auch eine Liste an einanderfolgenden IP haben


OPENWBBASEDIR=$(cd `dirname $0`/../../ && pwd)
OPENWBBASEDIR=$(cd "$(dirname "$0")/../../" && pwd)
RAMDISKDIR="${OPENWBBASEDIR}/ramdisk"
#MODULEDIR=$(cd `dirname $0` && pwd)
DMOD="PV"
Debug=$debug
Battery=0

#For Development only
#Debug=1
if [[ $speichermodul == "speicher_kostalplenticore" ]]; then
Battery=1
fi
fi

if [ $DMOD == "MAIN" ]; then
MYLOGFILE="${RAMDISKDIR}/openWB.log"
else
MYLOGFILE="${RAMDISKDIR}/nurpv.log"
fi

python3 $OPENWBBASEDIR/modules/wr_plenticore/read_kostalplenticore.py "${kostalplenticoreip}" "${kostalplenticoreip2}" "${Battery}" "${kostalplenticoreip3}" >>$MYLOGFILE 2>&1
bash "$OPENWBBASEDIR/packages/legacy_run.sh" "wr_plenticore.read_kostalplenticore" "${kostalplenticoreip}" "${kostalplenticoreip2}" "${Battery}" "${kostalplenticoreip3}" >>"${MYLOGFILE}" 2>&1
ret=$?

openwbDebugLog ${DMOD} 2 "RET: ${ret}"

# Rückgabe des Wertes Gesamt-PV-Leistung
pvwatt=$(</var/www/html/openWB/ramdisk/pvwatt)
echo $pvwatt
pvwatt=$(<"$RAMDISKDIR/pvwatt")
echo "$pvwatt"
Loading

0 comments on commit 43cf720

Please sign in to comment.