rtc (real time clock)
Grupo de funções utilizado para manipular o RTC e os dados de relógio do equipamento.
Os dias e horários são exibidos e configurados conforme o fuso horário configurado no webserver do equipamento.
Durante essa página serão utilizados algumas variáveis para descrever os métodos e respostas das funções. Veja abaixo a descrição dessas variáveis.
Variável | Descrição | tipo | Range |
---|---|---|---|
h | hora | int | 0 a 23 |
min | minuto | int | 0 a 59 |
s | segundo | int | 0 a 59 |
d | dia | int | 0 a 31 |
mon | mês | int | 1 a 12 |
y | ano | int | 2000 a 2099 |
wd | dia da semana | int | 1 a 7 |
yd | dia do ano | int | 1 a 366 |
ts | unix timestamp [s] | int | 0 a 1.8446744e+19 |
RTC
Função global utilizada para utilizar o relógio em tempo real RTC (Real Time Clock). Com ele é possível saber o valor do relógio interno nesse momento e funções de verificação relacionado a data e horários.
rtc.now
Retorna o valor atual do horário.
rtc.now(str);
Resposta: obj
Possíveis valores
Entrada "str" | Descrição | Resposta obj |
---|---|---|
"t" | Retorna horário atual | {h, min, s} |
"d" | Retorna data atual | {d, mon, y, wd, yd} |
"ts" | Retorna timestamp atual | ts |
Exemplo
Caso os comandos fossem solicitados no dia 04/jan/2023 as 12:30:15 (GMT -3) as respostas seriam da seguinte forma:
- time
- date
- timestamp
rtc.now("t");
Resposta: {h: 12, min: 30, s: 15}
rtc.now("d");
Resposta: {d: 4, mon: 01, y: 2023, wd: 4, yd: 4}
rtc.now("ts");
Resposta: 1672846215
rtc.lastchange
Retorna o tempo que passou desde a última mudança de estado de uma variável binária em relação a um valor específico. Também retorna o timestamp que ocorreu tal mudança.
Necessita de objeto global para guardar respostas.
let aux = {"since": -1, "past": 0};
aux = rtc.lastchange(state, boolreference, aux.since, aux.past);
Resposta: objeto {"since": timestamp, "past": timePassed}
Exemplo
Precisamos saber quanto tempo uma variável binária está com seu estado em false
.
- Genérico
- Entrada Analógica
Você pode utilizar qualquer valor booleano.
let aux = {"since": -1, "past": 0};
let loop = function() {
aux = rtc.lastchange(myVar, false, aux.since, aux.past);
log(aux);
delay(1000);
};
Resposta: {"since": 1697560430, "past": 1209}
Nesse caso se passaram 1209 segundos desde que o valor booleano foi para false.
É possível criar uma condição binária a partir de qualquer outra condição disponibilizada via mhoJS, como por exemplo uma leitura de entrada analógica. Nesse exemplo estamos lendo a entrada analógica 1 no modo 4-20mA, que possui um sensor de 0 a 10 e estamos falando que abaixo de 3 deve ser
false
.
let aux = {"since": -1, "past": 0};
let loop = function() {
let lowlevel = false;
if(io.readAI(1, "i", 0, 10)<3){
lowlevel = false;
}
else{
lowlevel = true;
}
aux = rtc.lastchange(lowlevel, false, aux.since, aux.past);
log(aux);
delay(1000);
};
Resposta: {"since": 1697560430, "past": 1209}
Nesse caso se passaram 1209 segundos desde que o valor booleano foi para false.
rtc.isnow
Retorna se hora e dia atual são iguais a entrada da função.
rtc.isnow(d, mon, y, h, min);
Resposta: true/false
Exemplo
Caso os comandos fossem solicitados no dia 05/jan/2023 as 12:30:15 as respostas seriam da seguinte forma:
rtc.isnow(5, 1, 2023, 12, 30);
Resposta: true
rtc.isnow_time
Retorna se hora atual é igual a entrada da função.
rtc.isnow_time(h, min);
Resposta: true/false
Exemplo
Caso os comandos fossem solicitados em qualquer dia as 12:30:15 as respostas seriam da seguinte forma:
rtc.isnow_time(12, 30);
Resposta: true
rtc.isnow_date
Retorna se a data atual é igual a entrada da função. Caso o ano não seja informado a função considera que pode ser o ano atual do equipamento.
rtc.isnow_date(d, mon, y = this_year);
Resposta: true/false
Exemplo
Caso os comandos fossem solicitados no dia 05/jan/2023 a resposta seria da seguinte forma:
rtc.isnow_date(5, 1, 2023);
Resposta: true
rtc.isnow_date(5, 1);
Resposta: true
rtc.isnow_date(5, 1, 2025);
Resposta: false
rtc.isnow_x
Retorna se a variavel atual é igual a entrada da função.
rtc.isnow_x(str, int);
Resposta: true/false
Possíveis valores
Entrada str | Entrada int |
---|---|
"h" | 0-23 |
"min" | 0-59 |
"d" | 1-31 |
"mon" | 1-12 |
"y" | 2000-2099 |
"wd" | 1-7 |
"yd" | 1-366 |
Exemplo
Caso o comando fosse solicitado em qualquer horário de uma quarta feira a resposta seria da seguinte forma:
rtc.isnow_date("wd", 4);
Resposta: true
rtc.millis
Retorna o tempo de execução em millisegundos desde que o processador foi inicializado (reseta em uInt64). Útil para utilização em lógicas de tempo.
rtc.millis();
Resposta: Tempo em millisegundos
rtc.seconds
Retorna o tempo de execução em segundos desde que o processador foi inicializado (reseta em uInt64/1000). Útil para utilização em lógicas de tempo.
rtc.seconds();
Resposta: Tempo em segundos