ESP8266 + FLProg - Parâmetros do sistema do usuário e sincronização com o servidor de horário exato



Nesta lição, examinaremos o uso de variáveis ​​personalizadas do sistema para vincular a interface de configuração baseada na Web e o design do projeto. Também tentamos configurar a sincronização do relógio do sistema do controlador com os servidores de horário exato.

Esta lição foi criada para a versão 3.1.4, que agora está em teste de pré-lançamento. Você pode baixá-lo aqui . Você pode aprender mais sobre o projeto FLProg no blog da empresa no hub , no site do projeto e no fórum . Além disso, no canal ArduinoProm , você pode assistir a uma enorme variedade de vídeo aulas.

Usaremos o projeto criado na última lição como base.

Para começar, criaremos três parâmetros de usuário do sistema nos quais serão armazenados o horário atual do controlador, o fuso horário e o endereço do servidor de horário exato com o qual seremos sincronizados. Para fazer isso, encontramos o ramo " Adicionar parâmetro " na árvore do projeto, no nó " Parâmetros do usuário ".



A caixa de diálogo para adicionar um novo parâmetro do sistema será aberta. Preencha.



No campo " Nome ", digite o nome do parâmetro. Vamos escolher o tipo de parâmetro - " String ". O valor deste parâmetro será alterado dinamicamente durante a operação, portanto, desativaremos o salvamento do valor do parâmetro na EEPROM. Portanto, não definimos um valor padrão. O comprimento máximo da linha é 20 (a saída será no formato 01:01:01 01-01-2018, ou seja, 19 caracteres).

Adicione o segundo parâmetro da mesma maneira.



Apenas deixe o save na EEPROM, para que o controlador se lembre do servidor que inserimos e defina o servidor por padrão.

Por fim, crie o terceiro parâmetro, o valor do fuso horário, para a exibição correta da hora.



Tipo de parâmetro inteiro , salve na EEPROM, o valor padrão de sua escolha (eu tenho 4 horas).

Como resultado, temos três parâmetros de usuário



Passamos para o esquema de firmware.

Na biblioteca de blocos funcionais, encontramos o bloco " Obtendo tempo de um servidor NTP " e o arrastamos para a área de trabalho do circuito



Clicar duas vezes neste bloco abre o editor de parâmetros do bloco.



Vamos considerar as configurações com mais detalhes.
Servidor NTP - o endereço do servidor a partir do qual a hora exata será usada. Pode ser definido como uma constante. Você pode escolher entre uma lista de padrões. Eu verifiquei tudo - eles funcionam. Para selecionar, clique no botão " Servidor Padrão ".



Mas como queremos definir o endereço do servidor " de um adulto " na interface da web, marque a caixa de seleção " Login "

O período da solicitação antes de receber a primeira resposta é a frequência com a qual o controlador " bata " no servidor até receber tempo pela primeira vez. Deixamos um valor constante a cada 30 segundos. Também é possível definir a entrada e, em seguida, será necessário aplicar um valor em milissegundos.

O período da solicitação após o recebimento da primeira resposta é a frequência com que o controlador verifica a hora no servidor. Partimos por padrão, uma vez a cada meia hora. Você também pode definir através da entrada, em milissegundos.

Fuso horário - Como o servidor fornece a hora no GMT, esse parâmetro define o deslocamento do fuso horário em horas. Decidimos definir esse parâmetro através da interface da web, então marcamos a caixa de seleção " Login "

Sair de "Ano" , Sair de "Mês" , Sair de "Dia" , Sair de "Hora" , Sair de "Minuto" , Sair de "Segundo" - não precisamos deles nesta lição, portanto, não marque as caixas.

Saída "Unix Time" - não precisamos dessa saída, não colocamos uma marca (para ser sincero, ainda não inventei um caso de usuário para isso. Mas, caso o tenha feito, é útil para alguém)

Total, temos uma configuração de bloco



Consequentemente, o bloco no esquema do firmware também mudou.



Encontre o bloco “ Reading system parameter ” na biblioteca e arraste-o para o diagrama.



Clique duas vezes neste bloco e comece a configurar seus parâmetros.

Primeiro, pressione o botão de seleção de parâmetro do sistema.



Uma janela para selecionar um parâmetro do sistema é aberta. Selecione o parâmetro " Time server "



Isso completa a configuração do bloco.

Colocamos convenientemente os blocos e conectamos a saída do bloco " Read system parameter " à entrada " Server " do bloco " Receive time from NTP server "



Arraste outro bloco " Ler parâmetro do sistema " para o diagrama e configure-o para ler o parâmetro " Fuso horário ".



Conectamos a saída desse bloco à entrada " TimeZone " do bloco " Receive time from NTP server "



Adicione uma nova placa ao circuito. Para fazer isso, clique no botão " Adicionar painel "



Desligamos o primeiro painel, não precisaremos mais dele. Para fazer isso, clique na seta no cabeçalho do primeiro quadro.



Retiramos o bloco “ Recebendo dados do relógio exato ” no circuito na segunda placa



Clique duas vezes nele para acessar a caixa de diálogo de configurações do bloco. Ao pressionar o botão " Novo ", acessamos a caixa de diálogo de seleção do relógio e selecionamos " Relógio do sistema do controlador ".





Em seguida, colocamos um visto " Saída" Relógio " "



E terminamos de editar o bloco.

Em seguida, copiamos esse bloco mais cinco vezes, reorganizando nas configurações de cada um deles uma marca de seleção da saída na sequência Minuto - Segundo - Dia - Mês - Ano .



Agora puxamos o bloco " Conversão de string " para o diagrama da biblioteca.



E nas configurações dele, selecione o tipo de conversão " Time "



Copiamos o bloco mais cinco vezes e coletamos o esquema



Transferir para o diagrama da biblioteca o bloco " Adição de linhas "



Nas configurações do bloco, definimos 11 entradas.



E conectamos os blocos de acordo com o esquema



Nas entradas livres do bloco, definimos as constantes

Entrada 2 - ":"
Entrada 4 - ":"
Entrada 6 - Espaço
Entrada 8 - "-"
Entrada 10 - "-"

Para definir uma constante, clique com o botão direito do mouse em uma entrada livre e selecione " Inserir constante " no menu suspenso.



A janela de entrada constante é aberta, onde no campo " Valor padrão " é inserida a constante necessária



Agora, retiramos o bloco " Gravando um parâmetro do sistema " da biblioteca para o circuito



Nas configurações do bloco, desmarque a caixa de seleção " Entrada de permissão de gravação " e selecione o parâmetro " Data - hora "



Conectamos a saída do bloco " Line Addition " com a entrada do bloco " System Parameter Record "



Como resultado, devemos obter esse esquema (para maior clareza, implante a primeira placa).



Com o esquema do firmware finalizado, retornamos à árvore do projeto.

Adicionaremos três parâmetros à página principal da interface da Web (veja como fazer isso na lição anterior ).

Parâmetro 1 - Parâmetro do sistema " Data - Hora ", tipo de parâmetro - " Texto ", etiqueta - " Hora "

Parâmetro 2 - Parâmetro do sistema " Servidor de hora exata ", tipo de parâmetro - " Campo de entrada ", etiqueta - " Servidor "

Parâmetro 3 - Parâmetro do sistema " Fuso horário ", tipo de parâmetro - " Campo de entrada ", etiqueta - " Fuso horário "



Ligue o botão " Salvar " na página



Coloque o programa no controlador e veja o que aconteceu na página principal (como fazer isso, consulte a lição anterior )

Imediatamente após a conexão - o servidor de horário ainda não foi sincronizado



Após um minuto (atualize a página) - a sincronização passou



Altere o fuso horário e clique em salvar



O projeto criado na lição pode ser baixado aqui .

Source: https://habr.com/ru/post/pt422377/


All Articles