Hallo,
da ich wissen wollte welche 1-Wire Bausteine bei mir im System verbaut sind und ich irgendwie eine Möglichkeit zur Erstellung einer Übersicht gesucht habe, habe ich 2 Scripte geschrieben.
Das erste Script erstellt eine Datei 1Wire.txt im IPS-Verzeichnis. Diese Datei lässt sich wunderbar mit Excel öffnen und weiterverarbeiten uvm. (siehe Bild)
<?
// Skript zum Auslesen der 1-Wire Bausteine in IpSymCon
// Ausgabe: Legt die Datei 1Wire.txt im IPSymcon-Hauptverzeichnis an und zeigt es in der Skriptausgabe
// ObjektID, Type des 1-WireBaustein, Bausteinart, Seriennummer, Kategorie/Ort
//
// Datum: 20.07.2009
// läuft mit v2.0
// brdiver677
$guid = "{9317CC5B-4E1D-4440-AF3A-5CC7FB42CCAA}";
$ids = IPS_GetInstancesByModuleID($guid);
$dir = IPS_GetKernelDir();
$datei = fopen($dir."1Wire.txt","w");
echo $dir."1Wire.txt erstellt.
";
echo "ObjID Typ Art SN Ort
";
echo "-----------------------------------------------------------------
";
fwrite($datei, "ObjektID Typ Art SN Ort
");
foreach($ids as $id)
{
$sn = TMEX_GetDevice($id);
$arr1 = str_split($sn);
$fam_code = $arr1[14].$arr1[15];
switch($fam_code) {
case '05': $b_id="2405";$b_bez="1-channel addressable switch";break;
case '10': $b_id="18S20";$b_bez="Temperaturfühler";break;
case '20': $b_id="2450";$b_bez="4-fach AD-Wandler";break;
case '26': $b_id="2438";$b_bez="Smart Battery Monitor";break;
case '28': $b_id="18B20";$b_bez="Temperaturfühler";break;
case '29': $b_id="2408";$b_bez="8-channel addressable switch";break;
case '1D': $b_id="2423";$b_bez="4k ram with counter";break;
case '2C': $b_id="2890";$b_bez="digital potentiomete";break;
case '3A': $b_id="2413";$b_bez="2-channel addressable switch";break;
default: $b_id="n/a";$b_bez="n/a";break;
}
echo $id." ".$b_id." ".$b_bez." ".$sn." ".IPS_GetLocation($id)."
";
fwrite($datei, $id." ".$b_id." ".$b_bez." ".$sn." ".IPS_GetLocation($id)."
");
}
$timestamp = time();
$datum = date("d.m.Y",$timestamp);
$uhrzeit = date("H:i",$timestamp);
echo "
Stand: ".$datum," ",$uhrzeit," Uhr";
fwrite($datei,"Stand: ".$datum." ".$uhrzeit." Uhr
");
fclose($datei);
?>
Das zweite Script erstellt eine Datei 1Wire.html im IPS-Verzeichnis. Diese Datei lässt sich mit einem beliebigen Browser öffnen, ausdrucken uvm. (siehe Bild)
<?
// Skript zum Auslesen der 1-Wire Bausteine in IpSymCon
// Ausgabe: ObjektID, Type des 1-WireBaustein, Bausteinart, Seriennummer, Kategorie/Ort
// Erstellt eine HTML-Datei im IPS-Verzeichnis
// Datum: 20.07.2009
// läuft mit v2.0
// brdiver677
$guid = "{9317CC5B-4E1D-4440-AF3A-5CC7FB42CCAA}";
$ids = IPS_GetInstancesByModuleID($guid);
$dir = IPS_GetKernelDir();
$datei = fopen($dir."1Wire.html","w");
fwrite ($datei,"<html>
<body>
");
fwrite ($datei, "<h1>1-Wire Devices</h1>
");
fwrite ($datei, "<table border='1'>
");
fwrite ($datei,"<thead>
<tr>
<th style='padding-left:5px'>ObjektID</th>
<th style='padding-left:5px'>Typ</th>
<th style='padding-left:5px'>Art</th>
<th style='padding-left:5px'>Seriennummer</th>
<th style='padding-left:5px'>Kategorie/Ort</th>
</tr>
</thead>
");
fwrite ($datei,"<tbody>
");
foreach($ids as $id)
{
$sn = TMEX_GetDevice($id);
$arr1 = str_split($sn);
$fam_code = $arr1[14].$arr1[15];
switch($fam_code) {
case '05': $b_id="2405";$b_bez="1-channel addressable switch";break;
case '10': $b_id="18S20";$b_bez="Temperaturfühler";break;
case '20': $b_id="2450";$b_bez="4-fach AD-Wandler";break;
case '26': $b_id="2438";$b_bez="Smart Battery Monitor";break;
case '28': $b_id="18B20";$b_bez="Temperaturfühler";break;
case '29': $b_id="2408";$b_bez="8-channel addressable switch";break;
case '1D': $b_id="2423";$b_bez="4k ram with counter";break;
case '2C': $b_id="2890";$b_bez="digital potentiomete";break;
case '3A': $b_id="2413";$b_bez="2-channel addressable switch";break;
default: $b_id="n/a";$b_bez="n/a";break;
}
fwrite($datei,"<tr>
");
fwrite($datei,"<td style='padding-left:7px'>".$id."</td>
");
fwrite($datei,"<td style='padding-left:7px'>".$b_id."</td>
");
fwrite($datei,"<td style='padding-left:7px'>".$b_bez."</td>
");
fwrite($datei,"<td style='padding-left:7px'>".$sn."</td>
");
fwrite($datei,"<td style='padding-left:7px'>".IPS_GetLocation($id)."</td>
");
fwrite($datei,"</tr>
");
}
fwrite ($datei,"</tbody>
");
fwrite ($datei,"</table>
<br>");
$timestamp = time();
$datum = date("d.m.Y",$timestamp);
$uhrzeit = date("H:i",$timestamp);
fwrite($datei,"Stand: ".$datum." ".$uhrzeit." Uhr
");
fwrite ($datei, "</html>
</body>");
fclose($datei);
?>
Ich möchte nur noch darauf hinweisen, dass ich die Grundidee aus einem älteren Thread übernommen habe und eine Möglichkeit der Weiterverarbeitung bzw. Drucken schaffen wollte. Diese Grundidee bzw. Basis für mein Script stammt von paresy.
Das Auslesen des Family Codes habe ich dazu genutzt die Art und Typ des Bausteins in der Liste zu integrieren.
Viele Grüße
Björn