Läuft: Heizung mit eBus-Schnittstelle

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

Vorheriges Thema - Nächstes Thema

Reinhart

wenn du über ECMD eine Abfrage startest, dann chrashed der eBus und disconnected sich! Das darf nicht passieren und habe ich so auch noch nicht gesehen.

Warum hier so krasse Unterschiede des Verhaltens und der Ergebnisse sind, kann uns wohl nur John erklären. Ein normales ebusctl Kommando bringt in der Konsole tadellose Ergebnisse, aber über ECMD gibt es einen Crash. GAEBUS funktioniert ebenfalls problemlos. Ich kann da leider nichts testen, weil ich so ein Gerät nicht habe.

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

theotherhalf

Reinhart, danke dir erst einmal!

@John, falls du hier noch mitliest, hast du 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

john30

Zitat von: theotherhalf am 12 Mai 2017, 22:23:59
@John, falls du hier noch mitliest, hast du eine Idee woran das liegen könnte?
nö, könnte jetzt spontan nicht sagen, woran das liegt. lass mir doch mal deine ecmd definitionen zukommen, dann schau ichs mir mal an
author of ebusd

theotherhalf

Zitat von: john30 am 13 Mai 2017, 07:39:40
nö, könnte jetzt spontan nicht sagen, woran das liegt. lass mir doch mal deine ecmd definitionen zukommen, dann schau ichs mir mal an

Hallo John, hier ist die in Betrieb befindliche  *.cfg aus /opt/fhem/FHEM/. :

#
#!/usr/bin/perl
# Aussentemperatur
get Aussentemperatur cmd {"r -f outsidetemp temp\n"}
get Aussentemperatur expect ".*\n*"
get Aussentemperatur postproc { $_ }
#
# Vorlauftemperatur vom Puffer zum Mischkreis
get Vorlauf_vom_Puffer cmd {"r -f SumFlowSensor temp\n"}
get Vorlauf_vom_Puffer expect ".*\n*"
get Vorlauf_vom_Puffer postproc { $_ }
#
# Vorlaufisttemperatur Mischkreis
get VorlaufIst_Mischkreis cmd {"r -f status0a flowtemp \n"}
get VorlaufIst_Mischkreis expect "\d+\.\d+\n\n"
get VorlaufIst_Mischkreis postproc { sprintf("%5.1f",$_) }
#
# Vorlaufsolltemperatur Mischkreisget VorlaufIst_Mischkreis cmd {"r -f status0a flowtemp \n"}
get VorlaufIst_Mischkreis expect "\d+\.\d+\n\n"
get VorlaufIst_Mischkreis postproc { sprintf("%5.1f",$_) }
#
# Vorlaufsolltemperatur Mischkreis
get VorlaufSoll_Mischkreis cmd {"r -f status0a flowtempdesired \n"}
get VorlaufSoll_Mischkreis expect "\d+\.\d+\n\n"
get VorlaufSoll_Mischkreis postproc { sprintf("%5.1f",$_) }
#
# Temperatur Puffer an SP1
get SP1 cmd {"r -f Storage1Sensor3 temp\n"}
get SP1 expect ".*\n*"
get SP1 postproc { $_ }
#
# Status Pumpe Mischkreisget Pumpe_Mischkreis cmd {"r -f status0a pump \n"}
get Pumpe_Mischkreis expect ".*\n*"
get Pumpe_Mischkreis postproc { $_ }
#
# Status Pufferbefüllung
get Speicherbefuellung cmd {"r -f isinstoragefilling yesno \n"}
get Speicherbefuellung expect ".*\n*"
get Speicherbefuellung postproc { $_ }
#
# Heizkurve Mischkreis Gain
get Heizkurve_Gain cmd {"r -f params curve \n"}
get Heizkurve_Gain expect "\d+\.\d+\n\n"
get Heizkurve_Gain postproc { sprintf("%5.1f",$_) }
#
# Abschalttemperatur MK1
get Abschalttemperatur_MK1 cmd {"r -f params shutdowntemp \n"}
get Abschalttemperatur_MK1 expect "\d+\.\d+\n\n"
get Abschalttemperatur_MK1 postproc { sprintf("%5.1f",$_) }
#
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

jkriegl

#2239
Du hast beim expect nach dem \n einen Stern
Hast Du das funktionierende Beispiel schon versucht und beachte Grossbuchstaben
# Außentemperatur
get A.Temp cmd {"r -f OutsideTemp temp\n"}
get A.Temp expect ".*\n\n"
get A.Temp postproc { sprintf("%.1f",$_) }
Rpi 3, Fhem, Cul 868, HM-CC-RT-DN, HM-Sec-Sco, HM-ES-PMSw1-Pl, ebus (Vaillant), ECMD, Telegram, HTTPMOD, Xiaomi, Shelly

texel

Hi,

irgendwie macht ECMD neuerdings bei mir Probleme.

Wenn ich mehrere Werte (ca. 25) hintereinander auslese, funktioniert es meistens problemlos. Manchmal schreibt ECMD aber einen falschen Wert zurück. Wenn ich z.B. die Raumtemperatur auslese, steht manchmal ein anderer Temperaturwert aus einem anderen Auslesevorgang drin.

Zudem hab ich beobachtet, das FHEM während der ECMD Aufrufe komplett hängt. D.h. erst wenn alle 25 Abfragen durch sind, reagiert FHEM wieder normal.

Habt ihr schon ähnliches beobachtet?

Ich überlege, ob ich auf MQTT umsteigen soll, um das ganze etwas zu entkoppeln?!

VG Texel

theotherhalf

Zitat von: jkriegl am 14 Mai 2017, 12:52:41
Du hast beim expect nach dem \n einen Stern
Hast Du das funktionierende Beispiel schon versucht und beachte Grossbuchstaben
# Außentemperatur
get A.Temp cmd {"r -f OutsideTemp temp\n"}
get A.Temp expect ".*\n\n"
get A.Temp postproc { sprintf("%.1f",$_) }



Die Definitionen habe ich aus dem WIKI.
Alle im *.cfg definierten Skript kommen korrekt an, ausser SP1. Auch "OutsideTemp", obwohl meine Abfrage anders aussieht.
Gross- und Kleinschreibung habe ich schon versucht zu ändern, aber das hat scheinbar keinen Einfluss, auch nicht, wenn man mit dem Terminal die Werte ausliest.
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

cs-online

Hi,

was kommt denn raus, wenn Du im Ebusctl
r -f OutsideTemp temp
eingibst ? Wenn da nichts sinniges raus kommt, dann ist möglicherweise da schon der Bug drin...

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

theotherhalf

#2243
Zitat von: cs-online am 16 Mai 2017, 12:25:13
Hi,

was kommt denn raus, wenn Du im Ebusctl
r -f OutsideTemp temp
eingibst ? Wenn da nichts sinniges raus kommt, dann ist möglicherweise da schon der Bug drin...



Das funktioniert ja soweit alles:

pi@raspberrypi:~ $ ebusctl r -f OutsideTemp temp
22.62

Mit der Konsole gibt es keinerlei Probleme. Ich kann alles einlesen.
Lediglich die Variable SP1 (die ich über die Konsole problemlos lesen kann) kommt im ECMD nicht an.


Die "*" habe ich mittlerweile entfernt. Den SP1 mal umbenannt in SPT1 aber mit gleichem Ergebnis.

Skript nun wie folgt:
# Aussentemperatur
get Aussentemperatur cmd {"r -f outsidetemp temp\n"}
get Aussentemperatur expect ".*\n"
get Aussentemperatur postproc { $_ }
#
# Vorlauftemperatur vom Puffer zum Mischkreis
get Vorlauf_vom_Puffer cmd {"r -f SumFlowSensor temp\n"}
get Vorlauf_vom_Puffer expect ".*\n"
get Vorlauf_vom_Puffer postproc { $_ }
#
# Vorlaufisttemperatur Mischkreis
get VorlaufIst_Mischkreis cmd {"r -f status0a flowtemp \n"}
get VorlaufIst_Mischkreis expect "\d+\.\d+\n\n"
get VorlaufIst_Mischkreis postproc { sprintf("%5.1f",$_) }
#
# Vorlaufsolltemperatur Mischkreis
get VorlaufSoll_Mischkreis cmd {"r -f status0a flowtempdesired \n"}
get VorlaufSoll_Mischkreis expect "\d+\.\d+\n\n"
get VorlaufSoll_Mischkreis postproc { sprintf("%5.1f",$_) }
#
# Status Pumpe Mischkreis
get Pumpe_Mischkreis cmd {"r -f status0a pump\n"}
get Pumpe_Mischkreis expect ".*\n"
get Pumpe_Mischkreis postproc { $_ }
#
# Status Pufferbefüllung
get Speicherbefuellung cmd {"r -f isinstoragefilling yesno\n"}
get Speicherbefuellung expect ".*\n"
get Speicherbefuellung postproc { $_ }# Heizkurve Mischkreis Gain
#
# Status Heizkurve Gain
get Heizkurve_Gain cmd {"r -f params curve \n"}
get Heizkurve_Gain expect "\d+\.\d+\n\n"
get Heizkurve_Gain postproc { sprintf("%5.1f",$_) }
#
# Abschalttemperatur MK1
get Abschalttemperatur_MK1 cmd {"r -f params shutdowntemp \n"}
get Abschalttemperatur_MK1 expect "\d+\.\d+\n\n"
get Abschalttemperatur_MK1 postproc { sprintf("%5.1f",$_) }
#
# Status SP1 Speicherfühler maxmax
get SPT1 cmd {"r -f Storage1Sensor3 tempsensor\n"}
get SPT1 expect ".*\n"
get SPT1 postproc { $_ }
#
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

der Grund warum du keinen Wert bekommst ist ja schon bekannt, wieso wissen wir nicht!
Da bei jeder Abfrage via ECMD von SP1 sich der Ebus disconected und das nur bei diesem einem Wert ist, würde ich den Weg des geringsten Widerstandes gehen und diesen einen Wert mit dem GAEBUS holen. Du kannst auch alle mit dem GAEBUS holen, es spricht ja nichts dagegen und wenn in Fhem die Messwerte eintrudeln fragt ja keiner wie die Werte abgeholt wurden.

Es kann viele Ursachen haben, zB. unsichtbare Steuerzeichen in der Config oder Zeit Kollisionen. Eventuell antwortet zeitgleich ein anderes Gerät?
Ich versuche meist bei Fehlern auch die Ursache zu finden und zu beheben, aber wenn dich dieser Fehler schon solange nervt dann geh doch den einfacheren Weg, zum Ergebnis kommst ja zum Glück noch über andere Wege.

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

cs-online

... interessanter Gedanke, daß es evtl. am Timing liegt. Müßte man doch ausprobieren können, indem man das -f (für force, also zwingen neuen Wert zu holen) wegläßt, dann würde ja aus dem Cache versorgt und nicht neu vom Bus gelesen oder ?

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

jkriegl

Wenn ich an der Konsole Dein
ebusctl r -f Storage1Sensor3 tempsensor
eingebe kommt ERR: element not found in decode
Aber es funktiniert: ebusctl r -f Storage1Sensor3 temp
83.62
Rpi 3, Fhem, Cul 868, HM-CC-RT-DN, HM-Sec-Sco, HM-ES-PMSw1-Pl, ebus (Vaillant), ECMD, Telegram, HTTPMOD, Xiaomi, Shelly

theotherhalf

Zitat von: jkriegl am 17 Mai 2017, 13:48:58
Wenn ich an der Konsole Dein
ebusctl r -f Storage1Sensor3 tempsensor
eingebe kommt ERR: element not found in decode
Aber es funktiniert: ebusctl r -f Storage1Sensor3 temp
83.62

Ja, du hast Recht. "tempsensor" steht im *.csv, ist aber falsch. Nachdem ich das heraus gefunden habe, dachte ich die Ursache gefunden zu haben.
Mit "temp" habe ich es aber im Skript auch schon probiert, aber es funktioniert auch nicht.
Mit der Konsole sehe ich das gleiche wie du.

Der Thread ist mittlerweile schon recht lang, ich glaube ich werde es wie von Reinhart vorgschlagen belassen und den SP1 per GAEBUS auslesen, das klappt ja.
Einheitlich alles über ECMD wäre mir lieber gewesen, aber es scheint nicht zu klappen.

Was passiert bei dir wenn du den Block :
# Status SP1 Speicherfühler maxmax
get SP1 cmd {"r -f Storage1Sensor3 temp\n"}
get SP1 expect ".*\n"
get SP1 postproc { $_ }
#


über ECMD einliest?
Kommt dann der Wert korrekt?
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

jkriegl

ebusctl f -f Storage1Sensor3
sagt Dir was letztendlich definiert ist.
schau Dir meine Empfelungen zu expect an. \n\n hattest Du doch schon mal. 
Rpi 3, Fhem, Cul 868, HM-CC-RT-DN, HM-Sec-Sco, HM-ES-PMSw1-Pl, ebus (Vaillant), ECMD, Telegram, HTTPMOD, Xiaomi, Shelly

john30

Zitat von: theotherhalf am 17 Mai 2017, 15:59:55
# Status SP1 Speicherfühler maxmax
get SP1 cmd {"r -f Storage1Sensor3 temp\n"}
get SP1 expect ".*\n"
get SP1 postproc { $_ }
#

Damit sollte es eigentlich funktionieren. Steht im fhem Log irgendeine Fehlermeldung?
author of ebusd