Herramientas de usuario

Herramientas del sitio


personas:johnny:proyectos:indoor_diy_autosostenible

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
Próxima revisiónAmbos lados, revisión siguiente
personas:johnny:proyectos:indoor_diy_autosostenible [2019/06/19 07:36] – [primer prototipo de control automatico] kzpersonas:johnny:proyectos:indoor_diy_autosostenible [2019/09/15 20:39] kz
Línea 48: Línea 48:
   dht.begin();   dht.begin();
   // nombre del wifi y clave del wifi al cual se va a conectar el esp   // nombre del wifi y clave del wifi al cual se va a conectar el esp
-  WiFi.begin("RAMIREZ_BO", "10101973");+  WiFi.begin("name wifi", "wifi password");
  
   while (WiFi.status() != WL_CONNECTED) {   while (WiFi.status() != WL_CONNECTED) {
Línea 208: Línea 208:
 Se intenta manipular relays, mosttar datos en pantallay enviar datos a una base de datos influxdb Se intenta manipular relays, mosttar datos en pantallay enviar datos a una base de datos influxdb
  
-// A ESTE CÖDIGO FALTA IMPLEMENTAR ENVIO DE DATOS AL INFLUX CON WEBSOCKETS+A ESTE CÖDIGO FALTA IMPLEMENTAR ENVIO DE DATOS AL INFLUX CON WEBSOCKETS.
  
-<code c++>+[[https://gist.github.com/Kaziuz/d00f4e2e29e292fd1009cc028dc4aecd|Gist al código]]
  
-#include <ESP8266WiFi.h> 
-#include <ESP8266WiFiMulti.h> 
-#include <WebSocketsServer.h> 
-#include <Hash.h> 
-#include <ESP8266WebServer.h> 
-#include <ESP8266mDNS.h> 
-#include <SPI.h> 
-#include <Wire.h> 
-#include <Adafruit_GFX.h> 
-#include <Adafruit_SSD1306.h> 
-//#include <ESP8266HTTPClient.h> 
-#include "DHT.h" 
  
-#define DHTPIN D6 // Pin que va conectado al sensor +==== Construcción física del indoor ====
-#define DHTTYPE DHT11 // Tipo de sensor que estamos usando +
-#define HTTP_TIMEOUT 1000 * 60 // cada minuto +
-DHT dht(DHTPIN, DHTTYPE);+
  
-// If using software SPI (the default case): +[[https://www.taringa.net/+hazlo_tu_mismo/como-hacer-armario-cultivo-indoor-sensillo-barato-y-discreto_twzl4|versión barata y sencilla]]
-#define OLED_MOSI  D7   //D1 +
-#define OLED_CLK   D5   //D0 +
-#define OLED_DC    D4 +
-#define OLED_CS    D8 +
-#define OLED_RESET D0+
  
-Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS); +[[https://www.how-to-marijuana.com/beginners-growing-marijuana-indoors.html|la opción cara y vacana]]
-  +
-static const char ssid[] = "d(O_O)b"; +
-static const char password[] = "alex1988alex"; +
-MDNSResponder mdns; +
-  +
-static void writeLED(bool); +
-  +
-ESP8266WiFiMulti WiFiMulti; +
-  +
-ESP8266WebServer server(80); +
-WebSocketsServer webSocket = WebSocketsServer(81); +
-  +
-static const char PROGMEM INDEX_HTML[] = R"rawliteral( +
-<!DOCTYPE html> +
-<html> +
-<head> +
-<meta name = "viewport" content = "width = device-width, initial-scale = 1.0, maximum-scale = 1.0, user-scalable=0"> +
-<title>ESP8266 WebSocket Demo</title> +
-<style> +
-"body { background-color: #808080; font-family: Arial, Helvetica, Sans-Serif; Color: #000000; }" +
-</style> +
-<script> +
-var websock; +
-var webSockInflux; // se tiene que mandar los datos por un websocket +
-function start() { +
-  websock = new WebSocket('ws://' + window.location.hostname + ':81/'); +
-  websock.onopen = function(evt) { console.log('websock open'); }; +
-  websock.onclose = function(evt) { console.log('websock close'); }; +
-  websock.onerror = function(evt) { console.log(evt); }; +
-  websock.onmessage = function(evt) { +
-    console.log(evt); +
-     +
-    var e = document.getElementById('ledstatus'); +
-    var f = document.getElementById('ledstatus2'); +
-     +
-    if (evt.data === 'ledon') { +
-      e.style.color = 'red'; +
-    } +
-    else if (evt.data === 'ledoff') { +
-      e.style.color = 'black'; +
-    } +
-    else if (evt.data === 'ledon1') { +
-      f.style.color = 'red'; +
-    } +
-    else if (evt.data === 'ledoff1') { +
-      f.style.color = 'black'; +
-    } +
-    else { +
-      console.log('unknown event'); +
-    } +
-  }; +
-}+
  
-function buttonclick(e) { +[[https://www.taringa.net/+cannabis/aporte-todo-para-tu-indoor-desde-cero-thc-n-84_u5ecv|Un resumen de una revista especializada]]
-  websock.send(e.id); +
-}+
  
-</script> +====== Código para la ventilación usando timeAlarms ======
-</head> +
-<body onload="javascript:start();"> +
-<img src="data:image/jpeg;base64,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" width="140px"/> +
-<h4>Automatic grow garden</h4> +
-<div id="ledstatus"><b>RELAY 1</b></div> +
-<button id="ledon"  type="button" onclick="buttonclick(this);">On</button>  +
-<button id="ledoff" type="button" onclick="buttonclick(this);">Off</button> +
-<br /> +
-<br />+
  
-<div id="ledstatus2"><b>Relay 2</b></div> +<code c++> 
-<button id="ledon1"  type="button" onclick="buttonclick(this);">On</button>  + 
-<button id="ledoff1" type="button" onclick="buttonclick(this);">Off</button>+// https://github.com/PaulStoffregen/TimeAlarms 
 +// Librerias 
 +#include <Time.h> 
 +#include <TimeAlarms.h
 + 
 +// pin que controla  
 +int pin 13;
  
-</body> +int alarma 900; // cada 15 min
-</html> +
-)rawliteral"; +
-  +
-// GPIO#0 is for Adafruit ESP8266 HUZZAH board. Your board LED might be on 13. +
-const int LEDPIN D1; +
-const int LEDPIN1 = D3; +
-// Current LED status +
-bool LEDStatus; +
-bool LEDStatus1; +
-  +
-// Commands sent through Web Socket +
-const char LEDON[] = "ledon"; +
-const char LEDOFF[] = "ledoff";+
  
-// Commands sent through Web Socket +void setup() { 
-const char LEDON1[] = "ledon1"; +   
-const char LEDOFF1[] = "ledoff1"; +  Serial.begin(9600); 
-  +  //fijamos el tiempo inicial del esp 
-void webSocketEvent(uint8_t num, WStype_t type, uint8_t * payload, size_t length) +  // (08:30:00 25/05/17
-+  setTime(8,10,0,28,5,19); 
-  Serial.printf("webSocketEvent(%d, %d, ...)\r\n", num, type); +   
-  switch(type) { +  //Creamos las alarmas 
-    case WStype_DISCONNECTED: +  //Alarm.alarmRepeat(8,init15,0,EveningAlarm); Alarma que se inicia cada día 
-      Serial.printf("[%u] Disconnected!\r\n", num); +  //Alarm.alarmRepeat(8,end15,0,apagarVentilador);  Alarma que termina cada día 
-      break; +   
-    case WStype_CONNECTED: +  Alarm.timerRepeat(alarmaRepeats); // Timer cada 15 segundos 
-      { +   
-        IPAddress ip = webSocket.remoteIP(num); +  //Alarm.alarmRepeat(17,45,0,EveningAlarm); 5:45pm cada día 
-        Serial.printf("[%u] Connected from %d.%d.%d.%d url: %s\r\n"numip[0]ip[1]ip[2]ip[3], payload); +  //Alarm.alarmRepeat(dowSaturday,8,30,30,WeeklyAlarm); 8:30:30 cada sabado 
-        // Send the current LED status +  //Alarm.timerRepeat(alarmaRepeats); Timer cada 15 segundos 
-        if (LEDStatus) { +  //Alarm.timerOnce(10OnceOnly);  Llamado una vez despues de 10 segundos 
-          webSocket.sendTXT(numLEDONstrlen(LEDON)); +   
-        } +  pinMode(pinOUTPUT);
-        else { +
-          webSocket.sendTXT(numLEDOFF, strlen(LEDOFF)); +
-        } +
-         +
-        // Send the current LED status +
-        if (LEDStatus1) { +
-          webSocket.sendTXT(numLEDON1strlen(LEDON1)); +
-        } +
-        else { +
-          webSocket.sendTXT(numLEDOFF1, strlen(LEDOFF1)); +
-        } +
-      } +
-      break; +
-    case WStype_TEXT: +
-      Serial.printf("[%u] get Text: %s\r\n"numpayload); +
-  +
-      if (strcmp(LEDON, (const char *)payload) == 0) { +
-        writeLED(true); +
-      } +
-      else if (strcmp(LEDOFF(const char *)payload) == 0) { +
-        writeLED(false); +
-      } +
-      else if (strcmp(LEDON1, (const char *)payload) == 0) { +
-        writeLED1(true); +
-      } +
-      else if (strcmp(LEDOFF1, (const char *)payload) == 0) { +
-        writeLED1(false); +
-      } +
-      else { +
-        Serial.println("Unknown command"); +
-      } +
-      // send data to all connected clients +
-      webSocket.broadcastTXT(payloadlength); +
-      break; +
-    case WStype_BIN+
-      Serial.printf("[%u] get binary length: %u\r\n", numlength); +
-      hexdump(payload, length); +
-  +
-      // echo data back to browser +
-      webSocket.sendBIN(numpayload, length); +
-      break; +
-    default: +
-      Serial.printf("Invalid WStype [%d]\r\n"type); +
-      break; +
-  }+
 } }
-  + 
-void handleRoot() +void loop() { 
-+  digitalClockDisplay(); 
-  server.send_P(200, "text/html", INDEX_HTML);+  Alarm.delay(1000);
 } }
-  + 
-void handleNotFound() +// encender ventilador 
-+void prenderVentilador(){ 
-  String message = "File Not Found\n\n"; +  Serial.println("Ventilando"); 
-  message += "URI: "; +  digitalWrite(pinHIGH);
-  message += server.uri(); +
-  message += "\nMethod: "+
-  message += (server.method(== HTTP_GET)?"GET":"POST"+
-  message += "\nArguments: "; +
-  message += server.args(); +
-  message += "\n"; +
-  for (uint8_t i=0; i<server.args(); i++){ +
-    message += " " + server.argName(i) + ": " + server.arg(i) + "\n"; +
-  } +
-  server.send(404, "text/plain"message);+
 } }
-  + 
-static void writeLED(bool LEDon) + 
-+// encender ventilador 
-  LEDStatus = LEDon; +void apagarVentilador(){ 
-  // Note inverted logic for Adafruit HUZZAH board +  Serial.println("apagando ventilador"); 
-  if (LEDon) { +  digitalWrite(pinLOW);
-    digitalWrite(LEDPIN, 1); +
-  +
-  else { +
-    digitalWrite(LEDPIN0); +
-  }+
 } }
  
-static void writeLED1(bool LEDon) +// función que enciende el riego 
-+void prenderSensorRiegoManana(){ 
-  LEDStatus1 = LEDon; +  Serial.println("Alarm: - Sensor encendido y regando");   
-  // Note inverted logic for Adafruit HUZZAH board +  digitalWrite(pinHIGH);  
-  if (LEDon) { +
-    digitalWrite(LEDPIN1, 1); +
-  } +
-  else { +
-    digitalWrite(LEDPIN10); +
-  }+
 } }
  
-// función que prepara la trama de datos para hacer un POST a endpoint del influx +// función que apaga el riego 
-String influxFrameString dht11_humidity, String dht11_temperature ) { +void apagarSensorRiegoManana(){ 
-  // este es el nombre del sensor +  Serial.println("Alarm: - Sensor apagado y riego apagado");  
-  // Siempre que se quema la primera vez, se debe de cambiar el nombre del sensor +  digitalWrite(pin, LOW);   
-  const String SENSOR_ID = "DHT11_llanadas"; // Nombre del sensor en la plataforma +
-  +
-  const String STR_COMMA = ","; +
-  const String STR_SLASH = "/"; +
-  const String STR_DOT = "."+
-  const String STR_COLON = ":"; +
-  const String STR_NULL = "NULL"; +
-  const String STR_ZERO = "0"; +
-  const String STR_SPACE = " "; +
-  +
-  // El primer dato en el squema de la DB es el id del sensor +
-  String frame = SENSOR_ID + STR_COMMA + "id=" + SENSOR_ID +  STR_SPACE; +
-  +
-  // Add GPS data +
-  frame += "lat="; +
-  frame += "6.2563143" + STR_COMMA; // coordenada GSP lat +
-  frame += "lng="; +
-  frame += "-75.5386472+ STR_COMMA// coordenada lng lat +
-  frame += "altitude="; +
-  frame += STR_ZERO + STR_COMMA; +
-  frame += "course="; +
-  frame += STR_ZERO + STR_COMMA; +
-  frame += "speed="; +
-  frame += STR_ZERO + STR_COMMA; +
-  +
-  //Add DHT11 data +
-  //if +
-    frame += "humidity="; +
-    frame += dht11_humidity + STR_COMMA; +
-    frame += "temperature="; +
-    frame += dht11_temperature + STR_COMMA; +
-  // } else { +
-  //   frame += "humidity=" + STR_NULL + STR_COMMA + "temperature=" + STR_NULL + STR_COMMA; +
-  // } +
-  +
-  // Add Plantower data +
-    // if +
-    frame += "pm1="; +
-    frame += STR_ZERO + STR_COMMA; +
-    frame += "pm25="; +
-    frame += STR_ZERO + STR_COMMA; +
-    frame += "pm10="; +
-    frame += STR_ZERO; +
-  // } else { +
-  //   frame += "pm1=" + STR_NULL + STR_COMMA + "pm25=" + STR_NULL + STR_COMMA + "pm10=" + STR_NULL; +
-  // } +
-  +
-  return frame;+
 } }
-  + 
-// función que envía la trama de datos +void EveningAlarm(){ 
-void sendDataInflux String humidity, String temperature ) { +  Serial.println("Alarm: - turn lights on");           
-  /* +
-  El post a la base de datos tiene una trama siguiente: +
-  // volker0001,id=volker0001 lat=6.268115,lng=-75.543407,altitude=1801.1,course=105.55,speed=0.00,humidity=37.00,temperature=25.00,pm1=22,pm25=31,pm10=32 +
-  Para nuestro caso que SOLO es el envío de datos del dht_11 que es humedad y temperatura la trama es la siguiente +
-  // DHT11_llanadas, id=DHT11_llanadas, lat=6.2563143, lng=-75.5386472, altitude=0, course=0, speed=0, humidity=37.00, temperature=25.00, pm1=0, pm25=0, pm10=0 1434055562000000000 +
-  */   +
-  HTTPClient http;  +
-  // _testsensorhumedad es el nombre de la DB donde se almacenan estos datos +
-  http.begin("http://aqa.unloquer.org:8086/write?db=_testsensorhumedad"); // endPoint final, '_testsensorhumedad' es el nombre de la base de datos +
-  http.setTimeout(HTTP_TIMEOUT); +
-  http.addHeader("Content-Type", "--data-binary");   +
-  +
-  String frame = influxFrame(humidity, temperature); // Construimos el request POST +
-  +
-  int httpCode = http.POST(frame); // Envíamos los datos haciendo un POST +
-  +
-  if(httpCode > 0) { +
-    String payload = http.getString(); +
-    Serial.println(payload); +
-    Serial.println("Envío de datos con exito!"); +
-  } else { +
-    Serial.print("[HTTP] failed, error;"); +
-    Serial.println(http.errorToString(httpCode).c_str()); +
-  } +
-  +
-  http.end(); +
-  delay(60000); // cada minuto se envía un POST al influx+
 } }
-  
-void setup() 
-{ 
-  pinMode(LEDPIN, OUTPUT); 
-  pinMode(LEDPIN1, OUTPUT); 
-  writeLED(false); 
-  writeLED1(false); 
-  
-  Serial.begin(115200); 
  
-  // init pantalla +void WeeklyAlarm(){ 
-  display.begin(SSD1306_SWITCHCAPVCC); +  Serial.println("Alarm: - its Monday Morning");       
-  display.display(); +}
-  delay(1000); +
-  display.clearDisplay(); +
-  display.setTextSize(1); +
-  display.setTextColor(WHITE);+
  
-  Serial.println(F("DHTxx test!")); +void ExplicitAlarm(){ 
-  dht.begin(); +  Serial.println("Alarm: this triggers only at the given date and time");        
-  +}
-  //Serial.setDebugOutput(true); +
-  +
-  Serial.println(); +
-  Serial.println(); +
-  Serial.println(); +
-  +
-  for(uint8_t t = 4; t > 0; t--) { +
-    Serial.printf("[SETUP] BOOT WAIT %d...\r\n", t); +
-    Serial.flush(); +
-    delay(1000); +
-  }+
  
-   +void Repeats(){ 
-  +  digitalWrite(pin, HIGH); 
-  WiFiMulti.addAP(ssid, password); +  Alarm.delay(60000); 
-  +  Serial.println("ventilando x un minuto");  
-  while(WiFiMulti.run() != WL_CONNECTED) { +  digitalWrite(pinLOW); 
-    Serial.print("."); +  Alarm.delay(1000); 
-    delay(100); +  Serial.println("apagando ventilador"); 
-  +
-  +
-  Serial.println(""); +
-  Serial.print("Connected to "); +
-  Serial.println(ssid); +
-  Serial.print("IP address: "); +
-  Serial.println(WiFi.localIP()); +
-  +
-  if (mdns.begin("espWebSock"WiFi.localIP())) { +
-    Serial.println("MDNS responder started"); +
-    mdns.addService("http", "tcp", 80); +
-    mdns.addService("ws", "tcp", 81); +
-  +
-  else { +
-    Serial.println("MDNS.begin failed"); +
-  } +
-  Serial.print("Connect to http://espWebSock.local or http://"); +
-  Serial.println(WiFi.localIP()); +
-  +
-  server.on("/", handleRoot); +
-  server.onNotFound(handleNotFound); +
-  +
-  server.begin(); +
-  +
-  webSocket.begin(); +
-  webSocket.onEvent(webSocketEvent);+
 } }
-  
-void loop() 
-{ 
-  webSocket.loop(); 
-  server.handleClient(); 
  
-  // dht11 y pantall +void OnceOnly(){ 
-  static unsigned int h = 0+  Serial.println("This timer only triggers once")  
-  static unsigned int t = 0;+}
  
-  h = dht.readHumidity() +void digitalClockDisplay() 
-  t = dht.readTemperature(); +{ 
-  /* +  // digital clock display of the time 
-  // Si las lecturas fallan, salimos, no mandamos nada y volvemos a intentarlo +  Serial.print(hour()); 
-  if (isnan(h|| isnan(t)) { +  printDigits(minute()); 
-    Serial.println(F("Failed to read from DHT sensor!")); +  printDigits(second()); 
-    return; +  Serial.println();  
-  } +}
-  */+
  
-  display.clearDisplay(); +void printDigits(int digits
-  display.setCursor(0,0); +{ 
-  display.print("UN/LOQUER \n"); +  Serial.print(":"); 
-  display.print("HUM  "); +  if(digits < 10
-  display.print(h); +  Serial.print('0'); 
-  display.print(" % \n"); +  Serial.print(digits);
-  display.print("TEM:  "); +
-  display.print(t); +
-  display.print(" C \n"); +
-  display.print("IP: "); +
-  display.print(WiFi.localIP()); +
-  display.display(); +
- +
-  // sendDataInflux(String(h), String(t)); // se tiene que mandar los datos por websokect + no por protocolo http+
 } }
- 
- 
 </code> </code>
- 
- 
- 
- 
- 
  
  
  
personas/johnny/proyectos/indoor_diy_autosostenible.txt · Última modificación: 2020/08/13 06:00 por kz