Nachdem nun alles verkabelt ist müssen die benötigten Module noch geladen werden.
modprobe w1-gpio
modprobe w1-therm
damit die Module dann immer beim Start geladen werden muss man diese einfach in der modules Datei eintragen:
/etc/modules
Wenn alles richtig angeschlossen ist, befinden sich im Ordner ("/sys/bus/w1/devices/w1_bus_master1") für jeden Fühler ein Verzeichnis mit den Daten. Dieses Verzeichnis im Script anpassen - zB „28-000003bad286“
Software: Webserver auf Raspi
Script zum auslesen der Temperaturen: (vielleicht kann da ein Linux-Pro noch dran arbeiten)
abgelegt in „/home/pi/temps.py“
toll das sich jemand schon mal damit beschäftigt hat!
Mir steht das auch demnächst bevor…
Ich habe mal ein paar Fragen, vielleicht kannst Du die ja (oder auch jemand anders) beantworten.
Bei der 1-Wire-Schnittstelle am Raspberry Pi wird ja statt der mir sonst bekannten 5V der Pin mit den 3,3 V genutzt. Wird man diese Schnittstelle auch nutzen können um ihn an den 1-Wire-Hub von Eservice-online anzuschließen?
Es gibt ja für den Raspberry Pi auch den OneWireFileServer (owfs). Hast Du den benutzt?
Werden mit der 1-Wire-Schnittstelle wie Du sie umgesetzt hast auch andere 1-Wire-Bauteile erkannt?
da mich das ganze nicht so befriedigt hat, bin ich nochmals über die Bücher, und habe den Raspi mal aufgefrischt. Nun werden die Daten in eine mySql geschrieben, Google-Graph werden direkt auf dem Raspi erstellt. Die Daten müssen somit in IPS nicht mehr geloggt werden.
Leider ist das ganze ein wenig „halbherzig“, das heisst, es werden DB-Name, DB-Feldernamen, Host-Name usw. nicht überall übernommen. Also nach dem aufsetzen wartet noch ziemlich Arbeit.
Hier noch der Scriptteil zum Einlesen in IPS:
$host="192.168.1.242"; // Host name
$username="xxxxx"; // Mysql username
$password="xxxxx"; // Mysql password
$db_name="dlog"; // Database name
$tbl_name="dlogtab"; // Table name
//-------------- SQL-Connect und Datenbank auswählen ---------------------------
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
//-------------- letzte ID erkennen und Daten in array schreiben ---------------
$query_LOG = mysql_query("SELECT * FROM dlogtab ORDER BY id DESC LIMIT 1");
$lastlog = mysql_fetch_array($query_LOG);
//print_r ($lastlog);
MYSQL_CLOSE();
$zeit = $lastlog[1];
$zeit_min = substr($zeit, 14, 2);
$schlafen = floatval($lastlog[2]);
$dusche = floatval($lastlog[3]);
$eschrank = floatval($lastlog[4]);
$balkon = floatval($lastlog[5]);
$reserve = floatval($lastlog[6]);
$fumoir = floatval($lastlog[7]);
$hangar = floatval($lastlog[8]);
$essen = floatval($lastlog[9]);
Aktuell hab ich noch das Problem, das die Sensoren zwischendurch einen Nuller reinhauen. Das heisst, zwischendurch wird ein Wert mit -0.062 in die DB geschrieben.
Ich habe an jedem ds18b20 einen Wiederstand dran. Irgendwo hab ich gelesen, dass es nur einen bräuchte im „Bus“.
Kann dies ein 1-Wire-Kenner bestätigen und könnte dies der Grund für die Nuller sein?
Helmut hat mir inzwischen eine Lernstunde in 1-Wire gegeben. Danke. Ich behalte es jetzt noch ein wenig im Auge und werde dann mal Resultate veröffentlichen.
nachdem ich heute recht erfolgreich nach Deiner Anleitung (musste nur die Berechtigung von /ausgabe.php ändern) das auch so umgesetzt habe (wie in Post 1) wollte ich gerne wissen, wie denn so die Langzeiterfahrung ist ? Und: was hatte Dich denn an der Lösung in Post#1 gestört ?
Und: hast Du die Sensoren nun so umgebaut wie Helmut und Boui vorgeschlagen hatten ?
So nachdem ich mich jetzt auch damit beschäftigt habe hier einmal meine ersten Tests (siehe Steckboard Bilder mit 2 Stück bevor ich alle 7 entsprechend löten werde; Ziel ist es im Heizraum entsprechend diverse Temperaturen mit zu loggen)
Ich mache es allerdings nicht über den Webserver auf dem Raspberry sondern via ssh Aufruf mit folgendem Skript da ich alle 30sec den Status lesen will und nicht nur 1x pro Minute (Anzeige Temperatur entsprechend auf 3 Nachkomma Stellen eingestellt über entsprechendes eigenes Profil der IP-Symcon Variablen)
<?
//SSH Login : Beginn
include('Net/SSH2.php');
// IP vom Raspberry
$ssh = new Net_SSH2('10.0.0.22');
//Anmeldeuser und Passwort für Raspberry nach UFT8 konvertieren
//nur mit UTF8 Einstellung klappt auch ein putty login
//ohne diese Konvertierung erscheint immer "Login Failed" auch hier per ssh->login
$username = utf8_encode( 'pi' );
$password = utf8_encode( 'hiermeinpasswort' );
if (!$ssh->login($username, $password)) // Hier der echte Login
{
exit('Login Failed');
}
//SSH Login: Ende
//GPIO Temperaturen holen
$temp = $ssh->exec("python /home/pi/temps.py");
//Alle Zeilen von String in Array splitten
$temparray = explode("
",$temp);
//Durch Leerzeichen getrennt pro Array Eintrag erneut in eigenes Array splitten
$tempgpio1array = explode(" ",$temparray[0]);
$tempgpio1 = $tempgpio1array[1];
$tempgpio1 = str_replace('.', ',', $tempgpio1);
$tempgpio2array = explode(" ",$temparray[1]);
$tempgpio2 = $tempgpio2array[1];
$tempgpio2 = str_replace('.', ',', $tempgpio2);
SetValue(45078 /*[Monitoring\RaspberryGPIO\TempGPIO1]*/ , $tempgpio1);
SetValue(47793 /*[Monitoring\RaspberryGPIO\TempGPIO2]*/ , $tempgpio2);
?>