Index.php
<?php
// Welche Abfrage soll ausgeführt werden
$cmdtmp='gettemperature'; // Abfrage der Temperatur am AVM Heizkörper
$cmdsoll='gethkrtsoll'; // Abfrage der soll Temperatur vom AVM Heizkörper
$cmdtag='gethkrkomfort'; // Abfrage der Temperatur am Tab vom AVM Heizkörper
$cmdnacht='gethkrabsenk'; // Abfrage der Temperatur bei Nacht am AVM Heizkörper
// Einbinden der Daten Datei
include 'fritzbox.dat';
// Einbinden der aktuellen DECT Aktoren aus der Datei
include 'heizkoerper.dat';
// Skript zur Erzeugung der SID einbinden
shell_exec("SID.sh");
// Auslesen der SID aus der Datei, die zuvor erzeugt wurde
// Fehlermeldung anzeigen wenn keine SID für die Fritzbox erzeugt werden konnte
$sid = file_get_contents('last.SID'); // Die SID auslesen, die über SIDerzeugen.sh erstellt wurde
if (!$sid ) {
die ("Anmeldefehler, keine Session-ID erhalten!\n");
}
// Abfrage der Temperatur vom AVM Heizkörper Küche
$urltmp=$ahaurl."?sid=$sid"."&ain=".rawurlencode($ainHeizk1).'&switchcmd='.$cmdtmp;
$wertHK01 = file_get_contents($urltmp); // Abspeichern der Temperatur in einer Variable
// Temperatur wird in mW ausgegeben, anpassen für die Anzeige in Watt
$HK01 = substr($wertHK01, 0, -2); // Abtrennen Wert vor dem Komma
$HK02 = substr($wertHK01, 2, -1); // Abtrennen Wert hinter dem komma
$ainHeizk1 = "".$HK01.",".$HK02." °C"; // Zusammensetzen Wert mit Komma und Grad
// Abfrage der Temperatur vom AVM Heizkörper Schlafzimmer
$urltmp=$ahaurl."?sid=$sid"."&ain=".rawurlencode($ainHeizk2).'&switchcmd='.$cmdtmp;
$wertHK02 = file_get_contents($urltmp); // Abspeichern der Temperatur in einer Variable
$HK01 = substr($wertHK02, 0, -2); // Abtrennen Wert vor dem komma
$HK02 = substr($wertHK02, 2, -1); // Abtrennen Wert hinter dem Komma
$ainHeizk2 = "".$HK01.",".$HK02." °C"; // Zusammensetzen Wert mit Komma und Grad
// Abfrage der Temperatur von AVM Heizkörper Gästezimmer
$urltmp=$ahaurl."?sid=$sid"."&ain=".rawurlencode($ainHeizk3).'&switchcmd='.$cmdtmp;
$wertHK03 = file_get_contents($urltmp); // Abspeichern der Temperatur in einer Variable
$HK01 = substr($wertHK03, 0, -2); // Abtrennen Wert vor dem Komma
$HK02 = substr($wertHK03, 2, -1); // Abtrennen Wert hinter dem komma
$ainHeizk3 = "".$HK01.",".$HK02." °C"; // Zusammensetzen Wert mit Komma und grad
?>
Display More
fritzbox.dat
<?php
// Achtung alle Einträge müssen innerhalb des php Bereichs sein
// Kopfdaten dürfen nicht verändert werden !!!
//Login Adresse für die Fritzbox
$ahaurl = 'http://fritz.box/webservices/homeautoswitch.lua';
$loginurl = 'http://fritz.box/login_sid.lua';
$username = 'name';
$password = 'passwort';
?>
heizkoerper.dat
<?php
// hier die AIN Nummern eintragen für die AVM DECT Heizkörper
// nur Termostate von AVM
$ainHeizk1=""; // Heizung Küche
$ainHeizk2=""; // Heizung Schlafzimmer
$ainHeizk3=""; // Heizung Gästezimmer
$ainHeizk4="099950308576"; //Wohnzimmer
$ainHeizk5="";
$ainHeizk6="";
$ainHeizk7="";
$ainHeizk8="";
$ainHeizk9="";
$ainHeizk10="";
?>
Display More
SID.sh
#!/bin/bash
# Quelle: https://raspberrypiandstuff.wordpress.com/tag/fritzdect/
FBF="http://192.168.2.2" #<-- ggf. Anpassen
USER="name" # <--- hier
PASS="passwort" # < -- Hier
CHALLENGE=$(curl -s "${FBF}/login_sid.lua" | grep -Po '(?<=<Challenge>).*(?=</Challenge>)')
MD5=$(echo -n ${CHALLENGE}"-"${PASS} | iconv -f ISO8859-1 -t UTF-16LE | md5sum -b | awk '{print substr($0,1,32)}')
RESPONSE="${CHALLENGE}-${MD5}"
SID=$(curl -i -s -k -d "response=${RESPONSE}&username=${USER}" "${FBF}" | grep -Po -m 1 '(?<=sid=)[a-f\d]+')
echo $SID > last.SID
Alle Dateien sind im Ordner fritz auf einem Webserver mit xampp