Плагин MegaD
-
@Alex_Jet Да, проблема есть Сегодня выпустим обновление
-
Опубликована версия v1.1.16
https://github.com/intrahouseio/intraHouse.plugin-MegaD/releases/tag/v1.1.16
-
Коллеги, а все же что сделал Андрей в последней прошивке?
-
@Alex_Jet
Вероятно, ошибка распределения памяти, какое-то наложение данных, зависящее от длины буфера.
Всех с наступившим Новым годом! Удачи в Новом году
-
-
На github выложена новая версия плагина v1.1.15:
https://github.com/intrahouseio/intraHouse.plugin-
Просьба счастливых обладателей расширенных портов протестировать функционалПротестировал с MegaD-16I-XT - все работает как надо. Спасибо большое за доработку плагина!
-
К MegaD можно подключить считыватели ключей TouchMemory и Wiegand-26. Подскажите, пожалуйста, как настроить плагин MegaD для получения информации с этих устройств. Как вообще организовать работу в Intrahouse с ключами и метками чтобы, например, использовать их для управления режимом охраны или включения/выключения других устройств. Если у кого есть подобный опыт, просьба поделиться.
-
@gis я планирую делать, жду когда придут nfc-считыватели. очевидно, в плагине нужно обрабатывать php-запрос в котором приходит uid ключа. Далее я вижу два пути:
- Аналоговый датчик с текстом (в значении uid ключа). Значения сенсора обрабатываются по аналогии с плагином telegramm в скрипте. Как uid передать в датчик пока не думал. Таким образом каждый uid обрабатывается персонально
- Для каждого ключа делаем расширение в плагине megad, каждое расширение привязываем к бинарному датчику, к одному датчику можно привязать несколько ключей (датчик имитирует сущность пользователя). Обрабатываем в скриптах включение датчика, по окончанию сценария меняем состояние датчика на "выключено", таким образом каждый пользователь может иметь несколько ключей, привязанных к одному датчику. Для каждого пользователя могут исполняться разные сценарии.
Очевиднее и проще второй вариант, но первый мне нравится отсутствием большого количества виртуальных устройств. Группировать можно в сценарии через "или".
-
@homa спасибо за ответ! Если хотите поэкспериментировать, то можно использовать любой домофонный ключ TouchMemory (таблетку) - для него не нужен специальный считыватель и логика работы с ним будет та же. Проблема как настроить канал и расширения в плагине, чтобы присваивался идентификатор ключа устройству.
-
@gis Считывателей и ключей вагон) но без нфс не хочу запускать. Второй вариант точно взлетит, необходимые эксперименты я провел. Настройка канала и расширения прям по инструкции от плагина. У меня стенд на работе, поэтому только в понедельник могу показать конфиг
-
@homa если не затруднит, пожалуйста, опубликуйте здесь конфиг как будет такая возможность.
-
@gis, написал тут. Коллеги, можно вас поправлю - от контроллера приходит GET-запрос (часть HTTP-протокола) с UID ключа, а не php (это такой язык программирования)... в частности у меня приходит вот такой запрос:
/mod_megad.php?pt=35&ib=123456789ABC
Здесь mod_megad.php - это часть url, который прописан в контроллере (ссылка Config, поле Script). У меня так сложилось исторически, поскольку раньше все контроллеры взаимодействовали с самописной системой управления на основе php/js.
-
Участник @Alex_Jet написал в Плагин MegaD:
@Alex_Jet - спасибо огромное, всегда очень помогают ваши сообщения!
Хорошо было бы, если бы разработчики добавили обработку GET-запросов от ключей и меток в самом плагине, чтобы присваивался идентификатор ключа/метки аналоговому датчику (устройству). Тогда их просто можно будет использовать в диаграммах сценариев, не изучая для этого js и создавая сценарии с использованием этого языка.
-
@gis, я обсуждал это вместе с разработчиками, но пришли к выводу что сценарии - это очень гибко! А так, тоже хотел чтобы ID ключа передавался, например, аналоговому датчику. Но опять же - где хранить ID ключей и как их сравнивать с нужными? - только в сценарии.
Ну и хочу добавить, что если вы не знаете Pascal/C/PHP и подобные языки, то JS довольно легко освоить. Ну а с системой, написанной на основе фреймворка Node.js, грех это не сделать, особенно если вы не просто пользователь системы, а ее администратор:)
-
Добрый день!
Нужно проверить, но присвоить id ключа аналоговому датчику, полагаю, получится:- Создать канал с id='IB1' (любой строковый id) типа AI, привязать к нему датчик
- В расширениях прописать:
Входящее: pt=35&ib=*
Установить состояние каналов: IB1=%ib%
В сценарии нужно сравнивать с разрешенными ключами + сбрасывать значение после обработки.
Решение,которое предлагает @Alex_Jet с вызовом сценария при поступлении сообщения от контроллера, лично мне нравится больше по нескольким причинам:
- Запуск сценария жестко связан с получением сообщения от контроллера (то есть с моментом прикладывания ключа).
- Список допустимых ключей в одном месте
- Нет лишних устройств
-
Уважаемые разработчики. В своем проекте использую несколько контроллеров MegaD-2561. Использую несколько датчиков с i2c интерфейсов. Все работает прекрасно. Задумал подключить к контроллеру Ардуину и управлять ею через i2c API. Однако Andrey_B предлагает для этого библиотеку на РНР. Собственно вопрос. Можно ли как-то послать байт через контроллер на устройство с определенным адресом по протоколу i2c.
-
@int144, так у контроллера есть API для I2C! Собственно от него отталкиваетесь, а на контроллер из iH можно послать что угодно! Например, функция для отправки команд на ленту WS:
//Функция формирования данных для ленты WS2818 SendDataToWS2818(plugin, channel, cmd, chip) { this.pluginCommand({unit: plugin, command: '/sec/?pt=' +channel+ '&ws=' +cmd+ '&chip=' +chip}); }
В случае с I2C можно сделать такую функцию:
SendDataToMegaD(plugin, cmd, data) { this.pluginCommand({unit: plugin, command: '/sec/?pt=35&scl=34&i2c_' +cmd+ '=' +data}); }
Таким образом, чтобы дать команду на отправку данных нужно в скрипте указать:
script({ plugin: 'megad1', cmd: '', data: '', start() { //Инициализация this.cmd = 'cmd'; this.data = 1; SendDataToMegaD(this.plugin, this.cmd, this.data); //Старт this.cmd = 'cmd'; this.data = 2; SendDataToMegaD(this.plugin, this.cmd, this.data); //Отправка данных в hex-виде this.cmd = 'send'; this.data = 80; SendDataToMegaD(this.plugin, this.cmd, this.data); //и т.д. } });
-
@Alex_Jet , спасибо за быстрый и развернутый ответ. Но у меня есть некотрые сомнения. Вашу функцию управления лентой я видел. Но ее управление поддерживается прошивкой контроллера. Достаточно в http запросе присвоить правильное значение и лента работает. При использовании i2c API в запросе фигурирует "i2c_send=". Эта функция есть в библиотке Andrey_B. Она распределяет данные на адрес и направление передачи, кажется. Поэтому я и засомневался. А Вы не пробовали таким образом передавать данные i2c устройствам, не поддерживаемым прошивкой?
-
@int144, нет, у меня особенных I2C девайсов нет, которые не поддерживаются прошивкой.
Я же вам привел как минимум половину цикла работы с шиной - инициализация, старт, передача данных! Вы обратите внимание на входные аргументы. Все это можно переписать/объединить в одну большую функцию отправки-приема данных. Думаю, вы это сами сможете сделать, поскольку у меня нет времени на эти эксперименты и эксперименты ни к чему.
-
@Alex_Jet , прошу прощения, что туплю, буду пробовать. Еще раз большое спасибо