<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de-AT">
		<id>http://old.ethersex.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mschz</id>
		<title>Ethersex_Wiki - Benutzerbeiträge [de-at]</title>
		<link rel="self" type="application/atom+xml" href="http://old.ethersex.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mschz"/>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php/Spezial:Beitr%C3%A4ge/Mschz"/>
		<updated>2026-04-04T19:23:55Z</updated>
		<subtitle>Benutzerbeiträge</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://old.ethersex.de/index.php?title=Ethernet_Loader&amp;diff=3754</id>
		<title>Ethernet Loader</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=Ethernet_Loader&amp;diff=3754"/>
				<updated>2010-02-19T08:50:31Z</updated>
		
		<summary type="html">&lt;p&gt;Mschz: /* Flashen des Bootloaders */ Hinweis auf Flashen des &amp;lt;bootloader.hex&amp;gt; eingefuegt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Bootloader einrichten (TFTP)=&lt;br /&gt;
&lt;br /&gt;
Da ich mindesten 6h mit Fehlersuche verschwendet habe, hier eine Anleitung wie man den TFTP-Bootloader verwendet.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ganz wichtig, es darf per tftp NIE das ''ethersex.hex'' File geladen werden.&lt;br /&gt;
&lt;br /&gt;
= Vorteile des Bootloaders =&lt;br /&gt;
* Durch den Einsatz eines Bootloaders benötigt man (vom Flashen des Bootloaders einmal abgesehen) keine Flash-Hardware mehr.&lt;br /&gt;
* Der ISP-Port blockiert den Ethernet-Port (zumindesten bei der AVR NET-IO bzw. beim Einsatz bestimmter Programmieradapter)&lt;br /&gt;
* Update und Entwicklungen können bequem vom Schreibtisch aus vorgenommen werden&lt;br /&gt;
&lt;br /&gt;
== Benötigt werden: ==&lt;br /&gt;
&lt;br /&gt;
* Bootloader im ethersex.hex Format&lt;br /&gt;
** [http://www.ethersex.de/firmware-builder/list.cgi Firmware Builder]&lt;br /&gt;
*** enc_mac = die MAC-Adresse vom Hardwareboard&lt;br /&gt;
*** enc_ip  = IP-Adresse vom Board&lt;br /&gt;
*** enc_ip4_netmask = passende Maske vom Netz&lt;br /&gt;
*** etherrape_gateway = default GW&lt;br /&gt;
*** tftp_ip = die IP-Adresse vom tftpd Server, also des PCs auf dem der tftpd läuft&lt;br /&gt;
*** tftp_image = Name des binaries, das im tftpboot-Verzeichnis liegt. z.B. esex.bin&lt;br /&gt;
*oder&lt;br /&gt;
** config-File für die '''AVR Net-IO''' &lt;br /&gt;
*** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
****  (x) Ethernet Bootloader&lt;br /&gt;
*** als Start und dann an die Gegebenheiten anpassen. Im Bootloader werden nur UDP und TFTP zum Nachladen der Firmware benötigt.&lt;br /&gt;
*** Network -&amp;gt; Ethernet(ENC28J60)support -&amp;gt; Etherrape IP-Adresse: &amp;quot;IP-ADRESSE eintragen&amp;quot;&lt;br /&gt;
**** (x) UDP support&lt;br /&gt;
**** (x) UDP broadcast support&lt;br /&gt;
*** Applications -&amp;gt;&lt;br /&gt;
**** (x) TFTP support&lt;br /&gt;
**** Bootloader configuration -&amp;gt;TFTP-o-matic&lt;br /&gt;
***** TFTP IP address: &amp;quot;IP-ADRESSE DES TFTP-SERVERS&amp;quot;&lt;br /&gt;
***** TFTP image to load: &amp;quot;esex.bin&amp;quot; (Name des BIN-files)&lt;br /&gt;
&lt;br /&gt;
* eigentliche Firmware im ethersex.bin Format&lt;br /&gt;
** das make erzeugt immer eine ethersex.hex und eine ethersex.bin und wird z.B. als esex.bin auf den tftpd-Server kopiert&lt;br /&gt;
* [http://de.wikipedia.org/wiki/Trivial_File_Transfer_Protocol tfpd-Server]&lt;br /&gt;
** Linux: [http://www.debianadmin.com/atftp-server-and-client-installation-and-configuration.html atftpd], tftpd oder tftpd-hpt&lt;br /&gt;
** Windows: [http://tftpd32.jounin.net/ tftp32.exe]&lt;br /&gt;
*** BESCHREIBUNG FÜR WINDOWS wenn '''nicht''' DHCP verwendet wird &lt;br /&gt;
*** der Windows Rechner muss die IP haben die vorher in Ethersex als Server eingestellt worden ist&lt;br /&gt;
*** esex.bin einfach in das Verzeichnis vom TFTP-Server (Windows) kopieren &lt;br /&gt;
*** Programm starten und freuen -- sobald der Ethersex startet holt er sich automatisch neue Firmware esex.bin (Name der eingestellt ist)&lt;br /&gt;
*** anschließend könnt ihr die Datei aus dem Verzeichnis löschen oder Programm schließen ansonsten wird der nach jedem starten vom ESEX wieder neu gelasht&lt;br /&gt;
&lt;br /&gt;
== Wichtig! ==&lt;br /&gt;
* der ethersex Bootloader funktioniert als TFTP-Client&lt;br /&gt;
* auf der Linux bzw. Windows Maschine muss ein TFTPD (TFTP-Server) laufen.&lt;br /&gt;
* das ethersex sucht auf dem TFTP-Server seine Firmware lädt sie selbständig in seinen Flash.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
* auf dem klassischem Weg wird die ethersex.bin erstellt (make menuconfig; make)&lt;br /&gt;
* Der tftpd wird wie von der Distribution vorgesehen gestartet. Das ethersex.bin kommt in das /tftpboot Verzeichniss&lt;br /&gt;
&lt;br /&gt;
== Anpassung der FUSE-Bits ==&lt;br /&gt;
Damit das Ganze funktioniert, müssen die FUSE-Bits angepasst werden.&lt;br /&gt;
Mit dem Tool [http://www.engbedded.com/fusecalc/ FUSE-Calc] kann man sich durch anklicken seine FUSE-Bits zusammenstellen.&lt;br /&gt;
Für den atmega644(p) hier ein Beispiel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
avrdude -p m644p -c ponyser -P /dev/ttyS0 -U lfuse:w:0xff:m -U hfuse:w:0xd8:m -U efuse:w:0xfc:m&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flashen des Bootloaders ==&lt;br /&gt;
Der Bootloader wird als .hex auf klasischem Weg geflasht.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
avrdude -p m644p -c ponyser -P /dev/ttyS0 -U flash:w:&amp;lt;bootloader.hex&amp;gt; -v&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
(Statt &amp;lt;bootloader.hex&amp;gt; ist natürlich der korrekte Name des Hex-Files anzugeben; selbstverständlich ohne &amp;quot;&amp;lt;&amp;gt;&amp;quot;. Wichtig: unbedingt das &amp;lt;bootloader.hex&amp;gt; flashen, mit dem Flashen des &amp;lt;bootloader.bin&amp;gt; funktioniert der Bootloader nicht, weil dieser in den falschen Bereich im Flash geschrieben wird)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Spätestens nach einem Reboot der Hardware versucht der Bootloader per [http://de.wikipedia.org/wiki/Trivial_File_Transfer_Protocol tftp] die eigentliche Firmware zu laden und zu starten.&lt;br /&gt;
&lt;br /&gt;
Eine einmal auf diesem Weg installierte Firmware ist immer auf dem Board und der Bootloader holt nur auf händische Anfrage ein neues esex.bin vom tftp-Server&lt;br /&gt;
&lt;br /&gt;
== Händisches laden eines neuen Images ([[Ecmd_Reference]])==&lt;br /&gt;
Per Telnet sich mit dem ethersex verbinden (telnet &amp;lt;IP-Ethersex&amp;gt; 2701). &lt;br /&gt;
Dort &amp;quot;bootloader&amp;quot; eingeben.&lt;br /&gt;
&lt;br /&gt;
Oder per Web-Browser: http://&amp;lt;IP-Ethersex&amp;gt;/ecmd?bootloader.&lt;br /&gt;
&lt;br /&gt;
Wenns nicht auf Anhieb klappt:&lt;br /&gt;
&lt;br /&gt;
(a) Fehlerbild:&lt;br /&gt;
&lt;br /&gt;
Ethersex holt sich zwar vom TFTP-Server ein neues Binärfile und schreibt es&lt;br /&gt;
in seinen Speicher - aber dann geht nichts mehr übers Netzwerk (kein &lt;br /&gt;
Ping, kein Telnet, etc).&lt;br /&gt;
&lt;br /&gt;
(b) Ursache:&lt;br /&gt;
&lt;br /&gt;
In Bootloader-Image und im Binärfile werden unterschiedliche MAC-&lt;br /&gt;
Adressen verwendet.&lt;br /&gt;
&lt;br /&gt;
(c) Abhilfe:&lt;br /&gt;
&lt;br /&gt;
ARP-Cache löschen oder warten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Ethersex]]&lt;br /&gt;
[[Category:bootloader]]&lt;br /&gt;
[[Category:AVR Net-IO]]&lt;/div&gt;</summary>
		<author><name>Mschz</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=Ethernet_Loader&amp;diff=3753</id>
		<title>Ethernet Loader</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=Ethernet_Loader&amp;diff=3753"/>
				<updated>2010-02-19T08:47:51Z</updated>
		
		<summary type="html">&lt;p&gt;Mschz: /* Flashen des Bootloaders */ Hinweis auf Flashen des &amp;lt;bootloader.hex&amp;gt; eingefuegt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Bootloader einrichten (TFTP)=&lt;br /&gt;
&lt;br /&gt;
Da ich mindesten 6h mit Fehlersuche verschwendet habe, hier eine Anleitung wie man den TFTP-Bootloader verwendet.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ganz wichtig, es darf per tftp NIE das ''ethersex.hex'' File geladen werden.&lt;br /&gt;
&lt;br /&gt;
= Vorteile des Bootloaders =&lt;br /&gt;
* Durch den Einsatz eines Bootloaders benötigt man (vom Flashen des Bootloaders einmal abgesehen) keine Flash-Hardware mehr.&lt;br /&gt;
* Der ISP-Port blockiert den Ethernet-Port (zumindesten bei der AVR NET-IO bzw. beim Einsatz bestimmter Programmieradapter)&lt;br /&gt;
* Update und Entwicklungen können bequem vom Schreibtisch aus vorgenommen werden&lt;br /&gt;
&lt;br /&gt;
== Benötigt werden: ==&lt;br /&gt;
&lt;br /&gt;
* Bootloader im ethersex.hex Format&lt;br /&gt;
** [http://www.ethersex.de/firmware-builder/list.cgi Firmware Builder]&lt;br /&gt;
*** enc_mac = die MAC-Adresse vom Hardwareboard&lt;br /&gt;
*** enc_ip  = IP-Adresse vom Board&lt;br /&gt;
*** enc_ip4_netmask = passende Maske vom Netz&lt;br /&gt;
*** etherrape_gateway = default GW&lt;br /&gt;
*** tftp_ip = die IP-Adresse vom tftpd Server, also des PCs auf dem der tftpd läuft&lt;br /&gt;
*** tftp_image = Name des binaries, das im tftpboot-Verzeichnis liegt. z.B. esex.bin&lt;br /&gt;
*oder&lt;br /&gt;
** config-File für die '''AVR Net-IO''' &lt;br /&gt;
*** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
****  (x) Ethernet Bootloader&lt;br /&gt;
*** als Start und dann an die Gegebenheiten anpassen. Im Bootloader werden nur UDP und TFTP zum Nachladen der Firmware benötigt.&lt;br /&gt;
*** Network -&amp;gt; Ethernet(ENC28J60)support -&amp;gt; Etherrape IP-Adresse: &amp;quot;IP-ADRESSE eintragen&amp;quot;&lt;br /&gt;
**** (x) UDP support&lt;br /&gt;
**** (x) UDP broadcast support&lt;br /&gt;
*** Applications -&amp;gt;&lt;br /&gt;
**** (x) TFTP support&lt;br /&gt;
**** Bootloader configuration -&amp;gt;TFTP-o-matic&lt;br /&gt;
***** TFTP IP address: &amp;quot;IP-ADRESSE DES TFTP-SERVERS&amp;quot;&lt;br /&gt;
***** TFTP image to load: &amp;quot;esex.bin&amp;quot; (Name des BIN-files)&lt;br /&gt;
&lt;br /&gt;
* eigentliche Firmware im ethersex.bin Format&lt;br /&gt;
** das make erzeugt immer eine ethersex.hex und eine ethersex.bin und wird z.B. als esex.bin auf den tftpd-Server kopiert&lt;br /&gt;
* [http://de.wikipedia.org/wiki/Trivial_File_Transfer_Protocol tfpd-Server]&lt;br /&gt;
** Linux: [http://www.debianadmin.com/atftp-server-and-client-installation-and-configuration.html atftpd], tftpd oder tftpd-hpt&lt;br /&gt;
** Windows: [http://tftpd32.jounin.net/ tftp32.exe]&lt;br /&gt;
*** BESCHREIBUNG FÜR WINDOWS wenn '''nicht''' DHCP verwendet wird &lt;br /&gt;
*** der Windows Rechner muss die IP haben die vorher in Ethersex als Server eingestellt worden ist&lt;br /&gt;
*** esex.bin einfach in das Verzeichnis vom TFTP-Server (Windows) kopieren &lt;br /&gt;
*** Programm starten und freuen -- sobald der Ethersex startet holt er sich automatisch neue Firmware esex.bin (Name der eingestellt ist)&lt;br /&gt;
*** anschließend könnt ihr die Datei aus dem Verzeichnis löschen oder Programm schließen ansonsten wird der nach jedem starten vom ESEX wieder neu gelasht&lt;br /&gt;
&lt;br /&gt;
== Wichtig! ==&lt;br /&gt;
* der ethersex Bootloader funktioniert als TFTP-Client&lt;br /&gt;
* auf der Linux bzw. Windows Maschine muss ein TFTPD (TFTP-Server) laufen.&lt;br /&gt;
* das ethersex sucht auf dem TFTP-Server seine Firmware lädt sie selbständig in seinen Flash.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
* auf dem klassischem Weg wird die ethersex.bin erstellt (make menuconfig; make)&lt;br /&gt;
* Der tftpd wird wie von der Distribution vorgesehen gestartet. Das ethersex.bin kommt in das /tftpboot Verzeichniss&lt;br /&gt;
&lt;br /&gt;
== Anpassung der FUSE-Bits ==&lt;br /&gt;
Damit das Ganze funktioniert, müssen die FUSE-Bits angepasst werden.&lt;br /&gt;
Mit dem Tool [http://www.engbedded.com/fusecalc/ FUSE-Calc] kann man sich durch anklicken seine FUSE-Bits zusammenstellen.&lt;br /&gt;
Für den atmega644(p) hier ein Beispiel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
avrdude -p m644p -c ponyser -P /dev/ttyS0 -U lfuse:w:0xff:m -U hfuse:w:0xd8:m -U efuse:w:0xfc:m&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flashen des Bootloaders ==&lt;br /&gt;
Der Bootloader wird als .hex auf klasischem Weg geflasht.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
avrdude -p m644p -c ponyser -P /dev/ttyS0 -U flash:w:&amp;lt;bootloader.hex&amp;gt; -v&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
(Statt &amp;lt;bootloader.hex&amp;gt; ist natürlich der korrekte Name des Hex-Files anzugeben; selbstverständlich ohne &amp;quot;&amp;lt;&amp;gt;&amp;quot;&lt;br /&gt;
Wichtig: unbedingt das &amp;lt;bootloader.hex&amp;gt; flashen, mit dem Flashen des &amp;lt;bootloader.bin&amp;gt; funktioniert das nicht)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Spätestens nach einem Reboot der Hardware versucht der Bootloader per [http://de.wikipedia.org/wiki/Trivial_File_Transfer_Protocol tftp] die eigentliche Firmware zu laden und zu starten.&lt;br /&gt;
&lt;br /&gt;
Eine einmal auf diesem Weg installierte Firmware ist immer auf dem Board und der Bootloader holt nur auf händische Anfrage ein neues esex.bin vom tftp-Server&lt;br /&gt;
&lt;br /&gt;
== Händisches laden eines neuen Images ([[Ecmd_Reference]])==&lt;br /&gt;
Per Telnet sich mit dem ethersex verbinden (telnet &amp;lt;IP-Ethersex&amp;gt; 2701). &lt;br /&gt;
Dort &amp;quot;bootloader&amp;quot; eingeben.&lt;br /&gt;
&lt;br /&gt;
Oder per Web-Browser: http://&amp;lt;IP-Ethersex&amp;gt;/ecmd?bootloader.&lt;br /&gt;
&lt;br /&gt;
Wenns nicht auf Anhieb klappt:&lt;br /&gt;
&lt;br /&gt;
(a) Fehlerbild:&lt;br /&gt;
&lt;br /&gt;
Ethersex holt sich zwar vom TFTP-Server ein neues Binärfile und schreibt es&lt;br /&gt;
in seinen Speicher - aber dann geht nichts mehr übers Netzwerk (kein &lt;br /&gt;
Ping, kein Telnet, etc).&lt;br /&gt;
&lt;br /&gt;
(b) Ursache:&lt;br /&gt;
&lt;br /&gt;
In Bootloader-Image und im Binärfile werden unterschiedliche MAC-&lt;br /&gt;
Adressen verwendet.&lt;br /&gt;
&lt;br /&gt;
(c) Abhilfe:&lt;br /&gt;
&lt;br /&gt;
ARP-Cache löschen oder warten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Ethersex]]&lt;br /&gt;
[[Category:bootloader]]&lt;br /&gt;
[[Category:AVR Net-IO]]&lt;/div&gt;</summary>
		<author><name>Mschz</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=Dallas_1-wire_Bus&amp;diff=3751</id>
		<title>Dallas 1-wire Bus</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=Dallas_1-wire_Bus&amp;diff=3751"/>
				<updated>2010-02-18T10:55:15Z</updated>
		
		<summary type="html">&lt;p&gt;Mschz: /* Onewire interface */  Orte fuer pinning angepasst&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Onewire interface ==&lt;br /&gt;
&lt;br /&gt;
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/hardware/netio.m4 oder pinning/hardware/etherrape.m4 geändert werden)&lt;br /&gt;
&lt;br /&gt;
=== Onewire Hardware ===&lt;br /&gt;
&lt;br /&gt;
Folgende 1-wire Hardware wird momentan durch Ethersex unterstützt:&lt;br /&gt;
* DS1820 (Temperatursensor)&lt;br /&gt;
* DS18B20 (Temperatursensor)&lt;br /&gt;
* DS1822 (Temperatursensor)&lt;br /&gt;
* DS2502 (EEPROM)&lt;br /&gt;
* [[DS2450]] (4 Kanal ADC)&lt;br /&gt;
&lt;br /&gt;
===  Onewire Befehle ===&lt;br /&gt;
&lt;br /&gt;
unter Linux als erstes netcat starten (hierbei natürlich die IP ggf modifizieren): &lt;br /&gt;
    netcat 192.168.0.15 2701&lt;br /&gt;
danach am prompt:&lt;br /&gt;
&lt;br /&gt;
    1w list&lt;br /&gt;
Gibt eine Liste mit Hexcodes  aller angeschlossenen und erkannten Onewire(tm) Sensoren aus.&lt;br /&gt;
&lt;br /&gt;
    1w convert &amp;amp;lt;hexcode&amp;amp;gt;&lt;br /&gt;
Veranlasst eine Temperaturmessung des addressierten Sensors, oder wenn das Argument &amp;amp;lt;hexcode&amp;amp;gt; weggelassen wird aller angeschlossener Sensoren.&lt;br /&gt;
&lt;br /&gt;
    1w get &amp;amp;lt;hexcode&amp;amp;gt;&lt;br /&gt;
Gibt die gemessene Temperatur eines Sensors aus.&lt;br /&gt;
&lt;br /&gt;
===  Einbindung in die [[HTTPD]]-Weboberfläche ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Die Dateien können dann unter ow.ht bzw. unter Xow.ht angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
[[Bild:onewire-svg.png]]&lt;br /&gt;
&lt;br /&gt;
=== Anschluss AVR-NET-IO ===&lt;br /&gt;
Für das Pollin [[AVR-NET-IO]] Board können die Sensoren DS18S20+ ,  &lt;br /&gt;
&lt;br /&gt;
normal Betrieb&lt;br /&gt;
&lt;br /&gt;
[[Bild:netio-1wire_normal.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
parasitären Modus&lt;br /&gt;
&lt;br /&gt;
[[Bild:netio-1wire.png]]&lt;br /&gt;
&lt;br /&gt;
Pinbelegung:&lt;br /&gt;
&lt;br /&gt;
[[Bild:ds18s20-par-pinout.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Einbindung in [[Control6]] ===&lt;br /&gt;
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 erfolgt (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 :-)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;CONTROL_START&lt;br /&gt;
&lt;br /&gt;
ECMD_GLOBAL(Temperatur, 0);&lt;br /&gt;
&lt;br /&gt;
THREAD(read_temp)&lt;br /&gt;
        Temperatur = ONEWIRE_GET(10d85594010800eb);&lt;br /&gt;
        WAIT(10);&lt;br /&gt;
THREAD_END(read_temp)&lt;br /&gt;
&lt;br /&gt;
ON STARTUP DO&lt;br /&gt;
        THREAD_START(read_temp);&lt;br /&gt;
END&lt;br /&gt;
&lt;br /&gt;
CONTROL_END&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
&lt;br /&gt;
===== sh oder bash =====&lt;br /&gt;
Einfaches SH (Linux Shell) Script von stesie (irc) zum Auslesen von einem Wert&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
  #! /bin/sh&lt;br /&gt;
  SENSORID=10529f7001080016&lt;br /&gt;
  #ESEXIP=2001:6f8:1209:23:42::17 #IPv6 Adresse&lt;br /&gt;
  ESEXIP=192.168.255.90&lt;br /&gt;
   &lt;br /&gt;
  #IPv6&lt;br /&gt;
  #echo 1w convert $SENSORID | nc6 -u $ESEXIP 2701 -q 1 2&amp;gt;/dev/null | grep -qe OK || exit 1 &lt;br /&gt;
  #echo 1w get $SENSORID | nc6 -u $ESEXIP 2701 -q 1 2&amp;gt;/dev/null | sed -e 's/Temperatur: //' &lt;br /&gt;
   &lt;br /&gt;
  #IPv4&lt;br /&gt;
  echo 1w convert $SENSORID | nc -u $ESEXIP 2701 -q 1 2&amp;gt;/dev/null | grep -qe OK || exit 1&lt;br /&gt;
  echo 1w get $SENSORID | nc -u $ESEXIP 2701 -q 1 2&amp;gt;/dev/null | sed -e 's/Temperatur: //'&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Perl ====&lt;br /&gt;
Beispiel in Perl das alle Sensoren ermittelt und anschließend die Werte ausgibt.&lt;br /&gt;
Benötigt wird das Modul NET das kein IPv6 kann&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
  #!/usr/bin/perl -w&lt;br /&gt;
  #Auslesen der 1 Wire Sensoren an einem AVR-NET-IO mit ethersex&lt;br /&gt;
   &lt;br /&gt;
  use strict;&lt;br /&gt;
  use Net::Telnet ();&lt;br /&gt;
   &lt;br /&gt;
  my $esexip=&amp;quot;192.168.255.90&amp;quot;;&lt;br /&gt;
  my $esexport=&amp;quot;2701&amp;quot;;&lt;br /&gt;
  my $esex;&lt;br /&gt;
  my @sensor;&lt;br /&gt;
  my $sensor;&lt;br /&gt;
  my $dummy;&lt;br /&gt;
  my $temp;&lt;br /&gt;
   &lt;br /&gt;
  $esex = Net::Telnet-&amp;gt;new || die &amp;quot;kann Ethersex nicht finden&amp;quot;;;&lt;br /&gt;
  $esex-&amp;gt;open(Host  =&amp;gt; $esexip,&lt;br /&gt;
            Port    =&amp;gt; $esexport,&lt;br /&gt;
            Timeout =&amp;gt; 2);&lt;br /&gt;
   &lt;br /&gt;
  #Alles Sensor-IDs auslesen und dem Array @sensor zuweisen&lt;br /&gt;
  $esex-&amp;gt;print(&amp;quot;1w list&amp;quot;);&lt;br /&gt;
  ($sensor) = $esex-&amp;gt;waitfor(Timeout =&amp;gt; 2,&lt;br /&gt;
                             String  =&amp;gt; &amp;quot;OK&amp;quot;);&lt;br /&gt;
  @sensor=split(/\s+/, $sensor);&lt;br /&gt;
        print &amp;quot;@sensor&amp;quot;,&amp;quot;\n&amp;quot;; #Kontrollausgabe&lt;br /&gt;
   &lt;br /&gt;
  my $zahler=@sensor;&lt;br /&gt;
  print &amp;quot;Anzahl der Elemente :&amp;quot;,$zahler,&amp;quot;\n\n&amp;quot;;&lt;br /&gt;
   &lt;br /&gt;
  #Alles Sensore Temperatur einlesen&lt;br /&gt;
  $esex-&amp;gt;print(&amp;quot;1w convert&amp;quot;);&lt;br /&gt;
  $esex-&amp;gt;waitfor(Timeout =&amp;gt; 2,&lt;br /&gt;
                 String  =&amp;gt; &amp;quot;OK&amp;quot;);&lt;br /&gt;
   &lt;br /&gt;
  #Sensor ID inklusive Wert ausgeben&lt;br /&gt;
  foreach (@sensor) {&lt;br /&gt;
        $esex-&amp;gt;print(&amp;quot;1w get $_&amp;quot;);&lt;br /&gt;
   &lt;br /&gt;
  ($dummy,$temp)=$esex-&amp;gt;waitfor(Match   =&amp;gt;'/[-]?\d+\.\d+/',&lt;br /&gt;
                                Timeout =&amp;gt; 5);&lt;br /&gt;
      &lt;br /&gt;
   print &amp;quot;Temperatur vom ID &amp;quot;,$_,&amp;quot;: &amp;quot;,$temp,&amp;quot; C°&amp;quot;,&amp;quot;\n&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Python ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
  #!/usr/bin/python&lt;br /&gt;
  &lt;br /&gt;
  from socket import *&lt;br /&gt;
  &lt;br /&gt;
  def connectEP():&lt;br /&gt;
    s = socket(AF_INET, SOCK_STREAM)&lt;br /&gt;
    s.settimeout(5)&lt;br /&gt;
    s.connect((&amp;quot;192.168.5.3&amp;quot;, 2701))&lt;br /&gt;
    return s&lt;br /&gt;
  &lt;br /&gt;
  def getTemperature():&lt;br /&gt;
    s.send(&amp;quot;1w list\n&amp;quot;)&lt;br /&gt;
    sensors = []&lt;br /&gt;
    sensors_result = {}&lt;br /&gt;
     &lt;br /&gt;
    # list aller Sensoren&lt;br /&gt;
    while 1:&lt;br /&gt;
      response = s.recv(1024).rstrip(&amp;quot;\n&amp;quot;)&lt;br /&gt;
      if not response: break&lt;br /&gt;
      if response != &amp;quot;OK&amp;quot;:&lt;br /&gt;
        sensors.append(response)&lt;br /&gt;
      else:&lt;br /&gt;
        break&lt;br /&gt;
  &lt;br /&gt;
    # wert konvertieren&lt;br /&gt;
    for sensor in sensors:&lt;br /&gt;
      s.send(&amp;quot;1w convert &amp;quot; + sensor + &amp;quot;\n&amp;quot;)&lt;br /&gt;
      while 1:&lt;br /&gt;
        response = s.recv(1024).rstrip(&amp;quot;\n&amp;quot;)&lt;br /&gt;
        if response == &amp;quot;OK&amp;quot;:&lt;br /&gt;
          break  &lt;br /&gt;
  &lt;br /&gt;
      # wert auslesen &lt;br /&gt;
      s.send(&amp;quot;1w get &amp;quot; + sensor + &amp;quot;\n&amp;quot;)&lt;br /&gt;
      response = s.recv(1024).rstrip(&amp;quot;\n&amp;quot;).lstrip()&lt;br /&gt;
      sensors_result[sensor] = response&lt;br /&gt;
    return(sensors_result)&lt;br /&gt;
  &lt;br /&gt;
  s = connectEP()&lt;br /&gt;
  for sensor, value in getTemperature().iteritems():&lt;br /&gt;
    print sensor + &amp;quot; &amp;quot; + value&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== PHP ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
	&amp;lt;title&amp;gt;ethersex php example&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
define(IP, '192.168.10.9'); // deine ethersex ip adresse&lt;br /&gt;
define(PORT, 2701); // standart port im image&lt;br /&gt;
&lt;br /&gt;
request(&amp;quot;1w convert&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
$response = request(&amp;quot;1w list&amp;quot;);&lt;br /&gt;
$explode = explode(&amp;quot;\n&amp;quot;, $response);&lt;br /&gt;
&lt;br /&gt;
for ($i=0; $i &amp;lt; count($explode)-2; $i++) {&lt;br /&gt;
	echo &amp;quot;Sensor: &amp;quot; . trim($explode[$i]);&lt;br /&gt;
	echo &amp;quot; -- Wert: &amp;quot; . request(&amp;quot;1w get &amp;quot; . $explode[$i]);&lt;br /&gt;
	echo &amp;quot;&amp;lt;br&amp;gt;\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function request($request) {&lt;br /&gt;
	$rs = fsockopen(IP, PORT);&lt;br /&gt;
&lt;br /&gt;
	if (!$rs) {&lt;br /&gt;
		$response  = &amp;quot;Kann Verbindung nicht aufbauen!&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
		$response =&amp;quot;&amp;quot;;&lt;br /&gt;
		$request = &amp;quot;!&amp;quot; . $request . &amp;quot;\r\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		fputs($rs, $request);&lt;br /&gt;
&lt;br /&gt;
		while (!feof($rs)) {&lt;br /&gt;
			$response .= fgets($rs, 128);&lt;br /&gt;
		}&lt;br /&gt;
		fclose($rs);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return $response;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Ethersex]]&lt;br /&gt;
[[Category:StepByStep]]&lt;br /&gt;
[[Category:Onewire]]&lt;br /&gt;
&lt;br /&gt;
=== Günstiger Einkauf von Temperatursensoren  bei k1w1 (Michael) ===&lt;br /&gt;
Vom Michael Schultz (k1w1) hab ich die Info erhalten, das er immer DS1820 auf Lager hat und sie sehr günstig weiterverkaufen kann.&lt;br /&gt;
Auch Mindermengen.&lt;br /&gt;
Mail: ethersex [AT] keyb [DOT] de&lt;/div&gt;</summary>
		<author><name>Mschz</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=Dallas_1-wire_Bus&amp;diff=3750</id>
		<title>Dallas 1-wire Bus</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=Dallas_1-wire_Bus&amp;diff=3750"/>
				<updated>2010-02-18T10:52:31Z</updated>
		
		<summary type="html">&lt;p&gt;Mschz: /* Onewire interface */  Orte fuer pinning angepasst&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Onewire interface ==&lt;br /&gt;
&lt;br /&gt;
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/netio.m4 oder pinning/etherrape.m4 geändert werden)&lt;br /&gt;
&lt;br /&gt;
=== Onewire Hardware ===&lt;br /&gt;
&lt;br /&gt;
Folgende 1-wire Hardware wird momentan durch Ethersex unterstützt:&lt;br /&gt;
* DS1820 (Temperatursensor)&lt;br /&gt;
* DS18B20 (Temperatursensor)&lt;br /&gt;
* DS1822 (Temperatursensor)&lt;br /&gt;
* DS2502 (EEPROM)&lt;br /&gt;
* [[DS2450]] (4 Kanal ADC)&lt;br /&gt;
&lt;br /&gt;
===  Onewire Befehle ===&lt;br /&gt;
&lt;br /&gt;
unter Linux als erstes netcat starten (hierbei natürlich die IP ggf modifizieren): &lt;br /&gt;
    netcat 192.168.0.15 2701&lt;br /&gt;
danach am prompt:&lt;br /&gt;
&lt;br /&gt;
    1w list&lt;br /&gt;
Gibt eine Liste mit Hexcodes  aller angeschlossenen und erkannten Onewire(tm) Sensoren aus.&lt;br /&gt;
&lt;br /&gt;
    1w convert &amp;amp;lt;hexcode&amp;amp;gt;&lt;br /&gt;
Veranlasst eine Temperaturmessung des addressierten Sensors, oder wenn das Argument &amp;amp;lt;hexcode&amp;amp;gt; weggelassen wird aller angeschlossener Sensoren.&lt;br /&gt;
&lt;br /&gt;
    1w get &amp;amp;lt;hexcode&amp;amp;gt;&lt;br /&gt;
Gibt die gemessene Temperatur eines Sensors aus.&lt;br /&gt;
&lt;br /&gt;
===  Einbindung in die [[HTTPD]]-Weboberfläche ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Die Dateien können dann unter ow.ht bzw. unter Xow.ht angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
[[Bild:onewire-svg.png]]&lt;br /&gt;
&lt;br /&gt;
=== Anschluss AVR-NET-IO ===&lt;br /&gt;
Für das Pollin [[AVR-NET-IO]] Board können die Sensoren DS18S20+ ,  &lt;br /&gt;
&lt;br /&gt;
normal Betrieb&lt;br /&gt;
&lt;br /&gt;
[[Bild:netio-1wire_normal.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
parasitären Modus&lt;br /&gt;
&lt;br /&gt;
[[Bild:netio-1wire.png]]&lt;br /&gt;
&lt;br /&gt;
Pinbelegung:&lt;br /&gt;
&lt;br /&gt;
[[Bild:ds18s20-par-pinout.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Einbindung in [[Control6]] ===&lt;br /&gt;
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 erfolgt (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 :-)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;CONTROL_START&lt;br /&gt;
&lt;br /&gt;
ECMD_GLOBAL(Temperatur, 0);&lt;br /&gt;
&lt;br /&gt;
THREAD(read_temp)&lt;br /&gt;
        Temperatur = ONEWIRE_GET(10d85594010800eb);&lt;br /&gt;
        WAIT(10);&lt;br /&gt;
THREAD_END(read_temp)&lt;br /&gt;
&lt;br /&gt;
ON STARTUP DO&lt;br /&gt;
        THREAD_START(read_temp);&lt;br /&gt;
END&lt;br /&gt;
&lt;br /&gt;
CONTROL_END&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
&lt;br /&gt;
===== sh oder bash =====&lt;br /&gt;
Einfaches SH (Linux Shell) Script von stesie (irc) zum Auslesen von einem Wert&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
  #! /bin/sh&lt;br /&gt;
  SENSORID=10529f7001080016&lt;br /&gt;
  #ESEXIP=2001:6f8:1209:23:42::17 #IPv6 Adresse&lt;br /&gt;
  ESEXIP=192.168.255.90&lt;br /&gt;
   &lt;br /&gt;
  #IPv6&lt;br /&gt;
  #echo 1w convert $SENSORID | nc6 -u $ESEXIP 2701 -q 1 2&amp;gt;/dev/null | grep -qe OK || exit 1 &lt;br /&gt;
  #echo 1w get $SENSORID | nc6 -u $ESEXIP 2701 -q 1 2&amp;gt;/dev/null | sed -e 's/Temperatur: //' &lt;br /&gt;
   &lt;br /&gt;
  #IPv4&lt;br /&gt;
  echo 1w convert $SENSORID | nc -u $ESEXIP 2701 -q 1 2&amp;gt;/dev/null | grep -qe OK || exit 1&lt;br /&gt;
  echo 1w get $SENSORID | nc -u $ESEXIP 2701 -q 1 2&amp;gt;/dev/null | sed -e 's/Temperatur: //'&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Perl ====&lt;br /&gt;
Beispiel in Perl das alle Sensoren ermittelt und anschließend die Werte ausgibt.&lt;br /&gt;
Benötigt wird das Modul NET das kein IPv6 kann&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
  #!/usr/bin/perl -w&lt;br /&gt;
  #Auslesen der 1 Wire Sensoren an einem AVR-NET-IO mit ethersex&lt;br /&gt;
   &lt;br /&gt;
  use strict;&lt;br /&gt;
  use Net::Telnet ();&lt;br /&gt;
   &lt;br /&gt;
  my $esexip=&amp;quot;192.168.255.90&amp;quot;;&lt;br /&gt;
  my $esexport=&amp;quot;2701&amp;quot;;&lt;br /&gt;
  my $esex;&lt;br /&gt;
  my @sensor;&lt;br /&gt;
  my $sensor;&lt;br /&gt;
  my $dummy;&lt;br /&gt;
  my $temp;&lt;br /&gt;
   &lt;br /&gt;
  $esex = Net::Telnet-&amp;gt;new || die &amp;quot;kann Ethersex nicht finden&amp;quot;;;&lt;br /&gt;
  $esex-&amp;gt;open(Host  =&amp;gt; $esexip,&lt;br /&gt;
            Port    =&amp;gt; $esexport,&lt;br /&gt;
            Timeout =&amp;gt; 2);&lt;br /&gt;
   &lt;br /&gt;
  #Alles Sensor-IDs auslesen und dem Array @sensor zuweisen&lt;br /&gt;
  $esex-&amp;gt;print(&amp;quot;1w list&amp;quot;);&lt;br /&gt;
  ($sensor) = $esex-&amp;gt;waitfor(Timeout =&amp;gt; 2,&lt;br /&gt;
                             String  =&amp;gt; &amp;quot;OK&amp;quot;);&lt;br /&gt;
  @sensor=split(/\s+/, $sensor);&lt;br /&gt;
        print &amp;quot;@sensor&amp;quot;,&amp;quot;\n&amp;quot;; #Kontrollausgabe&lt;br /&gt;
   &lt;br /&gt;
  my $zahler=@sensor;&lt;br /&gt;
  print &amp;quot;Anzahl der Elemente :&amp;quot;,$zahler,&amp;quot;\n\n&amp;quot;;&lt;br /&gt;
   &lt;br /&gt;
  #Alles Sensore Temperatur einlesen&lt;br /&gt;
  $esex-&amp;gt;print(&amp;quot;1w convert&amp;quot;);&lt;br /&gt;
  $esex-&amp;gt;waitfor(Timeout =&amp;gt; 2,&lt;br /&gt;
                 String  =&amp;gt; &amp;quot;OK&amp;quot;);&lt;br /&gt;
   &lt;br /&gt;
  #Sensor ID inklusive Wert ausgeben&lt;br /&gt;
  foreach (@sensor) {&lt;br /&gt;
        $esex-&amp;gt;print(&amp;quot;1w get $_&amp;quot;);&lt;br /&gt;
   &lt;br /&gt;
  ($dummy,$temp)=$esex-&amp;gt;waitfor(Match   =&amp;gt;'/[-]?\d+\.\d+/',&lt;br /&gt;
                                Timeout =&amp;gt; 5);&lt;br /&gt;
      &lt;br /&gt;
   print &amp;quot;Temperatur vom ID &amp;quot;,$_,&amp;quot;: &amp;quot;,$temp,&amp;quot; C°&amp;quot;,&amp;quot;\n&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Python ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
  #!/usr/bin/python&lt;br /&gt;
  &lt;br /&gt;
  from socket import *&lt;br /&gt;
  &lt;br /&gt;
  def connectEP():&lt;br /&gt;
    s = socket(AF_INET, SOCK_STREAM)&lt;br /&gt;
    s.settimeout(5)&lt;br /&gt;
    s.connect((&amp;quot;192.168.5.3&amp;quot;, 2701))&lt;br /&gt;
    return s&lt;br /&gt;
  &lt;br /&gt;
  def getTemperature():&lt;br /&gt;
    s.send(&amp;quot;1w list\n&amp;quot;)&lt;br /&gt;
    sensors = []&lt;br /&gt;
    sensors_result = {}&lt;br /&gt;
     &lt;br /&gt;
    # list aller Sensoren&lt;br /&gt;
    while 1:&lt;br /&gt;
      response = s.recv(1024).rstrip(&amp;quot;\n&amp;quot;)&lt;br /&gt;
      if not response: break&lt;br /&gt;
      if response != &amp;quot;OK&amp;quot;:&lt;br /&gt;
        sensors.append(response)&lt;br /&gt;
      else:&lt;br /&gt;
        break&lt;br /&gt;
  &lt;br /&gt;
    # wert konvertieren&lt;br /&gt;
    for sensor in sensors:&lt;br /&gt;
      s.send(&amp;quot;1w convert &amp;quot; + sensor + &amp;quot;\n&amp;quot;)&lt;br /&gt;
      while 1:&lt;br /&gt;
        response = s.recv(1024).rstrip(&amp;quot;\n&amp;quot;)&lt;br /&gt;
        if response == &amp;quot;OK&amp;quot;:&lt;br /&gt;
          break  &lt;br /&gt;
  &lt;br /&gt;
      # wert auslesen &lt;br /&gt;
      s.send(&amp;quot;1w get &amp;quot; + sensor + &amp;quot;\n&amp;quot;)&lt;br /&gt;
      response = s.recv(1024).rstrip(&amp;quot;\n&amp;quot;).lstrip()&lt;br /&gt;
      sensors_result[sensor] = response&lt;br /&gt;
    return(sensors_result)&lt;br /&gt;
  &lt;br /&gt;
  s = connectEP()&lt;br /&gt;
  for sensor, value in getTemperature().iteritems():&lt;br /&gt;
    print sensor + &amp;quot; &amp;quot; + value&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== PHP ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
	&amp;lt;title&amp;gt;ethersex php example&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
define(IP, '192.168.10.9'); // deine ethersex ip adresse&lt;br /&gt;
define(PORT, 2701); // standart port im image&lt;br /&gt;
&lt;br /&gt;
request(&amp;quot;1w convert&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
$response = request(&amp;quot;1w list&amp;quot;);&lt;br /&gt;
$explode = explode(&amp;quot;\n&amp;quot;, $response);&lt;br /&gt;
&lt;br /&gt;
for ($i=0; $i &amp;lt; count($explode)-2; $i++) {&lt;br /&gt;
	echo &amp;quot;Sensor: &amp;quot; . trim($explode[$i]);&lt;br /&gt;
	echo &amp;quot; -- Wert: &amp;quot; . request(&amp;quot;1w get &amp;quot; . $explode[$i]);&lt;br /&gt;
	echo &amp;quot;&amp;lt;br&amp;gt;\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function request($request) {&lt;br /&gt;
	$rs = fsockopen(IP, PORT);&lt;br /&gt;
&lt;br /&gt;
	if (!$rs) {&lt;br /&gt;
		$response  = &amp;quot;Kann Verbindung nicht aufbauen!&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
		$response =&amp;quot;&amp;quot;;&lt;br /&gt;
		$request = &amp;quot;!&amp;quot; . $request . &amp;quot;\r\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		fputs($rs, $request);&lt;br /&gt;
&lt;br /&gt;
		while (!feof($rs)) {&lt;br /&gt;
			$response .= fgets($rs, 128);&lt;br /&gt;
		}&lt;br /&gt;
		fclose($rs);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return $response;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Ethersex]]&lt;br /&gt;
[[Category:StepByStep]]&lt;br /&gt;
[[Category:Onewire]]&lt;br /&gt;
&lt;br /&gt;
=== Günstiger Einkauf von Temperatursensoren  bei k1w1 (Michael) ===&lt;br /&gt;
Vom Michael Schultz (k1w1) hab ich die Info erhalten, das er immer DS1820 auf Lager hat und sie sehr günstig weiterverkaufen kann.&lt;br /&gt;
Auch Mindermengen.&lt;br /&gt;
Mail: ethersex [AT] keyb [DOT] de&lt;/div&gt;</summary>
		<author><name>Mschz</name></author>	</entry>

	</feed>