Купили в серверную данное устройство :
TE-MONITOR V4 Термометр с интерфейсом ethernet(ссылка на страницу устройства у производителя- http://etrivia.ru/goods/TE-MONITOR-V4-Internet-termometr)
Еще подробное описание здесь : https://www.orgtech.info/te-monitor-v6-idealen-dlya-dopolneniya-k-umnomu-domu/
Девайс всем хорош, не слишком сложен в настройке, поддерживает TELNET и SNMP подключение, а так же WEB интерфейс.
Главный минус устройства - отсутствие из коробки функции для которого оно и покупалось - а именно предупреждения при повышении температуры(либо понижения, кому как больше нравится).
Вернее теоретически оно есть, но через сервис Народный монитор. Но с одной стороны, есть режим приватного датчика, однако не хочется лишний раз палить свои IPшники , с другой народу не сильно интересно какая температура в какой-то там серверной. Опять же заходить раз в несколько часов через веб морду и смотреть температуру- не сильно интересно.
Попытка воспользоваться SNMP , в нашей сети , успехом не увенчалась. Поэтому посидев и подумав придумал следующее:
Способ подойдет как для работы в локалке, так и в интернете ( с некоторыми корректировками)
Итак использовалось следующее - Сервер с Ubuntu 14.04.6, с поднятым PHP , корректно отправляющий письма по команде mail.
Открываем в файерволе 23 порт(или порт который вы установили на TE-MONITOR) на прием и передачу по telnet:
-A INPUT -p tcp -m tcp -i eth1 --dport 23 -j ACCEPT
-A INPUT -p tcp -m tcp -o eth1 --dport 23 -j ACCEPT
Создаем PHP файл со следующим содержимым :
#!/usr/bin/php / Way to php interpretator
<?php
$host = "192.168.0.10"; / Ip of Thermometer
$port = 23;
$TimeOut = 10;
$ip = "192.168.0."; / In my case working without it
$start = 1;
$end = 1; // if number of sensors > 1 , change it
$massiv=array();
$i=0;
$socket = fsockopen($host, $port, $errno, $errstr, $TimeOut); // Connecting
if(!$socket)
{
echo "Connection failed!!!\n";
exit();
}
else
{
echo "Connected $host ...\n";
sleep(4); // Wait prompt "Password:"
fputs ($socket, "\n"); // Send password (Default Empty)
for ($i=$start; $i<=$end; $i++) {
fputs ($socket, "ping ".$ip.$i."\n"); // Send command
}
// fputs ($socket, "exit\n"); // Send command "exit"
while (!feof($socket))
{
$stroka=fgets($socket, 1024) ;
//$i++;
// echo " ".fgets($socket, 1024)."\n"; // Print result
}
}
$massiv=explode(" ",$stroka);
$temp="$massiv[3]";
echo $temp;
$temperatura= $temp+0; // Make a number
echo '</br>';
if ($temp>22){echo 'Attention';mail("Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.", "Ahtung v SERVERNOI!", "Temperatura".$temp." \n \n \n "); } /Where 22 it's maximum temp, fractional also supports
ELSE {echo 'OK!';}
?>
Кладем файл на сервер в принципе в любую папку , но если у вас сервер используется том числе с APACHE, для запуска скрипта вручную кладем его в подходящую для Вас папку. У меня это /var/www/html
Делаем файл исполняемым и владельцем root'а подробно расписывать данные процедуру не буду - ибо ГУГЛ в помощь, после чего не забываем удалить в конце первой строки после #!/usr/bin/php - ^M
Все на этом настройка закончена, можно проверять работоспособность. Если все ок , то выдастся Connected и IP устройства, далее температуру и </br>OK!
Далее можно добавлять в CRON
crontab -e
Для опроса устройства раз в час -
* 1 * * * /var/www/html/temp.php
Данная работает для устройства с одним датчиком, но после некоторых доработок - оно подойдет и для устройств с несколькими датчиками.
Также соответственно можно прописывать любое количество условий и различные действия в зависимости от них.
Спасибо за ВНИМАНИЕ!
Автор Иван Ершов
При перепечатке ссылка на http://netda.info - обязательна!!!