Es gibt ein neues Erkennungsbit für diese Thermostate. Leider besitze ich keins und könnte so nur auf "gut Glück" was basteln. Statt dem Ein-/Ausschalter einen +/- Schalter wäre eine Idee, oder lässt sich das auch ein-/ausschalten? Dann wäre der +/- Schalter zusätzlich.Hat sich schon mal jemand mit dem comet Thermostat auseinander gesetzt. Wird angezeigt, auch die Temperatur, jetzt bräuchte man ja eigentlih nur noch ein + und + um die temp rauf und runter zu stellen.
<?php
/*
+---------------------------------------------------------------------+
| |
| SensorAndSwitch PSG-Script |
| =============================================================== |
| Wetter Web (curl) |
| --------------------------------------------------------------- |
| openweathermap.org |
| Informationen von obiger Homepage für den Ort, der anhand der |
| in den Einstellungen eingelesenen Längen- und Breitengraden |
| ermittelt wurde. |
| |
| (C)2014/15 BlueDragon |
| |
+---------------------------------------------------------------------+
*/
include __DIR__."/../include/psg.php";
$gerarray=getGerInfo(substr(basename(__FILE__,".php"),3));
if ($gerarray["Counter"]>=9) {
$ver="V#V 4.87#";
$zeit=date("H:i");
$wetterkey="hier hinein den APPID-Key schreiben mit An- und Ausführungszeichen";
$url="http://api.openweathermap.org/data/2.5/weather?lat=".BREITENGRAD."&lon=".LAENGENGRAD."&APPID=".$wetterkey."&mode=xml&units=metric&lang=de";
$Status=web($url,$post);
if ($Status) {
$Cont=simplexml_load_string($Status);
$Temp=number_format(sprintf('%.1f',$Cont->temperature->attributes()->value),1,",",".");
$Wind=$Cont->wind->speed->attributes()->name;
$WGeschwindigkeit=number_format(sprintf('%.2f',$Cont->wind->speed->attributes()->value*6),0,",",".");
$WRichtung=$Cont->wind->direction->attributes()->code;
$Luftdruck=number_format(sprintf('%.0f',$Cont->pressure->attributes()->value),0,",",".");
$Feuchtigkeit=number_format(sprintf('%.0f',$Cont->humidity->attributes()->value),0,",",".");
$Stadt=$Cont->city->attributes()->name;
$Symbol='<img src="http://openweathermap.org/img/w/'.$Cont->weather->attributes()->icon.'.png" width="50" height="50">';
$Wetter=$Cont->weather->attributes()->value;
$temp=sprintf('%.1f',$Cont->temperature->attributes()->value);
$feucht=sprintf('%.0f',$Cont->humidity->attributes()->value);
$luftd=sprintf('%.0f',$Cont->pressure->attributes()->value);
$zeitl=$gerarray["zeitl"];
$zeith=date("G")*1;
$tempz=unserialize($gerarray["tempz"]);
$feuchtz=unserialize($gerarray["feuchtz"]);
$luftdz=unserialize($gerarray["luftdz"]);
if ($zeith!=$zeitl) {
$tempz[$zeith]=array();
$feuchtz[$zeith]=array();
$luftdz[$zeith]=array();
$zeitl=$zeith;
}
if ($zeitl>23) {$zeitl=0;}
if ($temp<$tempz[$zeith]["min"] or !isset($tempz[$zeith]["min"])) {
$tempz[$zeith]["min"]=$temp;
}
if ($temp>$tempz[$zeith]["max"] or !isset($tempz[$zeith]["max"])) {
$tempz[$zeith]["max"]=$temp;
}
if ($feucht<$feuchtz[$zeith]["min"] or !isset($feuchtz[$zeith]["min"])) {
$feuchtz[$zeith]["min"]=$feucht;
}
if ($feucht>$feuchtz[$zeith]["max"] or !isset($feuchtz[$zeith]["max"])) {
$feuchtz[$zeith]["max"]=$feucht;
}
if ($luftd<$luftdz[$zeith]["min"] or !isset($luftdz[$zeith]["min"])) {
$luftdz[$zeith]["min"]=$luftd;
}
if ($luftd>$luftdz[$zeith]["max"] or !isset($luftdz[$zeith]["max"])) {
$luftdz[$zeith]["max"]=$luftd;
}
$echo="T#".sprintf('%.2f',$Cont->temperature->attributes()->value)."#P#".'<div style="font-size:12px;text-align:right;width:60px;position:absolute;top:-12px;">'.$Luftdruck.' hPa</div><div style="font-size:12px;text-align:left;width:60px;position:absolute;top:14px;"><img src="'.picdesign("wind.png").'" border="0" height="24"></div><div style="font-size:12px;text-align:right;width:60px;position:absolute;top:12px;">'.$WRichtung.'</div><div style="font-size:12px;text-align:right;width:60px;position:absolute;top:26px;">'.$WGeschwindigkeit.' km/h</div><div style="font-size:14px;text-align:right;width:310px;position:absolute;top:-20px;">'.$Symbol.'</div><div style="font-size:14px;text-align:right;width:310px;position:absolute;top:25px;left:0px;">'.$Wetter.'</div><div style="font-size:14px;text-align:left;width:30px;position:absolute;top:-20px;left:70px;"><img class="block" src="'.picdesign("temp.png").'" border="0"></div><div style="font-size:14px;text-align:right;width:100px;position:absolute;top:-12px;left:70px;"><img src="'.picdesign("feucht.png").'" border="0" height="12"> '.$Feuchtigkeit."%%".'</div><div style="font-size:22px;text-align:right;width:100px;position:absolute;top:2px;left:70px;">'.$Temp."°C".'</div>'."*HTML#V#".$Wetter."*ANZWETTER##V#".$Feuchtigkeit."*ANZFEUCHT#V#".$Symbol."*ANZSYMBOL#V#".$WRichtung."*ANZWRICHTUNG#V#".$WGeschwindigkeit."*ANZWGESCHWINDIGKEIT#V#".$Luftdruck."*ANZLUFTDRUCK#V#".$zeit."*Mode#V#".serialize($tempz)."*tempz#V#".serialize($feuchtz)."*feuchtz#V#".serialize($luftdz)."*luftdz#V#".$zeith."*zeith#V#".$zeitl."*zeitl#V#".$zeit."*ANZZEITUPDATE#".$ver;
}
else {
$echo=$ver."C##";
}
}
else {
$echo=$ver."C##";
}
echo $echo;
exit;
?>
<?php
define('CMD',"http://fritz.box/webservices/homeautoswitch.lua'?sid=".SID."&switchcmd=");
define('TSK',$_GET['task']);
define('AIN',$_GET['ain']);
if (is_numeric(TSK)) { //Neue Temperatur ist eine ZAHL
$rsp = file_get_contents(CMD.'sethkrtsoll&param='.(TSK*2).'&ain='.AIN);
} else {
switch (TSK) { //AN/AUS für FritzDECT
case 'AN':
$rsp = file_get_contents(CMD.'setswitchon&ain='.AIN); break;
default:
$rsp = file_get_contents(CMD.'setswitchoff&ain='.AIN);
}
}
$i = 1;
$dect = simplexml_load_string(file_get_contents(CMD."getdevicelistinfos"));
foreach ($dect->device as $dev) {
$n = $dev->name;
$m = $dev['functionbitmask']; //CometDECT hat hier 320er Maske - statt 896 bei FritzDECT200
$act = str_replace(' ','',$dev->attributes()->identifier); //Wirft evtl. Leerzeichen aus der AIN raus
if ($m == 320) {
$t = ($dev->hkr->tist)/2; //IST-Temp auslesen
$s = ($dev->hkr->tsoll)/2; //SOLL-Temp auslesen
$a = ($dev->hkr->absenk)/2;
$k = ($dev->hkr->komfort)/2;
$cmd = "'".$act."',".$i;
$html .= '<td align="center" valign="top"><input type="button" value="'.$n.'" style="border-width:0;"></td>';
$html .= '<td nowrap>';
$html .= '<input type="button" value="–" onClick="downClick('.$s.','.$i.');">';
$html .= '<input type="button" value="'.$s.'°" id="click'.$i.'" onClick="chgTemp('.$cmd.');">';
$html .= '<input type="button" value="+" onClick="upClick('.$s.','.$i.');"></td>';
$html .= '<td align="center" nowrap>'.sprintf('%.1f',$t).'°</td><td class="klein">'.$a.'⊥'.$k.'°</td></tr>';
}
$i += 1;
}
?>
<!DOCTYPE html>
<html><head></head>
<body>
<table border="0" cellspacing="3" style="max-width:430px;">
<tr><th colspan="5" align="center">FritzBox SmartHome</th></tr>
<tr align="center">
<td width="35%">Geräte</td>
<td width="25%">Bereich</td>
<td width="20%">Ist</td>
<td width="17%">Soll</td>
</tr>
<tr><td colspan="5"><hr></td></tr>
<?php echo $html;?>
<tr><td colspan="5"><hr></td></tr>
</table>
</body>
<script type="text/javascript">
temp = 18;
grau = '#707070';
function chgTemp(akt,zahl) {
var item = document.getElementById("click"+zahl);
var soll = parseFloat(item.value.replace(/[^-.0-9]/g,''));
item.style.color = 'blue';
window.location.href = '?ain='+akt+'&task='+soll;
}
function upClick(old,zahl) {
var item = document.getElementById("click"+zahl);
var temp = parseFloat(item.value.replace(/[^-.0-9]/g,'')); //um das °-Zeichen auszufiltern
temp += 0.5;
if (temp > 28) temp = 28;
if (temp == old) {
item.style.color = grau;
item.style.fontWeight = 'normal';
} else {
item.style.color = 'blue';
item.style.fontWeight = 'bold';
}
item.value = temp;
item.style.fontWeight = 'bold';
}
function downClick(old,zahl) {
var item = document.getElementById("click"+zahl);
var temp = parseFloat(item.value.replace(/[^-.0-9]/g,''));
temp -= 0.5;
if (temp < 10) temp = 10;
if (temp == old) {
item.style.color = grau;
item.style.fontWeight = 'normal';
} else {
item.style.color = 'blue';
item.style.fontWeight = 'bold';
}
item.value = temp;
item.style.fontWeight = 'bold';
}
</script>
</html>
$befehl='sudo df | grep "rootfs"';
$befehl='sudo df | grep "/dev/root"';