Просмотр задачи

НомерПроектКатегорияВидимостьИзменен
0001465SimpleTVПредложениепубличная2018-12-11 20:29
ИнициаторKvantos ОтветственныйSergeyVS  
ПриоритетобычныйВлияниенововведениеВоспроизводимостьнеприменимо
Состояние назначенаРешениеоткрыта 
Платформаx64Операционная системаWin x64Версия ОС
Версия продукта0.5.0 b6 (x32/x64) 
Целевая версия0.5.0 b6 (x32/x64)Решена в версии 
Тема0001465: Написание плагина для интеграции SimpleTV с УД MajorDomo
ОписаниеЦель работ в следующем - Интеграция SimpleTV c ПО умного дома (УД) https://majordomo.smartliving.ru/

Задача разбита на 2 фазы:
1. Получение УД текущего состояния SimpleTV
2. Управление из УД плеером SimpleTV

Фаза 1
--------------
Задача: УД должен знать состояние SimpleTV, для этого необходимо написать плагин, который позволит передавать в метод (через вызов метода с параметрами) объекта УД следующую информацию:
Параметры передаваемые с вызовом метода:
uptime: Аптайм SimpleTV на момент регистрации вызова в секундах (присутствует всегда).
volume: Громкость SimpleTV, -1 если не настроено или при ошибке чтения
status: Причина вызова. Отсутствует при изменении громкости или если вызов произошел по таймеру uptime.

Возможные значения status (передаются по событиям управления воспроизведением):
Play
Pause
Stop
Дополнительные сведенияAPI УД: https://kb.smartliving.ru/http-ssilki-dlya-raboti-s-majordomo/
API УД для вызова метода с параметрами: /api/method/<OBJECT>.<METHOD>?param1=value1&param2=value2&param3=value3

Пример аналогичных вызовов методов УД приведен в файле notifier.py
Это не мой код, а код автора голосового терминала2 для УД MajorDomo
https://github.com/Aculeasis/mdmTerminal2
МеткиНет связанных меток.
OC??????
Вложенные файлы

Связи

связана с 0001425 назначенаSergeyVS SimpleTV Создание универсального сервера для внешнего (удаленного сетевого) управления и запроса состояний плеера 
связана с 0000907 решенаSergeyVS SimpleTV Добавить TCP сервер, для приема и исполнения lua скриптов 
связана с 0001355 назначенаSergeyVS Lua API ActionId for simpleTV 0.5 

Деятельность

SergeyVS

2018-12-11 12:53

администратор   ~0026745

В шапке luaScr.zip, пример получает состояние/громкость и при изменении отправляет/пишет в debug(C:/LuaDebug.txt)

Kvantos

2018-12-11 13:02

разработчик   ~0026746

Последние изменения: 2018-12-11 13:07

Просмотр 7 редакций

Спасибо большое еще раз, но это получается по таймеру.
Мне кажется, что это нужно делать по событиям изменения громкости и статуса воспроизведения.
По таймеру нужно слать только uptime

Если слать по таймеру громкость и статус, то:
1. Возможны лаги состояния - например, плеер на паузе, а УД еще не знает об этом
2. Метод УД будет вызываться очень часто, что может привести к большой нагрузке УД (сервера УД обычно ставят на микрокомпьютерах, типа OrangePi Zero)

Kvantos

2018-12-11 13:12

разработчик   ~0026747

стоп, досмотрел...
проверка по таймеру, а шлется таки если изменилось...

Kvantos

2018-12-11 13:17

разработчик   ~0026748

А как uptime симпла на lua считать? Подскажите плс....

SergeyVS

2018-12-11 13:25

администратор   ~0026749

что такое uptime? Если это просто время (или timestamp), то https://www.lua.org/pil/22.1.html

Kvantos

2018-12-11 13:28

разработчик   ~0026750

Нет, это не таймстамп, это время с момента загрузки SimpleTV.
Это необходимо слать с периодичностью, например 5 сек, чтобы УД видел "жив" ли плеер и сколько времени у него аптайм.

SergeyVS

2018-12-11 13:40

администратор   ~0026751

uptime = math.floor(os.clock())

Kvantos

2018-12-11 20:14

разработчик   ~0026755

Все получилось, спасибо огромное. Во вложении крайняя рабочая версия.
Плагин вызывает метод SimpleTV01.eventreceived, а этот метод сам распихивает по свойствам объекта SimpleTV01:
SimpleTV01.uptime
SimpleTV01.state
SimpleTV01.volume
SimpleTV01.mute
Код метода eventreceived:
foreach ($params as $param => $value) {
    $this->setProperty($param, $value);
};

Kvantos

2018-12-11 20:29

разработчик   ~0026756

Теперь Фаза 2: Управление.
Тут писал про идеи http://iptv.gen12.net/bugtracker/view.php?id=1425
Думаю нужно реализовать все ActionId

JSON - универсально (аналогично как в KODI), есть аутентификация, есть библиотека для LUA
https://github.com/rxi/json.lua


GET - просто, но как быть с аутентификацией при управлении?

MQTT - заточено под IOT (очень простая интеграция с majordomo и другими УД), есть аутентификация и QOS, есть библиотека для LUA
https://github.com/geekscape/mqtt_lua
из минусов вижу необходимость внешнего mqtt брокера

Что думаете, как правильнее?

История изменений

Дата изменения Пользователь Поле Изменить
2018-12-11 12:33 Kvantos Новая задача
2018-12-11 12:33 Kvantos Состояние новая => назначена
2018-12-11 12:33 Kvantos Ответственный => SergeyVS
2018-12-11 12:33 Kvantos Файл добавлен: notifier.py
2018-12-11 12:37 Kvantos Связь добавлена связана с 0001425
2018-12-11 12:51 SergeyVS Файл добавлен: luaScr.zip
2018-12-11 12:53 SergeyVS Комментарий добавлен: 0026745
2018-12-11 13:02 Kvantos Комментарий добавлен: 0026746
2018-12-11 13:06 Kvantos Комментарий изменен: 0026746 Просмотр редакций
2018-12-11 13:06 Kvantos Комментарий изменен: 0026746 Просмотр редакций
2018-12-11 13:06 Kvantos Комментарий изменен: 0026746 Просмотр редакций
2018-12-11 13:07 Kvantos Комментарий изменен: 0026746 Просмотр редакций
2018-12-11 13:07 Kvantos Комментарий изменен: 0026746 Просмотр редакций
2018-12-11 13:07 Kvantos Комментарий изменен: 0026746 Просмотр редакций
2018-12-11 13:12 Kvantos Комментарий добавлен: 0026747
2018-12-11 13:17 Kvantos Комментарий добавлен: 0026748
2018-12-11 13:25 SergeyVS Комментарий добавлен: 0026749
2018-12-11 13:28 Kvantos Комментарий добавлен: 0026750
2018-12-11 13:40 SergeyVS Комментарий добавлен: 0026751
2018-12-11 20:14 Kvantos Комментарий добавлен: 0026755
2018-12-11 20:14 Kvantos Файл добавлен: Status2Majordomo_v1.0.zip
2018-12-11 20:29 Kvantos Комментарий добавлен: 0026756
2018-12-11 20:29 Kvantos Связь добавлена связана с 0000907
2018-12-11 20:29 Kvantos Связь добавлена связана с 0001355