TE-MONITOR V4 - отсылка предупреждения при повышении температуры на e-mail

Купили в серверную данное устройство :

TE-MONITOR V4

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 - обязательна!!!