Das kann natürlich sein, hattest Du mal in dem Schweden-Forum geguckt?
Ankündigung
Einklappen
Keine Ankündigung bisher.
Anbindung Modbus / Nibe
Einklappen
X
-
Ich habe mal ein generisches php Script geschrieben bzw. ein existierendes angepasst, das alle Daten von nibeuplink im json Format ausliest.
PHP-Code:<?
/*
* read nibe heatpump values from nibeuplink status web page and return them in json format.
* based on: https://www.symcon.de/forum/threads/25663-Heizung-Nibe-F750-Nibe-Uplink-auslesen-auswerten
* to get the code which is required as parameter, log into nibe uplink, open status page of your heatpump, and check url:
* https://www.nibeuplink.com/System/<code>/Status/Overview
*
* usage: nibe.php?email=<email>&password=<password>&code=<code>
*/
// to add additional debug output to the resulting page:
$debug = false;
// Create temp file to store cookies
$ckfile = tempnam ("/tmp", "CURLCOOKIE");
// URL to login page
$url = "https://www.nibeuplink.com/LogIn";
// Get Login page and its cookies and save cookies in the temp file
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // Accepts all CAs
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_COOKIEJAR, $ckfile); // Stores cookies in the temp file
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec($ch);
// Now you have the cookie, you can POST login values
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 2);
curl_setopt($ch, CURLOPT_POSTFIELDS, "Email=".$_GET['email']."&Password=".$_GET['password']);
curl_setopt($ch, CURLOPT_COOKIEFILE, $ckfile); // Uses cookies from the temp file
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // Tells cURL to follow redirects
$output = curl_exec($ch);
curl_setopt($ch, CURLOPT_URL, "https://www.nibeuplink.com/System/".$_GET['code']."/Status/ServiceInfo");
curl_setopt($ch, CURLOPT_COOKIEFILE, $ckfile);
curl_setopt($ch, CURLOPT_POST, 0);
$result = curl_exec($ch);
$pattern = '/<h3>(.*?)<\/h3>\s*<table[^>]*>.+?<tbody>(.+?)<\/tbody>\s*<\/table>/s';
if ($debug) echo "pattern: <xmp>".$pattern."</xmp><br>";
$pattern2 = '/<tr>\s*<td>(.+?)<span[^>]*>[^<]*<\/span>\s*<\/td>\s*<td>\s*<span[^>]*>([^<]*)<\/span>\s*<\/td>\s*<\/tr>/s';
if ($debug) echo "pattern2: <xmp>".$pattern2."</xmp><br>";
preg_match_all($pattern, $result, $matches);
// build json format from matches
echo '{';
$first = true;
foreach ($matches[1] as $i => $title) {
echo ($first ? '"' : ',"').trim($title).'":{';
$content = $matches[2][$i];
preg_match_all($pattern2, $content, $values);
$nestedFirst = true;
foreach ($values[1] as $j => $field) {
echo ($nestedFirst ? '"' : ',"').trim($field).'":"'.$values[2][$j].'"';
$nestedFirst = false;
}
echo "}";
$first = false;
}
echo "}";
if ($debug) {
echo "<pre><xmp>";
echo print_r($matches);
echo "<br><br>";
echo $result;
echo "</xmp></pre>";
}
?>
Kommentar
-
Hey!
Ich würde auch gerne meine Novelan/Nibe Split 8 auslesen. Allerdings verwende ich FHEM zur Steuerung.
Dieser Thread hier scheint der einzige im ganzen Netz zu sein in dem sich Leute mit der Entschlüsselung des Protokolls beschäftigt haben
Gibt es hier neue Fortschritte?
@ctr: Konntest du bzgl. "Senden" von Nachrichten Fortschritte machen?
Vielen Dank und LG
Toby
Kommentar
-
Zitat von brandst Beitrag anzeigenHallo,
ich bin ebenfalls interessiert an dieser Anbindung, da ich eine Nibe Split LWP besitze und diese in smarthome.py als Plugin implementieren möchte. Ihr habt geschrieben, dass ihr euch über die Serviceschnittstelle am Display anhängt. Habt ihr da ein ganz normale Cat6 Netzwerkkabel mit Standard RJ45 PIN-Belegung genommen? Wenn ja, kann ich da zB. dann diesen Adapter für den Anschluss auf meinem Raspberry verwenden:
USB 2.0 USB2.0 to RS-485 RS485 RJ45 RJ-45 Interface: Amazon.de: Computer & Zubehör
oder muss ich bei der PIN-Belegung über RJ45 etwas besonderes beachten?
Vielen Dank für dieses Projekt - ich dachte schon ich kann die Daten meiner nie auswerten.
lg Thomas
Mich würde auch interessieren, ob es jemand bereits geschafft hat mit einem Raspberrypi die NIBE F1145 oder ähnliche abzufragen ?
Kann man so einen USB to RS485 Adapter dafür verwenden ?
Bitte um Info.
Danke,
Kommentar
-
Die physische Anbindung geht damit, auch mit einem USB-RS485 Adapter (ob jetzt genau mit dem kann ich nicht sagen, ich nehme diesen hier https://shop.wiregate.de/wiregate/us...x-1333vis.html
Das Problem ist eher das Protokoll und das Datenformat...
Ich habe da etwas rudimentäres (aber nur lesend) für Nibe Split (für die es Nibe Uplink nicht gibt), weiß nicht (mehr) wie ähnlich das F1145 Protokoll ist.
Kommentar
-
Hallo ctr,
Ich wäre auch an einer Anbindung interessiert. Ich hab allerdings eine ca. 12 Jahre alte Fighter 1135. Dafür gab es seinerzeit mal RCU10 und 20 direkt von Nibe. Ich möchte auch nur lesend auf die WP zugreifen. Insbesondere wenn die WP in Kühlbetrieb geht wegen der Ansteuerung der einzelnen Stellantriebe. Habe bisher mit einem Raspi und OpenHAB 2 ein bißchen rumexperimentiert, allerdings ohne Erfolg.
Wenn Du schon rausbekommen hast, welche Adern des RJ45 Anschlusses auf dem Board die richtigen sind, wäre es schön, wenn Du das hier postest.
Danke und Gruß
Jan
Kommentar
-
Hallo ctr,
lese doch nochmal die Nachricht von Jan. Wenn ich das richtig lese, möchte er seine Heizung/Stellantriebe in den Kühlmodus umschalten sobald die WP in den Kühlbetrieb geht. Dafür ist es ggf. gar nicht notwendig die Register aus der WP über komplexe Logiken auszulesen. Evtl. hat hat seine WP ja ebenfalls einen Schaltkontakt wo genau dieser Status anliegt. Dann kann er sich den umständlichen Kram über RS485 etc. sparen.
PS: Ich hatte (ist schon 5 Jahre her) mal ein Testprogramm geschrieben um die Nibe mittels RS485 Adapter abzufragen.Ich hatte eigentlich vor den COP (Leistungszahl) der WP zu berechnen. Dazu benötigt man den Wert des Wärmemengenzählers. Dieser Wert kann aber leider nicht über die RS485 Schnittstelle abgefragt werden, daher habe ich dann die Lust an dem Projekt verloren...
Kommentar
-
Zitat von ctr Beitrag anzeigen
Auf der CPU Karte ist es der linke Anschluss, welchen ich verwende. Und da ist jetzt die Frage: Sind die beiden Datenleitungen die ganz Linke oder die ganz rechts?!
RS485 Adapter.JPGCPU Karte.JPGZuletzt geändert von JaLu; 18.11.2017, 14:05.
Kommentar
-
Hallo zusammen,
ich habe es gestern geschafft eine F1255-6 per Arduino UNO, W5100 Ethernet Shield und MAX 485 ein paar Modbus Register per UDP an openHAB zu schicken. Die Auswertung sollte dann auch im HS/FS oder anderen funktionieren. Mein Problem aktuell: Nicht alle Register enthalten Daten:
Code:Number Nibe_BF1_Flowsensor { nibeheatpump="40072" } -->OK Number Nibe_BT1_OutdoorTemp { nibeheatpump="40004" } -->OK Number Nibe_BT2_SupplyTemp { nibeheatpump="40008" } -->OK Number Nibe_BT6_HotWaterLoad { nibeheatpump="40014" } -->OK Number Nibe_BT7_HotWaterTop { nibeheatpump="40013" } -->OK Number Nibe_BT3_ReturnTemp { nibeheatpump="40012" } -->OK Number Nibe_BT10_BrineInTemp { nibeheatpump="40015" } -->OK Number Nibe_BT11_BrineOutTemp { nibeheatpump="40016" } -->OK Number Nibe_DegreeMinutes { nibeheatpump="43005" } -->OK Number Nibe_CompressorState { nibeheatpump="43427" } -->leer Number Nibe_BrinePumpSpeed { nibeheatpump="43439" } -->leer Number Nibe_EnergyAccSystem { nibeheatpump="42504" } -->leer Number Nibe_HotWaterEnergyAcc { nibeheatpump="42437" } -->leer Number Nibe_HeatEnergyAcc { nibeheatpump="42439" } -->leer Number Nibe_BrinePumpSpeed2 { nibeheatpump="47418" } -->OK Number Nibe_CompressorFreq { nibeheatpump="43136" } -->leer Number Nibe_Alarm { nibeheatpump="45001" } -->leer
VG,
Klayman
Kommentar
-
Lösung gefunden: Das openhab Nibe Heatpump Binding mit dem Modbus Emluator (arduino an RS485) unterstützt von Hause aus nur die F750 und die F1145/1245. Hier aber auch nicht alle möglichen Register, sondern nur einen Teil. Leider wirft das Binding aber keinen Fehler wenn man ein nicht unterstützes Register in die Items-Datei schreibt. Um das zu umgehen muss man die fehlenden Register in NibeHeatPumpDataParser.java hinzufügen und das Binding dann neu kompilieren. Wie das genau geht sollte man googeln ;-) Hier aber die wesentlichen Schritte auf nem Debian System:
- Nibe Heatpump binding deinstallieren
- openhab service neu starten
- git clone des bindings
- maven runterladen und installieren (apt-get install...)
- NibeHeatPumpDataParser.java mit gewünschten Registern anpassen
- neu kompilieren (mvn package)
- jar file aus dem Target-Verzeichnis in /usr/share/openhab2/addons kopieren
- openhab service neu starten
- wie gehabt konfigureren
Damit und in Verbindung mit Grafana lassen dann sich schicke Grafen erzeugen die Nibe Uplink in nix nachstehen. Außerdem bekommt man auch noch Statusmeldungen und Alarme auf den Bus.
Viele Grüße,
Klayman
Kommentar
Kommentar