Gestire Sonoff con ESPurna firmware da SlimLine

» Home » Article » Gestire Sonoff con ESPurna firmware da SlimLine
  1. Home
  2. Knowledge Base
  3. Controllori SlimLine
  4. Applicazioni
  5. Gestire Sonoff con ESPurna firmware da SlimLine

Il modulo Sonoff della Itead è un relè WiFi dal costo contenuto, può essere collegato direttamente a 220V permettendo di alimentare sia il modulo che il carico pilotato dal relè. In rete ci sono molti progetti per hackerare il software originale del modulo modificandone le funzionalità, ma tra tutti i progetti quello che a parere mio è il più completo è il progetto ESPurna di Xose Pérez.

Ci sono molte guide in rete che spiegano come eseguire la riprogrammazione del modulo, puoi fare riferimento anche a questo articolo. E’ possibile eseguire il download di immagini binarie (Repository) già pronte per riprogrammare il modulo evitando la ricompilazione dell’intero progetto, per trasferire l’immagine binaria sul modulo ho usato Nodemcu Flasher. Dal programma flasher selezionare l’immagine binaria e trasferirla nella FLASH del modulo.

Terminata l’operazione il modulo genererà una rete WiFi, connettendosi a questa rete (La password è fibonacci) è possibile aprire la pagina web di configurazione (Indirizzo dispositivo 192.168.4.1). Alla prima connessione viene richiesta l’impostazione della password di accesso che deve avere 8 caratteri di cui almeno 1 maiuscolo, il dispositivo disconnette dal suo WiFi tutti i dispositivi connessi, occorre riconnettersi utilizzando la password definita.

Ora eseguire tutte le impostazioni richieste, impostare la rete WiFi a cui il modulo deve connettersi con la relativa password di accesso, impostare l’indirizzo IP del modulo e tutte le altre configurazioni richieste. Riavviando il modulo si connetterà alla rete WiFi definita e sarà possibile raggiungerlo con il suo indirizzo IP. Verranno richieste le credenziali di accesso Username:admin, e la password che avete impostato.

La pagina di stato riporta un riepilogo di tutte le impostazioni ed un interruttore che permette di comandare il relè del dispositivo. Accedendo ai vari menù è possibile configurare tutte le varie possibilità offerte da ESPurna.

Nel caso il dispositivo non sia più raggiungibile tramite la rete WiFi, premendo due volte consecutive sul tastino il dispositivo si riconfigura come access point WiFi e sarà possibile riconnettersi per una sua riconfigurazione.

Il mio scopo era di poter gestire dai nostri sistemi SlimLine il modulo Sonoff, a questo scopo dalla finestra administration ho abilitato le API HTTP del modulo e la gestione RESTful, in questo modo tramite il blocco funzione HTTPClient è possibile inviare il frame HTTP di comando relè sul modulo.

Per accettare i comandi inviati via HTTP è necessario che sia specificata una chiave HTTP API Key, se la chiave non corrisponde a quella impostata sul modulo i comandi non sono accettati.

I dati RESTful devono essere inviati con il metodo PUT, ad ogni ricezione del comando il modulo risponde al client con il valore attuale del relè, viene inviato “0” o “1”, e quindi possibile lato client verificare la corretta esecuzione del comando. Ecco di seguito il listato di un programma ST su SlimLine per inviare via HTTP il comando al modulo.

  IF (SysFirstLoop) THEN
    HTTPRq.SpyOn:=TRUE; (* Activate the spy *)
    HTTPRq.Method:=TRUE; (* Request method, PUT *)
    HTTPRq.HostAddress:=ADR('192.168.0.183'); (* Sonoff IP *)
    HTTPRq.HostName:=HTTPRq.HostAddress; (* Hostname *)
    HTTPRq.HostPort:=80; (* Server port *)
    HTTPRq.Page:=ADR('api/relay/0'); (* Web page *)
    HTTPRq.Request:=ADR(Request); (* Request string *)
    HTTPRq.DBSize:=256; (* Data buffer size *)
    HTTPRq.Timeout:=60000; (* Execution timeout *)
    APIKey:='3A1E7E1A2E32A73C'; (* HTTP API Key *)
  END_IF;

  HTTPRq(); (* HTTP client *)

  IF (Relay <> RPulse) THEN
    RPulse:=Relay; (* Relay pulse *)
    i:=Sysmemset(ADR(Request), 0, SIZEOF(Request)); (* Empty request *)
    i:=SysVarsnprintf(ADR(Request), SIZEOF(Request), 'apikey=%s', STRING_TYPE, ADR(APIKey));
    i:=SysLWVarsnprintf(ADR(Request), SIZEOF(Request), '&value=%d', BOOL_TYPE, ADR(Relay));
    HTTPRq.Enable:=TRUE; (* HTTP enable *)
  END_IF;

  IF (HTTPRq.Done) THEN HTTPRq.Enable:=FALSE; END_IF;

Al primo loop di esecuzione viene parametrizzato il FB HTTPClient indicando l’indirizzo IP del modulo Sonoff, la porta e la pagina a cui inviare i dati in PUT. Poi viene eseguito il FB e controllata la variazione del comando Relay.

Ad ogni variazione del comando viene creata la stringa da inviare con l’API Key ed il valore da impostare sul relè del modulo ed abilitato l’HTTPClient. Terminato l’invio del comando HTTPRq.Done viene disattivato il client in attesa di un nuovo comando da inviare.

Ho preparato un progetto su LogicLab che con un semplice programma oppure tramite un function block permette di gestire da SlimLine uno o più dsispositivi Sonoff. E’ possibile scaricare un file zip con tutto il necessario per hackerare il dispositivo e gestirlo da uno SlimLine (Download progetto ESPurnaSonoff).

Ti è stato utile questo articolo ?