"Умный дом\теплица" или наблюдаем за заморозком...

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

Модератор: Модераторы

Lets Dance
Аватара пользователя
Отключен
Сообщения: 208
Зарегистрирован: 11.02.2011, 14:03
Репутация: 0
Откуда: Russia
Поблагодарили: 6 раз

"Умный дом\теплица" или наблюдаем за заморозком...

#1

Сообщение Lets Dance »

Попалась мне в руки некая микросхемка (датчик температуры) Dallas DS1820.

http://tec.org.ru/publ/stati_po_ehlektr ... 0/8-1-0-14

И 1-ware \ USB адаптер - DS9490R
Изображение

Опять-таки подумалось, что в те времена кода многие теребят "твиттер" и говорят об "умных домах", почему бы не сделать хотя бы "умную теплицу". А точнее автоматическую защиту от заморозка.
Всю технологию описывать долго, те кто шарит в технике и дружит с паяльником, те сами разбирутся что такое 1-ware шина.
А здесь выложу только основную идею и некоторые скрипты.

Итак. Существует в природе некая технология предсказания заморозка:

Изображение

http://www.holodilshchik.ru/index_holod ... orozki.htm

А у нас есть микросхемка, адаптер и старый престарый хламовный комп, или ноут 10-ти летней давности в гараже.

Для наблюдения за температурой, можно написать простой скриптик на языке "Perl", который будет опрашивать подсоединенный датчик, и заносить данные в базу данных.

"Базка" на mysql будет выглядеть примерно так:

+---------------------------+----------------+
| time_m | temperature |
+---------------------------+----------------+
| 2011-03-11 12:29:01 | 24.31 |
| 2011-03-11 12:30:01 | 24.44 |
| 2011-03-11 12:31:02 | 24.31 |
| 2011-03-11 12:32:01 | 24.44 |
| 2011-03-11 12:33:01 | 24.44 |
+---------------------+----------------------+

Cоздается база элементарным SQL-запросом:

Код: Выделить всё

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- Структура таблицы `temperat`
--

CREATE TABLE IF NOT EXISTS `temperat` (
  `temperature` varchar(10) NOT NULL,
  `time_m` datetime NOT NULL default '0000-00-00 00:00:00',
  `subzero` int(2) NOT NULL,
  `comment` varchar(255) default NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='sbor temperature';
А скрипт опроса и занесения в базу так:

Код: Выделить всё

#!/usr/bin/perl

$debug=1;
$daemon=0;
$syslog=1;
$pidfile="/var/run/temper.pid";
$database = "nabl";
$hostname = "10.10.10.10";
$port = "3306";
$username = "user";
$password = 'pass';

use Net::hostent;
use Sys::Syslog;
use POSIX;
use DBI;
$|=1;


############################
# Main part of the program #########################################################################
############################
my $dsn = "DBI:mysql:database=$database:host=$hostname:port=$port";
my $dbh = DBI->connect($dsn, $username, $password) or die("Could not connect to MySQL!");


########################
## TEMPERATURE DATABASE ##
########################

#### Upload data ####

$date = `date '+%Y-%m-%d %H:%M:%S'`;

$t1= `/usr/bin/sudo /usr/bin/digitemp_DS2490 -c ./temper/digitemp.conf -t 0 | grep C:`;
$t1 =~ s/\s*//;                 # Убираем пробел
$t1 =~ m/(.*)C\:(.*)F\:(.*)/;   # Выделяем значение температуры
#print $t1;
my $t = $2;
chomp $t;
#print $t . "\n";


#### Add temperature to table 'temperat' ####
#        my $sqladd = "INSERT into temperat values ('".$ip."','".$date."');";
        my $sqladd = "INSERT INTO temperat (`temperature`, `time_m`, `subzero`, `comment`) VALUES ('".$t."', '".$date."', '0', NULL);";
        my $sthadd = $dbh->prepare($sqladd);
        $sthadd->execute;
        $sthadd->finish;

Ставим скрипт на выполние в cron каждую минуту, и наслаждаемся, как данные о температуре с вашего участка, заносятся в базу данных.


Что бы сделать выводы о возможности наступления заморозков по графику, мы должны вспомнить геометрию класс так за 6-й...
И описать график в виде функции. Вспоминаем уравнение прямой в декартовой системе координат: y = a*x+b.
С помощью этого уравнения описываем все характерные линии графика:

$y1=0.4*$x+1.6; #100% описывает линию 100%-го заморозка и т.д.
$y2=0.391*$x+2.7; #80%
$y3=0.382*$x+4.7; #60%
$y4=0.382*$x+6.7; #40%
$y5=0.391*$x+8.7; #20%
$y6=0.375*$x+11; #10

Дальше нехитрыми математическими действиями мы вычисляем вероятность заморозка по графику. Вот пример скрипта, который делает выборку из базы и выводит данные о заморозке.

Код: Выделить всё

#!/usr/bin/perl


$debug=1;
$daemon=0;
$syslog=1;
$pidfile="/var/run/mrtg.pid";
$database = "nabl";
$hostname = "-----";
$port = "3306";
$username = "юзернэйм";
$password = 'пароль';

use Net::hostent;
use Sys::Syslog;
use POSIX;
use DBI;
$|=1;


############################
# Main part of the program #########################################################################
############################
my $dsn = "DBI:mysql:database=$database:host=$hostname:port=$port";
my $dbh = DBI->connect($dsn, $username, $password) or die("Could not connect to MySQL!");

        $sth->execute; 
        my @row = $sth->fetchrow_array();
        $t13 = $row[0];
        $sth->finish;
#chomp $t13;
#print $t13 . "\n";

my $sth = "SELECT temperature FROM temperat WHERE time_m LIKE '%".$date."%".$time21."%'";
#my $sth = "SELECT temperature FROM temperat WHERE time_m LIKE '%".$time21."%'";
#print $sth;

$sth = $dbh->prepare($sth)
                 || die "Can't prepare statement: $DBI::errstr";

        $sth->execute; 
        my @row = $sth->fetchrow_array();
        $t21 = $row[0];
        $sth->finish;
#chomp $t21;
#print $t21 . "\n";

# Определяем координаты точки для расчета
$x = ($t13 - $t21);
#print $x . "\n";
$y = $t21;
#print $t21 . "\n";


$y1=0.4*$x+1.6; #100%
$y2=0.391*$x+2.7; #80%
$y3=0.382*$x+4.7; #60%
$y4=0.382*$x+6.7; #40%
$y5=0.391*$x+8.7; #20%
$y6=0.375*$x+11;  #10
#print $y1 . "\n";


if($y1 > $y) {
  print "Вероятность заморозка 100% !!! \n";
} elsif($y2 >= $y) {
  print "Вероятность заморозка 80% !! \n";
} elsif($y3 >= $y) {
  print "Вероятность заморозка 60% ! \n";
} elsif($y4 >= $y) {
  print "Вероятность заморозка 40% \n";
} elsif($y5 >= $y) {
  print "Вероятность заморозка 20% \n";
} elsif($y6 >= $y) {
  print "Вероятность заморозка 10% \n";
} else {
  print "Заморозка не будет! ... Совсем... :-)  \n";
}
Этот скрипт можно запускать из любого места и на основании полученных данных например, включить отопление в теплице, вывести график температуры (другим скриптом) на интернет страницу, отправить на ваш телефон СМС-ку, чтоб Вы брали руки в ноги, и чапали на дачу укрывать посадки.


Если использовать программку gnuplot

на на основании полученных данных из базы можно строить подобные графики:

Изображение


В общем это пример, как на коленке, можно собрать основу действующей системы. ))) Может кому понадобится.

Кстати если использовать COM-порт вместо USB-адаптера, то стоимость всей системы будет рублей 300-400 (в основном цена датчика)

http://www.kusto.com.ru/temperature/
Последний раз редактировалось Lets Dance 12.03.2011, 11:52, всего редактировалось 8 раз.
АндрейВ
Аватара пользователя
Консультант
Сообщения: 8622
Зарегистрирован: 19.11.2007, 17:55
Репутация: 1
Интересы: Плодовые и декоративные
Откуда: Москва-Бутово, деревня в Калужской обл.
Благодарил (а): 489 раз
Поблагодарили: 2709 раз

#2

Сообщение АндрейВ »

Для того чтобы защитить растюхи от заморозка достаточно простого обогревателя с термодатчиком и ехать никуда не надо... А заморозок, чо за ним наблюдать? Его нейтрализовать надо...
Андрей Виноградов.
Изображение
Lets Dance
Аватара пользователя
Отключен
Сообщения: 208
Зарегистрирован: 11.02.2011, 14:03
Репутация: 0
Откуда: Russia
Поблагодарили: 6 раз

#3

Сообщение Lets Dance »

Об обогревателе... А что если у вас в открытом грунте что-то растет? Обогреватель как-то не очень обогревает Мир )))
Нужно ехать укрывать, дымить, поливать и т.д.

Ну и есть разные подходы.
Топорные, научные, прогрессивные и т.д. )))
Просто когда подрастет новое поколение молодых садоводов, для которых техника сложнее утюга не покажется бесовской машиной, то и инфа пригодится )))

+ условия у всех разные, у кого-то парник на 4-х колышках, а у кого-то зимний сад газом обогревается.

К тому же тут главное идея, можно вместо датчика температуры - поставить датчик влажности воздуха или почвы на основании данных с них включать полив или открывать окна.

Можно для себя создать вообще погодную станцию, с графиками температуры по дням, выводить их в свой блог, дневник наблюдений и т.д.

Нет ничего невозможного, для человека с интеллектом ;-)
А главное - не так и сложно!
АндрейВ
Аватара пользователя
Консультант
Сообщения: 8622
Зарегистрирован: 19.11.2007, 17:55
Репутация: 1
Интересы: Плодовые и декоративные
Откуда: Москва-Бутово, деревня в Калужской обл.
Благодарил (а): 489 раз
Поблагодарили: 2709 раз

#4

Сообщение АндрейВ »

Lets Dance писал(а):Об обогревателе... А что если у вас в открытом грунте что-то растет? Обогреватель как-то не очень обогревает Мир )))
Нужно ехать укрывать, дымить, поливать и т.д.
Что у Вас конкретно росло в открытом грунте и что Вы смогли уберечь от заморозка укрыванием, дымлением, поливом и тд, подхватившись и приехав на свой участок накануне заморозка?
Андрей Виноградов.
Изображение
Lets Dance
Аватара пользователя
Отключен
Сообщения: 208
Зарегистрирован: 11.02.2011, 14:03
Репутация: 0
Откуда: Russia
Поблагодарили: 6 раз

#5

Сообщение Lets Dance »

Предлагаю обсудить это в другой ветке, чтоб не захламлять данный топик.
А здесь лучше будем обсуждать по теме ветки.
тамара
Аватара пользователя
Ушла из жизни
Сообщения: 31953
Зарегистрирован: 10.03.2006, 13:13
Репутация: 1
Откуда: Москва, ж-л "ПХ", дача 40 км по Ярославке
Поблагодарили: 108 раз

#6

Сообщение тамара »

Андрей! Цветущие ягодные кусты можно спасти, укрыв толстым лутрасилом. Землянику, наверное. Но пока услышишь дома датчик, пока метнешься на участок, пока доедешь, пока приготовишь укрытия, уже утро настанет. Я в другой теме написала, что это мазохизм.
В саду человек нашел первую усладу для души и тела
julia
Прихозовец5000+
Сообщения: 7242
Зарегистрирован: 15.03.2006, 12:58
Репутация: 0
Занятие: agronom
Откуда: планета Земля 01 октября
Благодарил (а): 92 раза
Поблагодарили: 913 раз

#7

Сообщение julia »

Lets Dance! Сама идея делать локальный прогноз заморозка на конкретном участке заманчива. Но эти пляски могут иметь смысл в каком-нибудь товарном ЛПХ, Дачников контроль не спасет - у многих участки так далеко, а судьба заморозка может быть решена за час до захода солнца. И кто рванет делать задымление? Если же садовод живет в загородном доме, то достаточно следить за влажностью воздуха и падением температуры - и комп не потребуется. Потом я слабо представляю компьютер, пусть и убитый, на даче.... без хозяев... Мы даже лопаты убираем, когда в город возвращаемся...
Был случай - сачок для чистки пруда забыли - кто-то ему "ноги" приделал... А кому он нужен - в округе всего три пруда на участках , и мы друг друга знаем... Так что комп - точно будет перемещен в другое пространство :lol:
Гармония - основа красоты и благополучия
Lets Dance
Аватара пользователя
Отключен
Сообщения: 208
Зарегистрирован: 11.02.2011, 14:03
Репутация: 0
Откуда: Russia
Поблагодарили: 6 раз

#8

Сообщение Lets Dance »

Ну раз такое скептическое отношение и никому не надо, то можно тему и почистить! )))
тамара
Аватара пользователя
Ушла из жизни
Сообщения: 31953
Зарегистрирован: 10.03.2006, 13:13
Репутация: 1
Откуда: Москва, ж-л "ПХ", дача 40 км по Ярославке
Поблагодарили: 108 раз

#9

Сообщение тамара »

Зачем? Вдруг продвинутые заглянут на огонек.
В саду человек нашел первую усладу для души и тела
julia
Прихозовец5000+
Сообщения: 7242
Зарегистрирован: 15.03.2006, 12:58
Репутация: 0
Занятие: agronom
Откуда: планета Земля 01 октября
Благодарил (а): 92 раза
Поблагодарили: 913 раз

#10

Сообщение julia »

Lets Dance! Это не скепсис... Это размышлизмы. Не обижайтесь! Просто, благие намерения и, увы, практика... разными ходют дорогами. Вашу бы идею в Германию либо Канаду...
Гармония - основа красоты и благополучия
Lets Dance
Аватара пользователя
Отключен
Сообщения: 208
Зарегистрирован: 11.02.2011, 14:03
Репутация: 0
Откуда: Russia
Поблагодарили: 6 раз

#11

Сообщение Lets Dance »

julia писал(а):Вашу бы идею в Германию либо Канаду...
Т.е. мы как-бЭ себя сразу заранее ставим на заведомо отсталое место?
julia
Прихозовец5000+
Сообщения: 7242
Зарегистрирован: 15.03.2006, 12:58
Репутация: 0
Занятие: agronom
Откуда: планета Земля 01 октября
Благодарил (а): 92 раза
Поблагодарили: 913 раз

#12

Сообщение julia »

Не... мы не ставим... мы констатируем, увы.... :cry:
Гармония - основа красоты и благополучия
Lets Dance
Аватара пользователя
Отключен
Сообщения: 208
Зарегистрирован: 11.02.2011, 14:03
Репутация: 0
Откуда: Russia
Поблагодарили: 6 раз

#13

Сообщение Lets Dance »

И тем не менее я продолжу свою "колонку" не зависимо от того, контрастируем мы или нет.

Что касается компьютера и того, что его унесут... Да.. условия у всех разные, но почему вы решили, что компьютер должен быть прям в теплице? ))) Он может стоять где угодно, т.к.1-wire поддерживает расстояние до 300 м.

Теперь о самом компьютере... А почему именно компьютер?! Сейчас на "помойку", а точнее в дальний угол забрасываются типа устаревшие, но такие прекрасные устройства как например Wi-Fi роутеры, А между тем это своего рода маленькие компьютеры, вычислительная мощь которых, достаточна чтоб даже небольшой сайтик поддерживать, а уж опросить датчики, занести показания в базу и отрисовать по алгоритмам графики - это для нее раз плюнуть. Такая коробочка может висеть в комнате (причем даже интерьер не попортит), и запрашивать данные о температуре с датчиков на улице, в подвале, чердаке.

Лично я нашел давно заброшенное устройство Linksis NSLU2.
Изображение
и поковырявшись с ним денек, вдохнул в него новую жизнь и новую систему - Linux Debian
http://www.cyrius.com/debian/nslu2/install.html

Водрузил на него вэб-сервер, базу данных mysql и свои подправленные скрипты для отображения графиков и расчета заморозка. Устройство, которое по размерам чуть больше пачки сигарет, превратилось из тупой "сетевой флешки", в контроллер для прогнозирования заморозков.

вот так выглядит сейчас его скромный интерфейс:

Изображение


А так описанный на PHP график, по которому предсказывается заморозок. Эта картинка динамически отрисовывается по дпнным наблюдений. А красная точка на графике как раз рассчитывается по алгоритму описанному выше.

Изображение
Нюра
Аватара пользователя
Профессиональный любитель
Сообщения: 4696
Зарегистрирован: 12.04.2010, 09:43
Репутация: 1
Откуда: Далеко за С.-Посадом, Лефортово
Благодарил (а): 1446 раз
Поблагодарили: 3053 раза

Re: "Умный дом\теплица" или наблюдаем за заморозко

#14

Сообщение Нюра »

Lets Dance писал(а):Этот скрипт можно запускать из любого места
Ты эта, ты не умничай, ты exe-модуль давай. Нам твои скрипты непонятные :gun
Изображение
Вам помочь или не мешать?
Lets Dance
Аватара пользователя
Отключен
Сообщения: 208
Зарегистрирован: 11.02.2011, 14:03
Репутация: 0
Откуда: Russia
Поблагодарили: 6 раз

#15

Сообщение Lets Dance »

Какой EXE??? ))) Забудьте! Здесь от Windows ничего нет.
Это чистое веб-приложение.

Скрипт, который опрашивает датчик написан на PERL и приведен выше, он запускается по CRON каждую минуту, на том устройстве, куда подключен датчик и передает данные на сервер (хостинг), а на хостинге PHP - скрипты вытаскивают все из базы и рисуют нам вэб-страничку.
Если скрипты не понятны, то работать ничего не будет, ибо это не мануал в стиле "куда нажимать", а просто сырая версия о том, куда думать )))

Архив со скриптами могу куда нить выложить.
Ответить

Вернуться в «Инструменты, оборудование»