Další možností (preferovanější), jak zobrazit teplotu ze senzoru DS18B20 je přes převodník I2C na 1-Wire sběrnici.

Zde používám DS2482-100, která obsahuje jednu 1-wire sběrnici. Existuje i druhá SD2484-800, která má 8 nezávislých sběrnic. Koupíme je třeba zde.
Samozřejmě můžeme na i2c sběrnici ty převodníky skládat pěkně za sebou a udělat si tak z DS2482-100 dvě a více oddělených 1-wire sběrnic.
Schéma zapojení převodníku:
Nastavení RasPi:
- přes sudo raspi-config povolíme používání 1-Wire a restartujeme RasPi.
- zkontrolujeme, že se na sběrnici I2C objevilo nové zařízení – i2cdetect -y 1
- na obrázku jsou vidět např. dva převodníky s adresou 18 a 19!

- nainstalujeme OWFS a modul pro python – sudo apt-get -y install owfs python-ow ow-shell
- po instalaci by měla běžet http služba OW na portu 2121 (http://127.0.0.1:2121)
- upravíme /etc/owfs.conf
- zakomentovat řádek
- # server: FAKE = DS18S20,DS2405
- zakomentovat řádek
- # ftp: port = 2120
- vložit v sekci USB device: DS9490
- server: device = /dev/i2c-1
- odstranit komentáře u řádků:
- mountpoint = /mnt/1wire
- allow_other
- pokud máme více 1-wire plus adaptérů (zapojených klasicky paralelně), musíme říct, aby fungoval na všech
- server: i2c = ALL:ALL
- zakomentovat řádek
- uložit a restartovat RasPi
- vyzkoušíme načíst základní stromovou strukturu z OW ( owget, owdir, owread, owwrite )
- owdir – vypíše strukturu
- owdir /28.FFA88BA01605 – vypíšeme si vlastnosti senzoru
- owread /28.FFA88BA01605/temperature – teplota na sezzoru
- owread /28.FFA88BA01605/type – typ připojeného senzoru
Připojení OW jako složky file systému – sudo owfs
- následně již pracujeme jako s file systémem
- ls -l /mnt/1wire/
- cat /mnt/1wire/bus.0/28.FFA88BA01605/temperature
- cat /mnt/1wire/bus.0/28.*/temperature

Nakonec jednoduchý python skript na hromadné načtení dat:
import ow
ow.init('localhost:4304')
sensorlist = ow.Sensor('/').sensorList()
for sensor in sensorlist:
print('Device Found')
print('Address: ' + sensor.address)
print('Family: ' + sensor.family)
print('Alias: ' + sensor.alias)
print('ID: ' + sensor.id)
print('Type: ' + sensor.type)
print('Temperature: ' + sensor.temperature)
print(' ')
PS1: vypnutí zbytečných služeb:
- sudo /lib/systemd/systemd-sysv-install disable owftpd
- sudo /lib/systemd/systemd-sysv-install disable owhttpd
PS2: vytvoření aliasů (pojmenování) pro jednotlivé senzory
- do konfiguračního souboru /etc/owfs.conf vložíme řádek
- alias = /etc/owfs_alias
- vytvoříme soubor /etc/owfs_alias a naplníme jej
- 28.FF4A53811605FC = Obyvak
- 28.FFA88BA0160587 = Loznice
- restartujeme službu OW
- sudo /etc/init.d/owserver restart

