Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам > OpenWRT/LEDE

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.01.2014, 17:28   #11
melsem
Moderator
 
Регистрация: 19.10.2013
Сообщений: 479
Вес репутации: 600
melsem has much to be proud ofmelsem has much to be proud ofmelsem has much to be proud ofmelsem has much to be proud ofmelsem has much to be proud ofmelsem has much to be proud ofmelsem has much to be proud ofmelsem has much to be proud of
По умолчанию Re: Подключение термометра DS18S20 через GPIO на MR-3020 (CyberWRT)

Цитата:
Сообщение от Admin Посмотреть сообщение
У Вас какое колличество знаков после запятой?
Не уверен что поможет, но все равно попробуйте
if [ "$alerT" -ge "18.0" ]; then
Я так вписывал "18.0", выскакивала ошибка
Цитата:
root@OpenWrt:~# sh /etc/ReadDS18B20/oprosDC18B20.sh
sh: 28.00: bad number
. И погуглив, по совету знакомого, програмировать на bash if else. Нашел ответ. С запятыми в числах по простому не выйдет. И пошел по другому пути.
Считывая температуру не делил на 1000, а сохранял в фаил /tmp/DOM.log.
И теперь в нем целое число. И все работает.
А после повторного считывания, предварительно делил на 1000 и сохранял, в фаил /home/DOM.log на сервере.
Вот как все вышло, может что и не так как надо но работает. Комментарии писал для себя, привычка с assemblera.
Код:
#!/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"	# Чтение со второго датчика улица
alerT=$(cat /tmp/DOM.log)

 rm /home/ULICA.log &> /dev/null					# Удаление
 awk -F= '/t=/ {printf "%.02f\n", $2/1000}' $ULICA >> /home/ULICA.log	# Чтение со второго датчика. Перевод показаний в нормальный вид. Запись в фаил на сервере.

 rm /tmp/DOM.log &> /dev/null				# Удаление
 awk -F= '/t=/ {printf "%.f", $2}' $DOM >> /tmp/DOM.log	# Чтение с первого датчика. Запись в tmp целого числа температуры для сравнения
							# с заданным (пороговым числом температуры).
							# Пример: заданное 18000 это 18,00 градусов пороговое включение индикации.
							# Ниже которого диод включится.

if [ "$alerT" -ge 18000 ]; 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

sleep 2s	# Пауза в 2 сек перед повторным измерением и чтением температуры с первого датчика
 rm /home/DOM.log &> /dev/null						# Удаление
 awk -F= '/t=/ {printf "%.02f\n", $2/1000}' $DOM >> /home/DOM.log	# Чтение с первого датчика. Перевод показаний в нормальный вид. Запись в фаил на сервере.
С выводом GPIO2 что то не вышло. Времени не было все проверить. И я для теста игрался с GPIO26 - tp-link:green:wps.
Он подключен не так (и включается - отключаетя инверсно).
Теперь с роутера еще можно и термо-регулятор термостат зделать.
Admin спасибо в помощи написания скрипта.
melsem вне форума   Ответить с цитированием
 


Здесь присутствуют: 2 (пользователей: 0 , гостей: 2)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 11:35. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика