Skip to content

SetupClient_GSM does not compile #4

Open
@ghost

Description

Board

esp32s3

Device Description

dev kitc1

Arduino-ESP32 Version

latest

Bytebeam Arduino SDK Version

latest

IDE Name

arduino IDE

Operating System

macOs 13.6.6

Problem Description

Running the SetupClient_GSM does not compile. The first error is due to a bad signature for Bytebeam.begin(&modem), which can be resolved by adding:

#define BYTEBEAM_ARDUINO_USE_MODEM to the top of the file.

However, the errors (pasted below) cannot be resolved with this line:

#undef BYTEBEAM_ARDUINO_USE_WIFI

and it is unclear how to override the definitions set in BytebeamArduinoDefines.h

Sketch

#define TINY_GSM_MODEM_SIM7600
// Added next two lines
#define BYTEBEAM_ARDUINO_USE_MODEM
#undef BYTEBEAM_ARDUINO_USE_WIFI

#include <TinyGsmClient.h>
#include <BytebeamArduino.h>
#include "arduino_secrets.h"

//
// By including the above header you got the access to the gloabl object named Bytebeam
// Use Bytebeam global object to perform the required operations
//

#define LED_PIN 42
#define MODEM_PWRKEY  20
#define MODEM_FLIGHT  19
#define MODEM_TX  36
#define MODEM_RX  37

// set GSM PIN, if any
#define GSM_PIN SECRET_PIN

#define SerialMon Serial
#define SerialAT Serial1

// Your GPRS credentials, if any
const char apn[]      = SECRET_APN;

TinyGsm modem(SerialAT);

// function to setup the modem with predefined credentials
void setupModem() {
  // configure your reset, enable pins here if needed
  pinMode(LED_PIN, OUTPUT);
  pinMode(MODEM_PWRKEY, OUTPUT);
  pinMode(MODEM_FLIGHT, OUTPUT);

  // set the status led pin low to indicate the start process
  digitalWrite(LED_PIN, LOW);

  // pull up power pin (IO:4) Modulator power key, need to powered up the modem
  // this pin must be held high for more than 1 second according to manual requirements
  digitalWrite(MODEM_PWRKEY, LOW);
  delay(100);
  digitalWrite(MODEM_PWRKEY, HIGH);
  delay(1000);
  digitalWrite(MODEM_PWRKEY, LOW);  
  
  // pull up the power pin (IO:25) Modulator flight mode control, need to enable modulator 
  // this pin must be set to high
  digitalWrite(MODEM_FLIGHT, HIGH);

  SerialMon.println("Modem Powered ON");

  // start the serial communication b/w esp32 and modem
  SerialAT.begin(115200, SERIAL_8N1, MODEM_RX, MODEM_TX);
  delay(6000);

  // Restart takes quite some time
  // To skip it, call init() instead of restart()
  // modem.restart();
  modem.init();

  // set the network mode (2 : Automatic)
  modem.setNetworkMode(38);

  String modemName = modem.getModemName();
  SerialMon.printf("Modem Name : ");
  SerialMon.println(modemName);

  String modemInfo = modem.getModemInfo();
  SerialMon.print("Modem Info : ");
  SerialMon.println(modemInfo);

  // Unlock your SIM card with a PIN if needed
  if(GSM_PIN && modem.getSimStatus() != 3) { 
    modem.simUnlock(GSM_PIN); 
  }

  SimStatus simStatus = modem.getSimStatus();

  if(simStatus != SIM_READY) {
    SerialMon.println("Couldn't Ready the SIM.");
    return;
  }
  SerialMon.println("SIM is Ready.");

  // high indicates the modem is initialized successfully
  digitalWrite(LED_PIN, HIGH);
  SerialMon.println("Modem Initialized Successfully !");

  SerialMon.println("Waiting for network...");
  if(!modem.waitForNetwork()) {
    SerialMon.println(" fail");
    delay(10000);
    return;
  }
  SerialMon.println(" success");

  if(modem.isNetworkConnected()) {
    SerialMon.println("Network connected");
  }

  // GPRS connection parameters are usually set after network registration
  SerialMon.print("Connecting to apn : ");
  SerialMon.println(apn);
  
  if (!modem.gprsConnect(apn)) {
    SerialMon.println(" fail");
    delay(10000);
    return;
  }
  SerialMon.println(" success");

  if(modem.isGprsConnected()) {
    SerialMon.println("GPRS connected");
  }
}

// function to sync time from ntp server with predefined credentials
void syncTimeFromNtp() {
  String dateTime = modem.getGSMDateTime(DATE_FULL);

  SerialMon.print("Current Time : ");
  SerialMon.println(dateTime);
  SerialMon.println();
}

void setup() {
  // put your setup code here, to run once:
  SerialMon.begin(115200);
  SerialMon.println();

  setupModem();
  syncTimeFromNtp();

  //
  //  Your other application setup stuff goes here
  //

  // setting up the device info i.e to be seen in the device shadow
  Bytebeam.status          = "Device is Up!";
  Bytebeam.softwareType    = "setup-gsm-client-ino";
  Bytebeam.softwareVersion = "1.0.0";
  Bytebeam.hardwareType    = "ESP32 Dev Module";
  Bytebeam.hardwareVersion = "rev1";

  // This method will initialize and start the bytebeam client
  // You can over-ride the default file system, file name and library logging options, if needed
  // eg. Bytebeam.begin(BytebeamArduino::LITTLEFS_FILE_SYSTEM, "/my_device_config.json", BytebeamLogger::LOG_INFO)
  if(!Bytebeam.begin(&modem)) {
    Serial.println("Bytebeam Client Initialization Failed.");
  } else {
    Serial.println("Bytebeam Client is Initialized Successfully.");
  }

  //
  // If above call is successfull then the bytebeam client is now configured for the use
  // You can always check for the logs in serial monitor for the status of the above call
  //

  // check if bytebeam client is connected or disconnected
  bool connectionStatus = Bytebeam.isConnected();

  if(!connectionStatus) {
    SerialMon.println("Bytebeam Client is Disconnected.");
  } else {
    SerialMon.println("Bytebeam Client is Connected.");
  }

  // Call the end method to stop and de-initialize the bytebeam client at any point of time in the code
  // Bytebeam.end();
}

void loop() {
  // put your main code here, to run repeatedly:

  //
  //  Your application regular stuff goes here
  //

  // This method will let you maintain the connection with the bytebeam cloud, In case
  // the connection is lost, it will attempt to reconnect to the bytebeam cloud
  Bytebeam.loop();

  // software delay, you can customize it as per your application needs
  delay(5000);
}

Debug Message

In file included from /Users/enzo/Documents/Arduino/libraries/BytebeamArduino/src/BytebeamArduinoDefines.h:44,
                 from /Users/enzo/Documents/Arduino/libraries/BytebeamArduino/src/BytebeamTime.h:4,
                 from /Users/enzo/Documents/Arduino/libraries/BytebeamArduino/src/BytebeamLog.h:6,
                 from /Users/enzo/Documents/Arduino/libraries/BytebeamArduino/src/BytebeamArduino.h:7,
                 from /private/var/folders/c0/j9v4g6bd73v6r7pmyn31jb000000gn/T/.arduinoIDE-unsaved202438-41671-j9mlnv.2j8dd/SetupClient_GSM/SetupClient_GSM.ino:6:
/Users/enzo/Documents/Arduino/libraries/BytebeamArduino/src/BytebeamHTTPUpdate.h:24:5: error: 'HTTP_UPDATE_FAILED' conflicts with a previous declaration
     HTTP_UPDATE_FAILED,
     ^~~~~~~~~~~~~~~~~~
In file included from /Users/enzo/Documents/Arduino/libraries/BytebeamArduino/src/BytebeamArduinoDefines.h:37,
                 from /Users/enzo/Documents/Arduino/libraries/BytebeamArduino/src/BytebeamTime.h:4,
                 from /Users/enzo/Documents/Arduino/libraries/BytebeamArduino/src/BytebeamLog.h:6,
                 from /Users/enzo/Documents/Arduino/libraries/BytebeamArduino/src/BytebeamArduino.h:7,
                 from /private/var/folders/c0/j9v4g6bd73v6r7pmyn31jb000000gn/T/.arduinoIDE-unsaved202438-41671-j9mlnv.2j8dd/SetupClient_GSM/SetupClient_GSM.ino:6:
/Users/enzo/Library/Arduino15/packages/esp32/hardware/esp32/2.0.14/libraries/HTTPUpdate/src/HTTPUpdate.h:48:5: note: previous declaration 'HTTPUpdateResult HTTP_UPDATE_FAILED'
     HTTP_UPDATE_FAILED,
     ^~~~~~~~~~~~~~~~~~
In file included from /Users/enzo/Documents/Arduino/libraries/BytebeamArduino/src/BytebeamArduinoDefines.h:44,
                 from /Users/enzo/Documents/Arduino/libraries/BytebeamArduino/src/BytebeamTime.h:4,
                 from /Users/enzo/Documents/Arduino/libraries/BytebeamArduino/src/BytebeamLog.h:6,
                 from /Users/enzo/Documents/Arduino/libraries/BytebeamArduino/src/BytebeamArduino.h:7,
                 from /private/var/folders/c0/j9v4g6bd73v6r7pmyn31jb000000gn/T/.arduinoIDE-unsaved202438-41671-j9mlnv.2j8dd/SetupClient_GSM/SetupClient_GSM.ino:6:
/Users/enzo/Documents/Arduino/libraries/BytebeamArduino/src/BytebeamHTTPUpdate.h:25:5: error: 'HTTP_UPDATE_NO_UPDATES' conflicts with a previous declaration
     HTTP_UPDATE_NO_UPDATES,
     ^~~~~~~~~~~~~~~~~~~~~~
In file included from /Users/enzo/Documents/Arduino/libraries/BytebeamArduino/src/BytebeamArduinoDefines.h:37,
                 from /Users/enzo/Documents/Arduino/libraries/BytebeamArduino/src/BytebeamTime.h:4,
                 from /Users/enzo/Documents/Arduino/libraries/BytebeamArduino/src/BytebeamLog.h:6,
                 from /Users/enzo/Documents/Arduino/libraries/BytebeamArduino/src/BytebeamArduino.h:7,
                 from /private/var/folders/c0/j9v4g6bd73v6r7pmyn31jb000000gn/T/.arduinoIDE-unsaved202438-41671-j9mlnv.2j8dd/SetupClient_GSM/SetupClient_GSM.ino:6:
/Users/enzo/Library/Arduino15/packages/esp32/hardware/esp32/2.0.14/libraries/HTTPUpdate/src/HTTPUpdate.h:49:5: note: previous declaration 'HTTPUpdateResult HTTP_UPDATE_NO_UPDATES'
     HTTP_UPDATE_NO_UPDATES,
     ^~~~~~~~~~~~~~~~~~~~~~
In file included from /Users/enzo/Documents/Arduino/libraries/BytebeamArduino/src/BytebeamArduinoDefines.h:44,
                 from /Users/enzo/Documents/Arduino/libraries/BytebeamArduino/src/BytebeamTime.h:4,
                 from /Users/enzo/Documents/Arduino/libraries/BytebeamArduino/src/BytebeamLog.h:6,
                 from /Users/enzo/Documents/Arduino/libraries/BytebeamArduino/src/BytebeamArduino.h:7,
                 from /private/var/folders/c0/j9v4g6bd73v6r7pmyn31jb000000gn/T/.arduinoIDE-unsaved202438-41671-j9mlnv.2j8dd/SetupClient_GSM/SetupClient_GSM.ino:6:
/Users/enzo/Documents/Arduino/libraries/BytebeamArduino/src/BytebeamHTTPUpdate.h:26:5: error: 'HTTP_UPDATE_OK' conflicts with a previous declaration
     HTTP_UPDATE_OK
     ^~~~~~~~~~~~~~
In file included from /Users/enzo/Documents/Arduino/libraries/BytebeamArduino/src/BytebeamArduinoDefines.h:37,
                 from /Users/enzo/Documents/Arduino/libraries/BytebeamArduino/src/BytebeamTime.h:4,
                 from /Users/enzo/Documents/Arduino/libraries/BytebeamArduino/src/BytebeamLog.h:6,
                 from /Users/enzo/Documents/Arduino/libraries/BytebeamArduino/src/BytebeamArduino.h:7,
                 from /private/var/folders/c0/j9v4g6bd73v6r7pmyn31jb000000gn/T/.arduinoIDE-unsaved202438-41671-j9mlnv.2j8dd/SetupClient_GSM/SetupClient_GSM.ino:6:
/Users/enzo/Library/Arduino15/packages/esp32/hardware/esp32/2.0.14/libraries/HTTPUpdate/src/HTTPUpdate.h:50:5: note: previous declaration 'HTTPUpdateResult HTTP_UPDATE_OK'
     HTTP_UPDATE_OK
     ^~~~~~~~~~~~~~
In file included from /Users/enzo/Documents/Arduino/libraries/BytebeamArduino/src/BytebeamArduinoDefines.h:44,
                 from /Users/enzo/Documents/Arduino/libraries/BytebeamArduino/src/BytebeamTime.h:4,
                 from /Users/enzo/Documents/Arduino/libraries/BytebeamArduino/src/BytebeamLog.h:6,
                 from /Users/enzo/Documents/Arduino/libraries/BytebeamArduino/src/BytebeamArduino.h:7,
                 from /private/var/folders/c0/j9v4g6bd73v6r7pmyn31jb000000gn/T/.arduinoIDE-unsaved202438-41671-j9mlnv.2j8dd/SetupClient_GSM/SetupClient_GSM.ino:6:
/Users/enzo/Documents/Arduino/libraries/BytebeamArduino/src/BytebeamHTTPUpdate.h:29:34: error: conflicting declaration 'typedef enum BytebeamHTTPUpdateResult t_httpUpdate_return'
 typedef BytebeamHTTPUpdateResult t_httpUpdate_return; // backward compatibility
                                  ^~~~~~~~~~~~~~~~~~~
In file included from /Users/enzo/Documents/Arduino/libraries/BytebeamArduino/src/BytebeamArduinoDefines.h:37,
                 from /Users/enzo/Documents/Arduino/libraries/BytebeamArduino/src/BytebeamTime.h:4,
                 from /Users/enzo/Documents/Arduino/libraries/BytebeamArduino/src/BytebeamLog.h:6,
                 from /Users/enzo/Documents/Arduino/libraries/BytebeamArduino/src/BytebeamArduino.h:7,
                 from /private/var/folders/c0/j9v4g6bd73v6r7pmyn31jb000000gn/T/.arduinoIDE-unsaved202438-41671-j9mlnv.2j8dd/SetupClient_GSM/SetupClient_GSM.ino:6:
/Users/enzo/Library/Arduino15/packages/esp32/hardware/esp32/2.0.14/libraries/HTTPUpdate/src/HTTPUpdate.h:53:26: note: previous declaration as 'typedef enum HTTPUpdateResult t_httpUpdate_return'
 typedef HTTPUpdateResult t_httpUpdate_return; // backward compatibility
                          ^~~~~~~~~~~~~~~~~~~
In file included from /Users/enzo/Documents/Arduino/libraries/BytebeamArduino/src/BytebeamArduino.h:9,
                 from /private/var/folders/c0/j9v4g6bd73v6r7pmyn31jb000000gn/T/.arduinoIDE-unsaved202438-41671-j9mlnv.2j8dd/SetupClient_GSM/SetupClient_GSM.ino:6:
/Users/enzo/Documents/Arduino/libraries/BytebeamArduino/src/BytebeamOTA.h:60:23: error: redeclaration of 'SSLClient BytebeamOTA::secureOTAClient'
             SSLClient secureOTAClient;
                       ^~~~~~~~~~~~~~~
/Users/enzo/Documents/Arduino/libraries/BytebeamArduino/src/BytebeamOTA.h:54:30: note: previous declaration 'WiFiClientSecure BytebeamOTA::secureOTAClient'
             WiFiClientSecure secureOTAClient;
                              ^~~~~~~~~~~~~~~
/Users/enzo/Documents/Arduino/libraries/BytebeamArduino/src/BytebeamOTA.h:61:51: error: redeclaration of 'BytebeamHTTPUpdate& BytebeamOTA::BytebeamUpdate'
             BytebeamHTTPUpdate& BytebeamUpdate =  BytebeamhttpUpdate;
                                                   ^~~~~~~~~~~~~~~~~~
/Users/enzo/Documents/Arduino/libraries/BytebeamArduino/src/BytebeamOTA.h:55:43: note: previous declaration 'HTTPUpdate& BytebeamOTA::BytebeamUpdate'
             HTTPUpdate& BytebeamUpdate =  httpUpdate;
                                           ^~~~~~~~~~
In file included from /private/var/folders/c0/j9v4g6bd73v6r7pmyn31jb000000gn/T/.arduinoIDE-unsaved202438-41671-j9mlnv.2j8dd/SetupClient_GSM/SetupClient_GSM.ino:6:
/Users/enzo/Documents/Arduino/libraries/BytebeamArduino/src/BytebeamArduino.h:182:23: error: redeclaration of 'SSLClient BytebeamArduino::secureClient'
             SSLClient secureClient;
                       ^~~~~~~~~~~~
/Users/enzo/Documents/Arduino/libraries/BytebeamArduino/src/BytebeamArduino.h:177:30: note: previous declaration 'WiFiClientSecure BytebeamArduino::secureClient'
             WiFiClientSecure secureClient;
                              ^~~~~~~~~~~~
Multiple libraries were found for "WiFi.h"
  Used: /Users/enzo/Library/Arduino15/packages/esp32/hardware/esp32/2.0.14/libraries/WiFi
  Not used: /Users/enzo/Documents/Arduino/libraries/WiFiNINA
exit status 1

Compilation error: exit status 1


### More Information

_No response_

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions