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?
Joachim
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?
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! Tolle Geschichte!
Gibt es eine einfache Möglichkeit, das Ergebnis als Info in das Webfront einzubauen?
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.