ФОРУМ КУПИТЬ

Последние статьи

ВСЕ СТАТЬИ

MegaD-Panel - простой Web-интерфейс для управления MegaD-328

20/02/2014 17:08:59

Ни для кого не секрет, что в любой сложной системе наличие оборудования (или как мы часто говорим "железа") - только половина дела. Даже самое распрекрасное устройство без соответствующего программного обеспечения - просто кусок текстолита и пластика. В этом смысле большое преимущество контроллера MegaD-328 заключается в том, что часть программных функций оно может взять на себя. Встроенный Web-интерфейс, сценарии по умолчанию, автоматический опрос датчиков - все это уже делает устройство вполне боеспособным в области домашней автоматизации. Но все-таки идеология и философия проекта MegaD-328 предполагает наличие в системе главного управляющего элемента - центрального компьютера. Даже в таких сложных системах как автомобиль, пассажирский лайнер или даже космический корабль, всегда есть центральный блок управления. Ведь без такого элемента практически невозможно обеспечить абсолютную гибкость и функциональность системы.

И вот тут мы понимаем, что на сервере должно быть установлено некое программное обеспечение, которое бы выступало посредником между пользователем и контроллером, между высокоуровневыми алгоритмами и контроллером. Ведь встроенный Web-интерфейс устройства MegaD-328 не предназначен для управления конечными пользователями (детьми, женами и прочими родственниками). В силу ограничений микроконтроллера невозможно реализовать в нем что-то по-настоящему красивое. Нужна своеобразная прослойка, посредник, который со стороны пользователя отобразит функциональность системы в более-менее презентабельном виде, а уже с устройством будет говорить на его машинном языке.

Можно было бы сказать: "Господа, это же устройство для гиков, для энтузиастов! Вот вам железка, делайте с ней все что душе угодно...", но это было бы неправильно. Ведь далеко не каждый человек способен быстро разобраться во всех нюансах Web-технологий и сделать такую программную прослойку самостоятельно. Нужно с чего-то начать, понять как это все устроено, получить пример. В этом плане представленный на сайте ранее Демо-интерфейс Умного Дома, который использует MySQL и CMS, слишком сложное и громоздкое решение. Нужно было что-то попроще, поэтому я решил предложить начинающим пользователям MegaD-Panel.

MegaD-Panel - это очень простой Web-интефейс для управления доступными в сети устройствами MegaD-328. Для его работы не нужна СУБД, а значит и не нужно загружать никакие дампы. Все, что необходимо - это установленный PHP и Web-сервер (Apache).

В Linux делается это буквально одной командой

apt-get install apache2 php5

В Windows чуть сложнее, но не на много. Воспользуйтесь поиском в Яндекс или Google "Установка Apache и PHP в Windows" - найдете пару десятков внятных инструкций. Можно также воспользоваться готовыми сборками, такими как Denwer (Денвер), куда уже входит все необходимое.

После установки Apache и PHP5 вам остается только скачать и распаковать в домашнюю папку Web-сервера MegaD-Panel
http://ab-log.ru/files/File/megad-panel/megad-panel-12.zip

Теперь, если все настроено правильно, нужно лишь запустить браузер и задать URL

http://[имя или IP-адрес]/panel
или
http://[имя или IP-адрес]/panel/index.php

Хочу только отметить, что MegaD-Panel - это не какое-то многофункциональное решение. Задача этого простого Web-интерфейса скорее образовательная, демонстрационная. Поскольку скрипты не кодированы и очень просты, вы можете самостоятельно вносить в них любые изменения, понять принцип работы с устройствами MegaD-328, использовать этот код в качестве примера, отправной точки для вашего дальнейшего творчества.

Слева в меню расположен список доступных устройств MegaD-328 Kit (названия которым вы можете определить самостоятельно), а также кнопка "Добавить", позволяющая добавить в систему новое устройство.

Выбрав в меню конкретное устройство, вы увидите на экране текущее состояние всех 14 портов устройства. Отмечу, что каждые 3 секунды состояние портов обновляется. Портами типа OUT (выход) можно управлять. Также можно включить или выключить все "выходы". Внизу страницы вы можете видеть кнопку "Настроить". Нажмем на нее.

Здесь вы можете указать отображаемое имя устройства, его IP-адрес, пароль, а также человеческие наименования портов устройства. Все настройки сохраняются в файле dev_conf.json (в формате JSON), который вы можете также отредактировать в любом текстовом редакторе.

Глобальные настройки этого простого Web-интерфейса хранятся в файле config.php
Важная настройка - периодичность обновления данных в режиме отображения портов устройства.
var $update_time = 3; // Значение по умолчанию - 3 секунды.

Осталось только сказать еще об одном интересном нюансе данного интерфейса. Он адаптирован под работу в том числе на мобильных устройствах - смартфонах. Интерфейс автоматически подстраивается под разрешение экрана и если оно ниже определенного порога, скрывает меню вот так...

Я думаю, это простая разработка поможет начинающим пользователям в освоении Web-технологий и интеграции готового устройства MegaD-328 в систему автоматизации дома.
 

Автор: Andrey_B
Любое использование материалов сайта возможно только с разрешения автора и с обязательным указанием источника.



Добавить комментарий:

(необязательно, не отображается на сайте)


Сортировка комментариев: Последние сверху | Первые сверху

2018-02-14 20:00:33 | Andrey_B
Евгений, здесь много раз писалось, с чем это связано. Ваш веб-сервер вместо выполнения PHP-кода выводит его на экран.
Причины: а) не установлен или не работает PHP б) не включена опция short_open_tags в php.ini


2018-02-14 16:24:59 | Евгений
Ошибка! Не удалось установить соединение с устройством по адресу: ".$megad->conf[$device_list[$j]]['ip']."
Кому нибудь удалось решить проблему ?


2017-11-19 12:23:46 | Andrey_B
Юрий, обновление устройства происходит в режиме CLI (command line interface), а не из под Apache. Скрипту megad-cfg(-256).php не требуется настройка short_open_tag. Поэтому не факт.
Напишите простейший скрипт: и обратитесь к нему из браузера (не из командной строки).
Если увидите надпись: test, значит PHP работает. Потом замените


2017-11-19 11:12:49 | Юрий
..я имею ввиду, что так как мне удалось обновить девайсы, наверно, с php у меня всё в порядке)))
Или не факт, что это так?


2017-11-19 10:37:56 | Юрий
Php у меня работает, так как я перепрошил девайсы.


2017-11-19 10:36:04 | Юрий
Андрей, изменения внесены в php.ini для Апаче и операционная система была перезапущена.


2017-11-19 10:35:27 | Andrey_B
Юрий, я не тестировал MegaD-Panel с контроллером MegaD-2561, так как не уверен, что кто-то вообще ею пользуется. Но чисто теоретически Panel должна работать и с MegaD-2561. Только порты доступны будут не все.


2017-11-19 10:34:08 | Юрий
Андрей, я внёс изменения в php.ini для Апаче и перезагрузил систему.


2017-11-19 10:32:52 | Andrey_B
Юрий, судя по тому, что вы написали, PHP у вас не работает.
В системе часто присутствует несколько php.ini. Отдельно для CLI, отдельно для Apache. Убедитесь, что вы включили short_open_tag в нужном файле и перезапустили Apache.


2017-11-19 09:10:43 | Юрий
Андрей, а что нужно сделать, что бы панель заработала с мегад-2561?


2017-11-19 08:57:29 | Юрий
Здравствуйте, Андрей!
Моя проблематика следующая:
Панель установлена в корневой папке сайта /var/www/html/panel
В браузере открывается по адресу 192.168.0.10/panel
Адрес мегад-328 с мегад-14-in 192.168.0.14/sec
Открываю 192.168.0.10/panel/control.php?id=1
Но браузер выдаёт: «Ошибка! Не удалось установить соединение с устройством по адресу: ".$megad->conf[$device_list[$j]]['ip']."»
Прочитал все комменты.
Вариант с short_open_tag = On не помогает.

У меня Дебиан 9.
Апаче 2
Php7


2017-09-20 19:47:56 | Andrey_B
Сергей, вы пробовали запускать простейший скрипт, код которого я приводил?


2017-09-19 23:36:06 | Сергей
Ощущение что код под кнопкой не работает, то есть кнопка состояние меняет, а действия на которое она заряжена не происходит


2017-09-19 23:29:15 | Сергей
Андрей, пакеты мне кажется не отправляются. Меняю состояние порта во встроенном интерфейсе, в мега-панели всё равно всё сбрасывается off после F5. Единственное что указывает на то что панель видит устройства это меняющиеся цифры в окошках ADC1, ADC2 и то что интерфейс не выдаёт ошибки что мол не найдено. Может быть надо выставить скриптам какие-то особые права ?


2017-09-16 12:06:19 | Andrey_B
Сергей, а если изменить состояние выхода во встроенном Web-интерфейсе устройства, в панели оно изменится после перезагрузки страницы?
Готового сценария действий подсказать не могу. Ошибки могут и не выводиться, если они отключены в настройках PHP. Нужно, прежде всего понять, отправляются ли пакеты в сторону устройства и если нет, то что этому препятствует.
Можно просто выполнить простейший скрипт вида

и посмотреть, выполнится ли команда или нет.


2017-09-15 11:37:22 | Сергей
Андрей.
1. Mega-328
2. Да меняю состояние выходов. Которые OUT начиная с P7


2017-09-15 11:16:43 | Andrey_B
Сергей, давайте уточним.
1. Вы подключаете MegaD-328 или MegaD-2561?
2. Вы меняете в MegaD-Panel состояние портов, настроенных в устройстве как выходы? Так нужно понимать фразу "меняю состояние выключателей".


2017-09-14 22:24:43 | Сергей
Панель установил, загружается нормально. Добавляю устройства. ошибок что не найдено не выдает. Поменял в config.php demo на false. Меняю состояние выключателей - в панели меняется а на устройствах нет. (напрямую через интерфейс устройства работают) - при перезагрузке страницы опять всё в off. На Web сервере в логах ошибки нету. Куда смотреть ?


2017-06-16 15:13:20 | alex
здравствуйте, у меня такой вопрос
мега д 328 вер .5.2 прошивка 3.52
при настройке выходов на контроллере (например 13) есть параметр mode который определяет как собственно и будет работать выход....
если посмотреть на код web интерфейса в инструментах разработчика-- то можно увидеть форму в которой есть селект с выбором sw или pwm....
хотелось бы как нибудь в MegaD-Panel прикрутить возможность выбирать тип выхода ...
если sw то оставить как есть на данный момент, а если pwm то соответственно по другому


2017-04-06 17:49:37 | Andrey_B
alex, в MegaD-328 команда "~" в сценариях работает при условии.
1. Сервер не прописан (автономная работа устройства)
2. Режим работы входа: P&R


2017-04-06 15:12:08 | alex
подскажите почему не отрабатывает полностью команда 13:~
при зажимании кнопки яркость возрастает и все....обратно не уменьшается ...на однократные нажатия не реагирует....
у меня мега д 328 вер .5.2 прошивка 3.52


2017-04-06 09:45:38 | alex
....в php.ini открыл error_reporting(0)... все заработало....
но это не правильно....


2017-04-06 08:38:04 | alex
Andrey_B
я скачал пакет xampp .....соответственно тут все собрано и php.ini вижу только в одном месте...
в папке xammp/php....


2017-04-05 19:04:29 | Andrey_B
alex, в системе может быть несколько конфигурационных файлов php.ini
Нужно редактировать тот, что относится к Web-серверу (Apache2).
После редактирования php.ini необходимо перезапустить Web-сервер.


2017-04-05 15:08:13 | alex
Ошибка! Не удалось установить соединение с устройством по адресу: ".$megad->conf[$device_list[$j]]['ip']."
"; if ( $megad->demo == "true" ) echo '

аналогичная история но short_open_tag не помогает
что может быть


2017-01-12 20:11:23 | Андрей
Андрей, спасибо, все получилось


2017-01-12 18:21:24 | Andrey_B
Андрей, если при выводе виден PHP-код, то, возможно, следует включить
short_open_tag = On
в настройках PHP (php.ini)


2017-01-11 23:22:55 | Андрей
Здравствуйте, Андрей. Все установилось нормально , но не видит в сети megaD- выскакивает : Ошибка! Не удалось установить соединение с устройством по адресу: ".$megad->conf[$device_list[$j]]['ip']."
"; if ( $megad->demo == "true" ) echo '
Включен демо-режим , хотя устройство в сети есть -работает нормально , IP прописан, что может быть?


2016-02-24 19:07:52 | Andrey_B
Андрей, нужно разбираться на месте. Это не специфическая ошибка. Исходя из доступной информации нельзя сделать никакого предположения.


2016-02-24 12:46:37 | Андрей
Добрый день. При попытке создать свою панель и сохранить выскакивает Warning: Invalid argument supplied for foreach() in paneledit.php on line 22


2016-01-25 17:27:28 | Andrey_B
Алексей, я понял о чем идет речь. Не помню откуда она и зачем. Думаю, можно ее удалить.


2016-01-25 16:23:42 | Алексей
Ссылка на файл написана в начале файла header.php


2016-01-24 17:03:31 | Andrey_B
Алексей, если работает без этого файла, значит он лишний. Я серьезно.
Не помню откуда взялась эта ссылка. Надо удалить.


2016-01-23 18:11:32 | Алексей
Добрый день. Запустил панель на mikrotik crs125-24g-1s-2hnd-in(позже можно будет статью написать), все замечательно работает, кроме одного: не хватает файла f/engage.itoggle.css, где его можно скачать?

2016/01/23 14:43:40 [error] 15050: 69 open() "/www/f/engage.itoggle.css" failed (2: No such file or directory), client: 192.168.88.253, server: 192.168.88.5, request: "GET /f/engage.itoggle.css HTTP/1.1", host: "192.168.88.5", referrer: "/192.168.88.5/control.php?id=1"


2016-01-21 22:54:36 | Алексей
Спасибо


2016-01-21 11:40:33 | Andrey_B
Алексей, в настройках php.ini нужно включить опцию short_open_tag.


2016-01-19 23:00:25 | Алексей
При запуске появляется ошибка "Fatal error: Class 'conf' not found in /usr/share/htdocs/megad_class.php on line 6"
Может не хватает какого то модуля в PHP?


2015-10-19 10:30:22 | Alex
Спасибо , за ответ , опыта пока не хватает. Но все запускается под Winдой( Опен сервер), а в Debian не хочет , любые другие сайты , включая и пример Вашего "Демо интерфейса" работают.


2015-10-19 10:30:13 | Andrey_B
Alex, вам нужно включить в php отображение ошибок "display_errors" и посмотреть что в действительности происходит.
HTTP 500 Internal Server Error - вообще говорит о неправильной настройке Web-сервера и к скриптам отношения обычно не имеет.


2015-10-19 00:28:34 | Alex
Простите , но не работает, просто белый экран в Хроме , а эксплойрер пишет ошибка HTTP 500


2015-09-26 09:01:35 | Роман
Андрей,здравствуйте!Когда планируете "подредактировать" panel,чтобы была поддержка контроллера MegaD-14-IN?


2015-09-05 12:18:20 | Andrey_B
Andre, простите, конечно, но если у вас не работает какая-то вещь, это вовсе не означает, что эта вещь неисправна.
Никаких html файлов в архиве (который, к слову, zip, а не rar) быть не должно.


2015-09-05 09:47:29 | Andre
Панель не работает -- HTTP 500. ps В архиве megad-panel.rar должны присутствовать файлы типа .html