Läuft: Heizung mit eBus-Schnittstelle

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

Vorheriges Thema - Nächstes Thema

Wardancer

Narbend,

Ich Dreh durch... jetzt gehts :)

Danke!

Wäre das auch beim Schreiben nen Problem, oder hast du es da direkt mit gefixt?

john30

Zitat von: Wardancer am 30 Juni 2019, 00:07:07
Wäre das auch beim Schreiben nen Problem, oder hast du es da direkt mit gefixt?
sollte beim Schreiben jetzt auch klappen
author of ebusd

Wardancer

Moin zusammen,

ich beschäftige mich gerade wieder mal mit dem Schreiben.
Jetzt ist es so, dass meine Weishaupt-Therme gerne Telegramme empfangen würde, die beim Schreiben immer einen festen Suffix haben, nämlich:

05d010000

Bisher sind die Befehle und auch das Payload in den Template-Definitionen ziemlich sinnvoll geblockt. Ich hab nur leider keine Ahnung, wie ich da jetzt noch einen festen Wert dahinter bekommen würde.

Gibt es einen geschickten Weg sowas in die Template-Definitionen hereinzubekommen?

Ein vollständiges Telegram sieht z.B. so aus:

Quelle:Ziel:Befehl:Länge:Adresse:Payload:Suffix
ff3050230994221480805d010000


Die Definition dazu in meinen Configs sieht bisher so aus. Hinten müsste halt noch irgendwie das 05d010000 ran....

w,,HP1.Di.3,Heizprogramm 1 Di 3 Start/Ende (Anwender 122) ,,,,"942214",,,_8_TimeEnd,,, ,,,_8_TimeStart,,,


john30

Zitat von: Wardancer am 19 Juli 2019, 08:19:07
Die Definition dazu in meinen Configs sieht bisher so aus. Hinten müsste halt noch irgendwie das 05d010000 ran....
w,,HP1.Di.3,Heizprogramm 1 Di 3 Start/Ende (Anwender 122) ,,,,"942214",,,_8_TimeEnd,,, ,,,_8_TimeStart,,,
feste Suffixe gehen derzeit noch nicht
author of ebusd

Wardancer

Hmm, gibt es denn eine andere Variante? Könnte ich z.B. einfach ein drittes Payload schicken, nach dem 8_TimeStart? Dann wäre ich ja fast fein raus...

john30

Zitat von: Wardancer am 21 Juli 2019, 10:07:14
Hmm, gibt es denn eine andere Variante? Könnte ich z.B. einfach ein drittes Payload schicken, nach dem 8_TimeStart? Dann wäre ich ja fast fein raus...
nein, das muss ja in eine einzige Message rein. Du könntest aber noch ein letztes Feld an die Defintion anhängen, bspw. mit HEX:4 und dem konstanten Wert in der Spalte values ("=5d010000")
author of ebusd

Wardancer

Na,

ich denke das trifft es ja eigentlich ziemlich genau. Ist zwar etwas Tiparbeit, da es wohl bei jedem Write mit dazu müsste, aber was solls.

Ich habe aber, bevor ich mich da wirklich reinstürzen kann irgendwie noch ein grundsätzlicheres Problem:
Es scheint egal zu sein, was ich schreiben will, EBUSD quittiert das mit einem

"ERR: element not found". Ich hab auch schon geschaut, ich hab in der ebusd-config den Acceslevel mit --accesslevel=*  frei geschaltet.
Bei den w und r Kommandos hab ich hier mal ein Beispiel eingefügt:
localhost: r -c hc1 StartOfHoliday.Year
19

localhost: w -c hc1 StartOfHoliday.Year 18
ERR: element not found

Die Definition dazu müsste eigentlich passen:

r,,StartOfHoliday.Year,Urlaubsanfang Jahr (181) ,,,,"1d0102",,,_16_HolidayDay,,,
w,,StartOfHoliday.Year, ,,,,"1d01",,,_16_HolidayDay,,,


per Hex könnte ich die Sachen setzen, aber ich wollte das ganze eigentlich per MQTT weitertragen.

Hier noch der Vollständigkeit halber die Ausgabe vom Info:

version: ebusd 3.3.v3.3-23-gf3bfe77
update check: revision v3.3-4-g212b22d available, broadcast.csv: different version available
access: *
signal: acquired
symbol rate: 22
max symbol rate: 107
min arbitration micros: 3
max arbitration micros: 412
min symbol latency: 4
max symbol latency: 13
reconnects: 0
masters: 5
messages: 361
conditional: 0
poll: 0
update: 8
address 03: master #11
address 04: slave #25, ebusd, conflict, scanned "MF=Kromschroeder;ID=;SW=0376;HW=-", loaded "kromschroeder/04..EA.csv"
address 07: master #16
address 08: slave #11, scanned "MF=Kromschroeder;ID=W ;SW=1200;HW=0302", loaded "kromschroeder/08..sc.csv"
address 0c: slave #16, scanned "MF=-;ID=??;SW=-;HW=-"
address 30: master #3
address 35: slave #3, scanned "MF=Kromschroeder;ID=W ;SW=2730;HW=-", loaded "kromschroeder/35..hc1.csv"
address f1: master #10
address f6: slave #10, scanned "MF=Kromschroeder;ID=WWST?;SW=1200;HW=0302", loaded "kromschroeder/f6..sc.csv"
address ff: master #25, ebusd, conflict


Hab ich da was übersehen? Danke für einen Gedankenanstoss ....

john30

Zitat von: Wardancer am 22 Juli 2019, 23:10:40
Die Definition dazu müsste eigentlich passen:

r,,StartOfHoliday.Year,Urlaubsanfang Jahr (181) ,,,,"1d0102",,,_16_HolidayDay,,,
w,,StartOfHoliday.Year, ,,,,"1d01",,,_16_HolidayDay,,,

schau doch einfach mal, ob ein "find" das auch liefert, also bspw. "ebusctl find -f -w StartOfHoliday.Year"
author of ebusd

Wardancer

#3008
Hi,

also es wird was gefunden:

localhost: find -f -w StartOfHoliday.Year
w,hc1,StartOfHoliday.Year, ,,35,0903,1d01,_16_HolidayDay,m,UIN,0=Off,,Tag


sieht für mich eigentlich schlüssig aus.
Was bei mir auch nicht funktioniert ist, per write -h XXXXXXX hex zu schicken. ebusctl zeigt mir dann immer wieder die Syntax-Hilfe zum write.Den gleichen String per hex-Kommando zu schicken geht aber ohne Probleme. Kann das was miteinander zu tun haben?

john30

Zitat von: Wardancer am 23 Juli 2019, 18:23:21
localhost: find -f -w StartOfHoliday.Year
w,hc1,StartOfHoliday.Year, ,,35,0903,1d01,_16_HolidayDay,m,UIN,0=Off,,Tag


sieht für mich eigentlich schlüssig aus.
merkwürdig. Versuch bitte mal den Punkt aus dem Namen in der Definition rauszunehmen.

Zitat von: Wardancer am 23 Juli 2019, 18:23:21
Was bei mir auch nicht funktioniert ist, per write -h XXXXXXX hex zu schicken. ebusctl zeigt mir dann immer wieder die Syntax-Hilfe zum write.Den gleichen String per hex-Kommando zu schicken geht aber ohne Probleme. Kann das was miteinander zu tun haben?
das liegt dann daran, dass die Nachricht mit dem Namen nicht gefunden wird. wie gesagt, probier mal den Punkt zu entfernen
author of ebusd

Wardancer

Punkt raus ... aber leider bleibt das Verhalten gleich:


localhost: r -c hc1 StartOfHolidayDay
18

localhost: w -c hc1 StartOfHolidayDay 19
ERR: element not found

localhost: find -f -w StartOfHolidayDay     
w,hc1,StartOfHolidayDay, ,,35,0903,1b01,_16_HolidayDay,m,UIN,0=Off,,Tag

john30

Zitat von: Wardancer am 24 Juli 2019, 09:03:02
Punkt raus ... aber leider bleibt das Verhalten gleich:


localhost: r -c hc1 StartOfHolidayDay
18

localhost: w -c hc1 StartOfHolidayDay 19
ERR: element not found

localhost: find -f -w StartOfHolidayDay     
w,hc1,StartOfHolidayDay, ,,35,0903,1b01,_16_HolidayDay,m,UIN,0=Off,,Tag

ach je, da war ich aber auch blind... du hast eine Werteliste definiert mit 0=Off, d.h. das einzig gültige Argument hinter "w -c hc1 StartOfHolidayDay " wäre "Off"...
author of ebusd

Wardancer

Danke!

genau so hats geklappt ... da war ich wohl auch etwas blind!

cs-online

Hi John,

ich habe nochmal eine Frage zum Abfragezyklus, verwendete Version ist ebusd 3.0pre.c57c3e7 und weil das eigentlich ganz gut läuft würde ich ungern daran was ändern (never change a running system...). Bislang habe ich alle Werte nacheinander mittels Klasse, wie von PAH beschrieben ca. alle 30s abgefragt, dann in Readingsproxys angezeigt. Soweit alles prima, führt aber zu Freeze-Zeiten. Nicht viel, aber eben ein wenig. Nun hab ich von Reinhardt das Find-Script mal probiert und mir das so hingestrickt, dass die Werte alle in die Readings aufgespalten werden, statt das einfach zeilenweise untereinander zu schreiben. Darauf könnte ich wiederum Readingsproxys setzen, so dass sich optisch zum Vorstand nichts ändert. Ich hatte mit 60s und mit 30s Timer für abrufen des Find -d aus FHEM heraus probiert. Ich habe auch bei den Werten in der bai...inc jeweils bei den benötigten aus r dann r1 gemacht, damit die möglichst häufig refresht werden. Ich hatte verstanden, dass die dann bei jedem Zyklus, den der EBUS durchläuft refresht werden. Aber ich bekomme damit nicht die Auflösung hin, die ich vorher mit den Einzelabfragen hatte. So kann ich z.B. teilweise am Vorlauf nicht mehr sehen, wann der Brenner gestartet ist.

Frage: Mach ich da was falsch oder kann ich irgendwie anders noch die Abfrageintervalle in EBUSD beeinflussen ? Oder gibt es sonst eine Möglichkeit in FHEM die Werte non-blocking abzufragen ?

Schöne Grüße

Christian
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Shelly1,2 und 2.5,Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV mit Speicher, alles auf einem RPI und da geht noch mehr

Reinhart

um das Problem "blocking" elegant zu umgehen kannst du ja einmal testweise MQTT2 einsetzen!

Das hat den Vorteil, dass die wichtigsten Daten wie Vorlauf, Rücklauf ja über die Statusmeldungen alle paar Sekunden über den Bus kommen und die kannst du dann beliebig auswerten. MQTT2 ist ja soweit weiter entwickelt, dass auch kein Mosquitto Server mehr benötigt wird und du auch bequem Templates einsetzen kannst. Mit autocreate wird auch alles automatisch angelegt un du kannst beliebig experimentieren, weil du damit die ECMD Abfragen nicht beeinflusst und das alles zum Test parallel laufen lassen kannst.

Internals:
   CID        ebusd_bai
   DEF        ebusd_bai
   DEVICETOPIC MQTT2_ebusd_bai
   FUUID      5c9144bc-f33f-27bd-8f79-fe0e0b9e014cc7ee
   IODev      ebusMQTT
   NAME       MQTT2_ebusd_bai
   NR         2748
   STATE      ???
   TYPE       MQTT2_DEVICE
   JSONMAP:
     Status01_0_value _Vorlauf
     Status01_1_value _Ruecklauf
     Status01_2_value _Aussentemp
     Status01_3_value _Warmwasser
     Status01_4_value _WWSpeicher
     Status01_5_value _Pumpenstatus
     Status02_0_value _HWCMode
     Status02_1_value _Maximaltemperatur
     Status02_2_value _ReglerMaxTEMP
     Status02_3_value _ReglerCurrentTemp
   READINGS:
     2019-07-29 05:09:07   CounterStartattempts1_temp0_value 29
     2019-07-29 10:56:44   DateTime_bdate_value -.-.-
     2019-07-29 10:56:44   DateTime_btime_value 07:06:52
     2019-07-29 10:56:44   DateTime_dcfstate_value nosignal
     2019-07-29 10:56:44   DateTime_temp2_value 18.000
     2019-07-29 05:09:06   DeactivationsIFC_0_name
     2019-07-29 05:09:06   DeactivationsIFC_0_value 18
     2019-07-29 05:09:06   FanHours_hoursum2_value 6692
     2019-07-29 10:45:08   FanSpeed_0_name
     2019-07-29 10:45:08   FanSpeed_0_value 2271
     2019-07-29 10:45:08   FlowTempDesired_temp_value 21.50
     2019-07-29 10:45:08   FlowTemp_sensor_value ok
     2019-07-29 10:45:08   FlowTemp_temp_value 58.38
     2019-07-29 05:09:06   HcHours_hoursum2_value 5703
     2019-07-29 05:09:05   HcStarts_0_name
     2019-07-29 05:09:05   HcStarts_0_value 42300
     2019-07-29 05:09:06   HwcHours_hoursum2_value 746
     2019-07-29 05:09:07   HwcSetPotmeter_temp_value 48.94
     2019-07-29 05:09:05   HwcStarts_0_name
     2019-07-29 05:09:05   HwcStarts_0_value 98600
     2019-07-29 10:45:02   OutdoorstempSensor_sensor_value ok
     2019-07-29 10:45:02   OutdoorstempSensor_temp_value 18.00
     2019-07-29 05:09:11   PartloadHcKW_power_value 18
     2019-07-29 10:45:08   ReturnTemp_sensor_value ok
     2019-07-29 10:45:08   ReturnTemp_temp_value 59.25
     2019-07-29 10:45:08   ReturnTemp_tempmirror_value 64587
     2019-07-29 10:56:48   SetMode_disablehc_value 0
     2019-07-29 10:56:48   SetMode_disablehwcload_value 1
     2019-07-29 10:56:48   SetMode_disablehwctapping_value 0
     2019-07-29 10:56:48   SetMode_flowtempdesired_value 21.5
     2019-07-29 10:56:48   SetMode_hcmode_value auto
     2019-07-29 10:56:48   SetMode_releaseBackup_value 0
     2019-07-29 10:56:48   SetMode_releaseCooling_value 0
     2019-07-29 10:56:48   SetMode_remoteControlHcPump_value 0
     2019-07-29 10:56:49   Status01_0_name temp1
     2019-07-29 10:56:49   Status01_1_name temp1
     2019-07-29 10:56:49   Status01_2_name temp2
     2019-07-29 10:56:49   Status01_3_name temp1
     2019-07-29 10:56:49   Status01_4_name temp1
     2019-07-29 10:56:49   Status01_5_name pumpstate
     2019-07-29 10:56:49   Status02_0_name hwcmode
     2019-07-29 10:56:49   Status02_1_name temp0
     2019-07-29 10:56:49   Status02_2_name temp1
     2019-07-29 10:56:49   Status02_3_name temp0
     2019-07-29 10:56:49   Status02_4_name temp1
     2019-07-29 10:56:49   Status02_4_value 48.0
     2019-07-29 10:45:08   WPPWMPower_percent0_value 100
     2019-07-29 10:45:07   WaterPressure_press_value 1.559
     2019-07-29 10:45:07   WaterPressure_sensor_value ok
     2019-07-29 10:56:49   _Aussentemp     18.000
     2019-07-29 10:56:49   _HWCMode        auto
     2019-07-29 10:56:49   _Maximaltemperatur 60
     2019-07-29 10:56:49   _Pumpenstatus   off
     2019-07-29 10:56:49   _ReglerCurrentTemp 70
     2019-07-29 10:56:49   _ReglerMaxTEMP  70.0
     2019-07-29 10:56:49   _Ruecklauf      52.0
     2019-07-29 10:56:49   _Vorlauf        52.0
     2019-07-29 10:56:49   _WWSpeicher     47.0
     2019-07-29 10:56:49   _Warmwasser     49.0
     2019-07-29 10:56:47   outsidetemp_temp2_value 16.000
     2019-07-29 10:56:45   vdatetime_date_value 28.07.2019
     2019-07-29 10:56:45   vdatetime_time_value 10:47:17
Attributes:
   DbLogExclude .*
   IODev      ebusMQTT
   devStateStyle style="text-align:right"
   icon       sani_boiler_temp
   jsonMap    Status01_0_value:_Vorlauf
Status01_1_value:_Ruecklauf
Status01_2_value:_Aussentemp
Status01_3_value:_Warmwasser
Status01_4_value:_WWSpeicher
Status01_5_value:_Pumpenstatus
Status02_0_value:_HWCMode
Status02_1_value:_Maximaltemperatur
Status02_2_value:_ReglerMaxTEMP
Status02_3_value:_ReglerCurrentTemp


Ich habe alles auf MQTT2 (Server ohne Mosquitto) umgestellt weil ich es einfacher und transparenter finde. eBusd kann das ja schon lange wenn du die config erweiterst.
Im Anhang ein paar Möglichkeiten der Darstellung wie sie von den Templates automatisch erzeugt werden.

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