Sunny Home Manager 2.0 - Problem bei der Abfrage

Hallo,
ich habe gerade den SMA HM2 in mein Netz eingebunden.

Mit dem ersten der oberen Scripte kann ich schon mal super die meisten Werte auslesen.

Nur weiß ich nicht genau wie ich an den „Eigenverbrauch“ => in o.g. Script ID22959 an den wert von 21200 komme (was ist das für ein wert?). Genauso in der Scriptzeile darunter „Verbrauch“(59462) was steckt hinter der Variable 21200?

Danke
hardlog

Hier wird der Eigenverbrauch ermittelt :
Eigenverbrauch = AC Wirkleistung des Wechselrichters - Einspeisung gesamt

Darunter wird der Verbrauch ermittelt:
Verbrauch = AC Wirkleistung des Wechselrichters + Bezug gesamt - Einspeisung gesamt

Also hinter 21200 verbirgt sich der Leistung des Wechselrichters. Die kommt nicht vom HM2, sondern vom Wechselrichter.

Alles Klar,
Danke!

hardlog

Danke, auch bei mir funktioniert es :slight_smile:

Jedoch startet das Script alle Sekunden, ist das nicht zu viel für IPS?
Die Variablen werden alle 5 Sekunden vom Script her befüllt mit

if (time() % 5 != 0) return;

Kann ich das so einstellen, das das Script nur alle 5 Sekunden startet?

Magst du das finale Script Posten? :slight_smile:

das Modul findest du hier: [Modul] SMA Wechselrichter (ModBus) - #86 von mj04
du musst/kannst das Modul über github installieren und dann nach Anleitung

Nabend… ich kenne mich nicht so gut aus mit Scripten etc.

Ich habe auch eine SHM 2.0, 2 WR und kann den einen WR schon auslesen. Es fehlen da einige Werte und ich müsste den 2. WR auch auslesen damit ich das gegenrechnen kann und damit es dann stimmt.

Das Auslesen vom SHM 2.0 ist da wohl besser, weil da laufen ja alle Werte zusammen von den WR.

Ich habe eine Multicast Socket angelegt und im Debug kommen auch Werte an wie auf den Screenshots zu sehen.


Die Frage ist wie geht es jetzt weiter? Ich hab mir hier alles durchgelesen und es stand was von Variabeln anlegen etc. Ich weiss aber ehrlich gesagt nicht welche ich wo erstellen muss und welche ich wie in Script eintrage damit es dahin die Werte ausgibt.

Wäre nett wenn mir das evtl. mal einer erklären könnte.

Gruß Timo

Morgen,

du legst folgende Variablen und das HM2 Script lt. Screenshot an:
Die Profile kannst du später für die variablen festlegen. Watt, kWh etc.

Im HM2 Script änderst du dann die SetValue ID´s zur jeweiligen Variable.

<?php 

if ($_IPS["SENDER"] == "RegisterVariable")                               // über Register Var ausgeführt 
{ 

    
    $Data  = RegVar_GetBuffer($_IPS["INSTANCE"]);                 // im Puffer der Instanz vorhandene Daten in $data kopieren 
    $Data .= $_IPS["VALUE"];                                                        // neu empfangene Daten an $data anhängen 
    $CRLF  = ",\n"; 
    $HexData = bin2hex($Data); 
    SetValue(27718 /*[Energie Zähler\SMA Home Manager\txt]*/, substr($HexData,417, 16 )); 

    $HexData1=((float)hexdec(substr($HexData,64, 8 ))/10);
  
    if ($HexData1 < 10000)
  //  print_r ($HexData1);
{
    
    SetValue(31366/*[Energie Zähler\SMA Home Manager\Bezug - Summe]*/,(float)hexdec(substr($HexData,64, 8 ))/10); 
    SetValue(27370/*[Energie Zähler\SMA Home Manager\Einspeisung - Summe]*/,(float)hexdec(substr($HexData,104, 8 ))/10); 
    SetValue(33116/*[Energie Zähler\SMA Home Manager\Bezug - L1]*/,(float)hexdec(substr($HexData,336, 8 ))/10); 
    SetValue(13975/*[Energie Zähler\SMA Home Manager\Bezug - L2]*/,(float)hexdec(substr($HexData,624, 8 ))/10); 
    SetValue(59784 /*[Energie Zähler\SMA Home Manager\Bezug - L3]*/,(float)hexdec(substr($HexData,912, 8 ))/10); 
    SetValue(55956 /*[Energie Zähler\SMA Home Manager\Einspeisung - L1]*/,(float)hexdec(substr($HexData,376, 8 ))/10); 
    SetValue(10794/*[Energie Zähler\SMA Home Manager\Einspeisung - L2]*/,(float)hexdec(substr($HexData,664, 8 ))/10); 
    SetValue(57682/*[Energie Zähler\SMA Home Manager\Einspeisung - L3]*/,(float)hexdec(substr($HexData,952, 8 ))/10); 
    SetValue(58491 /*[Energie Zähler\SMA Home Manager\Bezogene Energie]*/,(float)hexdec(substr($HexData,80, 16 ))/3600000); 
    SetValue(44790/*[Energie Zähler\SMA Home Manager\Eingespeiste Energie]*/,(float)hexdec(substr($HexData,120, 16 ))/3600000); 
}
} 

In der RegisterVariable setzt du das Ziel das HM2 Script.
grafik

richimaint

Nabend. Also ich hab es so gemacht wie richi es beschrieben hat, beim ausführen vom Skript kommt auch kein Fehler. Aber er schreibt keine Werte in die Variabeln rein. Hier mal ein paar Bilder:

Könnt ihr da irgendein Fehler erkennen?

Danke.

Das hast du auch gemacht?

grafik

richimaint

Ja habe in der Register Variablen das HM2 Skript ausgewählt.

Wenn du in der Register Variable mal den Debug einschaltest.

Müssten auch Daten kommen:

Aktualisiert sich das HM2 Script?
Müsste sich sekündlich aktualisieren und normalerweise auch die Variablen.

richimaint

Hi,

ne da kommt gar nix an.

Und nein, das Scrpit läuft nur mit einem Ereignis jede Sekunde durch.

Was mach ich falsch?

Ein Ereignis Script brauchst du nicht, dass macht die Register Variable mit dem Multicast Socket.

richimaint

Das macht es alleine leider nicht.

Ich habe wirklich keine Ahnung.

Am MultiSocket kommen Daten an, das script ist kopiert und die variabeln sind reinkopiert.

Bin ratlos.

In der RegisterVariable das richtige Gateway ausgewählt?

Du bist es!

Danke. Läuft alles. Super.

Gibt es irgendwo eine Tabelle, wie man welche Werte ausließt?

Also welche Werte man eingeben muss?

zB.:
[Energie Zähler\SMA Home Manager\Bezug - Summe]/,(float)hexdec(substr($HexData,64, 8 ))/10);

Aber dir natürlich auch Danke @ richi.

Also er wäre halt top, wenn man die ganzen Werte die in der App sind auch im IPS hätte.

  • Batterieladestatus

  • Batterieladung

  • Batterieentladung

  • Verbrauch aktuell

  • Verbrauch Tag

  • PV Erzeugung aktuell

  • PV Erzeugung gesamt

  • Einspeisung aktuell /done

  • Einspeisung gesamt /done

  • Einspeisung Tag

  • Netzbezug aktuell /done

  • Netzbezug gesamt /done

Jemand einen Plan wo man die Hex Werte dafür herbekommt?

Gruß