Controlando la Protopixel Mapping Tool usando OSC
Protopixel tiene una interfaz nativa de Open Sound Control expuesta en el puerto 2345.
Controlando contenidos estándar
Puedes afectar los contenidos en tu proyecto enviando mensajes OSC a este puerto. El esquema de dirección OSC es como sigue:
/<type>/<name>/<param> <value>
/<type>/<name>/<param>
Con esos parámetros:
-
<type>es el tipo de entidad, y en este momento solo puede serContent. -
<name>es el nombre de la entidad. -
<param>es el parámetro de la entidad a ser modificado. Puedes ver esos nombres de parámetros accediendo a la sección de Contenido en la WebApp. Si el parámetro está dentro de un grupo de parámetros, puedes usar/para separar el grupo del nombre del parámetro. Consulta los ejemplos. -
<value>es el nuevo valor del parámetro. Puede omitirse si el parámetro es un botón.
Obteniendo todos los parámetros de un contenido
CONTENT_NAME="color"
curl -H "Content-Type: application/json" -X POST \\
--data '{"command":"getSimpleConfContent", "args":["$CONTENT_NAME"]}' \\
<http://localhost:8181/api/v1/core/get> | python -m json.tool
{
"result": {
"Zone": "",
"color levels": [
255,
255,
255,
255
],
"enabled": true,
"lock_gui": false,
"params": {
"color": [
33,
87,
118,
255
]
},
"params_in_manager": false,
"projection parameters": {
"height": 1,
"width": 1
},
"projection type": "flatsimple",
"python script": "lib/programs/color.py",
"reload": null,
"renderable": true,
"save_params_in_mood": true,
"texture filtering": "linear",
"texture horizontal offset": 0,
"texture vertical offset": 0,
"uid": "4218023060"
}
}
Ejemplos de Mensajes OSC
# habilitar contenido
/Content/mycontent/enabled 1
# deshabilitar contenido
/Content/mycontent/enabled 0
# reproducir contenido de video
/Content/rainbow.mp4/params/play
# detener contenido de video
/Content/rainbow.mp4/params/stop
# cambiar color para un contenido de color (R, G, B, A)
/Content/color/params/color 255 100 100 255
Enviando OSC a scripts personalizados
Dentro de un script personalizado, puedes registrar un punto final OSC de esta manera:
@content.OSC("/acc")
def acceleration(x, y, z):
"""
This function handles OSC user input in address "/acc", with 3 arguments: x,y,z.Esta función maneja la entrada de usuario OSC en la dirección "/acc", con 3 argumentos: x, y, z.
Utiliza el decorador pl.OSC para definir manejadores como este. Varios scripts pueden escuchar la
misma dirección simultáneamente.
"""
global color2
r = normalize(x)
g = normalize(y)
b = normalize(z)
color2 = ofColor(r, g, b)
Por favor, ten en cuenta que si el número de argumentos enviados no coincide con la firma de la función, el mensaje no será entregado.
Enviando eventos a Espacios
Protopixel Spaces puede integrarse con otros elementos como sensores de presencia a través de su API.
La entrada de la API es la siguiente:
/api/v1/external/toggle/%button_name/%status
ejemplo:
curl <http://localhost:8181/api/v1/external/toggle/Button1/On>
Para vincularlo a una acción particular, ve al espacio *como Administrador* y selecciona Mis Reglas en el menú.
Puedes consultar la especificación de la API para ver la sintaxis de las consultas HTTP que puedes enviar a nuestro ecosistema.
Agregar un evento significa desencadenar un estado de ánimo desde un disparador externo a través de HTTP, la información enviada para ejecutar un disparador debe configurarse a través de HTTP.
Luego haz clic en Agregar regla → Agregar evento → Aprender y disparar el evento. Ahora puedes seleccionarlo.
Conectándolo a sensores
La forma habitual de hacer esto es utilizar Domoticz para configurar el Zwave y agregar un script:
- Ve a Configuración → Más opciones → Eventos.
- Usa el botón
/para crear un nuevo script y selecciona Lua → Dispositivo. - Pega el siguiente código.
- Actualiza la URL si es necesario.
BASE_URL = "<http://localhost:8181/api/v1/external/toggle/>"
commandArray = {}
-- loop through all the changed devices
for deviceName,deviceValue in pairs(devicechanged) do
deviceName = string.gsub(deviceName," ","%%20")
deviceValue = string.gsub(deviceValue," ","%%20")
commandArray[#commandArray+1] = { OpenURL = BASE_URL..deviceName.."/"..tostring(deviceValue) }
end
return commandArray
Comentarios
0 comentarios
Inicie sesión para dejar un comentario.