Good morning Cayenne-fellows,
I have purchased this module:
and I’m trying to get it to work with this minimum code example:
Features: connect co cayenne over MQTT using cellular connection and writing one single value. I’ve followed the code examples from cayenne and called the Cayenne.begin in the setup. However, to get any value transmitted, I have to call the Cayenne.begin() function before the measurement loop again. I am a bit puzzled now. Also, not all values are transmitted then but just 1-2 if I want to transmit more values.
Please see the code example from the manufacturer:
Could you eventually recommend a minimum code example from ESP32 with SIM800 to try for me?
#define SIM800L_IP5306_VERSION_20190610
#include “utilities.h”
#define SerialMon Serial
#define SerialAT Serial1
#define gsmSerial Serial1
// Configure TinyGSM library
#define TINY_GSM_MODEM_SIM800 // Modem is SIM800
#define TINY_GSM_RX_BUFFER 1024 // Set RX buffer to 1Kb
#include <TinyGsmClient.h>
#ifdef DUMP_AT_COMMANDS
#include <StreamDebugger.h>
StreamDebugger debugger(SerialAT, SerialMon);
TinyGsm modem(debugger);
#else
TinyGsm modem(SerialAT);
#endif
#define uS_TO_S_FACTOR 1000000ULL /* Conversion factor for micro seconds to seconds /
#define TIME_TO_SLEEP 20 / Time ESP32 will go to sleep (in seconds) */
// Your GPRS credentials (leave empty, if not needed)
const char apn = “iot.1nce.net”; // Access point name. Leave empty if it is not needed.
const char gprsUser = “”; // GPRS User
const char gprsPass = “”; // GPRS Password
char simPIN = “”; // SIM pin number. Leave empty if it is not needed.
// Cayenne authentication info. This should be obtained from the Cayenne Dashboard.
#include <CayenneMQTTGSM.h>
char username = “XXX”;
char password = “XXX”;
char clientID = “XXX”;
#define CAYENNE_DEBUG
#define CAYENNE_PRINT Serial
bool connected_ = false;
TinyGsmClient client(modem);
const int port = 80;
void setupModem()
{
#ifdef MODEM_RST
// Keep reset high
pinMode(MODEM_RST, OUTPUT);
digitalWrite(MODEM_RST, HIGH);
#endif
pinMode(MODEM_PWRKEY, OUTPUT);
pinMode(MODEM_POWER_ON, OUTPUT);
// Turn on the Modem power first
digitalWrite(MODEM_POWER_ON, HIGH);
// Pull down PWRKEY for more than 1 second according to manual requirements
digitalWrite(MODEM_PWRKEY, HIGH);
delay(100);
digitalWrite(MODEM_PWRKEY, LOW);
delay(1000);
digitalWrite(MODEM_PWRKEY, HIGH);
// Initialize the indicator as an output
pinMode(LED_GPIO, OUTPUT);
digitalWrite(LED_GPIO, LED_OFF);
}
void turnOffNetlight()
{
SerialMon.println(“Turning off SIM800 Red LED…”);
modem.sendAT(“+CNETLIGHT=0”);
}
void turnOnNetlight()
{
SerialMon.println(“Turning on SIM800 Red LED…”);
modem.sendAT(“+CNETLIGHT=1”);
}
void setup()
{
SerialMon.begin(115200);
delay(10);
// Start power management
if (setupPMU() == false) {
Serial.println(“Setting power error”);
}
// Some start operations
setupModem();
// Set GSM module baud rate and UART pins
SerialAT.begin(115200, SERIAL_8N1, MODEM_RX, MODEM_TX);
Cayenne.begin(username, password, clientID, gsmSerial, apn, gprsUser, gprsPass, simPIN);
}
void loop()
{
modem.restart();
Cayenne.begin(username, password, clientID, gsmSerial, apn, gprsUser, gprsPass, simPIN);
int temperature = 25;
SerialMon.println(“Sending values to Cayenne”);
Cayenne.virtualWrite(0, temperature, “temp”, “c”);
Cayenne.virtualWrite(1, 25, “temp”, “c”);
SerialMon.println(F(“Poweroff”));
esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);
esp_deep_sleep_start();
}
CAYENNE_CONNECTED() {
connected_ = true;
Serial.println(“I am connected to Cayenne”);
}
CAYENNE_DISCONNECTED() {
connected_ = false;
Serial.println(“I am DISconnected from Cayenne”);
}