Очень интересно, но ничего непонятно!
Re: Очень интересно, но ничего непонятно!
Может понадобится)
Пример интеграции контроллера MegaD-2561 с сервером по протоколу HTTP
Обработка сообщений от MegaD-2561 и формирование ответов
Для того, чтобы принимать от устройства сообщения, необходим Web-сервер. Простейший Web-сервер можно написать самостоятельно. Однако значительно проще использовать уже готовый, например, Apache, lighttpd, nginx, IIS. Установка Web-сервера на Linux или Windows занимает не более нескольких минут.
Далее необходим какой-либо язык программирования. Например, PHP. Это достаточно простой язык программирования с низким порогом вхождения, в котором легко освоиться начинающим пользователям.
MegaD-2561 формирует сообщения вида http://ip-address/script?pt=n, где ip-address - адрес сервера, указанный в сетевых настройка, scipt - скрипт, указанный в сетевых настройках, а n - номер активированного порта. Запрос может выглядеть так http://192.168.0.250/megad.php?pt=6
Соответственно можно создать на сервере простейший скрипт megad.php
<?php
if ( $_GET['pt'] == "6" )
{
// Выполнение действий
}
?>
Собственно, вот и все программирование. Если мы получили сообщение от устройства о нажатии кнопки, подключенной к порту 6, выполняем необходимые действия.
Но мы можем сразу же сформировать ответ, где скажем MegaD-2561, какие выходы должен включить, выключить или переключить контроллер. Тогда скрипт приобретает такой вид.
<?php
if ( $_GET['pt'] == "6" )
{
echo "7:1";
}
?>
Если сработал порт 6, включаем нагрузку, подключенную к порту 7. Формат команды описан выше и соответствует формату поля Action.
Первая цифра - номер порта
Вторая цифра после двоеточия - действие (0 - выключить, 1 - включить, 2 - переключить, изменить состояние на противоположное).
Как и в случае с полем Action, есть возможность дать команды на управление сразу нескольким портам.
echo "7:1;8:0";
Команды разделяются точкой с запятой. Порт 7 - включить, Порт 8 - выключить.
Получение состояния портов
Получить состояние порта можно с помощью любого Web-клиента, в том числе с помощью функций PHP.
URL для получения текущего состояния порта:
http://192.168.0.14/sec/?pt=4&cmd=get
где параметр pt определяет номер порта.
Можно использовать любые удобные функции: file_get_contents(), curl() или socket'ы. Например:
<?php
$state = file_get_contents('http://192.168.0.14/sec/?pt=4&cmd=get');
?>
После выполнения данной команды в переменной $state у нас будет содержаться ON (если порт находит в активном состоянии), OFF или текущее значение, если порт настроен в режим PWM (ШИМ) или ADC (АЦП).
Контроллер также позволяет вывести состояние всех своих портов по команде cmd=all
http://192.168.0.14/sec/?cmd=all
Управление выходами
В предыдущих примерах сервер управлял выходами в ответ на сообщение контроллера, которое формируется в связи с каким-то событием (например, нажатие выключателя). Но сервер может управлять выходами контроллера, инициировав связь с устройством самостоятельно. Для этого программа на сервере вызывает URL вида:
http://192.168.0.14/sec/?cmd=10:1
Где формат команды (cmd) стандартный, который описан в разделе про Сценарии (Act).
Если выход настроен как PWM (ШИМ), то допускается указывать значения от 0 до 255
http://192.168.0.14/sec/?cmd=12:150
Пример управления группой (см. описании работы с группами)
http://192.168.0.14/sec/?cmd=g1:1
Пример интеграции контроллера MegaD-2561 с сервером по протоколу HTTP
Обработка сообщений от MegaD-2561 и формирование ответов
Для того, чтобы принимать от устройства сообщения, необходим Web-сервер. Простейший Web-сервер можно написать самостоятельно. Однако значительно проще использовать уже готовый, например, Apache, lighttpd, nginx, IIS. Установка Web-сервера на Linux или Windows занимает не более нескольких минут.
Далее необходим какой-либо язык программирования. Например, PHP. Это достаточно простой язык программирования с низким порогом вхождения, в котором легко освоиться начинающим пользователям.
MegaD-2561 формирует сообщения вида http://ip-address/script?pt=n, где ip-address - адрес сервера, указанный в сетевых настройка, scipt - скрипт, указанный в сетевых настройках, а n - номер активированного порта. Запрос может выглядеть так http://192.168.0.250/megad.php?pt=6
Соответственно можно создать на сервере простейший скрипт megad.php
<?php
if ( $_GET['pt'] == "6" )
{
// Выполнение действий
}
?>
Собственно, вот и все программирование. Если мы получили сообщение от устройства о нажатии кнопки, подключенной к порту 6, выполняем необходимые действия.
Но мы можем сразу же сформировать ответ, где скажем MegaD-2561, какие выходы должен включить, выключить или переключить контроллер. Тогда скрипт приобретает такой вид.
<?php
if ( $_GET['pt'] == "6" )
{
echo "7:1";
}
?>
Если сработал порт 6, включаем нагрузку, подключенную к порту 7. Формат команды описан выше и соответствует формату поля Action.
Первая цифра - номер порта
Вторая цифра после двоеточия - действие (0 - выключить, 1 - включить, 2 - переключить, изменить состояние на противоположное).
Как и в случае с полем Action, есть возможность дать команды на управление сразу нескольким портам.
echo "7:1;8:0";
Команды разделяются точкой с запятой. Порт 7 - включить, Порт 8 - выключить.
Получение состояния портов
Получить состояние порта можно с помощью любого Web-клиента, в том числе с помощью функций PHP.
URL для получения текущего состояния порта:
http://192.168.0.14/sec/?pt=4&cmd=get
где параметр pt определяет номер порта.
Можно использовать любые удобные функции: file_get_contents(), curl() или socket'ы. Например:
<?php
$state = file_get_contents('http://192.168.0.14/sec/?pt=4&cmd=get');
?>
После выполнения данной команды в переменной $state у нас будет содержаться ON (если порт находит в активном состоянии), OFF или текущее значение, если порт настроен в режим PWM (ШИМ) или ADC (АЦП).
Контроллер также позволяет вывести состояние всех своих портов по команде cmd=all
http://192.168.0.14/sec/?cmd=all
Управление выходами
В предыдущих примерах сервер управлял выходами в ответ на сообщение контроллера, которое формируется в связи с каким-то событием (например, нажатие выключателя). Но сервер может управлять выходами контроллера, инициировав связь с устройством самостоятельно. Для этого программа на сервере вызывает URL вида:
http://192.168.0.14/sec/?cmd=10:1
Где формат команды (cmd) стандартный, который описан в разделе про Сценарии (Act).
Если выход настроен как PWM (ШИМ), то допускается указывать значения от 0 до 255
http://192.168.0.14/sec/?cmd=12:150
Пример управления группой (см. описании работы с группами)
http://192.168.0.14/sec/?cmd=g1:1
Re: Очень интересно, но ничего непонятно!
[Для информации: в Windows для того, чтобы сделать скриншот экрана на клавиатуре имеется специальная клавиша -- "prt scr". Чтобы сделать скриншот только текущего окна используется комбинация клавиш Alt + prt scr. Да и современные браузеры имеют функционал для того, чтобы сохранить в картинку любой фрагмент экрана.]
Теперь ясно. Обратной связи по поводу состояния выключателя не может быть по определению, т.к. у нас выключатель без фиксации.
Тогда о состоянии выключателя (и, соответственно, о необходимом цвете подсветки) мы должны узнать по состоянию выходов на портах MegaD-8I7O-R.
Другими словами, я правильно понимаю, что нам надо всего лишь в зависимости от состояния нагрузки (включено/выключено) на конкретном порту MegaD-8I7O-R подсвечивать красным (включено) или синим (выключено) определенный выключатель?
Если это так, то мне нужен конкретный пример. Т.е., допустим у нас включена лампочка на порту P15, какой командой (приведите код http://192.168.0.14/sec/......) вы включите красную подсветку? Какой командой при выключении порта P15 должна быть включена синяя подсветка?
Аналогичные команды напишите для порта P23.
Мне надо до конца понять ситуацию.
Re: Очень интересно, но ничего непонятно!
вкл свет на 1 канале (15) красный
http://192.168.0.14/sec/?pt=35&ws=00ff0 ... 00ff0000ff
выкл свет на 1 канале (15) синий
http://192.168.0.14/sec/?pt=35&ws=0000f ... 00ff0000ff
----
вкл свет на 1 канале (15) и на 14 канале (28) красный
http://192.168.0.14/sec/?pt=35&ws=00ff0 ... 00ff00ff00
выкл свет на 1 канале (15) и на 14 канале (28) синий
http://192.168.0.14/sec/?pt=35&ws=0000f ... 00ff0000ff
выкл свет на 1 канале (15) синий и остался включен на 14 канале (28) красный
http://192.168.0.14/sec/?pt=35&ws=0000f ... 00ff00ff00
http://192.168.0.14/sec/?pt=35&ws=00ff0 ... 00ff0000ff
выкл свет на 1 канале (15) синий
http://192.168.0.14/sec/?pt=35&ws=0000f ... 00ff0000ff
----
вкл свет на 1 канале (15) и на 14 канале (28) красный
http://192.168.0.14/sec/?pt=35&ws=00ff0 ... 00ff00ff00
выкл свет на 1 канале (15) и на 14 канале (28) синий
http://192.168.0.14/sec/?pt=35&ws=0000f ... 00ff0000ff
выкл свет на 1 канале (15) синий и остался включен на 14 канале (28) красный
http://192.168.0.14/sec/?pt=35&ws=0000f ... 00ff00ff00
Re: Очень интересно, но ничего непонятно!
у меня не MegaD-8I7O-R.
а
Megad-14 R
а
Megad-14 R
Re: Очень интересно, но ничего непонятно!
Хотел бы заострить внимание что в выключателе например 6 кнопок. Может быть включено 1, 2, 5 во общем любое количество. Хоть все. Управление идет одним проводом и соответственно при включении или выключении любой кнопки необходимо отправлять новую команду для всего выключателя.
Re: Очень интересно, но ничего непонятно!
Я, мягко говоря, не большой специалист в PHP, но если я правильно все понял, можно попробовать запускать такой скрипт.
Останется только дописать в метод switch (как минимум) строчку:
Еще надеюсь, что вы не пропустили ценную информацию про светодиодные ленты от ув.d.v.ermakov (https://ab-log.ru/forum/viewtopic.php?f ... 5&start=13).
Код: Выделить всё
$string = file_get_contents("http://192.168.0.14/sec/?cmd=all");
// Результат будет такой: OFF/0;OFF/0;OFF/0;OFF/0;OFF/0;OFF/0;OFF/0;OFF/0;OFF/5;OFF/0;OFF/0;OFF/0;OFF/0;OFF/0;ON/14;ON;OFF;OFF;OFF;OFF;OFF;OFF;OFF;ON;OFF;OFF;OFF;OFF;ON;ON;ON;ON;ON;ON;ON;ON;ON;ON
//Берем все значения портов с 15-го по 28-й
$v = explode(";",$string);
$s = $v[15].$v[16].$v[17].$v[18].$v[19].$v[20].$v[21].$v[22].$v[23].$v[24].$v[25].$v[26].$v[27].$v[28];
// Результат будет такой: ONOFFOFFOFFOFFOFFOFFOFFONOFFOFFOFFOFFON
//Заменяем все ON на 00ff00 и все OFF на 0000ff
$command = strtr($s, ['ON'=>'00ff00', 'OFF'=>'0000ff']);
// Результат будет такой: 00ff000000ff0000ff0000ff0000ff0000ff0000ff0000ff00ff000000ff0000ff0000ff0000ff00ff00
//Посылаем команду порту P35
file_get_contents("http://192.168.0.14/sec/?pt=35&ws=".$command);
Код: Выделить всё
runScript("Имя_вашего_скрипта");
Re: Очень интересно, но ничего непонятно!
Ruslan спасибо огромное . Но проверить уже не могу. Делаю только по выходным на даче(. Все тестовое оборудование там. Как доберусь все сразу попробую. Как все допилим можно будет описать если получится)
Про светодиодные ленты читал. Но немного не понял как что то повлияет на подсветки выключателей.
Про светодиодные ленты читал. Но немного не понял как что то повлияет на подсветки выключателей.
Re: Очень интересно, но ничего непонятно!
На подсветку выключателей никак не повлияет. Для меня "открытием" было, что ленту крепят на серьезную алюминиевую ленту для теплоотвода, чтобы деградация светодиодов происходила не так быстро.
Re: Очень интересно, но ничего непонятно!
Я об этом знал. Но все компании типа которые ремонт делают у нас вгороде даже sumrakoff ничего не заморачиваются.... Потолки натяжные с лентой тоже(.
На самом деле у меня тестово 2 дня включенные лежат чуть теплые. Может конечно потому что 5 вольт.
А еще я запланировал , когда никого дома (может и в определенной комнате по датчикам) вообще тушить подсветки в кнопках. Чтоб меньше включены были.
Еще думал дежурный режим светло светло зеленый, пока не включена любая кнопка из выключателя.
На самом деле у меня тестово 2 дня включенные лежат чуть теплые. Может конечно потому что 5 вольт.
А еще я запланировал , когда никого дома (может и в определенной комнате по датчикам) вообще тушить подсветки в кнопках. Чтоб меньше включены были.
Еще думал дежурный режим светло светло зеленый, пока не включена любая кнопка из выключателя.
Re: Очень интересно, но ничего непонятно!
Вопрос начинающего.
ПУ термостат(Thermostat01) имеет связанные устройства ПУ(Relay10).
При положении "Обычный" -Термостат запускает "Relay10" (конечно с условием температуры выставленной на термостате),
но если есть необходимость просто выключить термостат и нажать на "выкл" он отключается сам , но "Relay10" остается в положении off.
Помогите ,какой самый простой метод и куда вписать что бы при положении термостата "выкл" , он выполнял действие отключить "Relay10"?
ПУ термостат(Thermostat01) имеет связанные устройства ПУ(Relay10).
При положении "Обычный" -Термостат запускает "Relay10" (конечно с условием температуры выставленной на термостате),
но если есть необходимость просто выключить термостат и нажать на "выкл" он отключается сам , но "Relay10" остается в положении off.
Помогите ,какой самый простой метод и куда вписать что бы при положении термостата "выкл" , он выполнял действие отключить "Relay10"?
Re: Очень интересно, но ничего непонятно!
Это вопрос чисто по Мажордомо. Подозреваю, что у вас задействованы Простые устройства (Simple Devices). Если это так, по подсказать не могу, поскольку их не использую,
А не пользуюсь я Простыми устройствами исключительно потому, что не понимаю как они работают. Для меня там слишком все непрозрачно. А когда я сам создаю классы, объекты, методы, свойства, то точно понимаю, что, когда, почему и в какой момент происходит. А прозрачность и понятный механизм функционирования, на мой взгляд, важнее, чем удобство добавления новых сущностей в систему.
А не пользуюсь я Простыми устройствами исключительно потому, что не понимаю как они работают. Для меня там слишком все непрозрачно. А когда я сам создаю классы, объекты, методы, свойства, то точно понимаю, что, когда, почему и в какой момент происходит. А прозрачность и понятный механизм функционирования, на мой взгляд, важнее, чем удобство добавления новых сущностей в систему.
Re: Очень интересно, но ничего непонятно!
Последний раз редактировалось Коля 22 мар 2019, 18:54, всего редактировалось 2 раза.
Re: Очень интересно, но ничего непонятно!
Ruslan. можно еще попросить в код дописать чтоб если ничего не включено горело зеленым цветом, а когда хоть один включен то уже синие и красные светодиоды
Re: Очень интересно, но ничего непонятно!
Я правильно понял, что если все выходы выключены, то абсолютно все выключатели должны светится зеленым, а когда хотя бы один выход включен, то абсолютно все выключатели должны светится синим и красным?
Ну и конечно, желательно описать сразу всю логику подсветки выключателей. Т.е. "хочу, чтобы было так..........."
Чтобы понимать конечный замысел.
Re: Очень интересно, но ничего непонятно!
Я правильно понял, что если все выходы выключены, то абсолютно все выключатели должны светится зеленым, а когда хотя бы один выход включен, то абсолютно все выключатели должны светится синим и красным?
*****
Верно)
Если все 14 выходов выключены, то горит зеленый свет
Если включить любой или любые несколько выходов , то те которые выходы включены подсвечивать светодиод красным, а те выходы которые выключены подсвечивать синим.
Если все выходы выключены - подсвечиваем зеленым.
Re: Очень интересно, но ничего непонятно!
Надо попробовать так:Коля писал(а): ↑23 мар 2019, 06:50...
Если все 14 выходов выключены, то горит зеленый свет
Если включить любой или любые несколько выходов , то те которые выходы включены подсвечивать светодиод красным, а те выходы которые выключены подсвечивать синим.
Если все выходы выключены - подсвечиваем зеленым.
Код: Выделить всё
$string = file_get_contents("http://192.168.0.14/sec/?cmd=all");
//Берем все значения портов с 15-го по 28-й
$v = explode(";",$string);
$s = $v[15].$v[16].$v[17].$v[18].$v[19].$v[20].$v[21].$v[22].$v[23].$v[24].$v[25].$v[26].$v[27].$v[28];
//Если в переменной $s содержится "ON", подсвечиваем включенные красным и выключенные синим, а если всё выключено, подсвечиваем все зеленым
if (strpos($s, "ON") !== false) {
$command = strtr($s, ['ON'=>'00ff00', 'OFF'=>'0000ff']);
} else {
$command = strtr($s, ['OFF'=>'ff0000']);
}
//Посылаем команду порту P35
file_get_contents("http://192.168.0.14/sec/?pt=35&ws=".$command);
Re: Очень интересно, но ничего непонятно!
Просто супер) Вы молодец))спасибо огромное. Мне реально так нужно было!!! Все получилось и работает. Я столько в квартире до этого лишних проводов уже проложил.....
Андрею тоже огромное спасибо что он сделал возможность использования led лент с чипами
Андрею тоже огромное спасибо что он сделал возможность использования led лент с чипами
Re: Очень интересно, но ничего непонятно!
Рад, что все получилось.
А "лишних" проводов, как правило, не бывает. Спустя некоторое время обычно появляются новые "хотелки", а проводов под них оказывается не предусмотрено...
Вы бы потом (когда закончите с подсвеченными выключателями) хотя бы 1 фотографию выложили, чтобы народу иметь представление о внешнем виде того, как все это хозяйство выглядит.
А "лишних" проводов, как правило, не бывает. Спустя некоторое время обычно появляются новые "хотелки", а проводов под них оказывается не предусмотрено...
Вы бы потом (когда закончите с подсвеченными выключателями) хотя бы 1 фотографию выложили, чтобы народу иметь представление о внешнем виде того, как все это хозяйство выглядит.
Re: Очень интересно, но ничего непонятно!
К мажордом прицепил
- Вложения
-
- IMG_20190323_134450~01.jpg (145.28 КБ) 1970 просмотров
-
- IMG_20190323_134455~01.jpg (41.81 КБ) 1970 просмотров
Re: Очень интересно, но ничего непонятно!
Еще
- Вложения
-
- IMG_20190323_134439~01.jpg (47.24 КБ) 1969 просмотров
-
- IMG_20190323_134412~01.jpg (143.83 КБ) 1969 просмотров