Giter Site home page Giter Site logo

snaptec / openwb Goto Github PK

View Code? Open in Web Editor NEW
341.0 30.0 205.0 117.06 MB

openWB - die modulare Wallbox

Home Page: https://openwb.de

License: GNU General Public License v3.0

Shell 10.71% PHP 25.45% Python 30.48% CSS 4.10% JavaScript 19.98% HTML 8.35% Hack 0.29% Roff 0.42% SCSS 0.21%

openwb's Introduction

openWB

Die Software steht frei für jeden zur Verfügung, siehe GPLv3 Bedingungen.

Unterstützung ist gerne gesehen!
Sei es in Form von Code oder durch Spenden
Spenden bitte an [email protected]

Anfragen für Supportverträge an [email protected] Weitere Infos unter https://openwb.de

Haftungsausschluss

Es wird mit Kleinspannung aber auch 230V beim Anschluss der EVSE gearbeitet. Dies darf nur geschultes Personal. Die Anleitung ist ohne Gewähr und jegliches Handeln basiert auf eigene Gefahr. Eine Fehlkonfiguration der Software kann höchstens ein nicht geladenes Auto bedeuten. Falsch zusammengebaute Hardware kann lebensgefährlich sein. Im Zweifel diesen Part von einem Elektriker durchführen lassen. Keine Gewährleistung für die Software - use at your own RISK!

Wofür?

Steuerung einer EVSE DIN oder anderer Ladepunkte für sofortiges laden, Überwachung der Ladung, PV Überschussladung und Lastmanagement mehrerer WB.

Unterstützt wird jedes EV das den AC Ladestandard unterstützt.

Bezug

openWB gibt es unter

https://openwb.de/shop/

Installation

Bei fertigen openWB vorinstalliert

Software:

Installiertes Raspbian auf einem Raspberry pi 3.

Installationsanleitung für Windows: http://openwb.de/main/wp-content/uploads/2019/07/install_openWB_v2.pdf

Raspbian installieren aktuell werden in der Version 1.9 nur Stretch (bevorzugt) und Buster unterstützt.

http://downloads.raspberrypi.org/raspbian_full/images/

In der Shell folgendes eingeben:

curl -s https://raw.githubusercontent.com/snaptec/openWB/master/openwb-install.sh | sudo bash

Crontab anpassen: crontab -e hier einfügen:

* * * * * /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1 
* * * * * sleep 10 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1 
* * * * * sleep 20 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1 
* * * * * sleep 30 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1 
* * * * * sleep 40 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1 
* * * * * sleep 50 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1 

Extras

Bei Nutzung von einem USR-TCP232-410 Lan to Modbus Converter folgende Konfiguration verwenden:

Baud Rate: 9600
Data Size: 8 Bit
Parity: None
Stop Bits: 1
Flow COntrol and RS485: RS485
Local Port Number: 26
Remote Port Number: 26
Work Mode: TCP Server None
TCP Server detail: default Type
Timeout: 0
UART packet Time: 10 ms
UART packet length: 512 chars

Der Raspberry funktioniert zuverlässig mit gutem WLAN. Lan Kabel ist zu bevorzugen.

Taster am Raspberry zur Einstellung des Lademodi

Der Lademodi kann nicht nur über die Weboberfläche sondern auch an der openWB direkt eingestellt werden. Hierzu müssen schließende Taster von GND (Pin 34) nach Gpio X angeschlossen werden.

SofortLaden GPIO 12, PIN 32

Min+PV GPIO 16, PIN 36

NurPV GPIO 6, Pin 31

Aus Gpio 13, Pin 33

Module erstellen

Ist ein Modul für den gewünscht Einsatzzweck noch nicht verfügbar kann man dies selbst erstellen. Wenn es läuft bitte melden und es (einstellbar) dem Projekt hinzugefügt.

Ein Modul ist immer ein Ordner mit dem Modulnamen im Ordner openWB/modules. Es besteht aus einem Shell script mit dem Namen main.sh. Sollten weitere Dateien benötigt werden liegen diese mit im Ordner.

Exemplarisch der Aufbau erklärt am bezug_http Modul:

#!/bin/bash
# Die eigentliche (in dem Fall http) Abfrage. Die Variable sollte den Modulnamen und im Anschluss den Wert enthalten um sie eindeutig zu identifizieren
watt_bezug=$(curl --connect-timeout 10 -s $bezug_http_w_url)
# Prüfung auf Richtigkeit der Variable. Sie darf bei Bezugsmodulen ein - enthalten sowie die Zahlen 0-9
re='^-?[0-9]+$'
# Entspricht der abgefragte Wert nicht der Anforderung wird sie auf 0 gesetzt um ein Fehlverhalten der Regelung zu verhindern
if ! [[ $watt_bezug =~ $re ]] ; then
	watt_bezug="0"
fi
# Der Hauptwert (Watt) wird als echo an die Regellogik zurückgegeben
echo $watt_bezug
# Zusätzlich wird der Wert in die Ramdisk geschrieben, dies ist für das Webinterface sowie das Logging und ggf. externe Abfragen
echo $watt_bezug > /var/www/html/openWB/ramdisk/watt_bezug
# Wird Logging von Zählern genutzt, wird der absolute Zählerstand in Wh benötigt. Ist dieser nicht vorhanden sollte die Variable auf "none" gesetzt werden
if [[ $bezug_http_ikwh_url != "none" ]]; then
	import_kwh=$(curl --connect-timeout 5 -s $bezug_http_ikwh_url)
	echo $import_kwh > /var/www/html/openWB/ramdisk/bezugkwh
fi
# Analog zum bezug dasselbe Verfahren für die Einspeisung
if [[ $bezug_http_ekwh_url != "none" ]]; then
	export_kwh=$(curl --connect-timeout 5 -s $bezug_http_ekwh_url)
	echo $export_kwh > /var/www/html/openWB/ramdisk/einspeisungkwh
fi

Bei PV Modulen muss geschrieben werden:

# Rückgabewert in Watt
echo $pv_watt
echo $pv_watt > /var/www/html/openWB/ramdisk/pvwatt
# ggf wenn verfügbar für logging den Zählerstand in Wh
echo $pv_wh > /var/www/html/openWB/ramdisk/pvkwh

Beispielhaft das wr_fronius Modul für deren Wechselrichter mit Webinterface: Fronius bietet eine Json API an. Diese wird hier auf die Werte die gebraucht werden reduziert.

#!/bin/bash
# Auslesen eine Fronius Symo WR über die integrierte API des WR. Rückgabewert ist die aktuelle Wattleistung
# Abfrage der kompletten Json Rückgabe
pv_watt_tmp=$(curl --connect-timeout 5 -s $wrfroniusip/solar_api/v1/GetInverterRealtimeData.cgi?Scope=System)
# Das Tool jq verarbeitet die Rückgabe und reduziert sie auf die gewünschte Zeile. sed & tr entfernen ungewollte Klammern, Punkte und \n newline Zeichen um die reine Zahl zu erhalten
pv_watt=$(echo $pv_watt_tmp | jq '.Body.Data.PAC.Values' | sed 's/.*://' | tr -d '\n' | sed 's/^.\{2\}//' | sed 's/.$//' )
#wenn WR aus bzw. im standby (keine Antwort) ersetze leeren Wert durch eine 0
#Fronius Wechselrichter gehen nachts in den Standby und antworten dann nicht. Um einen Fehler abzufangen bei leerer Rückgabe wird eine 0 gesetzt
re='^[0-9]+$'
if ! [[ $pv_watt =~ $re ]] ; then
   pv_watt="0"
fi
#Rückgabe des Watt Wertes an die Regellogik
echo $pv_watt
#zur weiteren Verwendung im Webinterface, zum Logging & zur externen Abfrage
echo $pv_watt > /var/www/html/openWB/ramdisk/pvwatt
#Aus dem selben String erhält man ebenso den totalen Zählerstand für das Logging
#Hier sieht man das statt .Body.Data.PAC der Wert .Body.Data:TOTAL_Energy "ausgeschnitten" wird
pv_kwh=$(echo $pv_watt_tmp | jq '.Body.Data.TOTAL_ENERGY.Values' | sed '2!d' |sed 's/.*: //' )
#Dieser Wert wird nun in die ramdisk gespeichert
echo $pv_kwh > /var/www/html/openWB/ramdisk/pvkwh

openwb's People

Contributors

bembelfan avatar benderl avatar bucky2k avatar cshagen avatar detmoerk avatar dj3mu avatar eisenkoch avatar fawick avatar flock82 avatar git-developer avatar hhoefling avatar janfellner avatar lkuemmel avatar locutusb avatar martinrinas avatar matzempc avatar michaelstaemmler avatar miort avatar okaegi avatar rechi avatar remogloor avatar rleidner avatar sa0win avatar seb585 avatar snaptec avatar sreinhold95 avatar theholgi avatar tpd-opitz avatar vuffiraa72 avatar yankee42 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

openwb's Issues

Keine DC-Fehlerstromdetektion

Laut Vorschriften muss eine Ladeanlage auch gegen DC-Fehlerströme abgesichert werden. Ein in Haushalten üblicher RCD Typ A macht das nicht (die erkennen nur AC-Fehlerströme), es braucht also einen teuren RCD Typ B (so ca. 270€). Ich konnte dazu keinen Hinweis finden. Was bei kommerziellen Anlagen auch häufig gemacht wird, ist einen separaten DC-Fehlerstromschutz in die Anlage einzubauen, Bender bietet sowas z.B. für die Hutschiene [1] oder als Platine [2] an.

[1] https://www.bender.de/produkte/differenzstrom-ueberwachung/linetraxx_rcmb42
[2] https://www.bender.de/produkte/differenzstrom-ueberwachung/rcmb104

Steuerung der Lademodi per Schalter GPIO

Die Möglichkeit statt des Webinterfaces an der openWB einen (Dreh-)Schalter zu nutzen um zwischen den Modi Sofort Laden, MindestLadung + PV, sowie nur PV Ladung umzuschalten

Number of phases in "nurpv.sh" and "minandpv.sh"

When I switch between 1 phase and 3 phase charging, the corresponding variable "anzahlphasen" switches like expected between "1" and "3".

Why do you use the number "4" as a distinction between both cases? E.g. for "if (( uberschuss < -1380 )); then" you write:

if (( anzahlphasen < 4 )); then
	llneu=$((llalt - 6 ))
else
	llneu=$((llalt - 2 ))
fi

I would have expected the number "3", because otherwise you always increase/decrease the charging current with the higher value (independent of the number of phases):

if (( anzahlphasen < 3 )); then
	llneu=$((llalt - 6 ))
else
	llneu=$((llalt - 2 ))
fi

What is not handled here is the case of 2 phase charging. So it would be better to just check if "anzahlphasen" is between 1 and 3, and then add/subtract "6/anzahlphasen", as this handles all three cases.

Auswahl Ladestromstärke bei "Sofort Laden"

Zur manuellen Steuerung der Ladestromstärke im Modus "Sofort Laden" wird ein Auswahlmenü benötigt. Hiermit soll die Ladegeschwindigkeit einstellbar gemacht werden.
Eine "Merkfunktion" für den zuletzt eingestellten Wert erspart wiederholtes Einstellen in diesem Modus.

Bezeichnung der einzelnen Ladepunkte vom Nutzer veränderbar

Bei mehr als einem Ladepunkt erscheint es mir sinnvoll, dem Nutzer die Möglichkeit zu geben, für diese eigene Bezeichnungen festlegen zu können. Z.B. Carport links, Garage, etc.

Dafür könnte man in den einzelnen Modulen unter "Erster Ladepunkt", "Zweiter Ladepunkt" ein editierbares Textfeld einfügen, in dem die bisher auf der OpenWB-Hauptseite verwendeten Bezeichnungen "Ladepunkt1, "Ladepunkt2" als Vorgabe stehen.
Da z.B. im Ladelog lediglich die Ziffer des Ladepunkts auftaucht, ist ein langer Text möglicherweise nicht überall darstellbar. Deshalb sollte zumindest auf der Hauptseite die Bezeichnung einmal im Format "LP1: Carport links", "LP2: Garage" gemeinsam erscheinen.

Remove clientside authentication validation

openWB uses JavaScript to handle the entire login/authentication process for it's setting webpage.
This allows a person to simply bypass the login process by

  • Turning off JavaScript
  • Modifying the executed JavaScript with a debugger tool
  • Reading the plain password by looking at the source code of the webpage
    (The password is also exposed in plaintext at the web/misc.php site)

I suggest to make the authentication server side, with a encrypted password, etc.
.htaccess can be used to secure the web interface, until a patch comes out

enhancement: flexiblere Zeiteinstellungen

bisher sind alle Zeiteinstellungen select-Boxen mit der Granularität 1h. Das trifft aber nicht immer die (meine) Bedürfnisse.

Ich wünsche mir die Zeiten mit höherer Auflösung einstellen zu können.

  • Maximal-Lösung:
    Ohne auf die Konsequenzen in der Logik geachtet zu haben...
    <input type="time" ...

  • Minimallösung:
    Aufnahme von Viertelstunden in die Auswahlbox.

Ladung geht bei weiter wenn man auf "Nur PV" wechselt.

Hallo,

wenn ich in der OpenWB von "Jetzt Laden" auf "Nur PV" wechsele, dann wird bei 0 W auf PV die Ladung trotzdem mit dem vorherigen Wert forgesetzt.
Eigentlich müsste sich die LAdung doch stoppen in diesen Fall.

Gruß

Christoph

LG changed API for LG ESS

Hi,
LG changed the structure of JSON API. I customized it for my system by hard coding the changes (as it was implemented in the current module implementation of bezug_lgessv1, wr_lgessv1 and speicher_lgessv1). My question/suggestion:
I could implement a version of this modules which fits both APIs. For that I would insert a new pull down menu in the PV preferences section. Second Version: I also hard Code the new JSON API. All users would bei forced top update their systems.

What so You think?
BW
S.W.

Update Issue with Nightly versions

Seeing this when atreboot runs:

+ uuid=02:42:ac:11:00:02
+ owbv='1.624 Nightly  '
+ curl -d update=Stable02:42:ac:11:00:02vers1.624 Nightly '' -H 'Content-Type: application/x-www-form-urlencoded' -X POST https://openwb.de/tools/update.php
curl: (6) Could not resolve host: Nightly
curl: (3) URL using bad/illegal format or missing URL

Looks like a parsing/ url building issue.

soc_zoe: 'ZE services' zu 'My Renault' migriert -> Kommunikation mit ZOE via "soc_zoe" nicht mehr möglich

Renault hat 'ZE services' zu 'My Renault' migriert. Der Anmeldemechanismus hat geändert.
-> Kommunikation mit ZOE via "soc_zoe" ist nicht mehr möglich, Im GUI ist die Anzeige des Akkustandes nicht mehr möglich. Es wird nur "null % SoC" angezeigt.

Ein request wird wie folgt beantwortet:

request=$(curl -s -H "Content-Type: application/json" -X POST -d '{"username":"'$zoeusername'","password":"'$zoepasswort'"}' https://www.services.renault-ze.com/api/user/login)

echo $request
{"code":403900,"message":"com.worldline.renault.myzeonline.user.exception.RestrictedCountryException","timestamp":1578781259097,"redirectURLs":{"appstore":"https://myr-fr.renault.ch/ze-redirection.html?os=ios","playstore":"https://myr-fr.renault.ch/ze-redirection.html?os=android","website":"https://myr-fr.renault.ch/ze-redirection.html?os=web"},"locale":"de_DE"}

Weitere Details zum neuen API:
https://muscatoxblog.blogspot.com/2019/07/delving-into-renaults-new-api.html

URls nicht escaped

Die URLs für EVU Zähler und SOC werden nicht gespeichert.
Wenn ich die URL hinterlege und dann speicher ist meine Eingabe wieder verschwunden.

Lizenz: GPL verbietet nicht kommerzielle Nutzung

In der Readme schreibt ihr "Die Software steht zur nicht kommerziellen Nutzung frei für jeden zur Verfügung.". Die GPLv3, die ihr als Lizenz verwendet, schließt kommerzielle Nutzung jedoch nicht aus, solange man sich an die Bedingungen hält (Bereitstellung jeglicher Veränderungen). Das mag für viele kommerzielle Anwendungen unerwünscht sein aber eben nicht unmöglich.

Falls ihr damit nur zum Ausdruck bringen wollt, dass ihr die Software zu kommerziellen Zwecken auf Anfrage auch unter einer permissiven Lizenz anbietet, dann wäre eine Klarstellung hilfreich. Wenn ihr tatsächlich die kommerzielle Nutzung eures Codes komplett ausschließen wollt, dann ist die GPLv3 die falsche Lizenz.

Softwaremodul für AE-PV-Modulinverter (RS 485, Modbus/RTU)

Für die häufig bei Kleinanlagen oder reinen Eigenverbrauchsanlagen verwendeten AE-Wechselrichter
http://www.aeconversion.de/de/index.html
wäre die Einbindung in openWB per Software-Modul wünschenswert, da diese alle in DE geforderten Sicherheitsfeatures implementiert haben.

Diese Modul-WR (bis zu 2x 250W) werden mit Modbus/RTU ausgelesen/angesteuert und verwenden RS485-Hardware. Es gibt 2 Varianten:
a) Entweder haben die WR eine eigene RS485-Schnittstelle oder
b) mehrere WR kommunizieren über die Stromleitung per PLC. Zur Datenfilterung wird dann dieses PLC-Gateway
http://www.aeconversion.de/de/plc-gateway.html
genutzt, welches alle Modbusdaten zur Verfügung stellt.
Die Hardwareanbindung erfolgt also ähnlich der SDMxxx-Zähler bzw. der "EVSE DIN mit RS485".

Es böte sich an, dieses vorh. Stück Software namens AECLogger zu nutzen:
Hierfür wurde das Protokoll reengineered, da es nicht offiziell vom Hersteller freigegeben wurde. Aus den ertmittelten Transferdaten wurde ein in C geschriebener Datenlogger mit Leistungssteuerungsfunktion entwickelt, welcher autark funktioniert (alles inkl. websites in C !!!).
https://github.com/akrypth/aeclogger/wiki
Inwieweit eine API möglich wäre, muss noch recherchiert werden.

Nachtladen: Ignorieren des SOC bei veraltetem Zeitstempel

Ich nutze EvNotify für das SOC-gesteuerte Nachtladen.
Das Smartphone für den Bluetooth-Empfang befindet sich in der Wallbox und nicht im Fahrzeug.
Daher wird der SOC nur während der Ladung und nicht beim Fahren aktualisiert.

Zum Zeitpunkt der nächsten Nachtladung ist der SOC aus Sicht von OpenWb größer oder gleich dem Ziel-SOC, wodurch die Nachtladung gar nicht erst gestartet wird.

Um dennoch die Nachtladung automatisch starten zu können, wäre es nötig einen SOC mit Zeitstempel älter als z.B. 12 Stunden zu ignorieren

Alternativ könnte eine Aktualisierung des SOC auch beim Anstecken des Fahrzeugs getriggert werden.
Dazu wäre z.B. der Status "Fahrzeug angesteckt" auf LED3 oder ein Webhook ideal.

feature request: Nacht-Laden: dynamische Ladeleistung

Im Moduns Nacht Laden sollte die WB die Ladeleistung, die benötigt wird, um ausgehend vom aktuellen SOC in der eingestellten Nachtladezeit den Ziel-SOC zu erreichen, ausrechnen. Die Grenzen der Ladeleistung sollten von der Einstellung für Sofort Laden übernommen werden.

Wenn die errechneten Ladeleistung geringer als die eingestellte Untergrenze ist sollte das der Ladebeginn so lange verzögert werden, dass der SOC mit der minimalen Ladeleistung zur eingestellten Zielzeit erreicht wird.

Reduzierter Ladestrom Min für Lastmanagement

Aus Gründen der Effizienz möchte ich einen Ladestrom unterhalb von 9A z.B. beim PV-laden möglichst vermeiden.
Für das Lastmanagement würde ich auch den Ladestrom bis 6A herunter freigeben wollen.
Also mein Wunsch: neben dem normalen Mindestladestrom einen "reduzierten Mindestladestrom für Lastmanagement" einführen, auf den lediglich das Lastmanagement reduzieren darf.
Alternativ für das Lastmanagement unabhängig vom eingestellten Mindestladestrom bis 6A herunteregeln lassen, wie es der Ladestandard auch vorsieht.

Mindestüberschuss und Abschaltschwelle wird falsch berechnet

Version 1.42
Mir scheint der Wert Mindestüberschuss aus den PV Ladeeinstellungen wird falsch berücksichtigt. Bei einem dreiphasigen Anschluss der go-e erscheint bei einem Eintrag von
Mindestüberschuss: 4000 W
Folgender Eintrag im Log:

uberschuss 5705 wattbezug -5705 ladestatus 0 llsoll 0 pvwatt -6017 mindestuberschussphasen **12000** wattkombiniert 5705 abschaltungw 1560 schaltschwelle 690
Fri 19 Apr 13:20:45 CEST 2019

Die Ladung startet nicht, da "mindestuberschussphase 12000" obwohl 5705 W Überschuss vorhanden sind.

Bei einem Eintrag von
Mindestüberschuss: 1333 W
erscheint dann korrekterweise:

uberschuss 5729 wattbezug -5729 ladestatus 0 llsoll 0 pvwatt -6013 mindestuberschussphasen **3999** wattkombiniert 5729 abschaltungw 1560 schaltschwelle 690
Fri 19 Apr 13:20:55 CEST 2019

und die Ladung beginnt.
Nachdem die Ladung beginnt scheint der Wert "1333" dann korrekt übernommen zu werden:

Fri 19 Apr 13:21:51 CEST 2019
uberschuss 5757 wattbezug -5757 ladestatus 1 llsoll 6 pvwatt -6061 mindestuberschussphasen 1333 wattkombiniert 5757 abschaltungw 520 schaltschwelle 230

Gleiches gilt für "schaltschwelle":

Fri 19 Apr 13:22:15 CEST 2019
uberschuss 3270 wattbezug -3270 ladestatus 1 llsoll 6 pvwatt -6063 mindestuberschussphasen 1333 wattkombiniert 4590 abschaltungw 520 schaltschwelle 230
Fri 19 Apr 13:22:25 CEST 2019
uberschuss 225 wattbezug -225 ladestatus 1 llsoll 8 pvwatt -6064 mindestuberschussphasen 3999 wattkombiniert 5925 abschaltungw 1560 schaltschwelle 690

Integration ModBus Meter MPM3PM

Wer hat Interesse den ModBus Zähler MPM3PM von Bernecker Austria zu integrieren.
Der Zähler ist von uns entwickelt (ich bin ehemaliger Fronius Entwickler) und hat idente Register wie ABB Zähler und wird bereits bei Loxone und und Siemens Logo verwendet.
Der Zähler funktioniert natürlich auch über ModBus TCP <-> RTU koppler.
Man müsste nur die Registerdefinition von MP630 anpassen.
MPM3PModBus.pdf

tip: code check tools (shellcheck, pylint)

ich hab mal zum spass tools wie "pylint" (checkt python code gegen den pip-8 coding-style) oder "shellcheck" (checkt shell-scripte auf verbesserungs-potential) gegen den source-code laufen lassen.
Findet einiges... muss aber nichts heissen
generell hilft aber "sauberer code" beim zusammenarbeiten und fehler vermeiden.

Ladelog leer

V 1.4 Stable. Frische Installation auf Ubuntu.
Das Ladelog ist immer leer. Das heruntergeladene csv enthält lediglich "Start".

Ich schließe nicht aus dass es ein Bediener Fehler ist, konnte bisher das Problem aber noch nicht lösen.

"Zurück"-Button auf der Statusseite

Auf allen Seiten gibt es links oben entweder

  • einen Zurück-Button, oder aber
  • einen Zurück-Tab

welcher zurück auf die Hauptseite führt.

So etwas fehlt noch auf der Statusseite (mir ist bewusst dass es einen Button oberhalb des GSI-Graphs gibt, dieser ist allerdings nicht so gut zu erreichen).

Fronius Smartmeter und 2 Fronius Wechselrichter

Hallo,
erst einmal bin ich absolut begeistert von openWB, toll das es solche Menschen gibt.
Ich habe eine Fronius Energy Meter für den EVU Übergabepunkt. Dieser ist an einem meiner beiden Fronius Wechselrichter dran. Jetzt wird mir die aktuelle Leistung am EVU angezeigt und leider nur die PV Leistung von dem ersten Fronius WR. Es fehlt quasi die PV Leistung von 2ten Fronius WR.
Ist es möglich beide IP Adressen einzutragen, so das die Ladeleistung auch wirklich mit der gesamten PV Leistung berechnet wird.

Alternativ wäre auch ein Feld möglich wo ich eín Register von einem Modbus TCP Server eintrage, wo die aktuelle PV Leistung drin steht und openWB dann die Summe bildet. Wäre toll wenn man da was machen kann, da ich das sonst nicht wirklich effektiv nutzen kann. Vielen Dank

enhancement: input type="number"

Die meisten Eingabefelder erwarten Zahlenwerte. Auf Smartphones wird die aphabetische Tastatur angeboten, wenn man in so ein Feld tippt, denn der Typ der Eingabefeler ist überall "text":

 	<b><label for="nachtsocs1">Nacht SOC Sonntag bis Donnerstag:</label></b>
	<input type="text" name="nachtsocs1" id="nachtsocs1" value="70"><br>

Der Typ sollte auf "number" geändert werden, um die Eingabe zu vereinfachen.

Sofortladen Lademenge

Aktuell nutze ich häufig das Sofortladen mit einer Lademenge von xx kWh.
Wenn ich am nächsten Tag wieder anstecke, wird aber nicht gleich begonnen zu laden. Ich muss erst den Reset Button drücken, damit begonnen wird zu laden.
Eventuell könnte bei einem erneutem Anstecken die geladene Menge automatisch zurück gesetzt werden?

Ich habe die Version 1.6.

USR-TCP232-304 als RTU/TCP Konverter?

Laut Doku sollte ein USR-TCP232-410 funktionieren. Ich habe jetzt den "kleineren" USR-TCP232-304. Dieser bietet nur RS485, kein RS232 (trotz des Namens). Es gelingt mir aber partout nicht über den Adapter mit 2 angeschlossenen Zählern zu kommunizieren.

Parameter:

Baud Rate: 9600
Data Size: 8 Bit
Parity: None
Stop Bits: 1
Local Port Number: 23
Work Mode: TCP Server

Die Parameter funktionieren- wenn ich identisches Skript über RTU/USB Adapter laufen lasse kommen Daten, über TCP gibts nur i/o timeout; IP ist korrekt. Fehler des Adapters ist unwahrscheinlich da bereits das zweite Gerät.

Welche Tricks gibts da noch- Terminierung? Was könnte ich noch ausprobieren?

Zur Rerefenz das furchtbar einfache Skript in go:

package main

import (
	"log"
	"time"

	"github.com/grid-x/modbus"
)

type Logger struct{}

func (l *Logger) Printf(format string, v ...interface{}) {
	log.Printf(format, v...)
}

func main() {
	// handler := modbus.NewTCPClientHandler("rs485.fritz.box:23")
	handler := modbus.NewRTUClientHandler("/dev/ttyUSB0")
	handler.BaudRate = 9600
	handler.DataBits = 8
	handler.Parity = "N"
	handler.StopBits = 1

	client := modbus.NewClient(handler)
	handler.Logger = &Logger{}
	handler.SlaveID = 1

	for {
		if b, err := client.ReadInputRegisters(0, 2); err != nil {
			log.Println(err)
		} else {
			log.Printf("%02x", b)
		}

		handler.Close()
		time.Sleep(time.Second)
	}
}

FeatureRequest: Modul für Solarworld EManager / Kiwigrid

Hallo snaptec,

ich bekomme über einen SolarWorld E-Manager / Kiwigrid alle 5 sec. in meinem lokalen Netzwerk unter http://192.168.0.185/rest/solarworld/lpvm/powerAndBatteryData folgenden Text ausgegeben:

{"PowerInstalledPeak":4655,"PowerProduced":632,"PowerOut":97.08172362555717,"PowerSelfSupplied":534.9182763744428,"PowerSelfConsumed":534.9182763744428,"PowerConsumed":534.9182763744428,"PowerIn":0,"PowerConsumptionMax":{"2018-08-21":5142.857142857143,"2018-08-19":7200,"2018-08-22":5142.857142857143,"2018-08-18":10909.090909090908,"2018-08-25":3228.6995515695066,"2018-08-24":5070.422535211268,"2018-08-20":6260.869565217391}}

Mit den Werten kann ich die openWB betreiben ohne weitere Zähler zu verbauen.

Ich habe einen Job laufen, der mit die Werte einzeln ausliest, auf eine http Seite schreibt und dann lese ich es mit dem http Modul aus. Das ganze funktioniert, läuft aber nicht sehr stabil.

Ich bekomme das leider nicht hin es als Modul zubauen. Wäre klasse wenn du oder andere User unterstützen könnten.

Ansonsten ein Wahnsinnsprojekt was ihr auf die Beine gestellt habt. Vielen Dank dafür.

Grüße, Philipp

Anzeige und ggf. Beschreiben der EVSE-Modbusregister

Für die angeschlossenen "EVSE WB" / "EVSE DIN" wäre für Entwickler die Anzeige und das manuelle Schreiben der Modbusregister hilfreich, da dies momentan (16.05.2018) nur über die UART-Verbindung zur EVSE möglich ist (per BT-Modul oder USB/UART).
Bei Nutzung in einem RS485-Produktivsystem wird die UART-Schnittstelle durch den RS485-IC belegt, so dass nur ein aufwendiger Umbau den Zugriff ermöglichen würde.
Der Zugriff direkt über openWB erspart dieses procedere.

Zum Anzeigen der Modbuswerte könnte z.B. ein neuer Button auf der Einstellseite von openWB realisiert werden, der einmalig die Werte anzeigt (unter Angabe der EVDE-Modbus-ID, da mehrere EVSE im System sein könnten).
Das Setzen eines Wertes müsste dann ggf. in einem Untermenü stattfinden.
So wie in der EVSE-APP wäre es ausreichend.

Aktuelle register EVSE-FW 8 (Stand 16.05.2018)
RAM
1000: Configured Current
1001: Actual Current
1002: Vehicle Status
1003: PP-Limit
1004: Turn off bit
1005: Firmware Version
1006: EVSE Status

EEPROM
2000: Current after boot
2001: Modbus Status
2002: Min. Current Value
2003: Analog Input Config
2004: Amps after boot (evse-button)
2005: activate/deactivate EVSE
2006: Current Sharing Mode
2007: PP-Detection

FeatureRequest: Paypal based charging

Feature Request: Freischaltung der Wallbox mit Paypal.
Der Preis pro kWh ist einstellbar: Beispiel 30Cent

-> An der Wallbox ist ein QR Code mit einem Bezahllink zu Paypal.
-> Der Nutzer will 10kWh nachladen, also bezahlt er mit Paypal 3€ im Voraus.
-> Nach 10kWh bricht die Wallbox den Ladevorgang ab, da die 3€ "verbraucht" wurden.

Software-Schalter zur Anpassung des Regelbereiches Solarladen

Bisher erfolgt die Regelung für Solarladen im Bereich der Einspeiseleistung 0-230W (einphasig)
Über den Schalter erfolgt die Auswahl, ob dieser Regelbereich wie bisher oder im Bereich von 0-230W Bezug erfolgen soll.
Vorschlag zur Benennung:
Regelziel: Vermeidung von Einspeisung oder Bezug.

Keine Auslesung von PP CP?

Sehe ich das richtig, dass weder bei der Bauvariante mit festem Kabel (wo dann der PP-Widerstand fest angeschlossen ist) noch bei der Bauvariante mit Dose der PP und CP ausgelesen wird? Wie wird dann

  1. erkannt, ob ein Fahrzeug angeschlossen ist?
  2. gewährleistet, dass bei der Bauvariante mit Dose das Ladekabel nicht überlastet wird?
  3. der Zustand des Fahrzeugs (codiert über schaltbare Widerstände im Fahrzeug, die die Spannung des PWM-Signals auf dem CP beeinflusst) detektiert? Nur im Status C (6V bzw. 1,3k Ohm) oder D (mit Belüftung. 3V bzw 270 Ohm darf das Schütz eingeschaltet werden, also der Stecker oder die Dose unter Spannung stehen.

Feature Request: Überschussabhängige Steuerung weiterer Verbraucher

Eine Überschussabhängige Steuerung weiterer Verbraucher könnte durchaus eine sinnvolle Ergänzung zur solargeführten Überschussladung sein.
Gerade kleinere Verbraucher(<1kW), deren Betrieb sich problemlos verschieben lässt, könnten die Lücke füllen, die der Mindestladestrom von 6A bedingt, bzw. den Solarstrom verbrauchen, sofern kein Fahrzeug zur Ladung bereitsteht.

Beispiel Poolpumpe: Leistung ca. 600W. Priorität eine Stufe geringer als die Fahrzeugladung.
Der Einsatzzeitraum lässt sich problemlos verschieben. Es muss lediglich gewährleistet werden, dass diese eine festzulegende Mindestlaufzeit von z.B. 5h/d erreicht. Restlaufzeit könnte während des Nacht-Ladezeitraums nachgeholt werden. Idealerweise nach Beendigung der Ladung durch das Fahrzeug.
Aktuell wird die Pumpe durch eine Zeitschaltuhr mit festen Zeiten gesteuert und das Ladeschütz schaltet die Poolpumpe aus, da ich während der Fahrzeug-Ladung kein Überschuss erwarte.

Beispiel Brunnenpumpe:
Ich fülle die Regenwassertanks bei dem aktuell trockenen Wetter mithilfe einer Brunnenpumpe nach. Diese läuft mit ca 500W aktuell mehrere Stunden pro Tag und wird durch einen Schwimmerschalter und Zeitschaltuhr tagsüber gefüllt. Ein nächtliches Nachholen erscheint mir hier nicht sinnvoll, sonst sind die Tanks morgens schon voll. Wasser wird eher am Nachmittag benötigt.

Weitere verschiebbare Verbraucher:
Rasenmäher-Akku ca. 200W Ladezeit ca 1,5h. Niedrigste Priorität. Ladegerät lädt mit gestecktem Akku sofort nach Einstecken des Schuko-Steckers.

Schon ein GPIO-Ausgang der bei einem Überschuss von z.B. 500W einschaltet und einem Bezug von z.B. 100W bzw. Beim Start der Fahrzeugladung ausschaltet, bietet einen einfachen und praktischen Mehrwert zur PV-Nutzung über die reine Fahrzeugladung hinaus.

Stromabrechnung/-logging: Ladungsfreigabe (go-e) -> Stromkonten ?

Lässt sich das go-e Modul so erweitern, dass die in der go-e App unter 'Zugangskontrolle' eingestellte Freigabemethode (Offen, RFID, Strompreise, Ladetimer) bei Betrieb mit der openwb Standalone erhalten bleibt?
Hintergrund ist der, dass an unserer go-e von verschiedenen Personen und zu verschiedenen Stromtarifen geladen wird (Person A Netz, Person A Solar, Person B Netz, Person B Solar, ...). Jede solche Kombination ist einem RFID Chip zugeordnet, der bisher zur Freigabe des Ladevorgangs gechipt werden musste, um die damit geladene Energie kumulativ zu speichern. Die geladenen kWh lesen wir dann über die go-e App aus und rechnen sie entsprechend ab.
Wenn wir die go-e allerdings mit der openwb betreiben startet der Ladevorgang sofort und wird keinen RFID Konto zugeordnet. Versuchen wir trotzdem zu chipen, treten Fehler an der go-e oder am zu ladenden Fahrzeug auf. Eine Stromabrechnung in der beschriebenen Art und Weise ist also zZ bei Betrieb der go-e mit openwb nicht möglich.
Um eine Abrechnung/Logging zu ermöglichen, müsste entweder die RFID Freigabe/Speicherung in der go-e erhalten bleiben, oder eine entsprechende Möglichkeit direkt in der openwb geschaffen werden. Eine Idee für zweitere Möglichkeit wäre, in openwb verschiedene Konten zu erstellen, wovon man vor jedem Ladevorgang das entsprechende auswählt (im Webinterface oder per neuem go-e/USB RFID Modul,...?), um die geladene Energie darauf zu speichern. Wenn man es ganz fancy machen will, kann man ja evtl direkt aus dem Konto heraus über PayPal zu einem hinterlegten Strompreis bezahlen.

DAC als zweite WB

Die zweite WB für lastmanagement per dac ansteuern.
benötigt wird ein dac mit einstellbarer i2c adresse

idee: unterstützung bluetooth beacon

Idee:
im Auto ist ein Bluetooth beacon installiert ( dass alle X sekunden ein "ping" aussendet )
Raspi ( der 3er hat BT ) erkennt das, und schaltet das ganze damit frei.
-> Einfacher als ein Schlüssel-schalter, RFID, ...

Einschränkungen bezüglich Fahrzeug

Ich habe in Foren gelesen, dass openWB nicht mit Teslas funktionieren soll.
Stimmt das?
Oder gibt es sonstige Einschränkungen bezüglich dem Fahrzeug?

feature request: Morgens Laden tageweise aktivierbar

Ich nutze das Nacht-Laden mit SOC-Begrenzung, um meine ZOE nicht auf 100% zu laden.

Im Winter möchte ich aber vor dem Losfahren zusätzlichen Strom für das Vorheizen bereit stellen, unabhängig von SOC des Fahrzeugs. Allerdings benötige ich diese "Ladeleistung" nur Werktags.

Ich möchte also das Morgens Laden nur für einzelne Tage aktivieren, mindestens jedoch (wie Nacht-Laden) das Wochenende ausnehmen können.

  • Minimallösung: Checkbox "nur Werktags"
  • Maximal-Lösung: Einstellung von Start- und Endzeit je Wochentag

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.