La store eedomus
De eedomus - Documentación
La Store eedomus es un espacio donde la comunidad eedomus puede compartir desarrollos.
Cualquier usuario puede proponer un "objeto conectado" diseñado en base a llamadas HTTP, scripts eedomus e iconos personalizados, con vistas a su publicación en la store.
Puede consultar la lista actual de los periféricos disponibles en la Store eedomus.
¿Cómo añadir en eedomus un periférico disponible en la Store eedomus?
Identifíquese en el portal eeedomus, vaya a Configuración / Añadir o eliminar un periférico / Store eedomus y finalmente haga clic en el periférico que quiera añadir para obtener más información.
Puede descargar las fuentes del periférico si desea saber cómo está diseñado, o aportarle mejoras y proponerlo de nuevo con vistas a su publicación en la Store en su versión mejorada, o incluso inspirarse en él para crear su propio periférico y ofrecerlo en la Store para su publicación.
En algunos casos se ofrece un enlace a un hilo del foro oficial eedomus donde la comunidad eedomus intercambia opiniones sobre este periférico en concreto.
Finalmente, pulse en Crear para añadir el periférico a su controlador eedomus.
¿Cómo crear un periférico para la Store eedomus?
Estructura de un periférico de la Store eedomus
Un periférico de la store eedomus se compone de varios elementos:
- 1 archivo JSON denominado eedomus_plugin.json en el que se describen los periféricos que se van a crear.
- 0 o varios scripts PHP eedomus.
- 0 o varias imágenes en formato PNG 128x128 en el subdirectorio /img
Ejemplo de structura del periférico Cumpleaños:
eedomus_plugin.json
Es el archivo principal, el que contiene la descripción de su periférico.
El nombre de este archivo debe ser necesariamente eedomus_plugin.json
Ejemplo de archivo eedomus_plugin.json para la gestión de cumpleaños:
Es posible crear actuadores HTTP y periféricos de múltiples "canales". Para ello, puede inspirarse en los scripts Smarter Coffee o Alertas meteorológicas.
Para asegurarse de que el contenido de su archivo JSON es válido, puede usar una herramienta online como ésta: https://jsonlint.com/
Estructura del archivo JSON
parameters
Esta sección describe los parámetros del formulario que parece en pantalla al crear el periférico.
parameter
- Nombre del parámetro. Debe ser único y se puede usar después mediante plugin.parameter.xxx
description
- Texto que aparece a la izquierda del parámetro.
default_value
- Valor por defecto ya introducido en el campo.
xtype
- Tipo de campo: textfield, numberfield, combo, displayfield, checkbox
field
- Configuración del contenido del campo. Ejemplo: with:400, allowBlank:false
Ejemplo de uso de expresiones regulares en un "textfield"
{ "parameter": "MAC", "description": "Dirección Mac del equipo", "xtype": "textfield", "default_value": "", "field": "allowBlank: false , maskRe:/[0-9A-Da-d:]/, maxLength:17, minLength:17, width: 250, regex:/^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$/, regexText:'Adresse MAC invalide, format AA:AA:AA:AA:AA:AA'" }
Ejemplo de uso de un "numberfield"
{ "parameter": "PORT", "description": "Puerto HTTP", "xtype": "numberfield", "default_value": "80", "field": "minValue:0, allowDecimals:false, width:60, allowBlank:false" },
Detalle para la creación de listas (Combo)
Nuevo: Ahora se pueden crear listas con valores predefinidos. Ejemplo:
{ "parameter": "ZONE_EJP", "description": "Zona EJP", "xtype": "combo", "field": "width:200, allowBlank:false, store:[['nord', 'Nord'], ['ouest', 'Ouest'], ['paca', 'PACA'], ['sud', 'Sud']], triggerAction: 'all'" }
Si quiere que aparezcan todos los periféricos debe usar /json/list_all.php
Esta lista se puede acotar con parámetros que se pueden añadir en la URL.
Ejemplo de parámetros
- value_type=float
- value_type=list
- filter_unit=W,kW
- actuator_only=1
- sensor_only=1
devices
Tabla con los periféricos que se deben crear.
device_id
- Identificador único del periférico, con letras y cifras en minúsculas.
parent_id
- Identificador padre del periférico. Permite vincular distintos periféricos entre sí para que sea más fácil gestionarlos creando un "canal"
module_id
- Tipo de periférico que se debe crear
- 11 estado genérico
- 51 sensor HTTP
- 41 actuador HTTP
- 31 geolocalización
name
- Nombre del periférico. Con plugin.name podrá usar el nombre introducido por el usuario al crear el periférico.
Nuevo: Los campos create y enable, que pueden tener el valor 0 o 1 o el valor de plugin.parameters.xxx, permiten crear o activar únicamente los canales deseados para un periférico.
Se puede invertir el valor con el carácter "!". Ejemplo: !plugin.parameters.xxx
De esta forma puede añadir un parámetro de tipo combo cuyo valor servirá para crear/visualizar o no un canal opcional del periférico.
create
- 1 o 0. Crea o no el periférico
enable
- 1 o 0. El periférico se crea pero se puede activar o no (cuando el periférico está desactivado, no aparece)
rules
Nuevo: Ahora se pueden crear automáticamente reglas desde el JSON (puede ver un ejemplo en el script denominado Doble detección).
Ejemplo:
"rules": [ { "name_fr": "plugin.name - Sincro Detector 1 - plugin.parameters.NAME1", "criterias": [ { "device_id": "plugin.parameters.API1", "type": "c" } ], "actions": [ { "device_id": "plugin.devices.detect1", "type": "other", "action": "plugin.parameters.API1"} ] } ]
name_fr
- Nombre de la regla. Puede contener tags de tipo plugin.name o plugin.parameters.xxx
criterias
- Tabla con los criterios de las reglas. Puede contener 0 a N valores (0 valor para una regla de tipo CRON, se implementará en el futuro).
- device_id
- Códido API del periférico. Entero o plugin.parameters.xxx
- type
- e está
- t ahora es
- u se vuelve
- d ahora se vuelve
- a no ha
- c cambia de valor
- i fue
- criteria
- == igual a
- < de menos de
- > mayor que
- ! es diferente de
- M== igual al periférico
- M< inferior al periférico
- M> mayor que el periférico
- M! es diferente del periférico
- ch cambiado desde
- hb contactado con el servidor desde
- g< de menos de
- g> mayor que
- macro en curso de macro
- macr! no en curso de macro
- target
- Valor objetivo o código API del periférico. Entero o plugin.parameters.xxx
- operation
- AND Y (por defecto si no está indicado en el JSON)
- OR o
actions
- Tabla con las acciones que se deben ejecutar cuando los criterios se cumplen. Puede contener 1 a N valores.
- device_id
- Códido API del periférico. Entero o plugin.parameters.xxx
- type
- direct Acción directa (ejemplo: 0 para Off)
- macro Ejecutar una macro
- other El periférico toma el valor de otro periférico
- action
- Valor objetivo o código API del periférico o código API de la macro. Entero o plugin.parameters.xxx
Script(s)
Su periférico puede llamar a varios scripts eedomus o a ninguno.
Consulte la documentación relativa a los scripts para saber cómo crearlos o inspírese en los periféricos ya disponibles en la Store descargando las fuentes correspondientes.
Imágenes
Las imágenes referenciadas en eedomus_plugin.json pueden ser imágenes a las que tiene acceso cualquier usuario de eedomus (en el navegador, haga clic con el botón derecho en Copiar la dirección de la imagen y conserve únicamente el nombre que va después de "/").
Ejemplo para:
El enlace original es https://secure.eedomus.com/img/mdm/01/smoke_ok.png''. En '''eedomus_plugin.json' la imagen será smoke_ok.png
También es posible cargar imágenes en el directorio /img del zip. En ese caso, basta con referenciarlas en eedomus_plugin.json por su nombre.
¿Cómo proponer un script con vistas a su publicación en la Store?
En la store eedomus, haga clic en el enlace Publicar en la store (arriba a la derecha).
Luego haga clic en Examinar y elija el archivo con extensión .zip que contiene su periférico. Finalmente, haga clic en Enviar.
El script estará disponible inmediatamente en modo Privado para el usuario, por lo que puede usarlo para sus propias necesidades.
Después puede proponer el script con vistas a su publicación haciendo clic en Publicar.
El equipo de eedomus revisará su solicitud de publicación lo antes posible y le informará por mail de la publicación de su script. Si el script no se puede publicar tal cual, el equipo de eedomus se pondrá en contacto con usted por mail para discutir sobre los ajustes necesarios.
Una vez publicado, las modificaciones posteriores del script (correcciones de errores, mejoras) ya no necesitarán validación por parte del equipo de eedomus ya que usted es el autor original del script.
En otras palabras, puede corregir o mejorar sin problema cualquier script del que usted no sea el autor, pero en ese caso se requiere una validación previa por motivos de seguridad.