Brötje EcoCondens BBS EVO - Daten auslesen

Themen, die in keine andere Kategorie passen

Moderator: Co-Administratoren

Benutzeravatar
stan23
Beiträge: 2038
Registriert: 13.12.2016, 21:14
System: Alternative CCU (auf Basis OCCU)
Wohnort: Altmühltal
Hat sich bedankt: 582 Mal
Danksagung erhalten: 336 Mal
Kontaktdaten:

Re: Brötje EcoCondens BBS EVO - Daten auslesen

Beitrag von stan23 » 27.02.2018, 14:35

Ich kann bestätigen dass das BSB-LAN Interface ganz wunderbar funktioniert:
ich habe es seit über einem Jahr mit einer Broetje WGB-15E Gastherme in Betrieb.
Viele Grüße
Marco

RaspberryMatic als VM auf einem NUC mit Proxmox und USB-Funkmodul
~80 Geräte (HM, HmIP, HMW, HBW, AskSin)

GT2006
Beiträge: 58
Registriert: 17.02.2015, 20:00

Re: Brötje EcoCondens BBS EVO - Daten auslesen

Beitrag von GT2006 » 09.10.2018, 11:19

Es sind einige Geräte dazu gekommen.
Hier die neue Geräteliste:

Atlantic Alféa Extensa + [RVS21.831F] (Wärmepumpe)
Baxi Luna Platinum + [LMS15] (Gasbrenner)

Brötje BBK 22E [LMS14] (Gasbrenner)
Brötje BBS Pro Evo 15C [LMU74] (Gasbrenner)
Brötje EcoCondens BBS 15E [LMS14] (Gasbrenner)
Brötje EcoCondens BBS 20E [LMS14] (Gasbrenner)
Brötje EcoCondens BBS 28C [LMU7] (Gasbrenner)
Brötje EcoCondens BBS EVO 20 G [LMS15] (Gasbrenner)
Brötje EcoTherm Kompakt WMS 12 [LMS 15] (Gasbrenner)
Brötje EcoTherm Kompakt WMS 24 [LMS 15] (Gasbrenner)
Brötje ISR-SSR [RVS63.283] (Solar-System-Regler)
Brötje ISR-ZR1 [RVS46.530] (Zonen-Regler)
Brötje LogoBloc Unit L-UB 25C [RVS43.122] (Ölbrenner)
Brötje NovoCondens BOB 20 [RVS43.325] (Ölbrenner)
Brötje NovoCondens SOB 26 [RVA63.242] (Ölbrenner) {LPB_only}
Brötje NovoCondens SOB 22C [RVS43.222] (Ölbrenner)
Brötje NovoCondens SOB 26C [RVS43.222] (Ölbrenner) + EWM [RVS75.390]
Brötje NovoCondens WOB 20D [RVS43.325] (Ölbrenner)
Brötje SensoTherm BLW 12 B [RVS21.825] (Wärmepumpe)
Brötje SensoTherm BLW 15 B [RVS21.825] (Wärmepumpe)
Brötje SensoTherm BSW-K [RVS61.843] (Wärmepumpe)
Brötje Trioondens BGB 20E [LMS14] (Gasbrenner)
Brötje WBS 14D [LMU74] (Gasbrenner)
Brötje WBS 22E [LMS14] (Gasbrenner)
Brötje WGB 15 E [LMS14] (Gasbrenner)
Brötje WGB 20C [LMU74] (Gasbrenner)
Brötje WGB-C 20/24H [LMS14] (Gasbrenner)
Brötje WGB EVO 20H [LMS15] (Gasbrenner)
Brötje WGB Pro EVO 20C [LMU75] (Gasbrenner)
Brötje WGB S 17/20 E EcoTherm Plus [LMS14] (Gasbrenner)
Brötje WGB-U 15H [LMS14] (Gasbrenner)

CTC 380 IC [RVS43.143] (Ölbrenner)

Elco Aerotop G07-14 [RVS61.843] (Wärmepumpe)
Elco Aerotop T10C [RVS61.843] (Wärmepumpe)
Elco Aquatop 8es [RVS51.843] (entspricht CTA Optihead OH1-8es) (Wärmepumpe)
Elco Straton 21 [RVS63.283] (Ölbrenner)
Elco Thision S Plus 13 [LMS14] (Gasbrenner)
Elco Thision S 13.1 [LMU7] (Gasbrenner)
Elco Thision S 17.1 [LMU74] & [RVS63.283] (Gasbrenner)
Elco Thision S 25.1 [RSV63.283] (Gasbrenner) + MM [AVS75.390]

Fujitsu Waterstage WSYK 160 DC 9 [RVS21.827] (Wärmepumpe)
Fujitsu Waterstage WSYP 100 DG 6 [RVS21.831] (Wärmepumpe)

MHG Procon E 25 HS [LMS14] (Gasbrenner)
Sieger TG11 [RVP54.100] (Ölbrenner) {PPS_only}
Weishaupt WTU-25 G mit WRS-CPU B2/E [RVS23.220] (Ölbrenner) {LPB_only}

PPS-basierte Regler (wie bspw. RVP digital Serie D, RVP54…, ALBATROS RVA…, LGM11…) bzw. Heizungssysteme, bei denen ein QAA50 / QAA70 zum Einsatz kommt (wie bspw. Brötje WGB 15 / WGB 20, Weishaupt WRD 0.2 / 1.1, Sieger TG11 (mit Siegermatic S42DB), Olymp THR 5-25C, Schäfer Interdomo (mit DomoCommand DC 225)), allerdings mit sehr eingeschränkter Funktionalität.
Zuletzt geändert von GT2006 am 26.11.2018, 17:13, insgesamt 2-mal geändert.

Bratmaxe
Beiträge: 1573
Registriert: 28.05.2015, 12:48
Wohnort: Willich
Hat sich bedankt: 4 Mal
Danksagung erhalten: 10 Mal

Re: Brötje EcoCondens BBS EVO - Daten auslesen

Beitrag von Bratmaxe » 07.11.2018, 09:34

Hallo,
ich habe den Adapter mittlerweile auch an meiner Brötje WGB-C 20/24 H am laufen und das ohne Probleme.
Anbei möchte ich euch meine Skripte zeigen, womit ich die Daten aus dem BSB Adapter auslese bzw. setze.


Skript zum Auslesen eines Wertes:

Code: Alles auswählen

! BSB-Adapter Wert abfragen by Bratmaxe
! 29.10.2018 - V0.1 - Erste Version
! 11.11.2019 - V0.2 - Auslesen von Temperatursensoren hinzugefügt
! 15.11.2019 - V0.3 - Änderung der Ausleseart der Temperatursensoren mithilfe der ID 

string CuxGeraetAbfrage = "CUX2801001:11"; ! GeräteAdresse des CuxD Execute Gerätes, welches die Abfragen ausführt
string CuxGeraetLogging = "CUX2801001:10"; ! GeräteAdresse des CuxD Execute Gerätes, welches das Logging ausführt, Leer ("") lassen, wenn kein Cuxd-Highcharts Logging gewünscht
string IPAdresseBSB = "192.168.178.88"; !IP_Adresse des BSB-Adapters
string Wort = "T"; !Parameternummer: Beispiel Außentemperatur = 8700, Betriebsmodus = 700, eigene Temperatursensoren = T
string TemperatursensorID = "28aa44085414010b"; !Wenn Wort = "T", dann hier die ID des auszulesenden Temperatursensors eingeben, wird sonst ignoriert!
string Variablename = "Wetter_Temperatur"; ! Name der Systemvariable
boolean Durchschnitt24h = false; ! true = Durchschnittswert holen, false = aktuellen Wert holen - diese muss vorher in der BSB_lan_config.h konfiguriert wurden sein!!! (Bei Wort = T wird dieser Parameter ignoriert)

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!Ab hier keine Anpassungen mehr notwendig!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

! URL Zusammenführen
string url="";
if (Durchschnitt24h && Wort != "T") 
{ 
	url="http://" # IPAdresseBSB # "/A" # Wort; 
}
else 
{ 
	url="http://" # IPAdresseBSB # "/" # Wort; 
}

! Variable anlegen, wenn nicht vorhanden:
object svObject = dom.GetObject(Variablename);
object svObjectlist = dom.GetObject(ID_SYSTEM_VARIABLES);
if (!svObject)
{
    svObject = dom.CreateObject(OT_VARDP);
    svObjectlist.Add(svObject.ID());
	svObjectlist = dom.GetObject(ID_SYSTEM_VARIABLES);
    svObject.Name(Variablename);   
    svObject.Internal(false);
    svObject.Visible(true);
}

! Werte holen
dom.GetObject("CUxD." # CuxGeraetAbfrage # ".CMD_SETS").State("wget --tries=5 --timeout=20 --quiet --output-document=- '"# url #"'");  
dom.GetObject("CUxD." # CuxGeraetAbfrage # ".CMD_QUERY_RET").State(1);
var stdout = dom.GetObject("CUxD." # CuxGeraetAbfrage # ".CMD_RETS").State();

! Prüfe, ob eine Ausgabe vorhanden ist, sonst z.B. IP-Adresse falsch, oder Netzwerkfehler
if (stdout != null && stdout != "")
{
	integer pos = (stdout.Find(Wort# " "));	
	
	! Ausgabe filtern
	if (Wort == "T")
	{
		pos = (stdout.Find(TemperatursensorID # ": "));	
	}

	if (pos == -1)
	{
		WriteLine("Position vom Wort '" # Wort # "' konnte nicht ermittelt werden");
	}
	
	stdout = stdout.Substr(pos, stdout.Length());
	pos = stdout.Find("/td");
	stdout = stdout.Substr(0, pos);
	
	! Sonderzeichen ersetzen
	if (stdout.Contains("°")){ stdout = stdout.Replace("°","°"); } !& d e g ; ohne Leerzeichen
	if (stdout.Contains("%")){ stdout = stdout.Replace("%","%"); } !& # 0 3 7 ; ohne Leerzeichen
	!WriteLine("Nach Sonderzeichenumwandlung: " # stdout); !Debug: Welchen Wert hat stdout aktuell

	! Systemvariabel Info ermitteln
	string Info = "";
	if (Wort == "T")
	{
		Info = "SensorID: " + TemperatursensorID;
	}
	else
	{
		Info = stdout.Substr(0,stdout.Find(":"));
	}
	!Info = Info.Substr(Wort.Length(), stdout.Length());
	!WriteLine("DPInfo = " # Info); !Debug: Welcher DPInfo-Wert wurde gefunden
	
	! Systemvariabel Wert ermitteln
	string Wert = stdout.Substr(stdout.Find(": ") + 2,stdout.Length());
	Wert = Wert.Substr(0,Wert.Find(" "));
	!WriteLine("Wert = " # Wert); !Debug: Welcher Wert wurde gefunden

	! Systemvariabel Einheit ermitteln
	string Einheit = stdout.Substr(stdout.Find(Info) + Info.Length() + 1, stdout.Length());
	Einheit = Einheit.Substr(Einheit.Find(Wert) + Wert.Length() + 1,Einheit.Length());
	Einheit = Einheit.RTrim();
	if (Einheit.Contains("- "))	{ Einheit = ""; }
	!WriteLine("Einheit = " # Einheit); !Debug: Welche Einheit wurde gefunden

	! Systemvariable Typ und Werte setzen
	svObject.DPInfo(Info);
	svObject.ValueUnit(Einheit);
	
	! Enums des Parameters ermitteln, wenn vorhanden
	url="http://" # IPAdresseBSB # "/E" # Wort;

	dom.GetObject("CUxD." # CuxGeraetAbfrage # ".CMD_SETS").State("wget --tries=5 --timeout=20 --quiet --output-document=- '"# url #"'");  
	dom.GetObject("CUxD." # CuxGeraetAbfrage # ".CMD_QUERY_RET").State(1);
	stdout = dom.GetObject("CUxD." # CuxGeraetAbfrage # ".CMD_RETS").State();
	! Prüfe, ob es sich um einen Parameter mit Enum-Werten handelt.
	if (!stdout.Contains("FEHLER: Falscher Typ!"))
	{
		! Setzen des Systemvariabel Wertetyp und Ermitteln der Enum-Werte des Parameters
		stdout = (stdout.Substr(stdout.Find("0 - "), stdout.Length())).ToLatin();
		string value = "";
		string newvalues = "";
		integer inewvalues=0;
		foreach (value, stdout.Split("\r"))
		{
			if (value.Contains(" - "))
			{
				if (newvalues == "") { newvalues = newvalues # value.Substr(value.Find(" - ") + 3,value.Length()); }
				else { newvalues = newvalues # ";" # value.Substr(value.Find(" - ") + 3,value.Length()); }
				inewvalues = inewvalues + 1;
			}
		}
		
		svObject.ValueType(ivtInteger);
		svObject.ValueSubType(istEnum);
		svObject.ValueList(newvalues);
		!prüft, ob der ermittelte Wert innerhalbe der möglichen Werte liegt
		if (Wert < inewvalues) { if (Wert != svObject.Value()) { if (Wert != "") { svObject.State(Wert); }} }
		else { WriteLine("Der ermittelte Wert entspricht keinem gültigen Enum-Wert. Bitte Ausgabe prüfen!") }
	}
	elseif (Einheit.Contains("- Aus") || Einheit.Contains("- Ein"))
	{ 
		! Setzen des Systemvariabel Wertetyp
		svObject.ValueType(ivtBinary);
		svObject.ValueSubType(istBool);
		svObject.ValueName0("Aus");
		svObject.ValueName1("Ein");
		if (Wert != svObject.Value()) {	if (Wert != "") { svObject.State(Wert); } }
	}
	elseif (Einheit.Contains("°"))
	{ 
		! Setzen des Systemvariabel Wertetyp
		svObject.ValueType(ivtFloat);
		svObject.ValueSubType(istGeneric);
		svObject.ValueMin(-50);
		svObject.ValueMax(100);
		if (Wert != svObject.Value()) {	if (Wert != "") { svObject.State(Wert); } }
	}
	elseif (Einheit.Contains("%"))
	{ 
		! Setzen des Systemvariabel Wertetyp
		svObject.ValueType(ivtFloat);
		svObject.ValueSubType(istGeneric);
		svObject.ValueMin(0);
		svObject.ValueMax(100);
		if (Wert != svObject.Value()) {	if (Wert != "") { svObject.State(Wert); } }
	}
	else
	{ 
		! Setzen des Systemvariabel Wertetyp
		svObject.ValueType(ivtFloat);
		svObject.ValueSubType(istGeneric);
		if (Wert != svObject.Value()) {	if (Wert != "") { svObject.State(Wert); } }
	}
	dom.RTUpdate(0); ! Interne Aktualisierung der Systemvariabelen

	! Logging
	if (CuxGeraetLogging != "")	{ dom.GetObject("CUxD."#CuxGeraetLogging#".LOGIT").State(dom.GetObject(ID_SYSTEM_VARIABLES).Get(Variablename).Name()#";"#dom.GetObject(ID_SYSTEM_VARIABLES).Get(Variablename).Value());	}
}


Skript zum automatischen setzen, wenn ein Wert in der CCU geändert wurde,
siehe auch die Kommentare am Anfang des Skriptes, wie das Programm erstellt werden soll und wie die Variable-Info benannt werden muss:

Code: Alles auswählen

! BSB-Adapter Wert setzen by Bratmaxe
! 29.10.2018 - V0.1 - Erste Version

! Funktionsbeschreibung: 
! Ein Programm, wo alle Systemvariabeln die Überwacht werden sollen mit ODER Verknüpft und größer oder gleich 0 und  "bei Aktualisierung auslösen" , anlegen.
! Beispiel: 
! WENN Variablename größer oder gleich 0 "bei Aktualisierung auslösen" 
! DANN Dieses SKRIPT sofort ausführen
! die Variable muss in der Info zuerst den Parameter-Wert enthalten (wird von meinem Auslese Skript automatisch so benannt. Beispiel: 700 Heizkreis 1 - Betriebsart 
! Die Parameternummer wird dann automatisch aus der Systemvariable Info ermittelt.
! Wird die Variable geändert, so wird der geänderte Wert automatisch an den BSB-Adapter übermittelt und aktualisiert!

string CuxGeraetSetzen = "CUX2801001:1"; ! GeräteAdresse des CuxD Execute Gerätes
string IPAdresseBSB = "192.168.178.100"; !IP_Adresse des BSB-Adapters

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!Ab hier keine Anpassungen mehr notwendig!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

! Hole Auslösende Variabel
var source = dom.GetObject("$src$"); !Funktioniert nur beim automatischen Aufruf
! Zum manuellen Aufruf/testen nächste Zeile einkommentieren
! source = dom.GetObject(ID_SYSTEM_VARIABLES).Get("TEST");

if (source)
{
	! Wort ermitteln
	string Wort = source.DPInfo().ToString().Substr(0,source.DPInfo().Find(" "));
	!WriteLine("Wort: "#Wort);
	if (Wort != null && Wort != "")
	{		
		string Wert = source.Value().ToString();
		!WriteLine("Wert: "#Wert);
		if (Wert != null && Wert != "")
		{
			! Anweisung senden
			string urlset="http://" # IPAdresseBSB # "/S" # Wort # "=" # Wert;
			dom.GetObject("CUxD." # CuxGeraetSetzen # ".CMD_SETS").State("wget -t 5 -T 20 -q -O - '"# urlset #"'");
			dom.GetObject("CUxD." # CuxGeraetSetzen # ".CMD_QUERY_RET").State(1);
			var stdout = dom.GetObject("CUxD." # CuxGeraetSetzen # ".CMD_RETS").State();
			if (stdout != null && stdout != "")
			{
				if (stdout.Contains("FEHLER: "))
				{
					stdout = stdout.Substr(stdout.Find("FEHLER: "), stdout.Length());
					stdout = stdout.Substr(0, stdout.Find("/td"));
					WriteLine("Fehlermeldung: "# stdout);
					WriteLine("Wurde der BSB-Adapter zum Schreiben berechtigt? Handbuch Seite 26 beachten...");
				}
				else
				{
					! Kontrollabfrage
					string url="http://" # IPAdresseBSB # "/" # Wort;
					dom.GetObject("CUxD." # CuxGeraetSetzen # ".CMD_SETS").State("wget -t 5 -T 20 -q -O - '"# url #"'");
					dom.GetObject("CUxD." # CuxGeraetSetzen # ".CMD_QUERY_RET").State(1);
					stdout = dom.GetObject("CUxD." # CuxGeraetSetzen # ".CMD_RETS").State();

					! Ausgabe filtern
					integer pos = (stdout.Find("tr  td \r\n" # Wort # " ") + 9);
					stdout = stdout.Substr(pos, stdout.Length());
					pos = stdout.Find("/td");
					stdout = stdout.Substr(0, pos);
					
					! Sonderzeichen ersetzen
					if (stdout.Contains("&deg;")){ stdout = stdout.Replace("&deg;","°"); }
					if (stdout.Contains("&#037;")){ stdout = stdout.Replace("&#037;","%"); }
					!WriteLine("Nach Sonderzeichenumwandlung: " # stdout); !Debug: Welchen Wert hat stdout aktuell
					
					! Systemvariabel oldWert ermitteln
					string oldWert = stdout.Substr(stdout.Find(": ") + 2,stdout.Length());
					oldWert = oldWert.Substr(0,oldWert.Find(" "));
					!WriteLine("oldWert = " # oldWert.ToFloat()); !Debug: Welcher oldWert wurde gefunden
					!WriteLine("newWert = " # Wert.ToFloat()); !Debug: Welcher oldWert wurde gefunden
					
					if (Wert.ToFloat() != oldWert.ToFloat()) { WriteLine("Fehler: Werte stimmen nach setzen nicht überein!"); }	
					else { WriteLine("Wert wurde erfolgreich gesetzt");	}
				}
			}
			else { WriteLine("Keine Ausgabe gefunden. IP-Adresse und Verkabelung prüfen.");	}
		}
		else { WriteLine("Der neue Wert konnte nicht ermittelt werden.");	}
	}
	else { WriteLine("Wort konnte nicht ermittelt werden, Steht der Wert in der SystemvariableInfo am Anfang gefolgt von einem Leerzeichen?");	}
}
else { WriteLine("Auslösende Variable nicht erkannt! - Skript wird nicht ausgeführt.");	}

Skript zur Fehlercode Abfrage:

Code: Alles auswählen

! BSB-Adapter Wert abfragen Fehlercodes by Bratmaxe
! 05.11.2018 - V0.1 - Erste Version

string CuxGeraetAbfrage = "CUX2801001:1"; ! GeräteAdresse des CuxD Execute Gerätes, welches die Abfragen ausführt
string IPAdresseBSB = "192.168.178.100"; !IP_Adresse des BSB-Adapters
string Variablename = "Heizung_Fehlercodes"; ! Name der Systemvariable
integer AnzahlFehler = 10;

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!Ab hier keine Anpassungen mehr notwendig!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

! Parameter Zusammenbauen
integer i =0;
string Woerter ="";
while (i < AnzahlFehler)
{
	if (Woerter != "") 
	{ 
		Woerter = Woerter + "," + ((6801) + (10 * i)).ToString(); 
	}
	else { Woerter = Woerter + ((6801) + (10 * i)).ToString(); }
	i = i + 1;
}

! URL Zusammenführen
string Ergebnis = "";
string Wort = "";

foreach(Wort, Woerter.Split(","))
{
	string url="http://" # IPAdresseBSB # "/" # ((Wort.ToInteger() - 1).ToString());
	
	! Werte holen
	dom.GetObject("CUxD." # CuxGeraetAbfrage # ".CMD_SETS").State("wget --tries=5 --timeout=20 --quiet --output-document=- '"# url #"'");  
	dom.GetObject("CUxD." # CuxGeraetAbfrage # ".CMD_QUERY_RET").State(1);
	var stdout = dom.GetObject("CUxD." # CuxGeraetAbfrage # ".CMD_RETS").State();
	
	! Prüfe, ob eine Ausgabe vorhanden ist, sonst z.B. IP-Adresse falsch, oder Netzwerkfehler
	if (stdout != null && stdout != "")
	{
		! Ausgabe filtern
		integer pos = (stdout.Find((Wort.ToInteger() - 1).ToString() #  " "));	
		stdout = stdout.Substr(pos, stdout.Length());
		pos = stdout.Find("/td");
		stdout = stdout.Substr(0, pos);
		
		! Sonderzeichen ersetzen
		if (stdout.Contains("°")){ stdout = stdout.Replace("°","°"); }
		if (stdout.Contains("%")){ stdout = stdout.Replace("%","%"); }
		stdout = stdout.ToLatin();
		Ergebnis = Ergebnis # stdout.RTrim() # "\n\r";
	}

	url="http://" # IPAdresseBSB # "/" # Wort;	
	dom.GetObject("CUxD." # CuxGeraetAbfrage # ".CMD_SETS").State("wget --tries=5 --timeout=20 --quiet --output-document=- '"# url #"'");  
	dom.GetObject("CUxD." # CuxGeraetAbfrage # ".CMD_QUERY_RET").State(1);
	stdout = dom.GetObject("CUxD." # CuxGeraetAbfrage # ".CMD_RETS").State();

	! Prüfe, ob eine Ausgabe vorhanden ist, sonst z.B. IP-Adresse falsch, oder Netzwerkfehler
	if (stdout != null && stdout != "")
	{
		! Ausgabe filtern
		integer pos = (stdout.Find(Wort# " "));	
		stdout = stdout.Substr(pos, stdout.Length());
		pos = stdout.Find("/td");
		stdout = stdout.Substr(0, pos);
		
		! Sonderzeichen ersetzen
		if (stdout.Contains("°")){ stdout = stdout.Replace("°","°"); }
		if (stdout.Contains("%")){ stdout = stdout.Replace("%","%"); }
		stdout = stdout.ToLatin();
		Ergebnis = Ergebnis # stdout.RTrim() # "\n\r\n\r";
	}
}

!Wenn noch keine Systemvarible vorhanden, diese anlegen
object svObject = dom.GetObject(Variablename);
object svObjectlist = dom.GetObject(ID_SYSTEM_VARIABLES);
if (!svObject)
{   
    svObjectlist = dom.GetObject(ID_SYSTEM_VARIABLES);
    svObject = dom.CreateObject(OT_VARDP);
    svObjectlist.Add(svObject.ID());
    svObject.Name(Variablename);   
    svObject.ValueType(ivtString);
    svObject.ValueSubType(istChar8859);
    svObject.DPInfo("Die letzen 20 Fehlercodes der Heizung");
    svObject.Internal(false);
    svObject.Visible(true);
    dom.RTUpdate(0);
}

if (Ergebnis.ToLatin() != svObject.Value().ToLatin())
{
	svObject.State(Ergebnis);
	!dom.GetObject(ID_SYSTEM_VARIABLES).Get("Telegram").State("Fehlercodes Heizung wurde aktualisiert:\n\r" # Ergebnis);
}
Sollte euch ein Fehler auffallen, dann schreibt mir am besten eine PN, dann werde ich versuchen euch zu helfen.
Am besten direkt mit dem Parameter, wo der Fehler aufgetreten ist.

Gruß Carsten

Edit 15.11.2019 - Skript update
Zuletzt geändert von Bratmaxe am 15.11.2019, 12:45, insgesamt 1-mal geändert.
Gruß Carsten

GT2006
Beiträge: 58
Registriert: 17.02.2015, 20:00

Re: Brötje EcoCondens BBS EVO - Daten auslesen

Beitrag von GT2006 » 19.11.2018, 17:13

Moin,

ein kleines Update, inzwischen gibt es ein Online-Handbuch zu dem Adapter: https://1coderookie.github.io/BSB-LPB-LAN/

Zur Zeit wird daran gearbeitet, die Gasverbräuche über den Adapter zu berechnen.
Bei einigen Heizungen kann man das direkt per Paramter auslesen (bei mir mit 99,74% Genauigkeit), bei anderen Heizungen soll es dann ausserhalb der Heizung berechnet werden.

Gruss
Jan

GT2006
Beiträge: 58
Registriert: 17.02.2015, 20:00

Re: Brötje EcoCondens BBS EVO - Daten auslesen

Beitrag von GT2006 » 26.11.2018, 17:12

Moin,

es ist die Brötje EcoCondens BBS 28C [LMU7] (Gasbrenner) {BSB}
dazu gekommen. Liste ist ergänzt.

Gruss
Jan

mikepiko
Beiträge: 173
Registriert: 18.09.2015, 10:11
Wohnort: Drolshagen
Hat sich bedankt: 4 Mal
Danksagung erhalten: 5 Mal
Kontaktdaten:

Re: Brötje EcoCondens BBS EVO - Daten auslesen

Beitrag von mikepiko » 01.12.2018, 12:32

Die fertig Bestückten Platinen gibts bei Freetz.

Entschuldigung meinerseits:
Es sollte zu keinem Fall so aussehen das ich mich hier an der Arbeit von anderen bereichern möchte.
Zuletzt geändert von mikepiko am 18.04.2019, 08:06, insgesamt 3-mal geändert.
Systemdaten: Raspberry Pi2 ( 84xHM, 14xHMIP, 3xLanGW, 34xHue)
Firmware: 3.51.6.20200420
Addons: XML-API, CUx-Daemon, E-Mail
Voice Assist: Amazon Echo/dot/spot/show(1/3/1/3) via ioBroker

freetz
Beiträge: 7
Registriert: 17.01.2019, 15:11
Danksagung erhalten: 1 Mal

Re: Brötje EcoCondens BBS EVO - Daten auslesen

Beitrag von freetz » 17.01.2019, 15:31

mikepiko hat geschrieben:
01.12.2018, 12:32
Falls jemand mit dem Gedanken spielt sich sowas zu bauen.
Ich hab noch 4 Platinen übrig !
Ich glaube, ich lese nicht richtig - Du verkaufst hier unsere Platinen, ohne auch nur mal auf die Idee zu kommen, zu fragen, ob das in Ordnung ist?
An so einem Projekt wird sicher niemand reich, aber immerhin deckt der Verkauf der Platinen in Teilen die Entwicklungskosten, z.B. den Kauf von Reglern und Steuerungen, die zur Weiterentwicklung des Projektes nötig sind, und die schnell in den dreistelligen Bereich gehen können. Nur dadurch konnten wir auch so exotische Systeme wie den PPS-Bus oder alte LMU64-Systeme über entsprechende ClipIns überhaupt finanzieren und schließlich anbinden.
Und dann kommen so Billigheimer wie Du daher, denen die 20 Euro zu teuer sind, auch wenn ihre Heizung sicher das 100fache gekostet hat, und finanzieren sich die paar Euro Fuffzich, die sie sparen, dann noch mit dem Handel der übrigen Platinen. Ich fass' es nicht.

Damit wir uns ganz klar verstehen: Die Software ist die Summe der Arbeit von vielen Leuten und deshalb Open Source. Das Platinenlayout ist von mir, und ich habe es bisher ebenfalls zum freien Download (mit Beschriftung inkl. der geistigen Eigentümer, die den Schaltplan mitentwicklet haben) bereit gestellt, damit Leute, die sich die Platinen selber ätzen wollen, das auch machen können. Wenn dann so Typen wie Du das aber missbrauchen und hier fast schon gewerblich auftreten, dann hört der Spaß (und mein Engagement für dieses Projekt) irgendwann auf.

Wer dieses Projekt also unterstützen möchte, möge sich direkt über die Projektseite melden und solchen Trittbrettfahrern die kalte Schulter zeigen.
Alle Infos zur Anbindung von Heizungssystemen mit PPS-, LPB- bzw. BSB-Bus ans LAN gibt es hier:
https://github.com/fredlcore/bsb_lan

Alle Infos zum WLAN-Interface "Robotan" für Ambrogio/Stiga/Wolf und baugleiche Rasenmähroboter:
https://github.com/fredlcore/robotan

Benutzeravatar
stan23
Beiträge: 2038
Registriert: 13.12.2016, 21:14
System: Alternative CCU (auf Basis OCCU)
Wohnort: Altmühltal
Hat sich bedankt: 582 Mal
Danksagung erhalten: 336 Mal
Kontaktdaten:

Re: Brötje EcoCondens BBS EVO - Daten auslesen

Beitrag von stan23 » 17.01.2019, 16:05

Ich habe auf Anhieb im Github-Projekt keine Lizenz gefunden. Gut wäre eine non-commercial Lizenz wie CC NY-NC-SA.

Wenn tatsächlich gar keine Lizenz angegeben ist, passiert laut Github das hier:
https://choosealicense.com/no-permission/
Viele Grüße
Marco

RaspberryMatic als VM auf einem NUC mit Proxmox und USB-Funkmodul
~80 Geräte (HM, HmIP, HMW, HBW, AskSin)

freetz
Beiträge: 7
Registriert: 17.01.2019, 15:11
Danksagung erhalten: 1 Mal

Re: Brötje EcoCondens BBS EVO - Daten auslesen

Beitrag von freetz » 17.01.2019, 16:33

Ja, wahrscheinlich muss man das noch mal so klar(er) hervorheben. Die ersten Versionen der Software hatte Gero damals im FHEM-Forum veröffentlicht, mit entsprechendem Hinweis. Die muss ich noch mal raussuchen und dann noch mal an prominenter Stelle auf GItHub hervorheben.
Auf dem Platinenlayout (BSB-Board.brd) ist ein Copyright-Vermerk, eben um solche Trittbrettfahrer zu vermeiden, aber manche schreckt auch das nicht...
Alle Infos zur Anbindung von Heizungssystemen mit PPS-, LPB- bzw. BSB-Bus ans LAN gibt es hier:
https://github.com/fredlcore/bsb_lan

Alle Infos zum WLAN-Interface "Robotan" für Ambrogio/Stiga/Wolf und baugleiche Rasenmähroboter:
https://github.com/fredlcore/robotan

Benutzeravatar
stan23
Beiträge: 2038
Registriert: 13.12.2016, 21:14
System: Alternative CCU (auf Basis OCCU)
Wohnort: Altmühltal
Hat sich bedankt: 582 Mal
Danksagung erhalten: 336 Mal
Kontaktdaten:

Re: Brötje EcoCondens BBS EVO - Daten auslesen

Beitrag von stan23 » 17.01.2019, 18:56

Stimmt, hier steht es:
https://github.com/fredlcore/bsb_lan/bl ... r/HOWTO.md

Das .brd kann ich mangels Eagle nicht öffnen, und Fotos hast du nur von der Oberseite gemacht :)
Viele Grüße
Marco

RaspberryMatic als VM auf einem NUC mit Proxmox und USB-Funkmodul
~80 Geräte (HM, HmIP, HMW, HBW, AskSin)

Antworten

Zurück zu „OffTopic“