Hallo -Forum
anbei ein kleines Skript, mit dem sich alle per volkszaehler.org - home erfassten Kanäle in IPS anzeigen lassen.
Skript muss nur irgendwo in IPS rumgammeln, MYSQL Passwörter etc. sind natürlich anzupassen.
<?
// max Ausführungszeit für Script in Sekunden
ini_set("max_execution_time", 60);
$link = mysql_connect(host, 'vz', *****);
if (!$link) {
die('Verbindung nicht möglich : ' . mysql_error());
}
$linhkdb = mysql_select_db('volkszaehler', $link);
if (!$linhkdb) {
die ('Kann foo nicht benutzen : ' . mysql_error());
}
$sql='SELECT entities.uuid, (SELECT properties.value FROM properties WHERE (((properties.pkey)="resolution") AND ((properties.entity_id)=entities.id))) AS Ausdr1 FROM entities;';
$result=mysql_query($sql,$link);
if (!$result) {
die ('Kann foo nicht benutzen : ' . mysql_error());
}
while ($row = mysql_fetch_row($result)){
$subsql='SELECT entities.uuid, data.timestamp, data.value, properties.value, entities.type, UNIX_TIMESTAMP()-data.timestamp/1000 FROM (data INNER JOIN entities ON data.channel_id = entities.id) LEFT JOIN properties ON entities.id = properties.entity_id WHERE (((entities.uuid)="'.$row[0].'") AND ((properties.pkey)="title")) ORDER BY data.timestamp DESC LIMIT 2;';
$result2=mysql_query($subsql,$link);
/* echo $row[0]." ".mysql_numrows($result2).chr(10); */
if (mysql_numrows($result2)>0){
if (!$result2) {
die ('Kann foo nicht benutzen : ' . mysql_error());
}
$row2 = mysql_fetch_row($result2);
if (!($subitem=@IPS_GetObjectIDByName($row[0],$IPS_SELF)))
{
echo "Neue uuid=$row[0] anlegen";
$subitem=IPS_CreateCategory();
IPS_SetName($subitem, $row[0]);
IPS_SetParent($subitem, $IPS_SELF);
}
if (!($subsubitem=@IPS_GetObjectIDByName("title",$subitem)))
{
$subsubitem=IPS_CreateVariable(3);
IPS_SetName($subsubitem, "title");
IPS_SetParent($subsubitem, $subitem);
}
setvaluestring($subsubitem,$row2[3]);
if (!($subsubitem=@IPS_GetObjectIDByName("timestamp",$subitem)))
{
$subsubitem=IPS_CreateVariable(3);
IPS_SetName($subsubitem, "timestamp");
IPS_SetParent($subsubitem, $subitem);
}
$t0=floatval($row2[1]);
setvaluestring($subsubitem,$row2[1]);
if (!($subsubitem=@IPS_GetObjectIDByName("value",$subitem)))
{
$subsubitem=IPS_CreateVariable(2);
IPS_SetName($subsubitem, "value");
IPS_SetParent($subsubitem, $subitem);
}
setvaluefloat($subsubitem,floatval($row2[2]));
if (!($subsubitem=@IPS_GetObjectIDByName("type",$subitem)))
{
$subsubitem=IPS_CreateVariable(3);
IPS_SetName($subsubitem, "type");
IPS_SetParent($subsubitem, $subitem);
}
setvaluestring($subsubitem,$row2[4]);
if (!($subsubitem=@IPS_GetObjectIDByName("resolution",$subitem)))
{
$subsubitem=IPS_CreateVariable(1);
IPS_SetName($subsubitem, "resolution");
IPS_SetParent($subsubitem, $subitem);
}
$res=intval($row[1]);
if ($res==0) $res=1;
setvalueinteger($subsubitem,$res);
if (!($subsubitem=@IPS_GetObjectIDByName("age",$subitem)))
{
$subsubitem=IPS_CreateVariable(2);
IPS_SetName($subsubitem, "age");
IPS_SetParent($subsubitem, $subitem);
}
$a0=floatval($row2[5]);
setvaluefloat($subsubitem,$a0);
if (mysql_numrows($result2)>1){
$row2 = mysql_fetch_row($result2);
if (!($subsubitem=@IPS_GetObjectIDByName("preage",$subitem)))
{
$subsubitem=IPS_CreateVariable(2);
IPS_SetName($subsubitem, "preage");
IPS_SetParent($subsubitem, $subitem);
}
$a1=($t0-floatval($row2[1]))/1000;
setvaluefloat($subsubitem,$a1);
}
if (!($subsubitem=@IPS_GetObjectIDByName("current",$subitem)))
{
$subsubitem=IPS_CreateVariable(2);
IPS_SetName($subsubitem, "current");
IPS_SetParent($subsubitem, $subitem);
}
$curr=round(3600*1000/$res/max($a0,$a1));
setvaluefloat($subsubitem,$curr);
}
}
?>