Поддержка 1-wire устройств и всё-всё-всё

У меня на DS18B20 иногда случаются скачки в показаниях, подключен по 2м проводам, провод длинный.
Нашел в сети такую картинку: http://chipenable.ru/images/stories/articles/DS18B20/2-podkluchenie-ds18b20-ds18s20.png
Или для WB есть другой способ.

Способ запитать по 2м проводам.

это называется “активная подтяжка”, нужна для работы термометров по двум проводам. У нас она и так реализована, единственная разница в том, что в линию выдаётся 3.3В, а не 5В.

Т.е. Она включена?

да

Доброй ночи
Подскажите, почему на web страницу постоянна показываются значения одной и той же температуры?
Через /sys/bus/w1 все норм.

скорее всего значение осталось от вашего предыдущего датчика, который теперь не подключен. посмотрите, что есть в MQTT (через mosquitto_sub) и удалите лишнее через delete_retained.py или mosquitto_pub. На форуме было.

Добрый день.
Вот с этими датчиками проблем не будет, не пробовали?
_http://voltmaster.ru/cgi-bin/qwery.pl/id=878566851

DS18B20 должны работать

Добрый день.
Кажется я понял, почему отваливается датчик и идет куча ошибок.
Самый пик начинается, когда внутри теплоаккумулятора (ТА) включаю ТЭН 2.5кВт, датчик временно расположен внутри медной трубки и соответственно его металлический корпус соприкасается. Трубы отопления с чугунным котлом естественно не заземлены, т.к. до некоторого момента использовалось твердое топливо. Сейчас появился ТА с ТЭНом+анод. Скорее всего это чудо и дает помех и постоянную ошибку CRC error. Если на туже линию подключить новые датчики с них так же идет куча ошибок или они вовсе не видны в системе.
Попробую в предстоящие выходные добавить прямое заземление бака и посмотреть, как будет работать.
наверное, лучший вариант посмотреть форму сигнала нечем, но нечем.

Думаю то, что корпус соприкасается - это не важно, т.к. металлическая гильза в датчиках никуда не подключена. Другое дело, что у вас там 10А переменного тока, от него на неэкранированный кабель 1-wire могут быть наводки.

от него на неэкранированный кабель 1-wire могут быть наводки
хм. об этом я не подумал, как-то. у меня получается от датчика с металлической гильзой идет "их" провод, а дальше витая пара. А есть идеи, как это дело можно победить?

Использовать экранированный кабель, не прокладывать сигнальные провода рядом с силовыми.

hamster А вы не подскажете конектится к owfs к 1wire надо через i2c,или как то иначе? Можете выложить owfs.conf ?

owfs (по крайней мере у меня) работает через ядерный драйвер. Конфиг, без комментариев, такой:


! server: server = localhost:4304
server: w1
mountpoint = /mnt/1wire
allow_other
http: port = 2121
server: port = localhost:4304

Выяснилась, однако, одна неприятная особенность: дублируются устройства. Т.е. через http и через FS некоторые устройства видны по два раза. Как-то так:

root@wirenboard:~# ls -l /mnt/1wire/uncached/
total 0
drwxrwxrwx 1 root root  8 Мар 25 12:36 1D.D66D06000000
drwxrwxrwx 1 root root  8 Мар 25 12:36 1D.D66D06000000
drwxrwxrwx 1 root root  8 Мар 25 12:36 26.8D6E52010000
drwxrwxrwx 1 root root  8 Мар 25 12:36 26.8D6E52010000
...


На первый взгляд, никаких других проблем это не вызывает, хотя выглядит странно. Я уже пробовал и выгружать ядерные драйверы клиентских устройств (через modprobe -r и через /etc/modprobe.d/w1slave.conf), и собрал owfs версии 3.0p2 - дубли никуда не ушли :frowning:

P.S. В силу обстоятельств, WB пока заниматься некогда. Может, получится после праздников доделать транслятор из owfs в MQTT, и выложить описание всего-того, что у меня, на текущий момент, получилось…
P.P.S. maxwolf - это я :slight_smile:

Здравствуйте!

WB SH 3.5
При загрузке устройства и примерно каждую минуту выводятся такие ошибки:

root@wirenboard:/sys/bus/w1/devices# dmesg | grep w1
[   17.570000] w1_master_driver w1_bus_master1: w1_search: max_slave_count 64 reached, will continue next search.
[   18.120000] w1_master_driver w1_bus_master2: w1_search: max_slave_count 64 reached, will continue next search.
[   73.240000] w1_master_driver w1_bus_master1: Family 0 for 00.800000000000.8c is not registered.
[   74.320000] w1_master_driver w1_bus_master2: Family 0 for 00.800000000000.8c is not registered.
[   74.350000] sysfs: cannot create duplicate filename '/bus/w1/devices/00-800000000000'
[   74.360000] Modules linked in: rtl8192cu rtl_usb rtl8192c_common rtlwifi smsc95xx w1_gpio wire cn
[   74.370000] CPU: 0 PID: 253 Comm: w1_bus_master2 Not tainted 3.19.0-imxv5-x0.1 #343
[   74.440000] [<c02758f8>] (device_add) from [<bf00a920>] (w1_attach_slave_device+0x1a0/0x38c [wire])
[   74.450000] [<bf00a920>] (w1_attach_slave_device [wire]) from [<bf00abbc>] (w1_slave_found+0xb0/0xb4 [wire])
[   74.460000] [<bf00abbc>] (w1_slave_found [wire]) from [<bf00b39c>] (w1_search+0x1e4/0x234 [wire])
[   74.470000] [<bf00b39c>] (w1_search [wire]) from [<bf00b464>] (w1_search_process_cb+0x78/0x124 [wire])
[   74.480000] [<bf00b464>] (w1_search_process_cb [wire]) from [<bf00b69c>] (w1_process+0x114/0x1a0 [wire])
[   74.490000] [<bf00b69c>] (w1_process [wire]) from [<c00365d8>] (kthread+0xc0/0xdc)
[   74.550000] w1_slave_driver 00-800000000000: Device registration [00-800000000000] failed. err=-17
[   74.560000] w1_master_driver w1_bus_master2: w1_attach_slave_device: Attaching 00-800000000000 failed.
[  140.450000] w1_master_driver w1_bus_master1: Family 0 for 00.400000000000.46 is not registered.
[  141.580000] w1_master_driver w1_bus_master2: Family 0 for 00.400000000000.46 is not registered.
[  141.600000] sysfs: cannot create duplicate filename '/bus/w1/devices/00-400000000000'
[  141.610000] Modules linked in: rtl8192cu rtl_usb rtl8192c_common rtlwifi smsc95xx w1_gpio wire cn
[  141.620000] CPU: 0 PID: 253 Comm: w1_bus_master2 Tainted: G        W      3.19.0-imxv5-x0.1 #343
[  141.690000] [<c02758f8>] (device_add) from [<bf00a920>] (w1_attach_slave_device+0x1a0/0x38c [wire])
[  141.700000] [<bf00a920>] (w1_attach_slave_device [wire]) from [<bf00abbc>] (w1_slave_found+0xb0/0xb4 [wire])
[  141.710000] [<bf00abbc>] (w1_slave_found [wire]) from [<bf00b39c>] (w1_search+0x1e4/0x234 [wire])
[  141.720000] [<bf00b39c>] (w1_search [wire]) from [<bf00b464>] (w1_search_process_cb+0x78/0x124 [wire])
[  141.730000] [<bf00b464>] (w1_search_process_cb [wire]) from [<bf00b69c>] (w1_process+0x114/0x1a0 [wire])
[  141.740000] [<bf00b69c>] (w1_process [wire]) from [<c00365d8>] (kthread+0xc0/0xdc)
[  141.770000] w1_slave_driver 00-400000000000: Device registration [00-400000000000] failed. err=-17
[  141.780000] w1_master_driver w1_bus_master2: w1_attach_slave_device: Attaching 00-400000000000 failed.

....

И постоянно появляются различные “фантомные” устройства вида 00-xx0000000000, даже если на шине ничего нет.

root@wirenboard:/sys/bus/w1/devices# ls
00-680000000000  00-a80000000000  w1_bus_master1  w1_bus_master2

Вопрос 1: это нормально?
Вопрос 2: что нужно сделать, чтобы считать id с домофонного ключа (DS1990A)?
Подключаю просто к 1-wire (паразитное питание), 3.3 v есть, но в /sys/bus/w1/devices только 00-xx0000000000.

Залил старый образ на флешку (20140614, а был 20150528), “фантомные” устройства пропали, а домофонные ключи появились (ура!).

Теперь вопрос: как поменять в модуле wire параметры timeout и slave_ttl, чтобы поиск устройств на шине происходил чаще? Все-таки 10 секунд держать ключ слишком долго).

думаю через /etc/modprobe.d/ или /etc/modules

Датчик температуры и влажности am2321 работает и с 1-wire тоже судя по даташиту, может добавите поддержку?
http://www.aosong.com/en/products/details.asp?id=137

Нет, он не 1-wire, там свой проприетарный протокол (такой же как в DHT11/DHT21). Эти датчики работают ещё и по i2c, я даже какой-то код на C находил и на wirenboard запускал. Задача подключать их напрямую к WB достаточно маргинальная, поэтому делать для них MQTT-драйвер в планах нет. Как обычно, только если найдутся энтузиасты, крупный заказ, либо желающие оплатить поддержжку.