Code Monkey home page Code Monkey logo

esptoolkit's Introduction

EspToolkit Documentation comming soon

First Example:

#include <EspToolkit.h>
#include <Network.h>
#include <Mqtt.h>

EspToolkit  tk;
Network     net(&tk);
Mqtt        mqtt(&tk);

bool        demoBool{true};
int         demoInt{1234};
double      demoDouble{1234.1234};
std::string demoString{"DEMO"};

struct myStruct_t{
    std::string str;
    char*       ca;
    int         num;
};

void setup()
{
    vTaskPrioritySet(NULL, 3);

    // CONNECT VIA UART TO ACCESS SHELL | BAUD 115200

    // Example: Add Variables accesable via shell
    tk.variableAdd("demo/bool",    demoBool);
    tk.variableAdd("demo/int",     demoInt);
    tk.variableAdd("demo/double",  demoDouble);
    tk.variableAdd("demo/string",  demoString, "..comment..", false, false);

    // Example: Add Commands accesable via shell
    tk.commandAdd("myPublisher",[](void* c, void (*reply)(char*), char** param,uint8_t parCnt){
        if(parCnt>=3){
            mqtt.publish(param[1],param[2]);
            reply((char*)"๐Ÿ“จ sent!");
            reply((char*)tk.EOL);
        };
    },NULL,"๐Ÿ“ก [topic] [message] | publish a message to topic",false);

    // Init Toolkit and Load Variables from NVS
    tk.begin();

    // Commit Wifi Settings (Mqtt commit hooks on SYSTEM_EVENT_STA_GOT_IP)
    net.commit();

    // Send and Receive MQTT Messages
    tk.events.on(0,"MQTT_EVENT_CONNECTED",[](void* ctx, void* arg){
        mqtt.subscribe((char*)"demo1");
        mqtt.publish((char*)"demo2",(char*)"HALLO 1234",0,0);
    });

    tk.events.on(0,"demo1",[](void* ctx, void* arg){
        std::cout << "[demo1] Received Message: " << (char*)arg << std::endl;
        mqtt.publish((char*)"demo3",(char*)arg);
    });

    // Example: Send and receive custom structs via events as void* 
    tk.events.on(0,"MEINETOPIC",[](void* ctx, void* arg){
        myStruct_t m = *(myStruct_t*)arg;
        std::cout << "str: " << m.str << std::endl;
        std::cout << "ca: "  << m.ca  << std::endl;
        std::cout << "num: " << m.num << std::endl;
    });

    std::string str = "Das ist ein std::string";
    char*       ca  = "Das ist ein char*";
    int         num = 3245427;
    myStruct_t myStruct = {
        str,
        ca,
        num
    };
    tk.events.emit("MEINETOPIC",(void*)&myStruct,sizeof(myStruct_t));

    // Listen to GPIO Events
    tk.button.add((gpio_num_t)BOOTBUTTON,GPIO_FLOATING,100,(char*)"bootbutton100ms");
    tk.events.on(0,"bootbutton100ms",[](void* ctx, void* arg){
        if(!*(bool*)arg){
            mqtt.publish((char*)"button",(char*)"PRESSED",0,0);
        }else{
            mqtt.publish((char*)"button",(char*)"RELEASED",0,0);
        }
    });
    //tk.button.remove((gpio_num_t)BOOTBUTTON);

}

void loop()
{
    tk.loop();
    vTaskDelay(5);
}

esptoolkit's People

Contributors

calkoe avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.