Intelligentes Messsystem über über HAN auslesen

SoftPerfect Network Scanner

Verstehe deine Antwort nicht, bei mir funktioniert es ja. Ich will die Daten, die vom Zähler kommen, grafisch anzeigen lassen.

Hallo Lutz,

da bin ich jetzt nicht ganz so bewandert…

Vielleicht zu meinem besseren Verständnis: Wäre das so möglich:

  • IP-Symcon läuft auf einen Raspberry Pi mit der Adresse 192.168.178.9
  • Die FritzBox läuft im gleichen Netz aus 192.168.178.1
  • Die Adresse 192.168.178.212 ist jetzt im diesen Netz noch frei
  • Das Gateway um das es geht hat die Adresse 192.168.1.200

Könnte ich es jetzt auf dem Raspberry Pi so mit dieser Route einrichten, dass wenn ich aus IP-Symcon heraus die 192.168.178.212 aufrufe die Route es zu 192.168.1.200 routet?

Joachim

…der Thread hat sich inhaltlich wohl gerade etwas geteilt, für mich geht es darum das oben gepostete Skript zu nutzen, für Dich wohl eher darum die Dateiexporte aus „Trudi“ zu visualisieren?

Joachim

Ja, genau so, Joachim. Ich habe eh keine Ahnung vom Mac

https://devconnected.com/how-to-add-route-on-linux/
Du musst die Zieladresse 192.168.1.200 über die Raspi-Adresse 192.168.178.9 Routen, damit Symcon das Ziel erreichen kann. Selbstverständlich muss das als ständige Adresse eingerichtete werden. Das ganze muss natürlich am Raspi eingetragen werden, die Fritz Box hat damit nichts zu tun.

Eine andere Möglichkeit ist, z.B.am Raspi der WLAN Schnittstelle die Adresse 192. 168.1.201 geben. Die Maske an der FritzBox sollte dann 255.255.0.0 sein. Die LAN- Schnittstelle am Raspi bleibt wie bisher 192.168.178.9, dann solltest du die HAN erreichen können.

Guten Abend zusammen,

ich bin neu hier und habe leider wenig Ahnung von der Materie. Was für ein Kabel schließe ich denn an den HAN Port an?

Lieben Dank für eure Hilfe.

Hallo zusammen,
bei mir ist es jetzt auch so weit und ein IMSys kommt. hat jemand folgendes Gerät ggf. schon getestet? Scheint ein Auslesen der HAN-Schnittstelle mit Kopplung direkt ins LAN zu ermöglichen, wenn ich das richtig sehe…

Danke für Rückmeldungen…

1 „Gefällt mir“

Die Möglichkeit ein Smart Meter Gateway auslesen zu können ist keine freiwillige Leistung des Messstellenbetreibers, sondern erst ist nach §33 Mess-und Eichgesetz dazu verpflichtet diesen Zugang für Endkunden zu ermöglichen.
Das es nicht möglich ist ein SMG einfach über Plug and Play anzuschließen ist ein Armutszeugnis der Hersteller und der Politik. Entweder arbeiten dort nur Betriebsblinde Vollidioten die jeden Bezug zur normalen Welt verloren haben oder es ist Absicht, damit möglichst wenige Verbraucher überprüfen können welche Daten dort abgesogen werden.
SMG´s werden auf Dauer bei allen Kunden eingebaut, also auch bei „Lieschen Müller“ und „Oma 80“.
Die werden kaum mit dieser für Normalos viel zu komplizierten Software und Benutzeroberflächen der SMG´s umgehen können. Es lebe die Transparenz.

5 „Gefällt mir“

ich gerade:
Scheint nicht zu funktionieren.
Schon die Anmeldung schlägt fehl. Laut Trudi Handbuch muss man zusätzlich zum User/passwort ja noch diese SMGW-ID bei Trudi für die Anmeldung mit verwenden - die taucht ja im script gar nicht auf.
Bei mir hat ausserdem

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

nicht ausgereicht - ich musste auch noch

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);

dazunehmen, dass sollte ja aber im heimnetz kein problem sein.

Hallo Noyse,

das klingt ganz spannend! :slight_smile:

Magst Du Dei Skript mal bitte in Gänze posten? Was muss bezüglich der IP bzw. des IP-Adressraums beachtet werden?

Joachim

na ja im prinzip ist es das gleiche wie oben:

<?php
// @codingStandardsIgnoreStart
require 'vendor/autoload.php';

$user = 'xxx';
$password = 'xxx';
$url = 'https://192.168.178.200/cgi-bin/hanservice.cgi';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
curl_setopt($ch, CURLOPT_USERPWD, "$user:$password");
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

$response = curl_exec($ch);
if ($response === false) {
    die("Konnte keine Antwort vom Server abrufen: " . curl_error($ch));
}

$cookie = curl_getinfo($ch, CURLINFO_COOKIELIST);
curl_close($ch);

// Token aus der Antwort extrahieren
if (preg_match('/<input.*?value="(.*?)"/', $response, $matches)) {
    $token = $matches[1];
} else {
    die("Token konnte nicht aus der Antwort extrahiert werden.");
}

$action = 'meterform';
$post_data = "tkn=$token&action=$action";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($ch, CURLOPT_COOKIE, implode('; ', $cookie));
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

$response = curl_exec($ch);
if ($response === false) {
    die("Fehler beim Abrufen der Antwort während POST: " . curl_error($ch));
}
curl_close($ch);

// Meter-ID aus der Antwort extrahieren
if (preg_match('/<select.*?id="meterform_select_meter".*?<option.*?value="(.*?)"/', $response, $matches)) {
    $meter_id = $matches[1];
} else {
    die("Meter-ID konnte nicht aus der Antwort extrahiert werden.");
}

$post_data = "tkn=$token&action=showMeterProfile&mid=$meter_id";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($ch, CURLOPT_COOKIE, implode('; ', $cookie));
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

$response = curl_exec($ch);
if ($response === false) {
    die("Fehler beim Abrufen der finalen Antwort: " . curl_error($ch));
}
curl_close($ch);

// Daten aus der Antwort extrahieren
if (preg_match('/<table.*?id="metervalue".*?<td.*?id="table_metervalues_col_wert".*?>(.*?)<\/td>.*?<td.*?id="table_metervalues_col_einheit".*?>(.*?)<\/td>.*?<td.*?id="table_metervalues_col_timestamp".*?>(.*?)<\/td>.*?<td.*?id="table_metervalues_col_istvalide".*?>(.*?)<\/td>.*?<td.*?id="table_metervalues_col_name".*?>(.*?)<\/td>.*?<td.*?id="table_metervalues_col_obis".*?>(.*?)<\/td>/s', $response, $matches)) {
    $result_data = [
        'value' => $matches[1],
        'unit' => $matches[2],
        'timestamp' => $matches[3],
        'isvalid' => $matches[4],
        'name' => $matches[5],
        'obis' => $matches[6]
    ];
    echo $result_data['timestamp'] . " " . $result_data['value'] . " " . $result_data['unit'];
} else {
    die("Messdaten konnten nicht aus der Antwort extrahiert werden.");
}

Man braucht aber scheinbar definitiv die gatewayID ohne die lässt sich nicht mal das originäre Trudi Interface starten.
ich hab das Ganze auf nem NUC laufen lassen, da habe ich zwei NIC - das macht es einfacher mit dem zusätzlichen Adressbereich.
Ich habe aber jetzt festgestellt, dass das Gateway so verbaut ist, dass ich die ID gar nicht ablesen kann, weil da die Schrankabdeckung davor ist. Muss nu also erstmal Stromnetz Berlin kontaktieren, wie ich nun an die id komme :wink:
Für die die es interessiert:
im Kasten hatte damals discovergy eine extra Steckdose reingelegt, so dass das Gateway (keller mehrfamilienhaus) via Powerline mit meinem Netzwerk (3.OG) verbunden ist. das klappt super hab ca 500mbit transferleistung mit zwei 1000Mbit modulen

…ich befürchte dann wird das bei mir schon an diesem IP-Thema scheitern…

Hat jemand eine Idee, wie ich das „simple“ hinbekommen könnte?

Joachim

normalerweise kein Problem - du kannst unter Windows dem Rechner ne zweite ipadresse verpassen, das ist sehr gut in der trudi doku aufgeführt wie das geht :wink:

So konnte mich nun via https: im browser mit dem gateway verbinden (ohne id) und bekam die id dort angezeigt, mit der ich mich dann mit trudi verbinden konnte.
Was soll ich sagen, nichts von den Daten, die man bekommt, macht in irgendeinerweise sinn. man kann sich nicht mal den Zählerstand angucken. ich habe tage drin da soll ich nix verbraucht haben??


Am Zähler selber steht 609 KWh

Hi,

ich verfolge diese Beiträge grade, da ich auch ein entsprechendes Smart Meter bekommen habe und dieses in HA einbinden möchte.

Ich habe mir TRuDi zwar noch nicht besorgt aber in deinem Screenshot sieht man das du Register 2.8.0 abgefragt hast. 2.8.0 ist das Register für die Netzeinspeisung. Der Verbrauch steht im Register 1.8.0.

LG

Spannend - ich wüsste gar nicht wo ich das Register wählen kann. das würde aber tatsächlich so einiges erklären :wink: ich prüfe das mal nachher zu hause