MajorDoMo FAQ


Channel's geo and language: not specified, not specified
Category: not specified


Канал вопросов и ответов MajorDoMo.
Основная группа @MajorDoMoRu
Сайт https://mjdm.ru
База знаний https://kb.mjdm.ru

Related channels

Channel's geo and language
not specified, not specified
Category
not specified
Statistics
Posts filter


MajorDoMo и Яндекс Алиса. Модуль Yandex Home.

Часть 5. О модуле Yandex Home.

Читать статью


Forward from: xor
Ошибка:
Какие команды встроены в Коннект?

Причина:
Трудно найти, легко потерять, невозможно запомнить)

Решение:
Команды из системы connect
привет - здоровается и спрашивает имя, если не знает
забыть меня - очищает информацию о пользователе, которая была сохранена - например, имя
покажи погоду - открывает ссылку gismeteo


MajorDoMo и Яндекс Алиса. Объединение аккаунтов.

Часть 4. О процедуре объединения аккаунтов Яндекс и MajorDoMo в приложении умного дома Яндекс.

Читать статью


MajorDoMo и Яндекс Алиса. Регистрация приватного навыка.

Часть 3. О регистрации приватного навыка платформы умного дома Яндекс в консоли разработчика Яндекс Диалоги.

Читать статью


Ошибка:
Fatal error: Uncaught PDOException: could not find driver in ...

Причина:
Не загружено PHP-расширение PDO MySQL.

Решение:
Активировать PHP-расширение pdo_mysql в конфигурационном файле php.
Подробнее в блоге skysilver https://connect.smartliving.ru/profile/461/blog/zagruzka-php-rasshireniya-pdo-mysql-v-windows.html


MajorDoMo и Яндекс Алиса. Публикация вебхуков.

Часть 2. Об организации доступа платформы умного дома Яндекс к домашнему серверу MajorDoMo посредством вебхуков.

Читать статью


MajorDoMo и Яндекс Алиса. Общие сведения.

Часть 1. Об архитектуре платформы умного дома Яндекс и вариантах взаимодействия с MajorDoMo.

Читать статью


Задача:
С помощью командной строки Linux оценить статус, время работы и потребление ОЗУ циклов MajorDoMo, а также служб Apache и MySQL.

Решение:
Статья в блоге skysilver
https://connect.smartliving.ru/profile/461/blog/ekspress-kontrol-sostoyaniya-ciklov-v-linux.html








Задача:
Получить сведения о внешнем IP-адресе и интернет-провайдере.

Решение:
Статья в блоге BlackWarrior https://connect.smartliving.ru/profile/40/blog/uznaem-svoi-internet-dannye.html


Forward from: Руслан Бег
Действуя по инструкции с форума https://mjdm.ru/forum/viewtopic.php?f=4&t=1858
Для тех у кого заблочен или "религиозных" противников Яндекса имеется вариант с Google.
После добавления Гуглом необходимости ввода АПИ ключа он перестал работать.
Код не мой, просто правлен или доработан
Вариантов на данный момент 2 json и xml поправим их и вернем к жизни
вариант json предусматривает правку только функции
(не проверял правильность постановки переменных в URL, возможно нужно будет поменять местами, в xml поменял так как не верно выводил место)
// Функция определения адреса по координатам
function Getgeocode($lat, $lon) {
$URL = "https://maps.googleapis.com/maps/api/geocode/json?latlng=$lat,$lon&sensor=false&language=ru&key=ТУТ_ДОЛЖЕН_БЫТЬ_ВАШ_КЛЮЧ_АПИ";
$data = getUrl( $URL );
$json = json_decode( $data );
$res = $json->results[0]->formatted_address;
return $res;
}

Теперь к варианту с xml
Тут еще два варианта: правка только функции и с правкой еще и метода
С правкой метода сокращаем код и время на доли секунд

С правкой метода
function Getgeocode($Coordinates) {
$data_file="https://maps.googleapis.com/maps/api/geocode/xml?latlng=".$Coordinates."&key=ТУТ_ДОЛЖЕН_БЫТЬ_ВАШ_КЛЮЧ_АПИ&language=ru";
$xml = simplexml_load_file($data_file);
$res=$xml->result[0]->formatted_address;
return $res;
}

Метод в таком варианте выглядеть станет так

$Coordinates=$this->getProperty("Coordinates");
$this->setProperty("Location",Getgeocode($Coordinates));


Без правки метода

function Getgeocode(($lat, $lon)) {
$data_file="https://maps.googleapis.com/maps/api/geocode/xml?latlng=$lon,$lat&key=ТУТ_ДОЛЖЕН_БЫТЬ_ВАШ_КЛЮЧ_АПИ&language=ru";
$xml = simplexml_load_file($data_file);
$res=$xml->result[0]->formatted_address;
return $res;
}



На случай потери ветки
Создаем метод
SetLocation
$Coordinates=$this->getProperty("Coordinates");
$lat=substr($Coordinates,0,strpos($Coordinates,","));
$lon=substr($Coordinates,strpos($Coordinates,",")+1);
$this->setProperty("Location",Getgeocode($lon,$lat));
Создаем свойство
Location
Метод привязваем на изменение координатам
Идем в файл своих функций и вставляем
function Getgeocode($lon, $lat) {
$data_file="http://geocode-maps.yandex.ru/1.x/?geocode=E".$lon.",N".$lat;
$xml = simplexml_load_file($data_file);
$res=$xml->{'GeoObjectCollection'}->{'featureMember'}[0]->{'GeoObject'}->{'metaDataProperty'}->{'GeocoderMetaData'}->{'AddressDetails'}->{'Country'}->{'AddressLine'};
return $res;
}

В конце файла должна быть пустая строка
При изменении координат запускается метод и вызывает функцию и возвращает адрес


#координаты #GPS #Гугл #Google #Геокодинг #Geocoding #Coordinates


Контроль функционирования циклов

Циклы - неотъемлемая часть MajorDoMo, поэтому сразу после установки, а также периодически в ходе эксплуатации необходимо контролировать состояние циклов. Для контроля функционирования циклов (мониторинга) можно использовать штатные средства MajorDoMo - X-Ray в панели управления, и диспетчер задач операционной системы.

Контроль функционирования циклов следует проводить в разрезе следующих критериев:
- статус (запущен, не запущен, завис);
- наличие дублей (несколько запущенных экземпляров одного и того же цикла);
- загрузка CPU;
- загрузка RAM;
- время непрерывной работы (uptime).

Подробнее в статье https://kb.mjdm.ru/control-funkcionirovaniya-ciklov/


Проблема:
Не работает режим разработчика на шлюзе Xiaomi Mijia Gateway 2

Исходные данные:
Есть в природе пачка шлюзов Xiaomi Gateway 2, у которых, если не был активен LAN mode (режим разработчика), то после обновления его уже невозможно включить (с надписью по кругу сзади). Видимость включения режима есть, но порты 9898, 4321 закрыты.

Решение:
1. После покупки не обновлять прошивку шлюза! Сначала активировать режим разработчика, убедиться, что он работает, и только потом обновляться.
2. Восстановить работоспособность режима разработчика через UART шлюза. Нужен паяльник, адаптер USB to UART, отвертка и комп. Разобрать шлюз, подпаяться к его UART и подцепиться к консоли с компа (http://4pda.ru/forum/index.php?showtopic=680062&st=18540#entry78150853). Затем для активации режима разработчика, дать в консоли несколько команд в соответствии с http://4pda.ru/forum/index.php?showtopic=680062&st=20900#entry80884047
Также полезная информация здесь https://community.openhab.org/t/solved-openhab2-xiaomi-mi-gateway-does-not-respond/52963/125


Проблема:
После востановления бэкапа возникает ошибка.
Fatal error: Cannot redeclare toDBDate() (previously declared in /var/www/html/lib/sqlFunctions.class.php:266) in /var/www/html/lib/mysqli.class.php on line 691

Исходные данные:
Сначала откат на бэкап, сделанный на старой версии МДМ, а потом восстановление из бэкапа с с более новой версии МДМ.

Решение:
Удалить файл ./lib/sqlFunctions.class.php


Forward from: Виталий
Проблема:
Некоторые сообщения не отправляются телеграм-модулем (пропускаются)

Исходные данные:
Сервер на OrangePi Plus 2
Система перенесена в nand, плюс сделана дополнительная оптимизация записи (mysql в tmpfs)
Телеграм-модуль актуальный на 28.12.2018, в нем настроено использование прокси socks5

Воспроизведение проблемы:
Выполнение кода, например, по кнопке:
say('Тест уведомления 12345678901234567890123456789012345678901234567890 1');
...
say('Тест уведомления 12345678901234567890123456789012345678901234567890 10');
(Десять строчек)
В историю сообщения выводятся все десять, через телеграм же приходит стабильно не больше девяти, а то и восемь

Решение проблемы:
Снять в модуле галочку Debug :)

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


Forward from: Alex
Вдруг кому пригодится


Forward from: Alex
Добрый вечер всем!!! Победил я сегодя водяной счетчик с espcounter. Проблема была в подключении цепи счетчика по так называемой цепи Намур. Лечится заменой сопративления 5 килом в место 22 килаома. в самом espcounter


Forward from: Руслан Бег
Проблема: При запросе к свойствам не всегда приходят свежие данные, заполняемые в скрипте. На вывод уходят предыдущие данные.

Решение: замена getglobal('ThisComputer.SpeedPing') при запросе на getObject('ThisComputer')->getProperty('SpeedPing').

20 last posts shown.

204

subscribers
Channel statistics