[Модуль] MegaD (megad)

Разработка дополнительных модулей, подключение различных приложений.

Модератор: immortal

ferenir
Сообщения: 18
Зарегистрирован: Сб июн 03, 2017 4:57 am
Откуда: Красноярск
Благодарил (а): 9 раз
Поблагодарили: 1 раз

Re: Модуль "MegaD"

Сообщение ferenir » Вт июн 27, 2017 4:28 pm

Может роутер или файрвол блокируют трафик...
Бинго! %) Как сам не додумался, ведь видел же в логах фразы про аваст... %)
In vino veritas...
_________________
http://connect.smartliving.ru/profile/1533
ferenir
Сообщения: 18
Зарегистрирован: Сб июн 03, 2017 4:57 am
Откуда: Красноярск
Благодарил (а): 9 раз
Поблагодарили: 1 раз

Re: Модуль "MegaD"

Сообщение ferenir » Ср июн 28, 2017 8:32 am

Работает только при полностью отключенном авасте (интернет секьюрити у меня), пробовал отдельно веб-экран отключать, играть с настройками файрволла - бесполезно. Какая такая деятельность происходит между мегой и мажором, что аваст ее блокирует? Вроде 80 порт в одной подсети...
In vino veritas...
_________________
http://connect.smartliving.ru/profile/1533
skysilver
Сообщения: 3006
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 400 раз
Поблагодарили: 1754 раза
Контактная информация:

Re: Модуль "MegaD"

Сообщение skysilver » Ср июн 28, 2017 1:07 pm

ferenir писал(а):Работает только при полностью отключенном авасте (интернет секьюрити у меня), пробовал отдельно веб-экран отключать, играть с настройками файрволла - бесполезно. Какая такая деятельность происходит между мегой и мажором, что аваст ее блокирует? Вроде 80 порт в одной подсети...
Помнится, что-то там по броадкасту еще отправляется/принимается. Может аваст широковещательные пакеты рубит?
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
koshnv
Сообщения: 18
Зарегистрирован: Пт июн 30, 2017 9:43 pm
Откуда: Златоуст
Благодарил (а): 4 раза
Поблагодарили: 0

Re: Модуль "MegaD"

Сообщение koshnv » Вс июл 02, 2017 11:42 am

Всем добра!
Буду рад помощи или совету где покататься с кодом, с налета не разобрался где раскладываются запросы с меги.
Требуется подключить в систему датчики DS18B20, сидящие на шине 1-wire, которая подключена к контролеру MegaD-2561-RTC.
В данном контроллере реализована возможность подключения на один порт нескольких датчиков с выбором режима 1WBUS.
С сайта ab-log.ru:
При нажатии на ссылку Device List или через запрос вида
http://192.168.0.14/sec/?pt=32&cmd=list
Можно получить в ответ примерно следующий результат: 8aad6a070000:32.43;85a56a070000:32.43;
Результат отображается по следующему принципу: [адрес датчика]:[температура];[адрес датчика]:[температура];


В данное время датчики на самом контролере отображаются корректно, но системе MajorDoMo порт отображается «31 DSen» c абстрактным значением температуры:
1wbus.jpg
1wbus.jpg (48.5 КБ) 9278 просмотров
ferenir
Сообщения: 18
Зарегистрирован: Сб июн 03, 2017 4:57 am
Откуда: Красноярск
Благодарил (а): 9 раз
Поблагодарили: 1 раз

Re: Модуль "MegaD"

Сообщение ferenir » Пн июл 03, 2017 12:53 pm

skysilver писал(а):
ferenir писал(а):Работает только при полностью отключенном авасте (интернет секьюрити у меня), пробовал отдельно веб-экран отключать, играть с настройками файрволла - бесполезно. Какая такая деятельность происходит между мегой и мажором, что аваст ее блокирует? Вроде 80 порт в одной подсети...
Помнится, что-то там по броадкасту еще отправляется/принимается. Может аваст широковещательные пакеты рубит?
В общем веб-экран и модуль оценки сайтов аваста блокируют общение меги и мажора, настроек в них нет, не помогает даже внесение в список исключений. Техподдержка аваста молчит.
In vino veritas...
_________________
http://connect.smartliving.ru/profile/1533
ferenir
Сообщения: 18
Зарегистрирован: Сб июн 03, 2017 4:57 am
Откуда: Красноярск
Благодарил (а): 9 раз
Поблагодарили: 1 раз

Re: Модуль "MegaD"

Сообщение ferenir » Пн июл 03, 2017 1:14 pm

koshnv писал(а):Всем добра!
Буду рад помощи или совету где покататься с кодом, с налета не разобрался где раскладываются запросы с меги.
viewtopic.php?f=5&t=2263&start=670#p54342
In vino veritas...
_________________
http://connect.smartliving.ru/profile/1533
koshnv
Сообщения: 18
Зарегистрирован: Пт июн 30, 2017 9:43 pm
Откуда: Златоуст
Благодарил (а): 4 раза
Поблагодарили: 0

Re: Модуль "MegaD"

Сообщение koshnv » Пн июл 03, 2017 10:44 pm

Код обновления показания датчиков я написал, буду рад если поправите.
Теперь задача:
1) Отслеживать изменения по конкретному датчику с построением временной диаграммы.
2) Реагировать на определенные пороги показаний.

2-е как я понял решается через сценарии, а вот график у меня рисуется один, через свойство родительского объекта "temp".
Я зря создал датчики в самом объекте, надо было их создать в свойствах родительского класса и обновлять показания и реакцию настраивать через скрипт в них?

Код: Выделить всё

//Задаем массив датчиков: [матка => [номер свойства, доступность, показание]]
    $tempSensors = [
        "fff7b0b31603" => [1, false, -1],
        "ff2790c11604" => [2, false, -1],
        "ff2790c00000" => [3, false, -1],
    ];
//не зарегистрированный датчики на шине
    $notRegSensors = "";
//Получаем строку с меги и делим ее по датчикам в массив
    //$listTemps = "ff2790c11604:24.18;fff7b0b31603:23.81";
    $listTemps = file_get_contents("http://192.168.1.10/sec/?pt=31&cmd=list");
    $temps = explode( ';', $listTemps);
    //print_r ($temps);
//Сравнивая метки пишем показания, меняя доступность
    foreach($temps as $temp){
        $temp = explode( ':', $temp);
        if(array_key_exists($temp[0], $tempSensors)){
            $tempSensors[$temp[0]][1] = true;
             $tempSensors[$temp[0]][2] = $temp[1];
        }else{//пишем не найденные датчики в свойство
            $notRegSensors = $notRegSensors."$temp[0]; ";
        }
    }
//обновляем свойства
    foreach($tempSensors as $key => $sensor){
     $this->setProperty($sensor[0], $sensor[2]);
    }
    $this->setProperty("notRegSensors", $notRegSensors);
 
ferenir
Сообщения: 18
Зарегистрирован: Сб июн 03, 2017 4:57 am
Откуда: Красноярск
Благодарил (а): 9 раз
Поблагодарили: 1 раз

Re: Модуль "MegaD"

Сообщение ferenir » Вт июл 04, 2017 2:10 am

Все решается средствами мажора, не нужно никакого лишнего кода. Есть встроенный класс Rooms, в котором уже есть свойства температуры и влажности с настроенной историей хранения. Настраиваете как вам нужно забирать показатели с датчиков (кнопка, таймер, вручную и т.д.), устанавливаете значения свойств и по ним же строите график (pChart или модуль Chart).
Как-то так.
http://majordomo.smartliving.ru/Main/Basics
Для реакции на пороги также можно сделать скрипты (сценарии) и запускать их при достижении условия.
За это сообщение автора ferenir поблагодарил:
koshnv (Вт июл 04, 2017 9:22 am)
Рейтинг: 1.16%
In vino veritas...
_________________
http://connect.smartliving.ru/profile/1533
majkl84
Сообщения: 11
Зарегистрирован: Пт июн 30, 2017 9:11 pm
Благодарил (а): 0
Поблагодарили: 0

Re: Модуль "MegaD"

Сообщение majkl84 » Вт июл 04, 2017 6:54 pm

А кто подскажет. Подключил к MegaD я датчики BME280 и HTU21D оба i2c и висят соответственно на одном интерфейсе, а теперь вопрос как majordomo заставить это все выводить? У BME280 вообще 3 параметра, а в настройках модуля MegaD только 2 соответственно можно привязать.
Chainik
Сообщения: 1465
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 262 раза
Поблагодарили: 455 раз

Re: Модуль "MegaD"

Сообщение Chainik » Вт июл 04, 2017 8:19 pm

Насколько я понимаю, модуль MegaD создавался для отслеживания срабатывания входов Меги и инициации сервером выполнения тех или иных действий.
Что касается датчиков, то изменение их значений не воспринимаются модулем как срабатывание входа. Соответственно, модуль для ваших задач, видимо, вам не нужен.
Для запроса значения датчиков можно, например, в сценарии (периодически запускающемся) опрашивать ваши датчики командами как предлагает Андрей в своей статье (код примерно такой):

Код: Выделить всё

//Отображение влажности (HTU21D/Si7021)
file_get_contents("http://192.168.0.14/sec/?pt=35&scl=34&i2c_dev=htu21d");
//Отображение температуры (HTU21D)
file_get_contents("http://192.168.0.14/sec/?pt=35&scl=34&i2c_dev=htu21d&i2c_par=1");

//Отображение атмосферного давления (BMP280/BME280)
file_get_contents("http://192.168.0.14/sec/?pt=30&scl=31&i2c_dev=bmx280");
//Отображение температуры (BMP280/BME280)
file_get_contents("http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=bmx280&i2c_par=1");
//Отображение влажности (BME280)
file_get_contents("http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=bmx280&i2c_par=2");

setTimeOut('myTimer_opros','runScript("opros");',60*5);
Этот скрипт, который я назвал "opros", должен опрашивать датчики раз в 5 минут. Ну свои Объект.свойства для записи значений с датчиков сами допишите. Типа

Код: Выделить всё

$hum = file_get_contents("http://192.168.0.14/sec/?pt=35&scl=34&i2c_dev=htu21d");
sg('HTU21D.Hum',$hum);
Последний раз редактировалось Chainik Вт июл 04, 2017 9:08 pm, всего редактировалось 1 раз.
Ответить