@njbuch said:
Can you show your exact working example?
Here is my full example :
#include <MyController.h>
MyController mc;
#define SENSOR_LED_BLEU "LED BLEU"
#define SENSOR_LED_ROUGE "LED ROUGE"
#define SENSOR_LED_VERTE "LED VERTE"
#define SENSOR_LUXMETRE "LUXMETRE"
#define BP_GPIO4 "Bouton RESET"
#define BP_GPIO5 "Bouton Test 1"
#define BP_GPIO14 "Bouton Test 2"
//Relay pins
#define PIN_RELAY_1 2
#define PIN_BP_GPIO4 4
#define PIN_BP_GPIO5 5
#define PIN_LED_VERTE 12
#define PIN_LED_BLEU 13
#define PIN_BP_GPIO14 14
#define PIN_LED_ROUGE 15
//Sensors
#define SENSOR_RELAY_1 "relay-1"
unsigned long lastRecu = 0;
bool Gpio5_Checked = false;
bool Gpio14_Checked = false;
unsigned long Gpio5_millis = 0;
unsigned long Gpio14_millis = 0;
unsigned long Scan_Gpio = 0;
int Gpio4_S = 0; // Gpio 4 state
int Gpio5_S = 0; // Gpio 5 state
int Gpio14_S = 0; // Gpio 14 state
int Gpio4_LS = 0; // Gpio 4 Last state
int Gpio5_LS = 0; // Gpio 5 Last state
int Gpio14_LS = 0; // Gpio 14 Last state
//in_esp/ESP_8C0125/LUXMETRE/C_SET/V_LIGHT_LEVEL/0
//n_esp/ESP_8C0125/LUXMETRE/C_SET/V_LEVEL/0
//out_esp/ESP_8C0125/SENSOR_BC/C_INTERNAL/LUXMETRE/0
//_message.update(BC_SENSOR, C_INTERNAL, SENSOR_LUXMETRE);
void sendLUX(){
McMessage _message;
//_message.update(SENSOR_LUXMETRE, C_SET, "V_LIGHT_LEVEL");
//char _luxmeter[21];
// snprintf_P(_luxmeter, 20, "%s", analogRead(A0) );
Serial.print("Envoie de Luxmeter:");
Serial.println(analogRead(A0));
//snprintf_P(_luxmeter, 20, "%d", String(analogRead(A0)));
////send(_message.set(_luxmeter));
_message.update(SENSOR_LUXMETRE, C_SET, V_LEVEL);
//snprintf_P(_luxmeter, 20, "%d", analogRead(A0));
send(_message.set(analogRead(A0)));
}
//in_esp/ESP_8C0125/Bouton Test/C_SET/V_TRIPPED/0
/*
void sendPin5(){
McMessage _message;
_message.update(BP_GPIO5, C_SET, V_TRIPPED);
if (digitalRead(PIN_BP_GPIO5) == HIGH){
send(_message.set(1));
Serial.println("BP = 1");
}
if (digitalRead(PIN_BP_GPIO5) == LOW){
send(_message.set(0));
Serial.println("BP = 0");
}
}
void sendPin14(){
McMessage _message;
_message.update(BP_GPIO14, C_SET, V_TRIPPED);
if (digitalRead(PIN_BP_GPIO14) == HIGH){
send(_message.set(1));
Serial.println("BP2 = 1");
}
if (digitalRead(PIN_BP_GPIO14) == LOW){
send(_message.set(0));
Serial.println("BP2 = 0");
}
}
*/
void sendPin4(int val){
McMessage _message;
_message.update(BP_GPIO4, C_SET, V_STATUS);
send(_message.set(val));
Serial.print("Changement de Pin4 : ");
Serial.println(val);
}
void sendPin5(int val){
McMessage _message;
_message.update(BP_GPIO5, C_SET, V_STATUS);
send(_message.set(val));
Serial.print("Changement de Pin5 : ");
Serial.println(val);
}
void sendPin14(int val){
McMessage _message;
_message.update(BP_GPIO14, C_SET, V_STATUS);
send(_message.set(val));
Serial.print("Changement de Pin14 : ");
Serial.println(val);
}
/*
void Pin5Change(){
if (millis() - Gpio5_millis > 75){
delayMicroseconds(32000);
Serial.println("\n*** Pin5 Interrupt");
Gpio5_Checked = true;
Gpio5_millis = millis();
detachInterrupt(PIN_BP_GPIO5);
}
}
void Pin14Change(){
if (millis() - Gpio14_millis > 75){
delayMicroseconds(32000);
Serial.println("\n*** Pin14 Interrupt");
Gpio14_Checked = true;
Gpio14_millis = millis();
detachInterrupt(PIN_BP_GPIO14);
}
}
*/
void before(){
//Your code before this library inialize
}
void presentation(){
//Send node name and version information
sendSketchInfo("Module de test", "1.0.0");
//Send sensor name and type
present(S_BINARY, SENSOR_RELAY_1, "Relay 01");
//request current status
request(SENSOR_RELAY_1, V_STATUS);
present(S_BINARY, SENSOR_LED_BLEU, SENSOR_LED_BLEU);
//request current status
request(SENSOR_LED_BLEU, V_STATUS);
present(S_BINARY, SENSOR_LED_ROUGE, SENSOR_LED_ROUGE);
//request current status
request(SENSOR_LED_ROUGE, V_STATUS);
present(S_BINARY, SENSOR_LED_VERTE, SENSOR_LED_VERTE);
//request current status
request(SENSOR_LED_VERTE, V_STATUS);
//present(S_LIGHT, SENSOR_LUXMETRE, SENSOR_LUXMETRE);
//request(SENSOR_LUXMETRE, "V_LIGHT_LEVEL");
present(S_DIMMER, BP_GPIO4, BP_GPIO4);
request(BP_GPIO4, V_STATUS);
present(S_DOOR, BP_GPIO5, BP_GPIO5);
request(BP_GPIO5, V_STATUS);
present(S_DOOR, BP_GPIO14, BP_GPIO14);
request(BP_GPIO14, V_STATUS);
}
void receiveTime(unsigned long mcTimestamp){
//Do something with received time
}
void receive(McMessage &message) {
if(message.isSensorOf(SENSOR_RELAY_1) && message.isSubTypeOf(V_STATUS)){
digitalWrite(PIN_RELAY_1, message.getUInt());
}
if(message.isSensorOf(SENSOR_LED_BLEU) && message.isSubTypeOf(V_STATUS)){
digitalWrite(PIN_LED_BLEU, message.getUInt());
}
if(message.isSensorOf(SENSOR_LED_ROUGE) && message.isSubTypeOf(V_STATUS)){
digitalWrite(PIN_LED_ROUGE, message.getUInt());
}
if(message.isSensorOf(SENSOR_LED_VERTE) && message.isSubTypeOf(V_STATUS)){
digitalWrite(PIN_LED_VERTE, message.getUInt());
}
}
void setup() {
pinMode(A0, INPUT);
pinMode(PIN_BP_GPIO4, INPUT);
pinMode(PIN_BP_GPIO5, INPUT);
pinMode(PIN_BP_GPIO14, INPUT);
pinMode(PIN_RELAY_1, OUTPUT);
pinMode(PIN_LED_BLEU, OUTPUT);
pinMode(PIN_LED_ROUGE, OUTPUT);
pinMode(PIN_LED_VERTE, OUTPUT);
if(!isSystemConfigured()){
//You can check, does this node/device configured. If no you can display/blink some led from here.
}
//attachInterrupt(PIN_BP_GPIO5, (Pin5Change), CHANGE);
//attachInterrupt(PIN_BP_GPIO14, (Pin14Change), CHANGE); //digitalPinToInterrupt(x)
}
void loop() {
mc.loop();
long now = millis();
if (now - Scan_Gpio > 200 ){
Gpio4_S = digitalRead(PIN_BP_GPIO4);
Gpio5_S = digitalRead(PIN_BP_GPIO5);
Gpio14_S = digitalRead(PIN_BP_GPIO14);
if (Gpio4_S != Gpio4_LS ){
sendPin4(((Gpio4_S == HIGH) ? 1 : 0));
Gpio4_LS = Gpio4_S;
}
if (Gpio5_S != Gpio5_LS ){
sendPin5(((Gpio5_S == HIGH) ? 1 : 0));
Gpio5_LS = Gpio5_S;
}
if (Gpio14_S != Gpio14_LS ){
sendPin14(((Gpio14_S == HIGH) ? 1 : 0));
Gpio14_LS = Gpio14_S;
}
Scan_Gpio = now;
Serial.print(".");
}
/*
if (Gpio5_Checked) {
Gpio5_Checked = false;
sendPin5();
yield();
attachInterrupt(PIN_BP_GPIO5, (Pin5Change), CHANGE);
}
if (Gpio14_Checked) {
Gpio14_Checked = false;
sendPin14();
yield();
attachInterrupt(PIN_BP_GPIO14, (Pin14Change), CHANGE);
}
*/
//You can add your logic here.
if (now - lastRecu > 30000 ) {
lastRecu = now;
//sendRSSI();
sendLUX();
//send(SENSOR_LUXMETRE, analogRead(A0));
}
}
Take care of this : need to be improve , i am a beginer with MyController , and this example is not clean !
Hope will help you
Best regards.