Läuft: Heizung mit eBus-Schnittstelle

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

Vorheriges Thema - Nächstes Thema

theotherhalf

Mein Vaillant Regler VRS 620 ist nicht per ebus mit meiner Therme ecoTec  plus VC DE 196/3-5 verbunden. Das ist im verbauten Hydraulikschema begründet. Sollwert bezieht die Therme über die 7-8-9 Verbindung.
Meine Idee war nun, sowohl den Regler als auch die Therme über eine eigene ebusd Instanz auszulesen.
Beim Regler klappt es gut. Es ist eine Menge Aktivität auf der Schnittstelle.
Von der Therme bekomme ich allerdings nur die<aa> beim raw logging. Per Scan wird das Gerät gefunden, aber es scheint keine Messages auf den Bus abzusetzen. Kann das jemand bestätigen?
FHEM Anfänger
HM CCU2 mit diversen Komponenten als Steuerung
FHEM mit Floorplan auf Raspi 3 (Raspbian Jessie)  zur Visualisierung (Heizung, Zustände, etc.) und angeschlossenen One-Wire Sensoren
Schnittstelle CCU2 - FHEM mit HMCCU
EBUSD Applikation auf Raspi 2 mit Anbindung an Vaillant Heizung

Binnesmann

Zitat von: john30 am 17 April 2017, 21:51:11
Wie gesagt, das sind von der Natur her eigentlich Write Messages, deshalb kann man die auch nicht mittels "ebusctl read" so einfach auslesen.
Ich schätze, was Du möchtest, ist, dass ebusd die von anderen Teilnehmern versendeten Write Nachrichten nur mitliest, damit Du sehen kannst, was damit transportiert wurde, richtig?
Dann musst Du den Typ entweder auf "uw" (sog. Update Write bzw. eigentlich Passive Write) setzen oder darum ergänzen (dann könntest Du auch selbst mit ebusd die Nachricht als Write verschicken).

Hallo John,

ich wollte noch eine kurze Rückmeldung geben. Ja, ich möchte "nur" auf alle verfügbaren Daten zugreifen können. Die mir wichtigsten Daten werden ausgelesen und in eine Datenbank geschrieben.

Ich bekomme leider von meiner Frau nicht so viel Freizeit wie ich gerne hätte.  ;) Ich habe gestern abend ein Update auf die Version 2.4 ausgeführt und Änderungen an den csv's gemacht. Jetzt läuft alles wie ich es möchte. Was es genau war kann ich nicht sagen, ich habe beides gleichzeitig durchgeführt.

Mir fehlt nur noch die Übersetzung für den Befehl 5023. Da findet man aber keine weiteren Info's zu, und ich kann bei den zyklisch wechselnden Telegrammen keine Zusammenhänge erkennen.

An dieser Stelle noch einmal vielen, vielen Dank für die geleistete Arbeit. Ich habe meine csv's mal angehängt für die, die eine Wolf R2 haben.

Beste Grüße

Binnesmann

heinkalot

Hallo zusammen,

ich bin gerade dabei, meine Heizung über FHEM zu steuern. Dank der vielen tollen Infos und Tips hier im Forum bin ich (für meine Amateur-Verhältnisse) schon recht weit gekommen. Der EBUS-Koppler läuft und ich haberbereits in FHEM die ersten Werte dargestellt. Jetzt wollte ich mich an die Heizkurve machen wie im EBUS-FHEMWiki beschrieben. Leider wird das Schreiben über TimeOut abgebrochen:

2017.04.27 22:12:09 1: PERL WARNING: Use of uninitialized value $ecmd in concatenation (.) or string at ./FHEM/67_ECMDDevice.pm line 60.
2017.04.27 22:12:09 1: PERL WARNING: Use of uninitialized value $cmd in substitution (s///) at fhem.pl line 993.
2017.04.27 22:12:09 1: PERL WARNING: Use of uninitialized value $cmd in concatenation (.) or string at fhem.pl line 1020.
2017.04.27 22:12:12 2: EBUS: first attempt to read timed out, trying to close and open the device.
2017.04.27 22:12:12 3: Opening EBUS device 192.168.178.40:8888
2017.04.27 22:12:12 3: EBUS device opened
2017.04.27 22:12:15 2: EBUS: second attempt to read timed out, this is an unrecoverable error.
2017.04.27 22:12:15 1: EBUS: no answer received (wrote 0.85 (\060\056\070\065), expected .*\n\n)
2017.04.27 22:12:15 3: get HeizkurveSchreiben HeizkurveSchreiben : HeizkurveSchreiben
2017.04.27 22:12:15 3: HeizkurveSchreiben_Click return value: HeizkurveSchreiben


Konfiguriert habe ich wie folgt (Fhem.cfg)
define HeizkurveEinstellen dummy
attr HeizkurveEinstellen group Heizkurve_Einstellen
attr HeizkurveEinstellen icon temp_control
attr HeizkurveEinstellen room Vaillant
attr HeizkurveEinstellen setList state:0.60,0.65,0.70,0.75,0.80,0.85,0.90,0.95,1.00,1.05,1.10,1.15,1.20,1.25,1.30
attr HeizkurveEinstellen webCmd state

define HeizkurveSchreiben_Click notify HeizkurveEinstellen {\
fhem("get HeizkurveSchreiben HeizkurveSchreiben");;\
}
attr HeizkurveSchreiben_Click group heatingControl
attr HeizkurveSchreiben_Click room Vaillant

define HeizkurveSchreiben ECMDDevice bai00.class
attr HeizkurveSchreiben IODev EBUS
attr HeizkurveSchreiben group Heizkurve_Einstellen
attr HeizkurveSchreiben room Vaillant


und bai00.cfg
# Heizkurve lesen
get HKurve cmd {"r -f Hc1HeatCurve\n"}
get HKurve expect ".*\n*"
get HKurve postproc { sprintf("%3.2f",$_) }
#
# HeizkurveSchreiben Calormatic 470, bai00.cfg
get HeizkurveSchreiben cmd {"write -c 470#install Hc1HeatCurve".Value("HeizkurveEinstellen")."\n"}
get HeizkurveSchreiben expect ".*\n\n"
get HeizkurveSchreiben postproc  { $_}


über cmd
ebusctl w -c 470#install Hc1HeatCurve 0.8
kann ich die Heizkurve verstellen. Wird mit done quittiert. Hat einer von euch eine Idee, was ich falsch mache? Würde mich sehr über Hilfe freuen!

jkriegl

da kommt done also expect ist schon mal falsch. Wie soll die Parameterübergabe funktionieren?
Ändere das Muster ab.
# Ferientemperatur
get T.Ferien cmd {"r RoomTempHoliday\n"}
get T.Ferien expect ".*\n\n"
get T.Ferien postproc { sprintf("%.1f",$_) }

set T.Ferien cmd { "w -c ui RoomTempHoliday %temp\n" }
set T.Ferien params temp
set T.Ferien expect "done\n"
set T.Ferien postproc {if ($_ =~ "done") {"%temp"} else {$_}}

Prüfe ob HeizkurveEinstellen nur ein Feld beinhaltet.
Rpi 3, Fhem, Cul 868, HM-CC-RT-DN, HM-Sec-Sco, HM-ES-PMSw1-Pl, ebus (Vaillant), ECMD, Telegram, HTTPMOD, Xiaomi, Shelly

heinkalot

Hallo zusammen,

vielen Dank für die Tips! ich habe es jetzt hinbekommen. Heizkurve lässt sich verstellen und es kommt auch der Notify "done".  :)

Was habe ich gemacht:
Ich hatte zuerst die Ansätze von jkriegl probiert, aber das ändert das eigentliche Fehlersymptom nicht ab. Parallel hatte ich john30 angeschrieben, weil ich noch andere Fragen hatte. Er hat mir dann den entscheidenden Tip gegeben. Die csv hatten einen Accesslevel, damit man die  "riskanten" Größen nicht einfach so verstellen kann. Durch Modifikation der csv habe ich dann das Schreiben in FHEM erfolgreich hinbekommen,

@john30: Darf ich deinen Workaround hier so posten?

Grüße
Sebastian


john30

Zitat von: heinkalot am 03 Mai 2017, 19:00:46
@john30: Darf ich deinen Workaround hier so posten?
kannst schon machen, aber das ist eigentlich nicht "der richtige" Weg. Besser wäre es, dem Aufrufer den Access Level beizubringen, damit eben nicht jede beliebige Nachricht ohne entsprechende Rechte verschickt werden kann.

Nochmal der Kontext für alle:
Vor kurzem habe ich ebusd durch Einführung von ACL etwas mehr Sicherheit beigebracht und insofern benötigt man nun zum Senden von Nachrichten mit einem definierten Access Level die entsprechenden Rechte.
Das lässt sich durch ein ACL File und Authentifizierung in der TCP Verbindung lösen oder indem man ebusd beim Starten den default Level anhebt.
Letzteres geht durch Anhängen von "--accesslevel=LEVEL" an die ebusd Startparameter (also z.B. "--accesslevel=install" für Installateur oder "--accesslevel=*" zum Ignorieren der Levels). Siehe dazu auch das Wiki zum Startparameter und zum neuen auth Kommando.
Wem das zu kompliziert ist (ist es ja eigentlich nicht wirklich), der kann alternativ auch einfach in den CSVs den Access Level rausoperieren (i.d.R. durch Ersetzen von "wi" oder "ws" in der ersten Spalte durch "w").
author of ebusd

theotherhalf

ich habe derzeit noch etwas Schwierigkeiten FHEM über ECMD mit dem Ebus zu verbinden.
Eingerichtet habe ich es derzeit für eine Variable wie im WIKI beschrieben und möchte es schrittweise ausbauen.
Die Anhänge zeigen das FHEM UI und einen Ausschnitt aus dem Logfile.

Es sieht so aus, als wenn sich FHEM nicht mit dem EBUS verbinden würde.
FHEM läuft auf einem Raspi mit 192.168.178.9, Ebusd läuft auf einem eigenen Raspi mit 192.168.178.11.
Beide hängen im selben Netz per LAN angebunden.
Habe ich etwas übersehen?
FHEM Anfänger
HM CCU2 mit diversen Komponenten als Steuerung
FHEM mit Floorplan auf Raspi 3 (Raspbian Jessie)  zur Visualisierung (Heizung, Zustände, etc.) und angeschlossenen One-Wire Sensoren
Schnittstelle CCU2 - FHEM mit HMCCU
EBUSD Applikation auf Raspi 2 mit Anbindung an Vaillant Heizung

heinkalot

Den Fehler mit den drei Anführungszeichen hatte ich auch. Meine Code-Zeile sieht jetzt so aus. Damit geht es (musst nur deine IP ändern)

define EBUS ECMD telnet 192.168.178.40:8888

Grüße
Sebastian

theotherhalf

Zitat von: heinkalot am 04 Mai 2017, 18:27:19
Den Fehler mit den drei Anführungszeichen hatte ich auch. Meine Code-Zeile sieht jetzt so aus. Damit geht es (musst nur deine IP ändern)


Genau das war es. Danke! Nun steht die Verbindung!
FHEM Anfänger
HM CCU2 mit diversen Komponenten als Steuerung
FHEM mit Floorplan auf Raspi 3 (Raspbian Jessie)  zur Visualisierung (Heizung, Zustände, etc.) und angeschlossenen One-Wire Sensoren
Schnittstelle CCU2 - FHEM mit HMCCU
EBUSD Applikation auf Raspi 2 mit Anbindung an Vaillant Heizung

theotherhalf

Kann mir jemand einen Hinweis geben wie ein Skript auszusehen hat, welches zyklisch die Parameter aus meiner Therme ausliest?
Ich habe eine Direktverbindung und der ebusd ist Master.
Ziel ist es dann die Daten in FHEM darzustellen.
Per Kommandozeile bekomme ich die Daten in die Konsole, aber wo muss dann das Skript abgelegt werden?
FHEM Anfänger
HM CCU2 mit diversen Komponenten als Steuerung
FHEM mit Floorplan auf Raspi 3 (Raspbian Jessie)  zur Visualisierung (Heizung, Zustände, etc.) und angeschlossenen One-Wire Sensoren
Schnittstelle CCU2 - FHEM mit HMCCU
EBUSD Applikation auf Raspi 2 mit Anbindung an Vaillant Heizung

heinkalot

Für FHEM steht das ja hier sehr gut beschrieben: https://wiki.fhem.de/wiki/EBUS

Ich habe den Timer einfach kopiert:
# Abfrage Timersteuerung, fhem.cfg
define EBUS.Timer at +*00:15:00 get Aussentemp Aussentemp;;get Vorlauf Vorlauf;;get Ruecklauf Ruecklauf;;get PumpeWatt PumpeWatt;get Fanspeed Fanspeed;;get PumpeWatt PumpeWatt;;get HKurve HKurve
attr EBUS.Timer group VaillantControl
attr EBUS.Timer icon time_timer
attr EBUS.Timer room Vaillant
attr EBUS.Timer verbose 0

theotherhalf

Zitat von: heinkalot am 07 Mai 2017, 09:00:22
Für FHEM steht das ja hier sehr gut beschrieben: https://wiki.fhem.de/wiki/EBUS


Nach dem Schema habe ich es eingerichtet und bekomme auch einen Wert in FHEM. ( Aussentemperatur)
Mir erschliesst sich allerdings das Schema nicht ganz, wie ich die anderen Variablen auslese. Das müsste doch Copy/Paste sein, mt anderen Namen, oder?
Ich nehme an, dass das in FHEM in der *.cfg Datei beschrieben ist und dann zum Ebusd Dämon transferiert wird, oder?
Sorry für meine laienhaften Fragen, aber ich stosse des öfteren an meine Grenzen bei dem Projekt....
FHEM Anfänger
HM CCU2 mit diversen Komponenten als Steuerung
FHEM mit Floorplan auf Raspi 3 (Raspbian Jessie)  zur Visualisierung (Heizung, Zustände, etc.) und angeschlossenen One-Wire Sensoren
Schnittstelle CCU2 - FHEM mit HMCCU
EBUSD Applikation auf Raspi 2 mit Anbindung an Vaillant Heizung

theotherhalf

#2202
Nun habe ich es geschafft einige Variablen zu transferieren.

In der Datei 15.ui.csv für die Vaillant 620/3 stosse ich auf:

r,,FlowTempDesired,Vorlauftemp. SOLL,,,,"0500",,,temp,,,Ermittelte Vorlaufsolltemperatur für das System

Bei der Abfrage über die Konsole erhalte ich den Wert 0.0.

FHEM (ECMD) zeigt mir untenstehende Fehlermeldung.

Ist dies ein Fehler im .csv File?

Beim Versuch des Auslesens von FlowTempDesiredB1 erhalte ich über die Konsole ein Timeout.

Andere Werte kann ich ohne Probleme einlesen.
Hat jemand eine Idee woran das liegen könnte?
FHEM Anfänger
HM CCU2 mit diversen Komponenten als Steuerung
FHEM mit Floorplan auf Raspi 3 (Raspbian Jessie)  zur Visualisierung (Heizung, Zustände, etc.) und angeschlossenen One-Wire Sensoren
Schnittstelle CCU2 - FHEM mit HMCCU
EBUSD Applikation auf Raspi 2 mit Anbindung an Vaillant Heizung

theotherhalf

Gibt es eine Möglichkeit aus einem multiplen Datenwort einzelne Werte heraus zu filtern, z.B. aus diesem hier:

pi@raspberrypi:~ $ ebusctl r -f status0a
38.69;open;on;off;40

Wie müsste dann in ECMD der entsprechende Block in der *.cfg aussehen ?
FHEM Anfänger
HM CCU2 mit diversen Komponenten als Steuerung
FHEM mit Floorplan auf Raspi 3 (Raspbian Jessie)  zur Visualisierung (Heizung, Zustände, etc.) und angeschlossenen One-Wire Sensoren
Schnittstelle CCU2 - FHEM mit HMCCU
EBUSD Applikation auf Raspi 2 mit Anbindung an Vaillant Heizung

Reinhart

ja!


pi@raspberrypi ~ $ ebusctl r -m 10 status01
37.0;37.0;9.062;32.0;35.0;off

pi@raspberrypi ~ $ ebusctl r -m 10 status01 temp1.0
37.0

pi@raspberrypi ~ $ ebusctl r -m 10 status01 temp1.1
37.0

pi@raspberrypi ~ $ ebusctl r -m 10 status01 temp1.2
32.0

pi@raspberrypi ~ $ ebusctl r -m 10 status01 temp1.3
35.0


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