Hola a todos.
Tengo un problema que he buscado para solucionarlo pero mi experiencia en arduino es poca, ya que estoy comenzando y me parece genial saber más de esto.
Tengo una Placa ESP8266, en la programación puedo hacer que me envie el estado del sensor por el puerto serial, pero no puedo hacer lo mismo para que me lo envie a mi software que funciona por un puerto TCP.
Una vez enviado yo puedo hacer cualquier cosa con el, pero he probado varias soluciones que he visto y no logro hacer que funcione.
este es mi codigo-
/*
Contacto Magnetico Señal TCP
*/
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
boolean alreadyConnected = false; // whether or not the client was connected previously
const char* ssid = "Moncortec-2G";
const char* password = "22636052";
#define MODE_STA
const int port = 2517;
WiFiServer server(port);
WiFiClient client;
int pin = 2;
volatile int state = false;
volatile int flag = false;
const char* door_state = "Main Door = 1";
unsigned long previousMillis = 0;
const long interval = 1000;
void changeDoorStatus() {
unsigned long currentMillis = millis();
if(currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
state = !state;
if(state) {
door_state = "Main Door = 0";
}
else{
door_state = "Main Door = 1";
}
flag = true;
}
}
void setup() {
Serial.begin(9600);
delay(100);
server.begin(); // start TCP server
pinMode(pin, OUTPUT);
attachInterrupt(digitalPinToInterrupt(pin), changeDoorStatus, CHANGE);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
}
void loop() {
if(flag){
if(Serial.available()) {
while(Serial.available()) {
}
// now send to WiFi:
client.write(door_state);
}
Serial.println(door_state);
//client.write(door_state);
flag = false;
}
delay(10);
}
Saludos
ESP8266_Motion_Sensor.ino (1.76 KB)