[gelöst] Nutzung eines FritzBox!Fon MT-F zur Darstellung von Bildern

Begonnen von Gigafix, 15 Oktober 2014, 20:55:41

Vorheriges Thema - Nächstes Thema

Gigafix

Hallo

Hat jemand die Anzeige von Bildern auf dem Fritz!Fon MT-F über eine FritzBox 7490 mit der aktuellen Firmware 6.20 umgesetzt?
Laut dem Beitrag im WIKI http://www.fhemwiki.de/wiki/FRITZFON wird nur die IP der Box und ein Passwort benötigt, ich muss mich aber schon seit einiger Zeit mit Benutzername und Passwort anmelden. Hier sehe ich aber keine Möglichkeit den Benutzernamen im Code zu hinterlegen. Eventuell geht es aber auf Grund der neuerlichen Sicherheitseinstellungen auf der FritzBox auch nicht mehr.
Also, wenn es jemand in der oben beschriebenen Konfiguration betreibt, würde ich mich über ein paar Tipps zur Einrichtung freuen.

Gruß
Gigafix

Edit: @ Moderator Hab gerade gesehen, das es auch ein FritzBox Hauptthema gibt - bitte mal dorthin verschieben - Danke.
VM Synology DS918 | CubieTruck |2x HMLAN | HMUSB | 3x HMWLAN | CCU2 | MAX-Cube | nanoCUL | ZWDongle |

Mani007

Das Thema würde mich auch Interessieren,

aber leider wenn ich das script ausführe hab ich probleme das curl die Klammern nicht auflösen kann . []

Auch ein escapen oder curl --globoff brachte keine Besserung .

Und das Login verfahren hat sich geändert .

http://212.42.244.80/de/Extern/files/session_id/AVM_Technical_Note_-_Session_ID.pdf
FHEM 5.5 auf Raspberry Pi B+

FB7390 Fritz!OS6.23
CUL 868  V1.61 / 1 x HM-SCI-3-FM / 1 x HM-SEC-SC / 3 x HM-LC-DIM1T-FM / 1 x HM-LC-DIM1TBU-FM /     
4 x HM-CC-RT-DN / 3 x HM-LC-SW1-FM / 2 x HM-WDS30-T-O / 2 x FRITZ!DECT 200 / Openvpn /VU + DUO

Mani007

Wenn ich zeit habe werde ich mal versuchen die neue Login Session einzupflegen dauert aber ein bisschen .
FHEM 5.5 auf Raspberry Pi B+

FB7390 Fritz!OS6.23
CUL 868  V1.61 / 1 x HM-SCI-3-FM / 1 x HM-SEC-SC / 3 x HM-LC-DIM1T-FM / 1 x HM-LC-DIM1TBU-FM /     
4 x HM-CC-RT-DN / 3 x HM-LC-SW1-FM / 2 x HM-WDS30-T-O / 2 x FRITZ!DECT 200 / Openvpn /VU + DUO

Mani007

So sollte es funktionieren getestet mit einer FB7390 OS!6.20 vom raspberry aus mit einem C4 Fritz!Fon.

Leider habe ich keinen Zugang zum wiki vielleicht kann es da jemand nachpflegen .
Wenn man will kann man mit dem Loginverfahren auch mehr damit schalten oder aus FB auslesen .
Wenn es probleme gibt einfach melden .

#!/bin/sh
PHONEID=$2
PHONEBOOKID=255
PHONEBOOKTYPE=1
#Tempfile für die SID anpassen wo man schreibrechte besitzt
TMPFILE=/home/pi/tmp.txt
IP=fritz.box
PASSWD="DeinFBpassword"
FRITZLOGIN="/login_sid.lua"
PICTURE=$1
CURL=$(which curl)
login(){
# neues Loginverfahren seit xx.05.50
$CURL -s "$IP$FRITZLOGIN" > $TMPFILE
Challenge=$(sed -n '/.*<Challenge>\([^<]*\)<.*/s//\1/p' $TMPFILE)
MD5="$(echo -n "$Challenge-$PASSWD" | sed -e 's,.,&\n,g' | tr '\n' '\0' | md5sum)"
RESPONSE=$Challenge-${MD5%% *}
echo $RESPONSE
$CURL -s "$IP$FRITZLOGIN?username=BoxAdmin&response=$RESPONSE" > $TMPFILE
SID=$(sed -n '/.*<SID>\([^<]*\)<.*/s//\1/p' $TMPFILE)
}
change(){
        echo "CHANGE $SID"
        $CURL -o /dev/null \
        -F "sid=$SID" \
        -F "PhonebookId=$PHONEBOOKID" \
        -F "PhonebookType=$PHONEBOOKTYPE" \
        -F "PhonebookEntryId=$PHONEID" \
        -F "PhonebookPictureFile=@$PICTURE" \
        http://$IP/cgi-bin/firmwarecfg
}
echo "login ...."
login
echo "change ...."
change
FHEM 5.5 auf Raspberry Pi B+

FB7390 Fritz!OS6.23
CUL 868  V1.61 / 1 x HM-SCI-3-FM / 1 x HM-SEC-SC / 3 x HM-LC-DIM1T-FM / 1 x HM-LC-DIM1TBU-FM /     
4 x HM-CC-RT-DN / 3 x HM-LC-SW1-FM / 2 x HM-WDS30-T-O / 2 x FRITZ!DECT 200 / Openvpn /VU + DUO

Gigafix

Hallo Mani007

Danke für Deine Mühe. Aber irgendwie verstehe ich die Zusammenhänge noch nicht. Muss ich auf der Fritzbox noch irgendetwas "vorbereiten" oder kann ich mit der originalen Firmware von AVM arbeiten?
Als Benutzername scheint ja der BoxAdmin genommen zu werden , der irgendwie aus der Box ausgelesen wird - ich dachte den kann man so hinterlegen wie das Passwort und die IP oder wie ist die Zeile
FRITZLOGIN="/login_sid.lua"
zu verstehen?
Auch kann ich in dem Programmcode nicht erkennen wo die Bilddatei liegen soll. Das wird ja mit dem 2. Shell-Script angelegt/geändert mit dem Namen fritzergebnis.jpg und dann mit Deinem angepassten Script auf die Box geschoben...

Kannst Du mir mit einfachen Worten kurz erläutern, was wo angelegt und ggf. angepasst werden muß - in dem WIKI ist das auch nicht so ganz genau beschrieben.

Eigentlich will ich wenn ein Ereignis wie Blaue Tonne oder gelber Sack stattfindet - das Standardbild gegen ein entsprechendes Bild austauschen, also nicht mal Werte in eine Bilddatei schreiben.

Gruß
Gigafix
VM Synology DS918 | CubieTruck |2x HMLAN | HMUSB | 3x HMWLAN | CCU2 | MAX-Cube | nanoCUL | ZWDongle |

Mani007

#5
Hallo Gigafix,

Du kannst mit der Original Firmware arbeiten aber im Script wird das Programm 'sed' 'md5sum' und 'curl' benutzt .

Ich weiss nicht auf welche FB du das laufen lassen willst. Aber curl ist zb bei der FB7390 drauf das müsste man dann halt mit Freetz
kompilieren oder könnte ich machen .

Zum Thema Benutzer, könnte man so machen die FB ist eine Multi-User Box standart gemäß wird wenn die FB neu eingerichtet wird
der Benutzer BoxAdmin angelegt . Wenn du mehrer Benutzer haben willst könnte man das Script abändern .

#!/bin/sh
PHONEID=$2
PHONEBOOKID=255
PHONEBOOKTYPE=1
#Tempfile für die SID anpassen wo man schreibrechte besitzt
TMPFILE=/home/pi/tmp.txt
IP=fritz.box
PASSWD="DeinFBpassword"
Benutzer="DeinBenutzer"
FRITZLOGIN="/login_sid.lua"
PICTURE=$1
CURL=$(which curl)
login(){
# neues Loginverfahren seit xx.05.50
$CURL -s "$IP$FRITZLOGIN" > $TMPFILE
Challenge=$(sed -n '/.*<Challenge>\([^<]*\)<.*/s//\1/p' $TMPFILE)
MD5="$(echo -n "$Challenge-$PASSWD" | sed -e 's,.,&\n,g' | tr '\n' '\0' | md5sum)"
RESPONSE=$Challenge-${MD5%% *}
echo $RESPONSE
$CURL -s "$IP$FRITZLOGIN?username=$Benutzer&response=$RESPONSE" > $TMPFILE
SID=$(sed -n '/.*<SID>\([^<]*\)<.*/s//\1/p' $TMPFILE)
}
change(){
        echo "CHANGE $SID"
        $CURL -o /dev/null \
        -F "sid=$SID" \
        -F "PhonebookId=$PHONEBOOKID" \
        -F "PhonebookType=$PHONEBOOKTYPE" \
        -F "PhonebookEntryId=$PHONEID" \
        -F "PhonebookPictureFile=@$PICTURE" \
        http://$IP/cgi-bin/firmwarecfg
}
echo "login ...."
login
echo "change ...."
change


login_sid.lua ist nicht der Benutzer einzutragen das wird benötigt um die richtige sid herauszufischen .

Ich würde es auf Fritz.Nas ablegen . z.B. die TMPFILE=/home/pi/tmp.txt auf TMPFILE=/var/media/ftp/fhem/

Das bild kannst du auch auf die NAS ablegen und wird dem script an 1 Position angegeben . z.B. ./fritzfonpic.sh fritzergebnis.jpg 610 .

610 ist die interne Nummer deines Telefons .

Wenn du keine Werte brauchst kannst du den Befehl convert auch weglassen das Bild muss halt annähernd quadratisch sein und ein jpeg file sein.



FHEM 5.5 auf Raspberry Pi B+

FB7390 Fritz!OS6.23
CUL 868  V1.61 / 1 x HM-SCI-3-FM / 1 x HM-SEC-SC / 3 x HM-LC-DIM1T-FM / 1 x HM-LC-DIM1TBU-FM /     
4 x HM-CC-RT-DN / 3 x HM-LC-SW1-FM / 2 x HM-WDS30-T-O / 2 x FRITZ!DECT 200 / Openvpn /VU + DUO

Gigafix

Hallo Mani007

Ich habe eine FB7490.
Manuell über die Console hat es nun auch erst einmal funktioniert das Bild auf dem FritzFon MT-F zu ändern, ohne das ich Änderungen der Firmware vornehmen musste. Ich habe nur die Farbeinstellungen um den Benutzernamen in Deinem Scipt entfernen müssen - die scheinen gestört zu haben.
Jetzt muss ich nur noch herausfinden wie ich das aus FHEM mit veränderten Bildern anstoßen kann. Hier muss ich mich aber nun erst einmal belesen, wie ich das am besten anstelle. Wenn Du hier auch noch einen Tipp hast wie man Linuxbefehle aus FHEM startet wäre super. Du hast mir aber schon sehr bei meinem Vorhaben geholfen - Danke.

Gruß
Gigafix
VM Synology DS918 | CubieTruck |2x HMLAN | HMUSB | 3x HMWLAN | CCU2 | MAX-Cube | nanoCUL | ZWDongle |

Mani007

Sorry das mitn farbumschlag hab ich Verbockt.

Ich habe nicht gewusst das im CODE die Farbe nicht angezeigt wird .

Du könntest je nachdem was du machen willst zu ein notify oder at Befehl absetzen.

Define irgendeine notify eingerätdasduabfragenwillst {system ("/bin/sh /pfad/zum/script &")}
FHEM 5.5 auf Raspberry Pi B+

FB7390 Fritz!OS6.23
CUL 868  V1.61 / 1 x HM-SCI-3-FM / 1 x HM-SEC-SC / 3 x HM-LC-DIM1T-FM / 1 x HM-LC-DIM1TBU-FM /     
4 x HM-CC-RT-DN / 3 x HM-LC-SW1-FM / 2 x HM-WDS30-T-O / 2 x FRITZ!DECT 200 / Openvpn /VU + DUO

Gigafix

Hallo Mani007

Super - das funktioniert jetzt so wie ich es mir dachte. Danke.
Nun muss ich das ganze noch mit dem Abfallkalender verknüpfen - und mal sehen was mir da sonst noch so einfällt...
Das Wetter könnte man dort anzeigen - oder Geburtstage...
Aber ich werde es mal nicht übertreiben. Wenn das dann zu "bunt" wird hat es ja auch keine Hinweisfunktion mehr.

Viele Güße und Dank sendet
Gigafix
VM Synology DS918 | CubieTruck |2x HMLAN | HMUSB | 3x HMWLAN | CCU2 | MAX-Cube | nanoCUL | ZWDongle |

Mani007

Bitteschön freut mich das es funst .

Kannst du mir noch einen gefallen tun ich habe keine 7490 zur Hand.
Mich wundert das curl auf der FB ist.

Könntest du mal schauen per Telnet ob da wirklich die curl Binary vorhanden ist .

cd /
find -name curl
FHEM 5.5 auf Raspberry Pi B+

FB7390 Fritz!OS6.23
CUL 868  V1.61 / 1 x HM-SCI-3-FM / 1 x HM-SEC-SC / 3 x HM-LC-DIM1T-FM / 1 x HM-LC-DIM1TBU-FM /     
4 x HM-CC-RT-DN / 3 x HM-LC-SW1-FM / 2 x HM-WDS30-T-O / 2 x FRITZ!DECT 200 / Openvpn /VU + DUO

Gigafix

Hallo Mani007

Nun ich hatte curl auf meinem Cubi installiert, dort liegt ja auch meine Datei fritzfonpic.sh die ich dort starte und die von dort eine Verbindung zur Fritzbox aufbaut und das ausgewählte Bild rüberschiebt. Wird dann nicht curl auf dem Cubi benötigt? Ich habe mich mal per Telnet auf der Box eingeloggt. Es sieht so aus, als ob es dort kein curl gibt....

BusyBox v1.20.2 (2014-07-04 11:53:52 CEST) built-in shell (ash)
Enter 'help' for a list of built-in commands.

ermittle die aktuelle TTY
tty is "/dev/pts/0"
Console Ausgaben auf dieses Terminal umgelenkt
disable start/stop characters and flowcontrol
# cd /
# find -name fstab
./etc/fstab
# find -name curl
#

Ich habe mal noch nach einer Datei suchen lassen, die es auf der Box gibt um sicher zu gehen, das ich mich bei der Eingabe nicht vertan habe.

Wenn ich sonst noch etwas tun kann - gerne.

Gruß
Gigafix
VM Synology DS918 | CubieTruck |2x HMLAN | HMUSB | 3x HMWLAN | CCU2 | MAX-Cube | nanoCUL | ZWDongle |

PeMue

Hallo Mani,

# pwd
/
# find -name curl
#


Fritz Box 7490 (Original AVM), FW FRITZ!OS: 06.05.

Gruß PeMue
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

Mani007

@PeMue Danke für die Info das ist das was ich erwartet habe das curl standart gemäß nicht compiliert wird.

@Gigafix mit dem Befehl which curl könntest du nochmal schauen wo ein Programm installiert ist. Beim raspi
ist es installiert beim cubietruck weiss ich nicht welches Betriebssystem installiert ist.

Ja curl wird benötigt um die URL Posts an die FB zu schicken.
FHEM 5.5 auf Raspberry Pi B+

FB7390 Fritz!OS6.23
CUL 868  V1.61 / 1 x HM-SCI-3-FM / 1 x HM-SEC-SC / 3 x HM-LC-DIM1T-FM / 1 x HM-LC-DIM1TBU-FM /     
4 x HM-CC-RT-DN / 3 x HM-LC-SW1-FM / 2 x HM-WDS30-T-O / 2 x FRITZ!DECT 200 / Openvpn /VU + DUO

Gigafix

Also ich habe ein Linux Server BS von Linaro oder so ähnlich drauf. Dort habe ich curl per apt Suche und Ausführen nachinstalliert. Ist das hier die Info, die du haben wolltest...

linaro@cubietruck:/$ which curl
/usr/bin/curl
linaro@cubietruck:/$


Gruß
Gigafix
VM Synology DS918 | CubieTruck |2x HMLAN | HMUSB | 3x HMWLAN | CCU2 | MAX-Cube | nanoCUL | ZWDongle |

Mani007

Ja genau ich wollte bloß wissen ob du es nachinstalliert hast .

Danke für die Info.
FHEM 5.5 auf Raspberry Pi B+

FB7390 Fritz!OS6.23
CUL 868  V1.61 / 1 x HM-SCI-3-FM / 1 x HM-SEC-SC / 3 x HM-LC-DIM1T-FM / 1 x HM-LC-DIM1TBU-FM /     
4 x HM-CC-RT-DN / 3 x HM-LC-SW1-FM / 2 x HM-WDS30-T-O / 2 x FRITZ!DECT 200 / Openvpn /VU + DUO

PeMue

Hallo zusammen,

wenn ich mich recht erinnere, ist curl bei der aktuellen Version von solarview dabei.

Gruß PeMue
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

Mani007

Von dem Projekt habe ich schon mal gelesen.

Wäre jetzt auch nicht so das Problem mit Freetz curl zu compilieren.
FHEM 5.5 auf Raspberry Pi B+

FB7390 Fritz!OS6.23
CUL 868  V1.61 / 1 x HM-SCI-3-FM / 1 x HM-SEC-SC / 3 x HM-LC-DIM1T-FM / 1 x HM-LC-DIM1TBU-FM /     
4 x HM-CC-RT-DN / 3 x HM-LC-SW1-FM / 2 x HM-WDS30-T-O / 2 x FRITZ!DECT 200 / Openvpn /VU + DUO