internet de las cosas

Bueno, cada vez escribiendo menos.

Durante el  mes de enero 2017 participé en un Taller organizado por @Club Arduino Chile relacionado con la Internet de las cosas.   Todo bien, una exposición clarita, una presentación explicando  a grandes rasgos los elementos que constituyen una interacción básica con las cosas a través de internet.

    Basicamente las cosas se comunican  a través de internet a través de algún protocolo  de comunicaciones que,al igual que mi vecina, es quien lleva y trae los mensajes.  En términos de hardware, el kit con que se desarrrolló el Taller  consistía en madera terciada cortada con laser simulando un edificio de 3 pisos, una tarjeta NodeMcu, una protoboard + cables  y leds.

para programar la NodeMcu usamos el IDE arduino, potenciado con las librería apropiada para comunicarse con la NodeMcu, agregada al ide desde aca.


Le subimos este código

#include
#include

const int primerPiso  = 5;    //D1
const int segundoPiso = 4;    //D2
const int tercerPiso  = 0;    //D3

char message_buff[100];


const char* ssid = "nombredetured";
const char* password = "clavedetured";
const char* mqtt_server = "nombredetuservidor";

WiFiClient espClient;
PubSubClient client(espClient);
long lastMsg = 0;
char msg[50];
int value = 0;

void setup() {
  pinMode(primerPiso, OUTPUT);
  pinMode(segundoPiso, OUTPUT);
  pinMode(tercerPiso, OUTPUT);

  setup_wifi();
  client.setServer(mqtt_server, 1883);
  client.setCallback(callback);
}

void setup_wifi() {
  delay(10);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
  }
}

void callback(char* topic, byte* payload, unsigned int length) {
  int i = 0;
  for (i = 0; i < length; i++) {
    message_buff[i] = payload[i];
  }
  message_buff[i] = '\0';
  String msgString = String(message_buff);

  if (msgString.equals("off")) {
    digitalWrite(primerPiso, LOW);
    digitalWrite(segundoPiso, LOW);
    digitalWrite(tercerPiso, LOW);
  } else if (msgString.equals("a")) {
    digitalWrite(primerPiso, HIGH);
    digitalWrite(segundoPiso, LOW);
    digitalWrite(tercerPiso, LOW);
  } else if (msgString.equals("b")) {
    digitalWrite(primerPiso, LOW);
    digitalWrite(segundoPiso, HIGH);
    digitalWrite(tercerPiso, LOW);
  } else if (msgString.equals("c")) {
    digitalWrite(primerPiso, HIGH);
    digitalWrite(segundoPiso, HIGH);
    digitalWrite(tercerPiso, LOW);
  } else if (msgString.equals("d")) {
    digitalWrite(primerPiso, LOW);
    digitalWrite(segundoPiso, LOW);
    digitalWrite(tercerPiso, HIGH);
  } else if (msgString.equals("e")) {
    digitalWrite(primerPiso, HIGH);
    digitalWrite(segundoPiso, LOW);
    digitalWrite(tercerPiso, HIGH);
  } else if (msgString.equals("f")) {
    digitalWrite(primerPiso, LOW);
    digitalWrite(segundoPiso, HIGH);
    digitalWrite(tercerPiso, HIGH);
  } else if (msgString.equals("on")) {
    digitalWrite(primerPiso, HIGH);
    digitalWrite(segundoPiso, HIGH);
    digitalWrite(tercerPiso, HIGH);
  }

}

void reconnect() {
  while (!client.connected()) {
    if (client.connect("NodeMCUPato")) {
      client.publish("ClubArduino/Pato", "Hola, soy el departamento de Pato");
      client.subscribe("ClubArduino/Pato");
    } else {
      delay(5000);
    }
  }
}

void loop() {
  if (!client.connected()) {
    reconnect();
  }
  client.loop();
}

Este código se carga desde el  IDE arduino al dispositivo NodeMcu para que actúe como cliente.
Y habiendo cliente, tiene que haber un b̶a̶r̶  Servidor que centralice las comunicaciones. En este caso, el servidor estaba montado en una raspberry pi que levantaba un servidor https://mosquitto.org/  al cual  accedimos a través del protocolo mqtt.





Y bueno, básicamente la aplicación embebida en la placa espera que le llegue uno de los caracteres definidos en el código para reaccionar encendiendo o apagando los led respectivos. Estos caracteres los enviamos desde la aplicación para android mqtt dash  Algo así:

Hasta ahí el Taller. Perfecto.

EL siguiente paso... probar, echar  a perder, experimentar.

Probaremos la aplicaciòn blynk para android siguiendo los pasos de este detallado tutorial






.



Comentarios

Entradas más populares de este blog

Pizarra digital Mimio en Ubuntu 14.04

REnpy. Probando software para creación de historias.