mirror of
https://gitlab.com/wirelos/sprocket-lib.git
synced 2025-12-16 13:25:03 +01:00
cleanup build, examples and library
This commit is contained in:
2
.vscode/settings.json
vendored
2
.vscode/settings.json
vendored
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"terminal.integrated.env.linux": {
|
"terminal.integrated.env.linux": {
|
||||||
"PATH": "/home/master/.platformio/penv/bin:/home/master/.platformio/penv:/home/master/bin:/home/master/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin",
|
"PATH": "/home/master/.platformio/penv/bin:/home/master/.platformio/penv:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl",
|
||||||
"PLATFORMIO_CALLER": "vscode"
|
"PLATFORMIO_CALLER": "vscode"
|
||||||
},
|
},
|
||||||
"files.associations": {
|
"files.associations": {
|
||||||
|
|||||||
4
README.md
Normal file
4
README.md
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
# Sprocket Core
|
||||||
|
|
||||||
|
## OTA over MQTT
|
||||||
|
https://github.com/Imroy/pubsubclient/blob/master/examples/ESP8266-OTA/ESP8266-OTA.ino
|
||||||
@@ -14,5 +14,12 @@
|
|||||||
"url": "https://gitlab.com/wirelos/sprocket-core/"
|
"url": "https://gitlab.com/wirelos/sprocket-core/"
|
||||||
},
|
},
|
||||||
"frameworks": "arduino",
|
"frameworks": "arduino",
|
||||||
"platforms": "espressif8266"
|
"platforms": "espressif8266",
|
||||||
|
"examples": "examples/*",
|
||||||
|
"export": {
|
||||||
|
"exclude":
|
||||||
|
[
|
||||||
|
"firmware/"
|
||||||
|
]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
; http://docs.platformio.org/page/projectconf.html
|
; http://docs.platformio.org/page/projectconf.html
|
||||||
|
|
||||||
[platformio]
|
[platformio]
|
||||||
env_default = meshMqttBridge
|
env_default = build
|
||||||
|
|
||||||
[common]
|
[common]
|
||||||
framework = arduino
|
framework = arduino
|
||||||
@@ -39,7 +39,7 @@ lib_deps = ${common.lib_deps}
|
|||||||
;upload_port = 192.168.1.168
|
;upload_port = 192.168.1.168
|
||||||
|
|
||||||
[env:basic]
|
[env:basic]
|
||||||
src_filter = +<*> +<examples/basic/> -<examples/mesh/> -<examples/mqttBridge/>
|
src_filter = +<*> -<examples/> -<firmware/> +<examples/basic/>
|
||||||
platform = ${common.platform}
|
platform = ${common.platform}
|
||||||
board = ${common.board}
|
board = ${common.board}
|
||||||
upload_speed = ${common.upload_speed}
|
upload_speed = ${common.upload_speed}
|
||||||
@@ -48,7 +48,7 @@ framework = ${common.framework}
|
|||||||
lib_deps = ${common.lib_deps}
|
lib_deps = ${common.lib_deps}
|
||||||
|
|
||||||
[env:mesh]
|
[env:mesh]
|
||||||
src_filter = +<*> +<examples/mesh/> -<examples/basic/> -<examples/mqttBridge/>
|
src_filter = +<*> -<examples/> -<firmware/> +<examples/mesh/>
|
||||||
platform = ${common.platform}
|
platform = ${common.platform}
|
||||||
board = ${common.board}
|
board = ${common.board}
|
||||||
upload_speed = ${common.upload_speed}
|
upload_speed = ${common.upload_speed}
|
||||||
@@ -58,7 +58,7 @@ lib_deps = ${common.lib_deps}
|
|||||||
painlessMesh
|
painlessMesh
|
||||||
|
|
||||||
[env:meshMqttBridge]
|
[env:meshMqttBridge]
|
||||||
src_filter = +<*> +<examples/mesh/> -<examples/basic/> -<examples/mesh/>
|
src_filter = +<*> -<examples/> -<firmware/> +<examples/mqttBridge/>
|
||||||
platform = espressif8266
|
platform = espressif8266
|
||||||
board = esp12e
|
board = esp12e
|
||||||
upload_speed = ${common.upload_speed}
|
upload_speed = ${common.upload_speed}
|
||||||
|
|||||||
@@ -24,9 +24,6 @@ Network* MeshNet::init(){
|
|||||||
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
Network* MeshNet::connect(){
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
void MeshNet::sendTo(uint32_t target, String msg){
|
void MeshNet::sendTo(uint32_t target, String msg){
|
||||||
mesh.sendSingle(target, msg);
|
mesh.sendSingle(target, msg);
|
||||||
|
|||||||
@@ -27,7 +27,6 @@ class MeshNet : public Network {
|
|||||||
|
|
||||||
MeshNet(MeshConfig cfg);
|
MeshNet(MeshConfig cfg);
|
||||||
Network* init();
|
Network* init();
|
||||||
Network* connect();
|
|
||||||
|
|
||||||
void broadcast(String msg);
|
void broadcast(String msg);
|
||||||
void sendTo(uint32_t target, String msg);
|
void sendTo(uint32_t target, String msg);
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ class Sprocket {
|
|||||||
Sprocket(SprocketConfig);
|
Sprocket(SprocketConfig);
|
||||||
Sprocket* init(SprocketConfig);
|
Sprocket* init(SprocketConfig);
|
||||||
Sprocket* join(Network&);
|
Sprocket* join(Network&);
|
||||||
Sprocket* addTask(Task&); // REMOVE ??
|
Sprocket* addTask(Task&);
|
||||||
virtual void loop();
|
virtual void loop();
|
||||||
virtual Sprocket* activate();
|
virtual Sprocket* activate();
|
||||||
virtual Sprocket* activate(Scheduler*) { return this; }
|
virtual Sprocket* activate(Scheduler*) { return this; }
|
||||||
|
|||||||
@@ -18,12 +18,12 @@ class MeshApp : public Sprocket {
|
|||||||
net->mesh.onReceive(bind(&MeshApp::receivedCallback,this, _1, _2));
|
net->mesh.onReceive(bind(&MeshApp::receivedCallback,this, _1, _2));
|
||||||
// add a task that sends stuff to the mesh
|
// add a task that sends stuff to the mesh
|
||||||
someTask.set(TASK_SECOND * 5, TASK_FOREVER,
|
someTask.set(TASK_SECOND * 5, TASK_FOREVER,
|
||||||
bind(&MeshApp::advertise, this, net));
|
bind(&MeshApp::heartbeat, this, net));
|
||||||
scheduler->addTask(someTask);
|
scheduler->addTask(someTask);
|
||||||
someTask.enable();
|
someTask.enable();
|
||||||
} using Sprocket::activate;
|
} using Sprocket::activate;
|
||||||
|
|
||||||
void advertise(MeshNet* network){
|
void heartbeat(MeshNet* network){
|
||||||
String msg = "{ \"payload \": 1 }";
|
String msg = "{ \"payload \": 1 }";
|
||||||
network->broadcast(msg);
|
network->broadcast(msg);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,16 +34,21 @@ class MqttMeshBridge : public Sprocket {
|
|||||||
mqttConfig = cfg;
|
mqttConfig = cfg;
|
||||||
}
|
}
|
||||||
|
|
||||||
Sprocket* activate(Scheduler* scheduler, Network* network) {
|
Sprocket* activate(Scheduler* scheduler){
|
||||||
Serial.println("activate MQTT bridge");
|
|
||||||
net = static_cast<MeshNet*>(network);
|
|
||||||
net->mesh.onReceive(bind(&MqttMeshBridge::receivedCallback,this, _1, _2));
|
|
||||||
client = new PubSubClient(mqttConfig.brokerHost, mqttConfig.brokerPort, bind(&MqttMeshBridge::mqttCallback, this, _1, _2, _3), wifiClient);
|
|
||||||
enableConnectTask(scheduler);
|
enableConnectTask(scheduler);
|
||||||
enableProcessTask(scheduler);
|
enableProcessTask(scheduler);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Sprocket* activate(Scheduler* scheduler, Network* network) {
|
||||||
|
Serial.println("activate MQTT bridge");
|
||||||
|
net = static_cast<MeshNet*>(network);
|
||||||
|
net->mesh.onReceive(bind(&MqttMeshBridge::receivedCallback,this, _1, _2));
|
||||||
|
client = new PubSubClient(mqttConfig.brokerHost, mqttConfig.brokerPort, bind(&MqttMeshBridge::mqttCallback, this, _1, _2, _3), wifiClient);
|
||||||
|
return activate(scheduler);
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
void enableConnectTask(Scheduler* scheduler) {
|
void enableConnectTask(Scheduler* scheduler) {
|
||||||
connectTask.set(TASK_SECOND * 5, TASK_FOREVER, bind(&MqttMeshBridge::connect, this));
|
connectTask.set(TASK_SECOND * 5, TASK_FOREVER, bind(&MqttMeshBridge::connect, this));
|
||||||
scheduler->addTask(connectTask);
|
scheduler->addTask(connectTask);
|
||||||
|
|||||||
@@ -13,11 +13,11 @@
|
|||||||
#define STATION_MODE 1
|
#define STATION_MODE 1
|
||||||
#define WIFI_CHANNEL 11
|
#define WIFI_CHANNEL 11
|
||||||
#define MESH_PORT 5555
|
#define MESH_PORT 5555
|
||||||
#define MESH_PREFIX "whateverYouLike"
|
#define MESH_PREFIX "wirelos_contraption"
|
||||||
#define MESH_PASSWORD "somethingSneaky"
|
#define MESH_PASSWORD "th3r31sn0sp00n"
|
||||||
#define STATION_SSID "tErAx1d"
|
#define STATION_SSID "Th1ngs4P"
|
||||||
#define STATION_PASSWORD "ramalamadingdong"
|
#define STATION_PASSWORD "th3r31sn0sp00n"
|
||||||
#define HOSTNAME "mqtt-mesh-bridge"
|
#define HOSTNAME "sprocket"
|
||||||
#define MESH_DEBUG_TYPES ERROR | STARTUP | CONNECTION
|
#define MESH_DEBUG_TYPES ERROR | STARTUP | CONNECTION
|
||||||
|
|
||||||
// Bridge config
|
// Bridge config
|
||||||
|
|||||||
38
src/firmware/BaseSprocket.h
Normal file
38
src/firmware/BaseSprocket.h
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
#ifndef __BASE_SPROCKET__
|
||||||
|
#define __BASE_SPROCKET__
|
||||||
|
|
||||||
|
#include <ESPAsyncWebServer.h>
|
||||||
|
#include <Sprocket.h>
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
using namespace std::placeholders;
|
||||||
|
|
||||||
|
// TODO remove someTask and replace with OTA stuff
|
||||||
|
class BaseSprocket : public Sprocket {
|
||||||
|
public:
|
||||||
|
Task someTask;
|
||||||
|
MeshNet* net;
|
||||||
|
BaseSprocket(SprocketConfig cfg) : Sprocket(cfg) {
|
||||||
|
|
||||||
|
}
|
||||||
|
Sprocket* activate(Scheduler* scheduler, Network* network) {
|
||||||
|
net = static_cast<MeshNet*>(network);
|
||||||
|
net->mesh.onReceive(bind(&BaseSprocket::receivedCallback,this, _1, _2));
|
||||||
|
// add a task that sends stuff to the mesh
|
||||||
|
someTask.set(TASK_SECOND * 5, TASK_FOREVER,
|
||||||
|
bind(&BaseSprocket::heartbeat, this, net));
|
||||||
|
scheduler->addTask(someTask);
|
||||||
|
someTask.enable();
|
||||||
|
} using Sprocket::activate;
|
||||||
|
|
||||||
|
void heartbeat(MeshNet* network){
|
||||||
|
String msg = "{ \"alive \": 1 }";
|
||||||
|
network->broadcast(msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual void receivedCallback( uint32_t from, String &msg ) {
|
||||||
|
Serial.printf("RECV %u = %s\n", from, msg.c_str());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
28
src/firmware/config.h
Normal file
28
src/firmware/config.h
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
#ifndef __BRIDGE_CONFIG__
|
||||||
|
#define __BRIDGE_CONFIG__
|
||||||
|
|
||||||
|
// Scheduler config
|
||||||
|
#define _TASK_SLEEP_ON_IDLE_RUN
|
||||||
|
#define _TASK_STD_FUNCTION
|
||||||
|
|
||||||
|
// Chip config
|
||||||
|
#define SERIAL_BAUD_RATE 115200
|
||||||
|
#define STARTUP_DELAY 3000
|
||||||
|
|
||||||
|
// Mesh config
|
||||||
|
#define STATION_MODE 0 // 1 = connect to AP using STATION params
|
||||||
|
#define WIFI_CHANNEL 11
|
||||||
|
#define MESH_PORT 5555
|
||||||
|
#define MESH_PREFIX "wirelos_contraption"
|
||||||
|
#define MESH_PASSWORD "th3r31sn0sp00n"
|
||||||
|
#define STATION_SSID "Th1ngs4P"
|
||||||
|
#define STATION_PASSWORD "th3r31sn0sp00n"
|
||||||
|
#define HOSTNAME "sprocket"
|
||||||
|
#define MESH_DEBUG_TYPES ERROR | STARTUP | CONNECTION
|
||||||
|
|
||||||
|
#define MQTT_CLIENT_NAME HOSTNAME
|
||||||
|
#define MQTT_BROKER "citadel.lan"
|
||||||
|
#define MQTT_PORT 1883
|
||||||
|
#define MQTT_TOPIC_ROOT "mesh"
|
||||||
|
|
||||||
|
#endif
|
||||||
23
src/firmware/main.cpp
Normal file
23
src/firmware/main.cpp
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
#include "config.h"
|
||||||
|
#include "MeshNet.h"
|
||||||
|
#include "BaseSprocket.h"
|
||||||
|
|
||||||
|
MeshNet net({
|
||||||
|
STATION_MODE, WIFI_CHANNEL,
|
||||||
|
MESH_PORT, MESH_PREFIX, MESH_PASSWORD,
|
||||||
|
STATION_SSID, STATION_PASSWORD, HOSTNAME,
|
||||||
|
MESH_DEBUG_TYPES
|
||||||
|
});
|
||||||
|
|
||||||
|
BaseSprocket sprocket(
|
||||||
|
{ STARTUP_DELAY, SERIAL_BAUD_RATE }
|
||||||
|
);
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
sprocket.join(net);
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
sprocket.loop();
|
||||||
|
yield();
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user