1-Wire Seriennummer aus IPS auslesen

Hallo Leute,

ich hatte es schon irgendwo hier im Forum gefunden, finde es aber aus irgendeinem Grund leider nicht wieder:
Wie kann ich im PHP-Skript die Seriennummer (GeräteID) eines bestimmten 1-Wire Elements auslesen?:confused:

Joachim

Schau mal hier!
Da habe ich mal mein Script für Homematic abgelegt.
Das müsstest du dir eben für 1-Wire etwas umstricken. Sollte aber auch funktionieren.

Hallo,

ich habe dieses Skript aus dem Forum um „alle“ Seriennummern in eine Datei zu schreiben


   <?
// 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_GetInstanceListByModuleID($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);

?>


Hallo nancilla und saerdna76,

vielen Dank für Eure Antworten!
Was ich wohl gesucht hatte war „TMEX_GetDevice“ - eingesetzt in mein Skript, funktioniert es nun so, wie ich es mir vorgestellt habe.

Das Skript von saerdna76 habe ich mir mal gleich eingebaut - wer weiss wozu man es noch gebrauchen kann!:cool: Tolle Geschichte!

Gibt es eine einfache Möglichkeit, das Ergebnis als Info in das Webfront einzubauen?:confused:

Joachim

Hallo,

ich möchte diese Gedanken auffrischen, da ich auch heute über dieses Script gestolpert bin und es sehr gut finde. Da ich die Daten später mal in eine Mysql-DB schreiben möchte, muß ich sie ja erstmal auslesen.

Also in der Schleife noch ein

TMEX_RequestRead($iid);

abgesetzt. Und dann ein

GetValue($vid).

Wenn ich manuelle Werte einsetze - kein Problem. Nun möchte ich die entstehende Tabelle erweitern und eben den aktuellen Wert der Variable (sprich die Temperatur) auch mit ausgeben. Ich muss irgendwie von den ausgelesenen „OneWire“-Instanzen (und deren IDs) auf die zugehörende Variablen-ID kommen, denn diese wird bei GetValue() verlangt.

Kann jemand helfen? Gibt’s dafür eine Funktion?

Danke.
Andreas.