Impostare 2 connessione wifi con arduino cloud

Buonasera. Volevo sapere se possibile inserire 2 wifi per la connessione ad internet tramite programma per arduino cloud. nel senso che dal codice che ti si crea dal arduino cloud quando si va ad inserire le variabili ti crea un codice dove si gestisce la connessione tramite WiFiConnectionHandler ArduinoIoTPreferredConnection(SSID, PASS); nel file thing properties. ho visto che ci sarebbe la libreria arduino_multiwifi ma gestisce la connessione tramite void setup e dovrei modificare tutto il codice penso.
questo è un codice banale per accendere un led da arduino cloud per farvi capire meglio quello che intendo:

#include "arduino_secrets.h"
#include "thingProperties.h"
int pinLed = 4;

void setup() {
  // Initialize serial and wait for port to open:
  Serial.begin(9600);
  // This delay gives the chance to wait for a Serial Monitor without blocking if none is found
  delay(1500); 

  // Defined in thingProperties.h
  initProperties();

  // Connect to Arduino IoT Cloud
  ArduinoCloud.begin(ArduinoIoTPreferredConnection);
  setDebugMessageLevel(2);
  ArduinoCloud.printDebugInfo();
  pinMode (pinLed, OUTPUT);
}

void loop() {
  ArduinoCloud.update();
}


void onLedChange()  {
  digitalWrite (pinLed, led);
}

nel file thingproperties:

// Code generated by Arduino IoT Cloud, DO NOT EDIT.

#include <ArduinoIoTCloud.h>
#include <Arduino_ConnectionHandler.h>

const char DEVICE_LOGIN_NAME[]  = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";

const char SSID[]               = SECRET_SSID;    // Network SSID (name)
const char PASS[]               = SECRET_OPTIONAL_PASS;    // Network password (use for WPA, or use as key for WEP)
const char DEVICE_KEY[]  = SECRET_DEVICE_KEY;    // Secret device password

void onLedChange();

bool led;

void initProperties(){

  ArduinoCloud.setBoardId(DEVICE_LOGIN_NAME);
  ArduinoCloud.setSecretDeviceKey(DEVICE_KEY);
  ArduinoCloud.addProperty(led, READWRITE, ON_CHANGE, onLedChange);

}

WiFiConnectionHandler ArduinoIoTPreferredConnection(SSID, PASS);

e nel file arduino_secrets:

#define SECRET_DEVICE_KEY "xxxxxxxxxxxxxxxxxxxxxxxxx"

#define SECRET_OPTIONAL_PASS "password"

#define SECRET_SSID "ssid"

grazie e buonaserata

Questa lib?
"GitHub - arduino-libraries/Arduino_MultiWiFi"
Dubito sia pensata per Arduino cloud.

Penso anch'io che non sia compatibile. Chiedo se c'è un modo per inserire 2 o piu wifi in modo che se sposto la scheda si colleghi da sola alle reti senza dover collegare il computer ogni volta e cambiare le credenziali

Ho visto nel forum inglese una domanda simile, come avere iot su 2 wifi diversi. Nessuna soluzione.
IOT Cloud - multiple WIFI credentials and access points "
Forse, prova a vedere cosa risponde ArduinoCloud.begin. Ritorna un intero. 0 falso, diverso da zero dovrebbe essere vero.
Nel setup avere 2 begin su 2 oggetti ArduinoIoTPreferredConnection diversi.
ArduinoIoTPreferredConnection è solo il nome dell'oggetto.
Se la prima begin fallisce si usa la seconda.
In tutti i casi se funzionasse, solo all'avvio della Board potrebbe scegliere rete attiva. Ma non durante la loop (ovvero se cade connection)

// Connect to Arduino IoT Cloud
int chk=ArduinoCloud.begin(ArduinoIoTPreferredConnection);
if(chk==0) //fallito se falso? 
{ ArduinoCloud.begin(ArduinoIoTSecondConnection);
}

Nel thingProperties.h provare come fa quel tizio al link

// Connect to Arduino IoT Cloud
int chk=ArduinoCloud.begin(ArduinoIoTPreferredConnection);
if(chk==0) //fallito se falso? 
{ ArduinoCloud.begin(ArduinoIoTSecondConnection);
}

Questo lo inserisco nel loop?

Ho provato a fare come fa nel link ma si blocca il codice dopo 10 secondi di esecuzione

Nel setup() al posto di

  // Connect to Arduino IoT Cloud
  ArduinoCloud.begin(ArduinoIoTPreferredConnection);

Nel thingproperties.h

// Code generated by Arduino IoT Cloud, DO NOT EDIT.
#include <ArduinoIoTCloud.h>
#include <Arduino_ConnectionHandler.h>

const char DEVICE_LOGIN_NAME[]  = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";

const char SSID[]        = SECRET_SSID;            // Network SSID (name)
const char PASS[]        = SECRET_OPTIONAL_PASS;   // Network password (use for WPA, or use as key for WEP)
const char DEVICE_KEY[]  = SECRET_DEVICE_KEY;             
const char SSID2[]       = SECRET_SSID2;    
const char PASS2[]       = SECRET_PASS2;

void onLedChange();

bool led;

void initProperties()
{
  ArduinoCloud.setBoardId(DEVICE_LOGIN_NAME);
  ArduinoCloud.setSecretDeviceKey(DEVICE_KEY);
  ArduinoCloud.addProperty(led, READWRITE, ON_CHANGE, onLedChange);
}

WiFiConnectionHandler ArduinoIoTPreferredConnection(SSID, PASS);
WiFiConnectionHandler ArduinoIoTSecondConnection   (SSID2, PASS2);

e nel file arduino_secrets (con i tuoi reali valori):

#define SECRET_DEVICE_KEY "xxxxxxxxxxxxxxxxxxxxxxxxx"
#define SECRET_OPTIONAL_PASS "password"
#define SECRET_SSID "ssid"
#define SECRET_PASS2 "password2"
#define SECRET_SSID2 "ssid2"

Continua a bloccarsi il programma dopo circa dieci secondi. Dopo la connessione si blocca

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.