AppleScript vs. Fritz!Box -> Fritz!DECT 200

Andy15073

Andy15073

Aktives Mitglied
Thread Starter
Dabei seit
26.11.2007
Beiträge
1.303
Reaktionspunkte
41
Hey
kennt einer einen weg wie ich mit dem AppleScript eine Fritz!DECT 200 Steckdose an und aus schalten kann?

ich wollte ein Script erstellen das die Steckdose alle x Stunden einschaltet und danach das Backup startet.
Wo für ?
Ganz klar Strom zu sparen :) Backup Festplatte soll nicht den lieben langen tag vor sich rum laufen :p

Jetzt habe ich nur keinen Plan wie ich ansatzweise an das gesehen ran gehen soll, darum frag ich hier mal ganz doof, evtl hat ja schon jemand das Problem gelöst :)
 
Direkt über applescript geht das nicht so ohne weiteres… Wie weit bist Du in der Programmierung bewandert? Schon mal auf wehavemorefun.de/fritzbox/Fritznasdb
geschaut? Dort gibt es eine Menge fertiger shell scripte für NAS etc.
 
oky cool schau ich mir mal an ;) Programmierung, naja ich bastel bis es klappt oder ich weinend unter dem tisch liege ;p aber Programmierer sind helden :jaja:, nur ich gehöre nicht dazu würde ich sagen :hum:
 
Man kann die Fritz!DECT 200 Geräte laut Website über einen Google Kalender steuern
 
Man kann die Fritz!DECT 200 Geräte laut Website über einen Google Kalender steuern

das aber doof, weil dann schaltet man nachher die festplatten aus wenn das Backup länger läuft.

geplant ist es ja ein script zu schreiben das sagt:
  1. Fritz!DECT 200 -> AN
  2. Warte x Sec (Solange wie die Platten brauchen um sich anzumelden)
  3. Checke Platte Backup ob verbunden (Wenn nein gehe zu Punkt 7)
  4. Starte Backup
  5. Warte bis Backup zu ende ist
  6. Werfe Platte Backup raus
  7. Fritz!DECT 200 -> AUS
 
Ich google gerade noch, wie das Gerät über HTTP Requests steuerbar ist.
Dann kann man schnell obiges Szenario programmieren.
 
ja cool

punkt 4 habe ich schon:
Code:
tmutil startbackup -d *ID*
die ID bekommt man so raus:
Code:
tmutil destinationinfo [-X]
 
Und hier steht was zum HTTP-Krams
 
oky habe jetzt hier mal rumgespielt...

komme leider nicht auf den weg der wege

mit den link:
Code:
http://fritz.box/net/home_auto_query.lua?sid=29a461d983e675a9&command=SwitchOnOff&value_to_set=1&id=16&xhr=1&t1438114260892=nocache
bekomme ich dieses angezeigt
Code:
{
"ValueToSet" : "1" ,"Value" : "1" ,"CurrentDateInSec" : "1438114041" ,"DeviceID" : "16" ,"tabType" : "" ,"DeviceConnectState" : "2" ,"RequestResult" : "1"
}
wobei die sid eine nummer ist die bei jedem login auf der fritzbox neu erstellt wird
Code:
sid=29a461d983e675a9

der wert
Code:
SwitchOnOff&value_to_set=1
sagt der steckdose wohl an oder aus
leider kann ich hier die 1 durch eine 0 ersetzen, dies wird dann auch in der ausgabe dann so angezeigt:
Code:
{
"ValueToSet" : "0" ,"Value" : "1" ,"CurrentDateInSec" : "1438114041" ,"DeviceID" : "16" ,"tabType" : "" ,"DeviceConnectState" : "2" ,"RequestResult" : "1"
}
leider aber ohne das die steckdose schaltet ...

mein traum das man nur eine URL aufrufen muss ist gerade am ende glaube ich , hmm
 
aah ich habe es :)
An:
HTML:
http://www.fritz.box/webservices/homeautoswitch.lua?sid=29a461d983e675a9&ain=087610110977&switchcmd=setswitchon

Aus:
HTML:
http://www.fritz.box/webservices/homeautoswitch.lua?sid=29a461d983e675a9&ain=087610110977&switchcmd=setswitchoff

Problem ist aber jetzt die SID die ändert sich bei jedem login auf der Weboberfläche von der Fritzbox...
kann man apple script irgend wie sagen melde dich an und finde die sid raus ?

habe das gefunden auf: http://www.msxfaq.de/tools/prtg/prtg-fritzbox.htm

Als Skript ruft man die URL "http://fritz.box/login_sid.lua[/[I]plain[/I]]" auf, und bekommt folgende XML mit einer leeren SID

[CODE]

<?xml version="1.0" encoding="UTF-8"?>
<SessionInfo>
<SID>0000000000000000</SID>
<Challenge>c2e0278d</Challenge>
<BlockTime>0</BlockTime>
<Rights/>
</SessionInfo>
[/CODE]


Dann codiert man das Kennwort mit dem Challenge per MD5 und sendet es erneut an die Loginseite. Hier ein Code-Sement aus einem anderen Skript

[CODE]

response = $Challenge."-".md5(mb_convert_encoding($Challenge."-".$this->Password

http://fritz.box/login_sid.lua ?response=".$response[/I][/CODE][/I]
 
Zuletzt bearbeitet:
ich push das ganze noch mal.

also ich komme leider nicht weiter. ich weiß nicht wie ich eine SID mit apple Script hinbekommen soll und wie ich die in die URL eintragen kann.

habe das hier gefunden, weiß aber nicht in wie weit mir das hilft:
Quelle: http://www.wehavemorefun.de/fritzbox/Anrufliste_von_der_Box_holen
Code:
#!/bin/sh

# Challenge abholen
ChallengeXML=`wget -O - "http://fritz.box/cgi-bin/webcm?getpage=../html/login_sid.xml" 2>/dev/null| grep Challenge`
Challenge=`echo $ChallengeXML | awk '{match($0,/>[^<>]+</); print substr($0,RSTART+1,RLENGTH-2)}'`

Passwd="xxxxx"

# login aufbauen und hashen
CPSTR="$Challenge-$Passwd"
MD5=`echo -n $CPSTR | iconv -f ISO8859-1 -t UTF-16LE | md5sum -b | awk '{print substr($0,1,32)}'`
RESPONSE="$Challenge-$MD5"
POSTDATA="login:command/response=$RESPONSE&getpage=../html/de/menus/menu2.html"

# login senden und SID herausfischen
SID=`wget -O - --post-data="$POSTDATA" "http://fritz.box/cgi-bin/webcm" 2>/dev/null| grep "name=\"sid\"" | head -1 | awk '{match($0,/value="[^"]+"/); print substr($0,RSTART+7,RLENGTH-8)}'`

# refresh der daten auslösen
wget -O /dev/null "http://fritz.box//cgi-bin/webcm?sid=$SID&getpage=..%2Fhtml%2Fde%2Fmenus%2Fmenu2.html&errorpage=..%2Fhtml%2Fde%2Fmenus%2Fmenu2.html&var%3Apagename=foncalls&var%3Aerrorpagename=foncalls&var%3Amenu=home&var%3Apagemaster=&var%3Aactivtype=pppoe&var%3AtabInetstat=0&var%3Aweckernr=&logger%3Asettings%2Ffilter=2"

# CSV runterladen
wget -O ../fb_anrufliste.csv "http://fritz.box/cgi-bin/webcm?sid=$SID&getpage=..%2Fhtml%2Fde%2FFRITZ%21Box_Anrufliste.csv" 2>/dev/null
 
Mal den Thread wiederbeleben:

Andy15073, hattest du damals eine Lösung gefunden?
 
Zuletzt bearbeitet:
eine lösung wäre das aktuelle fritzswitch. siehe #9.
 
Danke Olivetti!
 
Diese Seite ist bekannt?
https://avm.de/service/schnittstellen/

Ist zwar nichts zu Apple Skript dabei, beschreibt aber unter anderem die Mechanismen rund um Login, SID und Schaltmöglichkeiten.
 
Für alle, die noch Interesse an dem Thema haben, gibt es hier ein Artikel von der c't und in den Kommentaren ist ein ShellScript zur Datenabfrage - damit müßte sich auch ein EIN- und AUS-Schalten realisieren lassen.

https://www.heise.de/select/ct/2016/7/1459414791794586
 
Zurück
Oben Unten