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/05/29 17:45] – [Lösungen 1] 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  
 + 
 + 
 + 
 +==== Möglichkeit 1 CRON ====
  
   * Sendescript Datei erstellen   * Sendescript Datei erstellen
Zeile 61: Zeile 73:
  
 set -e set -e
 +
  
  
Zeile 68: Zeile 81:
 UUID1="768xxxx" UUID1="768xxxx"
 UUID2="d69xxxx" UUID2="d69xxxx"
 +UUID3=""
 host_db="192.168.xxx" host_db="192.168.xxx"
 TOTAL="" TOTAL=""
 TOTAL_NUM="" TOTAL_NUM=""
 +DAY=""
 +DAY_NUM=""
 ACTUAL="" ACTUAL=""
 ACTUAL_NUM="" ACTUAL_NUM=""
Zeile 88: Zeile 104:
 #request value TOTAL #request value TOTAL
 TOTAL=$(/usr/local/bin/mi600 $host_pv $user $password webdata_total_e) TOTAL=$(/usr/local/bin/mi600 $host_pv $user $password webdata_total_e)
 +
 #Remove end SPACE-Char #Remove end SPACE-Char
 TOTAL_NUM=$(echo $TOTAL | sed 's/[[:space:]]*$//') TOTAL_NUM=$(echo $TOTAL | sed 's/[[:space:]]*$//')
  
 #check if non ZERO #check if non ZERO
-if [ $TOTAL_NUM != "0.0" ]; then+if [ $TOTAL_NUM != "0.0" ] || [ $TOTAL_NUM != "0" ]; then
 #Send to DB #Send to DB
   wget -O - -q "http://"$host_db"/middleware/data/"$UUID2".json?operation=add&value="$TOTAL_NUM""   wget -O - -q "http://"$host_db"/middleware/data/"$UUID2".json?operation=add&value="$TOTAL_NUM""
Zeile 98: Zeile 115:
  
  
- +#DAY ENERGY
 #DAY=$(/usr/local/bin/mi600 $host_pv $user $password webdata_today_e) #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 #debug for console
-#echo 'Today:'$DAY+#echo 'Today:'$DAY_NUM
 #echo 'ACTUAL:'$ACTUAL_NUM #echo 'ACTUAL:'$ACTUAL_NUM
 #echo 'TOTAL:'$TOTAL_NUM #echo 'TOTAL:'$TOTAL_NUM
Zeile 112: Zeile 130:
 Für den Kanal Leistung kann Auflösung "1" genommen werden </note> 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 125: 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.1685375109.txt.gz · Zuletzt geändert: 2023/05/29 17:45 von raptorsds