SMA Home Manager 2.0 / Energy Meter / Home Manager

Alle Wünsche die erledigt sind oder nie verwirklicht werden.

Moderator: Ulrich

jottt
Beiträge: 97
Registriert: Mo 1. Mär 2021, 00:18
Hat sich bedankt: 10 Mal
Danksagung erhalten: 10 Mal

SMA Home Manager 2.0 / Energy Meter / Home Manager

Beitrag von jottt »

Moin,

da ich nichts passendes gefunden habe, mache ich mal einen neuen Post auf zum Sammeln der Infos, die ich habe in Hoffnung auf ein positives Echo.

der HM2.0 (und die Vorgänger) wird oft in SMA-Umgebungen unter Anderem als Zähler für Einspeisung und Netzbezug verwendet, daher wäre es sehr hilfreich, wenn zumindest diese Daten in der Solaranzeige einbezogen werden könnten. Alle Produkte scheinen gleiche (oder sehr ähnliche Protokolle) zu sprechen, sodass hier vermutlich ein Script mit allen funktioniert.

Was kann ich an Halbwissen beisteuern:

Der HM2.0 spricht SEMP und schnoddert seine Daten als UDP-Multicast heraus, was für einen Abruf bedeutet, der Client muss im gleichen Netzsegment sein und am besten über einen "dummen" Switch Verbindung haben, da wohl Probleme entstehen können, wenn der Switch versucht, Multicast zu managen. (Probleme mit Fritzboxen sind bekannt im Netz).

Wühlen im Netz hat Folgendes zu Tage gefördert, was sehr vielversprechend aussieht.
Gemäß dem OpenSource-Gedanken - Warum neu Erfinden, wenn man recyclen kann....vielleicht schon 3/4 der Arbeit.

Es gibt viele Ansätze ABER: Die KNX-Freunde haben bereits ein PHP-Script gebastelt, dass den HM2.0 anzapft und die Daten zur weiteren Verarbeitung zerlegt und sortiert. Auf den ersten Blick muss man es nur noch an Solaranzeige anpassen und in Influx stopfen. Und Testen...dazu kam ich noch nicht, da Docker und ich erst noch Freunde werden müssen.

Es findet sich hier:
https://knx-user-forum.de/forum/projekt ... g-an-edomi
Das Script bei Beitrag #12 sieht auf den ersten Blick am SInnigsten aus, aber ich bin kein Programmierer ;)

Die Doku zum Protokoll ist hier:
https://www.sma.de/fileadmin/content/gl ... -de-10.pdf

jottt
Beiträge: 97
Registriert: Mo 1. Mär 2021, 00:18
Hat sich bedankt: 10 Mal
Danksagung erhalten: 10 Mal

Re: SMA Home Manager 2.0 / Energy Meter / Home Manager

Beitrag von jottt »

Ich habe noch etwas geforscht und gebastelt.
Seit neueren Versionen kann man über die erweiterte Config vom HM2 Singlecast UDP einstellen, der dann 1x pro Sekunde die Werte auf Port 9522 an eine beliebige IP schickt. Paketgröße: 610 Byte

Ich habe das Script von obiger Adresse auf Singlecast umgebaut und es funktioniert. Prinzipiell fehlt jetzt nur noch ein kleiner Schritt, den Kram auch noch in Influx zu schreiben, die Daten sind schonmal da. Das geklaute und umgebaute Script habe ich unten angehängt. Die Quelle steht im vorherigen Beitrag.

__

Folgende Daten bekommt man auf diese Weise vom HM2:
Spannung L1 : 236.926 Volt
Spannung L2 : 237.927 Volt
Spannung L3 : 237.634 Volt

Strombezug (Summe) von L1/L2/L3 : 189.4 Watt

Strombezug von L1 : 22.8 Watt
Strombezug von L2 : 113.7 Watt
Strombezug von L3 : 52.8 Watt


Einspeisung gesamt : 0 Watt

Einspeisung L1 : 0 Watt
Einspeisung L2 : 0 Watt
Einspeisung L3 : 0 Watt


Alles Weitere was man dem SMA EM entlocken kann :

Header : 12345678 --- 1593767234
Summenwerte L1-L3 : 189.4 --- 1880.302 --- 0 --- 1747.1685 --- --- --- --- --- --- --- --- ---
Werte L1 : 22.8 --- 781.9648 --- 0 --- 546.8161 --- --- --- --- --- --- --- --- --- 985 --- 236.926 ---
Werte L2 : 113.7 --- 685.3248 --- 0 --- 579.5621 --- --- --- --- --- --- --- --- --- 1076 --- 237.927 ---
Werte L3 : 52.8 --- 454.2767 --- 0 --- 662.0547 --- --- --- --- --- --- --- --- --- 390 --- 237.634 ---

Das Array Header besteht aus zwei Zellen

Z1 : GeräteID
Z2 : Zähler in ms, alle 115 Tage und 8 Stunden bei Null

Das Array Summe besteht aus 13 Zellen

Z1 : Wirkleistung Bezug aktuell in W
Z2 : Bezug in kWh
Z3 : Wirkleistung Einspeisung in Watt
Z4 : Einspeisung in kWh
Z5 : Blindleistung Bezug aktuell in var
Z6 : Blindleistung in varh
Z7 : Blindleistung Einspeisung aktuell in var
Z8 : Blindleistung Einspeisung in varh
Z9 : Scheinleistung Bezug aktuell in VA
Z10 : Scheinarbeit Bezug in VAh
Z11 : Scheinleistung Einspeisung
Z12 : Scheinarbeit Einspeisung in VAh
Z13 : aktueller Leistungsfaktor cos phi gesamt


Das Array für jede Phase besteht aus 15 Zellen

Z1 : Wirkleistung Bezug aktuell in W
Z2 : Bezug in kWh
Z3 : Wirkleistung Einspeisung in Watt
Z4 : Einspeisung in kWh
Z5 : Blindleistung Bezug aktuell in var
Z6 : Blindleistung in varh
Z7 : Blindleistung Einspeisung aktuell in var
Z8 : Blindleistung Einspeisung in varh
Z9 : Scheinleistung Bezug aktuell in VA
Z10 : Scheinarbeit Bezug in VAh
Z11 : Scheinleistung Einspeisung
Z12 : Scheinarbeit Einspeisung in VAh
Z13 : Strom in mA (ohne Vorzeichen)
Z14 : Spannung auf Phase
Z15 : aktueller Leistungsfaktor cos phi Phase

Code: Alles auswählen

<meta http-equiv="content-type" content="text/html; charset=utf-8">
<?php
    // Dieses Fragment setzt die Variablen $type und $part und dient zur Auswahl der anzuzeigenden Parameter,Mehrfachauswahl jeweils möglich
    //HIER ERFOLGT DIE AUSWAHL DER ANZUZEIGENDEN PARAMETER

   if ($type=="") {  // Auswahl der Datentypen, MEHRFACHAUSWAHL MÖGLICH
     $type = 'PIU';  // P=Wirkleistung,Q=Blindleistung,S=Scheinleistung,I=Strom,U=Spannung,C=cos phi
   }
   if ($part=="") {   // Auswahl ob Header, Summen oder die Phasen angezeigt werden
     $part = 'HSL';  // H=Header,S=Summen,L=Phasen, MEHRFACHAUSWAHL MÖGLICH, BEI NICHTWAHL VON H,S,L WIRD ENTSPRECH DIE AUSGABE ALS ABGEWÄHLT GEKENNZEICHNET
   }

               // OBIS Parameter, diese werden zur Berechnung der Ausgabewerte gebraucht
               $list_sum = array();
               $list_sum[ ] = array('OBIS' => "0140",'type'=>'P','search' => "00010400",'len' => 4,'divisor' => 10);
               $list_sum[ ] = array('OBIS' => "0180",'type'=>'P','search' => "00010800",'len' => 8,'divisor' => 3600000);
               $list_sum[ ] = array('OBIS' => "0240",'type'=>'P','search' => "00020400",'len' => 4,'divisor' => 10);
               $list_sum[ ] = array('OBIS' => "0280",'type'=>'P','search' => "00020800",'len' => 8,'divisor' => 3600000);
               $list_sum[ ] = array('OBIS' => "0340",'type'=>'Q','search' => "00030400",'len' => 4,'divisor' => 10);
               $list_sum[ ] = array('OBIS' => "0380",'type'=>'Q','search' => "00030800",'len' => 8,'divisor' => 3600000);
               $list_sum[ ] = array('OBIS' => "0440",'type'=>'Q','search' => "00040400",'len' => 4,'divisor' => 10);
               $list_sum[ ] = array('OBIS' => "0480",'type'=>'Q','search' => "00040800",'len' => 8,'divisor' => 3600000);
               $list_sum[ ] = array('OBIS' => "0940",'type'=>'S','search' => "00090400",'len' => 4,'divisor' => 10);
               $list_sum[ ] = array('OBIS' => "0980",'type'=>'S','search' => "00090800",'len' => 8,'divisor' => 3600000);
               $list_sum[ ] = array('OBIS' => "1040",'type'=>'S','search' => "000a0400",'len' => 4,'divisor' => 10);
               $list_sum[ ] = array('OBIS' => "1080",'type'=>'S','search' => "000a0800",'len' => 8,'divisor' => 3600000);
               $list_sum[ ] = array('OBIS' => "1340",'type'=>'C','search' => "000d0400",'len' => 4,'divisor' => 1000);


               $list_l = array();
               $list_l[ ] = array('OBIS' => "2140",'type'=>'P','search' => "00150400",'len' => 4,'divisor' => 10);
               $list_l[ ] = array('OBIS' => "2180",'type'=>'P','search' => "00150800",'len' => 8,'divisor' => 3600000);
               $list_l[ ] = array('OBIS' => "2240",'type'=>'P','search' => "00160400",'len' => 4,'divisor' => 10);
               $list_l[ ] = array('OBIS' => "2280",'type'=>'P','search' => "00160800",'len' => 8,'divisor' => 3600000);
               $list_l[ ] = array('OBIS' => "2340",'type'=>'Q','search' => "00170400",'len' => 4,'divisor' => 10);
               $list_l[ ] = array('OBIS' => "2380",'type'=>'Q','search' => "00170800",'len' => 8,'divisor' => 3600000);
               $list_l[ ] = array('OBIS' => "2440",'type'=>'Q','search' => "00180400",'len' => 4,'divisor' => 10);
               $list_l[ ] = array('OBIS' => "2480",'type'=>'Q','search' => "00180800",'len' => 8,'divisor' => 3600000);
               $list_l[ ] = array('OBIS' => "2940",'type'=>'S','search' => "001d0400",'len' => 4,'divisor' => 10);
               $list_l[ ] = array('OBIS' => "2980",'type'=>'S','search' => "001d0800",'len' => 8,'divisor' => 3600000);
               $list_l[ ] = array('OBIS' => "3040",'type'=>'S','search' => "001e0400",'len' => 4,'divisor' => 10);
               $list_l[ ] = array('OBIS' => "3080",'type'=>'S','search' => "001e0800",'len' => 8,'divisor' => 3600000);
               $list_l[ ] = array('OBIS' => "3140",'type'=>'I','search' => "001f0400",'len' => 4,'divisor' => 1);
               $list_l[ ] = array('OBIS' => "3240",'type'=>'U','search' => "00200400",'len' => 4,'divisor' => 1000);
               $list_l[ ] = array('OBIS' => "3340",'type'=>'C','search' => "00210400",'len' => 4,'divisor' => 1000);

                      // Horchen nach 610 Zeichen Unicast
                       $len = 610 ; //Empfang eines Datensatzes mit 610 Byte Länge, Soviel gib SMA EM von sich
                       $flags = 0 ;
                       $from = "" ;
                       $port = 9522 ; // Port auf dem gelauscht wird
                       $socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP); // Einzelerklärungen lassen sich gut im Netz nachlesen
                       socket_bind($socket,"0.0.0.0",$port);
                       socket_recvfrom($socket,$raw,$len,$flags,$from,$port); // der empfangene Datensatz wird in Variable $raw geschrieben

                       echo "Der Datenwust kommt von IP : " . $from ; // Ausgabe des Empfangenen Strings. Nur zur Veranschaulichung
                       echo "<br />";
                       echo "...und sieht nach Zerlegung in 3 Datenteilen zur Berechnung von Header/Gesamt/Einzelphasen so aus : ";
                       echo "<br />";

                       // Aufbereiten der Daten, von HEX nach Bin, sowie Happenpappen erstellen
                       $hraw = bin2hex($raw);  // String von Hex nach Bin umwandeln,
                       $hraw_head = substr($hraw,"0","56"); // Aufteilung in Teilstück vom 1. - 56. Zeichen
                       $hraw_sum = substr($hraw,"56","256"); // analog wie oben, nur von 56.-256. 
                       $hraw_l = substr($hraw,"312");  // hattamascho

                        // Hier erfolgt zunächst mal die Ausgabe der Teilstücke des empfangenen Strings. Diese Stücke werden für die Weiterverarbeitung gebraucht
                        echo "<br />";
                        echo $hraw_head;
                        echo "<br />";
                        echo $hraw_sum;
                        echo "<br />";
                        echo $hraw_l;
                        echo "<br />";
                        echo "<br />";

// Header
if (strpos($part,'H')!==false) {
 $res_head[1] = base_convert(substr($hraw_head,40,8),16,10);   // Zähler
 $res_head[2] = base_convert(substr($hraw_head,48,8),16,10);   // Ticker
} else
{
 $res_head[1] = "Header ist nicht ausgewählt";   // Zähler
 $res_head[2] = " ";   // Ticker
}


         // Berechnung der Summenwerte L1,L2,L3 unter Anwendung der Liste ganz oben und setzen der Werte in ein Array, gespeichert in $res_sum
         if (strpos($part,'S')!==false) {
             $i=0;
             foreach ($list_sum as &$record) {
               $i++;
               $res_sum[$i] = '';
               if (strpos($type,$record['type'])===false) { continue; }
               $pos = strpos($hraw_sum,$record['search'])+8;
               if ($pos !== false) { $res_sum[$i] = base_convert(substr($hraw_sum,$pos,$record['len']*2),16,10) / $record['divisor']; }
             }
            }else
            {
             $res_sum[1] = "Summenwerte sind nicht ausgewählt";  
           }
                      // Wie oben nur für die Einzelphasen, setzen der Werte in ein Array, gespeichert in $res_l1/l2/l3
           if (strpos($part,'L')!==false) {
             $i=0;
             foreach ($list_l as &$record) {
               $i++;
               $res_l1[$i] = '';
               $res_l2[$i] = '';
               $res_l3[$i] = '';
               if (strpos($type,$record['type'])===false) { continue; }
               // L1
               $pos = strpos($hraw_l,$record['search'])+8;
               if ($pos !== false) { $res_l1[$i] = base_convert(substr($hraw_l,$pos,$record['len']*2),16,10) / $record['divisor']; }
               // L2
               $tmp = str_split($record['search'], 2);
               $tmp[1] = base_convert(base_convert(substr($record['search'],2,2),16,10)+20,10,16);  // transpose for L2
               $search = implode('',$tmp);
               $pos = strpos($hraw_l,$search)+8;
               if ($pos !== false) { $res_l2[$i] = base_convert(substr($hraw_l,$pos,$record['len']*2),16,10) / $record['divisor']; }
               else { $res_l2[$i] = ''; }
               // L3
               $tmp = str_split($record['search'], 2);
               $tmp[1] = base_convert(base_convert(substr($record['search'],2,2),16,10)+40,10,16);  // transpose for L3
               $search = implode('',$tmp);
               $pos = strpos($hraw_l,$search)+8;
               if ($pos !== false) { $res_l3[$i] = base_convert(substr($hraw_l,$pos,$record['len']*2),16,10) / $record['divisor']; }
               else { $res_l3[$i] = ''; }
            }
                         }else
            {
             $res_l1[2] = "Einzelphasen sind nicht ausgewählt"; //Setze Zelle 2 im Array mit Text 
             $res_l2[2] = "Einzelphasen sind nicht ausgewählt";
             $res_l3[2] = "Einzelphasen sind nicht ausgewählt";
           }

//BERMERKUNG
//Ausgabe der ermittelten Werte. 
// Mit "echo implode('---',$res_X);" wird das gesamte AusgabeArray von sum/l1/l2/l3 angezeigt und die Werte mit --- getrennt
      $heute = date("Y-m-d H:i:s"); // Setzen des aktuellen Datums mit Uhrzeit (SystemUhrZeit des PHP-Servers) in $heute
       echo "Empfangen am : " .$heute; // Ausgabe dient nur zur Kontrolle
       echo "<br />";
       echo "<br />";
       echo "Spannung L1 : " .$res_l1[14]. " Volt"; //Zelle 14 trägt den Wert der Spannung
       echo "<br />";
       echo "Spannung L2 : " .$res_l2[14]. " Volt";
       echo "<br />";
       echo "Spannung L3 : " .$res_l3[14]. " Volt";
       echo "<br />";
       echo "<br />";
       echo "Strombezug (Summe) von L1/L2/L3 : " .$res_sum[1]. " Watt"; // Ausgabe der ersten Wertes im Array $res_sum = Bezug aus Netz 
       echo "<br />";
       echo "<br />";
       echo "Strombezug von L1 : " .$res_l1[1]. " Watt"; // Wie $res_sum nur für Phase 1
       echo "<br />";
       echo "Strombezug von L2 : " .$res_l2[1]. " Watt"; // selbsterklärend
       echo "<br />";
       echo "Strombezug von L3 : " .$res_l3[1]. " Watt"; //....
       echo "<br />";
       echo "<br />";
       echo "<br />";
       echo "Einspeisung gesamt : " .$res_sum[3]. " Watt"; // Ausgabe der dritten Wertes im Array $res_sum = Einspeisung ins Netz 
       echo "<br />";
       echo "<br />";
       echo "Einspeisung L1 : " .$res_l1[3]. " Watt"; //Zelle 3 trägt den Wert der Einspeisung in Watt
       echo "<br />";
       echo "Einspeisung L2 : " .$res_l2[3]. " Watt";
       echo "<br />";
       echo "Einspeisung L3 : " .$res_l3[3]. " Watt";
       echo "<br />";
       echo "<br />";
       echo "<br />";
       echo "Alles Weitere was man dem SMA EM entlocken kann :";
       echo "<br />";
       echo "<br />";
       echo "Header : " .implode(' --- ',$res_head);
       echo "<br />";
       echo "Summenwerte L1-L3 : " .implode(' --- ',$res_sum);
      echo "<br />";
       echo "Werte L1 : " .implode(' --- ',$res_l1);
       echo "<br />";
       echo "Werte L2 : " .implode(' --- ',$res_l2);
       echo "<br />";
       echo "Werte L3 : " .implode(' --- ',$res_l3);
       echo "<br />";
       echo "<br />";
       echo "Das Array Header besteht aus zwei Zellen"."<br />";
       echo "<br />";
       echo "Z1 : GeräteID"."<br />";
       echo "Z2 : Zähler in ms, alle 115 Tage und 8 Stunden bei Null";
       echo "<br />";
       echo "<br />";
       echo "Das Array Summe besteht aus 13 Zellen"."<br />";
       echo "<br />";
       echo "Z1 : Wirkleistung Bezug aktuell in W"."<br />";
       echo "Z2 : Bezug in kWh"."<br />";
       echo "Z3 : Wirkleistung Einspeisung in Watt"."<br />";
       echo "Z4 : Einspeisung in kWh"."<br />";
       echo "Z5 : Blindleistung Bezug aktuell in var"."<br />";
       echo "Z6 : Blindleistung in varh"."<br />";
       echo "Z7 : Blindleistung Einspeisung aktuell in var"."<br />";
       echo "Z8 : Blindleistung Einspeisung in varh"."<br />";
       echo "Z9 : Scheinleistung Bezug aktuell in VA"."<br />";
       echo "Z10 : Scheinarbeit Bezug in VAh"."<br />"; 
       echo "Z11 : Scheinleistung Einspeisung"."<br />";
       echo "Z12 : Scheinarbeit Einspeisung in VAh"."<br />";
       echo "Z13 : aktueller Leistungsfaktor cos phi gesamt"."<br />";
       echo "<br />";
       echo "<br />";
       echo "Das Array für jede Phase besteht aus 15 Zellen"."<br />";
       echo "<br />";
       echo "Z1 : Wirkleistung Bezug aktuell in W"."<br />";
       echo "Z2 : Bezug in kWh"."<br />";
       echo "Z3 : Wirkleistung Einspeisung in Watt"."<br />";
       echo "Z4 : Einspeisung in kWh"."<br />";
       echo "Z5 : Blindleistung Bezug aktuell in var"."<br />";
       echo "Z6 : Blindleistung in varh"."<br />";
       echo "Z7 : Blindleistung Einspeisung aktuell in var"."<br />";
       echo "Z8 : Blindleistung Einspeisung in varh"."<br />";
       echo "Z9 : Scheinleistung Bezug aktuell in VA"."<br />";
       echo "Z10 : Scheinarbeit Bezug in VAh"."<br />"; 
       echo "Z11 : Scheinleistung Einspeisung"."<br />";
       echo "Z12 : Scheinarbeit Einspeisung in VAh"."<br />";
       echo "Z13 : Strom in mA (ohne Vorzeichen)"."<br />";
       echo "Z14 : Spannung auf Phase"."<br />";
       echo "Z15 : aktueller Leistungsfaktor cos phi Phase"."<br />";
       echo "<br />";
       echo "<br />";

?>

andreas_n
Beiträge: 344
Registriert: Do 25. Jun 2020, 13:40
Hat sich bedankt: 10 Mal
Danksagung erhalten: 11 Mal

Re: SMA Home Manager 2.0 / Energy Meter / Home Manager

Beitrag von andreas_n »

hallo jottt,

cool..

@Ulrich
viewtopic.php?p=7643#p7643

wär doch Steilvorlage..bei soviel Vorarbeit von jottt...

Grüsse,

Andreas
9kWp S/SO > SMA Tripower (IBN 18.6.20) + 4kWp S/SW > Growatt MIN 3000 TL-XE (IBN 31.3.21) + 2kWp Süd -19° ELWA DC Warmwasser ("IBN" 9.5.21)

jottt
Beiträge: 97
Registriert: Mo 1. Mär 2021, 00:18
Hat sich bedankt: 10 Mal
Danksagung erhalten: 10 Mal

Re: SMA Home Manager 2.0 / Energy Meter / Home Manager

Beitrag von jottt »

@Ulrich

Ich kann gern versuchen vorzuarbeiten, da ich allerdings kein Programmierer bin wird das Ergebnis vermutlich sehr hässlich (aber funktionieren...da bin ich zuversichtlich).
Am Ende wird das Aufräumen fürchte ich, genauso viel Zeit brauchen, wie wenn du den Code in deinem Stil selbst baust (ich gehe mal davon aus, dass du da schon einen Skelettcode hast, den du "füllst").

Unter Rücksicht auf diesen Aspekt: Kann ich dir Arbeit abnehmen bei der implementierung?
Ich kann zumindest oben den Code "aufräumen" und einen Schnipsel schreiben (analog zum aktuellen Code), der die Werte einfängt und alle sauber in Variablen steckt.
Dann müsstest du nur noch für den sauberen Einbau in das Gesamtkonstrukt und die InfluxDB sorgen. Würde das helfen?
>
Prinzipiell würde ich einen Schalter einbauen, sodass User wählen können zwischen der Singlecast und der Multicastvariante, der Output am Ende ist der Gleiche, nur die Abfrage ist anders (beide Varianten sind oben schon im Script).

>
Generelle (philosophische) Frage:
Der HM2.0 liefert jede Sekunde Werte und es macht Sinn, diese Werte 24/7 zu schreiben (da so der Hausverbrauch mitgeloggt werden kann). Daher sollte der Abruf auch passieren, wenn der SMA WR in seine (neue) "Nachtruhe" geht.
Ist es möglich/sinnvoll jede Sekunde zu loggen oder ist das Irrsinn aus Sicht von Datenmenge und Systemlast? (600 Byte pro Datensatz)

Benutzeravatar
Ulrich
Administrator
Beiträge: 2298
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Hat sich bedankt: 8 Mal
Danksagung erhalten: 106 Mal
Kontaktdaten:

Re: SMA Home Manager 2.0 / Energy Meter / Home Manager

Beitrag von Ulrich »

Hallo jottt,

der Energy Meter von SMA steht schon auf der Todo Liste. Er wird per MODBUS wie alle anderen SMA Geräte ausgelesen. Es braucht nur etwas Geduld. Du siehst ja wie viele Geräte auf die Implementierung noch warten.
--------------------------------------
Ulrich [Admin]

jottt
Beiträge: 97
Registriert: Mo 1. Mär 2021, 00:18
Hat sich bedankt: 10 Mal
Danksagung erhalten: 10 Mal

Re: SMA Home Manager 2.0 / Energy Meter / Home Manager

Beitrag von jottt »

Der HomeManager2.0 (und der 1.0er glaube ich auch) arbeiten anders als der EnergyMeter und sprechen kein Modbus.
Vermutlich hat SMA da einen anderen Praktikanten mit der Programmierung beauftragt :roll:

Ich weiß dass du enorm viel hier zu tun hast, daher würde ich dir gern Arbeit abnehmen, wenn und wo es Sinn macht (und in meinen Fähigkeiten liegt).

Benutzeravatar
Ulrich
Administrator
Beiträge: 2298
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Hat sich bedankt: 8 Mal
Danksagung erhalten: 106 Mal
Kontaktdaten:

Re: SMA Home Manager 2.0 / Energy Meter / Home Manager

Beitrag von Ulrich »

Hallo jottt,

Arbeit abnehmen kannst du nur, wenn du alles alleine programmierst. Wenn ich dir dabei helfen soll, hat das leider nichts mit Arbeit abnehmen zu tun. Leider kann man bei einem so komplizierten Programm nicht helfen, wenn man kein Programmierer ist.
Trotzdem vielen Dank für dein Hilfsangebot.
--------------------------------------
Ulrich [Admin]

jottt
Beiträge: 97
Registriert: Mo 1. Mär 2021, 00:18
Hat sich bedankt: 10 Mal
Danksagung erhalten: 10 Mal

Re: SMA Home Manager 2.0 / Energy Meter / Home Manager

Beitrag von jottt »

Ich habs befürchtet. Dann schraub ich mir was für den privaten Gebrauch zusammen und warte geduldig, bis du dazu kommst, es "ordentlich" zu machen.

Kurze Frage dazu:
Wenn ich parallel/unabhängig zu Solaranzeige Daten mit einem Script in die InfluxDB schreibe...knallts vermutlich oder ist das kein Problem?
Es wäre sauberer (und Updatefreundlicher), wenn ich nicht im SMA-Script herumdoktern muss.

Benutzeravatar
Ulrich
Administrator
Beiträge: 2298
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Hat sich bedankt: 8 Mal
Danksagung erhalten: 106 Mal
Kontaktdaten:

Re: SMA Home Manager 2.0 / Energy Meter / Home Manager

Beitrag von Ulrich »

Du kannst parallel auf die Datenbank zugreifen. Das sollte kein Problem darstellen. Eventuell nur abfangen, wenn die Datenbank keine Zeit hat, dass du n ein paar Millisekunden es noch einmal versuchst. Die Datenbank darf nur nicht blockiert werden.
--------------------------------------
Ulrich [Admin]

kasselcam
Beiträge: 2
Registriert: Mi 24. Feb 2021, 18:50
Hat sich bedankt: 2 Mal

Re: SMA Home Manager 2.0 / Energy Meter / Home Manager

Beitrag von kasselcam »

Hallo,
ein Freund von mir hat mir gesagt das man bei dem Homemanager nach dem "Energy Meter Protokol" suchen soll.

Dabei habe ich folgendes im Netz gefunden:

SMA Doku:
https://www.sma.de/fileadmin/content/gl ... -de-10.pdf

Perl Script zum auslesen unter Linux:
https://github.com/datenschuft/SMA-EM

Beschreibung des Protokols:
http://www.eb-systeme.de/?page_id=3005

Auslesen per Php Script:
https://knx-user-forum.de/forum/projekt ... g-an-edomi

Ich würde die Umsetzung gern auch Finanziel unterstützen da ich leider selber zu wenig Zeit habe, aber die Solaranzeige ein tolles Projekt finde.

Hoffe ich konnte ein wenig weiterhelfen

Antworten