Jump to content

Recommended Posts

Geschrieben

Hallo!

Noch habe ich keine WARP3, eine Smart oder Pro wird es aber definitiv werden. Mein Wechselrichter ist ein Sungrow SG10RT, also ohne Speicher und ohne Smartmeter.

Um nicht noch einen Zähler hinter dem jetzt neu installierten Zähler des VNB zu installieren, will ich dessen Werte zur Steuerung des PV-Überschussladens nutzen. Für die optische Schnittstelle hab ich einen IR-Lesekopf mit WLAN (ähnlich dem Hichi) bestellt. Auf dessen ESP01S läuft ein Tasmota-Build, die SML-Daten des Zählers stehen als mindestens über MQTT zur Verfügung.

Um das als Zähler in der WARP3 anzulegen, brauche ich noch einen MQTT-Broker, oder?

Zusätzlich möchte ich ohne Relevanz fürs EV-Laden die Daten eines weiteren Zwischenzählers und des Wechselrichters auslesen. Visualisierung und später auch Steuerung weiterer Verbraucher ist das Ziel. Wechselrichter, VNB- und Unterzähler sind im oder nahe des Zählerschrankes, LAN und WLAN ist da.

Wäre es sinnvoll, die ganze Zählerausleserei über ein einziges Gerät im Schrank zu erledigen? Was käme in Frage? Der WEM?

Den Zwischenzähler hab ich ebenfalls noch nicht. Üblicherweise haben die Modbus/RTU, wofür wieder ein Gateway nötig wäre. 🙄

Zwei Wärmezähler mit IR-Schittstelle hab ich auch noch… 🫠

Ich freue mich auf eure Ideen oder Links.

  • 3 weeks later...
Geschrieben (bearbeitet)

Ich antworte mir einmal selbst:

Zähler als MQTT gibt es in WARP nicht (nur in einer internen Entwicklungsversion), weil die Daten zugeordnet werden müssten.

Es ist möglich, die Zählerdaten vom Lesekopf per MQTT an Homeassistent und andere zu melden und die WARP von dort fremdzusteuern. Momentan für mich viel Konfiguration und nicht KISS.

Deshalb habe ich in der WARP einen API-Zähler mit dem einzigen Wert „Wirk­leistung (Bezug minus Ein­speisung); Σ L1, L2, L3 [W]“ angelegt. Vom Lesekopf lasse ich über das tasmota-Script diesen Wert per http POST senden.

>D
>B
=>sensor53 r
>S
=>WebQuery http://192.168.XXX.XXX/meters/1/update POST [Content-Type:application/json] [%sml[3]%]
>M 1
+1,3,s,0,9600,MT631
1,77070100010800ff@1000,Total Consumed,kWh,Total_in,18
1,77070100020800ff@1000,Total Delivered,kWh,Total_out,18
1,77070100100700ff@1,Current Consumption,W,Power_cur,16
#
bearbeitet von ses
IP XXX
  • 6 months later...
  • 4 months later...
Geschrieben
Zitat

Zähler als MQTT gibt es in WARP nicht (nur in einer internen Entwicklungsversion), weil die Daten zugeordnet werden müssten.

 

Ist das immer noch so? Ich habe ebenfalls einen Tasmota-Zähler der an HomeAssistant die Daten per MQTT schickt. 
Beispiel:

 
 
{
"Time": "2025-04-17T18:35:31",
"Time": "2025-04-17T18:35:51",
"eHZ": {
"E_in": 67076.074,
"E_in": 67076.079,
"E_out": 49516.958,
"Power": 0,
"Power2": 846
}
}
Für mehr Details müsste ich wohl das Tasmota Script ändern. Allerdings bekomme ich wohl in Kürze auch einen anderen Stromzähler.
Geschrieben (bearbeitet)

Danke für die prompte Antwort. Ich habe jetzt versucht einen Zähler einzurichten. Die  Betriebsanleitung hat im Abschnitt 5.3.1 zum Thema API leider keine Details und auch bei der Einrichtung des Zählers ist es mir schwer gefallen festzulegen welche Zählerangaben ich da machen soll. Meine Zähler sind alle ausschliesslich digital verfügbar - der Zweirichtungszähler hat einen Tasmota-Lesekopf wie oben beschrieben. Meine SMA Wechselrichter werden über einen raspberry PI ausgelesen, wo ich per Script selbst die MQTT Nachrichten zusammen baue. Wenn es noch keine MQTT Unterstützung gibt muss ich also selbst die API Anbindung verstehen, was bisher nicht der Fall ist. In der Benutzeroberfläche bin ich überhaupt nicht nach API Details gefragt worden.

so bekomme ich bei meinem eingerichteten Zähler lediglich einen Zählernamen und "Es sind bisher keine Werte vorhanden." angezeigt. In der Benutzeroberfläche sind relativ viele Klicks nötig, um sich die Details anzeigen zu lassen. Schöne wäre wenn es einen YAML Import und Export der Konfiguration geben würde - das würde den Austausch von Erfahrungen zwischen Usern vereinfachen. Ich guck mal ob ich die github Links finde oder hier schon was zu Thema Import und Export von Konfigurationen diskutiert wurde.

bearbeitet von seppl2025
Geschrieben

Ich verwende jetzt das unten stehende Script "warp" zum testen

warp -h zeigt die usage

Usage: warp [options]
Options:
  -h, --help           Show this help message
  -i, --info           show API info
  -u, --update [value] Update meter value

warp -i

warp -i
see https://docs.warp-charger.com/docs/api_reference
version: 2.7.8+67efdb29
meter1: Netz
meter1 value: 74 - Summe der Phasenwirkleistungen (Bezug - Einspeisung)

warp -u 1200 setzt z.B. die aktuelle Leistung auf 1200 Watt der Zähler zeigt das dann auch an

warp -u 1200
:1200

Fehler werden angezeigt z.B.
warp -u 1200a       
:Failed to deserialize: JSON payload could not be parsed

#!/bin/bash
# WF 2025-04-18
docs=https://docs.warp-charger.com/docs/api_reference
wallbox=http://wallbox.bitplan.com

#ansi colors
#http://www.csc.uvic.ca/~sae/seng265/fall04/tips/s265s047-tips/bash-using-colors.html
blue='\033[0;34m'
red='\033[0;31m'
green='\033[0;32m' # '\e[1;32m' is too bright for white bg.
endColor='\033[0m'

#
# a colored message
#   params:
#     1: l_color - the color of the message
#     2: l_msg - the message to display
#
color_msg() {
  local l_color="$1"
  local l_msg="$2"
  echo -e "${l_color}$l_msg${endColor}"
}

# Function to display negative messages
negative() {
  local l_msg="$1"
  color_msg $red ":$l_msg"
}

# Function to display positive messages
positive() {
  local l_msg="$1"
  color_msg $green ":$l_msg"
}

# call the wallbox API with the given command
# and filter the json result with given jq filter
# params
#  #1: cmd - the api command
#  #2: filter - the jq filter
api() {
  local l_cmd="$1"
  local l_filter="$2"
  curl -s $wallbox/$l_cmd | jq -r "$l_filter"
}

# call the wallbox API with the given command
# and filter the json result with given jq filter
# show result with the given label
# params
#  #1: label - the title label
#  #2: cmd - the api command
#  #3: filter - the jq filter
show_api() {
  local l_label="$1"
  local l_cmd="$2"
  local l_filter="$3"
  printf "%s: " "$l_label"
  api "$l_cmd" "$l_filter"
}

# explain what a value_id means
explain_value_id() {
  local l_value_id=$1
  local l_explanation=""

  case $l_value_id in
    1) l_explanation="Spannung L1-N" ;;
    2) l_explanation="Spannung L2-N" ;;
    3) l_explanation="Spannung L3-N" ;;
    4) l_explanation="Spannung L1-L2" ;;
    5) l_explanation="Spannung L2-L3" ;;
    6) l_explanation="Spannung L3-L1" ;;
    7) l_explanation="Durchschnittliche Phasenspannung" ;;
    8) l_explanation="Durchschnitt Spannung L1-L2, L2-L3, L3-L1" ;;
    13|17|21) l_explanation="Strom (Bezug + Einspeisung)" ;;
    25) l_explanation="Neutralleiterstrom" ;;
    29) l_explanation="Durchschnitt der Phasenströme" ;;
    33) l_explanation="Summe der Phasenströme" ;;
    39|48|57) l_explanation="Wirkleistung (Bezug - Einspeisung)" ;;
    74) l_explanation="Summe der Phasenwirkleistungen (Bezug - Einspeisung)" ;;
    83|91|99) l_explanation="Blindleistung (induktiv - kapazitiv)" ;;
    115) l_explanation="Summe der Phasenblindleistungen" ;;
    122|130|138) l_explanation="Scheinleistung (Bezug + Einspeisung)" ;;
    154) l_explanation="Summe der Phasenscheinleistungen" ;;
    209) l_explanation="Wirkenergie Bezug (seit Herstellung)" ;;
    210) l_explanation="Wirkenergie Bezug (seit letztem Zurücksetzen)" ;;
    211) l_explanation="Wirkenergie Einspeisung (seit Herstellung)" ;;
    212) l_explanation="Wirkenergie Einspeisung (seit letztem Zurücksetzen)" ;;
    213) l_explanation="Wirkenergie Bezug + Einspeisung (seit Herstellung)" ;;
    214) l_explanation="Wirkenergie Bezug + Einspeisung (seit letztem Zurücksetzen)" ;;
    277) l_explanation="Blindenergie induktiv + kapazitiv (seit Herstellung)" ;;
    353|354|355) l_explanation="Leistungsfaktor (gerichtet)" ;;
    356) l_explanation="Summe der gerichteten Leistungsfaktoren" ;;
    364) l_explanation="Netzfrequenz" ;;
    *) l_explanation="Unknown value_id" ;;
  esac

  echo "$l_explanation"
}

# print usage information
usage() {
  echo "Usage: $(basename $0) [options]"
  echo "Options:"
  echo "  -h, --help           Show this help message"
  echo "  -i, --info           show API info"
  echo "  -u, --update [value] Update meter value"
  exit 1
}

#
# show API infos
#
info() {
  echo "see $docs"

  show_api version info/version '.firmware'
  show_api meter1 meters/1/config '.[1].display_name'
  first_value_id=$(api meters/1/config '.[1].value_ids[0]')
  first_value=$(explain_value_id $first_value_id)
  printf "meter1 value: %s - %s\n" "$first_value_id" "$first_value"
}

# Update meter values function
# params
#  #1: value - the value to set (should be an array of values)
update_meter() {
  local l_value="$1"
  local l_result=$(curl -s -X POST "$wallbox/meters/1/update" \
    -d "[$l_value]")
  if [ -z "$l_result" ]; then
    positive "$l_value Watt set"
  else
    negative "$l_result"
  fi
}

# handle command line options
while [ "$1" != "" ]; do
  option="$1"
  case $option in
    -h|--help)
      usage
      ;;
    -u|--update)
      shift
      value="$1"
      if [ "$value" = "" ]; then
        echo "Error: Missing value for update"
        usage
      fi
      # Update meter value
      update_meter "$value"
      # Add update functionality here
      ;;
    -i|--info)
      info
      ;;
    *)
      echo "Unknown option: $option"
      usage
      ;;
  esac
  shift
done


 

 

Geschrieben
On 4/18/2025 at 9:38 AM, seppl2025 said:

Schöne wäre wenn es einen YAML Import und Export der Konfiguration geben würde - das würde den Austausch von Erfahrungen zwischen Usern vereinfachen. Ich guck mal ob ich die github Links finde oder hier schon was zu Thema Import und Export von Konfigurationen diskutiert wurde.

Ein Export und Import aller Einstellungen steht schon länger auf unserer Wunschliste. In diesem Fall würdest du aber auch nicht deine gesamte Konfiguration anderen Nutzern zur Verfügung stellen wollen.

Die Einstellungen eines einzelnen Zählers kannst du per JSON runterladen: http://warp3-2abc/meters/1/config

Importieren kannst du die Einstellungen eines Zählers, indem du sie per HTTP PUT an exakt die gleiche URL schickst.

Alternativ kannst du die gleichen JSON-Daten per MQTT unter warp3/2abc/meters/1/config ansehen und importieren kannst du sie, indem du sie an warp3/2abc/meters/1/config_update schickst.

Wenn du einen API-Zähler mit mehreren Werten einrichtest, musst du alle als JSON-Array an …/meters/1/update schicken, also z.B. [123.4, 555, 42.3]. Funktioniert sowohl über HTTP als auch MQTT.

Geschrieben (bearbeitet)

@MatzeTF Danke für die Hinweise. Im Moment habe ich ja theoretisch zwei Zähler. Den einen kann ich zumindestens schon mal "simulieren". Der andere ist der Warpcharger Zähler, der wird bei mir aber als "Kein Stromzähler angeschlossen" dargestellt. 

Gestern wollte ich das Laden mit dem simulierten Zähler ausprobieren. Das Ergebnis im Lade log ist aber:

18.04.2025 19:15 Maximum-Voll N/A 13:18:35 N/A

Der Ladeverlauf sieht dann so aus:

image.thumb.png.49eed6e152c8164bf64303005db33f56.png

bearbeitet von seppl2025
Geschrieben (bearbeitet)

Wenn ich das live beeinflusse 

warp -u 1200
:1200 Watt set
wf@fixit com.bitplan.rose % warp -u 1250
:1250 Watt set
wf@fixit com.bitplan.rose % warp -u 3600
:3600 Watt set
wf@fixit com.bitplan.rose % warp -u 3650
:3650 Watt set


bekomme ich image.thumb.png.156541ffc5916b596fbc4b0b95a40941.png

bearbeitet von seppl2025
Geschrieben (bearbeitet)

Gerne würde ich im github mir die Issues anschauen und ggf. neue erstellen - inbesondere vermisse ich den issue-Link in der Weboberfläche selbst.

Der Bereich:

warp3-2etS
WARP3 Charger Smart 11kW
2.7.8+67efdb29


sollte IMHO aus Links bestehen die auf die Produkt/Release und Issue-Seiten verweisen bzw auch hier aufs Forum.

bearbeitet von seppl2025
Geschrieben
Quote

Danke für die Hinweise. Im Moment habe ich ja theoretisch zwei Zähler. Den einen kann ich zumindestens schon mal "simulieren". Der andere ist der Warpcharger Zähler, der wird bei mir aber als "Kein Stromzähler angeschlossen" dargestellt.

Hast du eine Pro oder Smart? Lade doch mal einen Debug-Report runter (unter System → Ereignis-Log) und hänge ihn hier an.

Quote

Gestern wollte ich das Laden mit dem simulierten Zähler ausprobieren. Das Ergebnis im Lade log ist aber:

18.04.2025 19:15 Maximum-Voll N/A 13:18:35 N/A

Was ist das für eine Meldung? Die sieht nicht aus wie eine Meldung der Wallbox.

Quote

Wenn ich das live beeinflusse […]

Die unterbrochene Linie kommt daher, dass du zu selten Werte lieferst. Die Wallbox möchte sekündlich Werte bekommen, damit PV-Überschussladen ordentlich funktioniert.

Ansonsten bedeuten negative Werte Überschuss, der eingespeist wird. Mit positiven Werten wirst du die Wallbox nicht zum Laden bekommen.

Quote

Nun nehme ich an, dass ich zunächst mal den internen Zähler ebenfalls simulieren / befüllen müssen, damit eine PV-Überschusssteuerung möglich wird.

Nö, eine WARP Smart ohne Zähler kann problemlos PV-Überschlussladen machen.

Quote

Gerne würde ich im github mir die Issues anschauen und ggf. neue erstellen - inbesondere vermisse ich den issue-Link in der Weboberfläche selbst.

Der Großteil unserer Nutzer hat von github und Issues keine Ahnung. Die Nutzer ohne Ahnung rufen üblicherweise bei uns an und für die Nutzer mit Ahnung sollte das Forum die erste Anlaufstelle sein. Die Issues auf Github sind für tatsächliche Software-Bugs und geplante Änderungen und Features, die wir nicht vergessen wollen. Anwenderprobleme wie „ich kriege PV-Überschussladen nicht ans Laufen“ gehören da nicht hin.

Quote

sollte IMHO aus Links bestehen die auf die Produkt/Release und Issue-Seiten verweisen bzw auch hier aufs Forum.

Die Idee mit Links auf die Produktseiten und Release-Notes der Firmware gefällt mir.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...