Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revisionBoth sides next revision | ||
enocean [16.03.2018 05:35] – [add enOcean] Pascal Suter | enocean [16.03.2018 06:05] – [esp8266] Pascal Suter | ||
---|---|---|---|
Line 24: | Line 24: | ||
here are a few libraries i have found beforehand and intend on trying out: | here are a few libraries i have found beforehand and intend on trying out: | ||
* [[https:// | * [[https:// | ||
- | * [[https:// | + | * [[https:// |
* [[https:// | * [[https:// | ||
* [[https:// | * [[https:// | ||
+ | * [[https:// | ||
===== setup and development ===== | ===== setup and development ===== | ||
Line 62: | Line 63: | ||
</ | </ | ||
- | ==== add the async printer ==== | ||
- | we use [[https:// | ||
- | first we need to install | + | ==== add enOcean ==== |
- | cd <arduino directory>/ | + | now we can finally add the enocean receiver |
- | git clone https:// | + | |
- | for my development machine to receive those messages i need to open a socket with '' | + | next we need the [[http://djynet.net/?p=635|enOceanMsg]] library.. however, i have modified |
- | nc -l 3333 | + | |
- | and leave the terminal open. | + | |
- | + | ||
- | now we could integrate it as is into our code as you can see in the example | + | |
- | <code cpp> | + | |
- | while(_client-> | + | |
- | delay(1); | + | |
- | </ | + | |
- | + | ||
- | let's add '' | + | |
+ | extract the contents of this ZIP to the '' | ||
<code cpp> | <code cpp> | ||
#include < | #include < | ||
Line 87: | Line 76: | ||
#include < | #include < | ||
#include < | #include < | ||
+ | #include < | ||
bool enableOnlineDebugging=true; | bool enableOnlineDebugging=true; | ||
const char *debuggerHost=" | const char *debuggerHost=" | ||
+ | EnOceanMsg _Msg; | ||
AsyncPrinter ap; | AsyncPrinter ap; | ||
WiFiManager wifiManager; | WiFiManager wifiManager; | ||
bool debugOnline=false; | bool debugOnline=false; | ||
bool firstround=true; | bool firstround=true; | ||
+ | int lastPayload=0; | ||
void setup() { | void setup() { | ||
// put your setup code here, to run once: | // put your setup code here, to run once: | ||
- | Serial.begin(115200); | + | Serial.begin(57600); |
+ | if(enableOnlineDebugging){ | ||
+ | wifiManager.setDebugOutput(false); | ||
+ | } | ||
wifiManager.autoConnect(); | wifiManager.autoConnect(); | ||
wifiManager.startWebPortal(); | wifiManager.startWebPortal(); | ||
Line 107: | Line 101: | ||
if(ap.connected()){ | if(ap.connected()){ | ||
debugOnline=true; | debugOnline=true; | ||
- | ap.println(" | + | ap.println(" |
break; | break; | ||
} else { | } else { | ||
Line 121: | Line 115: | ||
} else { | } else { | ||
Serial.println(" | Serial.println(" | ||
+ | } | ||
+ | _Msg.decode(); | ||
+ | if (_Msg.dataAvailable() == true){ | ||
+ | | ||
} | } | ||
} | } | ||
+ | |||
+ | void debugHex(int payload){ | ||
+ | if(debugOnline){ | ||
+ | ap.println(payload, | ||
+ | } | ||
+ | } | ||
+ | |||
+ | |||
void loop() { | void loop() { | ||
// put your main code here, to run repeatedly: | // put your main code here, to run repeatedly: | ||
+ | int payload=0; | ||
wifiManager.process(); | wifiManager.process(); | ||
if(firstround){ | if(firstround){ | ||
Line 130: | Line 137: | ||
firstround=false; | firstround=false; | ||
} | } | ||
+ | _Msg.decode(); | ||
+ | if(_Msg.dataAvailable() == true){ | ||
+ | payload=_Msg.getPayload(); | ||
+ | if(payload!=lastPayload){ | ||
+ | debug(" | ||
+ | debugHex(payload); | ||
+ | lastPayload=payload; | ||
+ | debugHex(_Msg.getSenderId()); | ||
+ | } | ||
+ | } | ||
+ | delay(50); | ||
} | } | ||
</ | </ | ||
- | you should | + | now you should see output like this on your netcat console after you started the sketch |
+ | < | ||
+ | connected | ||
+ | hello world | ||
+ | new payload received: | ||
+ | 70 | ||
+ | 3102F7 | ||
+ | new payload received: | ||
+ | 0 | ||
+ | 3102F7 | ||
+ | </ | ||
+ | '' | ||
- | ==== add enOcean | + | ==== MQTT ==== |
- | now we can finally add the enocean receiver to our setup. we therefore connect the +3.3V to the +3.3V of the Wemos D1, the GND to the GND and we cross connect the RX of the enocean Module to the TX of the Wemos D1 and the same for the TX fo the enOcean that goes to the RX of the Wemos | + | next up is MQTT support throught he [[https:// |
- | next we need the [[http://djynet.net/?p=635|enOceanMsg]] library.. | + | download |
+ | |||
+ | this is just a copy paste of a code that somewhat worked.. before | ||
- | extract the contents of this ZIP to the '' | ||
<code cpp> | <code cpp> | ||
#include < | #include < | ||
Line 147: | Line 177: | ||
#include < | #include < | ||
#include < | #include < | ||
+ | #include < | ||
bool enableOnlineDebugging=true; | bool enableOnlineDebugging=true; | ||
const char *debuggerHost=" | const char *debuggerHost=" | ||
+ | const char *mqttServer=" | ||
+ | int mqttPort=1883; | ||
EnOceanMsg _Msg; | EnOceanMsg _Msg; | ||
Line 157: | Line 190: | ||
bool firstround=true; | bool firstround=true; | ||
int lastPayload=0; | int lastPayload=0; | ||
+ | AsyncMqttClient mqtt; | ||
+ | bool mqttConnected=false; | ||
+ | String mqttBaseTopic=" | ||
+ | |||
+ | void onMqttConnect(bool sessionPresent){ | ||
+ | debug(" | ||
+ | mqttConnected=true; | ||
+ | } | ||
+ | |||
void setup() { | void setup() { | ||
// put your setup code here, to run once: | // put your setup code here, to run once: | ||
Line 166: | Line 208: | ||
wifiManager.startWebPortal(); | wifiManager.startWebPortal(); | ||
ap.connect(debuggerHost, | ap.connect(debuggerHost, | ||
+ | mqtt.setServer(mqttServer, | ||
+ | mqtt.onConnect(onMqttConnect); | ||
if(enableOnlineDebugging){ | if(enableOnlineDebugging){ | ||
//block for maximum 5 seconds trying to reach the debugger | //block for maximum 5 seconds trying to reach the debugger | ||
Line 172: | Line 216: | ||
debugOnline=true; | debugOnline=true; | ||
ap.println(" | ap.println(" | ||
+ | debug(" | ||
+ | mqtt.connect(); | ||
break; | break; | ||
} else { | } else { | ||
Line 202: | Line 248: | ||
// put your main code here, to run repeatedly: | // put your main code here, to run repeatedly: | ||
int payload=0; | int payload=0; | ||
+ | uint32_t senderId=0; | ||
+ | char * topic; | ||
+ | | ||
wifiManager.process(); | wifiManager.process(); | ||
if(firstround){ | if(firstround){ | ||
Line 214: | Line 263: | ||
debugHex(payload); | debugHex(payload); | ||
lastPayload=payload; | lastPayload=payload; | ||
- | | + | |
+ | debugHex(senderId); | ||
+ | if(payload > 0 && senderId > 0 && mqttConnected){ | ||
+ | //String t = String(mqttBaseTopic+"/" | ||
+ | //char topic[sizeof(t)]; | ||
+ | // | ||
+ | debug(" | ||
+ | uint16_t packetIdPub1 = mqtt.publish(" | ||
+ | } else { | ||
+ | debug(" | ||
+ | uint16_t packetIdPub1 = mqtt.publish(" | ||
+ | } | ||
} | } | ||
} | } | ||
Line 220: | Line 280: | ||
} | } | ||
</ | </ | ||
- | now you should see output like this on your netcat console after you started the sketch and then pressed a button: | ||
- | < | ||
- | connected | ||
- | hello world | ||
- | new payload received: | ||
- | 70 | ||
- | 3102F7 | ||
- | new payload received: | ||
- | 0 | ||
- | 3102F7 | ||
- | </ | ||
- | '' | ||
- | |||
- | ==== MQTT ==== | ||
- | next up is MQTT support throught he [[https:// | ||
- | |||
- | download the [[https:// | ||
- | |||
- | |||
- |