Dallas 1-wire Bus: Unterschied zwischen den Versionen
Mali (Diskussion | Beiträge) (→Einbindung in die HTTPD-Weboberfläche) |
Stella (Diskussion | Beiträge) |
||
Zeile 1: | Zeile 1: | ||
== Onewire interface == | == Onewire interface == | ||
− | Ethersex kann | + | Ethersex kann 1-wire Temperatursensoren mit [[ECMD]] auflisten und abfragen. Es wird eine reine Softwareimplementierung des Protokolls benutzt, was keine weiteren Hardware erfordert, als die Temperatursensoren selbst. Dabei muss beachtet werden, dass der Datapin des Buses in der Standardkonfiguration auf PD6 liegt (kann in der pinning/generic.m4 geändert werden) |
=== Onewire Befehle === | === Onewire Befehle === | ||
Zeile 26: | Zeile 26: | ||
[[Bild:onewire-svg.png]] | [[Bild:onewire-svg.png]] | ||
+ | === Anschluss AVR Net-IO === | ||
Für das Pollin NET-IO Board können die Sensoren DS18S20+ , so im parasitären Modus angeschlossen werden: | Für das Pollin NET-IO Board können die Sensoren DS18S20+ , so im parasitären Modus angeschlossen werden: | ||
[[Bild:netio-1wire.png]] | [[Bild:netio-1wire.png]] | ||
− | + | === Einbindung in [[Control6]] === | |
+ | Die Sensoren können mit '''ONEWIRE_GET''' einfach abgefragt werden. Die Funktion führt automatisch ein ''convert'' aus, es sind also keine zwei Schritte erforderlich wie bei dem Zugriff über [[ECMD]]. Die Rückgabe erfogt (analog der Funktion '''KTY_GET''') in Centigrad, also Temperatur * 10. Hier vielleicht ein kleines Beispiel, das die Daten in eine von außen abfragbare Variable übernimmt. Sicher kann man sinnvolleres damit anstellen :-) | ||
+ | |||
+ | <pre>CONTROL_START | ||
+ | |||
+ | ECMD_GLOBAL(Temperatur, 0); | ||
+ | |||
+ | THREAD(read_temp) | ||
+ | Temperatur = ONEWIRE_GET(10d85594010800eb); | ||
+ | WAIT(10); | ||
+ | THREAD_END(update_clock) | ||
+ | |||
+ | ON STARTUP DO | ||
+ | THREAD_START(read_temp); | ||
+ | END | ||
+ | |||
+ | CONTROL_END | ||
+ | </pre> | ||
[[Category:Ethersex]] | [[Category:Ethersex]] | ||
[[Category:StepByStep]] | [[Category:StepByStep]] |
Version vom 24. Juni 2009, 15:57 Uhr
Inhaltsverzeichnis
Onewire interface
Ethersex kann 1-wire Temperatursensoren mit ECMD auflisten und abfragen. Es wird eine reine Softwareimplementierung des Protokolls benutzt, was keine weiteren Hardware erfordert, als die Temperatursensoren selbst. Dabei muss beachtet werden, dass der Datapin des Buses in der Standardkonfiguration auf PD6 liegt (kann in der pinning/generic.m4 geändert werden)
Onewire Befehle
unter Linux als erstes netcat starten (hierbei natürlich die IP ggf modifizieren):
netcat 192.168.0.15 2701
danach am prompt:
1w list
Gibt eine Liste mit Hexcodes aller angeschlossenen und erkannten Onewire(tm) Sensoren aus.
1w convert <hexcode>
Veranlasst eine Temperaturmessung des addressierten Sensors, oder wenn das Argument <hexcode> weggelassen wird aller angeschlossener Sensoren.
1w get <hexcode>
Gibt die gemessene Temperatur eines Sensors aus.
Einbindung in die HTTPD-Weboberfläche
Unter httpd/embed/ow.ht.m4, bzw httpd/embed/Xow.ht.m4 liegt eine Weboberflaeche, die alle Sensoren erkennt und ihre aktuelle Temperatur regelmässig per Ajax abfragt und anzeigt. Im Falle von Xow.ht.m4 wird sogar Graph der Temperatur mittels SVG gemalt. Um die Dateien einzubinden, muss man einfach bei aktiviertem Onewiresupport den Webserver und das Datei Inlining aktivieren.
Die Dateien können dann unter ow.ht bzw. unter Xow.ht angezeigt werden.
Anschluss AVR Net-IO
Für das Pollin NET-IO Board können die Sensoren DS18S20+ , so im parasitären Modus angeschlossen werden:
Einbindung in Control6
Die Sensoren können mit ONEWIRE_GET einfach abgefragt werden. Die Funktion führt automatisch ein convert aus, es sind also keine zwei Schritte erforderlich wie bei dem Zugriff über ECMD. Die Rückgabe erfogt (analog der Funktion KTY_GET) in Centigrad, also Temperatur * 10. Hier vielleicht ein kleines Beispiel, das die Daten in eine von außen abfragbare Variable übernimmt. Sicher kann man sinnvolleres damit anstellen :-)
CONTROL_START ECMD_GLOBAL(Temperatur, 0); THREAD(read_temp) Temperatur = ONEWIRE_GET(10d85594010800eb); WAIT(10); THREAD_END(update_clock) ON STARTUP DO THREAD_START(read_temp); END CONTROL_END