Nothing Special   »   [go: up one dir, main page]

Codigo Parte I Irrigador Automatico

Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 3

#include <ESP8266WiFi.

h>
#include <MQTT.h>
#include <EEPROM.h>

#define DEBUG

//AQUI VAN LOS DATOS DE CONFIGURACION


#define AP_SSID "Ronaldo"
#define AP_PASSWORD "ronaldo123"

#define EIOTCLOUD_USERNAME "usuarioproyecto"


#define EIOTCLOUD_PASSWORD "proyecto123"

// Crea objeto MQTT


#define EIOT_CLOUD_ADDRESS "cloud.iot-playground.com"

#define PIN_PUMP 16 //D0


#define PIN_BUTTON 0 //Boton flash
#define PIN_HUM_ANALOG A0 //Sensor de humedad

#define MAX_ANALOG_VAL 956


#define MIN_ANALOG_VAL 250

#define IRRIGATION_TIME 10 //Tiempo de riego en segundos


#define IRRIGATION_PAUSE_TIME 300 //Tiempo de pausa de autoriego en modo auto

//Estados de riego
typedef enum {
s_idle = 0, // Nada
s_irrigation_start = 1, // Comienza
s_irrigation = 2, // Riega
s_irrigation_stop = 3, // Para
} e_state;

#define CONFIG_START 0
#define CONFIG_VERSION "v01"

struct StoreStruct {
// This is for mere detection if they are your settings
char version[4];
// The variables of your settings
uint moduleId; // module id
} storage = {
CONFIG_VERSION,
// The default module 0
0,
};

#define PARAM_HUMIDITY_TRESHOLD "Sensor.Parameter1"


#define PARAM_MANUAL_AUTO_MODE "Sensor.Parameter2"
#define PARAM_PUMP_ON "Sensor.Parameter3"
#define PARAM_HUMIDITY "Sensor.Parameter4"

#define MS_IN_SEC 1000 // 1S

MQTT myMqtt("", EIOT_CLOUD_ADDRESS, 1883);


//Variables Enteras
int state;
bool stepOk = false;
int soilHumidityThreshold;
bool autoMode;
String valueStr("");
String topic("");
boolean result;
int lastAnalogReading;
bool autoModeOld;
int soilHumidityThresholdOld;
unsigned long startTime;
int soilHum;
int irrigatorCounter;

void setup() {
state = s_idle;
pinMode(PIN_PUMP, OUTPUT);
pinMode(PIN_BUTTON, INPUT_PULLUP);

autoMode = false; //false


stepOk = false;
soilHumidityThresholdOld = 7;
startTime = millis();
soilHum = -1;

Serial.begin(115200);

WiFi.mode(WIFI_STA);
WiFi.begin(AP_SSID, AP_PASSWORD);

Serial.println();
Serial.println();
Serial.print("Conectando a ");
Serial.println(AP_SSID);

while (WiFi.status() != WL_CONNECTED) {


delay(500);
Serial.print(".");
};

Serial.println("WiFi conectado");
Serial.println("Conectando a servidor MQTT");

EEPROM.begin(512);
loadConfig();

//set client id
// Generate client name based on MAC address and last 8 bits of microsecond
counter
String clientName;
//clientName += "esp8266-";
uint8_t mac[6];
WiFi.macAddress(mac);
clientName += macToStr(mac);
clientName += "-";
clientName += String(micros() & 0xff, 16);
myMqtt.setClientId((char*) clientName.c_str());

Serial.print("MQTT ID:");
Serial.println(clientName);

// setup callbacks
myMqtt.onConnected(myConnectedCb);
myMqtt.onDisconnected(myDisconnectedCb);
myMqtt.onPublished(myPublishedCb);
myMqtt.onData(myDataCb);

//////Serial.println("connect mqtt...");
myMqtt.setUserPwd(EIOTCLOUD_USERNAME, EIOTCLOUD_PASSWORD);
myMqtt.connect();

delay(500);

Serial.print("Module ID: ");


Serial.println(storage.moduleId);

You might also like