lunes, 5 de septiembre de 2016

Hack Enchufe Wi-Fi Souliss


Traigo una evolución y una nueva versión del enchufe wifi que presenté en esta entrada:

Una V2 del enchufe inicial trata de poner orden y dar una terminación más compacta, para lo que he diseñado una base impresa que aloje la placa con el ESP8266 (va encajada, sin usar tornillos), el relé, el alimentador (también encajado) y el pulsador.






El enlace al stl de la base :
Versión Sonoff.
Encontré un módulo comercial por unos 6 euros que utiliza un ESP8266, fabricado por Itead. Se llama Sonoff y en una misma placa esta el ESP, la alimentación, el relé, el pulsador y un led. Tiene más o menos el mismo coste que comprar los elementos por separado. Es este y me costó 5,97€:



Viene con su propio código para utilizarse con una App (eWeLink ), tanto para Android como para IOS. Para cargarle el código souliss hay que soldar los pines del puerto serie.



Toda la información del hack de este modulo lo tenéis aquí:


Le he diseñado un soporte impreso que no necesita tornillos y una tapa (con unas aletas aporte de Juan Pinto) para tener acceso al pulsador y al led:



Los stl para imprimir:  

Una vez terminado, queda así

Os quiero advertir que el programador que compre por 4 euros en el chino de la esquina para este nuevo modelo, parecía primo hermano de los viejos Coati que tenía en casa, pero no es así, lo que me complico mucho el asunto. Tiene otro diseño que me obligó a eliminar el plástico sobrante con una dremel provista de un disco de corte. 


Para ponerlo en modo programación, hay que mantener presionado el pulsador (GPIO 0) antes de alimentar el Sonoff. Este mismo pulsador se utiliza para accionar el relé de forma manual.

El código Souliss cargado:

/**************************************************************************
NODO Souliss ESP8266
como enchufe WIFI
Usamos una IP fija: 192.168.1.24
Se utiliza la carcasa de un programador mecánico en la que se ha alojado
un módulo SONOFF:
Función Puerto
Pulsador GPIO0
Relé GPIO12
LED GPIO13
RX GPIO3
TX GPIO1

Con OTA clasico (funciona con: IDE arduino 1.6.5, Python 2.7 y core ESP 1.6.5-1160-gef26c5f )
***************************************************************************/
#include "SoulissFramework.h"
#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
#include <WiFiUdp.h>


// Configure the framework
#include "bconf/MCU_ESP8266.h" // Carga el codigo directamente en el ESP8266

// **** Define the WiFi name and password ****
#define WIFICONF_INSKETCH
#define WiFi_SSID "
XXXXXX"
#define WiFi_Password "
XXXXXXXX"

// Librerias

#include "Souliss.h"

// Definir la configuracion de la red
uint8_t ip_address[4] = {192, 168, 1, 24};
uint8_t subnet_mask[4] = {255, 255, 255, 0};
uint8_t ip_gateway[4] = {192, 168, 1, 1};

#define myvNet_address ip_address[3] //
El último byte de la dirección IP (24) es la dirección vNet
#define myvNet_subnet 0xFF00

// Definición de SLOTs
#define RELE_SLOT 0

//Definicion de pines
#define OUTPUTPIN 12 //
relé
#define PULSADOR_PIN 0 //entrada pulsador con resistencia pullup
#define POWER_LED_PIN 13 //Pin GPIO13 para el led indicador de ON/OFF de la
alimentación eléctrica

// Setup the libraries for Over The Air Update.
OTA_Setup(); //ota

void setup()
{
Initialize();

//Asignar una IP fija al nodo.
Souliss_SetIPAddress(ip_address, subnet_mask, ip_gateway);

Set_SimpleLight(RELE_SLOT); // Define
la logica
pinMode(OUTPUTPIN, OUTPUT); // pin
de salida
pinMode(PULSADOR_PIN, INPUT); //pin usado como entrada
pinMode(POWER_LED_PIN, OUTPUT);

// Init the OTA.
OTA_Init(); //ota

}

void loop()
{
// Here we start to play
EXECUTEFAST() {
UPDATEFAST();

FAST_50ms() { // We process the logic and relevant input and output every 50 milliseconds
Logic_SimpleLight(RELE_SLOT);
LowDigIn(PULSADOR_PIN, Souliss_T1n_ToggleCmd, RELE_SLOT); //GPIO0 tiene pullup=>la activacion es con LOW
DigOut(OUTPUTPIN, Souliss_T1n_Coil,RELE_SLOT);
LowDigOut(POWER_LED_PIN, Souliss_T1n_Coil, RELE_SLOT); //para encender el led hay que poner la salida a 0V (LOW) que va al catodo. El anodo va a 3.3V

}

// Here we handle here the communication with Android
FAST_PeerComms();
}

// Look for a new sketch to update over the air.
OTA_Process(); //ota
}


7 comentarios:

  1. Mas que el temporizador, no sería mejor incorporar un medidor de intensidad para saber el consumo del enchufe con un sct-013-030?
    Saludos,

    ResponderEliminar
    Respuestas
    1. Es una buena idea, aunque quizas el SCT no sea el mas apropiado porque es bastante grande pero con uno de los pequeños si se podria hacer, será cuestion de mirar a ver si hay espacio.

      Eliminar
    2. No hay que verlo como un simple temporizador, sino como un auténtico nodo Souliss wifi que permite controlar on/off cualquier aparato con enchufe. Con OpenHab de por medio (que se note que estoy aprendiendo a usarlo :P) puede responder a cualquier evento con las "rules" apropiadas.
      En cuanto al medidor de consumo, lo tengo en proyecto, pero empleando un ACS712 que cabe en el enchufe.

      Eliminar
  2. Genial esta nueva version!! Voy a imprimirlos :P

    ResponderEliminar
  3. Se me ha olvidado comentar Juan Jesus, he editado tu entrada minimamente, simplemente he puesto el titulo en su sitio, he añadido el corte de hoja (para que se vea la entrada parcialmente y luego el "leer mas") y he cambiado el Link a la palabra "Entrada" para que quede mas limpio :P

    Salu2

    ResponderEliminar
  4. hola, habria que poner una resistencia pull-down para que funcionara el rele, o no hace falta, un saludo

    ResponderEliminar