Ein Modul, um die Werte eines SpeedPortHybrid-Routers auszulesen.
Kernroutine ist die von justme1986 hier (https://forum.fhem.de/index.php/topic,38463.msg306821.html#msg306821) beschriebene, um json-Daten rekursiv in fhem-Readings zu bekommen. Top!
bgewehr hatte daraus das Modul 70_JSONREADINGS.pm für http:// entwickelt.
SpeedPortHybridReadings macht eigentlich dasselbe. Aber um der Flut der möglichen Readings Einhalt zu gebieten, waren Auswahlmöglichkeiten einzubauen.
Voraussetzungen:
- ein installiertes node.
- l33tport von https://github.com/melle/l33tport (https://github.com/melle/l33tport).
- die node-Module sjcl und commander.
auf RaspberryPi
node installieren:
cd ~/
wget https://nodejs.org/download/release/v0.10.0/node-v0.10.0-linux-arm-pi.tar.gz
cd /usr/local
sudo tar xzvf ~/node-v0.10.0-linux-arm-pi.tar.gz --strip=1
Ordner anlegen:
sudo mkdir /opt/fhem/scripts
l33tport holen:
sudo cd /opt/fhem/scripts
sudo wget https://github.com/melle/l33tport/archive/master.zip
sudo unzip master.zip
IP-Adresse und Passwort edieren:
sudo nano l33tport-master/l33tport.js
sjcl und
commander installieren:
sudo npm install sjcl
sudo npm install commander
Rechte anpassen mit z.B.:
sudo chown -R fhem:dialout /opt/fhem/scripts
Nutzung:
define MySpeedPort SpeedPortHybridReadings /opt/fhem/scripts/l33tport-master/l33tport.js
Nach der Definition ist das Attribut
fieldnames noch unbelegt.
Wenn man alles auswählt wird die Readingsliste sehr, sehr lang.
set active yes/no habe ich eingebaut, um im Frontend des Routers arbeiten zu können ohne ständig 'rausgeworfen zu werden wenn fhem Daten holt.
Ginge auch mit
attr disable 1, erforderte dann aber Scrollen.
Wenn
active gleich
no können mit
get data dennoch Readings aktualisiert werden.
Falls die node-Module nicht gefunden werden, das Attribut
nodeModules mit dem Pfad dorthin füttern.
Gruß
Hans
Ich habe das Modul mal bei mir installiert, bekomme es aber leider nicht zum laufen. :(
Ich bekomme im Log die Meldung, daß sjcl nicht gefunden wird:
Error: Cannot find module 'sjcl'
at Function.Module._resolveFilename (module.js:339:15)
at Function.Module._load (module.js:290:25)
at Module.require (module.js:367:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (/opt/fhem/scripts/l33tport.js:22:12)
at Module._compile (module.js:413:34)
at Object.Module._extensions..js (module.js:422:10)
at Module.load (module.js:357:32)
at Function.Module._load (module.js:314:12)
at Function.Module.runMain (module.js:447:10)
module.js:341
sjcl und commander sind aber (global) installiert. Auf der Konsole aufgerufen (als User fhem) funktioniert das Skript:
fhem@raspberrypi:~/scripts$ node ./l33tport.js -o json -f module
{"main_system":"Linux","main_system1":"3.4","main_system2":"11","xDsl":"B2pv6F039g1.d24m","SIP":"V300R003C15B020T088","DECT":"3.55.2","FXS":"zarlink_API-Lite_P220","USB":"2.06","TR_069":"1.3","TR_064":"1.0","media_server":"2.0","SAMBA":"3.0.37","FON_stack":"2.0.12.0","lte":"H1331.11.994.13.112d","voip":"1.04","wlan":"6.37.14.4803.cpe4.14L04.0","web":"2.4.61","coova_chilli":"1.2.6","doc_version":"V100R001_01"}
Hier noch ein list vom Modul:
Internals:
ACTIVE yes
CFGFN
DEF /opt/fhem/scripts/l33tport.js 600
INTERVAL 600
NAME SpeedPort
NODE_PATH /usr/bin/node
NR 330
PATH /opt/fhem/scripts/l33tport.js
STATE enabled
TYPE SpeedPortHybridReadings
UPDATED 2016-06-06 22:31:51
Readings:
2016-06-06 22:31:41 state enabled
Attributes:
delay 600
fieldnames DECTStation,LAN,Overview,SecureStatus,Status,dsl,hsdelmobil,lteinfo,speed,wlan
group Internet
icon it_router
room System
verbose 5
Wo könnte der Fehler liegen?
Versuch's du es bitte erneut mit der Datei aus dem 1. Post? Habe eine geänderte Version eingestellt und ein Attribut nodeModuls hinzugefügt, um den Pfad zum Modulordner angeben zu können.
Etwas Logging sollte ich auch noch einbauen....
Gruß
Hans
Danke, das war's. Nachdem ich den Pfad zu den Modulen gesetzt habe, klappt es auch. Jetzt muß ich erstmal nen Überblick über die ganzen Readings kriegen. ;)
Danke für dieses tolle Modul!!!
Ich habe es mal aktiviert.
Wenn ich alle fieldnames aktiviere hören die Readings ja gar nicht mehr auf 8) :D
Meine Frage ist nun, welche Readings nutzt ihr eigentlich selber?
Welche sind sinnvoll?
Man sucht sich ja dusselig wenn man die gesamte Liste durchschaut.
Für mich war bis jetzt nur die LTE Empfangsstärke interessant.
Habt ihr noch ideen welche Readings sinnvoll sind um die in Tablet UI einzubinden!?
Leider kann man nicht auswerten welche Telefonnummer gerade anruft. (wie bei der Fritzbox)
Viele Grüße Thomas
Hi,
ich versuche das Modul gerade zum laufen zu bekommen, aber leider scheint es mit meiner Perl Version (Debian Testing / Stretch) ein Problem zu geben:
Experimental each on scalar is now forbidden at ./FHEM/70_SpeedPortHybridReadings.pm line 242.
Perl Version 5.24.1 scheint das Problem zu sein.
Kenne mich leider mit Perl so gut wie garnicht aus, hat jemand eine Idee?
Kann ich am System was ändern (außer Downgrade) oder kann man das Modul ändern, ist das ggf. nicht mehr nutzbar ab 5.24, was da in Zeile 242 genutzt wird?
Zeile 242 ist bei mir:
while( my ($key,$value) = each $ref)
LG Christian
Hallo,
Kannst du bitte die angehängte Version testen?
Habe selber nur 5.18.2.
Gruß
Hans
@Thomas
Ich muß gestehen, dass ich es selber kaum nutze. Ich hatte gelesen, dass der Router (oder die firmware?) ziemlich grottig sein soll.
Etliche Benutzer starten ihn wohl täglich neu und deswegen habe mich nicht weiter damit beschäftigt, sondern sofort die alte, schon konfigurierte und von fhem unterstützte, FritzBox dahintergehängt.
In dieser Kombination läuft es sei einem guten Jahr sehr gut.
Aber schon traurig hier auf'm Land :-X. Die einzige Möglichkeit eine aktzeptable Gechwindigkeit zu bekommen >:(
Gruß
Hans
Zitat von: Hans Franz am 09 Oktober 2016, 02:46:50
@Thomas
Ich muß gestehen, dass ich es selber kaum nutze. Ich hatte gelesen, dass der Router (oder die firmware?) ziemlich grottig sein soll.
Etliche Benutzer starten ihn wohl täglich neu und deswegen habe mich nicht weiter damit beschäftigt, sondern sofort die alte, schon konfigurierte und von fhem unterstützte, FritzBox dahintergehängt.
In dieser Kombination läuft es sei einem guten Jahr sehr gut.
Aber schon traurig hier auf'm Land :-X. Die einzige Möglichkeit eine aktzeptable Gechwindigkeit zu bekommen >:(
Gruß
Hans
Hallo Hans, also ich nutze den Speedport Hybrid nun seit knapp einem Jahr und hatte wirklich noch keinerlei Probleme. Ich musste ihn noch nie Neustarten. Und die Kombi aus DSL und LTE läuft bei mir echt super. Aus meiner 2000Ram Leitung habe ich nun eine stetige 45000er Geschwindigkeit ohne Abbrüche!
Mein System besteht aus denn Speedport Hybrid sowie dem angeschlossen Telekom ISDN IP Adapter. An diesem befindet sich meine ISDN Telefonanlage.
Leider kann ich damit im Zusammenhang mit deinem Modul wohl keine Anruflisten loggen!? Oder gibt es dafür eine Möglichkeit?
Wie hast du das ganze mit einer Fritzbox gelöst? Ich habe mich damit noch nicht auseinander gesetzt. Könnte ich sozusagen den Hybrid nur als Empfangsgerät nutzen dann dort per LAN eine fritzbox anschließen die mein WLAN aussendet sowie das Telefon ISDN Signal direkt an meine ISDN Anlage gibt ohne das ich den Telekom ISDN IP Adapter noch benötige?! Dann könnte ich das FHEMREMOTE Fritzbox Modul nutzen und die Telefonnummern abfangen?!
Stimmt das?
Viele Grüße
Thomas
Hallo Thomas,
vielleicht hilft dir diese Anleitung (http://www.lubensky.de/hybrid/index.htm)?
Ich denke die FB hinter dem Hybridrouter ist eine gute Idee. Wobei bezüglich FHEM die Anbindung der FB auf Grund ständiger Änderungen seitens AVM auch nicht gerade schmerzfrei ist.
Ich verwende zwei FHEM Module FRITZBOX und FBMon.
Gruß Otto
Hallo Thomas,
Die FritzBox ist per "Vorhandener Zugang über LAN" am, soweit ich mich erinnere, sonst nicht weiter konfigurierten SpeedPort-Router angeschlossen. Die ISDN-Anlage an der FritzBox. Internettelefonie im SpeedPort ist aus.
Die Konfiguration der FritzBox ist ansonsten nicht geändert worden. Die fhem-Module (FB_CALLLIST,FB_CALLMONITOR,FRITZBOX) funktionieren weiterhin.
Probleme gab es anfangs noch mit dem Telefonieren (Verbindungsabbruch nach ein paar Minuten), aber durch einen leider schon vergessenen Eintrag per telnet in einer Datei der FritzBox liessen diese sich schnell beheben.
Gruß
Hans
Zitat von: Hans Franz am 09 Oktober 2016, 16:55:43
Probleme gab es anfangs noch mit dem Telefonieren (Verbindungsabbruch nach ein paar Minuten), aber durch einen leider schon vergessenen Eintrag per telnet in einer Datei der FritzBox liessen diese sich schnell beheben.
Dies ist meines Wissens nicht mehr notwendig -> aktuelle Firmware FB.
Vielen Dank an euch beide für die Infos.
Könnt ihr mir noch sagen welche FB ihr nehmen würdet? Wichtig für mich wäre das der Stromverbrauch der FB relativ gering ist und die ISDN Anlage angeschlossen werden kann.
Gruß Thomas
Zitat von: Depechem am 09 Oktober 2016, 18:38:41
Vielen Dank an euch beide für die Infos.
Könnt ihr mir noch sagen welche FB ihr nehmen würdet? Wichtig für mich wäre das der Stromverbrauch der FB relativ gering ist und die ISDN Anlage angeschlossen werden kann.
Gruß Thomas
Gibt es da noch viel Auswahl? Wenn Du ISDN als Ausgang brauchst (https://avm.de/produkte/avm-produktvergleich/fritzbox/alle-anschluesse/) bleibt doch nur die 7490 oder die 7272 Aber macht die ISDN Telefonanlage so gute Dinge die man nicht mit der FB direkt machen könnte?
Gruß Otto
Zitat von: Otto123 am 09 Oktober 2016, 19:06:57
Gibt es da noch viel Auswahl? Wenn Du ISDN als Ausgang brauchst (https://avm.de/produkte/avm-produktvergleich/fritzbox/alle-anschluesse/) bleibt doch nur die 7490 oder die 7272 Aber macht die ISDN Telefonanlage so gute Dinge die man nicht mit der FB direkt machen könnte?
Gruß Otto
Ok habe ich gerade gefunden.
Ich verwende im Moment noch meine Siemens Gigaset ISDN 3070 Anlage mit mehreren Gigaset Mobilteilen. Ich weis es nicht genau aber glaube nicht das die Mobilteile im gleichen Funktionsumfang mit der FB verbunden werden können. (Entgangene Anrufe auf den MB anzeigen, interne Anrufe mit den Mobilteilen untereinander.
Ich hatte ne ganze Weile die Gigaset Mobilteile an meiner FB 7270, da ging eine ganze Menge!
Ruf untereinander ist gar kein Ding, Anrufbeantworter hast du in der FB, Telefonbuch aus der FB kannst Du nutzen, für alle gleich oder getrennt. Ich fand die zentralen Bedienung damals viel besser (hatte auch erst die Gigaset Anlage). Einzig der Aufruf der Telefonbuchfunktion erfordert glaube ich einen Tastendruck mehr.
Die schalten das alles auf die Intern Funktion am Mobilteil, darüber hast Du dann ein komplett neues Menu.
Ich bin irgendwann auf Fritzfon umgestiegen, da ist dann eben die FB Integration besser und meine Gigaset Mobilteile gaben irgendwie den Geist auf. ;)
Ohne ISDn könntest Du halt entsprechend Deiner Bedürfnisse aus Netzwerk Wlan usw. Features was kleineres/preiswerteres wählen. Allerdings ist die 7490 immer eine gute Wahl.
Gruß Otto
Danke noch einmal für eure Hilfe und Hinweise.
Ich habe mir eine Fritzbox 7490 besorgt und meine Gigaset Telefone dort als DECT Telefone aktiviert.
Der SpeedportHybrid läuft vor der Fritzbox. Beide strahlen ihr Wlan aus.
Läuft bis jetzt echt Prima.
Zusätzlich habe ich noch ein AVM Fritz!Fon C5 gekauft. Besseres in Preis Leistung kann man im Moment wohl nicht bekommen! 8)
Gruß Thomas
Guten Abend,
bei mir will die Installation irgendwie nicht gelingen. Ich bin dem Leitfaden wie angegeben gefolgt.
Wenn ich versuche das Modul laut Anleitung definieren möchte, spuckt mir FHEM immer nur "node has to be installed first.Aborting..." als Fehlermeldung aus.
Ähnlich wie bei mahowi scheint das Skript in der Konsole zu funktionieren.
node -v verrät mir auch, dass ich Version v0.10.0 installiert habe. Sogar neuere Versionen habe ich probiert, aber immer die gleiche Fehlermeldung. Woran kann das liegen?
Danke für alle Tipps und Hinweise!
Hallo,
Ob node installiert ist wird vom Modul mit
which node
geprüft. Normalerweise wird "/usr/local/bin" oder "/usr/bin" als Pfad zurückgegeben. Which bedient sich der PATH-Variable des Environments.
Schau mal mit
env | grep PATH
ob sich der Node-Pfad in dieser PATH-Variablen befindet.
Gruß
Hans
Zitat von: Hans Franz am 23 Dezember 2016, 02:50:45
Schau mal mit
env | grep PATH
ob sich der Node-Pfad in dieser PATH-Variablen befindet.
Hallo Hans,
mir wird bei dem Befehl folgender Pfad ausgegeben:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games
Der Pfad scheint also vorhanden zu sein. Trotzdem kommt weiterhin die Fehlermeldung. :-[
Grüße
Und bei
which node
?
Gruß
Hans
Danke für den Gedankenanstoß. Bin dadurch ein Stück weiter gekommen und konnte das Problem weiter eingrenzen.
Was habe ich bisher versucht?
1. "which node" gibt mir natürlich das korrekte Verzeichnis aus: /usr/local/bin/node
2. also habe ich geschaut, was eigentlich in FHEM ankommt:
- - "which node" -> es gibt kein Ergebnis im LOG (?)
- - "env | grep PATH" -> PATH=/sbin:/usr/sbin:/bin:/usr/bin
3. Wenn ich das gleiche im Terminal mit dem entsprechenden FHEM-User abrufe, ist der nötige Pfad mit enthalten: "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
In der Datei /env/profile ist so ein Pfad-Baum überhaupt nicht angegeben. Es scheint mir so, als würde das nicht korrekt übergeben.
Ich bin jetzt gerade kurz davor meinen Raspberry mal neu aufzusetzen. Es ist schon eine etwas ältere Installation, die zwar aktuell gehalten ist, aber wo es vielleicht mal Zeit für eine Neuinstallation ist. Sind ja Feiertage.. ;)
Übrigens Danke für deine Mühe!
Habe es nicht ausprobiert, aber evtl. reicht ein symbolischer Link in /usr/bin auf /usr/local/bin/node.
Gruß
Hans
Zitat von: Hans Franz am 24 Dezember 2016, 11:26:29
aber evtl. reicht ein symbolischer Link in /usr/bin auf /usr/local/bin/node.
Ein Weihnachtsgeschenk! Er reicht aus. Herzlichen Dank!
Frohe und gesegnete Weihnachten ;D
Falls es mit l33tport und einem neueren sjcl (>= 1.0.4) zu Problemen kommt, ich habe eine gefixte Version bei mir im git: https://github.com/mahowi/l33tport
Ist schon im Repository von melle aufgenommen.
Hey,
erstmal cooles Modul.
Welchen Wert muss ich den abfragen damit ich weiß wie viel kbit/s aktuell hoch/runtergeladen werden?
Weiß das jemand
Gruß
Matze
Hallo zusammen,
ich bin der Installationsanleitung gefolgt, habe das Modul unter /opt/fhem/FHEM abgelegt, die Rechte angepasst, mein Device erstellt und das Attribut nodeModuls gesetzt. Leider ist FHEM nicht in der Lage die Infos vom Speedport abzufragen.
sjcl und commander sollten (global) installiert sein, allerdings schlägt der Aufruf auf der Console auch schon fehl (gleiche Meldung wie im FHEM-Log):
fhem@Felix-Pi:~/scripts$ pwd
/opt/fhem/scripts
fhem@Felix-Pi:~/scripts$ ls -l
insgesamt 336
drwxr-sr-x 4 fhem dialout 4096 Jan 6 2017 l33tport-master
-rw-r--r-- 1 fhem dialout 332768 Mär 2 10:52 master.zip
drwxr-sr-x 4 fhem dialout 4096 Mär 2 10:53 node_modules
fhem@Felix-Pi:~/scripts$ node ./l33tport-master/l33tport.js -o json -f module
events.js:72
throw er; // Unhandled 'error' event
^
Error: socket hang up
at createHangUpError (http.js:1417:15)
at Socket.socketOnEnd [as onend] (http.js:1513:23)
at Socket.g (events.js:175:14)
at Socket.EventEmitter.emit (events.js:117:20)
at _stream_readable.js:870:14
at process._tickCallback (node.js:415:13)
fhem@Felix-Pi:~/scripts$
Ist das Script nach 1,5 Jahren in einer halbwegs aktuellen FHEM-Installation noch nutzbar?
Vielen Dank und Gruß,
Felix
Sorry für die späte Antwort. Hab' zuviel um die Ohren.
Leider bei mir genauso. Nutze das Modul nicht und habe (noch) keine Ahnung, warum es nicht mehr geht.
Muss mich wohl entschuldigen.
Gruss
Hans
Hallo Hans,
kann ich etwas tun und dich bei der Fehlersuche unterstützen?
Brauchst du weitere Infos oder Logs?
Hi,
kurze Info: das Modul funktioniert noch (zumindest kann ich die benötigte LTE-Info abrufen). Bei meiner Perl-Version mussten aber zwei kleine Änderungen in den Zeilen 242 und 246 der 70_SpeedPortHybridReadings.pm vorgenommen werden:
- while( my ($key,$value) = each $ref) {
+ while( my ($key,$value) = each (%{$ref})) {
Ich hoffe das hilft noch jemandem weiter...
Grüße,
j.