-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathlist-devices.php
53 lines (50 loc) · 1.89 KB
/
list-devices.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?php
//Anmeldedaten und SessionID Funktion einbinden
include_once('SIDauslesen.php');
//Login in Fritzbox und SID ermitteln
$sid=get_sid($loginurl,$username,$password);
if (!$sid ) {
die ("Anmeldefehler, keine Session-ID erhalten!\n");
}
//SmarthomeURL mit SID Parameter ergänzen
$query_url=$ahaurl.'?sid='.$sid;
//Abfrage aller eingetragenen Geräte mit getdevicelistinfo Kommando
$xmlstring=chop(@file_get_contents($query_url."&switchcmd=getdevicelistinfos"));
$xml = @simplexml_load_string($xmlstring);
//Antwort prüfen, ob ein xml-Object mit einem Device-Tag existiert
if (!$xml || !$xml->device ) {
die ("Error: Unerwartete Antwort oder Komunikationsfehler bei cmd=getdevicelistinfos");
}
//Schleife über alle gelisteten Geräte
foreach ($xml->device as $device) {
$attributes=$device->attributes();
$ain=(string)$attributes['identifier']; //Lese Geräte AIN
$name=(string)$device->name; //lese Gerätename
$txt="AIN $ain ($name) ";
//Check Funktionsbitmask
$mask=(integer)$attributes['functionbitmask'];
$has_temperatur=($mask & (1<<8))>0;
$has_switch=($mask & (1<<9))>0;
//Behandle Funktionen
if ($has_temperatur) {
//bit8=Temperatur Sensor
$temperatur=((integer)$device->temperature->celsius)/10;
$offset=((integer)$device->temperature->offset)/10;
$temperatur=$temperatur+$offset;
$txt.=sprintf (" Temperatur:(Temp:%02.1fC, Offset:%02.1f) ;",$temperatur,$offset);
}
if ($has_switch) {
//bit9=schaltbare Steckdose
$status=(string)$device->switch->state;
$status=($status=="1");
$txt.= " Steckdose(Status:".($status?"On":"Off")."); ";
}
//... weitere Funktionen
print $txt. "\n";
}
//$query_url=$ahaurl.'?sid='.$sid;
//Abfrage aller eingetragenen Geräte mit getdevicelistinfo Kommando
//$xmlstring=chop(@file_get_contents($query_url."&switchcmd=getdevicelistinfos"));
//$xml = @simplexml_load_string($xmlstring);
print $xmlstring
?>