Da die Temperatur-Daten jetzt in der Datenbank gespeichert werden, müssen wir sie auch auslesen:
<?phpecho"<h1>Temperaturen im Wohnzimmer</h1>";$link=mysql_connect("<server>",<user>", "<password>") or
die("Keine Verbindung möglich:" . mysql_error());
mysql_select_db("<Database>") or die("Auswahl der Datenbank fehlgeschlagen");
// Die letzten 10 Werte
$query = "SELECT * FROM temperature ORDER BY TIMESTAMP DESC LIMIT 1,10";
$result = mysql_query($query) or die("Anfrage fehlgeschlagen:" . mysql_error());
while($row = mysql_fetch_object($result))
{
echo $row->Timestamp ."".$row->Temperature."<br/>";
}
mysql_close($link);
?>
<?php
echo "<h1>Temperaturen im Wohnzimmer</h1>";
$link = mysql_connect("<server>", <user>", "<password>") or
die("Keine Verbindung möglich: " . mysql_error());
mysql_select_db("<Database>") or die("Auswahl der Datenbank fehlgeschlagen");
// Die letzten 10 Werte
$query = "SELECT * FROM temperature ORDER BY TIMESTAMP DESC LIMIT 1,10";
$result = mysql_query($query) or die("Anfrage fehlgeschlagen: " . mysql_error());
while($row = mysql_fetch_object($result))
{
echo $row->Timestamp ." ".$row->Temperature."<br/>";
}
mysql_close($link);
?>
Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined.
Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.
Von Fritzing ist schon vor einem knappen Monat Version 0.3.8. alpha erschienen. Mit Fritzing lassen sich elektronische Schaltungen im Arduino-Umfeld sehr gut und einfach darstellen.
Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined.
Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.
Mit der pChart (http://pchart.sourceforge.net) Bibliothek habe ich eine einfache Möglichkeit gefunden, die Temperaturen grafisch darzustellen. Hier ein erstes Beispiel, anhand einer Vorlage aus der pChart Bibliothek. War recht einfach abzuändern, hat mich nur wenige Minuten gekostet, die Anpassungen vorzunehmen.
Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined.
Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.
Ausgehend von Mats Vanselows getTemperatur() Funktion (http://www.mats-vanselow.de/2009/03/25/temperaturen-messen-mit-arduino und einem Beispiel aus der Ethernet Library habe ich einen kleinen Client geschrieben, der alle 10 Minuten die Temperatur aus einem LM35 Sensor ausliest und per HTTP-Request an ein PHP-Skript auf meiner Homepage schickt. Da der LM35 nicht genau kalibriert ist und wohl sowieso maximal auf ein halbes Grad genau ist, habe ich mittels zwei anderer Thermometer (die wiederum selbst voneinander abweichen) die ungefähre Abweichung des LM35 bestimmt und ziehe die 2° Celsius einfach ab.
Hier der entsprechende Processing-Code:
#include <Ethernet.h>
bool connected = false;
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 0, 99 };
// IP-Adresse des Webservers
byte serverIP[] = {111,111,111,111};
Client client(serverIP,80);
int inPin = 5; // input pin 1
float inValTotal;
int i;
int runs = 5; // Anzahl der Durchläufe
int waittime = 20; // ms zwischen Durchläufen
int delayVal = 1000; // Intervall für Serial Output
float getTemperatur() {
inValTotal = 0;
for(i = 0;i<runs;i++){
inValTotal = inValTotal + analogRead(inPin);
delay(waittime);
}
inValTotal = inValTotal / runs / 2;
return(inValTotal-2);
}
void setup()
{
Ethernet.begin(mac, ip);
Serial.begin(9600);
Serial.println("setup done");
}
void loop()
{
Serial.println("Entered loop");
if (!connected){
Serial.println("Not connected");
if (client.connect()){
connected = true;
Serial.println("Connected to Server");
Serial.println("Sending request to server");
client.print("GET /storetemp.php?t=");
client.print(getTemperatur());
client.println(" HTTP/1.1");
client.println("Host: www.mydomain.com");
client.println("User-Agent: Arduino");
client.println("Accept: text/html");
client.println();
} else {
Serial.println("Cannot connect to server");
}
}
else {
delay(500);
while (client.connected() && client.available()) {
char c = client.read();
Serial.print(c);
}
Serial.println();
client.stop();
connected=false;
}
Serial.println("Done now");
delay(600000);
}
#include <Ethernet.h>
bool connected = false;
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 0, 99 };
// IP-Adresse des Webservers
byte serverIP[] = {111,111,111,111};
Client client(serverIP,80);
int inPin = 5; // input pin 1
float inValTotal;
int i;
int runs = 5; // Anzahl der Durchläufe
int waittime = 20; // ms zwischen Durchläufen
int delayVal = 1000; // Intervall für Serial Output
float getTemperatur() {
inValTotal = 0;
for(i = 0;i<runs;i++){
inValTotal = inValTotal + analogRead(inPin);
delay(waittime);
}
inValTotal = inValTotal / runs / 2;
return(inValTotal-2);
}
void setup()
{
Ethernet.begin(mac, ip);
Serial.begin(9600);
Serial.println("setup done");
}
void loop()
{
Serial.println("Entered loop");
if (!connected){
Serial.println("Not connected");
if (client.connect()){
connected = true;
Serial.println("Connected to Server");
Serial.println("Sending request to server");
client.print("GET /storetemp.php?t=");
client.print(getTemperatur());
client.println(" HTTP/1.1");
client.println("Host: www.mydomain.com");
client.println("User-Agent: Arduino");
client.println("Accept: text/html");
client.println();
} else {
Serial.println("Cannot connect to server");
}
}
else {
delay(500);
while (client.connected() && client.available()) {
char c = client.read();
Serial.print(c);
}
Serial.println();
client.stop();
connected=false;
}
Serial.println("Done now");
delay(600000);
}
Hier der Code des PHP-Skripts, es schickt als Antwort Zeit und erhaltene Temperatur zurück zum Arduino und speichert die Temperatur mit Zeitstempel in einer Textdatei. Im nächsten Schritt werde ich wohl sicher eine MySQL-Datenbank hintersetzen, für den Moment reicht es aber völlig aus.
<?phpheader('Content-type: text/plain');echodate("d.m.Y-H:i:s")." Temperatur= ".$_GET['t'];$myFile="testFile.txt";$fh=fopen($myFile,'a') or die("can't open file");fwrite($fh,date("d.m.Y-H:i:s")." Temperatur= ".$_GET['t']."\n");fclose($fh);?>
</php>
Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined.
Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.
Ich werde mal versuchen, die Temperatur eines LM35 auszulesen und als Webseite bereitzustellen. Mit dem Twittern per Arduino klappt es heute nicht, die Connection wird verweigert.
Nachtrag:
Mit dem Webserver-Beispielcode und der getTemperatur() Funktion von Mats Vanselow war der Temperatur-Webserver in fünf Minuten erledigt. Als nächste werde ich einen Webclient zusammenbauen (basierend auf der Ethershield library), der die Temperatur ausliest und an eine PHP-Datenbank schickt. Sollte am Wochenende zu erledigen sein.
Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined.
Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.
Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined.
Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.
Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined.
Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.
Heute kam mein „Making Things Talk“ Buch an, das es momentan recht günstig bei Amazon gibt. Die Untertitel „Practical Methods for Connecting Physical Objects“ und „Projects and Ideas to Create Talking Objects from Anything“ beschreiben das Buch ganz gut.
Hier mal die Kapitelüberschriften
The Tools
The Simplest Network
A More Complex Network
Look Ma! No Computer
Communicating in (Near) Real Time
Wireless Communication
Sessionless Networks
How to Locate (Almost) Anything
Identification
Also genug Material für lange Winterabende… Oder Sommertage, bin schließlich IT-Freak 😉
Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined.
Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.
Heut morgen hab ich mich mal beigemacht, das bei Watterott bestellte Seeedstudio Danger Shield zusammenzulöten. Als nativer BWLer ist mein Umgang mit dem Lötkolben sicher deutlich verbesserungswürdig, aber die falsch gelöteten Widerstände hab ich doch recht bald bemerkt und dank Dremel waren die Löcher auch bald vom Zinn befreit.
Als nächstes steht der praktische Test des Boards an, schau mer mal ob ich nicht doch ein paar Macken reingelötet habe… Beispielcodes für das Shield gibt es im Subversion des Entwicklers: http://svn.nycresistor.com/projects/danger_shield/.
Schau ‚mer mal, ob ich sauber gearbeitet habe… Hmmm, irgendwas is faul. Sobald ich das Board nach dem Upload des Demo-Code an den USB-Port anschließe, verschwindet das Board aus dem Menü der IDE, lege ich 8 Volt per Netzteil an, regelt das sofort auf 3V runter. Scheint irgendwo ein Kurzschluss zu sein, aber wo? Habe das Board erstmal von Flussmittelresten gereinigt, wozu gibt es schließlich Spülmittel. Nu trocknet es in der Kölner Sonne, schau mer mal ob’s was bringt.
Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined.
Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.
Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined.
Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.