Läuft: Heizung mit eBus-Schnittstelle

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

Vorheriges Thema - Nächstes Thema

nuccleon

Hallo zusammen,

ich habe das Problem, dass  ich Hc1ActualFlowTempDesired aus 15.470.csv immer mal wieder den Wert 90 lese. So wie ich das beobachtet habe ist das immer beim ab tauen der Wärmepumpe (Vaillant Arotherm).

Jetzt war meine Idee, Werte >=90 direkt über Conditions zu filtern, und zwar so:

#*[CONDITIONNAME],MESSAGECIRCUIT,MESSAGENAME,COMMENT,FIELDNAME,ZZ,VALUES
*[temp1<90],,Hc1ActualFlowTempDesired,,,,0-89
#TYPE,CIRCUIT,NAME,COMMENT,QQ,ZZ,PBSB,ID,fields
[temp1<90]r3,,Hc1ActualFlowTempDesired,Aktuelle Vorlauftemperatur Soll Heizkreis 1,,,,"3E00",,,temp1,,,current flow temperatu


Das Problem, der Wert wird so überhaupt nicht mehr gelesen ( ERR: element not found ). Ich werde den Verdacht nicht los, dass ich mit den Conditions grundsätzlich was falsch verstanden habe. Jemand ne Idee?

LG

Sunnyvale

Hallo Reinhart,
habe die Optokoppler getauscht, gleiches Problem, ich würde daher gerne von deinem Angebot gebrauch machen bzgl der 2.2 er Platine, die vielen Stunden im Heizungskeller haben mich mürbe gemacht ;-) ,kann ich die über dich beziehen ?

VG

sua

#2912
Zitat von: Sunnyvale am 19 Januar 2019, 11:11:08
moin moin,
anbei mal ein paar Fotos
VG
Ist Deine Platine durchkontaktiert?
Ansonst fehlt Dir hier wohl die Durchkontaktierung ('via' ;)  ) vom R2 zum R3-Poti?!

Sunnyvale

Hi,
habe durchgemessen Verbindung ist "leider" vorhanden :(

VG

Reinhart

Zitat von: Sunnyvale am 19 Januar 2019, 20:54:57
Hallo Reinhart,
habe die Optokoppler getauscht, gleiches Problem, ich würde daher gerne von deinem Angebot gebrauch machen bzgl der 2.2 er Platine, die vielen Stunden im Heizungskeller haben mich mürbe gemacht ;-) ,kann ich die über dich beziehen ?

VG

Ja kannst du, es gibt verschiedene Varianten, für Raspberry zum Aufstecken oder als Basisplatine mit Uart (so wie die V1.6). Indem du dort schon einen Raspi mit Netzwerk hast, empfiehlt sich die RPI Variante.

RPI Platine einzeln 2,50.-
RPI als Bausatz 22,80.- (inkl. Porto)
RPI gelötet und gestestet  32.- (inkl. Porto)
Basis als Bausatz 24,30.- (inkl. Porto)
Basis gelötet und gestestet  35,.- (von John30, inkl. Porto)

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

nols

Zitat von: john30 am 18 Januar 2019, 18:31:32
mit dieser Einstellung bezieht ebusd die configs vom webservice unter ebusd.eu, d.h. wenn Dein Rechner z.B. keine Internetverbindung hat, dann klappt das natürlich nicht.
für die lokalen CSVs einfach noch " -c /etc/ebusd" hinter scanconfig hängen.

Ich habe genau das gleiche Problem. Habe den Raspberry jetzt auch nochmal komplett neu aufgesetzt, dadran liegt es nicht. Ganz selten lädt er mal für die Adresse 15 zumindestens die HW und SW ID...aber keine csv. Egal ob ich den configpath lokal oder im Internet nehme.

/etc/default/ebusd
# /etc/default/ebusd:
# config file for ebusd service.

# Options to pass to ebusd (run "ebusd -?" for more info):
EBUSD_OPTS="--scanconfig -c /etc/ebusd"

# MULTIPLE EBUSD INSTANCES WITH SYSV
# In order to run multiple ebusd instances on a SysV enabled system, simply
# define several EBUSD_OPTS with a unique suffix for each. Recommended is to
# use a number as suffix for all EBUSD_OPTS settings. That number will then be
# taken as additional "instance" parameter to the init.d script in order to
# start/stop an individual ebusd instance instead of all instances.
# Example: (uncomment the EBUSD_OPTS above)
#EBUSD_OPTS1="--scanconfig -d /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A50285BI-if00-port0 -p 8888 -l /var/log/ebusd1.log"
#EBUSD_OPTS2="--scanconfig -d /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A900acTF-if00-port0 -p 8889 -l /var/log/ebusd2.log"
#EBUSD_OPTS3="--scanconfig -d /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A900beCG-if00-port0 -p 8890 -l /var/log/ebusd3.log"

# MULTIPLE EBUSD INSTANCES WITH SYSTEMD
# In order to run muiltiple ebusd instances on a systemd enabled system, just
# copy the /usr/lib/systemd/system/ebusd.service file to /etc/systemd/system/
# with a different name (e.g. ebusd-2.service), remove the line starting with
# 'EnvironmentFile=', and replace the '$EBUSD_OPTS' with the options for that
# particular ebusd instance.


ebusctl i
[12:07:22] openhabian@openHABianPi:~$ ebusctl i
version: ebusd 3.3.v3.3-10-gfa434e5
update check: revision v3.3-4-g212b22d available, broadcast.csv: different version available
signal: acquired
symbol rate: 23
max symbol rate: 59
reconnects: 0
masters: 3
messages: 13
conditional: 0
poll: 0
update: 4
address 03: master #11
address 08: slave #11
address 10: master #2
address 15: slave #2, scanned "MF=Vaillant;ID=35000;SW=0114;HW=7102"
address 31: master #8, ebusd
address 36: slave #8, ebusd


[12:09:59] openhabian@openHABianPi:~$ ebusctl grab result
1008b5040100 / 0a00ffffffffffffff0080 = 12
1008b5110101 / 0945460080454b0000ff = 36
1008b5110102 / 06033c96468270 = 12
10feb516080058101220010719 = 7
1008b512020000 / 00 = 7
1008b51009000000ffffff45ff00 / 0101 = 37


Ich habe eine Vaillant VCW206/5 und ein Calormatic 350. in diesem Post erkennt ebusd diese korrekt: https://forum.fhem.de/index.php/topic,46098.msg680644.html#msg680644

Ich komme bei mir nicht weiter. Liegt es wirklich am Poti?
Ich bin für jede Hilfe dankbar.

sua

Zitat von: Sunnyvale am 20 Januar 2019, 11:19:03
habe durchgemessen, Verbindung ist "leider" vorhanden :(

Je nach USB/TTL-Modul könnte auch der R7 (unbezeichnet auf der Platine, waagerecht unterhalb
R2/R4) Probleme bereiten (unabhängig davon: besonders dann, wenn TX nicht angeschlossen wird...).
Wenn Du Deine Platine v.1.6 nicht nach der sehr guten Anleitung von Reinhart komplett durchmessen
kannst/willst, dann wäre das probeweise einseitig Auslöten des R7 ja noch ein Test wert.

pc1246

Moin
Noch mal schnell eine Frage! Wie war das bei der V1.6? Sind da die Bruecken schon auf der Platine? Koennen die diesen Fehler bewirken?
Gruss Christoph
HP T610
Onkyo_AVR;3 Enigma2; SB_Server ; SB_Player; HM-USB mit 15 HM-CC-RT-DN, 3 HM_WDS10_TH_O, 6 HM-Sec-SCo, 4 HM-Sec-MDIR-2, 1 HM-Sen-MDIR-O-2, 8 Ferion 5000 OW ; PhilipsTV; 4 harmony hub; Jeelink mit 9 PCA301; Somfy; S7-300; 3 LGW; HUE; HM-IP auf Charly

john30

Zitat von: nuccleon am 19 Januar 2019, 19:55:55
Jetzt war meine Idee, Werte >=90 direkt über Conditions zu filtern, und zwar so:

#*[CONDITIONNAME],MESSAGECIRCUIT,MESSAGENAME,COMMENT,FIELDNAME,ZZ,VALUES
*[temp1<90],,Hc1ActualFlowTempDesired,,,,0-89
#TYPE,CIRCUIT,NAME,COMMENT,QQ,ZZ,PBSB,ID,fields
[temp1<90]r3,,Hc1ActualFlowTempDesired,Aktuelle Vorlauftemperatur Soll Heizkreis 1,,,,"3E00",,,temp1,,,current flow temperatu


Das Problem, der Wert wird so überhaupt nicht mehr gelesen ( ERR: element not found ). Ich werde den Verdacht nicht los, dass ich mit den Conditions grundsätzlich was falsch verstanden habe.
das ist so nicht der Hintergedanke bei conditions. Diese sind dafür da, die Verfügbarkeit einer Messagedefinition von einer anderen abhängig zu machen. Also so geht das nicht.
author of ebusd

Sunnyvale

Ja die 1.6er Platine hat die Brücken schon drin

americanium

Hello Leute,

nachdem bei mir jetzt grundsätzlich die Platine und die Programmierung läuft steh ich vor einem kleinen Problem, das schon öfters diskutiert wurde aber so wie ich sehe noch nicht gelöst wurde ?
Oder doch und ich übersehe etwas ?

Bei mir ist, richtigerweise die 15.700.csv importiert mir fehlt jedoch die Funktionalität, oder besser gesagt der Befehl für den Modus "1x Speicherladung".

Gibts hierzu bereits neue Infos ?

Danke im Voraus!

BG

guenni

Hiermit funktioniert es bei mir:

ebusctl w -c 700 HwcSFMode 6

Nach einer Stunde schaltet die Regelung wieder in den auto-Modus.

VG
Günter

tomleitner

Liebe Ebusd Mitstreiter,
Ich klinke mich hier kurz mal ein: Habe ebusd über einen Esera EBUS Koppler an meiner Vaillant Luft/Wärmepumpe laufen. Daten übertrage ich per MQTT and Mosquitto dann auf Fhem. Encoding ist Json. Klappt alles soweit ganz gut bis auf folgende Unstimmigkeiten die mir nicht gefallen, respektive wo ich hänge:

a.) Ich habe immer die Meldungen
ebusd/global/updatecheck "revision v3.3-4-g212b22d available, broadcast.csv: different version available, vaillant/08.ehp.csv: different version available, vaillant/15.uih.csv: different version available, vaillant/23.ehp.cc.csv: different version available, vaillant/25.ehp.hwc.csv: different version available, vaillant/50.ehp.mc.csv: different version available, vaillant/broadcast.csv: different version available, vaillant/errors.inc: different version available, vaillant/hcmode.inc: different version available, vaillant/iotesthp.inc: different version available"

sowohl im ebusd.log als auch über MQTT. Nirgends konnte ich schlüssig finden wie ich meine Definitionen updaten kann?? Ich benutze den letzten EBUSD binary package von https://github.com/john30/ebusd/releases/tag/v3.3 ... Ich verstehe das die Software automatisch die configs von ebusd.eu holt und ich sie aber auch lokal ablegen kann ... ein versuch die Config Packages runterzuladen von github und diese Lokal unter /etc/ebusd abzulegen scheiterte aber kläglich.
Was ist hier die empfohlene Vorgangsweise?

2.) Anbindung über MQTT: Ich bekomme tonnenweise Daten, nur die die ich will kriege ich nicht. Ich will folgende Daten:

+ Kompressor Status (ein/aus)
+ Aktuelles Energieintegral
+ Warmwasser Temperatur
+ Aktuelle Vorlauftemperatur
+ Aktuellel Rücklauftemperatur
+ Aktuelle Quellentemperatur

Das würde mir schon reichen. Vorlauftemperatur krieg ich ja noch, aber der Rest scheint in den Tiefen der Daten verborgen zu sein.
Durch Reverse Engineering hab ich folgende ReadingList erstellt:;
ebusd/broadcast/datetime:.* { json2nameValue($EVENT, 'datetime_', ) }
ebusd/broadcast/hwcStatus:.* { json2nameValue($EVENT, 'hwcStatus_', ) }
ebusd/broadcast/outsidetemp:.* { json2nameValue($EVENT, 'outsidetemp_', ) }
ebusd/broadcast/vdatetime:.* { json2nameValue($EVENT, 'vdatetime_', ) }
ebusd/cc/Mode:.* { json2nameValue($EVENT, 'ccMode_', ) }
ebusd/cc/Status:.* { json2nameValue($EVENT, 'ccStatus_', ) }
ebusd/cc/Timer.Monday:.* { json2nameValue($EVENT, 'ccTimer_', ) }
ebusd/ehp/ActualEnvironmentPower:.* { json2nameValue($EVENT, 'ehpActualEnvironmentPower_', ) }
ebusd/ehp/ActualEnvironmentPowerPercentage:.* { json2nameValue($EVENT, 'ehpActualEnvironmentPowerPercentage_', ) }
ebusd/ehp/currenterror:.* { json2nameValue($EVENT, 'ehpcurrenterror_', ) }
ebusd/ehp/EnergyBalancingRelease:.* { json2nameValue($EVENT, 'ehpEnergyBalancingRelease_', ) }
ebusd/ehp/errorhistory:.* { json2nameValue($EVENT, 'ehperrorhistory_', ) }
ebusd/ehp/FlowTemp:.* { json2nameValue($EVENT, 'ehpFlowTemp_', ) }
ebusd/ehp/HeatPumpStatus:.* { json2nameValue($EVENT, 'ehpHeatPumpStatus_', ) }
ebusd/ehp/HeatpumpType:.* { json2nameValue($EVENT, 'ehpHeatpumpType_', ) }
ebusd/ehp/HwcTemp:.* { json2nameValue($EVENT, 'ehpHwcTemp_', ) }
ebusd/ehp/PowerCutPreloading:.* { json2nameValue($EVENT, 'ehpPowerCutPreloading_', ) }
ebusd/ehp/SourceTempInput:.* { json2nameValue($EVENT, 'ehp_SourcetempInput_', ) }
ebusd/ehp/Status:.* { json2nameValue($EVENT, 'ehp_Status_', ) }
ebusd/ehp/Status02:.* { json2nameValue($EVENT, 'ehp_Status02_', ) }
ebusd/ehp/TimeOfNextPredictedPowerCut:.* { json2nameValue($EVENT, 'ehp_TimeOfNextPredictedPowerCut_', ) }
ebusd/ehp/YieldTotal:.* { json2nameValue($EVENT, 'ehp_YieldTotal_', ) }
ebusd/global/running:.* running
ebusd/global/signal:.* signal
ebusd/global/updatecheck:.* updatecheck
ebusd/global/version:.* version
ebusd/hwc/Mode:.* { json2nameValue($EVENT, 'hwc_Mode_', ) }
ebusd/hwc/Status:.* { json2nameValue($EVENT, 'hwc_Status_', ) }
ebusd/hwc/Timer.Monday:.* { json2nameValue($EVENT, 'hwc_Timer_Monday_', ) }
ebusd/mc/CfgHeatSinkType:.* { json2nameValue($EVENT, 'mc_CfgHeadSinktype_', ) }
ebusd/mc/DateTime:.* { json2nameValue($EVENT, 'mc_DateTime_', ) }
ebusd/mc/FlowTempDesired:.* { json2nameValue($EVENT, 'mc_FlowTempDesired_', ) }
ebusd/mc/Mode:.* { json2nameValue($EVENT, 'mc_Mode_', ) }
ebusd/mc/OperatingMode:.* { json2nameValue($EVENT, 'mc_OperatingMode_', ) }
ebusd/mc/Status:.* { json2nameValue($EVENT, 'mc_Status_', ) }
ebusd/mc/TempDesired:.* { json2nameValue($EVENT, 'mc_TempDesired_', ) }
ebusd/mc/TempDesiredLow:.* { json2nameValue($EVENT, 'mc_TempDesiredLow_', ) }
ebusd/mc/Timer.Friday:.* { json2nameValue($EVENT, 'mc_Timer_Friday_', ) }
ebusd/mc/Timer.Monday:.* { json2nameValue($EVENT, 'mc_Timer_Monday_', ) }
ebusd/mc/Timer.Saturday:.* { json2nameValue($EVENT, 'mc_Timer_Saturday_', ) }
ebusd/mc/Timer.Sunday:.* { json2nameValue($EVENT, 'mc_Timer_Sunday_', ) }
ebusd/scan.05/:.* { json2nameValue($EVENT, 'scan_05_', ) }
ebusd/scan.05/id:.* { json2nameValue($EVENT, 'scan_05_id_', ) }
ebusd/scan.08/:.* { json2nameValue($EVENT, 'scan_08_', ) }
ebusd/scan.15/:.* { json2nameValue($EVENT, 'scan_15_', ) }
ebusd/scan.15/id:.* { json2nameValue($EVENT, 'scan_15_id_', ) }
ebusd/scan.23/:.* { json2nameValue($EVENT, 'scan_23_', ) }
ebusd/scan.23/id:.* { json2nameValue($EVENT, 'scan_23_id_', ) }
ebusd/scan.25/:.* { json2nameValue($EVENT, 'scan_25_', ) }
ebusd/scan.25/id:.* { json2nameValue($EVENT, 'scan_25_id_', ) }
ebusd/scan.50/:.* { json2nameValue($EVENT, 'scan_50_', ) }
ebusd/scan.50/id:.* { json2nameValue($EVENT, 'scan_50_id_', ) }
ebusd/uih/YieldThisYear:.* { json2nameValue($EVENT, 'uih_YieldThisYear_', ) }


Die Werte die ich brauche, also hauptsächlich KompressorStatus, Energieintegral etc. etc. finde ich aber im ganzen Datenwulst nirgends.
Gibt es irgendwo eine Dokumentation über alle diese Variablen?? Ich finde nichts!!

3.) Ich verstehe das man einzelne Daten abfragen kann per MQTT indem man z.B.
mosquitto_pub -m '' -t 'ebusd/ehp/FlowTemp/get'

absetzt. Hat schon jemand eine entsprechende getList für MQTT/FHEM definiert um vernünftige Werte abzufragen? 

Nachdem ja einige Leute hier an selbigem arbeiten, wäre ich an einem Erfahrungs/Config Austausch interessiert.

Danke und schöne Grüße // Tom

Reinhart

... viele Fragen.

Du musst unterscheiden zwischen Broadcast (alle Status Meldungen etc.) und selbst angeforderten Daten. Eine Liste was es gibt, siehst du ja im CSV, schau dazu einfach welche geladen wurden. Werte die du willst aber nicht bekommst musst einfach nur holen sofern sie in der CSV vorhanden/definiert sind!

Updaten kannst du indem du aus dem Git herunter lädst und selbst compilierst, dann hast die letzte Version. Die fertigen Packages hinken mit der Version immer hinten nach. Die Configs kannst ebenfalls aus denm Git installieren, hat John hier beschrieben wie das geht.


Bei deinen Tests empfiehlt sich die Verwendung der neuen MQTT2 Module, da diese wesentlich komfortabler zu handeln sind und Funktionen wie Autocreate und Templates dem Anwender unter die Arme greifen. Wenn du dann mit Mosquitto in der Konsole einmal deine Werte abfragst, wird automatisch dazu ein Reading erstellt, einfacher geht's nicht.


Vernünftige Werte abfragen sieht jeder anders, dem Einen genügen die Statusmeldungen, Andere wollen eine komplexe Steuerung aufbauen, daher wirst du keine Liste ala der eierlegenden Wollmilchsau bekommen. Was für mich vernünftig ist, kann für deine Zwecke sinnlos sein.


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

tomleitner

Danke Reinhart für die ausführliche Antwort.

Mittlerweile habe ich die Integration in FHEM ganz gut hinbekommen und ein schönes Diagramm der für mich interessanten Betriebszustände erzeugt (siehe Anhang).  Das Polling einiger Werte habe ich mit einer getList über MQTT gemacht und einem AT das jede Minute ein "get Heating xxxx; get Heating yyyyy" macht.

Der nächste Schritt wird sein einige Optimierungen in der Wärmepumpe vorzunehmen: Ich habe ja eine Luft/Wasser WP, sowie eine Photovoltaik Anlage mit Batteriespeicher (12kWh) und eine Solarthermie Anlage. Letzere ist noch NICHT in FHEM eingebunden. Die Idee ist nun, folgende Steuerungen zu implementieren:

a.) Wenn Solarthermie läuft, Absenkung der Min. Wassertemp in der WP auf ein Minimum für eine bestimmte Zeit (z.B. 1 Stunde) um zu vermeiden dass die WP ebenfalls anläuft und beginnt Warmwasser zu heizen. Das würde mir einige WW Heizzyklen sparen.

b.) Wenn die Inntentemp. über einem bestimmten Wert ist, Abschaltung des Heizmodus in der WP. Es hat ja keinen Sinn zu heizen wenn es eh warm genug ist im Haus. Das macht die WP nämlich aktuell...

Kommentare jemand? Hat sich schon mal jemand in diese Richtung gespielt?

Danke.

Tom