1

Тема: 1-Wire DS18B20 под FreeNAS(FreeBSD 7.2)

Стоял у меня сервак под виндой и на нём мониторилась температура по дому. Сейчас пересел на FreeNAS. MRTG уже установил и настроил но не могу найти чем снимать показания датчиков DS18B20.
Здесь нашол исходники под Linux, но не могу скомпилировать под БСД.

2

Re: 1-Wire DS18B20 под FreeNAS(FreeBSD 7.2)

может быть попробовать net-snmp ?
Конечно если датчик может отвечать по SNMP протоколу

Добавлено: 07-01-2010 13:27:22

Хотя, я посмотрел инфу о нем - там нет ни слова о том, что поддерживается SNMP.
Тогда либо линукс либо Винда.

3

Re: 1-Wire DS18B20 под FreeNAS(FreeBSD 7.2)

Нашол такую статью.  Digitemp здесь. Объясните пожалуйста как его собрать?

Re: 1-Wire DS18B20 под FreeNAS(FreeBSD 7.2)

Хорошо расписано. Осталось вникнуть , создать скрипт, и все это связать.
Должно заработать.

Добавлено: 07-01-2010 18:27:44

%cd /home/
%pwd
/usr/home/
%fetch http://www.digitemp.com/software/linux/ … 6.0.tar.gz
digitemp-3.6.0.tar.gz                         100% of  283 kB  116 kBps
%ls
digitemp-3.6.0.tar.gz
%tar -xzf digitemp-3.6.0.tar.gz
%ls
digitemp-3.6.0          digitemp-3.6.0.tar.gz
%
%cd digitemp-3.6.0
%ls
COPYING                 FAQ                     digitemp-cflags.patch   digitemp_DS9097U        src
COPYRIGHT               Makefile                digitemp.1              dthowto.txt             userial
CREDITS                 README                  digitemp.spec           perl                    win
ChangeLog               TODO                    digitemp_DS2490         python
DS9097_Schematic.gif    contrib                 digitemp_DS9097         rrdb

Далее читайте файлы README, dhowto.txt

5

Re: 1-Wire DS18B20 под FreeNAS(FreeBSD 7.2)

Кручу-Верчу
Спасибо! Я кажысь понял свою ошибку!

Re: 1-Wire DS18B20 под FreeNAS(FreeBSD 7.2)

А у меня не получается откомпилировать.

bsd# gmake ds9097 all install
gcc -I./src -I./userial -O2 -Wall  -DFREEBSD   -c -o src/digitemp.o src/digitemp.c
gcc -I./src -I./userial -O2 -Wall  -DFREEBSD   -c -o src/device_name.o src/device_name.c
gcc -I./src -I./userial -O2 -Wall  -DFREEBSD   -c -o src/ds2438.o src/ds2438.c
gcc -I./src -I./userial -O2 -Wall  -DFREEBSD   -c -o userial/crcutil.o userial/crcutil.c
gcc -I./src -I./userial -O2 -Wall  -DFREEBSD   -c -o userial/ioutil.o userial/ioutil.c
gcc -I./src -I./userial -O2 -Wall  -DFREEBSD   -c -o userial/swt1f.o userial/swt1f.c
gcc -I./src -I./userial -O2 -Wall  -DFREEBSD   -c -o userial/owerr.o userial/owerr.c
gcc -I./src -I./userial -O2 -Wall  -DFREEBSD   -c -o userial/cnt1d.o userial/cnt1d.c
gcc -I./src -I./userial -O2 -Wall  -DFREEBSD   -c -o userial/ad26.o userial/ad26.c
gcc -I./src -I./userial -O2 -Wall  -DFREEBSD   -c -o userial/ds9097/ownet.o userial/ds9097/ownet.c
gcc -I./src -I./userial -O2 -Wall  -DFREEBSD   -c -o userial/ds9097/linuxlnk.o userial/ds9097/linuxlnk.c
gcc -I./src -I./userial -O2 -Wall  -DFREEBSD   -c -o userial/ds9097/linuxses.o userial/ds9097/linuxses.c
gcc -I./src -I./userial -O2 -Wall  -DFREEBSD   -c -o userial/ds9097/owtran.o userial/ds9097/owtran.c
gcc -I./src -I./userial -O2 -Wall  -DFREEBSD   -c -o src/ds9097.o src/ds9097.c
gcc src/digitemp.o src/device_name.o src/ds2438.o userial/crcutil.o userial/ioutil.o userial/swt1f.o userial/owerr.o userial/cnt1d.o userial/ad26.o  userial/ds9097/ownet.o userial/ds9097/linuxlnk.o userial/ds9097/linuxses.o userial/ds9097/owtran.o src/ds9097.o -o digitemp_DS9097
  SYSTYPE = FreeBSD
  CFLAGS = -I./src -I./userial -O2 -Wall  -DFREEBSD
  LIBS   =
Pick one of the following targets:
        make ds9097     - Build version for DS9097 (passive)
        make ds9097u    - Build version for DS9097U
        make ds2490     - Build version for DS2490 (USB) (edit Makefile) (BROKEN)
Please note: You must use GNU make to compile digitemp
gmake: *** No rule to make target `digitemp', needed by `install'.  Stop.
bsd#

Добавлено: 07-01-2010 18:59:22

Там в мануале написано что он собирал на BSD8.
У меня 6.4

bsd# uname -a
FreeBSD localhost 6.4-STABLE FreeBSD 6.4-STABLE #0: Sat Jan  2 16:24:07 CET 2010     bsd@localhost /usr/obj/usr/src/sys/main  i386

7

Re: 1-Wire DS18B20 под FreeNAS(FreeBSD 7.2)

Кручу-Верчу
У меня на 7.2 откомпилелось. Нужно gmake ds9097. Но щас какая то проблема с подвисанием на FreeNAS при инициализации. На виртуальной машине норм всё. Буду разбератся.
П.С. Ещё раз огромное спасибо!!!

Отредактировано sSpeaker (07-01-2010 20:28:45)

Re: 1-Wire DS18B20 под FreeNAS(FreeBSD 7.2)

Комманды покажите какие набирали что оно откомпилилось smile

9

Re: 1-Wire DS18B20 под FreeNAS(FreeBSD 7.2)

Так оно у тебя итак компилитса, просто нужно писать "gmake ds9097".

Не работает нормально! если отключить ком порт запустить прогу и сразу подключить Всё проиницыализируетса. Если запустить с подключённым ком digitemp зависает. Почему не работает не понимаю. Только что проверил еще раз, на винде всё ОК.

Завтра попробую схему перепаять на приведённую в howto

Отредактировано sSpeaker (07-01-2010 22:38:40)

Re: 1-Wire DS18B20 под FreeNAS(FreeBSD 7.2)

Пробую на БСД7

# gmake ds9097
gcc -I./src -I./userial -O2 -Wall  -DFREEBSD   -c -o src/digitemp.o src/digitemp.c
gcc -I./src -I./userial -O2 -Wall  -DFREEBSD   -c -o src/device_name.o src/device_name.c
gcc -I./src -I./userial -O2 -Wall  -DFREEBSD   -c -o src/ds2438.o src/ds2438.c
gcc -I./src -I./userial -O2 -Wall  -DFREEBSD   -c -o userial/crcutil.o userial/crcutil.c
gcc -I./src -I./userial -O2 -Wall  -DFREEBSD   -c -o userial/ioutil.o userial/ioutil.c
gcc -I./src -I./userial -O2 -Wall  -DFREEBSD   -c -o userial/swt1f.o userial/swt1f.c
gcc -I./src -I./userial -O2 -Wall  -DFREEBSD   -c -o userial/owerr.o userial/owerr.c
gcc -I./src -I./userial -O2 -Wall  -DFREEBSD   -c -o userial/cnt1d.o userial/cnt1d.c
gcc -I./src -I./userial -O2 -Wall  -DFREEBSD   -c -o userial/ad26.o userial/ad26.c
gcc -I./src -I./userial -O2 -Wall  -DFREEBSD   -c -o userial/ds9097/ownet.o userial/ds9097/ownet.c
gcc -I./src -I./userial -O2 -Wall  -DFREEBSD   -c -o userial/ds9097/linuxlnk.o userial/ds9097/linuxlnk.c
gcc -I./src -I./userial -O2 -Wall  -DFREEBSD   -c -o userial/ds9097/linuxses.o userial/ds9097/linuxses.c
gcc -I./src -I./userial -O2 -Wall  -DFREEBSD   -c -o userial/ds9097/owtran.o userial/ds9097/owtran.c
gcc -I./src -I./userial -O2 -Wall  -DFREEBSD   -c -o src/ds9097.o src/ds9097.c
gcc src/digitemp.o src/device_name.o src/ds2438.o userial/crcutil.o userial/ioutil.o userial/swt1f.o userial/owerr.o userial/cnt1d.o userial/ad26.o  userial/ds9097/ownet.o userial/ds9097/linuxlnk.o userial/ds9097/linuxses.o userial/ds9097/owtran.o src/ds9097.o -o digitemp_DS9097
# gmake ds9097 install
gcc src/digitemp.o src/device_name.o src/ds2438.o userial/crcutil.o userial/ioutil.o userial/swt1f.o userial/owerr.o userial/cnt1d.o userial/ad26.o  userial/ds9097/ownet.o userial/ds9097/linuxlnk.o userial/ds9097/linuxses.o userial/ds9097/owtran.o src/ds9097.o -o digitemp_DS9097
gmake: *** No rule to make target `digitemp', needed by `install'.  Stop.

Что получилось:

# ls
COPYING                 FAQ                     digitemp-cflags.patch   digitemp_DS9097U        src
COPYRIGHT               Makefile                digitemp.1              dthowto.txt             userial
CREDITS                 README                  digitemp.spec           perl                    win
ChangeLog               TODO                    digitemp_DS2490         python
DS9097_Schematic.gif    contrib                 digitemp_DS9097         rrdb
# ./digitemp_DS9097 -s /dev/ttyS0 -a
DigiTemp v3.5.0 Copyright 1996-2007 by Brian C. Lane
GNU Public License v2.0 - http://www.digitemp.com
Error, serial port '/dev/ttyS0' does not exists!

В БСД серийный порт называется либо /dev/sio0 или - /dev/sio1
Может поробовать так:
./digitemp_DS9097 -s /dev/sio0 -a

Может изза этого не инициализирует данные?

11

Re: 1-Wire DS18B20 под FreeNAS(FreeBSD 7.2)

У меня нету sio0

freenas:/mnt/data/digitemp# ls /dev
acpi            cuad1           net1            ttyd0.init      ttyvb
ad1             cuad1.init      net2            ttyd0.lock      ttyvc
ad1s1           cuad1.lock      net3            ttyd1           ttyvd
ad1s1a          devctl          network         ttyd1.init      ttyve
ad1s1c          devstat         nfs4            ttyd1.lock      ttyvf
ad1s2           fd              nfslock         ttyp0           ufs
ad1s3           fido            null            ttyv0           ufsid
agpgart         geom.ctl        pci             ttyv1           ulpt0
ata             io              ppi0            ttyv2           unlpt0
atkbd0          kbd0            ptyp0           ttyv3           urandom
console         kbd1            random          ttyv4           usb
consolectl      kbdmux0         speaker         ttyv5           usb0
crypto          klog            stderr          ttyv6           xpt0
ctty            kmem            stdin           ttyv7           zero
cuad0           mdctl           stdout          ttyv8
cuad0.init      mem             sysmouse        ttyv9
cuad0.lock      net             ttyd0           ttyva

если направляю на ttyd0 - виснет. если на ttyd0.init нормально проходит инициализация но ничего не находит. Схема точно ни причём, скомпилированный под винду digitemp работает.

Добавлено: 07-01-2010 23:30:29

допёр. Нужно на cuad0 вешать!


Добавлено: 08-01-2010 00:03:49

ГГг. Теперь не могу сделать чтоб нормально читало температуру

freenas:/mnt/data/digitemp# ./digitemp_DS9097 -i -s/dev/cuad0
DigiTemp v3.5.0 Copyright 1996-2007 by Brian C. Lane
GNU Public License v2.0 - http://www.digitemp.com
Turning off all DS2409 Couplers
...
Searching the 1-Wire LAN
28D0EA3C020000A8 : DS18B20 Temperature Sensor
28A8E23C020000AF : DS18B20 Temperature Sensor
28B4D43C02000091 : DS18B20 Temperature Sensor
ROM #0 : 28D0EA3C020000A8
ROM #1 : 28A8E23C020000AF
ROM #2 : 28B4D43C02000091
Wrote .digitemprc
freenas:/mnt/data/digitemp# ./digitemp_DS9097 -a -d5
DigiTemp v3.5.0 Copyright 1996-2007 by Brian C. Lane
GNU Public License v2.0 - http://www.digitemp.com
Jan 07 18:01:46 Sensor 0 C: 85.00 F: 185.00
Jan 07 18:01:47 Sensor 1 C: 85.00 F: 185.00
Jan 07 18:01:48 Sensor 2 C: 85.00 F: 185.00

На всех сенсорах даёт 85. Пробовал выставлять задержки вплоть до 10 сек.(((

Re: 1-Wire DS18B20 под FreeNAS(FreeBSD 7.2)

я понимаю так, что /dev/cuad0 это TCP IP over Serial port - тоесть думаю это не то устройство , которое напрямую соединяет.

Предлагаю почитать про устройства серийных порто на FreeBSD

Может прояснит что то. Надо будет тоже прикупить парочку сенсоров для теста.

Добавлено: 08-01-2010 11:20:57

Либо дело в том, что девайс не откомпилировался. Так как проинсталироваться не смог. Изза этого баги при снятии данных. Ведь пишет же

#
# gmake ds9097 install
gcc src/digitemp.o src/device_name.o src/ds2438.o userial/crcutil.o userial/ioutil.o userial/swt1f.o userial/owerr.o userial/cnt1d.o userial/ad26.o  userial/ds9097/ownet.o userial/ds9097/linuxlnk.o userial/ds9097/linuxses.o userial/ds9097/owtran.o src/ds9097.o -o digitemp_DS9097
gmake: *** No rule to make target `digitemp', needed by `install'.  Stop.
#

и файла нет такого digitemp. А должен быть, так как везде в мануалах он так и называется.

Отредактировано Кручу-Верчу (08-01-2010 11:21:34)

13

Re: 1-Wire DS18B20 под FreeNAS(FreeBSD 7.2)

Всё работает через cuad0. Причина 85 оказалась в том, что один проводок надломился когда я переподключал разъём между машинами.

freenas:/mnt/data/digitemp# ./digitemp_DS9097 -i -s /dev/cuad0
DigiTemp v3.5.0 Copyright 1996-2007 by Brian C. Lane
GNU Public License v2.0 - http://www.digitemp.com
Turning off all DS2409 Couplers
...
Searching the 1-Wire LAN
28D0EA3C020000A8 : DS18B20 Temperature Sensor
28A8E23C020000AF : DS18B20 Temperature Sensor
28B4D43C02000091 : DS18B20 Temperature Sensor
ROM #0 : 28D0EA3C020000A8
ROM #1 : 28A8E23C020000AF
ROM #2 : 28B4D43C02000091
Wrote .digitemprc
freenas:/mnt/data/digitemp# ./digitemp_DS9097 -a
DigiTemp v3.5.0 Copyright 1996-2007 by Brian C. Lane
GNU Public License v2.0 - http://www.digitemp.com
Jan 08 06:06:31 Sensor 0 C: 54.50 F: 130.10
Jan 08 06:06:33 Sensor 1 C: 15.69 F: 60.24
Jan 08 06:06:34 Sensor 2 C: -0.38 F: 31.32
freenas:/mnt/data/digitemp#

Спасибо за помощь!!!!

Re: 1-Wire DS18B20 под FreeNAS(FreeBSD 7.2)

Откуда брали схемку для спайки и подсоединения к серийному порту, если не секрет smile

15

Re: 1-Wire DS18B20 под FreeNAS(FreeBSD 7.2)

http://habrahabr.ru/blogs/DIY/55780/

Re: 1-Wire DS18B20 под FreeNAS(FreeBSD 7.2)

Отлично! И Вам спасибо!

17

Re: 1-Wire DS18B20 под FreeNAS(FreeBSD 7.2)

Подниму темку...
прошу помощи для подключения через переходник usb-com.

переходник на базе prolific

uplcom
- USB support for Prolific PL-2303/2303X/2303HX serial adapters driver.
To compile this driver into the kernel, place the following lines in your kernel configuration file:
    device uplcom device ucom

в ядро включил
device UCOM
device UPLCOM.
в dev появляются новые устройства:
cuaU0
ttyU0
но при попытке их опросить имею только:

./digitemp_DS9097 -i -s /dev/cuaU0
DigiTemp v3.5.0 Copyright 1996-2007 by Brian C. Lane
GNU Public License v2.0 - http://www.digitemp.com
Turning off all DS2409 Couplers

Searching the 1-Wire LAN

схема/датчик рабочие, проверены на виндовсе и на FreeBSD под com портом напрямую.

FreeBSD 6.2-RELEASE

Отредактировано zed1 (18-10-2010 11:08:11)

18

Re: 1-Wire DS18B20 под FreeNAS(FreeBSD 7.2)

Что нибудь в /var/log/messages  есть по поводу девайса?

19

Re: 1-Wire DS18B20 под FreeNAS(FreeBSD 7.2)

Alexander пишет:

Что нибудь в /var/log/messages  есть по поводу девайса?

при подключении девайса выдается только

Oct 27 12:20:32 pc kernel: ucom0: Prolific Technology Inc. USB-Serial Controller D, rev 1.10/4.00, addr 2

20

Re: 1-Wire DS18B20 под FreeNAS(FreeBSD 7.2)

Вот и подключайтесь к ucom0

#./digitemp_DS9097 -i -s /dev/ucom0

должно сработать.

21

Re: 1-Wire DS18B20 под FreeNAS(FreeBSD 7.2)

Alexander пишет:
#./digitemp_DS9097 -i -s /dev/ucom0

должно сработать.

нет, не срабатывает

# ./digitemp_DS9097 -i -s /dev/ugen0
DigiTemp v3.5.0 Copyright 1996-2007 by Brian C. Lane
GNU Public License v2.0 - http://www.digitemp.com
owAcquire: failed to set attributes: Invalid argument
Error 24: Failed to initialize system resource

при подключении в логах было сообщение:

Nov 18 14:05:50 kernel: ugen0: Prolific Technology Inc. USB-Serial Controller D, rev 1.10/4.00, addr 2