-
Notifications
You must be signed in to change notification settings - Fork 803
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
740036d
commit 789ed5e
Showing
3 changed files
with
151 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,85 @@ | ||
/* | ||
OpenMQTTGateway Addon - ESP8266 or Arduino program for home automation | ||
Act as a wifi or ethernet gateway between your 433mhz/infrared IR signal and a MQTT broker | ||
Send and receiving command by MQTT | ||
GPIO KeyCode derived from GPIO Input | ||
This reads up to 4 gpio with latch signal (gpio line) and combines the bits as KeyKode - can be connected | ||
to EV1527 receiver. | ||
Copyright: (c)Grzegorz Rajtar | ||
This file is part of OpenMQTTGateway. | ||
OpenMQTTGateway is free software: you can redistribute it and/or modify | ||
it under the terms of the GNU General Public License as published by | ||
the Free Software Foundation, either version 3 of the License, or | ||
(at your option) any later version. | ||
OpenMQTTGateway is distributed in the hope that it will be useful, | ||
but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
GNU General Public License for more details. | ||
You should have received a copy of the GNU General Public License | ||
along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
*/ | ||
#ifdef ZsensorGPIOKeyCode | ||
|
||
unsigned long lastDebounceTime = 0; | ||
int InputState = 0x0f; // Set to 3 so that it reads on startup | ||
int lastInputState = 0x0f; | ||
int lastLatchState = 0; | ||
|
||
|
||
void setupGPIOKeyCode() { | ||
pinMode(GPIOKeyCode_LATCH_PIN, INPUT_PULLUP); // | ||
pinMode(GPIOKeyCode_D0_PIN, INPUT_PULLUP); // | ||
pinMode(GPIOKeyCode_D1_PIN, INPUT_PULLUP); // | ||
pinMode(GPIOKeyCode_D2_PIN, INPUT_PULLUP); // | ||
//pinMode(GPIOKeyCode_D3_PIN, INPUT_PULLUP); // | ||
} | ||
|
||
void MeasureGPIOKeyCode(){ | ||
|
||
int latch = digitalRead(GPIOKeyCode_LATCH_PIN); | ||
|
||
// check to see if you just pressed the button | ||
// (i.e. the input went from LOW to HIGH), and you've waited long enough | ||
// since the last press to ignore any noise: | ||
|
||
{ | ||
// whatever the reading is at, it's been there for longer than the debounce | ||
// delay, so take it as the actual current state: | ||
#if defined(ESP8266) || defined(ESP32) | ||
yield(); | ||
#endif | ||
// if the Input state has changed: | ||
if (latch > 0 && lastLatchState != latch) { | ||
|
||
int reading = digitalRead(GPIOKeyCode_D0_PIN) | ||
| (digitalRead(GPIOKeyCode_D1_PIN) << 1) | ||
| (digitalRead(GPIOKeyCode_D2_PIN) << 2); | ||
//| digitalRead(GPIOKeyCode_D3_PIN) << 3; | ||
|
||
char hex[3]; | ||
|
||
InputState = reading; | ||
sprintf(hex, "%02x", InputState); | ||
hex[2] = 0; | ||
Serial.printf("GPIOKeyCode %s\n", hex); | ||
client.publish(subjectGPIOKeyCodetoMQTT,hex); | ||
lastLatchState = latch; | ||
} | ||
|
||
if (latch != lastLatchState) { | ||
lastLatchState = latch; | ||
Serial.printf("GPIOKeyCode latch %d\n", latch); | ||
if (latch == 0) | ||
client.publish(subjectGPIOKeyCodeStatetoMQTT, "done"); | ||
} | ||
|
||
// save the reading. Next time through the loop, it'll be the lastInputState: | ||
lastInputState = InputState; | ||
} | ||
} | ||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
/* | ||
OpenMQTTGateway - ESP8266 or Arduino program for home automation | ||
Act as a wifi or ethernet gateway between your 433mhz/infrared IR signal and a MQTT broker | ||
Send and receiving command by MQTT | ||
This files enables to set your parameter for the GPIOKeyCode multi input | ||
Copyright: (c)Grzegorz Rajtar | ||
This file is part of OpenMQTTGateway. | ||
OpenMQTTGateway is free software: you can redistribute it and/or modify | ||
it under the terms of the GNU General Public License as published by | ||
the Free Software Foundation, either version 3 of the License, or | ||
(at your option) any later version. | ||
OpenMQTTGateway is distributed in the hope that it will be useful, | ||
but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
GNU General Public License for more details. | ||
You should have received a copy of the GNU General Public License | ||
along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
*/ | ||
|
||
/*----------------------------USER PARAMETERS-----------------------------*/ | ||
/*-------------DEFINE YOUR MQTT PARAMETERS BELOW----------------*/ | ||
#define subjectGPIOKeyCodetoMQTT Base_Topic Gateway_Name "/keycode" | ||
#define subjectGPIOKeyCodeStatetoMQTT subjectGPIOKeyCodetoMQTT "/status" | ||
#define GPIOKeyCodeDebounceDelay 60 //debounce time, increase if there are issues | ||
|
||
/*-------------------PIN DEFINITIONS----------------------*/ | ||
#if defined(ESP8266) || defined(ESP32) | ||
|
||
#ifndef GPIOKeyCode_LATCH_PIN | ||
#define GPIOKeyCode_LATCH_PIN 12 //D6 | ||
#endif | ||
#ifndef GPIOKeyCode_D0_PIN | ||
#define GPIOKeyCode_D0_PIN 14 //D5 | ||
#endif | ||
#ifndef GPIOKeyCode_D1_PIN | ||
#define GPIOKeyCode_D1_PIN 5 //D1 | ||
#endif | ||
#ifndef GPIOKeyCode_D2_PIN | ||
#define GPIOKeyCode_D2_PIN 13 //D7 | ||
#endif | ||
#ifndef GPIOKeyCode_D3_PIN | ||
#define GPIOKeyCode_D3_PIN XX //?? | ||
#endif | ||
#else | ||
// must define !!! | ||
#endif | ||
|