Controlamos el dispositivo Android



Este es el tercer intento de hacer que un hogar inteligente se haga amigo de Android, perm铆teme recordarte que el primer intento de controlar dispositivos Android a trav茅s de HTTP fue usar la aplicaci贸n Paw Server. Esta aplicaci贸n permiti贸 usar el lenguaje BeanShell para incrustar su c贸digo en una p谩gina xhtml e interactuar con 茅l, recibir datos o administrarlo. Para integrarse con el servidor dom茅stico inteligente ( ioBroker ), se escribi贸 un controlador, pero para su primera configuraci贸n, fue necesario cargar manualmente los scripts. Adem谩s, a trav茅s del controlador, se actualizaron los scripts, lo que permiti贸 agregar nuevas funciones y corregir errores, pero tambi茅n impuso una serie de restricciones en los intentos de alejarse de los m茅todos establecidos en Paw Server para implementar nuevas funciones.

El segundo intento fue construir su aplicaci贸n basada en la fuente del servidor Paw. El objetivo principal era simplificar el proceso de configuraci贸n para el usuario, as铆 como agregar nuevas caracter铆sticas que no pod铆an implementarse en la versi贸n anterior.

En la misma versi贸n, se decidi贸 abandonar por completo el servidor Paw y volver a escribir la aplicaci贸n y el controlador para ioBroker. Agregue nuevos m茅todos de conexi贸n, adem谩s del HTTP existente, tambi茅n MQTT. Agregue m谩s configuraciones para elegir eventos, tanto desde el propio sistema como desde los sensores integrados. Por supuesto, lo primero que la aplicaci贸n estar谩 optimizada para ioBroker, pero sin mucha dificultad puede integrarse en otros sistemas.

Google play

La aplicaci贸n te permite:

  1. Obtenga el estado de la configuraci贸n del sistema (brillo de la luz de fondo, estado de la pantalla, volumen, bater铆a, etc.)
  2. Recibir datos de llamadas entrantes, reconocimiento de voz.
  3. Reciba datos de sensores incorporados.
  4. Obtenga coordenadas de ubicaci贸n.
  5. Obtenga una lista de aplicaciones instaladas y ejec煤telas.
  6. Administre la configuraci贸n del sistema (brillo de la luz de fondo, nivel de volumen, etc.)
  7. Hacer llamadas.
  8. Crear notificaciones y cuadros de di谩logo.
  9. Enviar texto a s铆ntesis de voz.
  10. Interact煤a con Tasker.
  11. Enviar archivos a dispositivos (solo HTTP).

Apariencia




La apariencia de la aplicaci贸n no es final y puede variar. Me gustar铆a cambiar o agregar mucho, pero eso es todo con el tiempo.

Con la navegaci贸n a trav茅s de la aplicaci贸n, creo, no deber铆a haber dificultades. En el primer lanzamiento, la aplicaci贸n informa brevemente sobre los cambios actuales en la nueva versi贸n y sugiere utilizar el "asistente". Al ir a la configuraci贸n de la aplicaci贸n, puede cambiar los par谩metros b谩sicos de operaci贸n, seleccionar el tipo de conexi贸n, seleccionar los eventos que se transmitir谩n al servidor y tambi茅n permitir o denegar el acceso a algunos datos (directorio telef贸nico, mensajes, lista de llamadas y fotos).

En la pantalla principal puede ver los "mosaicos", mientras que esta es una versi贸n de prueba, pero con el tiempo planeo ampliar sus capacidades. De los "mosaicos" disponibles, en este momento, hay: bot贸n, atenuador, tiempo, lista, color, informaci贸n. La tarea principal de los mosaicos es enviar o recibir datos (comandos) del servidor o administrar otros dispositivos. Si bien no hay una imagen general de c贸mo deber铆a funcionar todo, ahora no describir茅 todos los matices.

Conexiones


Ahora sobre conexiones y comandos de control, la aplicaci贸n tiene dos opciones de conexi贸n a trav茅s de HTTP y MQTT. Cada m茅todo tiene sus ventajas y desventajas, el m茅todo de conexi贸n que elija.

HTTP


Este m茅todo implica conectarse mediante Wi-Fi a una red local. La aplicaci贸n "eleva" su servidor web (la direcci贸n IP y el puerto se pueden ver en la notificaci贸n al conectarse) y le da acceso para administrarlo. Esto se puede hacer directamente (a trav茅s de un navegador) o en integraci贸n con el servidor UD, a trav茅s de solicitudes POST o GET.





Las respuestas de las solicitudes se devolver谩n en formato JSON, el nombre del dispositivo, la direcci贸n IP y el estado del comando se transmiten en el cuerpo de la respuesta. Algunas solicitudes llaman a una "devoluci贸n de llamada" adicional, por ejemplo, cuando se env铆a texto a s铆ntesis de voz, la aplicaci贸n enviar谩 una solicitud al servidor sobre el comienzo de hablar el texto y su finalizaci贸n. Del mismo modo, la aplicaci贸n transmite datos sobre eventos y lecturas de sensores incorporados al servidor. Por lo tanto, para un trabajo completo, se requiere que el servidor UD pueda procesarlos.

MQTT


El protocolo MQTT es bastante popular y es compatible con varios sistemas DD, esto facilita la integraci贸n de la aplicaci贸n en ellos. Al elegir este m茅todo de conexi贸n, puede utilizar corredores MQTT locales y externos.

Cuando se conecta al agente MQTT, se crea la rama principal / PAW / , seguida del nombre de los dispositivos (cada dispositivo debe tener el suyo), que a su vez se dividen en dos ramas del tema / info / y / comm / , puede adivinar por el nombre que La rama de informaci贸n (informaci贸n) publica toda la informaci贸n entrante del dispositivo, y la rama de comunicaci贸n (comando) contiene temas para administrarla. Esto se hace para mayor claridad, a fin de comprender mejor qu茅 tema es responsable de qu茅.



Tambi茅n en la rama principal hay / all_devices / en esta rama hay temas para los que se suscriben todos los dispositivos, lo que le permite administrar todos los dispositivos a la vez.

Para la universalidad, en esos temas cuyos valores pueden ser verdaderos (verdaderos) o falsos (falsos), pueden tomar diferentes valores, es decir, 1, encendido, autom谩tico, verdadero es el valor verdadero y 0, apagado, falso, manual es falso . Otra caracter铆stica de la aplicaci贸n es que para verificar la ejecuci贸n del comando, en caso de ejecuci贸n exitosa, se publica un valor vac铆o en el mismo tema. Y si el valor despu茅s de la publicaci贸n no ha desaparecido, esto indica que se produjo un error al ejecutar el comando o que el valor no coincide con el correcto para este tema. Por ejemplo, al cambiar el nivel de volumen, si el valor no corresponde al n煤mero o supera el m谩ximo, para un tipo determinado de nivel de volumen, devolver谩 un error.

Tambi茅n en esta versi贸n, se ampli贸 el conjunto de comandos para notificaciones y "di谩logos", que le permiten mostrar informaci贸n m谩s detallada, as铆 como interactuar con el usuario si el dispositivo se utiliza como informador. Al construirlos, se requiere una gran cantidad de par谩metros, por lo tanto, es necesario publicar el valor en el formato JSON en el tema apropiado.

Para notificaciones tema / comunicaci贸n / notificaci贸n / crear (a continuaci贸n se muestra un ejemplo del valor)

{ "noti":"Any text", "title":"Title 2", "info":"Any text", "vibrate":true, "sound":true, "light":true, "id":2 } 

Para los "cuadros de di谩logo" tema / comunicaci贸n / notificaci贸n / alerta . La respuesta de los "cuadros de di谩logo" viene en formato JSON y se publica en el tema / informaci贸n / alerta / respuesta

 { "alert":"Turn the lights off?", "title":"Light", "negative":"No", "positive":"Yes", "neutral":"Neutral", "sound":true, "id":2 } 

Integraci贸n de IoBroker




Al incorporar la capacidad de trabajar a trav茅s del protocolo MQTT en las aplicaciones, solo quer铆a simplificar la integraci贸n con el sistema y deshacerme de escribir un controlador separado. Pero algunas funciones no se pueden implementar a trav茅s del protocolo MQTT, y por esta raz贸n no se puede prescindir de un controlador.

La estructura de los objetos del controlador es similar a la estructura de MQTT, y tambi茅n se divide en dos ramas / info / y / comm / , tiene comandos similares para administrar y la misma reacci贸n a datos incorrectos. No describir茅 la configuraci贸n y el funcionamiento del controlador aqu铆; toda la informaci贸n actual se actualizar谩 en GitHub .

Notas


En cuanto a la administraci贸n de la configuraci贸n del sistema (control del brillo de la luz de fondo, despertarse del modo de suspensi贸n, etc.), los diferentes dispositivos reaccionar谩n de manera diferente o no a los comandos. Debido a la gran variedad de dispositivos, versiones de SDK, firmware, es dif铆cil establecer un modelo de comportamiento por comando. Aqu铆 debe seleccionar la acci贸n de acuerdo con su dispositivo, por ejemplo, para que la mayor铆a de los dispositivos apaguen la pantalla (la env铆en a dormir) es suficiente para cambiar el tiempo de espera de la luz de fondo, pero en algunos dispositivos esto no funcionar谩. La misma situaci贸n con otras configuraciones del sistema, para la mayor铆a de los dispositivos, los cambios ocurrir谩n inmediatamente, pero para otros es necesario enviar el dispositivo a la suspensi贸n y luego despertarlo para que los cambios surtan efecto. Los problemas m谩s peque帽os de este tipo surgen con el SDK 19 (Android 4.4), pero eso no es exacto.) Adem谩s, no olvide que hay compatibilidad con Tasker, y si no tiene una funci贸n, puede agregarla e interactuar a trav茅s de la aplicaci贸n.

Source: https://habr.com/ru/post/443908/


All Articles