![]() |
|
|||||||
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
#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
Вес репутации: 601 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Ребята сильно не пинайте и если не трудно помогите со скриптом. Я не программист, а для себе в свободное от работы время, изучал только 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
Вес репутации: 601 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Спасибо за ответ. Показания в десятичном виде с запятой (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
Вес репутации: 601 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Ничего не дает. Ошибка таже.
|
|
|
|
|
|
#48 |
|
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
А если так
alerT=$(cat /home/ULICA.log) |
|
|
|
|
|
#49 |
|
Moderator
Регистрация: 19.10.2013
Сообщений: 479
Вес репутации: 601 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Не работает сравнение. В файле /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) | |
|
|