lisolog

lisolog

На Пикабу
1238 рейтинг 1 подписчик 6 подписок 3 поста 2 в горячем
30

Ламинат на стену - гайд

Не спрашивайте зачем, но приспичило. Ламинат на обрешётку.

Либо меня в Гугле забанили,либо одно из трёх, но решения по креплению толкового не нашел. Предлагались гвозди, клей и кляймеры для вагонки. Гвозди неудобно заколачивать, клей нафиг, кляймеры не дают защелкнуться.

Поэтому методом проб были выбраны скобы. Держит хорошо на отрыв, но есть предположение, что вылетят при рассыхании.

Требования:

- скобы максимально длинные

- степлер мощный, у меня рессорный

- низ первого ряда на саморезы, чтобы выставить уровень

Показать полностью 1
22

Мониторинг UPS APC и EATON

В предыдущемпосте была показана реализация аппаратной riktak-коробочки на esp8266 со smart протоколом для APC. По реакции мнения разделились: Кто-то сказал "купи сетевую плату за 3 рубля" или добавь еще что-то, или "нафига это, когда есть то". Но в общем есть, то что есть. И да, по работе мне приходится мониторить бесперебойники, и да, в них есть сетевые карты - они разные и не все идеально работают.

Сейчас хотелось бы поделиться скриптом на PHP для мониторинга бесперебойников APC и EATON по snmp.

Предупреждая комментарии, я знаю что такое ZABBIX и также им всё мониторю и я знаю, что такое APC powerChute - это всё громоздко и ресурсоёмко. Свести визуально воедино ни заббиксом и чем-то другим не получилось.

Скрипт написал для собственного удобства - может кому-то сгодится.

Требования: apache/nginx + php + php-snmp и включенный snmp1 на чтение в устройствах.

Возможности:

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

2 - с аргументом dailyreport отправляет на почту (нужное исрпавить).

Должно получиться примерно следующее

Мониторинг UPS APC и EATON

Мониторинг UPS APC и EATON

Требуется отредактировать массивы $urls и $urls2, добавив список свйих УПС, а также почтовые адреса, если нужны рассылки.

Сильно не пинайте, чукча - не чукча и тд..

Источник или немного кода ниже:

<?php

// apt-get install php-snmp

// snmp 1 public readonly

$urls = array( // eatons

"192.168.1.55",
"192.168.1.57",
"192.168.1.16",
"192.168.1.60"
);

$urls2 = array( // APC

"192.168.1.25", "192.168.1.239",
"192.168.1.230",
"192.168.1.231" );

$pr="<html><body><table width= \"100%\" border=\"1\" cellpadding='5' cellspacing=\"0\"> <tr bgcolor=\"#ddd\" style=\"background-color:#ddd\"> <td>IP</td> <td>Расположение</td> <td>Модель</td> <td>Источник питания</td> <td>Нагрузка<br />%</td> <td>Зарядка<br />%</td> <td>Оставшееся<br>время</td> <td>Состояние<br />батареи</td> <td>Температура <br />(вн/нар)/Влажн.</td> </tr>";

for ($i = 0; $i<count($urls); $i++)

{

$pr.="<tr><td><a href=\"http://".$urls[$i]."/\" target=\"_blank\">".$urls[$i]."</a></td>";

$session = new SNMP(SNMP::VERSION_1, $urls[$i], "public");

$session->valueretrieval = SNMP_VALUE_PLAIN; $s = $session->walk("1.3.6.1.2.1.1.5.0", TRUE);

foreach ($s as $val)

{

$pr.= "<td><b>$val</b></td>";

}

$s = $session->walk("1.3.6.1.2.1.33.1.1.2.0", TRUE);

foreach ($s as $val)

{

$pr.= "<td><b><font color=\"#00f\" style=\"color:#00f;\">$val</font></b></td>"; }

$s = $session->walk("1.3.6.1.4.1.534.1.3.4.1.2.1", TRUE);

foreach ($s as $val) { $pr.= "<td>$val Volt</b></td>"; }

$s = $session->walk("1.3.6.1.4.1.534.1.4.1.0", TRUE); foreach ($s as $val) { $pr.= "<td align='right'></b>$val %</td>"; }

$s = $session->walk("1.3.6.1.4.1.534.1.2.4.0", TRUE); foreach ($s as $val) { $pr.= "<td align='right'>$val %</td>"; } $s = $session->walk("1.3.6.1.4.1.534.1.2.1.0", TRUE); foreach ($s as $val) {

$pr.= "<td>".round($val/60)." min</td>"; }

$s = $session->walk("1.3.6.1.4.1.705.1.5.9.0", TRUE); foreach ($s as $val) if($val=="2") $res1 = 2; else $res1 = 1; $s = $session->walk("1.3.6.1.4.1.705.1.5.15.0", TRUE); foreach ($s as $val) if($val=="2") $res2 = 2; else $res2 = 1; $s = $session->walk("1.3.6.1.4.1.705.1.5.11.0", TRUE); foreach ($s as $val) if($val=="2") $res3 = 2; else $res3 = 1; if($res1==2 && $res2==2 && $res3==2)

$pr.="<td bgcolor=\"#9d9\" style=\"background-color:#9d9\">OK</td>";

else

$pr.="<td bgcolor=\"#d99\" style=\"background-color:#d99\">fault</td>"; $s = $session->walk("1.3.6.1.4.1.534.1.6.1.0", TRUE); foreach ($s as $val) { $pr.= "<td>$val &deg;C / "; } $s = $session->walk("1.3.6.1.4.1.534.1.6.5.0", TRUE); foreach ($s as $val) { $pr.= " $val &deg;C /"; } $s = $session->walk("1.3.6.1.4.1.534.1.6.6.0", TRUE); foreach ($s as $val) { $pr.= " $val %</td>"; }

$session->close();

$pr.="</tr>\r\n";

}

for ($i = 0; $i<count($urls2); $i++)

{

$pr.="<tr><td><a href=\"http://".$urls2[$i]."/\" target=\"_blank\">".$urls2[$i]."</a></td>";

$session = new SNMP(SNMP::VERSION_1, $urls2[$i], "public");

$session->valueretrieval = SNMP_VALUE_PLAIN; $s = $session->walk("1.3.6.1.4.1.318.1.1.1.1.1.2.0", TRUE); foreach ($s as $val)

{

$pr.= "<td><b>$val</font></b></td>"; }

$s = $session->walk("1.3.6.1.4.1.318.1.1.1.1.1.1.0", TRUE); foreach ($s as $val) { $pr.= "<td><b><font color=\"#f00\" style=\"color:#f00;\">$val</font></b></td>"; }

$s = $session->walk("1.3.6.1.4.1.318.1.1.1.3.2.1.0", TRUE); foreach ($s as $val) { $pr.= "<td>$val Volt</b></td>"; }

$s = $session->walk("1.3.6.1.4.1.318.1.1.1.4.2.3.0", TRUE); foreach ($s as $val) { $pr.= "<td align='right'></b>$val %</td>"; }

$s = $session->walk("1.3.6.1.4.1.318.1.1.1.2.2.1.0", TRUE); foreach ($s as $val) { $pr.= "<td align='right'>$val %</td>"; } $s = $session->walk("1.3.6.1.4.1.318.1.1.1.2.2.3.0", TRUE); foreach ($s as $val)

{ $pr.= "<td>".($val/100/60)." min</td>"; }

$s = $session->walk("1.3.6.1.4.1.318.1.1.1.2.2.4.0", TRUE); foreach ($s as $val) if($val=="1")

{ $pr.= "<td bgcolor=\"#9d9\" style=\"background-color:#9d9\">OK</td>"; }

else

{ $pr.= "<td bgcolor=\"#d99\" style=\"background-color:#d99\">fault</td>"; }

$s = $session->walk("1.3.6.1.4.1.318.1.1.1.2.2.2.0", TRUE); foreach ($s as $val) { $pr.= "<td>$val &deg;C /"; }

$s = $session->walk("1.3.6.1.4.1.318.1.1.25.1.2.1.6", TRUE); foreach ($s as $val) { $pr.= "$val &deg;C /"; }

$s = $session->walk("1.3.6.1.4.1.318.1.1.25.1.2.1.7", TRUE); foreach ($s as $val) { $pr.= "$val %</td>"; }

$s = $session->walk("1.3.6.1.4.1.318.1.1.1.3.2.5.0", TRUE);

foreach ($s as $val)

{ $pr.= "<td>LTtB:$val</td>"; }

$session->close();

$pr.="</tr>\r\n";

}

$pr.="</table>";

$pr.="<br /><font color=\"#00f\" style=\"color:#00f;\">EATON</font> <font color=\"#f00\" style=\"color:#f00;\">APC</font><br />";

$pr.="APC reason for last transfer (LTtB) to battery power<br /> <p>1 No events<br /> 2 High line voltage<br /> 3 Brownout<br /> 4 Loss of mains power<br /> 5 Small temporary power drop<br /> 6 Large temporary power drop<br /> 7 Small spike<br /> 8 Large spike<br /> 9 UPS self test<br /> 10 Excessive input voltage fluctuation</p><br /> <a href=\"#\">Обновить скрипт УПС</a></body></html>";

if($act=='') echo $pr;

if($act=='dailyreport')

{

$to="admin@domain.ru";

$subject="UPSs daily report";

$body="$pr";

$headers = "Content-type: text/html; charset=utf-8\r\n"; $headers .= "From: ups@domain.ru ";

mail($to, $subject, $body, $headers);

}

?>

Показать полностью 1
140

Плата WiFi Мониторинга UPS типа smart APC

Основной используемый принцип  -запросы и обработка ответов по смарт-протоколу APC
За исключением того, что плату мониторинга/управления собираем на основе WemosD1mini.

Дешевизна решения очевидна, с учетом того, что самая дешевая сетевая плата AP9640 (без внешних датчиков)  стоит более 500$

Плата собрана по традиции в коробочке из под Тик-Така.

Цель реализации:

  • мониторинг основных параметров UPS на WEB странице, а также в представлении XML и JSON

  • доступ к плате по WiFi. Сохранение параметров подключения

  • сигнализация аварии - отправка сообщения на PHP скрипт по ссылке

  • сбор информации о окружающей температуре и влажности

  • сохранение настроек в EEPROM  FLASH

Детали

  • Wemos D1 mini

  • max3232 module без DB9 разъема

  • разъем DB9 папа

  • DHT-21 датчик температуры и влажности (опционально)

Схема простого подключения APC smart к RS232 COM порту ПК:

Схема микроконтроллера в связке с UPS

Схема микроконтроллера в связке с UPS

Код программы

В коде применены нестандартные библиотеки.

Помимо основной esp8266, ESP_EEPROM и WiFiManager

ups_alarm_script_url - ссылка на скрипт, для передачи алерта пропадания/появления питания, на email или телеграмм, в формате http://server/mail=  или похожем.

Основные Команды

Y        Enter smart mode    SM

R        Exit smart mode    SM

^A        Model string        SMART-UPS 700

^N 1,5s ^N        Turn on UPS

K 1,5s K    Turn off      

L        Input line voltage 

P        Power load %        000.0

Q        Status flags        08

    08 = on line, battery OK

    10 = on battery, battery OK

    50 = on battery, battery low

Z        Shutdown immediately    n/a

f        Battery level        099.0

Сообщения

!!!        нет входного напряжения

$        появление входного напряжения

Скетч для Arduino IDE

Пользуясь случаем, хотел бы передать привет все любителям esp

Показать полностью 3
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества