Complemento de script

Complemento que permite ejecutar scripts (shell, php, ruby …), solicitudes http, para recuperar información en XML o JSON.

Configuración del plugin

La configuración es muy simple, después de descargar el complemento, solo necesita activarlo y listo.

configuration

La única opción es donde jeedom pone los scripts por defecto, se recomienda no tocarlos.

Configuración del equipo

Se puede acceder a la configuración del equipo Script desde el menú de complementos / Programación

Así es como se ve la página del complemento de Script (aquí ya con el equipo) :

liste des équipements

Aquí está la lista de sus guiones. Una vez que haces clic en un equipo, obtienes :

équipement

Aquí encontrarás toda la configuración de tu equipo :

commandes Aquí encontrarás la lista de pedidos :

Importante

Se deben evitar los caracteres especiales en la ruta del script o en sus parámetros tanto como sea posible. Los caracteres permitidos son : números, letras (mayúsculas o minúsculas))

Importante

Puede en el campo de solicitud (para http, json, xml) poner json, solo tiene que precederlo con json::, ejemplo json::{"clef":"valeur"}

exemple

Se usa para llamar a una URL o recuperar el retorno de una URL.

La elección de HTML

Guión HTML

Le permite pasar una página web (archivo HTML) para recuperar un valor anterior. La sintaxis es la misma que para jquery.

El campo de opción tiene un campo “URL de archivo HTML”” : Por lo tanto, este campo contiene el enlace a la máquina que aloja el archivo HTML en cuestión.

La elección XML

Guión XML

Le permite recuperar xml y buscar específicamente un valor en él.

El campo de opción tiene un campo “URL del archivo XML”” : este campo contiene el enlace a la máquina que aloja el archivo XML en cuestión.

Importante

Solo se pueden recuperar los valores, no se pueden recuperar los atributos.

La elección de JSON

Guión JSON

Permite recuperar json y buscar específicamente un valor en él.

El campo de opción tiene un campo “URL de archivo JSON”” : este campo, por lo tanto, contiene el enlace a la máquina que aloja el archivo JSON en cuestión.

Exemples

Http : Pilotando una Vera

El ejemplo se basa en una Vera y consiste en conducir una bombilla regulable. No me detendré en cómo controlar una Vera por solicitud http, el foro de TLD está lleno de respuestas. Además, el ejemplo corresponde a mi tipo de material y tendrá que adaptarse al suyo.

Punta

Un método para quienes buscan a tientas escribir solicitudes http, primero valide la sintaxis en su navegador y solo luego vaya a la configuración en Jeedom. Cuando una secuencia de comandos de Acción no funciona, cambiar a la secuencia de comandos Información / Otro le permite ver el error devuelto.

Vamos a ir :

Explicaciones :

''url http://<IP_VERA>:3480/data_request?id=lu_action&output_format=json&DeviceNum=12&serviceId=urn:upnp-org:serviceId:Dimming1&action=SetLoadLevelTarget&newLoadlevelTarget=100 ‘’

Punta

el “100” al final de la solicitud corresponde al porcentaje de potencia que se asignará, por lo que poner “0” al final de la solicitud corresponde a apagar la bombilla.

El botón “probar” le permite probar su pedido !

Por lo tanto, puede multiplicar pedidos en el mismo equipo, por ejemplo, haciendo un pedido al 60% para luz tenue, creando un tercero al 30% para viajes nocturnos que se combinarán en un escenario, etc

También es posible crear un comando de tipo slider colocando la etiqueta #slider# en la consulta :

''url http://<IP_VERA>:3480/data_request?id=lu_action&output_format=json&DeviceNum=12&serviceId=urn:upnp-org:serviceId:Dimming1&action=SetLoadLevelTarget&newLoadlevelTarget=#slider# ‘’

Punta

Si tu comando es de tipo mensaje puedes usar las etiquetas #message# y #title#, lo mismo para un comando de tipo de color con la etiqueta #color#, o tipo de control deslizante con #slider# o lista con #select#

Http : Enviar notificación a XBMC

Objetivo : Enviar una notificación a XBMC al abrir una puerta principal.

''url http://IP_DE_XBMC:8080/jsonrpc?request={ %22jsonrpc%22:%222.0%22,%22method%22:%22GUI.ShowNotification%22,%22params%22:{ %22title%22:%22Mouvement% 20Détecté%22,%22message%22:%22Porte% 20Entrée%22},%22id%22:1} ‘’

Depende de usted probar esto en un escenario, por ejemplo !

API XBMC aquí (solo los campos marcados como “obligatorios” son obligatorios)

Objetivo : Enviar una notificación a XBMC cuando la temperatura descienda por debajo de cierto umbral

Toma el ejemplo de arriba :

Prueba en un escenario #[EXTERIEUR][EXTERIEUR][TEMPERATURE]# < 5 par exemple

Acción : Inicie el script, a través de un equipo virtual, vinculado a su script !

SCRIPT

El más bonito pero no el más fácil de explicar.

Prerrequisitos : saber cómo desarrollar un script en php, python, perl o ruby.

Importante

La extensión de su script debe coincidir absolutamente con su tipo. De hecho, Jeedom se basa en la extensión del script para que se ejecute el ejecutable

Si su nombre de archivo no contiene :

  • .php .py .pl .rb

El complemento de script iniciará un shell que lo ejecutará según la directiva de la primera línea (shebang ). Ejemplo :

''bash #!/ bin / csh -f #!/ bin / ksh #!/ usr / bin / env python3 #!/ usr / bin / env php #!/ usr / bin / env nodo Etcétera ... ‘’

El script de monitoreo de temperatura de Raspberry servirá como un ejemplo para usar el tipo de script : Script

Después de descargar el script, el botón “Examinar” le permite seleccionar el archivo temp_rasp.php.

Por curiosidad, puede ir y ver el contenido del archivo presionando el botón “Editar”, debe obtener el siguiente código :

Este es un script php que se puede reutilizar fuera de Jeedom !

''php <?php $temp = shell_exec("cat /sys/class/thermal/thermal_zone0/temp"); $temp = $temp / 1000; $temp = round($temp,1); echo $temp; ?> ‘’

Nota : concretamente, es la función php “echo” la que le dará el valor a Jeedom

Los parámetros

Obtenga la información de Jeedom para usarla en un script. La recuperación depende del tipo de script utilizado :

Recomendación para probar los parámetros en el script php :

''php si (isset($argv)) { foreach ($argv como $arg) { $argList = explode('=', $arg); si (isset($argList[0]) && isset($argList[1])) { $_GET[$argList[0]] = $argList[1]; } } } ‘’

XSolo ML

Aquí está el formato del XML estándar :

`` ‘‘xml

1 toto

`` ‘’

Si desea el valor de led0 en la consulta, coloque led0. Si vous voulez la valeur de la led1 qui est le fils de leds vous mettez leds > led1.

Notez que l’élément racine <root> n’est pas à préciser dans le champ Petición.

XML complejo

`` ‘‘xml

1 toto tata

`` ‘’

La sintaxis es :

leds > 1 > led1 que da tata en respuesta, siendo 1 el número de fila de la matriz !

XML más complejo

`` ‘‘xml

Tresa - Ponte Tresa, Rocchetta 01.05.2017 18:50 268.56 268.51 0.051 268.52 268.56 268.50 Inn - Tarasp 01.05.2017 18:50 4.85 7.98 -3.130 6.15 7.98 4.85 Doubs - Combe des Sarrasins 01.05.2017 18:00 500.65 500.65 0.000 500.65 500.65 500.64

`` ‘’

Para recuperar información del campo Wert del primer bloque:

MesPar>0>Wert>0 que por lo tanto devuelve “268.56 “

Para devolver el siguiente elemento en la “estructura” de Wert, solo tiene que indicar el número de pedido en la estructura. Lo que da para el elemento <Wert Typ="delta24"> 0.051</Wert> el siguiente código :

MesPar>1>Wert>2

Para pasar al siguiente bloque “MyPar”, debe cambiar el índice en consecuencia : el 1 por 2, por ejemplo.

Atención : Si el orden cambia en el archivo XML, la solicitud ya no funciona. Será necesario reajustar la solicitud de acuerdo con el pedido devuelto.

JSON

Al igual que el tipo XML, es posible leer información de un retorno JSON.

Para explicarlo, me basaré en información JSON con la aplicación Sickbeard (bouh … cpasbien) pero aquí solo la técnica es primordial, no la herramienta!

El acceso a este archivo es posible utilizando la siguiente URL :

http://<IP_DELAMACHINEQUIEBERGESICKBEARD>:8083/api/XXXX/?cmd=historiallimit=3

Nota : XXXX es el número de clave API específico de cada SICKBEARD.

En primer lugar, antes de iniciar la configuración del complemento de script JSON, se trata de identificar correctamente la información para recuperar., porque aquí vamos a integrar una noción de matriz en los retornos.

Valide la visualización de información desde su navegador (prueba en Chrome).

Ejemplo de devolución :

''json { "data": [ { "date": "2014-09-10 01:37", "episode": 4, "provider": "RNT", "quality": "SD-TV", "resource": "XXX", "recurso_ruta": "XXXX", "season": 2, "mostrar nombre": "Totovaalaplage T2E4", "status": "Downloaded", "tvdbid": XXXXX }, { "date": "2014-09-10 01:36", "episode": 3, "provider": "RNT", "quality": "SD-TV", "resource": "XXXX", "recurso_ruta": "XXX", "season": 2, "mostrar nombre": "Totovaalaplage T2E3", "status": "Downloaded", "tvdbid": XXXXX }, { "date": "2014-09-10 01:21", "episode": 1, "provider": "Cpasbien", "quality": "SD-TV", "resource": "XXXX", "recurso_ruta": "XXXX", "season": 1, AQUÍ --> "mostrar_nombre": "Totovaplusauski pero Totovaalaplage S1E1", "status": "Snatched", "tvdbid": XXXX } ], "message": "", "result": "success" } ‘’

En la hipótesis en la que nos gustaría devolver el show_name del tercer elemento en php (marcado AQUÍ), tendríamos que hacer : data> 2> show_name, el índice de matriz de retorno que comienza en Cero.

En este ejemplo, el botón “Prueba” devolverá “Totovaplusauski pero Totovaalaplage S1E1”.

Aclaraciones :

Tenga en cuenta la sintaxis del comando Consulta, es de tipo element0> array index> element1

Desventajas :

HTML

Aquí intentaremos recuperar el último FML.

Primero necesitas configurar la url :

http://www.viedemerde.fr

Entonces tienes que encontrar el “camino” de la última FML. Para hacer esto, vaya al sitio, luego haga clic derecho en el elemento deseado y luego inspeccione el elemento, obtendrá :

Ejemplo HTML 1

Esta es la parte más compleja y requiere un pequeño análisis. Aquí mi texto está en una etiqueta “a” que está en un elemento de tipo p que es un artículo de publicación de clase div “”. Así que tengo que seleccionar el primer elemento div de la clase “post” y “article”, luego el primer elemento p y obtengo todo en las etiquetas “a” que contiene. Entonces tengo : “div.post.article:primero p:primero un”.

Entonces obtenemos :

Ejemplo HTML VDM

Para una actualización en tiempo real, es posible poner una actualización cron.

Punta

Al instalar un cron de actualización, Jeedom marcará automáticamente la casilla Evento, esto es completamente normal.

Aquí puedes imaginar un escenario que te envía por SMS la última FML.

Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site web. Si vous continuez à utiliser ce site, nous supposerons que vous en êtes satisfait.