Sming - Open Source framework for high efficiency WiFi SoC ESP8266 native development with C++ language.
- Fast & user friendly development
- Work with GPIO in Arduino style
- High effective in perfomance and memory usage (this is native firmware!)
- Compatible with standard Arduino libraries - use any popular hardware in few lines of code
- OTA (cloud) firmware updating
- Build-in file system: spiffs
- Build-in powerfull network and wireless modules
- Build-in great JSON library: ArduinoJson
- MQTT protocol based on [libemqtt] (https://github.com/menudoproblema/libemqtt)
- Open source LWIP stack
- Simple and powerfull hardware API wrappers
- Based on Espressif SDK v1.0.1b1
You can find more information about compilation and flashing process by reading esp8266.com forum discussion thread.
More information at Wiki Examples page.
#define LED_PIN 2 // GPIO2
...
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, HIGH);
Serial.begin(9600);
Serial.println("Hello Sming! Let's do smart things.");
WifiStation.enable(true);
WifiStation.config("LOCAL-NETWORK", "123456789087"); // Put you SSID and Password here
#include <Libraries/DHT/DHT.h> // This is just popular Arduino library!
#define WORK_PIN 0 // GPIO0
DHT dht(WORK_PIN, DHT22);
void init()
{
dht.begin();
float h = dht.readHumidity();
float t = dht.readTemperature();
}
HttpClient thingSpeak;
...
thingSpeak.downloadString("http://api.thingspeak.com/update?key=XXXXXXX&field1=" + String(sensorValue), onDataSent);
void onDataSent(HttpClient& client, bool successful)
{
if (successful)
Serial.println("Successful!");
else
Serial.println("Failed");
}
server.listen(80);
server.addPath("/", onIndex);
server.addPath("/hello", onHello);
server.setDefaultHandler(onFile);
Serial.println("=== WEB SERVER STARTED ===");
Serial.println(WifiStation.getIP());
...
void onIndex(HttpRequest &request, HttpResponse &response)
{
TemplateFileStream *tmpl = new TemplateFileStream("index.html");
auto &vars = tmpl->variables();
vars["counter"] = String(counter);
vars["IP"] = WifiStation.getIP().toString();
vars["MAC"] = WifiStation.getMAC();
response.sendTemplate(tmpl);
}
void onFile(HttpRequest &request, HttpResponse &response)
{
String file = request.getPath();
if (file[0] == '/')
file = file.substring(1);
response.setCache(86400, true);
response.sendFile(file);
}