Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // MC_2CH
- // ESP8266 2CH Board
- // Touch Pad Working
- // Wifi Mesh Working
- // July 29 - Still stable
- #include <Wire.h>
- #define I2C_SLAVE_1 1
- #define I2C_SLAVE_2 2
- const byte interruptPin1 = 14; // D5
- const byte interruptPin2 = 12; // D6
- volatile int Load1state = LOW; // To make sure variables shared between an ISR
- volatile int Load2state = LOW; // To make sure variables shared between an ISR
- #define I2C_SDA 4 // D2 // ESP8266
- #define I2C_SCL 5 // D1
- //#define I2C_SDA 21 // ESP32
- //#define I2C_SCL 22
- #include "painlessMesh.h"
- #define MESH_PREFIX "whateverYouLike"
- #define MESH_PASSWORD "somethingSneaky"
- #define MESH_PORT 5555
- Scheduler userScheduler; // to control your personal task
- painlessMesh mesh;
- // User stub
- void sendMessage() ; // Prototype so PlatformIO doesn't complain
- Task taskSendMessage( TASK_SECOND * 1 , TASK_FOREVER, &sendMessage );
- void sendMessage() {
- String msg = "Hello from node ";
- msg += mesh.getNodeId();
- //mesh.sendBroadcast( msg );
- taskSendMessage.setInterval( random( TASK_SECOND * 1, TASK_SECOND * 5 ));
- }
- // Needed for painless library
- void receivedCallback( uint32_t from, String &msg ) {
- Serial.println(msg);
- String json = "";
- DynamicJsonDocument doc(1024);
- json = msg.c_str();
- DeserializationError error = deserializeJson(doc,json);
- if(error)
- {
- Serial.println(" deserialization failed");
- }
- // String steer = "";
- // steer = doc["steer"];
- if(doc["lamp"] == "light1On")
- {
- Wire.beginTransmission(1);
- Wire.write('0');
- Wire.endTransmission();
- Serial.print("Send 0");
- }
- // else if(doc["lamp"] == "L1_low")
- // {
- // Wire.beginTransmission(1);
- // Wire.write('1');
- // Wire.endTransmission();
- // Serial.print("Send low");
- // }
- // else if(doc["lamp"] == "L1_med")
- // {
- // Wire.beginTransmission(1);
- // Wire.write('2');
- // Wire.endTransmission();
- // Serial.print("Send med");
- // }
- else if(doc["lamp"] == "light1Off")
- {
- Wire.beginTransmission(1);
- Wire.write('3');
- Wire.endTransmission();
- Serial.print("Send high");
- }
- ///////////////////////////////
- if(doc["lamp"] == "fanOff")
- {
- Wire.beginTransmission(2);
- Wire.write('0');
- Wire.endTransmission();
- Serial.print("Send 0");
- }
- else if(doc["lamp"] == "fanLow")
- {
- Wire.beginTransmission(2);
- Wire.write('1');
- Wire.endTransmission();
- Serial.print("Send low");
- }
- else if(doc["lamp"] == "fanMed")
- {
- Wire.beginTransmission(2);
- Wire.write('2');
- Wire.endTransmission();
- Serial.print("Send med");
- }
- else if(doc["lamp"] == "fanHigh")
- {
- Wire.beginTransmission(2);
- Wire.write('3');
- Wire.endTransmission();
- Serial.print("Send high");
- }
- /////////////////////////////////
- }
- void newConnectionCallback(uint32_t nodeId) {
- Serial.printf("--> startHere: New Connection, nodeId = %u\n", nodeId);
- }
- void changedConnectionCallback() {
- Serial.printf("Changed connections\n");
- }
- void nodeTimeAdjustedCallback(int32_t offset) {
- Serial.printf("Adjusted time %u. Offset = %d\n", mesh.getNodeTime(),offset);
- }
- //--------------------------------------------------------------------------------------//
- ICACHE_RAM_ATTR void handleInterruptOn1() {
- Load1state = !Load1state;
- if (Load1state) {
- Wire.beginTransmission(1);
- Wire.write('3');
- Wire.endTransmission();
- // Serial.println("Device 1 HIGH Via Touch");
- }
- else if (!Load1state) {
- Wire.beginTransmission(1);
- Wire.write('0');
- Wire.endTransmission();
- // Serial.println("Device 1 OFF Via Touch");
- }
- }
- ICACHE_RAM_ATTR void handleInterruptOn2() {
- Load2state = !Load2state;
- if (Load2state) {
- Wire.beginTransmission(2);
- Wire.write('3');
- Wire.endTransmission();
- // Serial.println("Device 2 HIGH Via Touch");
- }
- else if (!Load2state) {
- Wire.beginTransmission(2);
- Wire.write('0');
- Wire.endTransmission();
- // Serial.println("Device 2 OFF Via Touch");
- }
- }
- //--------------------------------------------------------------------------------------//
- void setup() {
- Serial.begin(115200);
- //mesh.setDebugMsgTypes( ERROR | MESH_STATUS | CONNECTION | SYNC | COMMUNICATION | GENERAL | MSG_TYPES | REMOTE ); // all types on
- mesh.setDebugMsgTypes( ERROR | STARTUP ); // set before init() so that you can see startup messages
- mesh.init( MESH_PREFIX, MESH_PASSWORD, &userScheduler, MESH_PORT );
- mesh.onReceive(&receivedCallback);
- mesh.onNewConnection(&newConnectionCallback);
- mesh.onChangedConnections(&changedConnectionCallback);
- mesh.onNodeTimeAdjusted(&nodeTimeAdjustedCallback);
- userScheduler.addTask( taskSendMessage );
- taskSendMessage.enable();
- pinMode(interruptPin1, INPUT_PULLUP);
- pinMode(interruptPin2, INPUT_PULLUP);
- Wire.begin(I2C_SDA, I2C_SCL); // join i2c bus (address optional for master)
- attachInterrupt(digitalPinToInterrupt(interruptPin1), handleInterruptOn1, FALLING);
- attachInterrupt(digitalPinToInterrupt(interruptPin2), handleInterruptOn2, FALLING);
- Serial.print("Ready");
- }
- void loop() {
- // it will run the user scheduler as well
- mesh.update();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement