FHEM auf Fritz!Box 7490 (FW6.9x) mit allen Perl Modulen

Begonnen von adn77, 12 November 2017, 00:56:26

Vorheriges Thema - Nächstes Thema

dirkh

Hallo,

ich habe Fhem Freetz Web GUI und das Startup Skript noch um einen Demo-Modus und eine configDB Modus erweitert.
Das gesamte Fhem oder die Fhem Konfiguration wird auch jetzt von einem externen Medium genommen, damit die Logs nach einem Neustart erhalten bleiben.

Klappt es bei Euch oder seit ihr noch beim Ausprobieren?

Gruß, Dirk

mgrimm86

Hi Dirk,

bei mir klappt es soweit. Allerdings bin ich genau darüber gestolpert, dass Config und Logs intern liegen und nach einem Neustart der Fritzbox (z.B. nach Stromausfall) weg sind.
Ich habe dann FHEM über die rc.external gestartet:
cd /mod/external/usr/lib/fhem
perl fhem.pl fhem.cfg

und das Logfile in der fhem.cfg explizit auf external gespeichert:
attr global logfile /mod/external/usr/lib/fhem/log/fhem-%Y-%m.log
Damit funktionierts ganz gut.

Leider funktioniert die Freetz WEB GUI für FHEM nicht richtig (Siehe Bild im Anhang). Auch mit deiner neuen Version, die ich gestern erfolgreich gebaut habe, läuft es nicht richtig.
In jedem Menüeintrag lese ich den Fehler:
*** error: language not set ***
Muss ich das irgendwo einstellen?

Aktuell versuche ich den CUL zum Laufen zu bringen. Habe mir in der neuen Version diverse USB Treiber mit gebaut, die vorher gefehlt haben. Schaumer mal...

Viele Grüße
Micha

mgrimm86

#17
Hi Dirk,

meine nanoCULs haben einen CH341 Chipsatz, zu dem wohl aktuell kein Treiber für die FB7490 existiert.
Ich habe gerade noch einen Jeelink Stick mit FTDI ausprobiert - der wird einwandfrei erkannt.

Bei der Definition in FHEM kommt aber folgender Fehler:
2017.12.10 11:16:18 3: Opening myJeeLink device /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A103R3GF-if00-port0
2017.12.10 11:16:18 1: Can't locate Device/SerialPort.pm in @INC (you may need to install the Device::SerialPort module) (@INC contains: . /usr/lib/perl5/site_perl/5.26.1/mips-linux /usr/lib/perl5/site_perl/5.26.1 /usr/lib/perl5/5.26.1/mips-linux /usr/lib/perl5/5.26.1 ./FHEM) at ./FHEM/DevIo.pm line 390.


Es scheint also das Perl Modul SerialPort zu fehlen. Kann man das noch nachträglich installieren oder müssen wir das Build Script anpassen und neu bauen?

EDIT: Für das Modul FRITZBOX fehlt außerdem...
Perl modul URI::Escape is missing

Danke und Gruß,
Micha

adn77

Zitat von: mgrimm86 am 10 Dezember 2017, 11:23:45
Es scheint also das Perl Modul SerialPort zu fehlen. Kann man das noch nachträglich installieren oder müssen wir das Build Script anpassen und neu bauen?

Das PerSerialPort Modul ist wahrscheinlich recht schwierig zu portieren (da Hardware nah).
Ich glaube, ser2net (https://wiki.fhem.de/wiki/CUL_ueber_Netz) ist immernoch der "richtige" Weg dafür.

Alex

mgrimm86

OK. ser2net scheint zu funktionieren...

Was mache ich mit den anderen fehlenden Modulen:
Modul FRITZBOX:
Perl modul URI::Escape is missing
Modul STV (Samsung TV)
017.12.14 21:14:27 3: [STV] You are using a deprecated MAC detection mechanism using ifconfig.
2017.12.14 21:14:27 3: [STV] Please install Pearl Modules libnet-address-ip-local-perl and libio-interface-perl

@Dirk: Hast du eine Idee, warum die Freetz Seite bei mir nicht richtig läuft?

Danke euch,
Gruß Micha

wolpers0815

Hallo zusammen,

erst einmal ein großes Kompliment an Dirk für die Integration von FHEM und Perl in Freetz! Danke! Das Bauen hat problemlos funktioniert.
Jedoch taucht FHEM bei meiner 7490 nicht im Freetz Web-Interface auf. Aufgrund der Größe hatte ich sowohl Perl als auch FHEM als external eingestellt. external ist bei mir zwar kein USB-Stick sondern der sogenannte interne Speicher (/var/media/ftp/external). Aber der bietet für Perl und FHEM ausreichend Platz. Unter /var/media/ftp/external/usr/lib befinden sich auch tatsächlich Perl und FHEM. Einzig und allein fehlt FHEM im Freetz-Web-Interface. Was könnte ich falsch gemacht haben?

Vielen Dank und viele Grüße!

dirkh

#21
Guten Abend,

Das CUNX Modul (CUL über Netz) läuft bei mir schon.

Die Freetz FHEM web CGI /usr/lib/cgi-bin/fhem.cgi wurde nicht richtig gebaut, wenn Du sie manuell vom Freetz Verzeichnis auf die Box kopierst, musst Du die gebaute Version nehmen. Die liegt im Build Verzeichnis build/modified/external/usr/lib/cgi-bin/fhem.cgi , es sollte nach dem Bau Prozess kein "$(lang de:"Starttyp" en:"Start type")" drin stehen.
Wenn ja dann wurde sie im Freetz Build Prozess nicht gebaut, d.h. make fhem-distclean durchführen und neubauen und die External transferieren und entpacken.

Die Perl Module libio-interface-perl und URI::Escape sind im perl Patch hinzugefügt, das Modul libnet-address-ip-local-perl ist schwierig zu integrieren, da es das Modul::Build erfordert, welches sich nicht cross compilieren lässt.
Das kann man aber auch auf der Box bauen und das andere dann anschließend. Ein Target-Compiler Packet ist auch unter https://github.com/dirk-dhu/freetz verfügbar.

Ich habe in der Freetz-FHEM Web Seite die Option für das Log-Verzeichnis eingebaut, das dann auf ein externes Verzeichnis zeigen könnte.

Gruß,

Dirk

PS Habe vor kurzem festgestellt, dass die '.language' Dateien nicht unter Versionskontrolle waren und weil, sie einen Punkt im Namen haben auch nicht durch git als fehlend angezeigt werden, d.h. seit März klappt es erst mit dem Freetz Web Interface für FHEM

my-engel

Hallo,

kennt jemand das Projekt TBflex-3.2 ?
Man hat hier eine Box mit Freetz und der Toolbox Flex geflasht.
Später wenn die Box dann läuft konnte man FHEM einfach nachinstallieren.
Auch ein Backup und Restore sind Problemlos per GUI möglich und funktioniert tadellos.
Andere Pakete zu installieren, ist ebenfalls möglich.
Ich verstehe überhaupt nicht, warum dieses Projekt eingeschlafen ist und nicht weiterentwickelt wird.
Vielleicht wären hier auch nachträgliche Installationen wie Python usw. möglich.

MfG Uwe

dirkh

hier noch mal eine Zusammenfassung.

man braucht perl und fhem, beides gibt es mit:
git clone https://github.com/dirk-dhu/freetz.git freetz-devel
Mit folgendem Befehl kann ein Update bei Veränderungen gezogen werden:
git fetch; git reset —hard origin/master
Einen Patch kann man durch das Klicken auf den gewünschten Commit, welcher unter der URL:
https://github.com/dirk-dhu/freetz/commits/master
zu finden ist, erstellen. Dazu muss in der Adress-Zeile hinter dem SHA Wert .patch angehangen werden.

Beides sollte man am besten als externals bauen.
In der Freetz Bau-Konfiguration für Perl kann man unter extra zusätzliche Packete angeben, aber es müssen die Abhängigkeiten beachtet werden.
Folgende zusätzlichen CPAN Packete:
Pod::Simple IO::Socket::IP Locale::Codes IO::Socket::SSL URI::Escape IO::Interface XML::Simple XML::SAX::Base XML::NamespaceSupport XML::SAX XML::Parser XML::SAX::Expat Data::UUID HTTP::Cookies IO::HTML HTTP::Negotiate Net::HTTP HTTP::Message HTTP::Date Try::Tiny HTTP::Daemon WP::MediaTypes SOAP::Lite Class::Inspector XML::Parser::Lite Crypt::Rijndael Net::Telnet Encode::Locale
sind schon enthalten.
Wenn man Apache2 auch benutzen will, gibt es dort für Fhem eine vorkonfigurierte Proxy Seite mit Passwort-Schutz. Dazu muss in der myconfig die fhem group mit entsprechendem Apache2 Web-Benutzer hinzugefügt werden.

Das fhem Packet enthält ein start script, was für freetz angepasst ist hnd vorallem die nötigen Links und rechte setzt, mit dem Freetz cgi kann man kleinere Anpassung durchführen.

fhcm

@dirkh: Müsste jetzt wirklich jeder mitbekommen haben. Lese verschieden Foren und damit diesen Beitrag nun schon zum VIERTEN mal

metty

Hallo,
habe Image gebaut bekomme aber beim Versuch Fhem zu starten folgende Fehlermeldungen:
chmod: /mod/etc/fhem/FHEM/FhemUtils/uniqueID: No such file or directory
/mod/etc/init.d/rc.fhem: line 655: start-stop-daemon: not found
Starting FHEM - Home automation ... mode=demo ... failed.
Kann jemand mal bitte helfen.
Danke MfG

dirkh

Hallo,

Der start-stop Daemon von den Busybox Einstellungen war nicht selektiert, ein Update
git fetch; git reset --hard origin/master
behebt diesen Fehler in den Abhängigkeiten.

Viel Spaß,
Dirk

metty

#27
Danke, werde es heute Abend mal testen.
MfG



metty

Hallo,
also ich gebe jetzt mal meinen Senf dazu. Fhem läuft, gebaut wie von dirkh beschrieben mit git fetch; git reset --hard origin/master
fhem, perl, ftdi Treiber mit rein
dann in Freetz ->freetz (web menü )-> modules->
cat /var/tmp/flash/mod/modules
usbserial.ko
ftdi_sio.ko
usbserial
ftdi_sio
nanoCUL (Ftdi Chipsatz ) per USB an der Fritzbox, angebunden über ser2net-> ser2net.conf-> 2000:raw:0:/dev/ttyUSB0:38400 NONE 1STOPBIT 8DATABITS HANGUP_WHEN_DONE , in fhem  define cul CUL<ip>:2000 0000
Funktioniert alles bestens, vielen Dank an euch alle.

make

#29
Hallo allerseits,

ich bin gerade gezwungenermassen dabei eine FHEM-Installation von einer nun defekten 7390 auf eine 7490 umzuziehen.
Auf der 7490 läuft der aktuelle Freetz-Trunk, mit FritzOS 7.0 RC2 als Unterbau.

FHEM und Perl installiere ich über External nach /var/media/ftp/external also in den Internen Speicher der Box.
Optimal wäre die Installation auf einem USB-Stick, aber da hat external anscheinend Probleme mit der neuen FritzOS-Version.

Ich scheitere an folgenden Problemen:
a) im Freetz-UI gibt es keinen Menü-Eintrag für FHEM. Auch bei der Installation der External-Datei wird der "FHEM-Dienst" nicht gestartet.
b) wenn ich auf meine alte Installation mit auf die neue Perl-Version angepassten Pfadangaben zurück greife, steigt fhem.pl sofort aus, weil es Socket.pm nicht im konfigurierten Include-Pfad finden kann. Das ist soweit richtig, anders als bei der Original-Version von AVM scheint die neue Perl-Version 5.27.5 kein Socket.pm mehr zu beinhalten.

Ich habe quasi keine Ahnung von Perl und wäre für jeden Tipp, wie ich FHEM doch noch auf der 7490 zum Leben erwecken kann, dankbar.

Edit
Der fehlende Menüeintrag war auf verloren gegangenen Dateirechte für die beiden CGI-Dateien zurück zu führen. Ein chmod auf die betreffenden Dateien unter make/fhem/files/root/... hat hier Abhilfe geschaffen.
Die fehlende Socket.pm ist möglicherweise auf die hardkodierten absoluten Pfade im GIT-Repository von @DirkH zurückzuführen, die in meiner Buildumgebung nicht existieren. Diese hardkodierten Pfaden (/home/freetz/freetz-trunk/...) sind in 2 der Patch-Dateien unter make/perl/patches/ enthalten. Nach dem Anpassen auf die Gegebenheiten meiner Buildumgebung werden die fehlenden Perl-Module mitgebaut.
Die nächste Hürde, die CUL-Erkennung bzw das fehlende SerialPort, konnte ich mit ser2net und dem Eintragen von cdc_acm in die zu ladenden Modules lösen.