HC2 - variables y variables predefinidas

Jfco

  • ****
  • 293
  • Mas de 10 años con X10 y ahora me paso a Z-Wave!!
    • Ver Perfil
    • La Séptima Ruta
Re:HC2 - variables y variables predefinidas
« Respuesta #15 en: Abril 15, 2015, 22:49:29 pm »
Creo que en la segunda escena deberías poner 0 en el tiempo, en lugar de 90.

Y en la primera, deberías continuar con Y extractor aseo = off 90
Así en una sola escena tienes el encendido y el apagado.



Enviado desde mi iPhone utilizando Tapatalk
Mas de 10 años con X10 y ahora me paso a Z-Wave!! Ya me vale..

linkey

  • *****
  • 609
    • Ver Perfil
Re:HC2 - variables y variables predefinidas
« Respuesta #16 en: Abril 15, 2015, 23:04:15 pm »
Pues estaba equivocado y la solución no era invertir los tiempos. Es peor aún pues al cruzarse los tiempos, antes de que acabe la escena de encendido de 90 s, acaba la de apagado de 60 s y el extractor se queda encendido de por vida.

La verdad es que no se me ocurre nada para algo tan simple.
Usar LUA

linkey

  • *****
  • 609
    • Ver Perfil
Re:HC2 - variables y variables predefinidas
« Respuesta #17 en: Abril 15, 2015, 23:11:42 pm »
Donde dice
xx value
sustituye xx por el número id del dispositivo de la luz del aseo
y el resto de xx de las 4 primeras líneas como se indica en el código
Código: [Seleccionar]
--[[
%% properties
xx value
%% globals
--]]

local luzAseo = xx --pon aquí el número id del dispositivo
local extractor = xx --pon aquí el número id del dispositivo
tiempoEncendido = xx --pon aquí el tiempo(seg)de espera hasta encender
tiempoApagado = xx --pon aquí el tiempo(seg) para apagar a partir del encendido

local startSource = fibaro:getSourceTrigger()

if (tonumber(fibaro:getValue(luzAseo, "value")) > 0) or
   (startSource["type"] == "other") then
  fibaro:sleep(tiempoEncendido*1000)
  if (tonumber(fibaro:getValue(luzAseo, "value")) > 0) then
    fibaro:call(extractor, "turnOn")
    fibaro:sleep(tiempoApagado*1000)
    fibaro:call(extractor, "turnOff")
  end
end

Jokin

  • *****
  • 1920
  • Meliorem domum
    • Ver Perfil
Re:HC2 - variables y variables predefinidas
« Respuesta #18 en: Abril 16, 2015, 15:04:52 pm »
Estoy deseando probar ambas sugerencias. Esta noche os cuento.

linkey, cómo se podría programas en Lua una escena que hiciera algo tan sencillo como:

Si la placa de inducción está encendida por más de 15 min (--esto es que mi mujer está cocinando en serio y esperaría que generara olores en toda la casa--), se encienda el extractor general de la casa por 60 min (--independientemente de si la placa de inducción está 16 min o 45 min encendidad--).

En esta escena entra también el tiempo como en las anteriores pero de una forma diferente porque lo importante es que salte sólo si la placa está encida durante al menos 15 min.

Gracias,
Jokin

linkey

  • *****
  • 609
    • Ver Perfil
Re:HC2 - variables y variables predefinidas
« Respuesta #19 en: Abril 16, 2015, 17:11:36 pm »
Estoy deseando probar ambas sugerencias. Esta noche os cuento.

linkey, cómo se podría programas en Lua una escena que hiciera algo tan sencillo como:

Si la placa de inducción está encendida por más de 15 min (--esto es que mi mujer está cocinando en serio y esperaría que generara olores en toda la casa--), se encienda el extractor general de la casa por 60 min (--independientemente de si la placa de inducción está 16 min o 45 min encendidad--).

En esta escena entra también el tiempo como en las anteriores pero de una forma diferente porque lo importante es que salte sólo si la placa está encida durante al menos 15 min.

Gracias,
Jokin
Tienes la placa de inducción conectada a un interruptor z-wave?, está normalmente apagado el interruptor y lo enciendes para cocinar?. o está normalmente encendido y solo pulsas el botón de la placa?. en este segundo caso habría que esperar que el interruptor tuviera medida de consumo para saber si la placa está en uso.


linkey

  • *****
  • 609
    • Ver Perfil
Re:HC2 - variables y variables predefinidas
« Respuesta #20 en: Abril 16, 2015, 18:09:10 pm »
Esta escena puede plantearse que  salte cuando se produce el evento de encendido (o cambio de consumo) de la placa y otro incorporar el control a una escena que se ejecuta automáticamente y tiene un bucle en el que se chequean

Esta escena es la misma que la anterior, se lanza cuando se produce el evento de encendido (o cambio de consumo) de la placa, se esperan 15min y si sigue encendida se enciende el extractor .
Pudiera ocurrir que apagues la placa antes de 15min (la escena sigue corriendo) y la enciendas de nuevo antes de 15min, entonces pasan los 15min desde el primer encendido y saltaría el extractor. Para esto, cuando pasan los 15min ademas de comprobar que la placa está encendida miramos si hay otra escena en ejecución.
-- si se inicia otra escena igual, esta se suicida
if fibaro:countScenes() > 1 then
  fibaro:abort()
end

Algo así:
Código: [Seleccionar]
--[[
%% properties
xx value
%% globals
--]]

local dispActuador = xx --pon aquí el número id del dispositivo que inicia la acción
local dispActuado = xx --pon aquí el número id del dispositivo destino de la accion
tiempoEncendido = xx --pon aquí el tiempo(seg)de espera hasta comprobar encendido
tiempoApagado = xx --pon aquí el tiempo(seg) para apagar a partir del encendido

local startSource = fibaro:getSourceTrigger()

if (tonumber(fibaro:getValue(dispActuador, "value")) > 0) or
   (startSource["type"] == "other") then
  fibaro:sleep(tiempoEncendido*1000)
  - si se inicia otra escena igual esta se suicida
  if fibaro:countScenes() > 1 then
    fibaro:abort()
  end
  if (tonumber(fibaro:getValue(dispActuador, "value")) > 0) then
    fibaro:call(dispActuado, "turnOn")
    fibaro:sleep(tiempoApagado*1000)
    fibaro:call(dispActuado, "turnOff")
  end
end

Jokin

  • *****
  • 1920
  • Meliorem domum
    • Ver Perfil
Re:HC2 - variables y variables predefinidas
« Respuesta #21 en: Abril 16, 2015, 19:01:56 pm »
La escena Lua del baño y extractor funciona perfectamente y soluciona el problema de encender y apagar antes de un minuto.

La sugerencia de jfco de añadir el OFF en la misma escena y poner cero en la escena de OFF tampoco funciona si enciendo y apago antes de los 60 s.

Me quedo con la escena Lua aunque aún ando descifrando el significado, lo conseguiré.

Respecto a lo de la placa de inducción, te respondo linkey:

La placa tiene un interruptor Aeon de 40A (no se podía más pequeño al tener 25A la placa) y tiene medida de consumo.
La escena de Lua la has diseñado en el caso de que se encienda cada vez y no como mi caso que está permanentemente encendido y tendría que "preguntar" si está 15 min consumiendo. En ese caso cómo quedaría la escena Lua?

Linkey, no te has planteado dar un cursillo on line de Lua para domótica? Yo lo pagaría encantado.

linkey

  • *****
  • 609
    • Ver Perfil
Re:HC2 - variables y variables predefinidas
« Respuesta #22 en: Abril 17, 2015, 00:12:53 am »
Habría que averiguar que propiedad nos puede indicar el consumo de la placa, ahora mismo desconozco como obtenerlo del relé Aeon que comentas.
Para investigar, una vez abierto el panel de gestión del HC en un navegado, abre otra pestaña (sin cerrar la anterior) e introduce la misma URL pero cambiando el final quitas desde fibaro/ incluido hasta el final y lo sustituyes por api/devices/id, siendo id el número id del relé de Aeon en tu HC. (ej. http://192.168.1.xx/api/devices/50) Te aparecerá la descripción completa del dispositivo en formato JSON, algo así (he probado con un enchufe de fibaro)
Código: [Seleccionar]
{"id":62,"name":"Enchufe SAI","roomID":4,"type":"com.fibaro.FGWP101","baseType":"com.fibaro.binarySwitch","enabled":true,
"visible":true,"isPlugin":false,"parentId":250,"remoteGatewayId":0,"interfaces":["energy","power","zwave","zwaveAlarm"],"properties":...
Busca una cadena que contenga el consumo de ese instante, en mi caso he encontrado una cadena que contiene el consumo actual "power":"171.60"
Por lo que entiendo que la propiedad es 'power' y podría consultar el consumo con :
fibaro:getValue(62, "power")

Para usar LUA en escenas:
http://www.lua.org/manual/5.1/es/
http://www.fibarouk.co.uk/support/lua/

Re:HC2 - variables y variables predefinidas
« Respuesta #23 en: Abril 17, 2015, 22:01:29 pm »
Hola, linkey:

Esto es lo que pone cuando la placa está apagada:

{"id":127,"name":"Placa de inducción","roomID":3,"type":"com.fibaro.binarySwitch","baseType":"com.fibaro.actor","enabled":true,"visible":true,"isPlugin":false,"parentId":317,"remoteGatewayId":0,"interfaces":["energy","power","zwave"],"properties":{"parameters":[],"associationSet":[{"devices":[1],"groupID":1},{"devices":[1],"groupID":2}],"associationView":[{"devices":[1],"groupID":1},{"devices":[1],"groupID":2}],"zwaveCompany":"Aeon Labs","zwaveInfo":"3,3,92","zwaveVersion":"","pollingTimeSec":0,"configured":"true","dead":"false","deviceControlType":"20","deviceIcon":"1002","emailNotificationID":"0","emailNotificationType":"0","endPointId":"0","energy":"1.98","liliOffCommand":"","liliOnCommand":"","log":"","logTemp":"","manufacturer":"","markAsDead":"true","model":"","nodeId":"49","parametersTemplate":"0","power":"0.00","productInfo":"0,134,0,3,0,78,1,25","pushNotificationID":"0","pushNotificationType":"0","remoteGatewayId":"0","saveLogs":"true","showEnergy":"true","smsNotificationID":"0","smsNotificationType":"0","useTemplate":"false","userDescription":"","value":"true"},"actions":{"reconfigure":0,"reset":0,"turnOff":0,"turnOn":0},"created":1429212844,"modified":1429212844,"sortOrder":13}

Y esto al encenderla al 7 durante unos segundos:

{"id":127,"name":"Placa de inducción","roomID":3,"type":"com.fibaro.binarySwitch","baseType":"com.fibaro.actor","enabled":true,"visible":true,"isPlugin":false,"parentId":317,"remoteGatewayId":0,"interfaces":["energy","power","zwave"],"properties":{"parameters":[],"associationSet":[{"devices":[1],"groupID":1},{"devices":[1],"groupID":2}],"associationView":[{"devices":[1],"groupID":1},{"devices":[1],"groupID":2}],"zwaveCompany":"Aeon Labs","zwaveInfo":"3,3,92","zwaveVersion":"","pollingTimeSec":0,"configured":"true","dead":"false","deviceControlType":"20","deviceIcon":"1002","emailNotificationID":"0","emailNotificationType":"0","endPointId":"0","energy":"1.98","liliOffCommand":"","liliOnCommand":"","log":"","logTemp":"","manufacturer":"","markAsDead":"true","model":"","nodeId":"49","parametersTemplate":"0","power":"0.00","productInfo":"0,134,0,3,0,78,1,25","pushNotificationID":"0","pushNotificationType":"0","remoteGatewayId":"0","saveLogs":"true","showEnergy":"true","smsNotificationID":"0","smsNotificationType":"0","useTemplate":"false","userDescription":"","value":"true"},"actions":{"reconfigure":0,"reset":0,"turnOff":0,"turnOn":0},"created":1429212844,"modified":1429212844,"sortOrder":13}

No sé si esto te ayuda a encontrar la cadena que se necesita.




Enviado desde mi iPhone utilizando Tapatalk

linkey

  • *****
  • 609
    • Ver Perfil
Re:HC2 - variables y variables predefinidas
« Respuesta #24 en: Abril 18, 2015, 12:58:02 pm »
Hola, linkey:

Esto es lo que pone cuando la placa está apagada:

{"id":127,"name":"Placa de inducción","roomID":3,"type":"com.fibaro.binarySwitch","baseType":"com.fibaro.actor","enabled":true,"visible":true,"isPlugin":false,"parentId":317,"remoteGatewayId":0,"interfaces":["energy","power","zwave"],"properties":{"parameters":[],"associationSet":[{"devices":[1],"groupID":1},{"devices":[1],"groupID":2}],"associationView":[{"devices":[1],"groupID":1},{"devices":[1],"groupID":2}],"zwaveCompany":"Aeon Labs","zwaveInfo":"3,3,92","zwaveVersion":"","pollingTimeSec":0,"configured":"true","dead":"false","deviceControlType":"20","deviceIcon":"1002","emailNotificationID":"0","emailNotificationType":"0","endPointId":"0","energy":"1.98","liliOffCommand":"","liliOnCommand":"","log":"","logTemp":"","manufacturer":"","markAsDead":"true","model":"","nodeId":"49","parametersTemplate":"0","power":"0.00","productInfo":"0,134,0,3,0,78,1,25","pushNotificationID":"0","pushNotificationType":"0","remoteGatewayId":"0","saveLogs":"true","showEnergy":"true","smsNotificationID":"0","smsNotificationType":"0","useTemplate":"false","userDescription":"","value":"true"},"actions":{"reconfigure":0,"reset":0,"turnOff":0,"turnOn":0},"created":1429212844,"modified":1429212844,"sortOrder":13}

Y esto al encenderla al 7 durante unos segundos:

{"id":127,"name":"Placa de inducción","roomID":3,"type":"com.fibaro.binarySwitch","baseType":"com.fibaro.actor","enabled":true,"visible":true,"isPlugin":false,"parentId":317,"remoteGatewayId":0,"interfaces":["energy","power","zwave"],"properties":{"parameters":[],"associationSet":[{"devices":[1],"groupID":1},{"devices":[1],"groupID":2}],"associationView":[{"devices":[1],"groupID":1},{"devices":[1],"groupID":2}],"zwaveCompany":"Aeon Labs","zwaveInfo":"3,3,92","zwaveVersion":"","pollingTimeSec":0,"configured":"true","dead":"false","deviceControlType":"20","deviceIcon":"1002","emailNotificationID":"0","emailNotificationType":"0","endPointId":"0","energy":"1.98","liliOffCommand":"","liliOnCommand":"","log":"","logTemp":"","manufacturer":"","markAsDead":"true","model":"","nodeId":"49","parametersTemplate":"0","power":"0.00","productInfo":"0,134,0,3,0,78,1,25","pushNotificationID":"0","pushNotificationType":"0","remoteGatewayId":"0","saveLogs":"true","showEnergy":"true","smsNotificationID":"0","smsNotificationType":"0","useTemplate":"false","userDescription":"","value":"true"},"actions":{"reconfigure":0,"reset":0,"turnOff":0,"turnOn":0},"created":1429212844,"modified":1429212844,"sortOrder":13}
Pues no veo nada relativo al consumo.
No se, a ver que se me ocurre

Re:HC2 - variables y variables predefinidas
« Respuesta #25 en: Abril 18, 2015, 22:33:32 pm »
Mientras te pongo a prueba con lo de la placa de inducción, te pregunto alguna otra cosa que es más fácil seguro.
Cuál sería la mejor forma de hacer la siguiente escena.

En la cocina tengo un ojo de halcón que cuando entras por la noche enciente una tira de LED que tengo en los armarios de la cocina. Se apagan al minuto y lo utilizo para cuando por la noche o muy pronto por la mañana (de noche) llegas a la cocina para algo rápido y te vas, todo sin tocar un interruptor.
Lo que quiero implementar y no sé cómo es que si la luz principal o secundaria de la cocina o ambas están encendidas, esta escena de las tiras LEDs no se active y si este evento de encender alguna de las dos luces (principal y/o secundaria) se activa cuando las tiras LEDs se hayan encendido, éstas se apaguen terminando la escena. Esto es para que uno decida encendiendo las luces de la cocina que la escena controlada con el movimiento deje de funcionar y que solo funciona si la cocina permanece a oscuras (sin interruptores encendidos).


Sent from my iPad using Tapatalk

linkey

  • *****
  • 609
    • Ver Perfil
Re:HC2 - variables y variables predefinidas
« Respuesta #26 en: Abril 20, 2015, 19:58:53 pm »
No se me ocurre como hacer lo de la placa de inducción sin encontrar la propiedad que represente el consumo, pero en compensación te trato de explicar como se haría la escena que quieres para encender la tira de leds para que en el futuro lo intentes tu

Las escenas se ejecutan por tres motivos y pueden comenzar y terminar o quedarse en ejecución hasta un determinado momento o para siempre.
1.- Al inicio, que significa que se ejecuta en cuanto se graba o al inicio del HC
2.- Manualmente, cuando pulsas el botón Ejecutar
3.- Se lanza un evento,
  1.- por cambio del valor de una propiedad de algún dispositivo
  2.- por cambio del valor de una variable global.

Al principio de la escena en un comentario se declara el tipo de ejecución.
—[[
%%autostart
%%properties
id value
%%global
varname
—]]

Tomando como ejemplo la escena que propones,
1 Cuando se detecta presencia se enciende la tira de led
   Condición, que este apagada la Luz1 y que esté apagada la Luz2
2 Cuando se enciende Luz1 o Luz2 se apaga la tira de led

Intervienen 4 dispositivos, Luz1, Luz2, Led y Presencia.
3 de ellos son lanzadores de la escena,
  Presencia,  Luz1 y Luz2
2 intervienen en una condición
 Luz1 y Luz2
1 es objeto de una actuación.
 Led

—[[
%%properties
id value — id y propiedad de Luz1
id value — id y propiedad del Luz2
id value — id y propiedad de Presencia
—]]
Cuando cambie la propiedad ‘value’ de cualquiera de los dispositivos declarado, se ejecutará la escena.

Capturar el origen que inició la escena en una variable local
local trigger = fibaro:getSourceTrigger()
Si es por cambio de alguna propiedad
  if (trigger['type'] == 'property') then
comprobar si lo ha lanzado el detector de presencia o alguna de las luces y realizar las acciones según proceda y si se cumplen las condiciones
Condición la Luz1 o la Luz2 está encendida y el led está apagado

sustituye en el código
pon el id de la luz principal  donde xx
pon el id de la luz secundaria  donde yy
pon el id del detector de presencia  donde zz
pon el id de la tira de leds donde pp
pon el tiempo para apagar los lees desde tt

Código: [Seleccionar]
--[[
%% properties
xx value
yy value
zz value
--]]

local id_luz1 = xx
local id_luz2 = yy
local id_presencia = zz
local id_led = pp
local tiempoApagado = tt

-- funciona para saber si un dispositivo está activo
function _esActivo(id)
  if (fibaro:getValue(id, "value") ~= nill and
  tonumber(fibaro:getValue(id, "value")) > 0) then
    return true
  end
  return false
end

-- obtener el origen del inicio de la escena
local startSource = fibaro:getSourceTrigger()
-- si se lánzo por un dispositivo ...
if (startSource["type"] == "property") then

  -- obtener el dispositivo que lanzó la escena
  local sourceDevice = startSource['deviceID']

  -- Si se detecta presencia, no hay luzces encendidas
  -- y la tira de les está apagada
  if (sourceDevice == id_presencia) and
     not _esActivo(id_luz1) and
     not _esActivo(id_luz2) and
     not _esActivo(id_led) then
    -- encender la tira de led
    fibaro:debug('encender tira de leds')
    fibaro:call(id_led, "turnOn")
    -- esperar
    fibaro:sleep(100=*tiempoApagado)
    -- si sigue encendido apagar
    if _esActivo(id_led) then
     fibaro:debug('apagar tira de leds')
     fibaro:call(id_led, "turnOff")
    end
  end

  -- si se enciende alguna luz y la tira de led está encendida
  if (sourceDevice == id_luz1 or sourceDevice == id_luz2) and _esActivo(id_led) then
   -- apagar la tira de led
   fibaro:debug('apagar tira de leds')
   fibaro:call(id_led, "turnOff")
  end
 
else -- si no lo lanza un dispositivo se entiende que es a mano
 fibaro:debug('Lanzado a mano, nada que hacer')
end

Jokin

  • *****
  • 1920
  • Meliorem domum
    • Ver Perfil
Re:HC2 - variables y variables predefinidas
« Respuesta #27 en: Abril 21, 2015, 09:12:18 am »
Vaya currada Linkey!
Voy a necesitar tiempo para entender todo pero prometo hacerlo.
Voy a escribir a los de Aeon para que me digan qué parámetro tengo que utilizar con el interruptor de 40A.
Te cuento en cuanto me contesten.

Gracias!, no sabes lo bien que me viene tu mensaje para aprender Lua.

linkey

  • *****
  • 609
    • Ver Perfil
Re:HC2 - variables y variables predefinidas
« Respuesta #28 en: Abril 21, 2015, 10:04:54 am »
Vaya currada Linkey!
Voy a necesitar tiempo para entender todo pero prometo hacerlo.
Voy a escribir a los de Aeon para que me digan qué parámetro tengo que utilizar con el interruptor de 40A.
Te cuento en cuanto me contesten.

Gracias!, no sabes lo bien que me viene tu mensaje para aprender Lua.
De nada,
Perdona, en el código tiene un error.
En la línea 41 pone "fibaro:sleep(100=*tiempoApagado)", cuando debería poner "fibaro:sleep(100=*tiempoApagado)"
corrígelo antes de probar.

Re:HC2 - variables y variables predefinidas
« Respuesta #29 en: Abril 21, 2015, 12:41:53 pm »
Gracias Linkey,
En tu mensaje comentas y hay un error pero el cambio que propones no cambia respecto a la secuencia que dices que hay que cambiar.
Luego lo miro mejor en casa.

Anyway, me han contestado los de Aeon:

Hi Jokin,

I found the parameters that you are looking for within the list that you provided.

"power":"0.00" this is the report in Watt
"energy":"1.98" this is the report in kWh [Watt consumption over time], it looks like there are some readings here already

"energy" is what you are looking for.

Cheers,
Chris

Qué opinas?
Crees que ese es el parámetro/propiedad que se necesita?

Gracias.


Enviado desde mi iPhone utilizando Tapatalk