Hallo
ich habe eine erste Anbindung über 2 Scripte (Datacollecting und Aktionsscript) begonnen. Ich kann damit Werte auslesen und die Betriebsarten des Heizkreis 1 und der Warmwasser aufbereitung im Webfront ändern.
Ist das noch von interesse für Dich?
Gruß
Joachim
Dann kann man schon damit beginnen die Anbindung an Symcon zu realisieren!
Dazu muss man im jetzigen Stadium aber noch einiges im Symcon von Hand setzen!
Wie zB. für jeden zu ändernden Parameter Profile generieren sowie ein Aktionsscript hinterlegen!
<?
switch($_IPS['SENDER'])
{
case "WebFront":
SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
$value = $_IPS['VALUE'];
//
//[b] hier habe ich versucht etwas generich zu werden um nicht immer mit IDen zu arbeiten.
// leider muss das script hier an BSB Parameter und Name angepasst werden!! [/b]
//
$param = GetValueString(@IPS_GetObjectIDByName("700", @IPS_GetObjectIDByName("Heizkreis 1 - Betriebsart", 24887)));
break;
default:
$value = "1";
$param = "700";
break;
}
$handle = curl_init();
//
// [b]hier unten die IP des BSB-LAN Adapters eintragen[/b]
//
$url = 'http://<IP-Addr des BSB-LAN>/JS';
$postData =
array(
"Parameter" => $param,
"Value" => $value,
"Type" => "1"
);
curl_setopt_array($handle,
array(
CURLOPT_URL => $url,
CURLOPT_POST => true,
CURLOPT_HEADER => 'Content-Type: application/json',
CURLOPT_POSTFIELDS => json_encode( $postData ),
CURLOPT_RETURNTRANSFER => true,
)
);
curl_close($handle);
?>
Und hier das Datacollecting script:
<?
//abzufragende Werte für Symcon WebFront,
$vars = array( 0 => 'Uhrzeit und Datum - Datum/Zeit',
700 => 'Heizkreis 1 - Betriebsart',
1600 => 'Trinkwasser - Trinkwasserbetrieb'
);
//
//hier fehlt noch das automatische Einrichten der Symcon Variablen und der Profile aus dem JSON anhand der Vorgaben aus $vars
//zB mit http://<IP-Addr des BSB-LAN>/JK=ALL
//dann für alle Kategorien die Variablendefinitionen udn ENUMs http://<IP-Addr des BSB-LAN>/JK=xx
//dann
foreach ($vars AS $key => $obj){
$json = file_get_contents("http://192.168.177.91/JQ=$key");
$data = json_decode($json, true);
$x = @IPS_GetVariableIDByName($obj, 24887 /*[LCN-Home\Haustechnik\Heizung]*/);
switch ($data[$key]['dataType']) {
case 1:
SetValueInteger($x , $data[$key]['value']);
break;
case 5:
SetValueString($x , $data[$key]['value']);
break;
}
}
?>
Ich habe das hier schon in dem frühen Stadium geteilt weil ich nicht sehr versiert im Programmieren bin. Das geht mir nicht gut von der hand und ich hoffe das wir evt zusammen weitere Vereinfachungen bei der einbindung des BSB-LAN in IPS erstellen können.
Ich stelle mir zB vor das man die Variablen und scriptverbindungen in IPS automatisiert programmiert bekommt.
Auch die einrichtung der Profile.
die scripte (Aktions und Data collector) generischer macht.
etc.
Hallo Joachim,
Ich melde mal großes interesse an das es hier weiter geht.
Habe ca. 1 Woche gebraucht bis ich alle wichtigen CommandID´s passend zu meinem Regler rausgefunden habe.(RVA63.244)
Nun geht es an die einbindung in IPS und da haben mir deine 2 Scripte schonmal geholfen.
Villeicht finden sich ja noch ein paar Leute die auch den bsb-lan benutzen.
Ich habe die Tage nicht viel Zeit gehabt um hier wirklich voran zu kommen. Leider.
Hier Trotzdem ein erster Wurf eines Init Scriptes.
Ich hab mir hier diverse Werte aus dem BSB-LAN JSON Output in ein Array zusammengestellt um es als Basis zu nutzen daraus die Variablen und Profile anzulegen.
Aber dazu muss ich mich erst tiefer in die IPS Libraies einarbeiten.
Das config Array beinhaltet dazu die BSB-LAN Parameter ID udn die Namen unter denen es im Webfront angezeigt werden soll.
Aktuell stellt dieses Script aber erst mal nur die Werte zusammen und schreibt sie in ein Array.
<?
$config = array( 0 => 'Uhrzeit und Datum - Datum/Zeit',
700 => 'Heizkreis 1 - Betriebsart',
1600 => 'Trinkwasser - Trinkwasserbetrieb',
7732 => 'Ein-/Ausgangstest - Vorlauftemperatur B1',
7750 => 'Ein-/Ausgangstest - Trinkwassertemperatur B3'
);
// #######################################################################
$json = file_get_contents("http://192.168.177.91/JK=ALL");
$bsb_structure = json_decode($json,true);
//print_r($bsb_structure);
$bsb_catalogdetails = array();
$bsb_categories = array ();
$j = sizeof($bsb_structure);
foreach ($config as $paramId => $paramValues) {
//print "ID: ".$paramId."
";
$i=0;
while ($i < $j){
if ( $paramId >= $bsb_structure[$i]["min"] AND $paramId <= $bsb_structure[$i]["max"]) {
$json = file_get_contents("http://192.168.177.91/JQ=".$paramId);
$bsb_categorie = json_decode($json,true);
foreach ($bsb_categorie as $id => $value){
$value["category"]= $bsb_structure[$i]["name"];
$bsb_categories[$id]=$value;
}
//print "struct $i
";
$json = file_get_contents("http://192.168.177.91/JK=".$i);
$bsb_profile = json_decode($json,true);
//print_r($bsb_profile);
//print_r($bsb_profile[$paramId]["possibleValues"])."
";
$bsb_categories[$paramId]["possibleValues"] = $bsb_profile[$paramId]["possibleValues"];
}
$i++;
}
// Zur auswertung wie viele Werte possibleValues hat.
// Um daraus dann die Profile für dei Aktionsscripte zu erstellen.
//print "Anzahl ENUMs: ".sizeof($bsb_categories[$paramId]["possibleValues"])."
";
//print"#######################################################################
";
}
//print_r($bsb_catalogdetails);
print_r($bsb_categories);
?>
hängt ganz vom Model ab. Habe im Dezember 2018 eine neue Heizung von Brötje bekommen, da wurden optional drei Kommunikationsmodul angeboten. KNX, weiß ich nicht mehr und Modbus. Letzteres habe ich gekauft und habe auch schon ein Modul dazu (begonnen).
Hallo Sewo
schau Dir dazu bitte den dritten Eintrag in diesem Thread genau an. Da sind Links zu den Grundlegenden Bausteinen und beschrieben wie du das IPS programieren musst.
Du brauchst einen Arduino Mega2560 mit Ethernetshield W5100 (ein Gehäuse und ein USB Netzteil sind noch angebracht)
und als Software auf dem Arduino das BSB-LAN Modul.
Damit Du die Software auf das Bord spielen kannst zudem noch die arduino Entwicklungsumgebung.
Die Software muss auch noch auf dein Netz abgestimmt werden, dh. Du musst die Configdatei anpassen! Dazu gibt es wie gesagt ein gut beschriebenes Handbuch. der link ist oben.
Dann hast Du erst mal nur für die Heizung bei Dir im Netzwerk ein WEB Interface gebaut! Dh. eine Seite auf der du die Heizung über deinen Browser abfragen kannst.
Dann musst Du noch das IPS programieren (Beispiel gibt es hier auch im Thread) das das IPS diesen „WebServer“ über die im Webserver integrierte JSON Schnittstelle abfragen kann.
Die Erfahrung zeigt das dieses Arduino System aber dazu neigt irgendwann auszusteigen. Dh gelegentliches Neustarten ist leider nötig.
ich bekomme kurzfristig einen neuen Brötje WGB Brennwertkessel.
Aktuell bin ich nur bei der Erweiterung durch das IDA und ggf. die Modbusschnittstelle
Gibt es mittlerweile eine KNX Schnittstelle?
Bei Brötje steht in der Doku etwas von einem optimalen KNX-Gateway, aber ich finde dort gar nix.
Wäre schön, wenn Ihr etwas licht ins Dunkel bringen könntet, denn die „normalen“ nicht smarten Heizungsbauer kennen sich mit solchen Fragen überhaupt nicht aus.
Es gibt keine KNX Schnittstelle, sondern es kann ein Modbus-RTU Modul eingesetzt werden, an das dann ein KNX Modbus RTU Gateway 886 von Weinzierl gehängt werden kann.
Mit dem Gateway können dann 250 KNX Datenpunkte erzeugt werden.
Ich werde jetzt erstmal die IDA von Brötje verbauen und dann mal sehen, was noch fehlt und wie kommunikativ die wirklich ist.