+ Antworten
Seite 1 von 2 1 2 LetzteLetzte
Ergebnis 1 bis 10 von 13
  1. #1
    Registriert seit
    Dec 2008
    Beiträge
    3

    Standard Ansteuerung OpenTherm

    Hallo zusammen,

    kennt hier jemand eine Idee wie man mit xcomfort eine OpenTherm Ansteuerung vornehmen kann.

    Hintergrund ist ein Lüftungsgerät, welches man anstelle einen Stufenschalters über einen OT Anschluß stufenlos regulieren, bzw den Luftdurchsatz einstellen kann

    Grüße
    Michael

  2. #2
    Registriert seit
    Dec 2011
    Ort
    Bad Bramstedt
    Beiträge
    349

    Lightbulb OpenTherm über Serial ansprechen

    Deine Frage ist zwar schon etwas älter, aber vielleicht ist das hier ja trotzdem noch für jemanden von Interesse:

    Controlling the central heating system

    Mit dieser Hardware kann man sowohl die Kommunikation zwischen Raumthermostat und Therme monitoren als auch selbst Steuerbefehle senden. Das Ganze per serieller Schnittstelle. Es gibt auch eine Windows-Software vom Autor. Vielleicht lässt sich das so in IPS einbinden.
    Geändert von Titus (05.01.12 um 23:30 Uhr)
    Titus
    IPS 5.4 | Raspberry Pi 4 | RaspberryMatic | Homematic Wetterstation | Pure Multiroom-System | Kodi | FritzBox 7590 | Echos | Tasmota | 9,6 kWp PV | 12,5 kW Sonnen-Batterie | SolarEdge WR

  3. #3
    Registriert seit
    Dec 2011
    Ort
    Bad Bramstedt
    Beiträge
    349

    So, ich habe mir jetzt mal ein Kit von der weiterentwickelten Hardware bestellt. Werde dann berichten ob ich es in IPS eingebunden bekomme.
    Titus
    IPS 5.4 | Raspberry Pi 4 | RaspberryMatic | Homematic Wetterstation | Pure Multiroom-System | Kodi | FritzBox 7590 | Echos | Tasmota | 9,6 kWp PV | 12,5 kW Sonnen-Batterie | SolarEdge WR

  4. #4
    Registriert seit
    Oct 2009
    Ort
    Alkmaar Niederlande
    Beiträge
    29

    Standard Opentherm

    Hallo Titus,

    Ich bin auch dran diese DIY Gateway für Opentherm zu bauen und damit meine Heizung zu steuern.
    Hast du schon Erfolg?
    XComfort; Roommanager, 15 Dimaktoren, 16 Schaltaktorenr, 6 Jalouzieaktoren, 18 Binair Eingeange, 27 Schalter, 4 Temperaturmessungen, IPS auf WHS2011 server

  5. #5
    Registriert seit
    Dec 2011
    Ort
    Bad Bramstedt
    Beiträge
    349

    Bisher noch nicht, warte noch auf das Paket. Hoffe es kommt die Tage.
    Titus
    IPS 5.4 | Raspberry Pi 4 | RaspberryMatic | Homematic Wetterstation | Pure Multiroom-System | Kodi | FritzBox 7590 | Echos | Tasmota | 9,6 kWp PV | 12,5 kW Sonnen-Batterie | SolarEdge WR

  6. #6
    Registriert seit
    Jun 2005
    Beiträge
    3,770

    Ich habe Opentherm mal nachgeroutet, kann es jemand gebrauchen ?

    Wenn ja, Der muß die Schaltung kontrollieren ;-)

    Gruß Helmut
    Angehängte Grafiken Angehängte Grafiken  
    Geändert von Helmut (03.01.13 um 00:38 Uhr)

  7. #7
    Registriert seit
    Dec 2011
    Ort
    Bad Bramstedt
    Beiträge
    349

    Standard Gateway ist fertig

    So, nun endlich ist mein Gateway fertig und funktioniert so weit (einen Dank für die Hilfe an Roland Ketel!).

    Die Kommunikation per USB funktioniert und auch das Raumthermostat spricht mit der Therme. Die Kommunikation kann ich mir in der Software "OpenTherm Monitor" auch anschauen.

    Leider ist mein Setup für den geplanten Zweck nicht geeignet. Das Raumthermostat Siemens QAA73 ist nicht in der Lage eine Nenntemperatur von extern anzunehmen. Eine Steuerung der Heizung per Gateway + IPS geht so leider nicht

    Da werde ich wohl mal meinen Heizungsfachmann befragen müssen, ob ein anderes Thermostat problemlos eingesetzt werden kann.

    Wer schauen will ob sein Setup funktioniert kann mal hier schauen: http://www.tclcode.com/opentherm/matrix.cgi
    Titus
    IPS 5.4 | Raspberry Pi 4 | RaspberryMatic | Homematic Wetterstation | Pure Multiroom-System | Kodi | FritzBox 7590 | Echos | Tasmota | 9,6 kWp PV | 12,5 kW Sonnen-Batterie | SolarEdge WR

  8. #8
    Registriert seit
    Dec 2011
    Ort
    Bad Bramstedt
    Beiträge
    349

    Talking Nachtrag

    Noch ein kurzer Nachtrag

    Auch wenn eine Steuerung der Therme noch nicht möglich ist, so bekomme ich nun immerhin die Daten in IPS:

    • Aussentemperatur
    • Eingestellte Soll-Temperatur
    • Boiler-Temperatur
    • Rücklauf-Temperatur
    • Modulationswert
    • Brenner An/Aus
    • Fehler


    Für jemanden der eigentlich immer nur in deutlich höheren Schichten programmiert war das "Bit-geschiebe" eine echte Herausforderung - aber nun läuft es. Ein Raspberry ist per USB mit dem Gateway verbunden und ein Python-Skript erledigt die serielle Kommunikation und Dekodierung der Nachrichten. Minütlich übergibt es die gesammelten Daten dann per HTTP-Post an IPS.
    Titus
    IPS 5.4 | Raspberry Pi 4 | RaspberryMatic | Homematic Wetterstation | Pure Multiroom-System | Kodi | FritzBox 7590 | Echos | Tasmota | 9,6 kWp PV | 12,5 kW Sonnen-Batterie | SolarEdge WR

  9. #9
    Registriert seit
    Aug 2009
    Beiträge
    364

    Hi,

    ich bin auch am überlegen mir so ein Gateway zu kaufen. Würdest du deinen Code (Für den Raspberry PI sowie IPS) zur Verfügung stellen?
    Lesen würde mir vorerst schon einmal reichen. Schreiben dann in einem spätern Schritt.

    Vielen Dank und viele Grüße
    Christian

  10. #10
    Registriert seit
    Dec 2011
    Ort
    Bad Bramstedt
    Beiträge
    349

    Ja, kann ich Dir dann gerne geben:

    Code:
    #!/usr/bin/env python
    import serial, time, json, urllib, urllib2, logging, logging.handlers, os, sys
    
    # Create PID
    pid = str(os.getpid())
    pidfile = "/var/run/opentherm.pid"
    
    if os.path.isfile(pidfile):
        print "%s already exists, exiting" % pidfile
        sys.exit()
    else:
        file(pidfile, 'w').write(pid)
    
    # Initialize logging
    my_logger = logging.getLogger('MyLogger')
    my_logger.setLevel(logging.DEBUG)
    handler = logging.handlers.SysLogHandler(address='/dev/log')
    my_logger.addHandler(handler)
    my_logger.info("OpenTherm Gateway started ...")
    
    setpoint_temp = 0.0
    outside_temp = 0.0
    modulation_level = 0.0
    return_water = 0.0
    boiler_temp = 0.0
    flame_status = 0
    ch_mode = 0
    fault = 0
    control_setpoint = 0.0
    start = time.time()
    
    
    def getf88(data):
            try:
                    firstbit = int(data[:1])
                    if firstbit > 7:
                            # negativ!
                            deci = int(data,16)
                            print deci
                            temp = ((65536.0-deci)/256.0)*-1.0
                    else:
                            # positiv
                            deci = int(data,16)
                            temp = (deci / 256.0)
                    return temp
            except Exception, e:
                    # Das ging schief weil 'anders' negativ
                    deci = int(data,16)
                    temp = ((65536.0-deci)/256.0)*-1.0
                    return temp
    
    def getflag8(data, bit):
            # 8-bit HEX data and the deserved bit position
            scale = 16 ## equals to hexadecimal
            num_of_bits = 8
            bitmask = bin(int(data, scale))[2:].zfill(num_of_bits)
            position = (1 + bit) * -1
            return bitmask[position]
    
    def send_outdoor_temp(ot):
            global ser, my_logger
            ot = float(ot)
            if (ot < 990):
                    command = "OT=" + str(ot)
                    ser.write(command)
                    my_logger.info("OpenTherm Aussentemp:" + command) 
    
    def send_json():
            global my_logger
            try:
                    out = {"OT":outside_temp,"ML":modulation_level,"BT":boiler_temp,"RW":return_water,"ERR":fault,"FS":flame_status,"CHM":ch_mode, "CS":control_setpoint,"RS":setpoint_temp}
                    out = json.dumps(out)
                    parameter = {"json":out}
                    data = urllib.urlencode(parameter)
                    request = urllib2.Request("http://IPS-IP:82/user/opentherm/data.php", data)
                    response = urllib2.urlopen(request)
                    outtemp = response.read()
                    send_outdoor_temp(outtemp)
                    my_logger.info("OpenTherm " + out)
            except Exception, e:
                    my_logger.exception(e)
            #print response
    
    
    ser = serial.Serial("/dev/ttyUSB0")  # open first serial port
    #print ser.portstr       # check which port was really used
    while True:
            line = ser.readline() 
            sender = line[:1]
            id = line[3:5]
            data = line[5:9]
            try:
                    id = int(id, 16)
            except Exception, e:
                    my_logger.exception("OpenTherm Invalid ID found. Received: " + line)
                    id = 999 # If no valid ID is found we use a fake one
            
            if id == 27 and sender == 'B':
                    # Outside Temp.
                    outside_temp = getf88(data)
            elif id == 1 and sender == 'T':
                    control_setpoint = getf88(data)
            elif id == 16 and sender == 'T':
                    setpoint_temp = getf88(data)
            elif id == 17 and sender == 'B':
                    # Modulation Level
                    modulation_level = getf88(data)
            elif id == 25 and sender == 'B':
                    # Boiler Water Temp
                    boiler_temp = getf88(data)
                    #print "RAW: " + line +"|Val:"+str(boiler_temp)
            elif id == 28 and sender == 'B':
                    # Return Water Temp
                    return_water = getf88(data)
            elif id == 0 and sender == 'B':
                    # Flame State, Faults, Central Heating Mode
                    lower = data[2:]
                    flame_status = getflag8(lower, 3)
                    fault = getflag8(lower, 0)
                    ch_mode =getflag8(lower, 1)
            # Send about every Minute
            now = time.time()
            if (now-start) > 60:
                    send_json()
                    start = now
    
    #print sender
    #print id
    #print line
    ser.close()
    Titus
    IPS 5.4 | Raspberry Pi 4 | RaspberryMatic | Homematic Wetterstation | Pure Multiroom-System | Kodi | FritzBox 7590 | Echos | Tasmota | 9,6 kWp PV | 12,5 kW Sonnen-Batterie | SolarEdge WR

Ähnliche Themen

  1. Ansteuerung Beckhoff CX1000
    Von Pepper im Forum SPS Automatisierungstechnik
    Antworten: 27
    Letzter Beitrag: 28.04.11, 19:19
  2. Ansteuerung einer Heizung über COM oder LON-Bus
    Von winni im Forum Haustechnik
    Antworten: 20
    Letzter Beitrag: 09.07.08, 06:39
  3. Antworten: 4
    Letzter Beitrag: 05.02.08, 17:21
  4. FS20 AS4 - Ansteuerung / Variable
    Von remote-it im Forum Allgemeine Diskussion
    Antworten: 7
    Letzter Beitrag: 02.01.08, 13:47