Hello, I’ve been trying to to the WORKSHOP 1 – INTERNET BUTTON. The device is able to connect to the internet but when it tries to connect the Losant platform (“Connecting to Losant…”), it just hangs.
This is the code I’ve used:
/**
* Workshop example for a simple internet button using the Losant IoT
* platform.
*
* Visit https://www.losant.com/kit for full instructions.
*
* Copyright (c) 2016 Losant IoT. All rights reserved.
* https://www.losant.com
*/
#include <ESP8266WiFi.h>
#include <Losant.h>
// WiFi credentials.
const char* WIFI_SSID = "XXX";
const char* WIFI_PASS = "XXX";
// Losant credentials.
const char* LOSANT_DEVICE_ID = "XXX";
const char* LOSANT_ACCESS_KEY = "XXX";
const char* LOSANT_ACCESS_SECRET = "XXX";
const int BUTTON_PIN = 5;
WiFiClient wifiClient;
LosantDevice device(LOSANT_DEVICE_ID);
void connect() {
// Connect to Wifi.
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(WIFI_SSID);
// WiFi fix: https://github.com/esp8266/Arduino/issues/2186
WiFi.persistent(false);
WiFi.mode(WIFI_OFF);
WiFi.mode(WIFI_STA);
WiFi.begin(WIFI_SSID, WIFI_PASS);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
// Connect to Losant.
Serial.println();
Serial.print("Connecting to Losant...");
device.connect(wifiClient, LOSANT_ACCESS_KEY, LOSANT_ACCESS_SECRET);
while(!device.connected()) {
delay(500);
Serial.print(".");
}
Serial.println("Connected!");
Serial.println();
Serial.println("This device is now ready for use!");
}
void setup() {
Serial.begin(115200);
// Giving it a little time because the serial monitor doesn't
// immediately attach. Want the workshop that's running to
// appear on each upload.
delay(2000);
Serial.println();
Serial.println("Running Workshop 1 Firmware.");
pinMode(BUTTON_PIN, INPUT);
connect();
}
void buttonPressed() {
Serial.println("Button Pressed!");
// Losant uses a JSON protocol. Construct the simple state object.
// { "button" : true }
StaticJsonBuffer<200> jsonBuffer;
JsonObject& root = jsonBuffer.createObject();
root["button"] = true;
// Send the state to Losant.
device.sendState(root);
}
int buttonState = 0;
void loop() {
bool toReconnect = false;
if(WiFi.status() != WL_CONNECTED) {
Serial.println("Disconnected from WiFi");
toReconnect = true;
}
if(!device.connected()) {
Serial.println("Disconnected from Losant");
Serial.println(device.mqttClient.state());
toReconnect = true;
}
if(toReconnect) {
connect();
}
device.loop();
int currentRead = digitalRead(BUTTON_PIN);
if(currentRead != buttonState) {
buttonState = currentRead;
if(buttonState) {
buttonPressed();
}
}
delay(100);
}