Arduino uno, cc3000 e PubSubClient

Buondì
sto riprendendo un vecchio progetto dove per la gestione da remoto avevo usato un arduino uno ed un modulo wifi cc3000. Mi interfacciavo con un app fatta da me e si collegava direttamente all'arduino via socket.

Non voglio effettuare modifiche hardware.

Ora le cose sono un po' cambiate e volevo modificarlo in modo tale da farlo interagire tramite home assistant che gira su un piccolo server linux che ho in casa. L'interazione verrà fatta tramite mqtt.

Ora voglio capire come farlo funzionare, ovviamente lato arduino. Per la connessione sono necessari usarname e password.

Questo è il mio tentativo ma non funziona.

#include <Adafruit_CC3000.h>
#include <ccspi.h>
#include <SPI.h>
#include <string.h>
#include "utility/debug.h"

#include "PubSubClient.h"

#define ADAFRUIT_CC3000_IRQ   3
#define ADAFRUIT_CC3000_VBAT  5
#define ADAFRUIT_CC3000_CS    10

Adafruit_CC3000 cc3000 = Adafruit_CC3000(ADAFRUIT_CC3000_CS, ADAFRUIT_CC3000_IRQ, ADAFRUIT_CC3000_VBAT,
                                         SPI_CLOCK_DIVIDER); // you can change this clock speed

#define WLAN_SSID       "SSID"
#define WLAN_PASS       "PWD"
// Security can be WLAN_SEC_UNSEC, WLAN_SEC_WEP, WLAN_SEC_WPA or WLAN_SEC_WPA2
#define WLAN_SECURITY   WLAN_SEC_WPA2

#define IDLE_TIMEOUT_MS  3000

#define MQTT_SERVER      "192.168.1.99"
#define MQTT_SERVERPORT  1883
#define MQTT_USERNAME    "mqtt"
#define MQTT_PASSWORD    "123456"


Adafruit_CC3000_Client cc3000Client = Adafruit_CC3000_Client();


void callback (char* topic, byte* payload, unsigned int length) {
  Serial.println(topic);
  Serial.write(payload, length);
  Serial.println("");
}

PubSubClient mqttClient(MQTT_SERVER, MQTT_SERVERPORT, callback, cc3000Client);


uint32_t ip;

void setup(void)
{
  Serial.begin(115200);
  
  Serial.println(F("\nInitializing..."));
  if (!cc3000.begin())
  {
    Serial.println(F("Couldn't begin()! Check your wiring?"));
    while(1);
  }
  
  
  Serial.print(F("\nAttempting to connect to ")); Serial.println(WLAN_SSID);
  if (!cc3000.connectToAP(WLAN_SSID, WLAN_PASS, WLAN_SECURITY)) {
    Serial.println(F("Failed!"));
    while(1);
  }
   
  Serial.println(F("Connected!"));
  
  Serial.println(F("Request DHCP"));
  while (!cc3000.checkDHCP())
  {
    delay(100); // ToDo: Insert a DHCP timeout!
  }  

  

  if (mqttClient.connect("PubSubClient", "mqtt", "123456")){
    Serial.println(F("MQTT connected!"));
  }else{
    Serial.println(F("MQTT not connected!"));
  }
  
}

void loop(void)
{
 delay(1000);

 mqttClient.loop();
}

Testando la connessione da pc verso il broker non ho problemi.
Qualcuno riesce a dirmi dove sto sbagliando?

Grazie

Buongiorno,

... so che sei un vecchio utente della sezione Italiana del forum :slight_smile: , ma ... purtroppo non riesco a trovare il tuo post di presentazione :confused:, per cui, cortesemente, come prima cosa, leggi attentamente il REGOLAMENTO di detta sezione, (prestando molta attenzione al punto 15), dopo di che, come da suddetto regolamento, fai la tua presentazione NELL'APPOSITA DISCUSSIONE spiegando bene quali esperienze hai in elettronica e programmazione, affinché noi possiamo conoscere la tua esperienza ed esprimerci con termini adeguati.

Grazie,

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposita discussione, nel rispetto del succitato regolamento nessuno ti risponderà (eventuali risposte verrebbero temporaneamente nascoste), quindi ti consiglio di farla al più presto. :wink:

Fatto! Non mi ricordavo di non averlo fatto ai tempi.

1 Like

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