HOPE I managed to send a PM
Yes, i have got it, but i did not find any account associated with the email id you sent.
can you change this.
Apologies ,
That is my Slack, Sending it now
Hello Shramik,
Hope you received my PM with the correct e,mail address
what about this?
Shramik,
I will remove the delays next time I run it. The reason I am using them is as in a previous ESP to CAyenne integration, data was not sent across to the platform without using delays.
Where can I find info on using millis in the Cayenne OUT loop please?
are you sure?
Yes I am sure as we did try resolving this together and we decided to use delays in the end.
Is there a tested piece of code using millis that you might have handy?
can you share this code as text file.
MEGA SIM808 CAYENNE.txt (3.6 KB)
for the above code you have commented delay. can you upload and share a screenshot of it.
can you add a new device, and use this code:-
#define CAYENNE_DEBUG // Uncomment to show debug messages
#define CAYENNE_PRINT Serial // Comment this out to disable prints and save space
// Uncomment your modem type:
//#define TINY_GSM_MODEM_SIM800
#define TINY_GSM_MODEM_SIM808
// #define TINY_GSM_MODEM_SIM900
// #define TINY_GSM_MODEM_UBLOX
// #define TINY_GSM_MODEM_BG96
// #define TINY_GSM_MODEM_A6
// #define TINY_GSM_MODEM_A7
// #define TINY_GSM_MODEM_M590
// #define TINY_GSM_MODEM_ESP8266
// #define TINY_GSM_MODEM_XBEE
#include <CayenneMQTTGSM.h>
#define VIRTUAL_CHANNEL 2
#define gsmSerial Serial1
// GSM connection info.
char apn[] = ""; // Access point name. Leave empty if it is not needed.
char gprsLogin[] = ""; // GPRS username. Leave empty if it is not needed.
char gprsPassword[] = ""; // GPRS password. Leave empty if it is not needed.
char pin[] = ""; // SIM pin number. Leave empty if it is not needed.
// Cayenne authentication info. This should be obtained from the Cayenne Dashboard.
char username[] = "";
char password[] = "";
char clientID[] = "";
void setup() {
Serial.begin(9600);
Serial.println("Starting.....");
TinyGsmAutoBaud(gsmSerial);
Cayenne.begin(username, password, clientID, gsmSerial, apn, gprsLogin, gprsPassword, pin);
}
void loop() {
Cayenne.loop();
}
CAYENNE_OUT_DEFAULT()
{
Cayenne.virtualWrite(VIRTUAL_CHANNEL, 0);
}
can you try this code. what is the output of this.
// Select your modem:
//#define TINY_GSM_MODEM_SIM800
#define TINY_GSM_MODEM_SIM808
// #define TINY_GSM_MODEM_SIM868
// #define TINY_GSM_MODEM_SIM900
// #define TINY_GSM_MODEM_SIM7000
// #define TINY_GSM_MODEM_SIM5360
// #define TINY_GSM_MODEM_SIM7600
// #define TINY_GSM_MODEM_UBLOX
// #define TINY_GSM_MODEM_SARAR4
// #define TINY_GSM_MODEM_M95
// #define TINY_GSM_MODEM_BG96
// #define TINY_GSM_MODEM_A6
// #define TINY_GSM_MODEM_A7
// #define TINY_GSM_MODEM_M590
// #define TINY_GSM_MODEM_MC60
// #define TINY_GSM_MODEM_MC60E
// #define TINY_GSM_MODEM_ESP8266
// #define TINY_GSM_MODEM_XBEE
// #define TINY_GSM_MODEM_SEQUANS_MONARCH
// Set serial for debug console (to the Serial Monitor, default speed 115200)
#define SerialMon Serial
// Set serial for AT commands (to the module)
// Use Hardware Serial on Mega, Leonardo, Micro
#define SerialAT Serial1
// or Software Serial on Uno, Nano
//#include <SoftwareSerial.h>
//SoftwareSerial SerialAT(2, 3); // RX, TX
// See all AT commands, if wanted
// #define DUMP_AT_COMMANDS
// Define the serial console for debug prints, if needed
#define TINY_GSM_DEBUG SerialMon
// Range to attempt to autobaud
#define GSM_AUTOBAUD_MIN 9600
#define GSM_AUTOBAUD_MAX 115200
// Add a reception delay - may be needed for a fast processor at a slow baud rate
// #define TINY_GSM_YIELD() { delay(2); }
// Define how you're planning to connect to the internet
#define TINY_GSM_USE_GPRS true
#define TINY_GSM_USE_WIFI false
// set GSM PIN, if any
#define GSM_PIN ""
// Your GPRS credentials, if any
const char apn[] = "YourAPN";
const char gprsUser[] = "";
const char gprsPass[] = "";
// Your WiFi connection credentials, if applicable
const char wifiSSID[] = "YourSSID";
const char wifiPass[] = "YourWiFiPass";
// MQTT details
const char* broker = "broker.hivemq.com";
const char* topicLed = "GsmClientTest/led";
const char* topicInit = "GsmClientTest/init";
const char* topicLedStatus = "GsmClientTest/ledStatus";
#include <TinyGsmClient.h>
#include <PubSubClient.h>
// Just in case someone defined the wrong thing..
#if TINY_GSM_USE_GPRS && not defined TINY_GSM_MODEM_HAS_GPRS
#undef TINY_GSM_USE_GPRS
#undef TINY_GSM_USE_WIFI
#define TINY_GSM_USE_GPRS false
#define TINY_GSM_USE_WIFI true
#endif
#if TINY_GSM_USE_WIFI && not defined TINY_GSM_MODEM_HAS_WIFI
#undef TINY_GSM_USE_GPRS
#undef TINY_GSM_USE_WIFI
#define TINY_GSM_USE_GPRS true
#define TINY_GSM_USE_WIFI false
#endif
#ifdef DUMP_AT_COMMANDS
#include <StreamDebugger.h>
StreamDebugger debugger(SerialAT, SerialMon);
TinyGsm modem(debugger);
#else
TinyGsm modem(SerialAT);
#endif
TinyGsmClient client(modem);
PubSubClient mqtt(client);
#define LED_PIN 13
int ledStatus = LOW;
uint32_t lastReconnectAttempt = 0;
void mqttCallback(char* topic, byte* payload, unsigned int len) {
SerialMon.print("Message arrived [");
SerialMon.print(topic);
SerialMon.print("]: ");
SerialMon.write(payload, len);
SerialMon.println();
// Only proceed if incoming message's topic matches
if (String(topic) == topicLed) {
ledStatus = !ledStatus;
digitalWrite(LED_PIN, ledStatus);
mqtt.publish(topicLedStatus, ledStatus ? "1" : "0");
}
}
boolean mqttConnect() {
SerialMon.print("Connecting to ");
SerialMon.print(broker);
// Connect to MQTT Broker
boolean status = mqtt.connect("GsmClientTest");
// Or, if you want to authenticate MQTT:
//boolean status = mqtt.connect("GsmClientName", "mqtt_user", "mqtt_pass");
if (status == false) {
SerialMon.println(" fail");
return false;
}
SerialMon.println(" success");
mqtt.publish(topicInit, "GsmClientTest started");
mqtt.subscribe(topicLed);
return mqtt.connected();
}
void setup() {
// Set console baud rate
SerialMon.begin(115200);
delay(10);
pinMode(LED_PIN, OUTPUT);
// !!!!!!!!!!!
// Set your reset, enable, power pins here
// !!!!!!!!!!!
SerialMon.println("Wait...");
// Set GSM module baud rate
TinyGsmAutoBaud(SerialAT, GSM_AUTOBAUD_MIN, GSM_AUTOBAUD_MAX);
// SerialAT.begin(9600);
delay(6000);
// Restart takes quite some time
// To skip it, call init() instead of restart()
SerialMon.println("Initializing modem...");
modem.restart();
// modem.init();
String modemInfo = modem.getModemInfo();
SerialMon.print("Modem Info: ");
SerialMon.println(modemInfo);
#if TINY_GSM_USE_GPRS
// Unlock your SIM card with a PIN if needed
if ( GSM_PIN && modem.getSimStatus() != 3 ) {
modem.simUnlock(GSM_PIN);
}
#endif
#if TINY_GSM_USE_WIFI
// Wifi connection parameters must be set before waiting for the network
SerialMon.print(F("Setting SSID/password..."));
if (!modem.networkConnect(wifiSSID, wifiPass)) {
SerialMon.println(" fail");
delay(10000);
return;
}
SerialMon.println(" success");
#endif
#if TINY_GSM_USE_GPRS && defined TINY_GSM_MODEM_XBEE
// The XBee must run the gprsConnect function BEFORE waiting for network!
modem.gprsConnect(apn, gprsUser, gprsPass);
#endif
SerialMon.print("Waiting for network...");
if (!modem.waitForNetwork()) {
SerialMon.println(" fail");
delay(10000);
return;
}
SerialMon.println(" success");
if (modem.isNetworkConnected()) {
SerialMon.println("Network connected");
}
#if TINY_GSM_USE_GPRS
// GPRS connection parameters are usually set after network registration
SerialMon.print(F("Connecting to "));
SerialMon.print(apn);
if (!modem.gprsConnect(apn, gprsUser, gprsPass)) {
SerialMon.println(" fail");
delay(10000);
return;
}
SerialMon.println(" success");
if (modem.isGprsConnected()) {
SerialMon.println("GPRS connected");
}
#endif
// MQTT Broker setup
mqtt.setServer(broker, 1883);
mqtt.setCallback(mqttCallback);
}
void loop() {
if (!mqtt.connected()) {
SerialMon.println("=== MQTT NOT CONNECTED ===");
// Reconnect every 10 seconds
uint32_t t = millis();
if (t - lastReconnectAttempt > 10000L) {
lastReconnectAttempt = t;
if (mqttConnect()) {
lastReconnectAttempt = 0;
}
}
delay(100);
return;
}
mqtt.loop();
}
`There are no credential fileds for Cayenne, correct?
Wait…
[9] Trying bau success
Network connected
Connecting to internet⸮m⸮Z⸮⸮⸮⸮⸮e⸮,⸮⸮I⸮⸮vi⸮⸮)9⸮⸮@⸮C⸮C⸮⸮
Ύ⸮G!⸮⸮⸮w⸮k⸮⸮⸮⸮*⸮⸮Wait…
[9] Trying baud rate 115200 …
[1024] Modem responded at rate 115200
Initializing modem…
[15083] ### TinyGSM Version: 0.7.9
[15316] ### Modem: SIMCOM SIM808
[15316] ### Modem: SIMCOM SIM808
Modem Info: SIM808 R14.18
Waiting for network… success
Network connected
Connecting to internet success
GPRS connected
[29426] ### Available: 0 on 1
=== MQTT NOT CONNECTED ===
Connecting to broker.hivemq.com[30671] ### Available: 0 on 1
[31171] ### Available: 0 on 1
[31201] ### Got Data: 1
[31222] ### Available: 4 on 1
[32225] ### Unhandled: +CI⸮```@@
[32234] ### Available: 0 on 1
[32733] ### Available: 0 on 1
[33235] ### Available: 0 on 1
[33735] ### Available: 0 on 1
[34236] ### Available: 0 on 1
[34738] ### Available: 0 on 1
[35240] ### Available: 0 on 1
[35740] ### Available: 0 on 1
[36241] ### Available: 0 on 1
[36743] ### Available: 0 on 1
[37244] ### Available: 0 on 1
[37745] ### Available: 0 on 1
[38246] ### Available: 0 on 1
[38641] ### Closed: 1
[38748] ### Available: 0 on 1
[39249] ### Available: 0 on 1
[39749] ### Available: 0 on 1
[40250] ### Available: 0 on 1
[40753] ### Available: 0 on 1
[41252] ### Available: 0 on 1
[41753] ### Available: 0 on 1
[42254] ### Available: 0 on 1
[42756] ### Available: 0 on 1
[43256] ### Available: 0 on 1
[43757] ### Available: 0 on 1
[44258] ### Available: 0 on 1
[44760] ### Available: 0 on 1
[45260] ### Available: 0 on 1
[45761] ### Available: 0 on 1
[46262] ### Available: 0 on 1
[46764] ### Available: 0 on 1
fail
[47338] ### Available: 0 on 1
=== MQTT NOT CONNECTED ===
Connecting to broker.hivemq.com[49332] ### Available: 0 on 1
[49836] ### Available: 0 on 1
[49873] ### Got Data: 1
[49895] ### Available: 4 on 1
[50897] ### Unhandled: +C P`@ @
[50906] ### Available: 0 on 1
[51405] ### Available: 0 on 1
[51906] ### Available: 0 on 1
[52407] ### Available: 0 on 1
[52911] ### Available: 0 on 1
[53409] ### Available: 0 on 1
[53910] ### Available: 0 on 1
[54411] ### Available: 0 on 1
[54913] ### Available: 0 on 1
[55413] ### Available: 0 on 1
[55914] ### Available: 0 on 1
[56415] ### Available: 0 on 1
[56916] ### Available: 0 on 1
[57417] ### Available: 0 on 1
[57918] ### Available: 0 on 1
[58419] ### Available: 0 on 1
[58764] ### Closed: 1
[58920] ### Available: 0 on 1
[59421] ### Available: 0 on 1
[59924] ### Available: 0 on 1
[60423] ### Available: 0 on 1
[60924] ### Available: 0 on 1
[61425] ### Available: 0 on 1
[61926] ### Available: 0 on 1
[62428] ### Available: 0 on 1
[62928] ### Available: 0 on 1
[63429] ### Available: 0 on 1
[63930] ### Available: 0 on 1
[64432] ### Available: 0 on 1
[64932] ### Available: 0 on 1
[65433] ### Available: 0 on 1
fail
[66010] ### Available: 0 on 1
=== MQTT NOT CONNECTED ===
Connecting to broker.hivemq.com[67283] ### Available: 0 on 1
[67783] ### Available: 0 on 1
[68133] ### Got Data: 1
[68155] ### Available: 4 on 1
[69157] ### Unhandled: +CI@ ⸮
[69167] ### Available: 0 on 1
[69666] ### Available: 0 on 1
[70166] ### Available: 0 on 1
[70667] ### Available: 0 on 1
[71169] ### Available: 0 on 1
[71669] ### Available: 0 on 1
[72170] ### Available: 0 on 1
[72671] ### Available: 0 on 1
[73172] ### Available: 0 on 1
[73673] ### Available: 0 on 1
this clearly shows that the device is not able to connect to MQTT server and cayenne is based on the TinyGSM library from which is the above code example.
Possubly,
But it is shown connecting to GPRS and obtaining an IP, am I correct?
yes, it connects to the internet.
So you are worried whether the provider allows MQTT traffic to flow in their network?
Which MQTT ports do you use ?