Hi topeg,
vielen Dank nochmal für die super Hilfe bis her. Ich habe mich nochmal ein bißchen informiert und nun eine tolle Möglichkeit gefunden, immer die aktuellen Daten zu bekommen. Dafür muss ich nun nur noch die Zeile, die mit L: beginnt zerlegen. ICh habe dazu den PHP code vereinfacht. Leider klappt es noch nicht mit deinen Funktionen. VIelleicht hast du ja einen Tipp, wie man diesen Code entsprechend in Perl über setzen kann.
Vielen Dank.
Gruß kami
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
if (substr($v,0,2) == "L:")
{
$data["meta"]["DevCount"]=5;
$v = substr($v,2,strlen($v));
$str = base64_decode($v);
$pos = 0;
for($j = 1 ; $j <= $data["meta"]["DevCount"]; $j++)
{
unset($hilf);
$hilf["ReadLength"] = htmlentities(ord(substr($str,$pos,1)));
$pos += 1;
for($i = $pos; $i < (3+$pos) ; $i++)
$hilf["RFAdress"] .= str_pad(dechex(ord(substr($str,$i,1))),2,"0",STR_PAD_LEFT);
$pos += 5;
$hilf["Data2"] .= str_pad(decbin(ord(substr($str,$pos,1))),8,"0",STR_PAD_LEFT)."";
$deviceconf[$hilf["RFAdress"]]["LowBatt"] = substr($hilf["Data2"],0,1);
$pos += 1;
if($hilf["ReadLength"] == 11)
{
$pos += 1;
$deviceconf[$hilf["RFAdress"]]["Temperature"] = (ord(substr($str,$pos,1))/2)."";
$pos += 4;
}
switch (substr($hilf["Data2"],6,2))
{
case "00" : $deviceconf[$hilf["RFAdress"]]["Mode"] = "auto"; break;
case "01" : $deviceconf[$hilf["RFAdress"]]["Mode"] = "manu"; break;
case "10" : $deviceconf[$hilf["RFAdress"]]["Mode"] = "vacation"; break;
case "11" : $deviceconf[$hilf["RFAdress"]]["Mode"] = "boost"; break;
}
}
}