fhem & openwrt

1,092 views
Skip to first unread message

Etzmolch

unread,
Jan 15, 2012, 3:03:19 PM1/15/12
to FHEM users
Hallo zusammen,

nach dem ich FHEM erfolgreich auf meinem PC in Betrieb genommen habe,
würde ich es ganz gern auf meinem Router / Openwrt installieren. Mir
ist nur nicht klar, wie ich jetzt FHEM in Openwrt installiert
bekomme.

Vielen Dank und schöne Grüße,
André

Gerhard Pfeffer

unread,
Jan 15, 2012, 3:10:55 PM1/15/12
to fhem-...@googlegroups.com

Hej,
also grundsaetzlich funktioniert das problemlos.
Einzig und allein bei ein paar Spezialfunktionen (die nicht standard Perlmodule benoetigen) wird es sich spießen. Aber die Grundfunktionen lassen sich wie gesagt ohne Probleme abbilden. :-)

Greetz,
   Gerhard

--
To unsubscribe from this group, send email to
fhem-users+...@googlegroups.com

Baron Graf von Etzmolch

unread,
Jan 16, 2012, 1:57:39 PM1/16/12
to fhem-...@googlegroups.com

Hallo,
danke Gerhard für deine Antwort. Leider ist mir immer noch nicht klar, wie ich jetzt Fhem auf dem Router installiert bekomme. Ist es notwendig, mir mein openwrt für den Router inkl. Fhem selbst zu bauen oder gibt es eine Möglichkeit, Fhem in die fertige Openwrt-Installation zu integrieren?

Gruß
André

Gerhard Pfeffer

unread,
Jan 16, 2012, 2:58:53 PM1/16/12
to fhem-...@googlegroups.com

Hej,
du nimmst die ganz normale OpenWRT-Installation und installierst dir noch einige Perlmodule nach...
Wenn ich heute daheim bin, kann ich dir gerne alles senden, was du brauchst. :-)

Greetz,
   Gerhard

Gerhard Pfeffer

unread,
Jan 16, 2012, 5:34:36 PM1/16/12
to fhem-...@googlegroups.com
Hej hej,

also für OpenWRT sieht es folgendermaßen aus (die Orte für die Files
sind aus meiner Config heraus und können deinen Wünschen entsprechend
geändert werden):

Kopiere 'fhem.pl' nach '/usr/sbin/', alles andere kommt nach '/usr/lib/FHEM/'.

folgende Pakete (und ggf. Abhängigkeiten) installierst du mit opkg
(Voraussetzung dein CUL wird schon bei dmesg mit ttyUSB erkannt):
perl
perlbase-autoloader
perlbase-config
perlbase-dynaloader
perlbase-errno
perlbase-essential
perlbase-fcntl
perlbase-file
perlbase-io
perlbase-math
perlbase-posix
perlbase-selectsaver
perlbase-socket
perlbase-symbol
perlbase-tie
perlbase-time
perlbase-xsloader

Meine Konfiguration habe ich zu den anderen Config-Files des Routers
gegeben, damit sie beim Backup mitberücksichtigt wird. Daher:
'/etc/config/fhem'

Dort ist folgendes in der globals-Section wichtig:
attr global modpath /usr/lib
attr global pidfilename /var/run/fhem.pid
attr global statefile /var/log/fhem/fhem.save
attr global logfile /var/log/fhem/fhem-%Y-%m.log

Weiters muss noch folgendes in die Config:
Wenn du Glück hast, kannst du in deiner fhem-config das CUL mittels:
define CUL CUL /dev/ttyUSB0@directio 1234
definieren. Leider geht das bei mir seit einem Reboot vor ein paar
Tagen nicht mehr (zuvor offensichtlich viel zu lange gelaufen und
irgendwelche Updates installiert :-( ).
Da wollte ich noch mit Rudi reden, da sich jetzt scheinbar dieser
Baudraten-Fehler eingeschlichen hat, was und ob man etwas dagegen tun
kann. stty könnte vielleicht helfen, dass muss man sich aber selbst im
OpenWRT-Image mitbauen bauen.

Andernfalls definierst du es mit:
define CUL CUL 127.0.0.1:2323 1234

und brauchst dann noch ein Zusatzpaket 'ser2net', dessen Config unter
'/etc/ser2net' ersetzt du gänzlich mit der Zeile:
2323:raw:0:/dev/ttyUSB0:38400 (ggf. musst du ttyUSB0 ändern).

Last but not least noch ein init-Script '/etc/init.d/fhem' erstellt:

### cut begin ###

#!/bin/sh /etc/rc.common
# FHEM Startup
#
# This file handles start/stop for FHEM
START=99
STOP=1

FHEM="/usr/sbin/fhem.pl"
PORT="7072"
CONFIG="/etc/config/fhem"
PIDFILE="/var/run/fhem.pid"
LOGPATH="/var/log/fhem"
#EXTTMP="/dev/sda3" # Comment out, if you don't want to use it.
#EXTOPTS="-text3" # Option is not a must to have for external FS, so
comment it out, if you don't need it.
SER2NET="yes" # If u use ser2net enter yes otherwise no.

start() {
if [ "${SER2NET}" == "yes" ]; then
ps axwww|grep -v grep|grep -i ser2net > /dev/null 2>&1
if [ $(echo ${?}) -ne 0 ]; then ser2net;fi
fi
mkdir -p ${LOGPATH}
if [ -n ${EXTTMP} ]; then
df ${EXTTMP} > /dev/null 2>&1
if [ $(echo ${?}) -ne 0 ]; then mount ${EXTOPTS} ${EXTTMP} ${LOGPATH};fi
fi
start-stop-daemon -S -x ${FHEM} -p ${PIDFILE} -b -- ${CONFIG}
}

stop() {
start-stop-daemon -K -p ${PIDFILE}
}

reload() {
${FHEM} ${PORT} rereadcfg
}

restart() {
${FHEM} ${PORT} "shutdown restart"
}

### cut end ###

...und dann noch:
chmod 755 /etc/init.d/fhem
ln -s /etc/init.d/fhem /etc/rc.d/S99fhem
ln -s /etc/init.d/fhem /etc/rc.d/K1fhem

und das wars... schon solltest du das Ganze mit /etc/init.d/fhem start
zum Laufen bringen (bzw. beim nächsten Reboot von selbst starten).

So... Das wars einmal. Wenn ich dich jetzt endgültig verwirrt habe
oder du noch andere Fragen hast... Nicht schüchtern sein. ;-)

Greetz,
Gerhard

Baron Graf von Etzmolch

unread,
Jan 21, 2012, 11:10:58 AM1/21/12
to fhem-...@googlegroups.com
Hallo,

nach dem ich nach der Anleitung von Gerhard vorgegangen bin, gibt es jetzt 2 Probleme.
Das Erste ist, dass irgendwie das Skript nicht starten möchte ein /etc/init.d/fhem start bringt keine Reaktion. Jetzt dachte ich mir, mit einigen Echo's im Skript sehe ich, was ausgeführt wird und was nicht. Nach der Initialisierung scheint es irgendwie Probleme mit der Ausführung von start() zu geben, denn ab da gibts keine Ausgabe mehr.
Danach habe ich mal versucht manuell mit perl fhem.pl /etc/config/fhem.cfg" zu starten damit komme ich auch schon zum zweiten Problem: Es wird das Fehlen von Device/SerialPort.pm moniert, egal, wie ich das CUL definiere mit SER2NET oder per @directio.
Kurioser Weise hat es beim ersten mal mittels @directio funktioniert allerdings mit "MyCUL: unknown message ? (1234 is unknown) Use one of B C F i A G M R T V W X e f m l t u x", weshalb ich SER2NET ausprobiert hatte mit dem oben genannten Problem.
Für Tipps bin ich dankbar.

Gruß André


PS: Danke für die gute Anleitung Gerhard. Ohne deine ausführliche Beschreibung wäre ich gar nicht erst soweit gekommen.

Gerhard Pfeffer

unread,
Jan 30, 2012, 2:29:05 AM1/30/12
to fhem-...@googlegroups.com
Hej André,

um besser sehen zu könne, wo dein Problem liegt, starte
/etc/init.d/fhem doch einmal mit sh -x. Also:

sh -x /etc/init.d/fhem start

Damit bekommst du einen recht brauchbaren Output. Sollte dir dieser
nicht aussagekräftig genug sein, dann einfach einmal hier posten.

Bezüglich deines SerialPort-Fehlers scheint es wohl noch ein
Config-Problem bei dir zu geben.
@1) Die Ausgabe die du mit @directio bekommst, zeigt an, dass die
Baudrate nicht passt (ist bei mir ebenso), mit der dein CUL
angesprochen wird. Da wurde wohl etwas an der openwrt-Config
geschraubt, hatte aber noch keine Zeit, mir das anzusehen und daher
bin ich erstmals auf die ser2net-Variante zurück gestiegen.
Aber schick mir hier doch bitte einmal den init-String für deinen CUL
von FHEM (oder besser die ganze Config). Denn irgendetwas scheint FHEM
zu einem INIT-Versuch bewegen zu wollen.

Greetz,
Gerhard

Am 21. Januar 2012 17:10 schrieb Baron Graf von Etzmolch
<graf.e...@googlemail.com>:

Etzmolch

unread,
Jan 30, 2012, 1:35:44 PM1/30/12
to FHEM users
Hi,
hatte mich gestern nochmal mit dem Thema beschäftigt und es schon zum
Laufen gebracht. Hatte nur noch keine Zeit das Thema als erledigt zu
deklarieren. Beim ersten Problem sitzt, wie so oft und wer hätt's
gedacht, das Übel vor dem Rechner.
Bei dem zweiten Problem, habe ich einfach FHEM neu installiert und
gleich über die ser2net- Variante konfiguriert und siehe da ... es
werkelt das CUL nun freudig mit OpenWRT. Vermutlich wurde, wie du
schon sagst, irgendwo mit der falschen Baudrate versucht das CUL
anzusprechen und das schlug fehl. Die Einstellung musste allerdings
irgendwo bei FHEM gesetzt worden sein, da ich lediglich, wie oben
schon geschrieben, FEHM neu installiert habe. Allerdings übersteigt es
derzeit meine Fähigkeiten, dies zu ergründen.

Gruß,

André
Reply all
Reply to author
Forward
0 new messages