Türklingel an Fritz!Box OHNE CUL, der steckt am RPi mit FHEM2FHEM

Begonnen von bsl02, 16 November 2013, 19:12:50

Vorheriges Thema - Nächstes Thema

bsl02

Hallo Harald,

ich habe hier noch eine 7170, allerdings nur als WLan-Sender genutzt.

Zu Deinen Fragen:

> Wo finde ich das Verzeichnis Fritzbox-Api, damit ich es nach opt/fhem/ kopieren kann?
Siehe Post von Frank weiter oben: http://forum.fhem.de/index.php/topic,16570.msg108061.html#msg108061

Ich habe es auf Seite 4 dort gefunden:
http://www.ip-phone-forum.de/showthread.php?t=196309&page=4&s=3642fcdc9b684bd317d3e7d2ad700404

(für download muss man angemeldet sein - oder darf ich das hier einstellen?)
Datei: fritzbox_api_php_v0.5.0b7.zip
http://www.ip-phone-forum.de/attachment.php?attachmentid=67328&d=1357117024
Darin enthalten ist u.a. die fritzbox_ring_phone.php - dort könnten anzurufende TelNrn hinterlegt werden

Oder besser, aber nicht in obigem Download enthalten: fritzbox_call_phone.php - kann Argumente z.B. aus FHEM entgegennehmen (TelNrn)
@Frank: Darf man die hier einstellen?
http://www.ip-phone-forum.de/showthread.php?t=196309&page=4&highlight=fritzbox_call_phone.php
(Seite 4, weit unten)

Nachdem die benötigten Dateien vorhanden sind, ist auf dem RPi noch PHP zu installieren (hat Frank oben beschrieben).
http://forum.fhem.de/index.php/topic,16570.msg108458.html#msg108458

Wenn PHP auf RPi installiert, Datei fritzbox_api_php_v0.5.0b7.zip extrahieren und den Ordner auf den RPi kopieren.
Standort auf RPi: /opt/fhem/fritzbox_api

In diesen Ordner kommt auch die fritzbox_call_phone.php.

Im Ordner befindet sich bereits die jetzt anzupassende
fritzbox_user_conf.php
Hilfe von Frank dazu: http://forum.fhem.de/index.php/topic,16570.msg108617.html#msg108617
Eintragung u.a.: $this->config->setItem('password', <meinPasswort>);

Sowie Einstellung, ob die FritzBox-Anmeldung mit LUA- oder Altverfahren erfolgt:
# use the new .lua login method in current (end 2012) labor and newer firmwares (Fritz!OS 5.50 and up)
$this->config->setItem('use_lua_login_method', true);

->Auf der FB7170 vermutlich noch kein LUA, s.u.


> Was ist das LUA Loginverfahren?
Keine Ahnung, wohl "neuer Login-Mechanismus". Wenn ich bei der FB7390 die Webobefläche öffne, steht dort
http://192.168.115.1/home/home.lua?sid=......
-> ist wohl ein Hinweis auf das Lua-Verfahren

Vergleich: Aufruf der FB7170:
Im Browser steht nur
http://192.168.115.11/    -> wohl kein LUA-Verfahren.


Hoffentlich habe ich nichts vergessen - viel Erfolg!

Gruß,
Stefan

/Edit 12.12.2013: Habe die benötigten Dateien (1+2) angehängt, erspart das Suchen. Weitere Dateien als Info.
RPi3 (FHEM) / CUL V3 868 (FS20) / nanoCUL868 (HM) / RFXtrx433 (IT & ELRO) / MAX!Cube (Thermostate, Fenster) / Bluetooth (presence Handy) / Sonoff mit Tasmota // Audio: RPi3 mit "max2play"-Image (Squeezeserver+Player) / Video: Synology-NAS mit TVheadend, Triax TSS400 Sat-IP Converter

fiedel

Zitat von: Harald am 21 November 2013, 12:09:51
Wäre toll, wenn mir jemand weiterhelfen würde.

Hi Harald,

mein erster Post in diesem Thread - da ist der Link zur API und dort musst du die Readme- Datei der Api und den Thread durcharbeiten (ggf. mehrmals wie ich), dann weißt du alles was du möchtest.

Gruß

Frank
FeatureLevel: 6.1 auf Wyse N03D ; Deb. 11 ; Perl: v5.14.2 ; IO: HM-MOD-RPI-PCB + VCCU|CUL 868 V 1.66|LinkUSBi |TEK603
HM: SEC-SCO|SCI-3-FM|LC-SW4-PCB|ES-PMSW1-PL|RC-4-2|SEN-MDIR-O|SEC-WDS-2
CUL: HMS100TF|FS20 S4A-2 ; OWDevice: DS18S20|DS2401|DS2406|DS2423

Harald

Hallo bsl02,

herzlichen Dank für die ausfühliche Beschreibung. Da ich auch User im IP-Phone-Forum bin, konnte ich mir die erforderlichen Dateien herunter laden. PHP 5.4.4 ist auf dem RasPi bereits vorhanden, /fhem/fritzbox_api mit call_phone und ring_phone nun ebenfalls. Die user.conf ist auch angepasst (ich hoffe richtig).
Dann werde ich am WE mal sehen, ob ich das zum Laufen bringe.

Nochmals herzlichen Dank für Deine tolle Beschreibung und viele Grüße

Harald
Router:AVM7590 1&1 FW:FRITZ!OS 07.56 Anbindung:1&1 50/10 Mb/s, WLAN-Repeater 300E
ELV MAX!Cube, 7xThermostat, ECO, RasPi 4B mit bullseye auf Festplatte,
CUL V 1.67, JeeLink v3_10.1c, nanoCUL, 1xS300TH, 4xHMS100T, 4xELRO, 1xTFA, 2xMAX_FK
ELV MAX!1.4.5, FHEM 5.7 auf RasPi, Kostal PIKO plus

Harald

Hallo zusammen,

ich habe diese API samt php auf meinem RasPi, auf dem FHEM läuft, installiert. Ich möchte mittels der API meine Telefone klingeln lassen. Meine user.conf sieht so aus<?php
if ( !isset($this->config) )
{
  die(
__FILE__ ' must not be called directly');
}

####################### central API config ########################
# notice: you only have to set values differing from the defaults #
###################################################################

# use the new .lua login method in current (end 2012) labor and newer firmwares (Fritz!OS 5.50 and up)
$this->config->setItem('use_lua_login_method'true);
#$this->config->setItem('use_lua_login_method', false);
# set to your Fritz!Box IP address or DNS name (defaults to fritz.box), for remote config mode, use the dyndns-name like example.dyndns.org
$this->config->setItem('fritzbox_ip''192.168.0.1');

# if needed, enable remote config here
#$this->config->setItem('enable_remote_config', true);
#$this->config->setItem('remote_config_user', 'test');
#$this->config->setItem('remote_config_password', 'test123');

# set to your Fritz!Box username, if login with username is enabled (will be ignored, when remote config is enabled)
$this->config->setItem('username''name');

# set to your Fritz!Box password (defaults to no password, will be ignored, when remote config is enabled)
#$this->config->setItem('password', false);
$this->config->setItem('password''xxxxxx');

# set the logging mechanism (defaults to console logging)
$this->config->setItem('logging''console'); // output to the console
#$this->config->setItem('logging', 'silent');  // do not output anything, be careful with this logging mode
#$this->config->setItem('logging', 'tam.log'); // the path to a writeable logfile

# the newline character for the logfile (does not need to be changed in most cases)
$this->config->setItem('newline', (PHP_OS == 'WINNT') ? "\r\n" "\n");


############## module specific config ###############

# set the path for the call list for the foncalls module
$this->config->setItem('foncallslist_path'__DIR__ '\foncallsdaten.csv');

und so sieht meine fhem.cfg aus############################################################################
#
# Klingel1
#
define Klingel1 FS20 7e7e 01
attr Klingel1 icon Wecker.Immer
attr Klingel1 room MAX
define FileLog_Klingel1 FileLog ./log/Klingel1-%m-%U.log Klingel1:.*
attr FileLog_Klingel1 alias Klingel1
attr FileLog_Klingel1 logtype text
attr FileLog_Klingel1 room Diagramm.log
#
###### Auswertung Klingel1
#
define Klingel1_on notify Klingel1:on {system("/usr/bin/php /opt/fhem/fritzbox_api/fritzbox_call_phone.php **9 ");; }
attr Klingel1 verbose 1
#
####################################################################

Leider klappt das nicht. Ich erhalte auf der RasPi-Konsole die Fehlermeldung
PHP Fatal error: Call to undefined funktion curl_init() in /opt/fhem/fritzbox_api/fritzbox_api.class.php on line 180

Ich habe schon Login, user und password variiert, aber ohne Erfolg. kann mir jemand sagen, was ich da falsch mache?

Vielen Dank im Voraus und viele Grüße

Harald
Router:AVM7590 1&1 FW:FRITZ!OS 07.56 Anbindung:1&1 50/10 Mb/s, WLAN-Repeater 300E
ELV MAX!Cube, 7xThermostat, ECO, RasPi 4B mit bullseye auf Festplatte,
CUL V 1.67, JeeLink v3_10.1c, nanoCUL, 1xS300TH, 4xHMS100T, 4xELRO, 1xTFA, 2xMAX_FK
ELV MAX!1.4.5, FHEM 5.7 auf RasPi, Kostal PIKO plus

fiedel

Hi Harald,

was bringt denn php -v ?

Wenn du direkt auf der Konsole /usr/bin/php /opt/fhem/fritzbox_api/fritzbox_call_phone.php **9 ausführst, erscheint dann auch dieser Fehler?

Ist die Datei "fritzbox_call_phone.php" überhaupt in dem API- Ordner vorhanden? Das ist sie standartmäßig nicht.

@Stefan: Du kannst das ruhig hier posten, hat ja eine "jedermann" - Lizenz.  ;)
FeatureLevel: 6.1 auf Wyse N03D ; Deb. 11 ; Perl: v5.14.2 ; IO: HM-MOD-RPI-PCB + VCCU|CUL 868 V 1.66|LinkUSBi |TEK603
HM: SEC-SCO|SCI-3-FM|LC-SW4-PCB|ES-PMSW1-PL|RC-4-2|SEN-MDIR-O|SEC-WDS-2
CUL: HMS100TF|FS20 S4A-2 ; OWDevice: DS18S20|DS2401|DS2406|DS2423

Harald

Hallo fiedel, erstmal danke für's Antworten.

php -v bringt PHP 5.4.4-14+deb7u4 (cli) (built: Aug 27 2013 01:01:43) Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies

Eingabe der Zeile in der Konsole erzeugt die gleiche Fehlermeldung.

fritzbox_call_phone.php und fritzbox_ring_phone.php sind vorhanden und bringen beide o.g. Fehlermeldung

Im IP-Phone-Forum hat mir gerade spackmat geantwortet und schreibt, dass mir php5-curl fehlt. Ich habe soeben versucht, das mit apt-get install php5-curl zu installieren. Ich erhalte die Fehlermeldung: http://mirrordirector.raspbian.org/raspbian/pool/main/p/php5/php5-curl_5.4.4-14+deb7u4_armhf.deb 404 Not found

Ich habe dort gerade mal nachgesehen. Dort gibt es nur  php5-curl_5.4.4-14+deb7u5_armhf.deb

Hast Du eine Idee, wie ich php5-curl installiert bekomme? Hab's geschafft! Nach einem Update hat's geklappt.

Und ich kann meine 6360 ansprechen und die Telefone klingeln  ;D . Jetzt kann ich daran gehen, die 7170 zu deaktivieren.

Nochmals besten Dank für die Hilfe und schönen Abend noch

Harald
Router:AVM7590 1&1 FW:FRITZ!OS 07.56 Anbindung:1&1 50/10 Mb/s, WLAN-Repeater 300E
ELV MAX!Cube, 7xThermostat, ECO, RasPi 4B mit bullseye auf Festplatte,
CUL V 1.67, JeeLink v3_10.1c, nanoCUL, 1xS300TH, 4xHMS100T, 4xELRO, 1xTFA, 2xMAX_FK
ELV MAX!1.4.5, FHEM 5.7 auf RasPi, Kostal PIKO plus

fiedel

Na siehste, geht doch!  ;)

Ich hätte bei dem PHP- Problem auch nicht viel helfen können, da ich kein Raspi hab. Mir wäre nur eingefallen die Sources vom standart- Debian einzubinden. Aber Drops ist ja gelutscht...   ;)

Gruß

Frank
FeatureLevel: 6.1 auf Wyse N03D ; Deb. 11 ; Perl: v5.14.2 ; IO: HM-MOD-RPI-PCB + VCCU|CUL 868 V 1.66|LinkUSBi |TEK603
HM: SEC-SCO|SCI-3-FM|LC-SW4-PCB|ES-PMSW1-PL|RC-4-2|SEN-MDIR-O|SEC-WDS-2
CUL: HMS100TF|FS20 S4A-2 ; OWDevice: DS18S20|DS2401|DS2406|DS2423

Harald

So, ich hab's geschafft. Ich habe das Skript fritzbox_ring_phone.php zu fritzbox_ring+hangon_phone.php umgebaut. Damit kann man das (die) Telefon(e) für eine bestimmte Zeit klingeln lassen. Nach dieser Zeit wird der Befehl ATH0 = HangOn gesendet.<?php
$dial 
'**9'// set to the number to dial
// init the output message
$message date('Y-m-d H:i') . ' ';
try

  
// load the fritzbox_api class
  
require_once(__DIR__ '/fritzbox_api.class.php');
  
$fritz = new fritzbox_api();
  
  
// update the setting Tel-Nr
  
$formfields = array(
    
'telcfg:command/Dial'      => $dial,
  );
  
$fritz->doPostForm($formfields);
  
$message .= 'Phone Nr ' $dial ' ringed ';
  
   
// 10 Sek. warten
  
sleep (10);

 
$dial 'ATH0'// set to HangOn to dial
  
  // update the setting HangOn
  
$formfields = array(
    
'telcfg:command/Dial'      => $dial,
  );
  
$fritz->doPostForm($formfields);
  
$message .= 'and HangOn';
}

catch (
Exception $e)
{
  
$message .= $e->getMessage();
}

// log the result
if ( isset($fritz) && is_object($fritz) && get_class($fritz) == 'fritzbox_api' )
{
  
$fritz->logMessage($message);
}
else
{
  echo(
$message);
}
$fritz null// destroy the object to log out
?>

Die gerufene Telefon-Nr. und die Klingelzeit können nicht als Parameter übergeben, sondern nur innerhalb des Skripts eingetragen werden.

Falls jemand Verbesserungsvorschläge hat, immer her damit oder selbst einfügen.
Bitte nicht verhauen, das ist mein erstes und auch nur geändertes php-Skript.

Viele Grüße

DK9JH
Router:AVM7590 1&1 FW:FRITZ!OS 07.56 Anbindung:1&1 50/10 Mb/s, WLAN-Repeater 300E
ELV MAX!Cube, 7xThermostat, ECO, RasPi 4B mit bullseye auf Festplatte,
CUL V 1.67, JeeLink v3_10.1c, nanoCUL, 1xS300TH, 4xHMS100T, 4xELRO, 1xTFA, 2xMAX_FK
ELV MAX!1.4.5, FHEM 5.7 auf RasPi, Kostal PIKO plus

bsl02

Hallo,
meine Türklingel läuft mittlerweile prima auf dem Weg FS20-KSE --> RPi (CUL868) --> PHP-Script, siehe oben --> Fritz!Box7390.

Heute eine Frage leicht OffTopic, aber vll. auch für andere von Interesse:

Auch bei meinen Eltern (Einfamilienhaus) soll eine alte Auerswald-Telefonanlage zukünftig entfallen, alle Telefone hängen dann direkt an einer kleinen Fritz!Box (vorhanden: 7320, 7312 oder 7170).

Problem: Die Auerswald signalisiert bisher an Telefonen die Türklingel, dafür liegt ein Kabel vom Klingeltaster zur Tel-Anlage. Weiterhin hängt an der Auerswald eine laute externe Zusatz-Telefonklingel. Fritz!Box und Auerswald Tel-Anlage stehen nebeneinander.

Idee 1 (FHEM auf RPi kabelgebunden, kein CUL o.ä.):

  • Türklingel: Neuen RPi für die Eltern kaufen, darauf FHEM installieren. Klingelkabel an RPi anschließen (geht das mit den RPi-Anschlüssen?), dort erfolgt irgendwie die Auswertung des Klingelsignals. Weitere Übermittlung erfolgt von FHEM an die Fritz!Box mittels PHP wie oben.
  • Externe Zusatzklingel: Auflegen auf Fon2, der ist bisher frei

Idee 2 (FHEM direkt auf "kleiner" Fritz!Box):
FHEM direkt auf FB7320 oder 7312 installieren - wenn möglich. Weiter mit PHP wie oben.
Allerdings fehlt mir an der FB die Anschlussmöglichkeit für das Klingelkabel.
Nicht zusätzlich kaufen möchte ich eine FS20-KSE nebst CUL, das wäre überdimensioniert.

Tjaa, daher die Frage:
Hat jemand ähnliches bereits umgesetzt?

Für Erfahrungen einmal wieder dankbar,
Stefan
RPi3 (FHEM) / CUL V3 868 (FS20) / nanoCUL868 (HM) / RFXtrx433 (IT & ELRO) / MAX!Cube (Thermostate, Fenster) / Bluetooth (presence Handy) / Sonoff mit Tasmota // Audio: RPi3 mit "max2play"-Image (Squeezeserver+Player) / Video: Synology-NAS mit TVheadend, Triax TSS400 Sat-IP Converter