Läuft: Heizung mit eBus-Schnittstelle

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

Vorheriges Thema - Nächstes Thema

nightstorm99

Zitat von: jamesgo am 11 September 2015, 17:14:28
Hallo Denny,

damit du readings bekommst musst du den Attributen noch einen Wert geben. Dieser wird dann als Name für das Reading verwendet.

z.B.

r~ehp~ActualEnvironmentPower~ActualEnvironmentPower  EnergieAktuell

Erzeugt dann ein Reading "EnergieAktuell"

Grüße
Andy

PERFEKT, meine Rettung!

Läuft.

Freue mich schon auf den Schreibmodus!

Danke und Gruß
Denny

Jojo11



Zitat von: Prof. Dr. Peter Henning am 11 September 2015, 16:12:53
[...]

@Jojo11: Ganz einfach mit ECMD/ECMDDevice, so wie im Wiki beschrieben. FHEM2FHEM ist dafür viel zuviel overhead.

LG

pah

Ok, klar. Das geht natürlich auch. Habe leider mit ECMD so ein paar Problemchen, aber das neue Modul GAEBUS sieht ja vielversprechend aus.

schöne Grüße
Jo


Prof. Dr. Peter Henning

Was für Probleme ? Bei mir läuft das astrein.

Man darf halt die Auswertung nicht mit ECMD machen, sondern muss den zurückgelieferten String in einer netten kleinen Perl-Prozedur aufbrechen.

LG

pah

Jojo11

Zitat von: Prof. Dr. Peter Henning am 11 September 2015, 19:26:16
Was für Probleme ? Bei mir läuft das astrein.

Man darf halt die Auswertung nicht mit ECMD machen, sondern muss den zurückgelieferten String in einer netten kleinen Perl-Prozedur aufbrechen.

LG

pah

Wenn mein EBUS-Kontroller aussteigt, was damals aufgrund des Defektes öfters mal der Fall war, ist mein komplettes FHEM auf dem anderen Rechner eingefroren. Selbiges passierte, wenn ich den Raspi mit ebusd einfach ausgeschaltet habe. Habe damals die Fehlersuche mangels Zeit abgebrochen - der "Fehler" ist auch nicht so trivial bzw. einfach zu finden weil sich im log nichts finden ließ.

schöne Grüße
Jo

Reinhart

@jamesgo

Zunächst mal Danke für das Modul GAEBUS!
Beim Setzen von Attributen (set ebus1 ...) mit Umlauten im Text kommt noch eine Fehlermeldung "invalid Parameter". Die Umlaute ( und das ß ) werden im Drop-Down-Listenfeld als ? auf einem schwarzen Hintergrund dargestellt. Der Rest funktioniert sehr gut. Ich habe zwar über GAEBUS noch nichts "produktiv", d.h. die Heizungsteuerung mit den "writes" läuft noch auf Basis ECMD.

Ich werde das Modul noch eine Zeitlang parallel einsetzen und die Stabilität im Auge behalten. Ich habe aber auch mit ECMD keine Probleme, lediglich bin ich am ebus-Raspi von Wlan  auf Lan gewechselt, da mein Wlan Treiber täglich einen Reset auslöste. Gegenüber ECMD spart dein Modul einiges an Tipparbeit und erleichtert vor allem Einsteigern die Realisierung ihrer Projekte.

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

jamesgo

Hallo Reinhart,
danke fürs ausprobieren, das mit den Umlauten werde ich mir anschauen.

@alle die auf "writes" warten: Heute abend habe ich eine Version engecheckt, die auch Werte setzten kann.

Hier aber nochmal eine Warnung, die pah schon öfters formuliert hat:

Werte setzen kann sich zerstörerisch auf die Anlage auswirken.
Vaillant hat sich zwar für einen "offenen" ebus entschieden, aber bestimmt nicht damit gerechnet,
dass mittels eines ebusd jeder nach belieben Befehle senden kann.
Wer vor 10 Jahren einen BIOS update gemacht hat, hat sich aus meiner Sicht auf vergleichbarem Niveau befunden.

Wenn ihr aber (so wie ich) Parameter eurer Heizungskomponenten verändern wollt, dann könnt ihr das folgendermaße machen:

- attribut "ebusWritesEnabled" auf 1 setzten
- mittels "set" ein "w~..." attribut erzeugen
- dem Attribut einen Wert geben. (ich verwende immer "set-<wert>". Damit stehen alle setzbaren Variablen untereinander.
- mit "set" kann nun ein write-Befehl an den ebusd gesendet werden

Ein Beispiel (das geht natürlich alles direkt im Web-Gui)

attr ebus1 ebusWritesEnabled 1             # danach erscheinen "w~..." parameter beim set
set ebus1 w~470 Time~Zeit                  # definiert ein neues Attribut (wie bei den readings)
attr ebus1 w~470~Time~Zeit set-time   # nun hat das Kind einen Namen ... nämlich "set-time"
set ebus1 set-time 20:09:09                  # und schon ist die Zeit meiner Heizung verstellt (... und wird von der Funkuhr wieder korrigiert)


Der Wert wird 1:1 and den ebusd weitergeben und die Antwort wird angezeigt.

Ich habe bewusst den Umstand über "ebusWritesEnabled" und den Attributen gewählt um den "ups ... das wollte ich gar nicht" Effekt zu vermeiden.

Falls Fragen oder Problem auftauchen ... einfach Melden.

Grüße
Andy

nightstorm99

Zitat von: jamesgo am 11 September 2015, 20:18:22
Hallo Reinhart,
danke fürs ausprobieren, das mit den Umlauten werde ich mir anschauen.

@alle die auf "writes" warten: Heute abend habe ich eine Version engecheckt, die auch Werte setzten kann.

Hier aber nochmal eine Warnung, die pah schon öfters formuliert hat:

Werte setzen kann sich zerstörerisch auf die Anlage auswirken.
Vaillant hat sich zwar für einen "offenen" ebus entschieden, aber bestimmt nicht damit gerechnet,
dass mittels eines ebusd jeder nach belieben Befehle senden kann.
Wer vor 10 Jahren einen BIOS update gemacht hat, hat sich aus meiner Sicht auf vergleichbarem Niveau befunden.

Wenn ihr aber (so wie ich) Parameter eurer Heizungskomponenten verändern wollt, dann könnt ihr das folgendermaße machen:

- attribut "ebusWritesEnabled" auf 1 setzten
- mittels "set" ein "w~..." attribut erzeugen
- dem Attribut einen Wert geben. (ich verwende immer "set-<wert>". Damit stehen alle setzbaren Variablen untereinander.
- mit "set" kann nun ein write-Befehl an den ebusd gesendet werden

Ein Beispiel (das geht natürlich alles direkt im Web-Gui)

attr ebus1 ebusWritesEnabled 1             # danach erscheinen "w~..." parameter beim set
set ebus1 w~470 Time~Zeit                  # definiert ein neues Attribut (wie bei den readings)
attr ebus1 w~470~Time~Zeit set-time   # nun hat das Kind einen Namen ... nämlich "set-time"
set ebus1 set-time 20:09:09                  # und schon ist die Zeit meiner Heizung verstellt (... und wird von der Funkuhr wieder korrigiert)


Der Wert wird 1:1 and den ebusd weitergeben und die Antwort wird angezeigt.

Ich habe bewusst den Umstand über "ebusWritesEnabled" und den Attributen gewählt um den "ups ... das wollte ich gar nicht" Effekt zu vermeiden.

Falls Fragen oder Problem auftauchen ... einfach Melden.

Grüße
Andy


Da freu ich mich schon drauf!
Dann kann ich endlich die Zirkulationspumpe interaktiv ein und ausschalten.
Danke schonmal im voraus

Gruß
Denny

jamesgo

Hallo Denny,

das war aber eine schnelle Antwort :-)

Ich möchte dich nicht desillusionieren aber so wie die DCF die Zeit meine Heizung immer wieder korrigiert kann es sein dass ein Steuerungseingriff immer wieder überschrieben wird.

Du kannst aber bestimmt Parameter wie folgende ändern:
- Heizkurve
- Zeitprogramme (wann soll die Pumpe laufen)
- Soll-Temperaturen
- Party-Modus
- Urlaubs-Zeiten usw.

Wenn aber meine "470" dem "bai" einen Befehl schickt ... dann macht sie das immer wieder und hartnäckig.
An dieser Stelle Eingreifen zu wollen wird nicht funktionieren.

Grüße
Andy

Prof. Dr. Peter Henning

Nochmal die Warnung etwas deutlicher: Ich rate davon ab, einen Wärmeerzeuger (z.B.Therme) und andere Anlagenkomponenten, die von einer existierenden Heizungssteuerung gelenkt werden, direkt über den EBUS zu steuern. Abgesehen vom Überschreiben der Werte (das dann z.B. im Extremfall dazu führen könnte, dass die Zirkulationspumpe 1x pro Sekunde gestartet und gestoppt wird) ist das gesamte Regelverhalten der Heizungsanlage dann undefiniert.

Alle Schreibbefehele auf den EBUS sollten nur dazu dienen, die existierende Heizungssteuerung zu beeinflussen. Das reicht auch in der Regel aus, um alle wünschbaren Parameter zu steuern.

Also:
- Lesen der Parameter von Anlagenkomponenten: ja
- Setzen der Parameter von Anlagenkomponenten: nein
- Lesen der Steuerungsparameter: ja
- Setzen der Steuerungsparameter: ja

Meine Zirkulationspumpe steuere ich nachgelagert hiermit:

http://www.fhemwiki.de/wiki/1W-WPump

LG

pah

jamesgo

Hallo Reinhart,

bei mir sieht das so aus wie im angehängten Screenshot. (also ok)

Kannst du mal ein "file" auf ein .csv file machen? Ist das UTF-8?
Welche Version von GAEBUS verwendest du?
Sieht das .csv file ok aus wenn du es auf der Maschine mit einem Editor anschaust?

Ich denke ich muss die Umlaute in html entities umwandeln. Würde das aber gerne testen.

Danke
Andy

Reinhart

#985
@jamesgo

ich dachte auch zunächst, dass meine locale Einstellungen am Raspi nicht passen, aber die sind ok.

hier die csv, habe sie auch mit PSPad gegen gecheckt, auch der steht unter Format auf UTF-8. Im Editor sind die Umlaute alle ok.

pi@raspberry2 /etc/ebusd $ file --mime-encoding *.csv
430.csv:        utf-8
bai.csv:        utf-8
broadcast.csv:  utf-8


und die locale am Raspi (beide , ebusd + fhem ) steht auf de_AT.UTF-8
Vielleicht passt ihm ja de_AT nicht und ich sollte auf de_DE stellen?

Die Version vom GAEBUS kann ich dir nicht sagen, aber ich habe sie vor ein paar Tagen nach deinem Post vom Server geladen.

LG

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

Jojo11

@jamesgo

Ich habe das Modul jetzt mal eingerichtet und lese damit alle 2 Minuten knapp 30 Parameter. Soweit läuft alles stabil, vielen Dank erstmal dafür!
Was mir aufgefallen ist:
- Wenn sich die csv-Dateien nur minimal ändern (Bezeichnung einer Variable z.B.), dann verschieben sich die Werte. Der betroffene Wert fällt natürlich weg bzw. erzeugt einen fehlerhaften Rückgabewert. Alle anderen Werte aber sind teilweise vertauscht. Kann das sein? Ich bin noch am experimentieren mit den Bezeichnungen der Parameter, daher ist mir das mehrmals passiert.
Weiter habe ich folgende log-Meldung regelmäßig bekommen:

2015.09.13 07:05:53.269 2: VC206 old answer 69.0

Der Wert ändert sich und entspricht einem existierenden und abgefragten Wert (Temperatur Warmwasserspeicher). Was hat diese Meldung zu bedeuten?
Schreiben von Werten habe ich noch nicht probiert.

schöne Grüße
Jo

jamesgo

Hallo Jo,

die .csv Dateien sind die Basis. Wenn die Parameter nach eine Änderung "weg" sind (weil Umbenannt) führt das zu Lesefehlern, bzw timeouts. Das passt auch zu den Meldungen, die dir im Log aufgefallen sind.

Bevor ich einen neuen Befehl zum ebusd schicke lese ich nochmal von dem socket. Wenn ich da was zurückbekomme bedeutet das, dass die Antwort auf die letzte Abfrage zu spät gekommen ist und nicht verarbeitet wurde. ("old message").
Wenn bei diesem ersten lesen nichts zurückkommt, der ebusd aber danach noch eine Antwort auf einen alten Befehl liefert.
Dann verschieben sich die Werte (was du auch beobachtest) und beim nächsten lesen kommt wieder ein "old message".

Änder doch mal in Zeile 749 den timeout von

my $timeout = 1.8;
in
my $timeout = 5;

Evtl. ist dein ebusd auch langsamer als meiner und der timeout zu klein (Ich verwende einen beaglebone black ... der hat 2 cores. Der "alte" Raspberry PI hat nur einen core)

Das sollte dein Problem lösen.

Grüße
Andy

jamesgo

#988
Hallo Reinhart,

ich habe mal eine Version erstellt, bei der die Umlaute durch die html entities ersetzt werden. (siehe Anhang)

Ist dein Anzeigeproblem damit gelöst?

Grüße
Andy

kawa0815

Hallo jamesgo,

ich versuche seit gestern Abend dein Modul 98_GAEBUS.pm in den Griff zu bekommen.

So sieht meine config bisher aus:

define ebus1 GAEBUS 192.168.0.85:8888
attr ebus1 ebusWritesEnabled 0
attr ebus1 room 50_Therme

Wenn ich "get ebus1 r~430~Date~Datum" ausführe, erhalte ich auch "date=13.09.2015 [Aktuelles Datum] " zurück.

Nur wie automatisiere ich das?
Jegliche Versuche in fhem.cfg Attribute zu setzen scheitern mit Fehlermeldung.
Kannst Du mal ein kurzes Beispiel geben wie ds aussehen muss?

Danke Kawa