Navigation

    • Register
    • Login
    • Search
    • OpenHardware.io
    • Categories
    • Recent
    • Tags
    • Popular
    1. Home
    2. danE
    • Profile
    • Following
    • Followers
    • Topics
    • Posts
    • Best
    • Groups

    danE

    @danE

    0
    Reputation
    2
    Posts
    173
    Profile views
    0
    Followers
    0
    Following
    Joined Last Online

    danE Follow

    Best posts made by danE

    This user hasn't posted anything yet.

    Latest posts made by danE

    • RE: MQTT Epic Fail

      @gohan didn't realize this was a forum for a specific development environment came here following a trail of other esp 8266 related issues and threw down a post. I see now I'm in the wrong place.

      posted in Troubleshooting
      danE
      danE
    • MQTT Epic Fail

      I have several sensors and alarms running very similar code, I'm using a wemos d1 mini for this one and Arduino ide for the code. Problem is mqtt client disconnects repeatedly throwing a socket error in the server side logs. I've changed the variables and the void reconnect code and the delay times around a bunch as well as uploading parts of the code separately to try and debug, so far nothing has helped the issue.
      Here's the code I'm currently trying to run...
      #include <PubSubClient.h>
      #include <ESP8266WiFi.h>

      #define MQTT_SERVER "192.168.0.123"

      const char* ssid = "censored";
      const char* password = "censored";
      const int indpin = 15;
      const int indpin2 = 12;
      const int indpin3 = 16;
      const int alrmpin1 = 2;
      const int alrmpin2 = 0;
      const int button1 = 14;
      const int button2 = 13;
      int button1Stat = 0;
      int button1Count = 0;
      int button1last = 0;
      int button2Stat = 0;
      int button2Count = 0;
      int button2last = 0;

      void callback(char* topic, byte* payload, unsigned int length);

      WiFiClient wifiClient;
      PubSubClient client(MQTT_SERVER, 1883, callback, wifiClient);

      void setup() {
      pinMode(indpin2, OUTPUT);
      pinMode(indpin, OUTPUT);
      pinMode(indpin3, OUTPUT);
      pinMode(alrmpin1, OUTPUT);
      pinMode(alrmpin2, OUTPUT);
      pinMode(button1, INPUT);
      pinMode(button2, INPUT);

      digitalWrite(indpin, LOW);
      digitalWrite(indpin2, LOW);
      digitalWrite(indpin3, LOW);
      digitalWrite(alrmpin1, LOW);
      digitalWrite(alrmpin2, LOW);

      Serial.begin(115200);

      delay(100);

      WiFi.mode(WIFI_STA);
      WiFi.begin(ssid, password);

      reconnect();

      delay(2000);

      }

      void loop(){

      if (!client.connected() && WiFi.status() == 3) {reconnect();}
      client.loop();
      delay(1000);
      button1Stat = digitalRead(button1);

      if (button1Stat != button1last) {

      if (button1Stat == HIGH) {
        
        button1Count++;
       
      }
      
      delay(50);
      

      }

      button1last = button1Stat;

      if (button1Count % 2 == 0) {
      client.publish("indoor", "0");
      } else {
      client.publish("indoor", "1");
      }
      button2Stat = digitalRead(button2);

      if (button2Stat != button2last) {

      if (button2Stat == HIGH) {
        
        button2Count++;
       
      }
      
      delay(50);
      

      }

      button2last = button2Stat;

      if (button2Count % 2 == 0) {
      client.publish("Smotion", "0");
      } else {
      client.publish("Smotion", "1");
      }
      }
      void callback(char* topic, byte* payload, unsigned int length) {

      String topicStr = topic;

      Serial.println("Callback update.");

      Serial.print("Topic: ");

      Serial.println(topicStr);

      if(payload[0] == '1' && topic[0] == 'i'){

      digitalWrite(indpin, HIGH);
      

      }
      if (payload[0] == '0' && topic[0] == 'i'){

      digitalWrite(indpin, LOW);
      

      }

      if(payload[0] == '1' && topic[0] == 'S'){
      digitalWrite(indpin2, HIGH);
      }
      if(payload[0] == '0' && topic[0] == 'S'){
      digitalWrite(indpin2, LOW);
      }

      if (payload[0] == '1' && topic[0] == 's'){
      digitalWrite(indpin3, HIGH);
      }
      if (payload[0] == '0' && topic[0] == 's'){
      digitalWrite(indpin3, LOW);
      }
      if (payload[0] == '1' && topic[0] == 'o'){
      digitalWrite(alrmpin1, HIGH);
      }
      if (payload[0] == '0' && topic[0] == 'o'){
      digitalWrite(alrmpin1, LOW);
      }
      if (payload[0] == 'o' && topic[0] == 'o'){
      digitalWrite(alrmpin1, HIGH);
      }
      if (payload[0] == 'f' && topic[0] == 'o'){
      digitalWrite(alrmpin1, LOW);
      }
      if (payload[0] == '2' && topic[0] == 'm'){
      digitalWrite(alrmpin2, HIGH);
      delay(500);
      digitalWrite(alrmpin2, LOW);
      delay(500);
      digitalWrite(alrmpin2, HIGH);
      delay(500);
      digitalWrite(alrmpin2, LOW);
      delay(500);
      digitalWrite(alrmpin2, HIGH);
      delay(500);
      digitalWrite(alrmpin2, LOW);
      delay(500);
      digitalWrite(alrmpin2, HIGH);
      delay(500);
      digitalWrite(alrmpin2, LOW);
      delay(500);
      digitalWrite(alrmpin2, HIGH);
      delay(500);
      digitalWrite(alrmpin2, LOW);
      delay(500);
      digitalWrite(alrmpin2, HIGH);
      delay(500);
      digitalWrite(alrmpin2, LOW);
      delay(500);
      digitalWrite(alrmpin2, HIGH);
      delay(500);
      digitalWrite(alrmpin2, LOW);
      delay(500);
      digitalWrite(alrmpin2, HIGH);
      delay(500);
      digitalWrite(alrmpin2, LOW);
      }
      }

      void reconnect() {

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

      Serial.print("Connecting to ");
      
      Serial.println(ssid);
      
      while (WiFi.status() != WL_CONNECTED) {
      
        delay(500);
      
        Serial.print(".");
      
      }
      
      Serial.println("");
      
      Serial.println("WiFi connected");  
      
      Serial.println("IP address: ");
      
      Serial.println(WiFi.localIP());
      

      }

      if(WiFi.status() == WL_CONNECTED){
      while (!client.connected()) {
      Serial.print("Attempting MQTT connection...");
      String clientName;
      clientName += "Master-";
      uint8_t mac[6];
      WiFi.macAddress(mac);
      clientName += macToStr(mac);
      if (client.connect((char*) clientName.c_str())) {
      Serial.print("\tMTQQ Connected");

          client.subscribe("indoor");
          client.subscribe("Smotion");
          client.subscribe("sec2");
          client.subscribe("motion");
          client.subscribe("outdoor");
          client.subscribe("outdoor2");
        }
      
        else{Serial.println("\tFailed."); abort();}
      
      }
      

      }

      }

      String macToStr(const uint8_t* mac){
      String result;
      for (int i = 0; i < 6; ++i) {
      result += String(mac[i], 16);
      if (i < 5){
      result += ':';
      }
      }
      return result;
      }

      posted in Troubleshooting
      danE
      danE