Läuft: Heizung mit eBus-Schnittstelle

Begonnen von Prof. Dr. Peter Henning, 29 November 2014, 13:36:59

Vorheriges Thema - Nächstes Thema

sua

Um es nun noch auf die Spitze zu treiben:

Um die "wahre Lehre" der eBus-Spezifikation 100% einzuhalten, ist auch ein Kabel:
J-Y(St)Y 2x2x0,8 bzw. J-Y(St)Y 2x2x0,6
nicht gut genug, denn ein 2x2-Kabel ist nicht paarig verdrillte, sondern nur paarig viererverseilt.

Ein paarig verdrilltes Kabel fängt bei J-Y(St)Y erst ab 3 Aderpaaren an, z.B.:
J-Y(St)Y 3x2x0,8 bzw. J-Y(St)Y 3x2x0,6

;-)

matze1986

Hallo Zusammen,

Ich habe nochmal alles mit 2x2x0,8 verdrahtet. Jedoch ohne Erfolg.
Ich habe versucht den Stromüberschuss zu messen. ich habe festgestellt das ich 2 Stromquellen habe, einmal das Heizgerät VC266/5-5 (Anzeige im amperemeter zyklisch 0-100mA) und meine Steuerung VRS620/3 hat auch eine Stromquelle. Diese zeigt das gleiche Verhalten.
Schließe ich alles an habe ich Ströme weit über 100mA.
Die Frage ist nur, warum läuft der Bus Vaillant intern? und wie bekomme ich diesen unter 100mA Stromüberschuss.
Warum stellt sich kein konstanter Messstrom ein?
Meine Messschaltung weicht etwas von der vorgegebenen ab, da ich keine passende Z Diode hatte.
Aufbau: Reihenschaltung aus Diode(A->K), Zdiode 3,3V (K-->A), Zdiode 5,1V (K-->A), Amperemeter.
Damit komme ich mit 0,6V + 3,3V + 5,1V auf 9,0V bzw, bei 0,7V auf 9,1V ich habe auch die Diode mal testweise weggelassen und komme somit auf 8,4V.
Die Schaltung aus den Specs sollte ja bei Durchlass = 0,6V+0,6V+7,5V=8,7V bzw bei 0,7Durchlass bei 8,9V liegen, oder habe ich da etwas missverstanden?

MfG Matthias

Reinhart

die Zenerdiode soll ja einen Kurzschluß verhindern, muss aber tiefer als "Low" sein sonst kann man den Stromüberschuß (eigentlich die Reserve die das interne Netzteil noch hat) nicht messen. Ich habe genau die angegebene Zenerdiode mit 7,5V genommen. Bei mir stellt sich kein pulsierender Stromfluß ein sondern ist ziemlich konstant, das würde ja bedeuten das jemand am Bus den beim Senden weit unter das Low drückt.

Aber wenn jetzt deine Zenerspannung zu hoch ist (höher als das kleinste Low)  wäre das theoretisch möglich, das der Stromfluß auf 0 geht. Das sagt uns so dann nicht besonders viel weil die Messung dann einfach nicht stimmt. Das einzige was du noch testen kannst, nimm die 5,1V und schalte noch zusätzlich 3 Dioden in Serie (insgesamt dann 5) dann müsste die Strommessung wieder halbwegs stimmen.

Aber eines zeigt sich schon, wenn du auf 100mA Überschuß kommst dann hat der Konverter schon leichte Probleme beim Senden (auf Low ziehen), bzw. wird er die Signale schon verzerren. Das wäre die maximale Obergrenze laut Spez. Gegen 0 dürfte es nie gehen, sonst läuft man Gefahr das die Platine nicht mehr mit genug Energie versorgt wird. Aber das wird auch nicht der Fall sein.

Alles in allem, ist es jetzt bei dir schwierig ohne Oszilloskop da weitere zielführende Aussagen zu machen. Aber ein komplettes RAW Log von einem Scan wäre interessant, vor allem was bei den Adressen passiert die laut Konverter nicht antworten.

PS: schau mal auf deine PN!

LG
FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

matze1986

Hallo zusammen,

Ich wollte einen kurzen Zwischenstand abgeben.
Ich Habe es bis heute noch nicht vollständig mit dem Ethernet-koppler zum Laufen bekommen. Mit einem Oszilloskop bekomme ich saubere Signale auf dem Bus. Hier sind die Spannungen auch stabil. Alle Geräte haben eine Low-Spannung <12V und high >20V.
Ich werde mir jetzt einen anderen Koppler (USB) besorgen und melde mich dann wieder mit den Ergebnissen.

Mfg Matthias

Reinhart

FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

matze1986

#2840
Hi Zusammen,

ich habe die Letzten Tage/ Wochen noch viel am Ethernetkoppler probiert, mit Esera telefoniert und ein paar Dinge zur Verbesserung ausprobiert (Bsp.: Widerstand in reihe zum Koppler um den Stromverbrauch zu senken (200-470 Ohm)) jedoch alles ohne Erfolg.
Der Service bei Esera ist echt gut. Es wird sich sofort Zeit genommen, wenn man anruft, und auf das Problem eingegangen und nach einer Lösung gesucht.
Aktueller Stand sieht so aus, das ich den Ethernet Koppler zurücksenden werde oder zu einem Gratis Hardwareupdate einschicke (Hardware jedoch immernoch mit Poti). Der Koppler ist ja nicht defekt, sondern arbeitet mit meinen Komponenten halt nicht vollständig.

Ich hatte die Möglichkiet einen USB Koppler von Reinhart auszuprobieren. https://forum.fhem.de/index.php/topic,93190.msg857894.html#msg857894  Vielen Dank Reinhart für deine Unterstützung!!

Die Platine kam, ans Rpi dran, kurz konfiguriert, nochmal geprüft ob der USB stimmt, da anfangs keine Daten kamen, alles mal neugestartet und dann...

Es lief & läuft perfekt!!   ;D ;D ;D

Habe den Koppler jetzt auf Adresse ff laufen. Ohne Probleme, innerhalb von wenigen Minuten wurden alle Geräte erkannt und die passenden CSVs zugeordnet. Lesen und schreiben ist über GAEBUS problemlos möglich.

Vielen Dank an Alle die das Projekt vorantreiben und an alle die im Forum unterstützen!

Anbei meine Config:


EBUSD_OPTS="-d /dev/ttyUSB0 -p 8888 -l /var/log/ebusd.log  --scanconfig --latency=20000 --address=ff  --loglevel=error"


Das System läuft jetzt seit knapp 2 Wochen stabil. Es gibt keine Probleme. Nur gelegentliche (1x pro h) Arbritierungsfehler, welche aber normal sind denke ich.

Ich habe nur noch ein Problem mit dem Autostart vom Ebus daemon. Seitdem ich das System auf einem Rpi 3B+ aufgesetzt habe, startet der Daemon nicht automatisch.
Ich habe eine ebusd Datei mit folgendem Inhalt im Ordner /etc/init.d/  jedoch ohne Erfolg


#!/bin/bash
#
### BEGIN INIT INFO
# Provides:        ebusd
# Required-Start:  $network $remote_fs $syslog
# Required-Stop:   $network $remote_fs $syslog
# Default-Start:   2 3 4 5
# Default-Stop:    0 1 6
# Short-Description: controls ebusd, the daemon for communication with eBUS heating systems.
### END INIT INFO

DAEMON=/usr/bin/ebusd
PIDFILE_PREFIX=/var/run/ebusd
PIDFILE_SUFFIX=.pid

. /lib/lsb/init-functions
[ -r /etc/default/ebusd ] && . /etc/default/ebusd

if [ ! -x $DAEMON ]; then
log_failure_msg "$DAEMON is not available or not executable."
exit 5
fi

ALL_OPTS=${!EBUSD_OPTS*}
if [ ${#ALL_OPTS[@]} -lt 1 ]; then
  ALL_OPTS[0]=EBUSD_OPTS
fi
instance="EBUSD_OPTS$2"
instance=${!instance}

start_instance () {
local opts suffix
opts=$1
shift
suffix="${opts#EBUSD_OPTS}"
log_daemon_msg "Starting ebusd${suffix}" ebusd
pidfile=$PIDFILE_PREFIX${suffix}$PIDFILE_SUFFIX
start-stop-daemon --start --quiet --oknodo --pidfile $pidfile --exec $DAEMON -- --pidfile $pidfile ${!opts}
log_end_msg $?
}

stop_instance () {
local opts suffix
opts=$1
shift
suffix="${opts#EBUSD_OPTS}"
log_daemon_msg "Stopping ebusd${suffix}" ebusd
pidfile=$PIDFILE_PREFIX${suffix}$PIDFILE_SUFFIX
start-stop-daemon --stop --quiet --oknodo --pidfile $pidfile
log_end_msg $?
rm -f $PIDFILE_PREFIX${suffix}$PIDFILE_SUFFIX
}

case $1 in
start)
if [ -z "$2" ]; then
for opts in $ALL_OPTS; do
start_instance $opts
done
elif [ -z "$instance" ]; then
log_failure_msg "ebusd$2 is not configured"
else
start_instance EBUSD_OPTS$2
fi
  ;;
stop)
if [ -z "$2" ]; then
for opts in $ALL_OPTS; do
stop_instance $opts
done
else
if [ -z "$instance" ]; then
log_warning_msg "ebusd$2 is not configured"
fi
stop_instance EBUSD_OPTS$2
fi
  ;;
restart|force-reload)
ARGS=($@)
$0 stop ${ARGS[@]:1} && sleep 2 && $0 start ${ARGS[@]:1}
  ;;
status)
if [ -z "$2" ]; then
for opts in $ALL_OPTS; do
suffix=${opts#EBUSD_OPTS}
pidfile=$PIDFILE_PREFIX$suffix$PIDFILE_SUFFIX
status_of_proc -p $pidfile $DAEMON ebusd$suffix
done
else
if [ -z "$instance" ]; then
log_warning_msg "ebusd$2 is not configured"
fi
pidfile=$PIDFILE_PREFIX$2$PIDFILE_SUFFIX
status_of_proc -p $pidfile $DAEMON ebusd$2
fi
;;
*)
echo "Usage: $0 {start|stop|restart|force-reload|status} [instance]"
exit 2
;;
esac



MfG Matthias

Reinhart


Hallo matze1986!


Danke für deinen ausführlichen Bericht!


Betreffend Autostart, das kommt jetzt auf dein System drauf an, aber wenn du neu installiert hast nehme ich an läuft Stretch!
Dann solltest du den Dämon als Service starten, siehe hier.

LG
FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

matze1986

So, der Service startet jetzt auch von alleine.

Den Service musste ich nicht wie Reinhart verlinkt hat, starten, das Eintragen des configpath in meine Ebus config hat gereicht. (https://forum.fhem.de/index.php?topic=29737.2730)

Meine nun funktionierende Config inkl. Starten des Daemon nach einem Neustart lautet:

EBUSD_OPTS="--configpath=/etc/ebusd -d /dev/ttyUSB0 -p 8888 -l /var/log/ebusd.log  --scanconfig --latency=20000 --address=ff  --loglevel=error"


Alda

Hallo liebes Forum,

nach Durchsicht gibt es anscheinend jede Menge unterschiedliche Themen und deshalb frage ich einfach mal folgendes:

Ich möchte bei meiner Weishaupt-Wärmepumpe den Sollwert Raumtemperatur auslesen und habe herausgefunden, das er sich unter:

30f150230924a706d2005d01000 versteckt im Byte mit dem Wert d2 (21.0°C). Ich habe eine CSV-Datei kreiert, die folgendermaßen aussieht:
# type (r[1-9];w;u),class,name,comment,QQ,ZZ,PBSB,ID,field,part (m/s),type / templates,divider / values,unit,comment,field,part (m/s),type / templates,divider / values,unit,comment,field,part (m/s),type / templates,divider / values,unit,comment,field,part (m/s),type / templates,divider / values,unit,comment,field,part (m/s),type / templates,divider / values,unit,comment,field,part (m/s),type / templates,divider / values,unit,comment,field,part (m/s),type / templates,divider / values,unit,comment,field,part (m/s),type / templates,divider / values,unit,comment,field,part (m/s),type / templates,divider / values,unit,comment,field,part (m/s),type / templates,divider / values,unit,comment,field,part (m/s),type / templates,divider / values,unit,comment,field,part (m/s),type / templates,divider / values,unit,comment,field,part (m/s),type / templates,divider / values,unit,comment,field,part (m/s),type / templates,divider / values,unit,comment,field,part (m/s),type / templates,divider / values,unit,comment,field,part (m/s),type / templates,divider / values,unit,comment,field,part (m/s),type / templates,divider / values,unit,comment,field,part (m/s),type / templates,divider / values,unit,comment,field,part (m/s),type / templates,divider / values,unit,comment,field,part (m/s),type / templates,divider / values,unit,comment,field,part (m/s),type / templates,divider / values,unit,comment,field,part (m/s),type / templates,divider / values,unit,comment,field,part (m/s),type / templates,divider / values,unit,comment,field,part (m/s),type / templates,divider / values,unit,comment,field,part (m/s),type / templates,divider / values,unit,comment,field,part (m/s),type / templates,divider / values,unit,comment
*r,,,,,f1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
r,ehp,Act1,Broadcast mit Istwerten,,,5023,24a7,Status1,,UCH,,, noch ungekannt 06,Solltemperatur,,UCH,,,Solltemperatur,unknown1,,UCH,,,noch unbekannt 00,unknown2,,UCH,,,noch unbekannt 5d,unknown3,,UCH,,,noch unbekannt 01,unknown4,,UCH,,,noch unbekannt 00,unknown5,,UCH,,,noch unbekannt 00
!include,sc.systemheatcontrol.inc,,System WÀrmesteuerung


Jetzt zu meiner Frage: Meine ID lautet ja 24a7. Es scheint, das das erste Byte sich verändert, wenn sich die Solltemperatur (jemand ändert die Temperatur an der Anlage) verändert. Also d2 ändert sich zum Beispiel in d7, aber auch meine ID  ändert sich dann von 24a7 in z. B. 0fa7 und damit funktioniert das Ganze nicht mehr. Habe ich etwas falsch verstanden? Oder kann man die csv-Datei so anlegen, das bei der ID nur a7 berücksichtigt wird, also sowas wie ein wildcard, vielleicht ??a7?

Wäre schön, wenn mich hier einer aufklären könnte. Danke im Voraus

john30

Zitat von: Alda am 01 Dezember 2018, 18:24:32
30f150230924a706d2005d01000 versteckt im Byte mit dem Wert d2 (21.0°C). Ich habe eine CSV-Datei kreiert, die folgendermaßen aussieht:
Jetzt zu meiner Frage: Meine ID lautet ja 24a7. Es scheint, das das erste Byte sich verändert, wenn sich die Solltemperatur (jemand ändert die Temperatur an der Anlage) verändert. Also d2 ändert sich zum Beispiel in d7, aber auch meine ID  ändert sich dann von 24a7 in z. B. 0fa7 und damit funktioniert das Ganze nicht mehr. Habe ich etwas falsch verstanden? Oder kann man die csv-Datei so anlegen, das bei der ID nur a7 berücksichtigt wird, also sowas wie ein wildcard, vielleicht ??a7?
Zur ID gehört auch die Zieladresse sowie PBSB, also die ID wäre hier f1502324a7.
Ein Überspringen bzw. Auslassen eines Bytes im Datenteil ist derzeit in ebusd allerdings nicht möglich, d.h. Du müsstest schauen ob die ID nicht evtl einfach kürzer ist (nur bis inkl. PBSB), was nahe liegt wenn sich das erste Datenbyte inhaltlich mit den Daten ändern würde. Eine andere Möglichkeit ist, dass es sich bei ...24a7 doch eigentlich um eine andere Nachricht handelt, die aber genau gleich aufgebaut ist.
author of ebusd

Alda

Hallo John30

also erst mal schönen Dank für Deine Antwort und vor allem für Deine Arbeit an Ebusd. Ich finde, eine Super-Arbeit! Selten findet man, das die Arbeit auch noch so super dokumentiert ist!


30f150230920ec06c8005d010000 = 16
30f1502309e8e70604005d010000 = 16
30f150230924a706d2005d010000 = 4: ehp Act1
30f1502309e8cd061f005d010000 = 16
30f150230930b406c8005d010000 = 64
30f1502309f8c60600005d010000 = 16
30f1502309fcde0605005d010000 = 16
30f150230958e506a1005d010000 = 16
30f1502309fcd00600005d010000 = 16
30f150230934f506c8005d010000 = 16
30f1502309f0f8060f005d010000 = 16


Ich habe mal ein paar Telegramme reinkopiert. 30f15023 ist immer gleich, dann kommt die Länge (9 Bytes), dann was ich als ID benannt habe (wobei ich ja jetzt weiß, das die länger ist) und zum Schluß immer 005d010000. Die ID zu verkürzen bringt also nichts, oder?

Wie meinst Du das
Zitat
..24a7 doch eigentlich um eine andere Nachricht handelt, die aber genau gleich aufgebaut ist.
?

Eigentlich soll ja auch der Sollwert als Broadcast gesendet werden, f1 ist aber wohl keine Broadcast-Adresse?

rob uboot

bei mir läuft das teil endlich auch recht gut. :)
danke für die tolle arbeit.  :)

Hat jemand von euch die umwälzpumpe der heizung einen write befehl senden können?
ich würde diese gerne in einem hybrid system nutzen und daher außerhalb der vaillant wärmepumpe ansteuern können.
kann der pumpe zwar die write befehle senden, die werden aber nicht angenommen obwohl 'done' retour kommt.


pi@raspberrypi:~ $ ebusctl w -c 700 Hc1PumpStatus 1
done

pi@raspberrypi:~ $ ebusctl r -f Hc1PumpStatus
0


kann es sein dass man bestimmte geräte nicht mehr finden nachdem man -- enablehex in der EBUSD_OPTS hinzugefügt hat?
geht alles super aber nach dem neustart verschwindet immer die address 15: slave #2, scanned "MF=Vaillant;ID=70000;SW=0419;HW=4603", loaded "vaillant/15.700.csv"


Sven77

Ich vermute mal, dass die VRC700 selbst einfach die Pumpe wieder abschaltet.
Wie hast du den Heizkreis im Regler definiert? Gibt es überhaupt einen "manuell", mit dem man selbst festlegen kann, ob die Pumpe an oder aus ist?
Du könntest mal versuchen, stattdessen "hc1Status" zu setzen.

"Sauberer" wäre es wohl aber, das über die Zone zu steuern (hex 03000600), bei mir heißt der Wert "hc1OpMode" und kann den Heizkreis konkret setzen: 0=off;1=auto;2=day;3=night
(Könnte sein, dass das in einigen Versionen umbenannt wurde, evtl. auch "z1OpMode" probieren oder nach dem Hexwert suchen)

Das mit dem Enablehex kann ich so nicht bestätigen, bei mir werden immer identische Geräte gefunden und enablehex habe ich davon abgesehen immer drin.
VG, Sven

rob uboot

danke das hilft ein wenig weiter.
du kannst deiner 470 per terminal sagen wann sie heizen soll oder nicht?
bei meiner 470 sind einige dinge nie zu schreiben gegangen wie zb. die einmalige speicherladung 'HwcOPMode'

bei der 700 schreibt er mir den wert zwar als 'done' retour. das war es aber schon  :)
es ist wahrscheinlich nicht vorgesen so weit in das system eindringen zu können.
das wird wohl mit dem regler nicht möglich sein weil es dort selber die funktion nicht gibt.
denkst du man könnte die hex werten am innengerät selber abhören an dem auch die pumpe dranhängt?
habe auch in keiner csv etwas über das kühlen nachlesen können.
kann man das alles über den 'raw' befehl abhören und dann durch drücken der jeweiligen option mit ein wenig übung auslesen
oder bin ich da komplett falsch unterwegs?  :'(

Sven77

Ich hatte nie eine 470, von Anfang an die 700.
Für das Setzen der Sonderfunktion(en) wie "Einmalige Speicherladung" muss man den SFMode setzen, bei manchen Funktionen werden auch mehrere Sachen gesetzt, zum Abbrechen der Funktion werden dann jeweils wieder andere Sachen gesendet. Ich hatte das mal irgendwo dokumentiert, bin aber aktuell unterwegs und finde es nicht...

Durch diesen "Verhau" war es jedenfalls nicht einfach möglich, ein Feld zu definieren das auf "Speicherladung an/aus" gesetzt werden kann.
Und ja - das mit dem Mitlesen habe ich ja getan:
Hier wird es aber wenig helfen, die Meldungen der 700 an die eigentlichen Aktoren mitzulesen, weil diese danach ja alles gleich wieder nach ihrer Logik überschreiben würde. Ich habe stattdessen mitgelesen, was die VR900 bei Nutzung der App an die 700 schickt.

Das RAW-Logging brauchst du dazu eigentlich nicht, weil alle identifizierten Meldungen im normalen Log als "write" oder "update" erscheinen müssten und alle anderen als "unknown MS".
VG, Sven