Intelligentes Messsystem über über HAN auslesen

Hat das denn schon jemand ausprobiert?

<?php

$user = '12345678';
$password = 'secret';
$url = 'https://192.168.1.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_VERIFYPEER, false);

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

preg_match('/<input.*?value="(.*?)"/', $response, $matches);
$token = $matches[1];
$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_VERIFYPEER, false);

$response = curl_exec($ch);
curl_close($ch);

preg_match('/<select.*?id="meterform_select_meter".*?<option.*?value="(.*?)"/', $response, $matches);
$meter_id = $matches[1];
$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_VERIFYPEER, false);

$response = curl_exec($ch);
curl_close($ch);

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'];

?>

Hallo Mulumu,

spannender Ansatz! Das Kommunikation-Modul hat meines Erachtens aber kein DHCP und eine fest eingestellte IP, die ist aber in einem ganzen anderen Netzwerk-Bereich. Würde es nicht schon daran scheitern?

Joachim

Hi @JPaeper,
danke für Deine Nachricht.
Ich hab noch keine Ahnung und war auf meinem SmartMeter auch noch nicht drauf. Ich habe jetzt den ersten Brief erhalten, der den username gibt - es fehlt noch ein zweiter Brief mit dem Passwort. :slight_smile:

Es wäre ja total cool, wenn wir einen Weg finden würden, ein SmartMeter in ein SmartHome zu integrieren. :wink:

Liebe Grüße
Dennis.

…das wäre Dennis! :wink:

Daher mal eine Grundsatzfrage an die Netzwerkprofis: Kann ich von IP-Symcon direkt auf einen anderen Netzwerkbereich zugreifen?

Wenn nicht: Könnte ein „Managed Switch“ dabei helfen dieses zu „brücken“?

Joachim

…vielleicht kann mir ja damit jemand helfen:

  • Mein „Standardnetzwerk“ lautet 192.168.178.xxx
  • Die HAN-Schnittstelle am Zähler soll laut Anbieter haben: 192.168.1.200 (oder 192.168.2.100)
  • Ich habe ein Managend Switch von TP Link
    Was muss ich jetzt wie im Switch einrichten, dass ich aus meinem „Standardnetzwerk“ auf die HAN-Schnittstelle zugreifen kann?

Joachim

Weil ich mich auch schon Monate hiermit beschäftige, vielleicht ein paar Tipps von mir.

  1. Ich habe die HAN-Schnittstelle vom Zähler direkt an ein Fritzbox Receiver (hier: 2400) angeschlossen.
  2. Im Windows 10 mein Netzwerk Adapter (der im 192.168.0.XX ist) ein zweiten IP gegeben der im bereich 192.168.178.XX ist.
  3. Am PC kann ich per Trudi die Daten auslesen.
  4. Jetzt suche ich ein Programm der mir diese wüst an Zahlen, Grafisch aufbereiten und schön anzeigt.

Gruß Mark

1 „Gefällt mir“

Hallo Mark,

vielen Dank für Deine Hinweise! Ein „Gerät“ dazwischenzuschalten ist auch einen Möglichkeit.
Eine „Triviallösung“ könnte (doch) aber auch sein, die Netzmaske in der FritzBox von derzeit 255.255.255.0 auf 255.255.0.0 zu stellen?

Müsste ich bei der Lösungsvariante mit „unangenehmen Folgeerscheinungen“ rechnen?

Joachim

Hallo Joachim,

mein Zähler ist zu weit weg um ein Kabel zu ziehen, deswegen Fritz Receiver. Aber ja, ich habe auch auf 255.255.0.0 umgestellt.
Aber damit nichts hinausgeht, habe ich den HAN im Fritz!Box gesperrt.

Gruß Mark

Hallo Mark,

ich habe jetzt auch mal die Netzmaske auf 255.255.0.0 gestellt. Bisher ist es mir aber noch nicht gelungen die HAN-Schnittstelle (probiert aus IP-Symcon heraus) anzupingen…

Noch einen Tipp?

Joachim

Hallo Joachim,

ich bin hiernach gegangen, mehr nicht.

Ab Seite 23 ist interessant.

Gruß
Mark

Hallo @mthomps ,

hast du die IP Adresse bei einer zweiten Netzwerkkarte geändert oder bei deiner (einzigen) Haupt-Netzwerkkarte?
Wenn ja, hast du somit keinen Zugriff mehr auf alle anderen Geräte in deinem lokalen Netzwerk…

Durch das manuelle setzen der IP Adresse ignorierst du sozusagen den vorgegebenen Netzwerkbereich deines Routers und legst manuell eine IP-Adresse im Netzwerkbereich der HAN-Schnittstelle fest…

Hallo @Brovning,

man kann mehrere IP-Adressen eine Netzwerkkarte zuweisen.

Gruß
Mark

1 „Gefällt mir“

…ich habe jetzt schon so viel versucht - bisher leider noch kein Erfolg gehabt…

Mein Bild war: Wenn ich die Netzmaske in der FritzBox auf 255.255.0.0 stelle, dann kann ich die HAN-Schnittstelle mit der IP 192.168.1.200 auch aus IP-Symcon mit der IP 192.168.178.9 erreichen?

Ich habe aber auch bei mir auf dem MacBook die IP fest auf 192.168.1.201 gestellt und den „Ping“ versucht - ohne Erfolg…

Joachim

Nein, Joachim, ich glaube nicht, dass es so funktioniert. Bei mir ist der HAN-Schnittstelle überhaupt nicht an der Fritzbox, der hat seine eigene SIM-Karte. Ich will es nur in mein Netz haben, daher mein Fritz-Receiver.

Gruß
Mark

Ah ok. Danke! (20 Zeichen)

Hallo Mark,

was ist ein „Fritz-Receiver“?

Joachim

Hallo Joachim,

„Mit seinem Gigabit-LAN-Anschluss integriert der Repeater selbst netzwerkfähige Geräte ohne WLAN ins Heimnetz. Der FRITZ!Repeater 2400 überbrückt dabei via Funk die Distanz zum Router, für die vorher Kabel verlegt werden mussten.“ AVM.de

Gruß
Mark

…ich habe eben noch einmal folgendes probiert:

  • MacBook auf die feste IP 192.168.1.xxx gestellt
  • LAN-Kabel direkt zwischen MacBook und HAN-Schnittstelle
  • die Software „Trudi“ gestartet, Benutzerdaten eingestellt
    . Zugriff ist erfolgreich, Daten werden in „Trudi“ angezeigt
  • Parallel ein Ping auf das Gerät gesendet: Ist nicht erfolgreich!

Ich vermute daher das ein Ping grundsätzlich von diesem Gerät nicht beantwortet wird - warum auch immer…

Joachim

Hört sich doch gut an. Jetzt brauche ich nur eine Software die mir das schön anzeigt. Würde Symcon so was haben?
Übrigens, mit Windows 10 kann ich mein Anpingen.

Gruß
Mark

Du musst die gewünschte Adresse als ständige Route eintragen z.B. bei Windows route -add Route
Gruß Lutz