проверка доступности порта на примере работы сервиса MQTT

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Ответить
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

проверка доступности порта на примере работы сервиса MQTT

Сообщение directman66 » Пн май 15, 2017 9:43 am

Делюсь небольшим примером:
СпойлерПоказать
//Проверка на работоспособность функции fsockopen
if(!function_exists('fsockopen'))
{ say ( 'fsockopen не работает!'); return; }
//Используем определённые сервера на которых точно открыты нужные порты
$tests = array(
1883 => '192.168.1.35'
)
;

//По циклу тестируем
foreach($tests as $port => $server){
//Соединяемся
$fp = @fsockopen($server,$port,$errno,$errstr,5);
//Если удачное соединение
if($fp){
sg('mqttserver.statecolor','green');
sg('mqttserver.error','');
fclose($fp);}



//Если неудачное соединение
else{

sg('mqttserver.statecolor','red');
//sg('mqttserver.error',$errno.' : '.$errstr');

}}
далее из меню показываем текущий цвет
<font size="4" color="%mqttserver.stateColor%" title="MQTT">●</font>

и не забываем вызывать сценарий например раз в минуту из таймера ClockChime.onNewMinute
RunScript('mqtt_open');
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: проверка доступности порта на примере работы сервиса MQT

Сообщение nick7zmail » Пн май 15, 2017 10:16 am

Я бы ещё добавил проверку к статусу сети (который в классе systemStates объекте Communication), и туда бы ошибку забирал из вашего объекта, если что-то не так. А к красному или желтому статусу отнести - уже сами по уровню важности определяйте))

http://majordomo.smartliving.ru/Main/BasicsStates
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Ответить