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