Ich habe eine einfache Möglichkeit gefunden die Wärmepumpe zur Brauchwassererwärmung unserer Aerosmart M von extern zu steuern: Mit dem "EVU-aktiv" Kontakt kann man die Wärmepumpe deaktivieren. Ich schalte den Kontakt mit einer Shelly Plus 1, von 10-15 Uhr ist der Kontakt geschlossen (da ist die Wahrscheinlichkeit für PV-Eigenstrom am höchsten), den Rest der Tages- und Nachtzeit bleibt er offen.
Zusätzlich möchte ich noch den Door open Schalter zum Abschalten der Lüftung mit einer in Serie geschalteten Shelly je nach Luftqualität (lt. CO2 Sensor) mit Home Assistant steuern.
Ich hab dazu auch einen ausführlichen Artikel auf meinem Blog geschrieben:
https://strohblogger.medium.com/drex...t-91658d2c2313
Ankündigung
Einklappen
Keine Ankündigung bisher.
Wärmepumpe/Wohnraumlüftung Drexel und Weiss
Einklappen
X
-
Ich versuche momentan nur mit einem einfachen Python Code was raus zu bekommen, hab kein Smarthome.py oder ähnliches laufen. Dein Code funktioniert bei mir soweit dass ich Werte empfangen kann, nur kann ich nicht steuern welche.
Zum Testen hätte ich auch schon versucht das Register "202" abzufragen ohne Funktionen, die Registernummer hab ich manuell erhöht.Code:import time import serial ser= serial.Serial(port='/dev/ttyDuW', baudrate=115200, timeout=0.8, write_timeout=0.8) def write_duw(reg, data): response=bytes() #ser.flushInput() if data == 'x': reg = int(reg)+1 result = ser.write("130 {0:d}\r\n".format(int(reg)+1).encode('ascii')) time.sleep(0.2) response1 = ser.readline() time.sleep(0.2) response2 = ser.readline() else: #ser.flushOutput() result = ser.write("130 {0:d} {1:d}\r\n".format(reg, data).encode('ascii')) print("Writing register: {}, value: {}. Result: {}".format(reg, data, result)) time.sleep(0.1) #ser.flushInput() result = ser.write("130 {0:d}\r\n".format(int(reg)+1).encode('ascii')) time.sleep(0.1) response1 = ser.readline() response2 = ser.readline() print("Response for register {}: {} {}.".format(reg, response1, response2)) def read_duw(): response=bytes() while True: response=ser.readline() time.sleep(0.1) print("Response duw: {}.".format(response))
Danach empfange ich zwar Register aber nicht das dass ich abfragen wollte.Code:ser.write("130 203\r\n").encode('ascii')) read_duw()
Danke und LG
Einen Kommentar schreiben:
-
Nimm das Plugin aus dem develop und gib deine x2 direkt in plugin.yaml an. Vielleicht klappt es dann?
Einen Kommentar schreiben:
-
Hallo,
ich versuche meine x2 über Linux und Python abzufragen bzw. zu steuern. Das Script von Onkelandy funktioniert bei mir leider nicht, ich bekomme automatisch aber unregelmäßig Werte von der x2 geschickt, leider kann ich kein definiertes Register abfragen. Hatte schon mal wer so ein Problem?
Danke und LG
Einen Kommentar schreiben:
-
Ich hatte jetzt gerade massive Probleme mit der Kommunikation. Es half nur ein Auslösen der Sicherung. Jetzt scheint alles wieder gut, außer, dass am Panel im Automatikbetrieb das "CO2" nicht mehr auftaucht
Der Vollständigkeit halber hier noch mein Python Code für diverse Testungen:
Nervig ist, dass bei meiner x2 plus ständig der Wert 0 für Register 1348 gesendet wird.. Sonst auch bei jemandem?Code:import time import serial ser= serial.Serial(port='/dev/ttyDuW', baudrate=115200, timeout=0.8, write_timeout=0.8) def write_duw(reg, data): response=bytes() #ser.flushInput() if data == 'x': reg = int(reg)+1 result = ser.write("130 {0:d}\r\n".format(int(reg)+1).encode('ascii')) time.sleep(0.2) response1 = ser.readline() time.sleep(0.2) response2 = ser.readline() else: #ser.flushOutput() result = ser.write("130 {0:d} {1:d}\r\n".format(reg, data).encode('ascii')) print("Writing register: {}, value: {}. Result: {}".format(reg, data, result)) time.sleep(0.1) #ser.flushInput() result = ser.write("130 {0:d}\r\n".format(int(reg)+1).encode('ascii')) time.sleep(0.1) response1 = ser.readline() response2 = ser.readline() print("Response for register {}: {} {}.".format(reg, response1, response2)) def read_duw(): response=bytes() while True: response=ser.readline() time.sleep(0.1) print("Response duw: {}.".format(response))Zuletzt geändert von Onkelandy; 02.09.2017, 21:39.
Einen Kommentar schreiben:
-
Hallo Daniel,Zitat von daniell82 Beitrag anzeigenGleich noch als Ankündigung: Ich werde die Ablage der Daten in der nächsten Version nicht mehr in Dateien sondern in einer kleinen SQL Datenbank ablegen. Auch die Schnittstelle um Daten an die Aerosmart zu senden werde ich einem Redesign unterwerfen.
Da wird aber noch ein bischen Zeit ins Land gehen. Bin aber dran...
Grüße,
Daniel
Asche auf mein Haupt, dass ich diesen alten Thread ausgrabe, aber gibts Neuigkeiten zu der Java-Library? Ich habe auch eine Drexel & Weiss Anlage (x²) aus dem Jahr 2011 und würde gerne einige Werte davon in openHAB übernehmen. Und: Aus der Installationsanleitung werde ich nicht ganz schlau, vielleicht könntest du da mal drüberschaun (speziell was den Aufruf angeht)?
Danke im Voraus!
Einen Kommentar schreiben:
-
für smarthome.py hab ich mir jetzt ein plugin gebastelt, damit kann ich alle daten die in der modbusbeschreibung auftauchen auswerten und ggf. die Anlage auch steuern wie ich will, verwende dazu nur die usb serviceschnittstelle ohne Modbusadapter....
https://knx-user-forum.de/smarthome-...ss-plugin.html
Einen Kommentar schreiben:
-
perl script
Hi,
I wrote a very small perl script to illustrate the functionality of the communication with a D&W.
Hope this helps.
Code:#!/usr/bin/perl -w # Reads a number of registers from the virtual serial port connect to a D&W # Connect the D&W with a USB cable to the computer (eg: raspberry PI) where this script will be running # Find out which port is added in the /dev/ folder. # Mod the variable $PORT in order to match what you have found. # # This script is tested on a raspberry Pi type B connected with a D&W primus. # The opperating system running on the Pi is "Raspbian GNU/Linux 7 (wheezy)" # # In order to read a reg first a write through the serial bus should be done. # The ID and the Reg number incremented with 1 should be written. # eg: "130 201\n" will instantiate the read of register 200 # D&W will respond with a string which contains the value of the reguster # eg: "130 201 21235" This means register 200 contains the value 21235 # For this reg a temp of 21.235 C use strict; use Device::SerialPort qw( :PARAM :STAT 0.07 ); my $PORT = "/dev/ttyUSB0"; my $Id = "130"; my @Regs2Read = qw(230 5002 1066 202 200 1184 1186 216 1092 1094 5060); my $ob = Device::SerialPort->new($PORT); $ob->baudrate(115200); $ob->parity("none"); $ob->databits(8); $ob->stopbits(1); $ob->handshake("xoff"); $ob->read_const_time(1000); $ob->write_settings; open(SERIAL, "+>$PORT"); foreach my $Reg (@Regs2Read) { my $RegRead = $Reg+1; my $String = $Id." ".($Reg+1)."\xd"; $ob->lookclear ; $ob->write($String) or die ("Could not write to port: $!"); Wait4SERIAL: while (my $line = <SERIAL>) { if ( ${line} =~ /${Id}\s${RegRead}\s(\d+)/ ) { print "${line}"; last(Wait4SERIAL); } } } close(SERIAL);
Einen Kommentar schreiben:
-
so hab mir das jetzt auch mal angesehen....
auf der USB Serviceschnittstelle läuft definitiv kein Modbus sonder das ist einfach ein serielles Protokoll im Ascii Format welches aber auch die "Modbusregister" als Zieladresse verwendet.
Schreiben:
<D&W Device ID><Space><RegisterID><Space><Wert><CR><LF>
Response:
<D&W Device ID><Space><RegisterID><Space><Wert><CR><LF>
Lesen:
<D&W Device ID><Space><RegisterID+1>
Response:
<D&W Device ID><Space><RegisterID><Space><Wert><CR><LF>
Offizielle Aussage von D&W ist jedoch das die Garantie erlischt wenn man mit dieser Schnittstelle "herumspielt".
Wer das nicht will muss den Modbusadapter kaufen wo dann wirklich Modbus drauf läuft. Der Adapter ist deshalb so teuer weil da quasi eine erweiterte Garantie eingepreist ist!
Einen Kommentar schreiben:
-
Bekomme auf m raspberry leider ne Fehlermeldung. Ne Idee dagegen?
Malformed \uxxxx encoding
Gesendet von meinem iPad mit Tapatalk
Einen Kommentar schreiben:
-
Jup, sorry, mein Fehler. Hätte auch keinen Sinn gemacht mit LAN, denn dann wäre die Sache ja noch einfacher gewesenZitat von gloitom Beitrag anzeigenDas ist kein LAN, es werden nur LAN-Kabel verwendet. IMHO läuft da Modbus drüber und darf nicht über einen Router/Switch laufen.
Einen Kommentar schreiben:
-
Das ist kein LAN, es werden nur LAN-Kabel verwendet. IMHO läuft da Modbus drüber und darf nicht über einen Router/Switch laufen.Zitat von Onkelandy Beitrag anzeigenWie verhalten sich die steuerpanele die "normal" via lan angeschlossen sind?
Einen Kommentar schreiben:
-
Hi Daniel! Vielen Dank fürs Feigeben. Klingt extrem easy. Steck ich wirklich nur usb an nen linuxrechner (raspi), dein javatool und los gehts? Via eidb dann auf knx. Kann man da irgendwas verbocken? Garantieprobleme? Wie verhalten sich die steuerpanele die "normal" via lan angeschlossen sind?
Einen Kommentar schreiben:
-
Gleich noch als Ankündigung: Ich werde die Ablage der Daten in der nächsten Version nicht mehr in Dateien sondern in einer kleinen SQL Datenbank ablegen. Auch die Schnittstelle um Daten an die Aerosmart zu senden werde ich einem Redesign unterwerfen.
Da wird aber noch ein bischen Zeit ins Land gehen. Bin aber dran...
Grüße,
Daniel
Einen Kommentar schreiben:
-
Servus Andy,
ich habe den aktuellen Stand nun ins Repository gestellt. Leserechte habe ich vergeben, einfach mal ausprobieren. Ich werde die kommenden Tage noch etwas Doku nachreichen...
Grüße,
Daniel
Einen Kommentar schreiben:


Einen Kommentar schreiben: