Sunny Home Manager 2.0 - Problem bei der Abfrage

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ß

Das sind aber Werte, die aus dem Wechselrichter kommen und nicht aus dem HM.
Da musst du dann den Modbus des SMA-Gerätes ansprechen

Wie @Axel37 es geschriebn hat…Abfrage über den SMA WR.

https://github.com/CodeKing/de.codeking.symcon.sma

Einbinden unter Kern Instanzen → Modules

richimaint

Hmm komisch, ich dachte am SHM geht alles zusammen.

Ich habe 2 WR und müsste dann noch Scripts schreiben und zu rechnen für manche Werte.

Der SMH müsste doch auch eigentlich alle Werte kennen.

Ich hab mal ne Anfrage an SMA gestellt. Wenn ich was bekommen, stell ich es hier rein.

Danke euch.

Edit: Das Modul von CodeKing läuft schon und funzt auch. Aber das ist ja auch jeweils nur für ein WR.

kann man das irgendwie ändern, das die Werte sich zb. nur alle 5 Sekunden aktualisieren?

jedes Gerät hat nun mal eine andere Adresse und nicht jeder hat mehrere WR