Arduino-Sample-Codes/Sim7600_MQTT.ino

/*
Developed by Nandu, Anandu, Unnikrishnan
Company: Elementz Engineers Guild Pvt Ltd
*/
#include<SoftwareSerial.h>
SoftwareSerial mySerial(3,2);
#define sw 5
#define led 7
int flag = 1;
int flag1 = 0;
int state=0;
String Publish = “led/publish“; //Publish Topic
String Subscribe = “led/subscribe“; //Subscribe Topic
void setup()
{
Serial.begin(9600);
mySerial.begin(9600);
pinMode(sw, INPUT_PULLUP);
pinMode(led, OUTPUT);
digitalWrite(led, LOW);
//AT Commands for setting up the client id and Server
//Need to be executed once — Open serial terminal doe seeing the debug messages
Serial.println(“Connecting To Server……..“);
mySerial.println(“ATE0“);
delay(2000);
mySerial.println(“AT+CMQTTSTART“); //Establishing MQTT Connection
delay(2000);
mySerial.println(“AT+CMQTTACCQ=0,\”elementz/123\”“); //Client ID – change this for each client as this need to be unique
delay(2000);
mySerial.println(“AT+CMQTTCONNECT=0,\”tcp://test.mosquitto.org:1883\”,90,1“); //MQTT Server Name for connecting this client
delay(2000);
//SUBSCRIBE MESSAGE
//Need to be executed once
mySerial.println(“AT+CMQTTSUBTOPIC=0,9,1“); //AT Command for Setting up the Subscribe Topic Name
delay(2000);
mySerial.println(Subscribe); //Topic Name
delay(2000);
mySerial.println(“AT+CMQTTSUB=0,4,1,1“); //Length of message
delay(2000);
mySerial.println(“HAII“); //message
delay(2000);
Serial.println(“Done“);
}
void loop()
{
String a;
if(state==0)
{
if(digitalRead(sw) == 0 && flag1 == 0)
{
//PUBLISH MESSAGE
flag1 = 1;
digitalWrite(led, HIGH);
Serial.println(“Publishing Message: LED ON“);
mySerial.println(“AT+CMQTTTOPIC=0,8“); //AT Command for Setting up the Publish Topic Name
delay(1000);
mySerial.println(Publish); //Topic Name
delay(1000);
mySerial.println(“AT+CMQTTPAYLOAD=0,1“); //Payload length
delay(1000);
mySerial.println(“a“); //Payload message
delay(1000);
mySerial.println(“AT+CMQTTPUB=0,1,60“); //Acknowledgment
delay(1000);
}
else if(digitalRead(sw) == 0 && flag1 == 1)
{
flag1 = 0;
digitalWrite(led, LOW);
Serial.println(“Publishing Message: LED OFF“);
mySerial.println(“AT+CMQTTTOPIC=0,8“); //AT Command for Setting up the Publish Topic Name
delay(1000);
mySerial.println(Publish); //Topic Name
delay(1000);
mySerial.println(“AT+CMQTTPAYLOAD=0,1“); //Payload length
delay(1000);
mySerial.println(“b“); //Payload message
delay(1000);
mySerial.println(“AT+CMQTTPUB=0,1,60“); //Acknowledgment
delay(1000);
}
}
if(state==1)
{
if(digitalRead(sw) == 0 && flag1 == 0)
{
//PUBLISH MESSAGE
flag1 = 1;
digitalWrite(led, LOW);
Serial.println(“Publishing Message: LED OFF“);
mySerial.println(“AT+CMQTTTOPIC=0,8“); //AT Command for Setting up the Publish Topic Name
delay(1000);
mySerial.println(Publish); //Topic Name
delay(1000);
mySerial.println(“AT+CMQTTPAYLOAD=0,1“); //Payload length
delay(1000);
mySerial.println(“b“); //Payload message
delay(1000);
mySerial.println(“AT+CMQTTPUB=0,1,60“); //Acknowledgment
delay(1000);
}
else if(digitalRead(sw) == 0 && flag1 == 1)
{
flag1 = 0;
digitalWrite(led,HIGH);
Serial.println(“Publishing Message: LED ON“);
mySerial.println(“AT+CMQTTTOPIC=0,8“); //AT Command for Setting up the Publish Topic Name
delay(1000);
mySerial.println(Publish); //Topic Name
delay(1000);
mySerial.println(“AT+CMQTTPAYLOAD=0,1“); //Payload length
delay(1000);
mySerial.println(“a“); //Payload message
delay(1000);
mySerial.println(“AT+CMQTTPUB=0,1,60“); //Acknowledgment
delay(1000);
}
}
//Receiving MODEM Response
while(mySerial.available()>0)
{
delay(10);
a = mySerial.readString();
if(flag==0)
{
//Serial.println(a);
flag = 1;
}
//Serial.println(b);
if(a.indexOf(“PAYLOAD“) != –1)
{
flag = 0;
int new1 = a.indexOf(“PAYLOAD“);
String neww = a.substring(new1);
int new2 = neww.indexOf(‘\n‘);
String new3 = neww.substring(new2+1);
int new4 = new3.indexOf(‘\n‘);
String new5 = new3.substring(0,new4);
Serial.println(“Topic: led/subscribe“);
Serial.print(“Message is: “);
Serial.println(new5);
new5.remove(new5.length()-1);
if(new5 == “a“)
{
state=1;
Serial.println(“LED ON“);
digitalWrite(led, HIGH);
}
else if(new5 == “b“)
{
state=0;
flag1=0;
Serial.println(“LED OFF“);
digitalWrite(led, LOW);
}
}
}
}

 

Source: Arduino-Sample-Codes/Sim7600_MQTT.ino at master · elementzonline/Arduino-Sample-Codes · GitHub

Leave a Reply