Programación visual para Sonoff Basic

Programación visual para Sonoff Basic
Un artigo sobre como crear un controlador lóxico programable a partir dun dispositivo chinés barato. Tal dispositivo atopará o seu uso tanto na domótica como como clases prácticas na informática escolar.
Como referencia, o programa Sonoff Basic funciona por defecto cunha aplicación móbil a través dun servizo na nube chinés; despois da modificación proposta, toda a interacción posterior con este dispositivo será posible no navegador.

Sección I. Conectando Sonoff ao servizo MGT24

Paso 1: Crea un panel de control

Rexístrate no sitio mgt24 (se aínda non está rexistrado) e inicie sesión coa súa conta.
Iniciar sesiónProgramación visual para Sonoff Basic

Para crear un panel de control para un novo dispositivo, faga clic no botón "+".
Exemplo de creación dun panelProgramación visual para Sonoff Basic

Unha vez creado o panel, aparecerá na súa lista de paneis.

Na pestana "Configuración" do panel creado, busque os campos "ID do dispositivo" e "Chave de autorización"; no futuro, esta información será necesaria ao configurar o dispositivo Sonoff.
Exemplo de fichaProgramación visual para Sonoff Basic

Paso 2. Actualiza o dispositivo

Usando a utilidade XTCOM_UTIL descargar o firmware PLC Sonoff Basic ao dispositivo, para iso necesitará un conversor USB-TTL. Aquí educación и Video instrución.

Paso 3. Configuración do dispositivo

Aplique enerxía ao dispositivo, despois de que o LED se ilumine, prema o botón e manteña premido ata que o LED comece a parpadear regularmente de forma uniforme.
Neste momento, aparecerá unha nova rede wi-fi chamada "PLC Sonoff Basic", conecta o teu ordenador a esta rede.
Explicación da indicación LED

Indicación LED
Estado do dispositivo

parpadeo dobre periódico
sen conexión co router

brilla continuamente
conexión establecida co router

parpadeo uniforme periódico
modo de punto de acceso wi-fi

extinguido
Sen fonte de alimentación

Abre un navegador de Internet e introduce o texto "192.168.4.1" na barra de enderezos, vai á páxina de configuración de rede do dispositivo.

Encha os campos do seguinte xeito:

  • "Nome da rede" e "Contrasinal" (para vincular o dispositivo ao seu enrutador wifi doméstico).
  • “Identificación do dispositivo” e “Chave de autorización” (para autorizar o dispositivo no servizo MGT24).

Exemplo de configuración de parámetros de rede do dispositivoProgramación visual para Sonoff Basic

Garda a configuración e reinicia o dispositivo.
Aquí Video instrución.

Paso 4. Conectar sensores (opcional)

O firmware actual admite ata catro sensores de temperatura ds18b20. Aquí Video instrución para instalación de sensores. Ao parecer, este paso será o máis difícil, xa que requirirá brazos rectos e soldador.

Sección II. Programación visual

Paso 1: crear scripts

Usado como entorno de programación De xeito bloqueado, o ambiente é fácil de aprender, polo que non é necesario ser programador para crear scripts sinxelos.

Engadín bloques especializados para escribir e ler parámetros do dispositivo. Accédese a calquera parámetro polo seu nome. Para os parámetros dos dispositivos remotos, utilízanse nomes compostos: "parámetro@dispositivo".
Lista despregable de opciónsProgramación visual para Sonoff Basic

Exemplo de escenario de conexión e desactivación cíclica da carga (1 Hz):
Programación visual para Sonoff Basic

Un exemplo de script que sincroniza o funcionamento de dous dispositivos separados. É dicir, o relé do dispositivo de destino repite o funcionamento do relé do dispositivo remoto.
Programación visual para Sonoff Basic

Escenario para termostato (sen histérese):
Programación visual para Sonoff Basic

Para crear scripts máis complexos, pode usar variables, bucles, funcións (con argumentos) e outras construcións. Non vou describir todo isto en detalle aquí, xa hai moito na rede. material educativo sobre Blockly.

Paso 2: Orde de guións

O script execútase continuamente e, en canto chega ao seu final, comeza de novo. Neste caso, hai dous bloques que poden pausar temporalmente o script, "delay" e "pause".
O bloque "delay" úsase para retardos de milisegundos ou microsegundos. Este bloque mantén estritamente o intervalo de tempo, bloqueando o funcionamento de todo o dispositivo.
O bloque "pausa" úsase para segundos (ou menos) atrasos e non bloquea a execución doutros procesos no dispositivo.
Se o propio script contén un bucle infinito, cuxo corpo non contén "pausa", o intérprete inicia de forma independente unha breve pausa.
Se se esgota a pila de memoria asignada, o intérprete deixará de executar un script tan sediento de enerxía (teña coidado coas funcións recursivas).

Paso 3: Depuración de scripts

Para depurar un script que xa foi cargado no dispositivo, pode executar un rastrexo de programa paso a paso. Isto pode ser moi útil cando o comportamento do guión resultou ser diferente do que pretendía o autor. Neste caso, o rastrexo permite ao autor atopar rapidamente a orixe do problema e corrixir o erro no guión.

Escenario para calcular factorial en modo de depuración:
Programación visual para Sonoff Basic

A ferramenta de depuración é moi sinxela e consta de tres botóns principais: "iniciar", "un paso adiante" e "parar" (tampouco esquezamos o modo de depuración "entrar" e "saír"). Ademais do trazado paso a paso, pode establecer un punto de interrupción en calquera bloque (facendo clic no bloque).
Para mostrar os valores actuais dos parámetros (sensores, relés) no monitor, use o bloque "imprimir".
Aquí vídeo de visión xeral sobre o uso do depurador.

Sección para curiosos. Que hai debaixo do capó?

Para que os scripts funcionen no dispositivo de destino, desenvolvéronse un intérprete de bytecode e un ensamblador con 38 instrucións. O código fonte de Blockly ten incorporado un xerador de código especializado que converte os bloques visuais en instrucións de montaxe. Posteriormente, este programa ensamblador convértese en bytecode e transfírese ao dispositivo para a súa execución.
A arquitectura desta máquina virtual é bastante sinxela e non ten sentido describila; en Internet atoparás moitos artigos sobre o deseño das máquinas virtuais máis sinxelas.
Adoito asignar 1000 bytes para a pila da miña máquina virtual, o que é suficiente para sobrar. Por suposto, as recursións profundas poden esgotar calquera pila, pero é improbable que teñan ningún uso práctico.

O bytecode resultante é bastante compacto. Como exemplo, o código de bytes para calcular o mesmo factorial é de só 49 bytes. Esta é a súa forma visual:
Programación visual para Sonoff Basic

E este é o seu programa ensamblador:

shift -1
ldi 10
call factorial, 1
print
exit
:factorial
ld_arg 0
ldi 1
gt
je 8
ld_arg 0
ld_arg 0
ldi 1
sub
call factorial, 1
mul
ret
ldi 1
ret

Se a forma de representación de conxunto non ten ningún valor práctico, entón a pestana "javascrit", pola contra, dá un aspecto máis familiar que os bloques visuais:

function factorial(num) {
  if (num > 1) {
    return num + factorial(num - 1);
  }
  return 1;
}

window.alert(factorial(10));

En canto ao rendemento. Cando executei o script intermitente máis sinxelo, obtiven unha onda cadrada de 47 kHz na pantalla do osciloscopio (a unha velocidade de reloxo do procesador de 80 MHz).
Programación visual para Sonoff BasicProgramación visual para Sonoff Basic
Creo que este é un bo resultado, polo menos esta velocidade é case dez veces máis rápida que lúa и Espruino.

Parte final

Para resumir, direi que o uso de scripts permítenos non só programar a lóxica do funcionamento dun dispositivo separado, senón que tamén permite conectar varios dispositivos nun mesmo mecanismo, onde algúns dispositivos inflúen no comportamento doutros.
Tamén observo que o método escollido para almacenar scripts (directamente nos propios dispositivos e non no servidor) simplifica o cambio de dispositivos que xa funcionan a outro servidor, por exemplo a un Raspberry doméstico, aquí educación.

Iso é todo, estarei encantado de escoitar consellos e críticas construtivas.

Fonte: www.habr.com

Engadir un comentario