Come interfacciarsi via WiFi con i moduli Sonoff della Itead

Attenzione !I messaggi sul forum potrebbero essere modificati dal nostro staff. La data e l'ora dei messaggi potrebbe non essere quella di invio ma quella di moderazione da parte dello staff. Grazie per l'attenzione.

Home Forum Discussioni su problematiche generali Come interfacciarsi via WiFi con i moduli Sonoff della Itead

Questo argomento contiene 8 risposte, ha 3 partecipanti, ed è stato aggiornato da  Marcello 2 giorni, 2 ore fa.

Stai vedendo 9 articoli - dal 1 a 9 (di 9 totali)
  • Autore
    Articoli
  • #36171

    Paolo
    Partecipante

    In una abitazione hanno installato alcuni moduli Sonoff, in particolare il Sonoff Basic WiFi Wireless Switch che sono collegati alla rete WiFie poi possono essere comandati tramite un applicazione con Android.

    Volevo installare un CMT_SVR ed un CMT-IV5 e programmare alcune pagine con le varie stanze della casa ma non conosco il protocollo di comunicazione del Sonoff. Sapete darmi qualche informazione ?

    #40025

    Sergio Bertana
    Amministratore del forum

    Vedo che hanno la gestione del protocollo MQTT ma non sinceramente non ho trovato informazioni su come configurare questi moduli per poterli gestire tramite i nostri sistemi programmabili SlimLine.

    Mi sono però cimentato con l’IDE di sviluppo ed ho realizzato un nuovo firmware che ne permette la gestione da una SlimLine. Ho anche realizzato un FB dedicato, è un lavoro che ho svolto per divertimento ed è pubblicato nella zona delle Knowledge sul nostro sito.

    #47942

    Marcello
    Partecipante

    Ho seguito passo-passo le procedure indicate nelle Knowledge “Gestire Sonoff con ESPurna firmware da SlimLine” e in “Gestire dispositivo Sonoff da SlimLine”, purtroppo senza risultato.

    Nel primo il modulo non genera la “wifi” quindi non posso connettermi alla pagina delle impostazioni, nel secondo nonostante abbia modificato i parametri della WiFi SSID, Passw, IP, ecc… il modulo non viene riconosciuto. L’unica cosa che ho notato è che il led del dispositivo (Sonoff Basic) non lampeggia.

    Aggiungo che nella versione ESPurna ho installato il binario espurna-1.13.5-itead-sonoff-rf.bin come indicato negli esempi e che sia con ESP8266Flasher (primo caso) che con Arduino, al termine dell’upload, non vengono segnalati errori.

    Da cosa può dipendere?

    #47947

    Sergio Bertana
    Amministratore del forum

    Ti consiglio di utilizzare il firmware ESPurna che è il più completo e ti permette di gestire il dispositivo anche con la sua pagina web.

    Il tuo problema è nella procedura di flashing del dispositivo devi impostare correttamente lo SPI Mode nella configurazione Advanced del programma NodeMCU. Ci sono 4 possibili selezioni (Qui trovi spiegazioni al riguardo).

    Avevo avuto anch’io un problema nel falshing del modulo, ma poi agendo sulle selezioni avevo trovato quella corretta, purtroppo non mi ricordo più quale avevo utilizzato. Magari quando hai risolto scrivi sul forum.

    #47968

    Marcello
    Partecipante

    RISOLTO:
    Innanzi tutto il file .BIN è :espurna-1.13.5-itead-sonoff-basic.bin e lo SPI Mode è: DOUT, gli altri parametri in Advanced sono quelli di default.

    Ho abilitato anche Telnet ma non conosco i comandi per provare da Toolly l’on/off del modulo, voi li avete?

    #48037

    Sergio Bertana
    Amministratore del forum

    Un elenco lo puoi trovare qui, quando ti connetti in Telnet puoi dare il comando help per visualizzare tutti i possibili comandi, ecco il report.

    Available commands:
    > COMMANDS
    > CONFIG
    > CRASH
    > DEL
    > DICTIONARIES
    > EEPROM
    > EEPROM.DUMP
    > ERASE.CONFIG
    > FACTORY.RESET
    > FLASH.DUMP
    > GET
    > GPIO
    > HA.CLEAR
    > HA.CONFIG
    > HA.SEND
    > HEAP
    > HELP
    > INFO
    > KEYS
    > MQTT.RESET
    > OTA
    > PUBLISH
    > RELAY
    > RELOAD
    > RESET
    > RESET.SAFE
    > SELECT
    > SET
    > STACK
    > SUBSCRIBE
    > UNSUBSCRIBE
    > UPTIME
    > WIFI
    > WIFI.AP
    > WIFI.RESET
    > WIFI.SCAN

    #48137

    Marcello
    Partecipante

    Ho provato anche altri tipi di Firmware, quello della ESpurna ha il “limite” di chiedere il codice API per inviare i comandi. Ho trovato in rete TASMOTA che ha il vantaggio di ricevere l’on/off con semplice interfaccia REST. Volevo utilizzare il FB HTTPClient per passare il comando di on/off che dal browser invio così:

    http://192.168.0.9/cm?cmnd=Power%20TOGGLE

    Ho configurato la mia FB così:
    IF (SysFirstLoop) THEN
      HTTP.SpyOn:=TRUE; (* Activate the spy *)
      HTTP.Method:=2; (* Request method, PUT *)
      HTTP.HostAddress:=ADR('192.168.0.9'); (* SonOff device *)
      HTTP.HostName:=ADR('192.168.0.9'); (* Hostname *)
      HTTP.HostPort:=80; (* Server port *)
      HTTP.Page:=ADR('/cm'); (* Web page *)
      HTTP.Request:=ADR('cmnd=Power%20TOGGLE'); (* Request string *)
      HTTP.DBSize:=256; (* Data buffer size *)
      HTTP.Timeout:=60000; (* Execution timeout *)
    END_IF

    ma spiando con toolly ottengo questo risultato:

    21:43:41( 384)|Tx|PUT //cm HTTP/1.1..
    21:43:41(.130)|Rq|cmnd=Power%20TOGGLE
    21:43:41(.000)|Rx|HTTP/1.1 404 Not Found..
    21:43:41(.001)|Lg|Start Rx page, length:72
    21:43:41(.002)|Rx|[72] File Not Found..URI: //cm *** s: 1. cmnd: Power TOGGLE.
    21:43:41(.061)|Pi|Page length: 72 Page load time: 0.196 (S)

    e ovviamente al relè non capita nulla.
    Cosa posso fare? (ho provato anche con POST e GET ma non cambia il risultato)

    #48140

    Sergio Bertana
    Amministratore del forum

    Sicuramente è possibile realizzare il comando con il FB HTTPClient.

    Intanto vedo che il comando è in GET, quindi usa, HTTP.Method:=0;
    La pagina da chiamare è cm quindi prova ad usare, HTTP.Page:=ADR(‘cm’);
    %20 è la codifica di space, provvede l’FB a codificarlo prova,HTTP.Request:=ADR(‘cmnd=Power TOGGLE’)

    #48143

    Marcello
    Partecipante

    L’errore stava proprio sulla Webpage mi era sfuggita “/”.

    Ho visto anche che dopo circa 75 sec il tempo di risposta del relè si allunga fino alla soglia di timeout. Se si vuole il relè sempre pronto, ogni 60 sec reinvio il comando di stato sostituendo TOGGLE con ON o OFF. Riprendendo il tuo programma ho modificato  IF (Relay) <> (RStarus) OR SysTime-timeStart > 60000 THEN …

    timeStart viene ricaricato con SysTime ad ogni invio comando.

     

Stai vedendo 9 articoli - dal 1 a 9 (di 9 totali)

Devi essere loggato per rispondere a questa discussione.