![]() |
|
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
![]() |
#41 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
На форуме выкладывали скрипт который использует трехпозиционный переключатель
|
![]() |
![]() |
![]() |
#42 |
Member
Регистрация: 04.01.2014
Сообщений: 81
Вес репутации: 0 ![]() |
![]()
Вот нашел интересную подробную инструкцию , все купил, буду делать
http://d.hatena.ne.jp/tomtom1ono/20120412/1334176791 |
![]() |
![]() |
![]() |
#43 |
Moderator
Регистрация: 19.10.2013
Сообщений: 479
Вес репутации: 600 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Ребята сильно не пинайте и если не трудно помогите со скриптом. Я не программист, а для себе в свободное от работы время, изучал только assembler.
Да и писал только к PIC16. Что надо вписать в скрипт, что бы сделать индикацию температуры ниже 18 градусов в доме (на дополнительно впаянном диоде на GPIO2). Использую два датчика DS18B20. Один в доме второй на улице. Подключены к GPIO1. Пакеты установлены и все работает. Делал по этому примеру Подтяжку на GPIO1, резистор 18кОм, сменил на 3,3кОм. Для инициализации шины, на работу DS18B20 через порт GPIO1, после перезагрузки или включения роутера А так же добавил в систему пин GPIO2, для индикации температуры ниже 18 градусов , и сделал выходом Вписал в файл /etc/rc.local: Код:
insmod w1-gpio-custom bus0=0,1,0 echo 2 > /sys/class/gpio/export echo out > /sys/class/gpio/gpio2/direction Код:
#!/bin/sh DOM="/sys/bus/w1/drivers/w1_slave_driver/28-0000034b4891/w1_slave" # Чтение с первого датчика дом ULICA="/sys/bus/w1/drivers/w1_slave_driver/28-0000034b476c/w1_slave" # Чтение со второго датчика улица rm /home/DOM.log &> /dev/null # Удаление rm /home/ULICA.log &> /dev/null # Удаление awk -F= '/t=/ {printf "%.02f\n", $2/1000}' $DOM >> /home/DOM.log # Чтение с первого датчика. Перевод показаний в нормальный вид. Запись в фаил на сервере. awk -F= '/t=/ {printf "%.02f\n", $2/1000}' $ULICA >> /home/ULICA.log # Чтение со второго датчика. Перевод показаний в нормальный вид. Запись в фаил на сервере. Код:
*/5 * * * * sh /etc/ReadDS18B20/oprosDC18B20.sh И на этом все. Как и что вписать дальше в скрипт, для управления GPIO2 в зависимости от температуры, не знаю. |
![]() |
![]() |
![]() |
#44 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Незнаю в каком виде у Вас показания, но
попробуйте вот так Код:
alerT=cat /home/ULICA.log if ["$alerT" -ge 18]; then echo 1 > /sys/class/gpio/gpio2/value else echo 0 > /sys/class/gpio/gpio2/value fi |
![]() |
![]() |
![]() |
#45 |
Moderator
Регистрация: 19.10.2013
Сообщений: 479
Вес репутации: 600 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Спасибо за ответ. Показания в десятичном виде с запятой (22.68).
Вписал вот так Код:
#!/bin/sh DOM="/sys/bus/w1/drivers/w1_slave_driver/28-0000034b4891/w1_slave" # Чтение с первого датчика дом ULICA="/sys/bus/w1/drivers/w1_slave_driver/28-0000034b476c/w1_slave" # Чтение со второго датчика улица rm /home/DOM.log &> /dev/null. # Удаление rm /home/ULICA.log &> /dev/null # Удаление awk -F= '/t=/ {printf "%.02f\n", $2/1000}' $DOM >> /home/DOM.log # Чтение с первого датчика. Перевод показаний в нормальный вид. Запись в фаил на сервере. awk -F= '/t=/ {printf "%.02f\n", $2/1000}' $ULICA >> /home/ULICA.log # Чтение со второго датчика. Перевод показаний в нормальный вид. Запись в фаил на сервере. alerT=cat /home/ULICA.log if ["$alerT" -ge 18]; then echo 1 > /sys/class/gpio/gpio2/value else echo 0 > /sys/class/gpio/gpio2/value fi Код:
root@OpenWrt:~# sh /etc/ReadDS18B20/oprosDC18B20.sh /etc/ReadDS18B20/oprosDC18B20.sh: line 10: /home/ULICA.log: Permission denied sh: missing ] |
![]() |
![]() |
![]() |
#46 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Измените права на файл /home/ULICA.log
|
![]() |
![]() |
![]() |
#47 |
Moderator
Регистрация: 19.10.2013
Сообщений: 479
Вес репутации: 600 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Ничего не дает. Ошибка таже.
|
![]() |
![]() |
![]() |
#48 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
А если так
alerT=$(cat /home/ULICA.log) |
![]() |
![]() |
![]() |
#49 |
Moderator
Регистрация: 19.10.2013
Сообщений: 479
Вес репутации: 600 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Не работает сравнение. В файле /home/ULICA.log вписывал числа 17, 18 и 19.
В скрипте строку включения диода wps всегда пропускает. Отрабатывает только выключение. В скрипте для теста оставил только это : Код:
#!/bin/sh alerT=$(cat /home/ULICA.log) if ["$alerT" -ge 18]; then echo 1 > /sys/devices/platform/leds-gpio/leds/tp-link\:green\:wps/brightness else echo 0 > /sys/devices/platform/leds-gpio/leds/tp-link\:green\:wps/brightness fi Код:
root@OpenWrt:~# sh /etc/ReadDS18B20/oprosDC18B20.sh /etc/ReadDS18B20/oprosDC18B20.sh: line 7: [18: not found root@OpenWrt:~#sh /etc/ReadDS18B20/oprosDC18B20.sh /etc/ReadDS18B20/oprosDC18B20.sh: line 7: [17: not found root@OpenWrt:~#sh /etc/ReadDS18B20/oprosDC18B20.sh /etc/ReadDS18B20/oprosDC18B20.sh: line 7: [19: not found root@OpenWrt:~# Последний раз редактировалось melsem; 13.01.2014 в 06:18. |
![]() |
![]() |
![]() |
#50 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
У Вас какое колличество знаков после запятой?
Не уверен что поможет, но все равно попробуйте if [ "$alerT" -ge "18.0" ]; then |
![]() |
![]() |
![]() |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|