Benutzer-Werkzeuge

Webseiten-Werkzeuge


hardware:channels:solar_inverters:deye

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
hardware:channels:solar_inverters:deye [2023/02/14 18:13] – SHELL und PATH hinzugefügt ; besser kompatibilität für nicht Pi umgebungen raptorsdshardware:channels:solar_inverters:deye [2023/07/30 11:35] (aktuell) – duplicates erhöht raptorsds
Zeile 9: Zeile 9:
 Wer das WLAN nutzt sollte dringend die Firmware auf eine sicheren Stand updaten!\\ Wer das WLAN nutzt sollte dringend die Firmware auf eine sicheren Stand updaten!\\
 [[https://www.heise.de/news/Sicherheitsluecke-bei-Mikrowechselrichtern-von-Deye-Haendler-nicht-zustaendig-7483376.html|heise.de: Sicherheitslücke in Mikrowechselrichtern von Deye]]\\ [[https://www.heise.de/news/Sicherheitsluecke-bei-Mikrowechselrichtern-von-Deye-Haendler-nicht-zustaendig-7483376.html|heise.de: Sicherheitslücke in Mikrowechselrichtern von Deye]]\\
-[[https://zinnzgreen.de/service/deye-mikrowechselrichter-systemupdate/|zinsgreen.de: So aktualisieren Sie Ihren DEYE Mikrowechselrichter]]</note>+[[https://asarah.de/blogs/news/firmware-update-zur-sicherheit-von-deye-mikrowechselrichtern|asarah.de: So aktualisieren Sie Ihren DEYE Mikrowechselrichter]]</note> 
 + 
 +<note tip>Die Sicherheitslücke sind ab der version 1.53 geschlossen diese wird auch automatisch Verteilt\\ 
 +Die Neuste Version ist 1.57 in dieser soll der "no Web-Interface" Bug nach Start des WR behoben worden sein</note> 
  
 Vielen Dank an [[https://github.com/dr-ni|DR_NI auf github]] für sein Abfragescript sowie die Hilfen und Anpassungen. Vielen Dank an [[https://github.com/dr-ni|DR_NI auf github]] für sein Abfragescript sowie die Hilfen und Anpassungen.
Zeile 21: Zeile 25:
  
 Die zweite Lösung wird im Folgenden beschrieben. Die zweite Lösung wird im Folgenden beschrieben.
 +
 +
  
 ==== Schritt für Schritt ==== ==== Schritt für Schritt ====
 +
 +==== Vorbereitung ====
  
   * Wechselrichter über die Weboberfläche ins Netzwerk einbinden   * Wechselrichter über die Weboberfläche ins Netzwerk einbinden
Zeile 47: Zeile 55:
   * Test einer Abfrage (IP-Adresse und Zugangsdaten admin/admin an seinen Wechselrichter anpassen)   * Test einer Abfrage (IP-Adresse und Zugangsdaten admin/admin an seinen Wechselrichter anpassen)
  
-   mi600 [IP-Wechselrichter] admin admin webdata_today_e +   mi600 IP-Wechselrichter Nutzer Passwort webdata_today_e 
  
-  * Sendescript Datei erstellen 
  
-   nano auslesen.sh 
  
-  * darin folgenden Inhalt hinzufügen+==== Möglichkeit 1 CRON ==== 
 + 
 +  * Sendescript Datei erstellen 
 +  - Manuelle erstellen <code> nano auslesen.sh </code> 
 +  - alternativ git clone <code>git clone https://github.com/RaptorSDS/VZ_deye_script.git </code> 
 +    
 +    
 +  * darin folgenden Inhalt hinzufügen/editieren
  
 <code base bash | auslesen.sh> <code base bash | auslesen.sh>
 #!/bin/bash #!/bin/bash
-SHELL=/bin/sh 
 PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
-# set -e beendet das Script wenn WR nicht erreichbar ist+
 set -e set -e
-#Dieser Bereich zeigt die Logindaten + 
-host_pv="192.xxx.xxx.xxx"+ 
 + 
 +host_pv="192.168.xxxx"
 user="admin" user="admin"
 password="admin" password="admin"
-UUID1="7680efc0-xxx-xxxx-xxxx-xxxxxxx+UUID1="768xxxx
-#UUID2="" +UUID2="d69xxxx" 
-host_db="192.xxx.xxx.xxx"+UUID3="" 
 +host_db="192.168.xxx
 +TOTAL="" 
 +TOTAL_NUM="" 
 +DAY="" 
 +DAY_NUM=""
 ACTUAL="" ACTUAL=""
 ACTUAL_NUM="" ACTUAL_NUM=""
-#Dieser Bereich startet die Abfrage + 
-#TOTAL=$(/usr/local/bin/mi600 $host_pv $user $password webdata_total_e) + 
-#DAY=$(/usr/local/bin/mi600 $host_pv $user $password webdata_today_e)+#request value 
 ACTUAL=$(/usr/local/bin/mi600 $host_pv $user $password webdata_now_p) ACTUAL=$(/usr/local/bin/mi600 $host_pv $user $password webdata_now_p)
-#Entfernung von Leerzeichen+#remove Zero in Front
 ACTUAL_NUM=$(($ACTUAL)) ACTUAL_NUM=$(($ACTUAL))
-#Senden der Daten An Datenbank+ 
 + 
 +#send database
 wget -O - -q "http://"$host_db"/middleware/data/"$UUID1".json?operation=add&value="$ACTUAL_NUM"" wget -O - -q "http://"$host_db"/middleware/data/"$UUID1".json?operation=add&value="$ACTUAL_NUM""
-#wget -O - -q "http://"$host_db"/middleware/data/"$UUID2".json?operation=add&value"$DAY"" + 
-#Anzeige der Werte in Konsole für Debug + 
-#echo 'Today:'$DAY+ 
 +#request value TOTAL 
 +TOTAL=$(/usr/local/bin/mi600 $host_pv $user $password webdata_total_e) 
 + 
 +#Remove end SPACE-Char 
 +TOTAL_NUM=$(echo $TOTAL | sed 's/[[:space:]]*$//'
 + 
 +#check if non ZERO 
 +if [ $TOTAL_NUM != "0.0" ] || [ $TOTAL_NUM != "0" ]; then 
 +#Send to DB 
 +  wget -O - -q "http://"$host_db"/middleware/data/"$UUID2".json?operation=add&value="$TOTAL_NUM"" 
 +fi 
 + 
 + 
 +#DAY ENERGY 
 +#DAY=$(/usr/local/bin/mi600 $host_pv $user $password webdata_today_e) 
 +#DAY_NUM=$(echo $DAY | sed 's/[[:space:]]*$//'
 +#wget -O - -q "http://"$host_db"/middleware/data/"$UUID3".json?operation=add&value="$DAY_NUM"" 
 + 
 +#debug for console 
 +#echo 'Today:'$DAY_NUM
 #echo 'ACTUAL:'$ACTUAL_NUM #echo 'ACTUAL:'$ACTUAL_NUM
 +#echo 'TOTAL:'$TOTAL_NUM
 </code> </code>
      
  
-<note>Bitte IP Adressen, Wechselrichter Zugangsdaten, UUID an deine Gegebenheiten anpassen.</note>+<note>Bitte IP Adressen, Wechselrichter Zugangsdaten, UUID an deine Gegebenheiten anpassen. 
 +Für den Kanal Leistung kann Auflösung "1" genommen werden </note>
  
-Dieses Script sendet nur die aktuelle Leistung an die Middleware, bereits vorbereitet ist alternativ/zusätzlich der Tageszählerstand.\\+Dieses Script sendet nur die aktuelle Leistung an die Middleware, bereits vorbereitet ist alternativ/zusätzlich der ZählerstandAugrund der langsamen Daten ist eine Zählerstand nicht gut darstellbar\\
 Zeilen mit "#" sind auskommentiert und können bei Bedarf genutzt werden für Debug oder um einen zweiten Kanal hinzuzufügen. Zeilen mit "#" sind auskommentiert und können bei Bedarf genutzt werden für Debug oder um einen zweiten Kanal hinzuzufügen.
  
Zeile 100: Zeile 143:
 Die Weboberfläche hat eine sehr langsame Aktualisierungsrate daher sollte der Cronjob nur alle 3 oder 5 Minuten laufen. Die Weboberfläche hat eine sehr langsame Aktualisierungsrate daher sollte der Cronjob nur alle 3 oder 5 Minuten laufen.
  
 +
 +==== Möglichkeit 2 VZlogger mit Exec ====
 +
 +Nachteile Vzlogger darf nicht als root laufen --> umstellung vzlogger siehe [[software:controller:vzlogger|vzlogger]] "vzlogger als anderer Benutzer ausführen"
 +
 +
 +  * Sendescript Datei erstellen
 +  - Manuelle erstellen <code> nano deye_read_exec.sh </code>
 +  - alternativ git clone <code>git clone https://github.com/RaptorSDS/VZ_deye_script.git </code>
 +   
 +   
 +
 +  * darin folgenden Inhalt hinzufügen/editieren
 +
 +<code base bash | deye_read_exec.sh.sh>
 +
 +#!/bin/bash
 +PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
 +
 +#set -e / set -u stop scripts if something is wrong
 +set -e
 +set -u
 +
 +# Script: deye_read_exec.sh
 +# Author: Tobias Baumann aka RaptorSDS
 +# License: MIT
 +# with help of OpenAI GPT-3.5 and VZlogger Group
 +# idee by script for KOSTAL_Pico JSON VZlogger exec
 +
 +# Function to display script usage
 +usage() {
 +  echo "Usage: $0 <hostname> <reading1> <reading2> ..."
 +  exit 1
 +}
 +
 +# Validate required arguments
 +if [ "$#" -lt 2 ]; then
 +  usage
 +fi
 +
 +# Extract hostname
 +HOSTNAME="$1"
 +shift
 +
 +# Extract readings
 +READINGS="$*"
 +
 +user="admin"
 +password="admin"
 +
 +# Request values based on input readings
 +for READING in $READINGS; do
 +  if [ "$READING" == "ACTUAL" ]; then
 +    ACTUAL=$(/usr/local/bin/mi600 "$HOSTNAME" "$user" "$password" webdata_now_p)
 +    #Remove end SPACE-Char
 +    ACTUAL_NUM=$(($ACTUAL))
 +    OUTPUT="$ACTUAL_NUM"
 +    printf "%s = %s\n" "$READING" "$OUTPUT"
 +  elif [ "$READING" == "TOTAL" ]; then
 +    TOTAL=$(/usr/local/bin/mi600 "$HOSTNAME" "$user" "$password" webdata_total_e)
 +    ##Remove end SPACE-Char
 +    TOTAL_NUM=$(echo "$TOTAL" | sed 's/[[:space:]]*$//')
 +    OUTPUT="$TOTAL_NUM"
 +    if [ $TOTAL_NUM == "0.0" ] || [ $TOTAL_NUM == "0" ] ; then
 +      printf "%s = %s\n" "undefine" "$OUTPUT"
 +    else
 +      printf "%s = %s\n" "$READING" "$OUTPUT"
 +    fi
 +  elif [ "$READING" == "DAY" ]; then
 +    DAY=$(/usr/local/bin/mi600 "$HOSTNAME" "$user" "$password" webdata_today_e)
 +    ##Remove end SPACE-Char
 +    DAY_NUM=$(echo "$DAY" | sed 's/[[:space:]]*$//')
 +    OUTPUT="$DAY_NUM"
 +    printf "%s = %s\n" "$READING" "$OUTPUT"
 +  else
 +    echo "Invalid reading: $READING"
 +  fi
 +done
 +</code>
 +
 +<note>
 +Bitte Zugangsdaten, an deine Gegebenheiten anpassen. 
 +</note>
 +<note>
 +Der Script hat folgende Config  xx.sh hostname reading1 reading2 ... / Reading dürfen sein DAY , TOTAL, ACTUAL
 +</note>
 +
 +
 +  * speichern und ausführbar machen 
 +<code> sudo chmod +x deye_read_exec.sh </code>
 +
 +
 +  * man kann nun zb nach /etc/deye/ kopiernen oder ander gut erkennbare Orte
 +
 +
 +  * Kanal Erstellen im Fronend
 +
 +
 +  * vzlogger.conf editieren oder erstellen mit folgendem Inhalt
 +
 +
 +<code>
 +    {
 +      "enabled": true,
 +      "allowskip": true,
 +      "interval": 240,
 +      "aggtime": -1,
 +      "aggfixedinterval": false,
 +      "channels": [
 +        {
 +          "api": "volkszaehler",
 +          "uuid": "7680efc0-xxx",
 +          "identifier": "ACTUAL",
 +          "middleware": "http://localhost/middleware.php",
 +          "aggmode": "avg",
 +          "duplicates": 0
 +        },
 +        {
 +          "api": "volkszaehler",
 +          "uuid": "d69e8d40-xx",
 +          "identifier": "TOTAL",
 +          "middleware": "http://localhost/middleware.php",
 +          "aggmode": "none",
 +          "duplicates": 43200
 +        }
 +      ],
 +      "protocol": "exec",
 +      "command": "/etc/deye/deye_read_exec.sh 192.168.xxxx ACTUAL TOTAL",
 +      "format": "$i = $v"
 +    }
 +</code>
 +<note important>Der Inverter wird nun alle 240s gelesen , ACTUAL und TOTAL an die DB Übergeben , TOTAL wird auf Duplicate getestet und nur spätesten wenn kein neuer Wert vorhanden ist alle 43200s (12h) neu übernommen</note>
 +
 +
 +  * vzlogger neu starten 
hardware/channels/solar_inverters/deye.1676394783.txt.gz · Zuletzt geändert: von raptorsds