Подключение датчиков DS18B20 к Raspberry по 1-wire через GPIO
Добавлено: Вт июл 17, 2018 11:04 am
Добрый день всем. Я новичок в МД, ещё мало что понимаю, сильно не пинайте.
Пытаюсь подключить датчики температуры к малинке, есть проблема мне совсем непонятная.
Опишу всё, что сделал.
Установил готовый образ с МД отсюда https://connect.smartliving.ru/tasks/20.html (Версия для Raspberry 3 Model B).
Включил интерфейс 1-wire через sudo raspi-config.
Датчики (их у меня 3 шт) подключил к GPIO4 с подтяжкой к 5В.
В /sys/bus/w1/devices все три датчика появились.
В маркете дополнений МД установил пакет для 1-wire.
Установил пакет owfs, отредактировал owfs.conf, сейчас его содержимое такое (ни разу не уверен, что правильное):
! server: server = localhost:4304
server: FAKE = DS18S20,DS2405
server: w1
server: port 8234
mountpoint = /mnt/1wire
allow_other
http: port = 2121
ftp: port = 2120
server: port = localhost:4304
По порту 2121 owserver отображает список датчиков, там два фейковых DS18S20 и DS2405 как и указано в конфиге (нахрена они нужны, кстати?) и три моих, данные с них также отображаются верно: Отредактироал /var/www/html/config.php, раскомментил строку Define('ONEWIRE_SERVER', 'tcp://localhost:8234');
Перезапустил малинку.
Теперь проблема.
В панели управления МД в устройствах 1-wire произвожу сканирование, и страница выдаёт ошибку:
Fatal error: Uncaught Error: Call to undefined function bccomp() in /var/www/html/modules/onewire/ownet.php:516 Stack trace: #0 /var/www/html/modules/onewire/onewire.class.php(576): OWNet->get('/28.FF407565150...', 2, false) #1 /var/www/html/modules/onewire/onewire.class.php(362): onewire->updateDevice('3') #2 /var/www/html/modules/onewire/onewire.class.php(155): onewire->scanDevices() #3 /var/www/html/modules/onewire/onewire.class.php(116): onewire->admin(Array) #4 /var/www/html/lib/jTemplate.class.php(711) : eval()'d code(8): onewire->run() #5 /var/www/html/lib/jTemplate.class.php(711): eval() #6 /var/www/html/lib/jTemplate.class.php(195): jTemplate->parseModules('<!DOCTYPE html>...', Array, './templates/') #7 /var/www/html/lib/jTemplate.class.php(109): jTemplate->parse('<!DOCTYPE html>...', Array, './templates/') #8 /var/www/html/lib/parser.class.php(93): jTemplate->__construct('./templates/pan...', Array, Object(panel)) #9 /var/www/html/lib/parser.class.php(63): parser->jtemplate_parse('./templates/pan...', Array) #10 in /var/www/html/modules/onewire/ownet.php on line 516
После повторного входа на страницу устройств вижу там три датчика, но не три моих, а один мой и два фейковых: При этом автообновление данных с датчиков не работает, хотя настроил 5 сек, висят какие-то данные разово полученные при сканировании и всё.
Отключаю два моих датчика, в owserver они пропадают, всё соответствует, а в МД как и прежде - один мой и два фейковых, и скаинрование выдаёт ошибку. Отключаю всё свои датчики, в owserver остались только фейковые, а при сканировании в МД по-прежнему один мой и два фейковых, но ошибку уже не выдаёт.
Датчики проверенные, на Ардуине работали без проблем. Также проверен GPIO4, 1-wire рабочий, читал данные с этих трех датчиков без участия МД (да и сейчас в /sys/bus/w1/devices они все три есть и данные с них верные). Датчики на столе, то есть никаких длинных линий.
Всё, дальше я не понимаю куда копать, подскажите, пожалуйста.
Пытаюсь подключить датчики температуры к малинке, есть проблема мне совсем непонятная.
Опишу всё, что сделал.
Установил готовый образ с МД отсюда https://connect.smartliving.ru/tasks/20.html (Версия для Raspberry 3 Model B).
Включил интерфейс 1-wire через sudo raspi-config.
Датчики (их у меня 3 шт) подключил к GPIO4 с подтяжкой к 5В.
В /sys/bus/w1/devices все три датчика появились.
В маркете дополнений МД установил пакет для 1-wire.
Установил пакет owfs, отредактировал owfs.conf, сейчас его содержимое такое (ни разу не уверен, что правильное):
! server: server = localhost:4304
server: FAKE = DS18S20,DS2405
server: w1
server: port 8234
mountpoint = /mnt/1wire
allow_other
http: port = 2121
ftp: port = 2120
server: port = localhost:4304
По порту 2121 owserver отображает список датчиков, там два фейковых DS18S20 и DS2405 как и указано в конфиге (нахрена они нужны, кстати?) и три моих, данные с них также отображаются верно: Отредактироал /var/www/html/config.php, раскомментил строку Define('ONEWIRE_SERVER', 'tcp://localhost:8234');
Перезапустил малинку.
Теперь проблема.
В панели управления МД в устройствах 1-wire произвожу сканирование, и страница выдаёт ошибку:
Fatal error: Uncaught Error: Call to undefined function bccomp() in /var/www/html/modules/onewire/ownet.php:516 Stack trace: #0 /var/www/html/modules/onewire/onewire.class.php(576): OWNet->get('/28.FF407565150...', 2, false) #1 /var/www/html/modules/onewire/onewire.class.php(362): onewire->updateDevice('3') #2 /var/www/html/modules/onewire/onewire.class.php(155): onewire->scanDevices() #3 /var/www/html/modules/onewire/onewire.class.php(116): onewire->admin(Array) #4 /var/www/html/lib/jTemplate.class.php(711) : eval()'d code(8): onewire->run() #5 /var/www/html/lib/jTemplate.class.php(711): eval() #6 /var/www/html/lib/jTemplate.class.php(195): jTemplate->parseModules('<!DOCTYPE html>...', Array, './templates/') #7 /var/www/html/lib/jTemplate.class.php(109): jTemplate->parse('<!DOCTYPE html>...', Array, './templates/') #8 /var/www/html/lib/parser.class.php(93): jTemplate->__construct('./templates/pan...', Array, Object(panel)) #9 /var/www/html/lib/parser.class.php(63): parser->jtemplate_parse('./templates/pan...', Array) #10 in /var/www/html/modules/onewire/ownet.php on line 516
После повторного входа на страницу устройств вижу там три датчика, но не три моих, а один мой и два фейковых: При этом автообновление данных с датчиков не работает, хотя настроил 5 сек, висят какие-то данные разово полученные при сканировании и всё.
Отключаю два моих датчика, в owserver они пропадают, всё соответствует, а в МД как и прежде - один мой и два фейковых, и скаинрование выдаёт ошибку. Отключаю всё свои датчики, в owserver остались только фейковые, а при сканировании в МД по-прежнему один мой и два фейковых, но ошибку уже не выдаёт.
Датчики проверенные, на Ардуине работали без проблем. Также проверен GPIO4, 1-wire рабочий, читал данные с этих трех датчиков без участия МД (да и сейчас в /sys/bus/w1/devices они все три есть и данные с них верные). Датчики на столе, то есть никаких длинных линий.
Всё, дальше я не понимаю куда копать, подскажите, пожалуйста.