Files
OpenMQTT-Gateway/config_RFM69.h
T
Philippe LUC 254e616f31 Some code clean, and buffer overflow prevention (2) (#126)
* Remove trailing whitespaces

* RFM69toMQTT: Add the emitting nodeID to the topic, +

 - And remove radio.receiveDone() that is unecessary.
 - Send the ACK before the publish to MQTT, to be faster
 - Prevent buffer overflow, Terminate the data with a "\0"
   - Fix issue with the sender doesn't end its string with "\0"
     and rely only on DATALEN.

* Change topic subjectGTWRFM69toMQTT to be distinct from the commands

 + comments

* MQTTtoRFM69: deduplicate the code

 - Check once and only once if the topic is good.
 - Have or not RCV_ marked doesn't change the structure, as
   valueRCV is correctly set anyway
 + realign

* MQTTtoRFM69: Limit the size of the data

 - Cut the packet to the limit of what can transmit RFM69
   - and terminate the string

* RFM69toMQTT: ACK MQTT message on subjectGTWRFM69toMQTT now contains the nodeID

* RFM69: Publish to MQTT the RSSI on transmit and ACK
2017-10-01 15:50:25 +02:00

70 lines
3.0 KiB
C

/*
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 radiofrequency gateways (ZgatewayRF and ZgatewayRF2) with RCswitch and newremoteswitch library
Copyright: (c)Florian ROBERT
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/>.
*/
/*----------------------RFM69 topics & parameters -------------------------*/
// Topic where the message from RFM69 will be published by the gateway,
// appended with the nodeID of the sender
#define subjectRFM69toMQTT "home/RFM69toMQTT"
// Upon reception of a packed, the RSSI of that packet will be publish to this topic,
// appended with the nodeID of the sender
#define subjectRFM69toMQTTrssi "home/RFM69toMQTT/rssi" // Comment this if you don't want the RSSI to be published.
#define subjectRFM69toMQTTsender "home/RFM69toMQTT/sender"
// Topic subscribed by the gateway. Messages received will be sent to RFM69
#define subjectMQTTtoRFM69 "home/commands/MQTTtoRFM69"
#define RFM69receiverKey "RCV_" // receiver id will be defined if a subject contains RFM69receiverKey followed by a value of 3 digits
// On reception of an ack from RFM69, the message that has been sent is published here
#define subjectGTWRFM69toMQTT "home/RFM69toMQTT/acked"
#define defaultRFM69ReceiverId 99
// Default values
const char PROGMEM ENCRYPTKEY[] = "sampleEncryptKey";
const char PROGMEM MDNS_NAME[] = "rfm69gw1";
const char PROGMEM MQTT_BROKER[] = "raspi2";
const char PROGMEM RFM69AP_NAME[] = "RFM69-AP";
#define NETWORKID 200 //the same on all nodes that talk to each other
#define NODEID 10
//Match frequency to the hardware version of the radio
#define FREQUENCY RF69_433MHZ
//#define FREQUENCY RF69_868MHZ
//#define FREQUENCY RF69_915MHZ
#define IS_RFM69HCW true // set to 'true' if you are using an RFM69HCW module
#define POWER_LEVEL 31
/*-------------------PIN DEFINITIONS----------------------*/
#ifdef ESP8266
#define RFM69_CS D1
#define RFM69_IRQ D8 // GPIO15/D8
#define RFM69_IRQN digitalPinToInterrupt(RFM69_IRQ)
#define RFM69_RST D4 // GPIO02/D4
#else
//RFM69 not tested with arduino
#define RFM69_CS 10
#define RFM69_IRQ 0
#define RFM69_IRQN digitalPinToInterrupt(RFM69_IRQ)
#define RFM69_RST 9
#endif