Läuft: Heizung mit eBus-Schnittstelle

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

Vorheriges Thema - Nächstes Thema

Jojo11

Ok. Wenn ich soweit bin werde ich mich auch mal an eine solche Regelung wagen. Bisher kämpfe ich noch mit dem ebusd :)

schöne Grüße
Jo


heikoh81

#376
Zitat von: joachimS am 26 Januar 2015, 11:48:36
Weiss jmd. wie lange ein ebus Kabel sein darf? Ich kann das ebus Kabel zum raspberry ja an eine belegte ebus Klemme parallel anschliessen, oder?

Ja, einfach Parallel anschließen.
Ich habe aus der Heizung ein normales 3-adriges Feuchtraumkabel herausgeführt, in ein IP67-Aufputz-Hutschienen-Gehäuse mit 12 Plätzen (von Pollin: http://www.pollin.de/shop/dt/MjU0OTQ0OTk-/Haustechnik/Installationsmaterial/Dosen_Verteiler/Feuchtraum_Kleinverteiler_PCE_T_Box_12.html)
Die bauseits vorhandene Leitung ins Wohnzimmer zur Calormatic dürfte auch so 12-20m lang sein, ungeschirmt, keine Ahnung wie das im Haus verläuft.
Ich habe am ebus-Adapter aber bemerkt, dass schon die kleinste Längenveränderung ein Neueinstellen des Potis erfordert.
Weiß gar nicht, wie das Vaillant macht, weil da muss man nichts von Hand kalibrieren und Vaillant weiß vorher ja auch nicht, wie lange die Leitungen im Haus sind.

ZitatWelches Linux empfehlt ihr für den raspberry pi? Solle man die vorinstallierte SD Karte nehmen oder besser runterladen?
Werde den raspberry pi B+ bestellen

Raspbian, am stabilsten, als Debian-Fork häufig mit Updates versorgt.
Ich würde das Geld nicht für eine vorbespielte SD-Karte ausgeben, lieber gezielt eine Class10 von Sandisk kaufen und mit Win32DiskImager selber flashen.
Es ist sehr einfach, und es gibt viele Tutorials dazu.
Allerdings muss ich sagen, dass ich schon 6 Raspis einsetze und das ganze deshalb mittlerweile leicht von der Hand geht.

Viele Grüße,
Heiko

Reinhart

#377
Hallo!

Ich muss leider nochmals das alte Thema "eBus Dämon starten" aufgreifen!

Ich wollte heute den Dämon aktiveren (habe bis jetzt händisch gestartet) und hier so meine Wunder erlebt.

Nach viel lesen habe ich es zwar geschafft den eBus zumindest nach Neustart automatisch zu starten, aber die Probleme liegen beim Pidfile. Hier fehlen die Rechte im /run/  und das File kann nicht geschrieben werden, selbst wenn mit sudo gestartet wird.

ich starte so:


sudo ./ebusd.debian start

und erhalte auch "ok". Tatsächlich läuft auch der Dämon.
pi@raspberry2 ~ $ ps -aux|grep ebusd
warning: bad ps syntax, perhaps a bogus '-'?
See http://gitorious.org/procps/procps/blobs/master/Documentation/FAQ
root      2141  0.4  0.2  36260  1316 ?        Ssl  16:28   0:08 /usr/local/bin/ebusd -l All -d /dev/ttyUSB0 -p 8888


aber es wird nirgends ein Pidfile angelegt, bzw wenn ich den Originalpfad des Pidfiles lasse, dann wird es angelegt aber mit 0 Byte Länge (weil er vermutlich selbst nicht schreiben kann).

pi@raspberry2 /etc/init.d $ sudo ./ebusd.debian status
read Config: /etc/default/ebusd
[FAIL] could not access PID file for ebusd ... failed!


mit der Statusabfrage kommt dann ein Fehler, weil nichts gelesen werden kann. Stop funktioniert aber wieder und beendet den ebusd.

Ich habe auch schon versucht den Pfad des Pidfiles umzulegen, es wird aber in diesem Pfad kein File angelegt obwohl ich Rechte und Besitzer auf "pi" geändert habe.

sudo mkdir /var/run/ebus
sudo chown pi:pi /var/run/ebus


folgende Pfade habe ich diesbezüglich in Verwendung:
/etc/default/ebusd     (Konfiguration für ebusd)
/etc/init.d/ebusd.debian  (Dämon Start-Stop-Script)
/etc/logratate.d/ebusd    (Configs für das Logfile)
/usr/local/bin   (hier liegen die 3 Binary)

und nachdem die Files alle dort liegen habe ich noch das Runlevel Script aktualisiert (wichtig damit Dämon nach Reboot auch startet)


cd /etc/init.d
sudo update-rc.d ebusd.debian defaults


Die genaue Struktur und der Inhalt der Scripte/Configs ist im Anhang.

Im Prinzip ist es mir fast egal, denn nach Netzausfall oder sonstiges startet der Raspi ja nun schon den eBus Dämon automatisch, nur mit einem Watchdog geht es in die Hose weil hier das Pidfile ausgelesen werden muss und genau diese Funktion passt noch nicht.

'test')
       #--- Test for ebusd
       if [ -s /var/run/ebusd.pid ] ; then
           RUN=`ps -ef | grep ebusd.*USB0 | grep -v grep`
           if [ "$RUN" != "" ] ; then           
              #echo "ebusd is already running"


Ich glaube ich bin nicht der einzige, der hier Probleme hat.
Hat dieses Problem des Pidfiles schon jemand gelöst und kann mir hier weiterhelfen?

Liebe Grüße
Reinhart

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

Reinhart

ein Teil ist mir nun schon klar, der Pfad für das Pidfile ist hardcoded in den Sourcen hinterlegt, daher kann man den Pfad nicht ändern.

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

Reinhart

Aufgrund der hardcoded Sache und dem Rechtefehler des Pidfiles habe ich jetzt das Start- Stop Script abgeändert. Die Rechte werden jetzt gesetzt, die ProzessID richtig geschrieben und der Dämon somit auch richtig gestoppt. Es funktioniert zwar soweit, aber ein endgültige Lösung ist das sicher nicht.


#!/bin/sh

### BEGIN INIT INFO
# Provides:        ebusd
# Required-Start:  $network $remote_fs $syslog
# Required-Stop:   $network $remote_fs $syslog
# Default-Start:   2 3 4 5
# Default-Stop:
# Short-Description: Start ebusd
### END INIT INFO

# modified by Reinhart, changed User rights in the Pidfile

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin

if test -f /etc/default/ebusd; then
    . /etc/default/ebusd
    echo "read Config: /etc/default/ebusd"
fi

. /lib/lsb/init-functions

DAEMONUSER=root
DAEMON=/usr/local/bin/ebusd
PIDFILE=/var/run/ebusd.pid

test -x $DAEMON || exit 5

case $1 in
start)
    if [ -e $PIDFILE ]; then
      if $0 status > /dev/null ; then
        log_success_msg "$DESC already started; not starting."
        return
      else
        log_success_msg "Removing stale PID file $PIDFILE."
        rm -f $PIDFILE
      fi
    fi 
     
log_daemon_msg "Starting ebusd" "ebusd"
start-stop-daemon --start --quiet --pidfile $PIDFILE --user $DAEMONUSER --exec $DAEMON -- $EBUSD_OPTS
status=$?
log_end_msg $status
   
    if [ -e $PIDFILE ]; then
      chown $DAEMONUSER $PIDFILE
      chgrp $DAEMONUSER $PIDFILE
      chmod 644 $PIDFILE
      pidof ebusd >$PIDFILE
    fi

    echo "ebus daemon is started"
  ;;
stop)
log_daemon_msg "Stopping ebusd" "ebusd"
          start-stop-daemon --stop --retry 5 --quiet --oknodo --pidfile $PIDFILE --user $DAEMONUSER
log_end_msg $?
    echo "ebus daemon is stopped"
rm -f $PIDFILE
  ;;
restart|force-reload)
$0 stop && sleep 2 && $0 start
  ;;
status)
status_of_proc $DAEMON "ebusd"
;;
*)
echo "Usage: $0 {start|stop|restart|force-reload|status}"
exit 2
;;
esac


modifiziertes File /etc/init.d/ebusd.debian für den Dämon Start.

Warum das doch bei einigen am Raspberry läuft verstehe ich immer noch nicht, aber bei mir läuft jetzt der Dämon somit richtig.

LG

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

Jojo11

Das Problem hatte ich auch. Du musst den Status auch mit sudo abrufen. Der daemon läuft ;)

schöne Grüße
Jo


john30

@Reinhart:
Danke für das Testen auf dem RPi.
Hast Du das PID-File Problem mit meinem Fork oder mit Rolands?
author of ebusd

john30

@MilanK:
Danke für das Angebot. Ein Dump File hilft hier nicht wirklich, weil das Timing daraus nicht ersichtlich wird und das ist das einzig wichtige. Besser wäre, den ebusd eine gewisse Zeit lang laufen zu lassen und im Log nach Problemen zu suchen. Insbesondere vermehrte arbitration losses wären ein Hinweis auf einen potentiellen Kapazitäts-Engpass.
author of ebusd

Reinhart

Zitat von: john30 am 31 Januar 2015, 08:55:13
@Reinhart:
Danke für das Testen auf dem RPi.
Hast Du das PID-File Problem mit meinem Fork oder mit Rolands?

ich habe das in folgender Reihenfolge installiert:
die ursprüngliche Ebus-master, dann die Beta 5.x und dann habe ich deine Version compiliert und nur die die Binary "ebusd" ausgetauscht. Die Pid Probleme waren bei allen 3 Versionen gleich.

Es wird das Pidfile in /run/ebus.pid mit Rechten "600" angelegt mit Null Byte, d.h. es wird nicht mit der ProzessID befüllt. Das ist auch der Grund, warum dann auch kein Restart und Stop funktioniert. Passt man hier bei vielen Restarts nicht auf, dann laufen bis zu 10 ebus Prozesse oder mehr. Das ist der Grund, warum ich jetzt die Dämon Startroutine bei mir geändert habe.

starten mache ich immer so:

cd /etc/init.d
sudo ./ebusd.debian start
sudo ./ebusd.debian stop
sudo ./ebusd.debian restart

Ich habe die Bezeichnung ebusd.debian zum testen so belassen, dann weiß ich genau was ich da starte, sonst gibt es sehr viele gleiche Namen wie die Binary etc.

Ich habe mich aber erst seit gestern mit dem Dämon beschäftigt, weil ich den eBus-Raspi Netzausfallsicher (nach dem Reboot ebusd Dämon starten) machen wollte. Gestern hatte ich natürlich Hänger im Fhem, durch ständiges abwürgen der ebusd mit kill -9, da funktioniert auch oft kein SSH mehr sondern nur mehr Power Off/On. Seit ich aber mit "meiner" Startroutine fertig bin und frisch gebootet habe läuft alles wieder bestens.

Du siehst ja in dem geänderten Dämonscript wo ich eingegriffen habe, Rechte setzen und mit Pidof die PorzessId ins Pidfile schreiben. Mir ist es auch erst klar geworden nachdem ich C Sourcen von dem ebusd mir angesehen habe. Offensichtlich klappt es aber doch bei vielen, denn außer heikoh und milan aus dem KNX-Forum geht es ja anscheinend bei den andern sofern die schon mit der Implementierung so weit sind.

PS: ich kann aber gerne noch was testen wenn du möchtest!

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

Reinhart

Zitat von: Jojo11 am 31 Januar 2015, 00:27:12
Das Problem hatte ich auch. Du musst den Status auch mit sudo abrufen. Der daemon läuft ;)

schöne Grüße
Jo

klappt so leider nicht (siehe oben) weil dann keine ProzessID im Pidfile steht! File wird immer mit 0 Byte angelegt und kann mit "stop" nicht mehr gelöscht werden.

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

john30

Zitat von: Reinhart am 31 Januar 2015, 11:19:34
Es wird das Pidfile in /run/ebus.pid mit Rechten "600" angelegt mit Null Byte, d.h. es wird nicht mit der ProzessID befüllt. Das ist auch der Grund, warum dann auch kein Restart und Stop funktioniert. Passt man hier bei vielen Restarts nicht auf, dann laufen bis zu 10 ebus Prozesse oder mehr. Das ist der Grund, warum ich jetzt die Dämon Startroutine bei mir geändert habe.

Habs gerade gefixt (in john30): PID file ist jetzt für alle lesbar und nicht mehr leer und wird in $(prefix)/var angelegt.
author of ebusd

Reinhart

Danke john30, werde das am späteren Nachmittag gleich testen!

Momentan scheint die Sonne und ich muss rauß!

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

Reinhart

@john30

wollte dir kurze Rückmeldung geben: ebusd Dämon läuft nun auf dem Raspi tadellos und das Pidfile Problem ist erledigt!

Habe es so installiert:


nach /home/pi entpacken: https://github.com/john30/ebusd/archive/master.zip

cd /home/pi/ebusd.master
sudo ./autogen.sh
sudo make
sudo make install

sudo cp /home/pi/ebusd-master/contrib/etc/init.d/ebusd.debian /etc/init.d/ebusd   (Dämonstartfile kopieren)
sudo chmod 755 /etc/init.d/ebusd         (Script Rechte setzen, wenn es via PC kopiert wurde)
sudo update-rc.d ebusd defaults           (Runlevel Script aktualisieren)


habe den Raspi dann rebootet und getestet. Dämon wird automatisch gestartet und das Pidfile inkl. PID ist vorhanden. Bei Stop wird es gelöscht und auch der Restart funktioniert nun perfekt.

Besten Dank für deine rasche und kompetente Umsetzung!

Liebe Grüße
Reinhart
FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

john30

@Reinhart:
Prima, das freut mich!

Eigentlich sollten jetzt alle user das PID file lesen dürfen, also "sudo cat /var/run/ebusd.pid" sollte ohne Probleme durch "cat /var/run/ebusd.pid" zu ersetzen sein.
Auch autogen und make sollten noch ganz gut ohne su klappen. Ab "make install" brauchts natürlich super Rechte.

LG John
author of ebusd

Reinhart

#389
normale User haben noch keine Rechte, hier der Test:

pi@raspberry2 /var/run $ cat /var/run/ebusd.pid
cat: /var/run/ebusd.pid: Keine Berechtigung

pi@raspberry2 /var/run $ ls -al ebusd*
-rw------- 1 root root 5 Jan 31 16:07 ebusd.pid
pi@raspberry2 /var/run $


also kann ein User nicht lesen sondern nur Root!

und so sehen die anderen bei mir aus:


-rw-r--r--  1 root       root          5 Jan 31 16:07 dhclient.wlan0.pid
-rw-------  1 root       root          5 Jan 31 16:07 ebusd.pid
-rw-r--r--  1 root       root          5 Jan 31 16:07 ifplugd.eth0.pid
-rw-r--r--  1 root       root          5 Jan 31 16:07 ifplugd.lo.pid
-rw-r--r--  1 root       root          5 Jan 31 16:07 ifplugd.wlan0.pid
-rw-r--r--  1 root       root          5 Jan 31 16:07 inetd.pid



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