PRESENCE-RemoteFritzbox

Begonnen von erwin, 27 Dezember 2013, 21:39:11

Vorheriges Thema - Nächstes Thema

erwin

Hi all,
Ich habe eine kleines add-on zum Presence-Modul gebastelt, dass dann sinnvoll zum Einsatz kommt, wenn auf der Fritzbox kein FHEM und Perl läuft und dennoch die PRESENCE Function genützt werden soll. Den code poste ich hier als zip file, die Beschreibung findet Ihr im Wiki unter: http://www.fhemwiki.de/wiki/Anwesenheitserkennung_-_Remote_Fritzbox.
Bitte um Feebback / Anregungen usw. in diesem Thread.

update Version 1.2: ein paar kleine Verbesserungen und eine neue Funktion: RemoteFritzBoxWeb
Damit kann man die Fritzbox per http abfragen, benötigt also keinen Telnet-Zugang und keinen code auf der Fritzbox. Nachteil: relativ langsam....

update Version 1.3: ein paar kleinere fixes und statt des Devicenames kann nun auch die MAC-Adresse angegeben werden. Also exakt wie im 73_PRESENCE.pm Modul. Ich konnte allerdings nicht mit FB-FW6.20 testen!

update Version 1.4: kleinere Fixes, Test mit FB-FW 6.20 auf 7390, Problem nach reboot der FB gefixed....

update Version 1.7: RemoteFritzBoxWeb Performance, Stabilität Verbesserungen, neue Funtionen - Details im Wiki

update Version 1.9: RemoteFritzBoxWeb: startup verbessert,  OSX compatibility, neue Funtionen - Details im Wiki

have fun
erwin
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...

borsti67

Hallo Erwin,

danke, das sieht sehr interessant aus. Ich denke, ich werde mir das mal zu Gemüte führen.

Aber sehe ich das richtig, dass man pro überwachtem Gerät einen PRESENCE braucht? Ich habe nämlich neben dem Handy noch andere (eBoor-Reader, Laptop...) mit definiert als Anwesenheitserkennung; das gibt noch eine gewisse Redundanz, falls mal beim Handy das WLAN abgeschaltet oder es ganz aus ist. Das läuft bei mir über EINEN Funktionsaufruf. Ich bin mir nicht sicher, ob Deine Variante nicht mehr Last produziert...?

Gruß
Torsten
cu/2
Borsti
---
FHEM 5.8 auf Synology DS211j (bis 11/17) | FHEM 6.0 auf Raspi Zero W (bis 11/20) | FHEM 6.2 als VM in Synology DS1815+ (ab 11/20)

erwin

Zitat von: borsti67 am 27 Dezember 2013, 22:56:31
Aber sehe ich das richtig, dass man pro überwachtem Gerät einen PRESENCE braucht?
Hi Torsten,
die Antwort ist Ja und Nein, je nachdem wie man es sieht.....
JA es braucht pro überwachtem Gerät eine FHEM- PRESENCE definition - Das ist durch die Implementation des PRESENCE Modul so definiert.
NEIN Die Lösung braucht nur einen daemon für alle überwachten Devices, und nur einmal das shell-script auf der Fritzbox. Die gesamte Kommunikation für alle PRESENCE function {RemoteFritzBox(".....")} definitionen läuft über eine Instanz 99_RFritzbox.pm ->RFritzBoxScan.pl -> shellscript auf der Fritzbox ... und wieder retour. Das zeitintensive Telnet connect, Login, usw. wird nur einmalig beim starten des Daemons gemacht, die Session bleibt dann für alle nachfolgenden request offen. Das hat nach meinen Messungen bisher die meiste Perfomance gekostet.
l.g. erwin
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...

Kristof

Hallo Erwin!

Mit großer Begeisterung habe ich deinen Post gelesen - da hast du ja fleissig in allen möglichen Ecken programmiert. Ich bin leider ein Linux-Anfänger und Perl-Laie (aber ich arbeite daran  ;))
Was du in deine Installationsanleitung noch einfügen könntest wäre, dass man das Perl-Modul Net::Telnet installieren muss.
Ich habe das auf meinem Raspberry Pi mit Raspi so gemacht:

sudo perl -MCPAN -e shell

und dann in der CPAN-Shell:

install Net::Telnet

und schon klappte das. Vorher hatte ich nämlich ein "Can't locate Net/Telnet.pm in @INC [...]"
Leider hänge ich jetzt am nächsten Punkt. Der Aufruf von RFritzBoxScan.pl liefert:
RFritzBoxScan: server waiting for client connection on port 7777
RFritzBoxScan: error during Fritzbox login: error after sending password: pattern match read eof


Daraus ergeben sich für mich ein paar Fragen:
1.) wo ist der richtige Platz für RFritzBoxScan? Im FHEM-Verzeichnis? Oder eins darüber, im fhem (also quasi im modpath)?
2.) am Port (7777) muss ich nix ändern? Hat also nix mit dem Telnet-Port zur Fritzbox zu tun?
3.) wenn ich mich per telnet auf der FB einlogge, dann werde ich nur nach einem Passwort gefragt, nicht nach einem User?! (Habe eine FB7270) -> was trage ich dann in die credentials.cfg ein?

Schon mal ein "Danke" vorab,

Kristof

erwin

#4
Hallo Kristof!

...na dann versuchen wir's mal:
Zitat von: Kristof am 03 Januar 2014, 01:31:26
Was du in deine Installationsanleitung noch einfügen könntest wäre, ....
Sorry, werde ich im wiki nachtragen, das NET::Telnet Modul habe ich schon soo lange wegen anderer Funktionen installiert, dass ich das schon als gegeben angenommen habe....
Ich hab's am RPI so installiert:
sudo apt-get install libnet-telnet-perl
Zitat von: Kristof am 03 Januar 2014, 01:31:26
Der Aufruf von RFritzBoxScan.pl liefert:
RFritzBoxScan: server waiting for client connection on port 7777
RFritzBoxScan: error during Fritzbox login: error after sending password: pattern match read eof

Das ist schon mal grundsätzlich ok, und ich habe nur 3 mögliche Erklärungen dafür:

  • das passwort stimmt nicht bzw. es gibt einen Fehler beim einlesen des config files
  • der prompt, den dir Fritzbox beim login liefert ist anders, als ich das vorgesehen habe. Ich habe diesen code vor ca. einem Jahr and einer 7270 ohne user (also exakt so wie in deiner definiton) gestestet, und es funktionierte. Allerdings hab ich jetzt keine 7270 mehr, und meine 7390 muss ich (aus anderen Gründen) mit user/passwort betreiben
  • Deine Fritzbox braucht nach der Eingabe vom Passwort zu lange, bis der prompt # kommt. Das hatte ich in der Vergangenheit mit der 7270 relativ oft, das das login immer länger dauer, je länger die FB läuft.... Abhilfe schaft ein Fritzbox reboot.
Zitat von: Kristof am 03 Januar 2014, 01:31:26
Daraus ergeben sich für mich ein paar Fragen:
1.) wo ist der richtige Platz für RFritzBoxScan? Im FHEM-Verzeichnis? Oder eins darüber, im fhem (also quasi im modpath)?
Im Verzeichnis, wo alle anderen FHEM Module 00_xxx.pm - 99_yyy.pm sind
Zitat von: Kristof am 03 Januar 2014, 01:31:26
2.) am Port (7777) muss ich nix ändern? Hat also nix mit dem Telnet-Port zur Fritzbox zu tun?
nix ändern, das ist die Verbindung zwischen 99_RFritzBox.pm und RFritzBoxscan.pl
Zitat von: Kristof am 03 Januar 2014, 01:31:26
3.) wenn ich mich per telnet auf der FB einlogge, dann werde ich nur nach einem Passwort gefragt, nicht nach einem User?! (Habe eine FB7270) -> was trage ich dann in die credentials.cfg ein?
was beliebiges beim user und dein passwort.

um der sache näher zu kommen, gibts 2 Möglichkeiten:
Du definierst in der FB einen user /passwort - siehe menue: system-Fritz!Box-Kennwort
du versuchst die angehängte RFritzBoxScan1.pl - hab nix im code geändert, nur liefert mehr debug output....
Der Output sollte dann ungefähr so aussehen:
RFritzBoxScan: server waiting for client connection on port 7777
FBlogin-parameters=192.168.5.251|erwin|mypassword|
prematch | pmatch= password|: |
sending password


l.g. erwin
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...

Kristof

Treffer!
Hi Erwin,
zuerst mal ein dickes DANKE für die rasche Antwort. Im Gegenzug habe ich dir einen kleinen Bug entdeckt: mein FB-Passwort enthält ein "@" - und der Parser kommt damit offenbar nicht klar, denn es wird nur der Teil vor dem @ übertragen (gleiches beim Username).
Ich habe das PW geändert und nun klappt es:

sending password
RFritzBoxScan: Fritzbox login ok


Ich hätte aber eigentlich schon ganz gerne wieder meinen Klammeraffe drin... Zudem ist die Frage, wie es mit anderen Sonderzeichen aussieht?! Was ich sagen kann: ein "+" geht offenbar problemlos.

LG
Kristof

Kristof

Hach, zu früh gefreut, es klappt noch immer nicht vollständig.
Im Logfile (habe "Verbose 5" eingetragen) steht:

2014.01.03 12:03:38 5: RemoteFritzBox Server-Task-status= 0
2014.01.03 12:03:38 3: RemoteFritzBox Server-Task  (re)started: Status=-1
2014.01.03 12:03:43 1: RemoteFritzBox cannot connect to Server Invalid argument
2014.01.03 12:03:43 2: PRESENCE: error while processing device HandyKK_AN - unexpected function output (expected 0 or 1): cannot connect to the server Invalid argument
2014.01.03 12:05:43 5: RemoteFritzBox Server-Task-status= 0
2014.01.03 12:05:43 3: RemoteFritzBox Server-Task  (re)started: Status=-1
2014.01.03 12:05:48 1: RemoteFritzBox cannot connect to Server Invalid argument
2014.01.03 12:05:48 2: PRESENCE: error while processing device HandyKK_AN - unexpected function output (expected 0 or 1): cannot connect to the server Invalid argument


Manuelles Aufrufen von ./RFritzBoxScan.pl /opt/fhem/credentials.cfg
bringt:
RFritzBoxScan: server waiting for client connection on port 7777
RFritzBoxScan: Fritzbox login ok

Die credentials.cfg müsste also passen.

Ein ls -la *RFritz* im Verzeichnis /opt/fhem/FHEM liefert
-rw-r--r-- 1 fhem root 3299 Dez 27 21:01 99_RFritzBox.pm
-rwxr-xr-x 1 fhem root 4755 Dez 27 20:27 RFritzBoxScan.pl


Meine Einträge in der fhem.cfg lauten:
define HandyKK_AN PRESENCE function {RemoteFritzBox("kk-Nokia")} 120 120
define RemoteFritzBox dummy
attr RemoteFritzBox verbose 5

"kk-Nokia" ist der Name meines Handys in der Fritzbox.

Hast du eine Idee, was ich falsch mache?

Gruß,
Kristof



erwin

#7
Hi Kristof,

ich bin noch am forschen, wie ich das mit dem @ im passwort lösen kann, es sieht so aus, als ob das Net::Telnet modul damit Probleme macht....
z.B wenn ich mein passwort: geh@eim so in die credentials.cfg schreibe: "geh\@eim", dann kommt es auch richtig im programm an, allerdings verwirft offensichtlich das Net:Telnet das wieder....

Zu deinen anderen Problemen:

  • versuch mal user passwort ohne @  - nach der Änderung in der credentials.cfg unbedingt ein reload 99_RFritzBox.pm machen
(oder FHEM restart)
  • starte den
./RFritzBoxScan.pl /opt/fhem/credentials.cfg per hand und lass ihn laufen, warte auf weitere meldungen, wie z.B:
RFritzBoxScan: connection from 127.0.0.1:54654
RFritzBoxScan: ..from FHEM received data: Erwin-Galaxy
RFritzBoxScan: ..sending to Fritzbox: Erwin-Galaxy 0
RFritzBoxScan: ..cmdresult: RFritzBox: Erwin-Galaxy 4 0
RFritzBoxScan: ..update cache for Erwin-Galaxy 4
RFritzBoxScan: ..result to fhem: 0


falls sich RFritzBoxScan.pl nicht starten lässt: sudo killall RFritzBoxScan.pl

Es scheint als ob die RFritzBoxScan.p oder credential.cfg nicht gefunden wird... beim automatischen start.
Was steht in deiner FHEM config unter: global-modpath ?
l.g. erwin
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...

Kristof

Heureka!

Ich hatte beim Benutzername noch ein "@" drin, und das hat das Programm irgendwie aus dem Tritt gebracht. Jetzt steht da "blabla" und so wie's aussieht funktioniert jetzt alles einwandfrei  :)
Mit anderen Worten: weder um Benutzername noch im Passwort dürfen Klammeraffen vorkommen, dann tut alles so wie's soll.

Danke für deinen Support. Und wenn du 'ne Lösung für das @-Problem hast und/oder es ein Update deiner Skripte gibt, dann lass mich das wissen ;-)
Auf jeden Fall eine super Sache! Deine Skripte für die Presence-Überwachung in Kombination mit fb_callmonitor mit auf das raspberry pi kopiertem Telefonbuch, so spare ich mir die ganze FHEM-Installation auf der Fritzbox  :)

Gruß und Danke,

Kristof

erwin

HI Kristof,

@ Problem in user / passwort variable

Also bei mir gehts so:
in der credentials.cfg jeweils vor dem @ ein backslash \ einfügen!!!
als zb Passwort "gehei@m" so schreiben "gehei\@m"
Perl interpretiert das @ als arrary variable......

l.g. erwin
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...

DaSh86


caldir65

Hallo,

ich habe hier zwei FB am Start, eine 7390 als regulären Router mit WLan etc., und eine gefreetzte 7240, die u.a. das WLan im Obergeschoß übernimmt - mit gleichen WLan-Parametern. Wie kann ich jetzt diese Remote-Presence-Anbindung dazu bringen, beide WLan-Segmente zu überwachen? In wie weit wird davon eine evtl. konfigurierte Nachtschaltung beeinflusst?

Gruß, Christoph
Alte Techniker-Regel: "kaum macht man es richtig, funktioniert es auch"
------
Dell Wyse5070 ThinClient 16GBRam, 128GB SSD, Lubuntu 24.04.01LTS, fhem (aktuell), debmatic, Homematic-Devs, ConBee II und deConz, viele Shellys, Rademacher, NextCloud-Anbindung, FullyKioskBrowser+FUIP uvm.

erwin

Hi Christoph,

sorry, ich kenne die 7240 überhaupt nicht, kann dazu nichts sagen.
Auch hast du nicht geschrieben, wo / auf welcher Box FHEM läuft und auf welcher nicht, und ob in der 2ten FB das WLAN als Repeater definiert ist....

kannst du einen Versuch unternehme, die Inst. lt. Wiki bis zu dem Punkt:
kopieren von Rpresence.sh in die Fritzbox
und das Ergebnis des Tests posten?
l.g. erwin
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...

caldir65

Hallo Erwin,
die 7240 ist im Prinzip eine abgespeckte 7270 ... Sobald ich schaffe, werde ich es mal testen.

Gruß, Christoph

Gesendet von meinem GT-I9305 mit Tapatalk

Alte Techniker-Regel: "kaum macht man es richtig, funktioniert es auch"
------
Dell Wyse5070 ThinClient 16GBRam, 128GB SSD, Lubuntu 24.04.01LTS, fhem (aktuell), debmatic, Homematic-Devs, ConBee II und deConz, viele Shellys, Rademacher, NextCloud-Anbindung, FullyKioskBrowser+FUIP uvm.

caldir65

Hallo Erwin,

fhem läuft auf einem Raspi - auf der FB 7390 habe ich mehr Probleme als nutzen gehabt, daher habe ich den fhem-Server auf einen eigenen Rechner umgezogen ...

Die zweite Box (7240) ist nicht als Repeater im eigentlichen Sinne eingerichtet, sondern als eigenes aber identisches wLan-Netzwerk, da gleichzeitig das Ding als Hub  für's Ethernet fungiert, und da gab es sonst Probleme ... Ich denke, für eine saubere Funktion der Presence-RemoteFritz in diesem Fall wird eine Installation auf beiden Boxen notwendig sein, wobei ich dann wohl beide abfragen muß, so in der Art "anwesend auf FB1 oder FB2? dann ...

Zudem ist die Box gefreezt, d.h. die originale FW ist etwas "kastriert, um Speicher frei zu machen für andere Funktionen - ich muß mal schauen, ob Dein Skript grundsätzlich noch darauf in geplanter Weise funktioniert.

Ich werde mal testen und weiter berichten ...

Gruß, Christoph
Alte Techniker-Regel: "kaum macht man es richtig, funktioniert es auch"
------
Dell Wyse5070 ThinClient 16GBRam, 128GB SSD, Lubuntu 24.04.01LTS, fhem (aktuell), debmatic, Homematic-Devs, ConBee II und deConz, viele Shellys, Rademacher, NextCloud-Anbindung, FullyKioskBrowser+FUIP uvm.