Buderus Logamatic 2107 Revision 3 2019
Moderator: Co-Administratoren
Re: Buderus Logamatic 2107 Revision 3 2019
Ok, ich habe es fast befürchtet , aber wie heißt es doch so schön, man wächst mit seinen Herausforderungen
Kannst du mir hier "ein" Ralais empfehlen?
DANKE für das JSON das ist ein Abend mehr mit der Familie!!!!!! Ich werde es versuchen sobald das Gerät wieder einsatzfähig ist!
Kannst du mir hier "ein" Ralais empfehlen?
DANKE für das JSON das ist ein Abend mehr mit der Familie!!!!!! Ich werde es versuchen sobald das Gerät wieder einsatzfähig ist!
- Black
- Beiträge: 5480
- Registriert: 12.09.2015, 22:31
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Wegberg
- Hat sich bedankt: 424 Mal
- Danksagung erhalten: 1074 Mal
- Kontaktdaten:
Re: Buderus Logamatic 2107 Revision 3 2019
ohne werbung zu machen:
https://www.voelkner.de/products/693967 ... -1St..html
sowas in der art, wichtig ist 230V und Entstörbaustein
und kontakte hartvergoldet (weil du nur die 3.3V des PI schaltest und bei AG(Ni bei der kleinen Spannung de selbstreinigungseffekt wegfällt
Black
https://www.voelkner.de/products/693967 ... -1St..html
sowas in der art, wichtig ist 230V und Entstörbaustein
und kontakte hartvergoldet (weil du nur die 3.3V des PI schaltest und bei AG(Ni bei der kleinen Spannung de selbstreinigungseffekt wegfällt
Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg
Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann
Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W
technical contribution against annoying advertising
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg
Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann
Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W
technical contribution against annoying advertising
Re: Buderus Logamatic 2107 Revision 3 2019
Moin,
vielen Dank für deine Arbeit und die bereitgestellten Codeschnippsel.
Ich hätte da noch ein paar Fragen:
würdest du den Code für die Webserver API noch teilen? Ich würde gerne die Steuerung über nodered vornehmen können.
und welche Codes gibt es noch für die Konfiguration der Logamatic? Ich habe bisher leider nur den Betriebsmodus ändern können.
achja und wie kann ich die Werte für Sommer ab und Frost ab berechnen?
viele Grüße
Ben
vielen Dank für deine Arbeit und die bereitgestellten Codeschnippsel.
Ich hätte da noch ein paar Fragen:
würdest du den Code für die Webserver API noch teilen? Ich würde gerne die Steuerung über nodered vornehmen können.
und welche Codes gibt es noch für die Konfiguration der Logamatic? Ich habe bisher leider nur den Betriebsmodus ändern können.
achja und wie kann ich die Werte für Sommer ab und Frost ab berechnen?
viele Grüße
Ben
- Black
- Beiträge: 5480
- Registriert: 12.09.2015, 22:31
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Wegberg
- Hat sich bedankt: 424 Mal
- Danksagung erhalten: 1074 Mal
- Kontaktdaten:
Re: Buderus Logamatic 2107 Revision 3 2019
der Websewrvier ist eigentlich nicht schwierig. Nur häng das Dingen nie offen ins www... da sind keine Sperrmechanismen vor, ist halt kein eine API fürs interne netz.
Vor der Hauptschleife im Main startest du den Webserver als separaten task ann mit
Das war jetz tein Auszug aus dem gateway was seit 2017 unverändert bei mir unten läuft, musst du natürlich noch ein wenig auf deine Specs anpassen.
Im programmtext siehst du auch die Kodierungen, um bestimmte Konfigurationen im Kessel zu setzen.
Sommer: EIgentlich angabe von grad °... 9 = immer sommer, kessel zündet den HK nicht, wenn konfiguriert nur WWB betrieb 31 = Immer Winter = Dauerbedrieb kessel Bei Überschreitung von AUTemp > SommerTemp: Kesselbetrieb ausgesetzt
Frost und noch paar andere sind signedValuedByte, eine Art ShortInt. Musst du wie bei der Aussentemperatur so rechnen:
ich hoffe ich konnt dir erstmal weiterhelfen
Black
Code: Alles auswählen
# Threat simpler HMTL Server - dieser dient zur Kommunikation mit CCU, IO-Broker, Laptop
# Der Port beim Aufruf ist 9090
# Sytax: 192.168.2.4:9090/WWB_TEMP:40
# Hilfe ber verfügbare Funktionen: 192.168.2.4:9090/HELP
# /bin/tclsh /usr/local/pipush.tcl "WWB_TEMP:40"
class GateWay_RequestHandler(BaseHTTPRequestHandler):
def StringIsInt (self,string):
try:
int (string)
return True
except ValueError:
return False
def StringIsFloat (self,string):
try:
float (string)
return True
except ValueError:
return False
def analyse (self,path):
global datamode
global a
global LCDon
global Params
global Config
global FirstReady
global ende
global KS_P_ON
global BM_Relay
for command in path[1:].upper().split ("&"):
cmd_regex=re.compile ("([A-Z_0-9]*)")
val_regex=re.compile ("[:=](\d*\.?\d*)")
str_regex=re.compile ("[:=]([A-Z]*)")
hex_regex=re.compile ("[:=]([A-F0-9]*)")
cmd=""
Value=""
ValueStr=""
HexStr=""
erg= cmd_regex.search (command)
if erg is not None:
cmd= erg.group ()
erg= val_regex.search (command)
if erg is not None:
Value= erg.group ()[1:]
erg= str_regex.search (command)
if erg is not None:
ValueStr= erg.group ()[1:]
erg= erg= hex_regex.search (command)
if erg is not None:
HexStr= erg.group ()[1:]
#print (cmd,Value,ValueStr)
#-----------------------------------------
#LOGMODE: Schickt das Kommando "LOGMODE" an die Logamatic
if cmd=="LOGMODE":
a.newJob (b"\xee\x00\x00")
return "Kommando Logmode"
#-----------------------------------------
#STATUS schickt den Zustand der Pumpen und des Kessel an IOBroker,
# Wenn der erste Durchlauf erfolgreich abgeschlossen ist
if cmd=="STATUS":
if FirstReady:
if BM_Relay:
pushIObroker ( [("STUNDEN.BRENNER.STATE",KS_P_ON) ])
if HK1_Pumpe.getValue ()==0:
wert= False
else:
wert= True
pushIObroker ( [("STUNDEN.HK_Pumpe.STATE",wert) ])
if WW_Pumpe.getValue () & 0x01:
wert= True
else:
wert= False
pushIObroker ([("STUNDEN.Ladepumpe.STATE",wert)])
if WW_Pumpe.getValue () & 0x02:
wert= True
else:
wert= False
pushIObroker ([("STUNDEN.Zirkpumpe.STATE",wert)])
return "Status Pumpen an IO Broker gesendet"
else:
return "Erster Druchlauf Logmode noch Aktiv"
#-----------------------------------------
#LCD Display im Keller ein / ausschalten
if cmd=="LCD":
if (Value=="0") or (ValueStr== "OFF"): # LED Display ausschalten
lcd.lcd_clear ()
lcd.lcd_displayMode (displayOn=False,cursorOn=False,cursorBlink=False)
LCDon=False
zeile= "Kommando LCD ausschalten"
elif (Value=="1") or (ValueStr=="ON"): # LCD einschalten
if not LCDon:
lcd.lcd_on ()
LCDon=True
LCDstate ()
zeile= "Kommando LCD einschalten"
else:
zeile= "Kommando LCD einschalten (LCD war schon an )"
else:
zeile= "Kommando LCD ohne gueltigen Wert (0 bzw OFF oder 1 bzw ON)"
return zeile
#-----------------------------------------
#WWB Boiler Temperatursollwert setzen
elif cmd=="WWB_SW":
if self.StringIsInt (Value):
a.newJob (b"\x0c\x07\x65\x65\x65"+bytes ([int (Value)])+ b"\x65\x65")
else:
return "Kommando Sollwert Warmwasser keine gueltige Zahl"
return "Kommando Sollwert Warmwasser auf " + Value + " Grad gesetzt"
#-----------------------------------------
#Modus HK1 setzen
elif cmd=="HK1_MODE":
if (Value=="0") or (ValueStr=="NACHT"):
a.newJob (b"\x07\x00\x65\x65\x65\x65\x00\x65")
return "Kommando Modus HK1: Nacht"
elif (Value=="1") or (ValueStr=="TAG"):
a.newJob (b"\x07\x00\x65\x65\x65\x65\x01\x65")
return "Kommando Modus HK1: Tag"
elif (Value=="2") or (ValueStr=="AUTO"):
a.newJob (b"\x07\x00\x65\x65\x65\x65\x02\x65")
return "Kommando Modus HK1: Automatik"
else:
return "Kommando Modus HK1 ungueltig (0,Nacht)(1,Tag)(2,Auto)"
#-----------------------------------------
# Kommando schicken: HK1 Regeleingriff Raumtemp
elif cmd== "HK1_REGLER":
if self.StringIsInt (Value):
IntVal= int (Value)
if IntVal in range (0,11): # Die Zahlen mssen im Bereich 0..10 liegen
a.newJob (b"\x07\x15" + bytes ([IntVal]) + b"\x65\x65\x65\x65\x65")
return "Kommando HK1 Reglereingriff auf " + Value + " Grad"
else:
return "Kommando HK1 Reglereingriff ungueltig: Gueltige Werte 0-10 Grad"
else:
return "Kommando HK1 Reglereingriff: Vorgabe keine gueltige Zahl"
#-----------------------------------------
# Kommando schicken: Modus von WWB
elif cmd== "WWB_MODE":
if (Value=="0") or (ValueStr=="NACHT"):
a.newJob (b"\x0C\x0E\x00\x65\x65\x65\x65\x65")
return "Kommando Modus WWB: Nacht"
elif (Value=="1") or (ValueStr=="TAG"):
a.newJob (b"\x0C\x0E\x01\x65\x65\x65\x65\x65")
return "Kommando Modus WWB: Tag"
elif (Value=="2") or (ValueStr=="AUTO"):
a.newJob (b"\x0C\x0E\x02\x65\x65\x65\x65\x65")
return "Kommando Modus WWB: Automatik"
else:
return "Kommando Modus WWB ungueltig (0,Nacht)(1,Tag)(2,Auto)"
#-----------------------------------------
# Kommando schicken: Zirkulationsmodus
# 0 = Zirkulationspumpe aus, 1 = 1 mal Zirkulation pro Stunde, 10= 10 mal Zirkulation pro Stunde
elif cmd== "WWB_ZIRK":
if self.StringIsInt (Value):
IntVal= int (Value)
if IntVal in range (0,11): # Die Zahlen mssen im Bereich 0..10 liegen
a.newJob (b"\x0C\x0E\x65\x65\x65\x65\x65" +bytes ([IntVal]) )
return "Kommando WWB Zirkulation auf " + Value + " Zyklen pro Stunde"
else:
return "Kommando WWB Zirkulation ungueltig: Gueltige Werte 0-10 Zyklen"
else:
return "Kommando WWB Zirkulation: Vorgabe keine gueltige Zahl"
#-----------------------------------------
# Kommando schicken: Programm einstellen
elif cmd== "PROGRAMM":
IntVal= -1
if (ValueStr != "") and (ValueStr in d_PROG):
IntVal= int (d_PROG [ValueStr])
elif self.StringIsInt (Value):
IntVal= int (Value)
else:
return "Kommando Programm: Vorgabe keine gueltige Zahl 0-8"
if IntVal in range (0,9): # Die Zahlen mssen im Bereich 0..8 liegen
a.newJob (b"\x11\x00" +bytes ([IntVal]) + b"\x65\x65\x65\x65\x65")
return "Kommando Programm Nr " + str (IntVal) + " ["+ a_PROG [IntVal] + "] eingestellt"
else:
return "Kommando Programm ungueltig: Gueltige Werte 0-8 "
#-----------------------------------------
# Kommando schicken: Sommer einstellen
# Sommer stellt immer Heizung auf Sommer (oder <= 9 Grad)
# Winter schaltet automatische Tempabschaltung ab (oder >=31 grad)
# eine Gradzahl stellt die Temperatur ein, ab der Sommerbetrieb sein soll
elif cmd== "SOMMER":
IntVal= -1
if ValueStr== "SOMMER":
IntVal=9
elif ValueStr== "WINTER":
IntVal=31
elif self.StringIsInt (Value):
IntVal= int (Value)
else:
return "Kommando Sommer: Vorgabe keine gueltige Zahl 9-31"
if IntVal<9:
IntVal=9
elif IntVal>31:
IntVal=31
a.newJob (b"\x07\x00\x65" +bytes ([IntVal])+ b"\x65\x65\x65\x65")
ValStr=""
if IntVal==9:
ValStr= "[Sommerbetrieb]"
if IntVal==31:
ValStr= "[Winterbetrieb]"
return "Kommando Sommer eingestellt auf " + str (IntVal) + " Grad " + ValStr
#-----------------------------------------
# Kommando schicken: Kesselauslegung einstellen
elif cmd== "AUSLEGUNG":
# Kessel Auslegungstemperatur wird geändert
if self.StringIsInt (Value):
a.newJob (b"\x07\x0E\x65\x65\x65\x65" +bytes ([int (Value)])+ b"\x65")
return "Kommando Auslegung: Kesselauslegung geaendert auf " + Value + " Grad"
else:
return "Kommando Auslegung: Vorgabe keine gueltige Zahl"
#-----------------------------------------
# Kommando schicken: URLAUB einstellen
elif cmd== "URLAUB":
if self.StringIsInt (Value):
IntVal= int (Value)
a.newJob (b"\x11\x00\x65\x65\x65" +bytes ([IntVal]) + b"\x65\x65")
return "Kommando Urlaub eingestellt auf " + Value + " Tage"
else:
return "Kommando Urlaub: Vorgabe keine gueltige Zahl"
#-----------------------------------------
elif cmd=="KILL":
ende=True
log ("error","KILL Kommando vom Webserver empfangen")
return "Python Process Logamatic wird beendet"
#-----------------------------------------
elif cmd=="HEX":
if not (HexStr==""):
a.newJob (bytes.fromhex (HexStr))
return "HexKommando geschickt: " + HexStr
#-----------------------------------------
#Hilfetextausgabe des Gateway
elif cmd=="HELP":
zeile = "\n<code>Logamatic API Befehlssatz\n"
zeile+= "LOGMODE ---------- Kommunikation einleiten mit Logamatic 2107 ueber 3964r\n"
zeile+= "STATUS ----------- Fuehrt ein IOBroker Push durch mit Status Pumpen und Kessel\n"
zeile+= "LCD:0 ------------ LCD aus (0) bzw LCD ein (1)\n"
zeile+= "WWB_SW:44 -------- Solltemperatur setzen des WWB\n"
zeile+= "WWB_ZIRK:2 ------- Anzahl Zirkulationszyklen pro Stunde\n"
zeile+= "WWB_MODE:0 ------- Modus Warmwasser (0=Nacht, 1=Tag, 2= Auto\n"
zeile+= "HK1_MODE:0 ------- HK Modus (0=Nacht, 1=Tag, 2= Auto\n"
zeile+= "HK1_REGLER:0 ----- Reglereingriff (0= Kein Eingriff, 10= maximaler Eingriff +/- 10 Grad\n"
zeile+= "SOMMER:9 --------- Temperatur ab der Sommerbetrieb (9= Immer Sommer, 31= Immer Winter)\n"
zeile+= "AUSLEGUNG:62 ----- Kesselauslegung: wird benutzt bei der Berechnung der Heizkurve\n"
zeile+= "PROGRAMM:0 ------- Einstellen des Heizprogrammes\n"
zeile+= "URLAUB:0 --------- Einstellen von Urlaubstagen (0=Aus)\n"
zeile+= "-------------------- 0= Eigen, 1= Familie, 2= Frueh, 3= Spaet, 4=Vormittag\n"
zeile+= "-------------------- 5= Nachmittag, 6= Mittag, 7=Single, 8=Senior\n"
zeile+= "\n"
zeile+= "Michael Thelen im Oktober 2017\n"
zeile+= "</code>"
return zeile
return "Kein Kommando"
# Das dingen muss hier nicht Loggen
def log_message (self,format,*args):
return
# GET wird aufgerufen von HTTP Server
def do_GET(self):
# Send response status code
self.send_response(200)
# Send headers
self.send_header('Content-type','text/html')
self.end_headers()
# Send message back to client
message= "Logamatic 2107 Gateway\n" + self.analyse (self.path)
if isinstance (message,str):
message= message.replace ("\n","<br>")
#message = "Hello world!\nNeue Zeile"
# Write content as utf-8 data
self.wfile.write(bytes(message, "utf8"))
return
class HTTPServer_ (threading.Thread):
def __init__ (self,ServerAdress):
log ("error","starting HTTP server...")
self.Server_ = HTTPServer(ServerAdress, GateWay_RequestHandler)
threading.Thread.__init__ (self)
def run (self):
self.Server_.serve_forever (0.5)
self.Server_.server_close ()
log ("error","HTTP Server terminated")
Code: Alles auswählen
GatewayServer= HTTPServer_ ( (ipHTML, portHTML) )
GatewayServer.start ()
Das war jetz tein Auszug aus dem gateway was seit 2017 unverändert bei mir unten läuft, musst du natürlich noch ein wenig auf deine Specs anpassen.
Im programmtext siehst du auch die Kodierungen, um bestimmte Konfigurationen im Kessel zu setzen.
Sommer: EIgentlich angabe von grad °... 9 = immer sommer, kessel zündet den HK nicht, wenn konfiguriert nur WWB betrieb 31 = Immer Winter = Dauerbedrieb kessel Bei Überschreitung von AUTemp > SommerTemp: Kesselbetrieb ausgesetzt
Frost und noch paar andere sind signedValuedByte, eine Art ShortInt. Musst du wie bei der Aussentemperatur so rechnen:
Code: Alles auswählen
# Achtung, das Value ist signet, also umrechnen
AU_T.setValuePrio (float (telegram [2]-256) if (telegram [2]>127) else float (telegram [2]) )
Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg
Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann
Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W
technical contribution against annoying advertising
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg
Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann
Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W
technical contribution against annoying advertising
Re: Buderus Logamatic 2107 Revision 3 2019
super geil. vielen vielen Dank
Webserver läuft schon mal. jetzt noch die signedValuedByte umrechnen und alle Werte ebenfalls über den Webserver darstellen lassen.
viele Grüße und 1000 Dank
Ben
Webserver läuft schon mal. jetzt noch die signedValuedByte umrechnen und alle Werte ebenfalls über den Webserver darstellen lassen.
viele Grüße und 1000 Dank
Ben
Re: Buderus Logamatic 2107 Revision 3 2019
Hallo zusammen!
Sehr interessanter Thread - da auch bei mir eine Logamatic 2107 steht, die ich auslesen will, bin ich auf diesem Forum gestoßen. (Fernziel ist bei mir aber nicht die Integration in eine Homematic-Installation, sondern die Integration in eine eigene Monitoring-Lösung.)
Die Hardware ist bei mir das originale Buderus KM271 und ein Raspberry Pi 3B+. Das habe ich schon zusammengestöpselt und mit Blacks 3964R-Treiber und seinem Logamatic-Klassen-Codeschnippsel von Seite 2 dieses Threads bekomme ich auch schon (halbwegs) sinnvolle Ausgaben der Logamatic:
Woran ich allerdings aktuell scheitere, ist eine weitere "Entschlüsselung" der Diagramme. Genau genommen kann ich schon die Entschlüsselung in Blacks Logamatic-Codeschnippsel nur zur Hälfte nachvollziehen: Der Vorlauf- und Warmwasser-Werte decken sich ja noch mit der offiziellen Monitoringwerte-Doku, die man von Buderus zur Logamatic-4000-Serie im Netz findet. Aber bereits die Kessel-Temperaturwerte(?) kann ich nicht mehr nachvollziehen, weil hier Typ 0x88 und Offset 0x2A und 0x2B (42 und 43), die 4000er Doku aber bei Typ 0x88 nur bis 41 geht.
Lange Rede, kurzer Sinn: wo kann ich eine möglichst umfassende Erklärung zu den Datentelegrammen der Logamatic 2107 finden?
Vielen Dank schon mal für Eure Hilfe!
Viele Grüße
sjs77
Sehr interessanter Thread - da auch bei mir eine Logamatic 2107 steht, die ich auslesen will, bin ich auf diesem Forum gestoßen. (Fernziel ist bei mir aber nicht die Integration in eine Homematic-Installation, sondern die Integration in eine eigene Monitoring-Lösung.)
Die Hardware ist bei mir das originale Buderus KM271 und ein Raspberry Pi 3B+. Das habe ich schon zusammengestöpselt und mit Blacks 3964R-Treiber und seinem Logamatic-Klassen-Codeschnippsel von Seite 2 dieses Threads bekomme ich auch schon (halbwegs) sinnvolle Ausgaben der Logamatic:
Code: Alles auswählen
root@heizungspi:/home/pi# python3 test3.py
19:09:29.603015:[RX] 02r 10s 04r 00r 07r 01r 81r 0Er C0r 04r 10r 03r 5Ar 10s [DLE: OK]
19:09:32.604041:[RX] 02r 10s 80r 03r 28r 10r 03r B8r 10s [DLE: OK]
VL-Ist : 40
19:09:35.604724:[RX] 02r 10s 84r 27r 36r 10r 03r 86r 10s [DLE: OK]
WW-Ist : 54
19:09:38.601037:[RX] 02r 10s 88r 2Ar 2Dr 10r 03r 9Cr 10s [DLE: OK]
KS-Soll : 45
19:09:41.600263:[RX] 02r 10s 88r 2Br 29r 10r 03r 99r 10s [DLE: OK]
KS-Ist : 41
19:09:44.600533:[RX] 02r 10s 88r 2Dr 34r 10r 03r 82r 10s [DLE: OK]
19:09:47.600406:[RX] 02r 10s 88r 2Er 00r 10r 03r B5r 10s [DLE: OK]
19:09:50.600683:[RX] 02r 10s 88r 2Fr 00r 10r 03r B4r 10s [DLE: OK]
19:09:53.600556:[RX] 02r 10s 88r 31r 2Ar 10r 03r 80r 10s [DLE: OK]
19:09:56.600786:[RX] 02r 10s 88r 32r 01r 10r 03r A8r 10s [DLE: OK]
19:09:59.601490:[RX] 02r 10s 88r 38r 91r 10r 03r 32r 10s [DLE: OK]
19:10:02.601387:[RX] 02r 10s 89r 3Cr 11r 10r 03r B7r 10s [DLE: OK]
19:10:05.600805:[RX] 02r 10s 89r 3Dr 10r 10r 10r 03r A7r 10s [DLE: OK]
19:10:08.873061:[RX] 02r 10s 04r 00r 07r 01r 81r 0Er C0r 04r 10r 03r 5Ar 10s [DLE: OK]
19:10:11.873704:[RX] 02r 10s 80r 03r 2Cr 10r 03r BCr 10s [DLE: OK]
VL-Ist : 44
19:10:14.875252:[RX] 02r 10s 88r 2Br 2Cr 10r 03r 9Cr 10s [DLE: OK]
KS-Ist : 44
19:10:17.870123:[RX] 02r 10s 88r 2Dr 32r 10r 03r 84r 10s [DLE: OK]
19:10:20.870392:[RX] 02r 10s 88r 31r 22r 10r 03r 88r 10s [DLE: OK]
19:10:23.870643:[RX] 02r 10s 88r 38r 92r 10r 03r 31r 10s [DLE: OK]
Woran ich allerdings aktuell scheitere, ist eine weitere "Entschlüsselung" der Diagramme. Genau genommen kann ich schon die Entschlüsselung in Blacks Logamatic-Codeschnippsel nur zur Hälfte nachvollziehen: Der Vorlauf- und Warmwasser-Werte decken sich ja noch mit der offiziellen Monitoringwerte-Doku, die man von Buderus zur Logamatic-4000-Serie im Netz findet. Aber bereits die Kessel-Temperaturwerte(?) kann ich nicht mehr nachvollziehen, weil hier Typ 0x88 und Offset 0x2A und 0x2B (42 und 43), die 4000er Doku aber bei Typ 0x88 nur bis 41 geht.
Lange Rede, kurzer Sinn: wo kann ich eine möglichst umfassende Erklärung zu den Datentelegrammen der Logamatic 2107 finden?
Vielen Dank schon mal für Eure Hilfe!
Viele Grüße
sjs77
- Black
- Beiträge: 5480
- Registriert: 12.09.2015, 22:31
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Wegberg
- Hat sich bedankt: 424 Mal
- Danksagung erhalten: 1074 Mal
- Kontaktdaten:
Re: Buderus Logamatic 2107 Revision 3 2019
eine offizielle doku dazu gibts nicht... angefangen habe ich mit der "offiziellen" Buderus duku, die du auch hast... der rest ist reengiering...
882A ist KesselSollwert
882B KesselIstwert
882C ist die EInschalttemperatur der kessels
882D ist die Ausschalttemperatur des kessels
wenn du eine Komplette inoffzielle Doku findest, ich hätte da auch interesse ^^
Black
882A ist KesselSollwert
882B KesselIstwert
882C ist die EInschalttemperatur der kessels
882D ist die Ausschalttemperatur des kessels
wenn du eine Komplette inoffzielle Doku findest, ich hätte da auch interesse ^^
Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg
Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann
Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W
technical contribution against annoying advertising
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg
Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann
Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W
technical contribution against annoying advertising
Re: Buderus Logamatic 2107 Revision 3 2019
OK, danke - dann muss ich wohl in diesen sauren Apfel beißen.
Da ich bislang ausschließlich lesend experimentiert habe (und bevor ich mir die Heizung schrotte): Hat die Logamatic 2107 ebenso wie die 4000er einen "Direct Mode" und einen "Normal Mode", zwischen denen man mittel 0xDD bzw. 0xDC hin- und herschalten kann?
TIA,
sjs77
- Black
- Beiträge: 5480
- Registriert: 12.09.2015, 22:31
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Wegberg
- Hat sich bedankt: 424 Mal
- Danksagung erhalten: 1074 Mal
- Kontaktdaten:
Re: Buderus Logamatic 2107 Revision 3 2019
Nein, hat sie meines Wissens und ausprobierens nicht.
Am Anfang musst du einmal das Kommando logmode schicken EE0000. Daraufhin schickt dir die logamatik erstmal ihre aktuelle konfiguration und dann ihre istwertdaten.
Die istwertdaten sind das bekannte 3 Byte Telegramm.
Dann gibt's noch die konfigurationstelegramme (bank0 und bank1) 8 Byte
Und die fehlerspeichertelegramme (9 byte)
Und noch eine keep alive Telegramm, wenn keine datenänderung anstand um die Verbindung aktiv zu halten. Die sind auch 8 Byte Und fangen mit 04 an.
Daten schreibend ändern tust du mit einer besonderen Syntax der konfigurationstelegramme. Hab ich in dem programmbeispiel oben beschrieben. Wenn sie das Telegramm erfolgreich beantwortet sind die Daten übernommen
Black
Am Anfang musst du einmal das Kommando logmode schicken EE0000. Daraufhin schickt dir die logamatik erstmal ihre aktuelle konfiguration und dann ihre istwertdaten.
Die istwertdaten sind das bekannte 3 Byte Telegramm.
Dann gibt's noch die konfigurationstelegramme (bank0 und bank1) 8 Byte
Und die fehlerspeichertelegramme (9 byte)
Und noch eine keep alive Telegramm, wenn keine datenänderung anstand um die Verbindung aktiv zu halten. Die sind auch 8 Byte Und fangen mit 04 an.
Daten schreibend ändern tust du mit einer besonderen Syntax der konfigurationstelegramme. Hab ich in dem programmbeispiel oben beschrieben. Wenn sie das Telegramm erfolgreich beantwortet sind die Daten übernommen
Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg
Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann
Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W
technical contribution against annoying advertising
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg
Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann
Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W
technical contribution against annoying advertising
Re: Buderus Logamatic 2107 Revision 3 2019
Hallo zusammen,
kaum lässte man sich mal ein paar Zehntausend Datentelegramme mitloggen, schon hat man wesentliche Erkenntnisse gewonnen. Ich habe das mal alles zusammengeschrieben, soweit ich gekommen bin: https://github.com/sjs-77/logamatic2107_daten
Ich habe damit für mich erstmal (fast) alle Informationen beisammen, die für mich persönlich interessant sind, deswegen werde ich auf absehbare Zeit da wahrscheinlich nicht mehr viel Zeit in die Decodierung bzw. Reverse Engineering der Datentelegramme investieren. (Und mich stattdessen darauf konzentrieren, die Daten hübsch aufzubereiten und darzustellen. ) Wer mag, kann mir natürlich über GitHub gerne noch weitere Erkenntnisse zukommen lassen.
Einer der wenigen Aspekte, die ich bislang noch nicht verstanden habe, sind die Datenpunkte 0x88 0x2E und 0x88 0x2F. In der Logamatic-4000-Dokumentation wird das als "Kesselintegral" bezeichnet und zumindest bei Brennerbetrieb springen die Werte darin meistens wüst im gesamten Bereich zwischen 0 und 255 hin und her. Falls jemand eine sinnvolle Erklärung dafür hat, was diese Werte aussagen sollen, bin ich ebenfalls für Hinweise dankbar.
Ciao,
sjs77
kaum lässte man sich mal ein paar Zehntausend Datentelegramme mitloggen, schon hat man wesentliche Erkenntnisse gewonnen. Ich habe das mal alles zusammengeschrieben, soweit ich gekommen bin: https://github.com/sjs-77/logamatic2107_daten
Ich habe damit für mich erstmal (fast) alle Informationen beisammen, die für mich persönlich interessant sind, deswegen werde ich auf absehbare Zeit da wahrscheinlich nicht mehr viel Zeit in die Decodierung bzw. Reverse Engineering der Datentelegramme investieren. (Und mich stattdessen darauf konzentrieren, die Daten hübsch aufzubereiten und darzustellen. ) Wer mag, kann mir natürlich über GitHub gerne noch weitere Erkenntnisse zukommen lassen.
Einer der wenigen Aspekte, die ich bislang noch nicht verstanden habe, sind die Datenpunkte 0x88 0x2E und 0x88 0x2F. In der Logamatic-4000-Dokumentation wird das als "Kesselintegral" bezeichnet und zumindest bei Brennerbetrieb springen die Werte darin meistens wüst im gesamten Bereich zwischen 0 und 255 hin und her. Falls jemand eine sinnvolle Erklärung dafür hat, was diese Werte aussagen sollen, bin ich ebenfalls für Hinweise dankbar.
Ciao,
sjs77