[Приложение] мой MjDM (Android)

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

Модератор: immortal

klv666
Сообщения: 175
Зарегистрирован: Вс янв 20, 2019 10:48 am
Благодарил (а): 64 раза
Поблагодарили: 19 раз

Re: [Приложение] мой MjDM (Android)

Сообщение klv666 » Вт мар 10, 2020 5:34 pm

hc2hunter писал(а):
Вт мар 10, 2020 4:48 pm
klv666, aleks-zonov писал(а):
Вс мар 08, 2020 2:08 pm
Выключение/включение экрана командой с сервера еще случайно не реализовано? Естественно с учетом предварительного отключения паролей и прочей защиты.
Ну попробуйте...
viewtopic.php?f=5&t=6737&p=116159#p116159
Проверил на одном из планшетов, выключение/включение экрана работает как и хотелось, спасибо!
Попробовал первый раз прослушивание с сфинксом, ну да, для старых аппратов видимо не годится (у меня как раз специально старые взял для терминалов), вешает на мертво приложение, потом вылетает с ошибкой. С гугло прослушкой работало более менее стабильно.
За это сообщение автора klv666 поблагодарил:
hc2hunter (Ср мар 11, 2020 10:50 am)
Рейтинг: 1.16%
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 815 раз

Re: [Приложение] мой MjDM (Android)

Сообщение tarasfrompir » Вт мар 10, 2020 5:34 pm

hc2hunter писал(а):
Вт мар 10, 2020 5:26 pm
Да просто никак не обобщу... все копаемся, доделываем, переделываем... релиз постоянно отодвигается.

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

	{
		"appname":"myMjDM",
		"appversion":"1.4.0 (build 154, code version 29)",
		"devicename":"Sony F8332",
		"serial":"CB512DRQTM",
		"ip":"192.168.168.136",
		"os":"Android SDK 26 (8.0.0)",
		"battery":"60%",
		"screenon":false,
		"fullscreen":false,
		"immersive":false,
		"orientationfix":false,
		"orientationmode":"PORTRAIT",
		"toolbar":"off",
		"recognition":true,
		"listening":false,
		"listening_lng":"ru",
		"listening_keyphrase":"умный дом",
		"listening_use_hint_phrase":true,
		"listening_hint_phrase":"",
		"currentserver":"моя ДАЧА",
		"brightness_auto":1,
		"brightness":"47%",
		"volume_alarm":"100%",
		"volume_ring":"86%",
		"volume_notification":"86%",
		"volume_media":"100%"
	}
За тобой не успеваю...
ВВоди тогда команду - orientationmode
Спасибо нам ПОМОЖЕТ..!
Аватара пользователя
hc2hunter
Сообщения: 507
Зарегистрирован: Сб дек 02, 2017 10:45 am
Откуда: RUS
Благодарил (а): 228 раз
Поблагодарили: 348 раз

Re: [Приложение] мой MjDM (Android)

Сообщение hc2hunter » Вт мар 10, 2020 8:19 pm

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

klv666, про "вешает" погодите. там есть алгоритмические ошибки в работе Сфнкса. я просто не успел еще многие вещи поправить...

tarasfrompir писал(а):
Вт мар 10, 2020 5:34 pm
ВВоди тогда команду - orientationmode
как смотришь на то, чтобы уже начать внутри этой "колбасы" выделять объекты?
а то когда все в линейку - смотрится очень криво...
я имею ввиду что-то типа:

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

{
	myMjDM_info : {
		system: {
			свойство1:значение1
			...
			свойствоN:значениеN
		},
		settings: {
			...
		}
	}
}
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 815 раз

Re: [Приложение] мой MjDM (Android)

Сообщение tarasfrompir » Вт мар 10, 2020 8:28 pm

hc2hunter писал(а):
Вт мар 10, 2020 8:19 pm
да я сам за собой не успеваю...
потому что сделать еще надо много-много, а некоторые вопросы требуют более обстоятельного подхода и времени. тот же Sphinx.

klv666, про "вешает" погодите. там есть алгоритмические ошибки в работе Сфнкса. я просто не успел еще многие вещи поправить...

tarasfrompir писал(а):
Вт мар 10, 2020 5:34 pm
ВВоди тогда команду - orientationmode
как смотришь на то, чтобы уже начать внутри этой "колбасы" выделять объекты?
а то когда все в линейку - смотрится очень криво...
я имею ввиду что-то типа:

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

{
	myMjDM_info : {
		system: {
			свойство1:значение1
			...
			свойствоN:значениеN
		},
		settings: {
			...
		}
	}
}
не вопрос -
За это сообщение автора tarasfrompir поблагодарил:
hc2hunter (Вт мар 10, 2020 9:19 pm)
Рейтинг: 1.16%
Спасибо нам ПОМОЖЕТ..!
Аватара пользователя
hc2hunter
Сообщения: 507
Зарегистрирован: Сб дек 02, 2017 10:45 am
Откуда: RUS
Благодарил (а): 228 раз
Поблагодарили: 348 раз

Re: [Приложение] мой MjDM (Android)

Сообщение hc2hunter » Ср мар 11, 2020 9:55 am

Работа myMJDM в качестве Терминала (то есть поддержка MajorDroidAPI)

Включить данную возможность можно в Настройках приложения.
За основу взята официальная спецификация команд отсюда: viewtopic.php?f=5&t=518

Количество команд было увеличено, некоторые переработаны.
Чтобы устройство корректно работало терминалом, нужно чтобы сервер MDM видел его напрямую (пинговал без проблем). Поэтому наиболее актуально это для локальный сетей.
Также, как становится понятно из специфики самого приложения, - оно может являться Терминалом сразу всех серверов и обрабатывать входящие команды любого сервера.
Пример вызова команд из платформы MDMПоказать
На основе приведенного ниже кода можно строить скрипты, шаблоны или методы устройств и т.п.:

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

$address='192.168.0.170'; //ip-адрес терминала, явно видимый с сервера MDM
$service_port='7999';
$in='tts:проверка'; //команда для отправки

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
    echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "<br/>\n";
    return 0;
}
$result = socket_connect($socket, $address, $service_port);
if ($result === false) {
    echo "socket_connect() failed.\nReason: ($result) " . socket_strerror(socket_last_error($socket)) . "\n";
    return 0;
}
socket_write($socket, $in, strlen($in));
socket_close($socket); 
На текущий момент поддерживаются следующие команды:
  • stop terminal или stop server
    Останавливает терминальный сервис на устройстве. Сам он уже не запустится. Как минимум нужно перезапустить приложение.
  • about
    Открывает экран "О приложении"
  • settings
    Вызов экрана Настроек приложения
  • exit или quit
    Выйти из приложения. Мало ли кому и зачем когда пригодится...
  • tobackground
    Свернуть все активности (включая приложение myMjDM) и показать рабочий стол.
    Фактически как нажать кнопку "Домой".
  • restore
    Восстановить myMjDM из бэкграунда (свернутого состояния).
  • home
    Переход на домашнюю страницу. Если список серверов пуст, переход никуда не осуществляется. Если была загружена внешняя страница (например по команде url: или по схеме mymjdm://openurl), то осуществляется переход на домашнюю страницу первого по списку сервера.
  • refresh
    Обновляет текущую страницу.
    Если загружена внешняя ссылка командами mymjdm://openurl или через терминал командой url: , то refresh и home ничего делать не будут (согласно выше оговоренной политике работы с такими страницами).
  • url:ссылка
    Переход по указанной ссылке.
    Команда аналогична внешней команде со схемой mymjdm://openurl/?url=http(s)://ссылка&user=логин&pass=пароль за исключением того, что согласно MajorDroidAPI параметры авторизации не поддерживаются. Поэтому программой будет предпринята попытка использовать логин/пароль последнего активного сервера. Если ресурс все-таки требует авторизации, а эта пара логин/пароль не прокатит - будет отлуп...
  • hi или voice
    Запустить автоматически голосовое распознавание (если оно включено в Настройках приложения).
    Если в этот момент игралась какая-то мелодия по команде play:url (см.ниже), воспроизведение будет прервано.
  • tts:текст
    Произнести фразу. Фраза будет проговорена если в системе устройства имеется корректно работающий голосовой движок и данная опция отмечена в Настройки\Терминал.
    Фразы, отправленные друг за другом, становятся в очередь воспроизведения.
    Если в этот момент игралась какая-то мелодия по команде play:url (см.ниже), воспроизведение будет приостановлено и возобновится после проговаривания всех фраз.
  • ask:текст
    Произнести фразу и перейти в режим ожидания голосового ввода.
    Если в этот момент игралась какая-то мелодия по команде play:url (см.ниже), воспроизведение будет прервано.
  • play:url
    Проиграть звуковой файл, расположенный по адресу url.
    Пример: play:http://<сервер_MDM>/cms/sounds/dingdong.mp3
    Если http:// не указано, приложение само это подставит в адрес.
    Если по ссылке требуется basic-авторизация, то будет попытка применить логин/пароль с открытого активного сервера.
  • stop или media stop
    Остановить проигрывание звукового файла, вызванное командой play:url
  • pause или media pause
    Приостановить проигрывание звукового файла, вызванное командой play:url, запомнив позицию
    Если вы не планируете продолжать проигрывание файла, то с некоторыми допущениями команду можно рассматривать как stop, однако Терминал продолжает поддерживать соединение до ранее указанного файла, думая что последует resume.
  • resume или media resume
    Продолжить проигрывание звукового файла (вызванное ранее командой play:url), с запомненной позиции по команде pause
    Повторный вызов play:url сбросит позицию и начнет проигрывание файла с начала
  • run://приложение
    Запустить приложение, установленное в системе. Следует указать имя пакета.
    Пример: run://com.google.android.calendar
  • avolume:уровень
    Установить громкость будильника (ALARM) на заданный уровень (0...100%)
  • rvolume:уровень
    Установить громкость звонка (RING) на заданный уровень (0...100%)
  • nvolume:уровень
    Установить громкость уведомлений (NOTIFICATION) на заданный уровень (0...100%)
  • mvolume:уровень
    Установить громкость музыки (MEDIA) на заданный уровень (0...100%)
  • volume:уровень
    Установить громкость медиа и уведомлений (MEDIA + NOTIFICATION) на заданный уровень (0...100%)
    Обратите внимание, что на некоторых устройствах громкость звонков и уведомлений рассматривается как единая.
  • brightness:уровень
    Установить яркость дисплея в диапазоне 0...100%.
    Автояркость при этом будет принудительно выключена (если она включена в Настройках устройства).
    Для работы этой функции на Android M и выше требуется дополнительное системное разрешение.
  • screen:[off, on, turnoff, turnon, unlock, lock]
    Команда, управляющая блокировкой и разблокировкой устройства (может работать не на всех Android-платформах)
    Работает только если нет никаких графических ключей и паролей.
    В первый раз при попытке заблокировать устройство будет выдан запрос на предоставление приложению админских прав.
    Значение можно указывать как off/on, так и turnoff/turnon или unlock/lock
  • info или status или getterminalinfo или getterminalstatus
    Вернуть на сервер полную информацию о терминале в формате JSON.
    Пример содержимого JSONПоказать

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

    {
    	"application":
    	{
    		"name":"мой MjDM",
    		"version":"1.4.0 (build 163, code version 29)",
    		"settings":
    		{
    			"screenon":false,
    			"fullscreen":false,
    			"immersive":false,
    			"orientationfix":false,
    			"orientationmode":"PORTRAIT",
    			"toolbar":"off",
    			"recognition":true,
    			"listening":false,
    			"listening_lng":"ru",
    			"listening_keyphrase":"умный дом",
    			"listening_use_hint_phrase":true,
    			"listening_hint_phrase":"",
    			"servers":
    			{
    				"number_of_servers":4,
    				"servers_attributes":
    				[
    					{"name":"моя ДАЧА"},
    					{"name":"сцена Шкафчик"},
    					{"name":"сцена NAVES"},
    					{"name":"сцена Basic"}
    				],
    				"current_server":"моя ДАЧА"
    			}
    		}
    	},
    	
    	"device":
    	{
    		"name":"Sony F8332",
    		"serial":"CB512DRQTM",
    		"os":"Android SDK 26 (8.0.0)",
    		"language_locale":"ru_RU",
    		"local_ip":"192.168.168.136",
    		"battery":"90%",
    		"brightness_auto":1,
    		"brightness":"47%",
    		"volume_alarm":"100%",
    		"volume_ring":"86%",
    		"volume_notification":"86%",
    		"volume_media":"100%"
    	}
    }
    
    Как данные попадают назад? Предусмотрено 2 пути:
    1. Данные по-умолчанию незамедлительно отправляются назад на сервер в порт 7999, в том же формате JSON.
      Отловить их на сервере можно, если предыдущий запрос вы сделали так:

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

      $unswer = socket_write($socket, $in, strlen($in)); //ожидать ответа
      socket_close($socket); 
      
    2. Можно дополнительно вернуть данные любому скрипту GET-запросом, если по каким-то причинам принять ответ в порт не удобно.
      Для этого в Настройках приложения указывается путь к такому скрипту (относительно корня сервера) и имя параметра, значение которого вы будете затем парсить.
      Например /status.php?status=
      То есть при вызове данной команды приложение попытается на текущий открытый сервер отправить информацию по адресу:
      <сервер>/status.php?status={...json...}
      Если данная настройка пуста, сработает лишь 1 вариант.
  • ping
    Проверка, жив ли сервис терминала.
    В случае успеха он даст ответ "ОК" на указанный скрипт и сразу назад в порт сервера (как в команде status)
  • set:параметр=значение
    Семейство команд для изменения параметров самой программы прямо "находу".
    • set:screenon=[false, true, 0, 1]
      Экран всегда включен. Значение можно указывать как false/true, так и 0/1
    • set:fullscreen=[off, on, false, true, 0, 1]
      Включить/Выключить полноэкранный режим. Значение можно указывать как off/on, так и false/true или 0/1
    • set:immersive=[off, on, false, true, 0, 1]
      Включить/Выключить иммерсию полноэкранного режима (режим дополнительного скрытия наэкранных кнопок). Значение можно указывать как off/on, так и false/true или 0/1
    • set:orientation=[off, none, PORTRAIT, PORTRAIT_REVERSE, LANDSCAPE, LANDSCAPE_REVERSE]
      Задать режим фиксации ориентации экрана.
    • set:toolbar=[off, on, false, true, 0, 1]
      Включить/Выключить верхнюю строку с названием сервера (тулбар). Значение можно указывать как off/on, так и false/true или 0/1
Последний раз редактировалось hc2hunter Пн мар 23, 2020 12:39 pm, всего редактировалось 6 раз.
Аватара пользователя
hc2hunter
Сообщения: 507
Зарегистрирован: Сб дек 02, 2017 10:45 am
Откуда: RUS
Благодарил (а): 228 раз
Поблагодарили: 348 раз

Re: [Приложение] мой MjDM (Android)

Сообщение hc2hunter » Ср мар 11, 2020 10:02 am

tarasfrompir, выше обновленная документация по командам с примерами JSON.
Буду ее пополнять и редактировать. После выхода релиза ссылка из шапки перепишется на нее.

Пока продолжаю дальше заниматься распараллеливанием задач и глюками Сфинкса...
За это сообщение автора hc2hunter поблагодарили (всего 4):
tarasfrompir (Ср мар 11, 2020 10:17 am) • andrey040670 (Ср мар 11, 2020 1:39 pm) • klv666 (Ср мар 11, 2020 1:55 pm) • aleks-zonov (Ср мар 11, 2020 2:32 pm)
Рейтинг: 4.65%
aleks-zonov
Сообщения: 91
Зарегистрирован: Пн фев 26, 2018 5:10 pm
Откуда: Киров
Благодарил (а): 21 раз
Поблагодарили: 5 раз

Re: [Приложение] мой MjDM (Android)

Сообщение aleks-zonov » Ср мар 11, 2020 1:54 pm

hc2hunter писал(а):
Вт мар 10, 2020 4:48 pm
Ну попробуйте...
viewtopic.php?f=5&t=6737&p=116159#p116159
Попробовал включение выключение дисплея, работает но к сожалению мой старенький планшет отрубает вайфай после засыпания хоть и в настройках стоит не выключать вайфай, планшет старенький на 4.4.2 и получается что он не больше может принимать ни какие команды с выключенным дисплеем.
Аватара пользователя
hc2hunter
Сообщения: 507
Зарегистрирован: Сб дек 02, 2017 10:45 am
Откуда: RUS
Благодарил (а): 228 раз
Поблагодарили: 348 раз

Re: [Приложение] мой MjDM (Android)

Сообщение hc2hunter » Ср мар 11, 2020 2:09 pm

Ну... извините... "пол покрашен" что называется :D
Просто многие путают именно пригашение дисплея с блокировкой устройства (которые в самой операционной системе взаимоувязаны).
Когда вы блокируете устройство - оно "ложится спать", выключая все ненужные функции и притормаживая процессор. Именно этот режим позволяет аккумулятору в автономке работать так долго, иначе у всех телефонов бы хватало на несколько часов.

Могу лишь предложить сделать дисплей постоянно включенным и управлять его яркостью. Почему бы и нет?
Ну или попробовать какую-то другую прошивку под ваше устройство.
За это сообщение автора hc2hunter поблагодарил:
aleks-zonov (Ср мар 11, 2020 2:32 pm)
Рейтинг: 1.16%
aleks-zonov
Сообщения: 91
Зарегистрирован: Пн фев 26, 2018 5:10 pm
Откуда: Киров
Благодарил (а): 21 раз
Поблагодарили: 5 раз

Re: [Приложение] мой MjDM (Android)

Сообщение aleks-zonov » Ср мар 11, 2020 2:14 pm

hc2hunter писал(а):
Ср мар 11, 2020 2:09 pm
Ну... извините... "пол покрашен" что называется :D
Могу лишь предложить сделать дисплей постоянно включенным и управлять его яркостью. Почему бы и нет?
Да я так просто отписался, что как и сказано будет работать не у всех, мне не повезло :D
Аватара пользователя
hc2hunter
Сообщения: 507
Зарегистрирован: Сб дек 02, 2017 10:45 am
Откуда: RUS
Благодарил (а): 228 раз
Поблагодарили: 348 раз

Re: [Приложение] мой MjDM (Android)

Сообщение hc2hunter » Ср мар 11, 2020 2:16 pm

Ну вам-то не повезло не потому что именно "не работает" на уровне среды, а потому что кто-то нафакапил в вашей прошивке )))
Если у вас стоит НЕ выключать WiFi, а девайс ложится спать и его выключает... - надо бы руки отбить тому кто собирал эту прошивку.

Так что все работает, просто сам планшет рубит сук, на котором сидит... но тут медицина бессильна )))

Еще раз лишь посоветую - поищите другую прошивку или покопайте решения, чтобы WiFi не засыпал. Может через Tasker что-то удастся вычудить.
Раз у вас 4.4.2, наверняка есть альтернативные прошивки на базе LineAge или AICP под 4.4.4, а может даже под 5.0.
Я ж не знаю, что у вас за машинка. Поищите на 4pda...
За это сообщение автора hc2hunter поблагодарил:
aleks-zonov (Ср мар 11, 2020 2:31 pm)
Рейтинг: 1.16%
Ответить