AVM Fritz!Box

Aus FhemWiki
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Installation von FHEM auf der AVM Fritz!Box 7390

FHEM auf der Fritz!Box 7390 wird von AVM ab Firmware-Version 84.05.05 unterstützt. Es werden die Treiber für USB Geräte wie CUL und EUL sowie verschiedene Dienste für FHEM bereitgestellt.

Zusätzlich gibt es eine Version von FHEM als Labor-Firmware, diese Software wird _zusätzlich_ zur Basis Firmware installiert und verändert die Versionsnummer nicht. Die AVM Variante kann ebenfalls über updatefhem auf den aktuellen Stand nachgerüstet werden. Sie hat allerdings den Nachteil, daß FHEM in einer chroot Umgebung läuft, damit sind die Funktionen der Fritz!Box nicht direkt zugreifbar.

Die aktuellen Labor-Images können hier bezogen werden.

Eine etwas schlankere Variante mit der Möglichkeit des direkten Zugriffs auf die Fritz!Box Funktionen steht unter www.fhem.de zur Verfügung.

Bitte beachten: Das Firmware-Image von der FHEM Webseite läßt sich, genau wie die AVM-Images, über die Funktion "Firmware-Update" der Fritz!Box installieren. (Menüpunkt System/Firmware-Update, dort den Reiter Firmware-Datei auswählen. Die passende Datei auswählen und mit "Update starten" bestätigen.)

Nach kurzer Zeit meldet sich die Fritz!Box mit der Warnung:

"Die angegebene Datei enthält keine von AVM für dieses Gerät freigegebene Firmware."

Hier mit "Update fortsetzen" bestätigen. Die Firmware wird installiert, der Vorgang schließt mit dem Neustart der Fritz!Box ab. Anschließend steht FHEM im Webbrowser unter "fritz.box:8083/fhem", und im Telnet Fenster unter "telnet fritz.box 7072" zur Verfügung.


Bekannte Probleme

  • Telnet ist auf der Fritz!Box normalerweise abgeschaltet, wie man den Dienst aktiviert ist ausführlich hier beschrieben. Kurzversion: Über ein angeschlossenes Telefon, Ein #96*7*, Aus #96*8*
  • Editieren von UNIX/Linux Dateien unter Windows führt zu Problemen, da das Zeilenende anders dargestellt wird. Führt, zum Beispiel, zur Meldung "-sh: ./abc.sh: not found" bei Aufruf eines vorhandenen Skripts. Es empfiehlt sich der Einsatz eines UNIX-fähigen Editors wie etwa der kostenlose EditPad Lite
  • Der Funktionsumfang der bekannten UNIX/Linux Befehle ist auf der Fritz!Box teilweise stark eingeschränkt, also bitte zunächst mit Befehl -? die Hilfe anzeigen, um sich zu vergewissern, was der Befehl auf der Fritz!Box leistet.
  • Während der CUL / EUL problemlos läuft, kann es Schwierigkeiten mit anderer Hardware direkt an der Fritz!Box geben, da die passenden Kernelmodule von der AVM-Firmware nicht zur Verfügung gestellt werden. Ein Anschluss an serielle Schnittstellen mit Hilfe eines USB-2-Serial-Konverters funktioniert nur, wenn dieser einen FTDI-Chip hat (Kernelmodul ftdi_sio), nicht, wenn dieser einen PL2303-Chip aufweist.
  • Die Fritz!Box unterstützt laut AVM FAQ maximal 4 USB Geräte (plus HUB) und kann maximal eines mit Strom versorgen.
  • AVM leistet _keine_ Unterstützung wenn die Fritz!Box durch Manipulation and Soft- oder Hardware beschädigt wird.

Externe Links

Installation von FHEM auf der AVM Fritz!Box 7270

Informationen zur Installation von FHEM auf der Fritz!Box 7270 finden sich an verschiedenen Stellen. Solange hier keine konsolidierte Beschreibung vorliegt, bitte die genannten Quellen verwenden:

Installation auf FHEM auf der AVM Fritz!Box 7240

CUL

  • flash CUL_V3.hex (from CULFW sourforge page) with Flip 3.4.5 for Windows (from Atmel page)
  • attach CUL to Fritz!Box (with a USB Hub to have USB-Memory stick and CUL running at the same time)
Note: to check if CUL works enable in FritzBox settings USB-Fernanschluss. 
Now it gets recognized as CUL868.
Remember to disable it again. 
The CUL should be recognized as "Es handelt sich um ein nicht unterstütztes USB-Gerät." 
This is OK!

Fritz!Box 7240

  • Update Fritz!Box to Firmware-Version >= 73.05.05
  • download fhem-5.1-fb7270.zip or greater version from http://www.fhem.de
  • unzip and store at root of your USB-Memory stick in the folder "fhem" (this will be "/var/InternerSpeicher/<yourUsbStickName>/fhem/" on you Fritz!Box later on.
  • adapt in this folder the file "startfhem" if you use more then 1 storage device (e.g. USB memory stick and "1&1 Online Speicher") with hardcoded destination folder for your fhem path:
    home=/var/InternerSpeicher/SanDisk-Cruzer-01/fhem
  • Alternatively disable "1&1 Online Speicher" and use USB memory stick only. This way you don't have to adapt startfhem.
  • to use telnet enable with phone dialing #96*7*. To login use same password as for Fritz!Box webfrontend. Now you can edit all of your files using vi in telnet.
  • Now define your "fhem.cfg" to match your configuration, e.g. starting with your housecode:
    define myCUL CUL /dev/ttyACM0 1234
    ...
  • finally start fhem in telnet:
    /var/InternerSpeicher/SanDisk-Cruzer-01/fhem/startfhem
  • or use autostart => see #Autostart fhem

Open issues

Daily resets with big log files

After 1 week running perfectly I was seeing regular/daily resets. The problem in my setting is that I am using several FS20-STR. These devices send every 2-3 minutes off-for-timer or on-for-timers signals. These events get logged in the monthly log file. After this log was bigger then 1MB I have seen these resets. After I emptied/deleted the file the box is running stable again.--Madu99

After looking more into this, it seems that the 7240 gets a memory problem when log files gets bigger then ~800KB. I changed the logging from monthly files to weekly files (using ./log/fhem-%Y-%m-%V.log). This way files should never get this big. Since then 7240 runs stable without any problems.--Madu99 01:44, 29. Dez. 2011 (CET)
see also GoogleGroups:FHEM auf Fritzbox - Logfile - info wenn wenig Speicher

Installation von FHEM auf der Fritz!Box 7170

Ziel: die aktuelle Version (zum Zeitpunkt des Artikel ist dies 5.0) von fhem (pgm2) auf der Fritz!Box 7170 mit einem CUL zum Laufen zu bekommen, ohne die Box dabei total zu überlasten oder zu crashen...
Logfiles der Box sollen dabei nicht auf der Box sondern auf einem angesteckten USB-Stick gespeichert werden.

Orientiert habe ich mich an der hier veröffentlichten Anleitung, welche für mich allerdings einige Fallstricke aufweist - und bei der ich zumindest die Rolle des Apaches bei der Art der Installation und Konfiguration nicht verstanden habe...

Voraussetzungen: Ein USB-Hub an der Fritz!Box mit (mindestens) einem USB-Speicherstick sowie einem Funk-Device (ich beschreibe hier den Weg für CUL v3.2, anderes wird ähnlich funktionieren); ein PC mit VMware (Player) bzw. VirtualBox, um die neue Firmware zu basteln

Bemerkung: Ich habe versucht, das Wesentliche aus dem Gedächtnis und meiner (unzureichenden) Doku zu rekonstruieren. Falls es irgendwo hängt, würde ich mich über eine Korrektur des Artikels und/oder 'ne kurze Mail freuen!

Freetz

Warnung: Mit freetz kann man sich seine Fritz!Box auch schön zu Grunde richten (wenn auch meist nicht endgültig); ich empfehe ganz dringend die Lektüre der ersten Schritte für Anfänger und die etwas gründlichere Auseinandersetzung mit Freetz!

Vorbereitungen

Freetz erlaubt die Modifikation der original-AVM Firmware, so dass zusätzliche Features eingebaut und nicht benötigte eingespart werden können (spart Flash und RAM - und erhöht eventuell sogar die Sicherheit...)

Für das Erstellen der Firmware mittels Freetz ist Freetz Linux eine tolle Sache - eine fertig eingerichtete VM (für VirtualBox oder VMware), die ohne großen Aufwand das Kompilieren einer eigenen Firmware gestattet; mehr Infos dazu gibts dazu hier.

Ist die VM gemäß Anleitung gestartet, kann man (nach einloggen und downloaden der Quellen) sich mittels make menuconfig seine eigene Firmware zusammenbasteln.

Konfiguration der Firmware

(leider erlaubt das Wiki kein Upload von Textdateien, daher liegt meine Config extern)

Meine komplette (so für mich funktionierende) .config für freetz gibt es hier; bitte beachten, dass folgende (nicht direkt fhem-relevante) Änderungen eingebastelt sind, um die Box sowohl bezüglich Flash als auch bezüglich RAM zu entlasten:

FREETZ_REMOVE_TR069=y     # ACHTUNG: Vorher via WebIF deaktivieren!
FREETZ_REMOVE_USERMAN=y   # brauche keine Kindersicherung
FREETZ_REMOVE_FTPD=y      # ebenso kein FTP
FREETZ_REMOVE_MEDIASRV=y  # Mediaserver ist eine andere Kiste
FREETZ_REMOVE_SMBD=y      # Samba brauche ich auch nicht (spart alles Platz!)
FREETZ_PACKAGE_CALLMONITOR=y # der Callmonitor ist TOLL!
FREETZ_PACKAGE_DROPBEAR=y # SSH Server. Klasse zur Installation und Wartung von FHEM
FREETZ_PACKAGE_NANO=y     # kleiner Editor, angenehmer als VI.

Hinweis: Diese Config spiegelt natürlich meine Konfiguration wieder. Wer einen Samba, FTP-Server etc. auf seiner Box haben will, muss natürlich entsprechende Änderungen vornehmen!

ACHTUNG: Das Entfernen von TR069 kann laut einigen Hinweisen zu einer Dauer-reboot-Schleife der Fritz!Box führen, wenn TR069 nicht vorher per Webinterface deaktiviert wurde; siehe auch hier - im Zweifellsfall tr069 nicht deaktivieren!

fhem-relevante Anpassungen (Kernelmodule):

FREETZ_MODULE_usbserial=y # fuer CUL
FREETZ_MODULE_ftdi_sio=y  # fuer FHZ? (habe ich nicht...)

einloggen und download der fhem-Quellen

Ist die selbst gebastelte Freetz-Firmware geflasht, kann man sich - wenn dropbear einkompiliert wurde - mittels SSH (ein empfehlenswerter SSH-Client für Windows ist z.B. PuTTY auf der Kiste anmelden. Als Serveradresse - na klar - fritz.box verwenden; Login ist "root", Passwort (ACHTUNG, daran habe ich 'ne Runde gesessen) "freetz". Dieses sollte man möglichst bald ändern.

Jetzt wechseln wir in das Verzeichnis des USB-Sticks und legen uns erst einmal ein Sammelverzeichnis für fhem an:

cd /var/media/ftp/uStor01
mkdir fhem
cd fhem

Sollte der erste Befehl nicht klappen, ist der USB-Stick wohl an einer anderen Stelle gemountet - ein df gibt Aufschluss, wo.

Jetzt besorgen wir uns Perl (dankenswerterweise vorkompiliert und mit allen wesentlichen Modulen bereitgestellt) sowie fhem:

wget http://fhem.de/fb7170/perl-5.6.2.tgz
wget http://fhem.de/fhem-5.1.tar.gz

entpacken:

tar -xvzf perl-5.6.2.tgz
tar -xvzf fhem-5.1.tar.gz

Praktischerweise ist in der Perl-Installation eine Datei vorhanden, die wir als Swap-Device für die Box nutzen können. Das Ganze ist natürlich erbärmlich langsam (USB 1.1!), leider führt kein Weg daran vorbei:

swapon /var/media/ftp/uStor01/fhem/perl/swapfile

Damit wir das nicht jedes mal machen müssen, wenn die Box startet, ist ein automatisches Einbinden beim Starten der Box sinnvoll. Freetz hat ja sein Webinterface auf fritz.box:81; hier gibt es unter Einstellungen / rc.custom die Möglichkeit, Kommandos beim Booten automatisch ausführen zu lassen.

<---------------------------- alt anfang-------------------------------->
Bei mir steht da

[ -f /var/media/ftp/uStor01/fhem/perl/swapfile ] && swapon /var/media/ftp/uStor01/fhem/perl/swapfile

<---------------------------- alt ende --------------------------------->

Hinweis: kommt die Meldung "Konfiguration in der aktuellen Sicherheitsstufe nicht verfügbar", hilft folgendes (auf der Shell eingeben!)

echo 0 > /tmp/flash/security
modsave

heisst, wenn das Swapfile gefunden wird (Stick steckt), dann aktiviere das auch. fhem selber möchte ich gerne (noch) manuell starten, das Swapfile brauche ich aber auch, wenn fhem nicht läuft (der Callmanager startet bei mir perl-Programme, die viel Speicher brauchen)...

Basisinstallation von fhem mit pgm2

Freetz läuft, Perl steht bereit, FHEM liegt vor. Machen wir uns an die Konfiguration. Eigentlich wird fhem mittels make install-pgm2 installiert, das wollen wir hier aber nicht (die Zielverzeichnisse stehen auf der FB so nicht zur Verfügung), aber wir können uns an die Zeilen aus dem Makefile halten:

(angenommen wird hier, dass fhem in /var/media/ftp/uStor01/fhem/fhem-5.1 entpackt wurde):

cd /var/media/ftp/uStor01/fhem/fhem-5.1       # eventuell anpassen!
cp -r webfrontend/pgm2/* FHEM
cp docs/commandref.html docs/faq.html docs/HOWTO.html FHEM
cp docs/*.png docs/*.jpg FHEM
cd examples; for i in *; do cp -r $i ../FHEM/example.$i; done
cd ..
cp examples/sample_pgm2 fhem.cfg
mkdir logs

soweit, so gut. Unsere fhem.cfg passen wir in etwa an wie folgt (nano fhem.cfg):

attr global logfile /var/media/ftp/uStor01/fhem/fhem-5.1/logs/fhem-%Y-%m.log
attr global modpath .                  # where our FHEM directory is
attr global port 7072                  # our TCP/IP port (localhost only)
attr global statefile /tmp/fhem.save   # where to save the state of the devices
attr global verbose 3                  # "normal" verbosity (min 1, max 5)

define CUL CUL /dev/ttyUSB0@38400 1234

define WEB FHEMWEB 8083 global

define WEBS FHEMWEB 8084 global
attr WEBS smallscreen

# Fake logfile, to access the global log
define Logfile FileLog /var/media/ftp/uStor01/fhem/fhem-5.1/logs/fhem-%Y-%m.log fakelog

define autocreate autocreate
attr autocreate autosave
attr autocreate device_room %TYPE
attr autocreate filelog /var/media/ftp/uStor01/fhem/fhem-5.1/logs/%NAME-%Y.log
attr autocreate weblink
attr autocreate weblink_room Plots

Hinweis: Ich hatte enorme Probleme - mein CUL empfing eifrig Daten, nur sendete er nichts. Mit der Umstellung auf "define CUL CUL /dev/ttyUSB0@38400 1234" ging es auf einmal, während "define CUL CUL /dev/ttyUSB0 1234" und "define CUL CUL /dev/ttyUSB0@9600 1234" den erwähnten Effekt brachten. Vielleicht hilfts jemandem.

Startscript

letztendlich basteln wir uns noch ein Startskript, welches das notwendige Kernel-Modul für CUL einbindet und den ganzen Kram startet:

nano fhem.sh

export dTSB=1212687845
export LD_LIBRARY_PATH='/var/media/ftp/uStor01/fhem/perl/lib'
export PERL5LIB='/var/media/ftp/uStor01/fhem/perl/lib:/var/media/ftp/uStor01/fhem/perl/lib/perl5:/var/media/ftp/uStor01/fhem/perl/lib/perl5/5.6.2'

insmod /lib/modules/2.6.13.1-ohio/kernel/drivers/usb/serial/usbserial.ko vendor=0x03eb product=0x204b

mkdir /tmp/fhem
cd /var/media/ftp/uStor01/fhem/fhem-5.1/var/media/ftp/uStor01/fhem/perl/bin/perl fhem.pl fhem.cfg

Bemerkung für die *nixer unter uns: ein chmod +x brauchen wir nicht, auf dem Stick ist alles +x

Das Skript jetzt starten (./fhem.sh) - und das Log beobachten (tail /var/media/ftp/uStor01/fhem/fhem-5.1/logs/NameDesLogfiles). Kommen Fehlermeldungen, dass es Probleme mit SIGirgendwas gibt, hilft erst einmal ein beherztes Auskommentieren der Zeilen 1757ff in fhem.pl (nano fhem.pl):

sub
SignalHandling()
{
  if($^O ne "MSWin32") {
#    $SIG{'INT'}  = sub { $sig_term = 1; };
#    $SIG{'TERM'} = sub { $sig_term = 1; };
#    $SIG{'PIPE'} = 'IGNORE';
#    $SIG{'CHLD'} = 'IGNORE';
#    $SIG{'HUP'}  = sub { CommandRereadCfg(undef, "") };

  }
}

Hier gibt es sicher elegantere Methoden - ich war nur zu faul mich zu bemühen zu verstehen, woran es hängt! Wenn jemand da eine Idee hat...

mittels telnet localhost 7072 oder mit dem Webbrowser auf http://fritz.box:8083/fhem sollte jetzt auf fhem zugegriffen werden können.

FHZ

(alles ungetestet, habe keine FHZ mit USB) ...

das Modul für die FHZ könnte sich mit

insmod /lib/modules/2.6.13.1-ohio/kernel/drivers/usb/serial/ftdi_sio.ko

laden lassen, die FHZ sollte dann unter

/dev/ttyACM0 

bereit stehen...

Autostart fhem

Beispielscript für rc.custom

Die Warteschleife ist aus einem Beispiel von http://www.zebradem.com/wiki/index.php

# Wait until we have a network connection.
# Script can be disabled by removing network cable
# At least one of the web sites must must respond to ping before we continue
SITE_1=web.de
SITE_2=www.google.com
while !(ping -c 1 $SITE_1>/dev/null) && !(ping -c 1 $SITE_2>/dev/null); do
   sleep 15
done

# Warten bis USB-Stick gemountet ist 
max=10
i=0
while [ $i -lt $max ]; do
if mount | grep " on /var/media/ftp/" > /dev/null; then
break
fi
let i=$i+1
sleep 30
done
# ENDE USB-Stick Warteschleife 
swapon /var/media/ftp/uStor01/fhem/perl/swapfile
/var/media/ftp/uStor01/fhem/fhem-5.1/fhem.sh

<---------------------------- alt anfang-------------------------------->
wer möchte, bastelt sich jetzt noch eine Zeile wie

[-f /var/media/ftp/uStor01/fhem/fhem.sh] && /var/media/ftp/uStor01/fhem/fhem.sh

(ungetestet; bei mir liegt das Skript nicht unter fhem-5.1!) in seine rc.custom (siehe oben), dann startet das ganze automatisch mit der Box.
<---------------------------- alt ende--------------------------------->

Meine Werkzeuge
Namensräume
Varianten
Aktionen
Navigation
Werkzeuge