Läuft: Heizung mit eBus-Schnittstelle

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

Vorheriges Thema - Nächstes Thema

flash91

Zitat von: jamesgo am 22 Mai 2016, 16:27:11
Hallo flash91,

ein sytemdienst wird durch ein start/stop script definert. Für den ebusd ist das /etc/init.d/ebusd.
Dieses Script liest /etc/default/ebusd um parameter für den ebusd zu bekommen.

Wenn du also zwei ebus adapter an zwei unterschiedlichen Heizungssystemen hast, dann musst du z.B. einen ebusd2 systemdienst erstellen.
(/etc/init.d/ebusd2 erstellen; /etc/default/ebusd2 erstellen, mit dem Befehl "update-rc.d ebusd2 enable" den systemdienst ebusd2 erstellen und starten)

Du solltest dir dann aber auch über regeln für udev gedanken machen da linux evlt. auch mal die devicenamen für deine adpater verdreht.

Grüße
Andy

Hallo Andy, danke für die Erklärung :D
scheint keine große Sache zu sein, wenn man weiß wie.

ja das mit den Regeln für udev hab ich mir angesehen, sollte ich schon hinkriegen.
Python Script hab ich auch schon.

Fehlt nur noch, dass das field value update funktioniert. :)

jamesgo

#1696
Hallo John,

ich versuche "version: ebusd 2.1.681e988" auf einem odroid c2 zum laufen zu bekommen.
Der Adapter ist von eservice-online und hat mit der ebusd Version 2.1 auf einem Beaglebone problemlos funktioniert.
Beim Übersetzten gabe es keine Fehlermeldungen oder Warnings.

Ich bekomme immer wieder "read timeout" Meldungen. D.h. "read -f Flow1Sensor" funktioniert nur manchmal.

Nachdem justieren die Situation nicht verbessert ist mir folgendes aufgefallen:

<code>
(ebusd -f -d /dev/ttyEbus  --scanconfig --logarea=bus --loglevel=info; und dann im ebusctl raw gesetzt)
2016-05-22 18:21:26.038 [bus notice] <aa
2016-05-22 18:21:26.039 [bus info] poll cmd: 3108b5090124
2016-05-22 18:21:26.039 [bus notice] >31
2016-05-22 18:21:26.050 [bus error] poll scan.08 id failed: ERR: read timeout
2016-05-22 18:21:26.088 [bus notice] <aa
2016-05-22 18:21:26.091 [bus notice] <10
2016-05-22 18:21:26.096 [bus notice] <50
2016-05-22 18:21:26.101 [bus notice] <b5
</code>

Nun meine Frage: Ist es richtig, dass ich von dem Befehl "3108b5090124" nur die ">31" sehe?

Grüße
Andy

PS: jetzt habe ich den Beaglebone nochmal reanimiert. Dort habe ich keine read timeouts. Doch ein Problem wg. 64-bit?

jamesgo

Hallo,
ich glaube ich habe eine Spur. Der odroid Kernel scheint keine highres timer zu unterstützen:

auf dem odroid c2
cat /proc/timer_list | grep resolution
  .resolution: 10000000 nsecs

auf dem beagle
cat /proc/timer_list | grep resolution
  .resolution: 1 nsecs

Grüße
Andy


Sven77

Ich will Dich nicht enttäuschen, aber auf meiner Dockstar läuft seit Monaten eBus und nebenbei OWFS problemlos...
# cat /proc/timer_list | grep resolution
  .resolution: 10000000 nsecs
  .resolution: 10000000 nsecs
  .resolution: 10000000 nsecs
VG, Sven

flash91

#1699
Hey John,

gute Neuigkeiten, habe die debian packages deinstalliert und mir deine aktuellste Version von git gezogen. Jetzt läufts  :D
An dieser Stelle möchte ich vorallem dir und Reinhart meinen Dank aussprechen! Ohne euch, hätte ich mein Projekt nur schwer realisieren können.

VG,
PhiL

john30

Zitat von: jamesgo am 22 Mai 2016, 18:30:29
ich versuche "version: ebusd 2.1.681e988" auf einem odroid c2 zum laufen zu bekommen.
Der Adapter ist von eservice-online und hat mit der ebusd Version 2.1 auf einem Beaglebone problemlos funktioniert.
Beim Übersetzten gabe es keine Fehlermeldungen oder Warnings.

Ich bekomme immer wieder "read timeout" Meldungen. D.h. "read -f Flow1Sensor" funktioniert nur manchmal.

Nachdem justieren die Situation nicht verbessert ist mir folgendes aufgefallen:

<code>
(ebusd -f -d /dev/ttyEbus  --scanconfig --logarea=bus --loglevel=info; und dann im ebusctl raw gesetzt)
2016-05-22 18:21:26.038 [bus notice] <aa
2016-05-22 18:21:26.039 [bus info] poll cmd: 3108b5090124
2016-05-22 18:21:26.039 [bus notice] >31
2016-05-22 18:21:26.050 [bus error] poll scan.08 id failed: ERR: read timeout
2016-05-22 18:21:26.088 [bus notice] <aa
2016-05-22 18:21:26.091 [bus notice] <10
2016-05-22 18:21:26.096 [bus notice] <50
2016-05-22 18:21:26.101 [bus notice] <b5
</code>

Nun meine Frage: Ist es richtig, dass ich von dem Befehl "3108b5090124" nur die ">31" sehe?

Also mit dem highres timer hat das m.E. nichts zu tun, auch wenn 10ms schon recht grob sind. Nach dem Log sieht es einfach so aus, als ob vom bus innerhalb von 12 ms das gesendete Byte (sprich die Quelladdresse 0x31) nicht zurück kommt. Du kannst mal mit den ebusd Aufrufparametern (timeouts siehe https://github.com/john30/ebusd/wiki/2.-Run#ebus-options) bzw. dem latency Wert versuchen (siehe https://github.com/john30/ebusd/wiki/2.-Run#device-options), etwas mehr Zeit einzuräumen.
author of ebusd

flash91

Zitat von: jamesgo am 22 Mai 2016, 16:27:11
Hallo flash91,

ein sytemdienst wird durch ein start/stop script definert. Für den ebusd ist das /etc/init.d/ebusd.
Dieses Script liest /etc/default/ebusd um parameter für den ebusd zu bekommen.

Wenn du also zwei ebus adapter an zwei unterschiedlichen Heizungssystemen hast, dann musst du z.B. einen ebusd2 systemdienst erstellen.
(/etc/init.d/ebusd2 erstellen; /etc/default/ebusd2 erstellen, mit dem Befehl "update-rc.d ebusd2 enable" den systemdienst ebusd2 erstellen und starten)

Du solltest dir dann aber auch über regeln für udev gedanken machen da linux evlt. auch mal die devicenamen für deine adpater verdreht.

Grüße
Andy

Leider war ich bei dem Vorhaben nicht ganz erfolgreich..
Die durchgeführten Schritte:
ich habe "/etc/init.d/ebusd2" erstellt mit
sudo cp /etc/init.d/ebusd /etc/init.d/ebusd2

in /etc/init.d/ebusd2

. /lib/lsb/init-functions
[ -r /etc/default/ebusd ] && . /etc/default/ebusd

zu

. /lib/lsb/init-functions
[ -r /etc/default/ebusd2 ] && . /etc/default/ebusd2

geändert

und mit
sudo cp /etc/default/ebusd /etc/default/ebusd2
"/etc/default/ebusd2" erstellt und dort "--port=8889" gesetzt.

danach: "update-rc.d ebusd2 enable"
update-rc.d: error: no runlevel symlinks to modify, aborting!


dacht mir egal, einfach mal reboot ausprobieren.

So, folgendes Problem jetzt:
die Services lassen sich getrennt problemlos starten, laden die richtigen Konfigurationen (richtigen Port), aber sobald ich beide starte erhalte ich bei "service ebusd(2) status" dass einer von beiden "active (exited)" ist.
Warum beendet sich ein Service sobald der zweite gestartet wird?
Was habe ich vergessen?

habe auch schon probiert in /etc/init.d/ebusd2
DAEMON=/usr/bin/ebusd
PIDFILE=/var/run/ebusd.pid

auf
DAEMON=/usr/bin/ebusd2
PIDFILE=/var/run/ebusd2.pid

abzuändern und natürlich auch
sudo cp /usr/bin/ebusd /usr/bin/ebusd2
durchgeführt. Änderte nichts an dem Problem.

Bitte um Hilfe  :)

Grüße,
PhiL

jamesgo

Hi,

versuch mal "update-rc.d ebusd2 defaults".

systemctl | grep ebusd

sollte beide services anzeigen.

Grüße
Andy

flash91

Zitat von: jamesgo am 28 Mai 2016, 09:35:27
Hi,

versuch mal "update-rc.d ebusd2 defaults".

systemctl | grep ebusd

sollte beide services anzeigen.

Grüße
Andy

Hi, danke für die schnelle Antwort (:

pi@raspberry:~ $ sudo update-rc.d ebusd2 defaults
insserv: script ebusd: service ebusd already provided!
pi@raspberry:~ $ systemctl | grep ebusd
ebusd.service            loaded active running   LSB: controls ebusd, the daemon for communication with eBUS heating systems.
ebusd2.service            loaded active exited    LSB: controls ebusd, the daemon for communication with eBUS heating systems.
pi@raspberry:~ $ ebusctl -p 8888 read -c solar temp
0;54.88;60.12
pi@raspberry:~ $ ebusctl -p 8889 read -c solar temp
error connecting to localhost:8889


Falls ich aber die Services "ebusd" und "ebusd2" stoppe und dann nur "ebusd2" starte so funktionierts
pi@raspberry:~ $ systemctl | grep ebusd
ebusd2.service            loaded active running   LSB: controls ebusd, the daemon for communication with eBUS heating systems.
pi@raspberry:~ $ ebusctl -p 8889 read -c solar temp
0;68.19;51.62


BG,
PhiL

jamesgo

Hi PhiL,

ich gehe mal davon aus, dass "systemctl stop ebusd.serivce" bzw "systemctl stop ebusd2.service" (und auch start) funktionieren.
D.h. die service sind nun richtig aufgesetzt.

Wie sehen denn deine /etc/default/ebusd und /etc/default/ebusd2 aus?

Grüße
Andy

flash91

Zitat von: jamesgo am 29 Mai 2016, 08:16:24
Hi PhiL,

ich gehe mal davon aus, dass "systemctl stop ebusd.serivce" bzw "systemctl stop ebusd2.service" (und auch start) funktionieren.
D.h. die service sind nun richtig aufgesetzt.

Wie sehen denn deine /etc/default/ebusd und /etc/default/ebusd2 aus?

Grüße
Andy

Morgen Andy,

vielen Dank!! :D es liegt wohl daran wie die Services gestartet werden.
Bisher habe ich immer über
service ebusd start
service ebusd2 start
gestartet

aber mit
systemctl start ebusd
systemctl start ebusd2

sind jetzt beide "active running" und ich kann auch beide über ebusctl ansprechen!!

Nochmals danke & vG,
PhiL

jamesgo

klingt super.

Der Unterschied könnte noch an folgedem Eintrag in /etc/init.d/ebusd liegen:

PIDFILE=/var/run/ebusd.pid

flash91

#1707
Zitat von: jamesgo am 29 Mai 2016, 09:27:32
klingt super.

Der Unterschied könnte noch an folgedem Eintrag in /etc/init.d/ebusd liegen:

PIDFILE=/var/run/ebusd.pid

Den hatte und habe ich eh auf "PIDFILE=/var/run/ebusd2.pid" abgeändert

john30

Zitat von: flash91 am 29 Mai 2016, 16:47:14
Den hatte und habe ich eh auf "PIDFILE=/var/run/ebusd2.pid" abgeändert
Mit dem jüngsten commit 086dea5 lassen sich jetzt auch ganz einfach mehrere ebusd Instanzen starten, indem mehrere EBUSD_OPTS in /etc/default/ebusd eingetragen werden.
author of ebusd

Prof. Dr. Peter Henning

Hallo Liste,

mein ebusd läuft nun wirklich schon über Jahre stabil - aber jetzt gibt es Macken.

Kommandos, die - direkt mit ebusctl abgesetzt, ohne Netzwerk oder gar FHEM dazwischen - noch vor wenigen Tagen problemlos gelaufen sind, ergeben plötzlich

ERR: arbitration lost oder
ERR: invalid argument oder
ERR: invalid position oder

sie funktionieren eben. Manchmal.

Schlussfolgerung: irgendetwas im EBUS-Adapter ist gestorben, oder hat sich zumindest verändert.

Denn an keiner Stelle der Software habe ich auch nur ein Bit verändert.

Kennt irgendjemand diese Symptome ?

LG

pah