APNT-29 - Estendendo <tc>Fibaro</tc> Capacidades HC2 Sunrise/Sunset

O Fibaro O Home Center 2 tem algumas limitações quanto aos horários do pôr do sol e do nascer do sol que você pode usar em suas cenas. Por exemplo, você pode selecionar 15, 30, 45 e 60 minutos antes do nascer do sol e 15, 30, 45 e 60 minutos após o pôr do sol. Mas não é possível selecionar 60 minutos antes do pôr do sol ou quaisquer outros valores.

Na verdade, é muito fácil alterar uma única linha de código LUA para estender os horários do pôr do sol/nascer do sol para qualquer horário que você desejar.

Como exemplo, usaremos a cena do pôr do sol que usamos na Nota de Aplicação 28 -

Sunset On Scene

Esta cena acende uma luz exatamente ao pôr do sol. Isso funciona bem para luzes externas, mas se você usasse a mesma cena para uma luz interna, provavelmente gostaria que ela fosse ativada antes do pôr do sol, pois fica mais escuro dentro do edifício.

Então vamos mudar isso para que a cena seja ativada 1 hora antes do pôr do sol.

Ver o código LUA

Para fazer isso, precisamos alterar uma linha do código LUA que realmente executa esta cena.

  • Na cena Avançado guia vá para o Alternar modo de edição de cena para base LUA
  • Clique em 'Mudar'
  • O código LUA é exibido em uma janela HC2 (mostrada abaixo)

HC2 LUA Scene Code

  • A linha de código em que estamos interessados ​​está em Linha 14.

( ((currentDate.wday == 2 ou currentDate.wday == 3 ou currentDate.wday == 4 ou currentDate.wday == 5 ou currentDate.wday == 6) e string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == fibaro:getValue(1, "horadosol")) )

  • Para alterar isso para que a cena seja ativada 60 minutos antes do pôr do sol, alteramos a linha 14 para:

( ((currentDate.wday == 2 ou currentDate.wday == 3 ou currentDate.wday == 4 ou currentDate.wday == 5 ou currentDate.wday == 6) e os.date("%H:%M", os.time()+60*60) == fibaro:getValue(1, "horadosol")) )

  • O código que controla o tempo antes ou depois do pôr do sol está marcado em negrito - os.time()+60*60)
    • Se isso for positivo '+' a cena será ativada antes do pôr do sol, se negativo '-' ele será ativado depois
    • O tempo antes/depois é determinado pelos números, '+60*60' neste exemplo ativa 60 minutos antes do pôr do sol, 90 minutos seria '+90*60'
  • Nota: Para testar este código, configurei a cena original para 1 hora após o pôr do sol. O código LUA para essa cena era idêntico ao novo código que usamos acima, exceto pelo tempo em que os.time()-60*60). Então, simplesmente alterando a seção do código para os.time()+60*60) agora temos uma cena que acontece 1 hora antes do pôr do sol.

Alterar o código LUA

Para alterar o código LUA para usar nossa nova linha de código (linha 14), precisamos ativar o modo de edição LUA.

Importante - Eu sugiro que você faça isso depois que o resto da cena estiver funcionando corretamente - você não pode voltar do editor baseado em LUA para o editor de Bloco Gráfico.

Quando estiver pronto, altere o editor para baseado em LUA.

  • Se você ainda não estiver na seção LUA da aba 'Avançado', vá para Alternar modo de edição de cena para base LUA, clique em 'Mudar'
  • Clique em 'Ligar'

HC2 LUA Editor

  • Clique em 'OK' na caixa de diálogo de aviso
  • Alterar a linha 14 para o novo código
  • Clique em 'Salvar' botão no menu à direita

HC2 final LUA Code


A cena agora será exibida 60 minutos antes do pôr do sol.

Usando essa simples mudança de código, podemos ter nossas cenas sendo executadas antes ou depois do pôr do sol/nascer do sol e no horário que quisermos.

Informações relacionadas