Здравствуйте,
Имеется PI3 + Razberry 2. К Pi подключены 4 датчика ds18b20. Значения температуры в Pi показываются.
Сами датчики:
28-000005111a63;
28-0316641587ff;
28-031687b51aff;
28-041682652aff;
Вопрос: Как можно прописать эти датчики температуры в интерфейсе Z-Wave.Me.
Какой код для получения значения требуется прописать в Code Device? И надо ли прописать код в Load custom JavaScript code?
И если возможно сделать показания датчиков только в С до 1 знака после запятой.
Аналог - см. ссылку.
Заранее спасибо. Кто может хоть чем-нибудь помогите....
Здравствуйте, КамчаткаС!
Чтобы датчик DS18b20, подключенный к GPIO Raspberry с платой RaZberry, вывести в UI Z-Way, необходимо выполнить следующие операции.
Предусловия: Подключить датчик к Raspberry Pi и инициализировать его.
1. Проверить командой, увидела ли его Raspberry Pi:
cat /sys/bus/w1/devices/28-041682652aff/w1_slave
где 28-041682652aff это ID вашего DS18b20 в системе
2. Добавить команды echo и cat в /opt/z-way-server/automation/.syscommands:
echo -e "/bin/echo\n/bin/cat" >> /opt/z-way-server/automation/.syscommands
3.Создать модуль Code Device типа sensorMultilevel со следующем содержанием:
4. В UI Z-Way будет создан виджет типа sensorMultilevel
Обязательно отпишитесь, получилось ли, а еще лучше со скриншотами :)
СПАСИБО! СПАСИБО! ОГРОМНОЕ.
Буду пробовать. Обязательно сообщу по результатам.
(Первые 2 пункта выполнил до этого, а вот третий пункт никак не мог найти, из руководства по программирования к razberry тоже ничего не получалось)
Могу еще вопрос задать?
Как можно подключить датчик давления - https://ru.aliexpress.com/item/Ultisolar-Pressure-Sensor-Transmitter-DC-5V-G1-4-0-1-2-MPa-0-174-PSI-For/32822053364.html?spm=a2g0s.9042311.0.0.274233edw9Wxpb
с выводом показаний в Z-way? Операция как я понимаю очень не простая.
Здесь я даже не знаю с чего начать.
Здравствуйте.
Прикладываю отчет по подключению датчика температуры DS18B20 к Pi 3 +Razberry:
1)Подключаем датчик согласно схемы (рис.1)
Если использовать провода, длиннее трех метров, могут возникнуть проблемы со считыванием. В этом случае рекомендуется использовать экранированные провода.
2) После подключения датчика выполняем следующие команды:
sudo modprobe w1-gpio && sudo modprobe w1_therm
ls -l /sys/bus/w1/devices/
Если все правильно, то получим (рис.2)
Если подобного результата нет, а датчик подключен правильно, редактируем файл /boot/config.txt: sudo nano /boot/config.txt
добавляем строку
dtoverlay=w1-gpio
сохраняем файл и перезагружаем Raspberry командой reboot.
3) Каждый датчик имеет уникальный номер. Находим ID датчика. В моем случае их 4 штуки:
28-000005111a63
28-0316641587ff
28-031687b51aff
28-041682652aff
Далее выполняем команду (Вы должны заменить значение 28-000005111a63 на ID своего датчика):
cat /sys/bus/w1/devices/28-000005111a63/w1_slave
Видим информацию, которую выдает датчик:
85 01 4b 46 7f ff 0b 10 5f : crc=5f YES
85 01 4b 46 7f ff 0b 10 5f t=24312
Среди этой информации есть следующий фрагмент: t = 24312. Это температура по шкале Цельсия, умноженная на 1000. То есть, температура 24312/1000 = 24,312oC.
4) Добавляем команды echo и cat в /opt/z-way-server/automation/.syscommands:
echo -e "/bin/echo\n/bin/cat" >> /opt/z-way-server/automation/.syscommands
5) Создаем в В UI Z-Way модуль Code Device типа sensorMultilevel со следующем содержанием (Рис.3):
Code Device для считывания состояния датчика подключенного к GPIO codedevice: sensorMultilevel
Код для получения значения:
Math.round(system('cat /sys/bus/w1/devices/28-000005111a63/w1_slave')[1].match(/t=(-?(\\d+))/)[1] / 100) / 10;
В UI Z-Way будет создан виджет типа sensorMultilevel
ИТОГ = НЕ РАБОТАЕТ (Рис.4).
!!! ПРОШУ ПОМОЩЬ с пунктом 5. Какой код требуется прописать?
Нашел следующие коды для получения данных с датчика, но вот как правильно прописать код для Z-Way???
Bash:
cat /sys/bus/w1/devices/28-000000d7970b/w1_slave | sed -n 's/^.*\(t=[^ ]*\).*/\1/p' | sed 's/t=//' | awk '{x=$1}END{print(x/1000)}'
Python:
tfile=open("/sys/bus/w1/devices/28-000000d7970b/w1_slave")
ttext=tfile.read()
tfile.close()
temp=ttext.split("\n")[1].split(" ")[9]
temperature=float(temp[2:])/1000
print temperature
Может надо прописать какой-то код в в модуль Load custom JavaScript code?
Как вот здесь описано: http://rus.z-wave.me/shop/controllers/z-wave.me-razberry-controller/gpio/
На основании этой статьи подключал датчики сухих контактов и они работают.
Поможете с кодом?
Спасибо, что есть кому не безразлично!!!
Код попробовал. НЕ работает.
Значение = 0.
Может надо прописать, что делать с GPIO4?
По примеру:
Добавьте в модуль Load custom JavaScript code следующий код:
system('/bin/echo "23" > /sys/class/gpio/export');
system('/bin/echo "in" > /sys/class/gpio/gpio23/direction');
На основании этого активировались герконы и кнопки, пока этого не было ничего не работало.