Improve build process for Linux
This commit is contained in:
@@ -11,12 +11,16 @@ CONFIG_FILE=Makefile.inc
|
|||||||
|
|
||||||
include $(CONFIG_FILE)
|
include $(CONFIG_FILE)
|
||||||
|
|
||||||
GATEWAY=examples_RPi/MySGateway
|
GATEWAY=examples_linux/mysGateway
|
||||||
GATEWAY_SOURCES=$(wildcard drivers/Linux/*.cpp) examples_RPi/MySGateway.cpp
|
GATEWAY_SOURCES=$(wildcard drivers/Linux/*.cpp) examples_linux/mysGateway.cpp
|
||||||
GATEWAY_OBJECTS=$(patsubst %.cpp,%.o,$(GATEWAY_SOURCES))
|
GATEWAY_OBJECTS=$(patsubst %.cpp,%.o,$(GATEWAY_SOURCES))
|
||||||
DEPS+=$(patsubst %.cpp,%.d,$(GATEWAY_SOURCES))
|
DEPS+=$(patsubst %.cpp,%.d,$(GATEWAY_SOURCES))
|
||||||
|
|
||||||
CINCLUDE=-I. -I./core -I./drivers/Linux -I$(RF24H_LIB_DIR)
|
CINCLUDE=-I. -I./core -I./drivers/Linux
|
||||||
|
|
||||||
|
ifneq ($(RF24H_LIB_DIR),)
|
||||||
|
CINCLUDE+=-I$(RF24H_LIB_DIR)
|
||||||
|
endif
|
||||||
|
|
||||||
.PHONY: all gateway cleanconfig clean install uninstall force
|
.PHONY: all gateway cleanconfig clean install uninstall force
|
||||||
|
|
||||||
|
|||||||
+4
-12
@@ -410,17 +410,8 @@
|
|||||||
#define MY_RF24_CE_PIN 4
|
#define MY_RF24_CE_PIN 4
|
||||||
#elif defined(ARDUINO_ARCH_SAMD)
|
#elif defined(ARDUINO_ARCH_SAMD)
|
||||||
#define MY_RF24_CE_PIN 27
|
#define MY_RF24_CE_PIN 27
|
||||||
#elif defined(RASPBERRYPI_ARCH)
|
#elif defined(LINUX)
|
||||||
#include <RF24.h>
|
#define MY_RF24_CE_PIN 22
|
||||||
#include <RF24_config.h>
|
|
||||||
#ifdef __RPI_BPLUS
|
|
||||||
#define MY_RF24_CE_PIN RPI_BPLUS_GPIO_J8_22
|
|
||||||
#define MY_RF24_CS_PIN RPI_BPLUS_GPIO_J8_24
|
|
||||||
#else
|
|
||||||
#define MY_RF24_CE_PIN RPI_V2_GPIO_P1_22
|
|
||||||
#define MY_RF24_CS_PIN BCM2835_SPI_CS0
|
|
||||||
#endif
|
|
||||||
#define MY_RF24_SPI_SPEED BCM2835_SPI_SPEED_8MHZ
|
|
||||||
#else
|
#else
|
||||||
#define MY_RF24_CE_PIN 9
|
#define MY_RF24_CE_PIN 9
|
||||||
#endif
|
#endif
|
||||||
@@ -435,6 +426,8 @@
|
|||||||
#define MY_RF24_CS_PIN 15
|
#define MY_RF24_CS_PIN 15
|
||||||
#elif defined(ARDUINO_ARCH_SAMD)
|
#elif defined(ARDUINO_ARCH_SAMD)
|
||||||
#define MY_RF24_CS_PIN 3
|
#define MY_RF24_CS_PIN 3
|
||||||
|
#elif defined(LINUX)
|
||||||
|
#define MY_RF24_CS_PIN 24
|
||||||
#else
|
#else
|
||||||
#define MY_RF24_CS_PIN 10
|
#define MY_RF24_CS_PIN 10
|
||||||
#endif
|
#endif
|
||||||
@@ -616,7 +609,6 @@
|
|||||||
//#define MY_GATEWAY_W5100
|
//#define MY_GATEWAY_W5100
|
||||||
//#define MY_GATEWAY_ENC28J60
|
//#define MY_GATEWAY_ENC28J60
|
||||||
//#define MY_GATEWAY_ESP8266
|
//#define MY_GATEWAY_ESP8266
|
||||||
//#define MY_GATEWAY_RASPBERRYPI
|
|
||||||
//#define MY_GATEWAY_LINUX
|
//#define MY_GATEWAY_LINUX
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
+4
-8
@@ -40,7 +40,7 @@
|
|||||||
* @def MY_NODE_TYPE
|
* @def MY_NODE_TYPE
|
||||||
* @brief Contain a string describing the class of sketch/node (gateway/repeater/sensor).
|
* @brief Contain a string describing the class of sketch/node (gateway/repeater/sensor).
|
||||||
*/
|
*/
|
||||||
#if defined(MY_GATEWAY_SERIAL) || defined(MY_GATEWAY_W5100) || defined(MY_GATEWAY_ENC28J60) || defined(MY_GATEWAY_ESP8266) || defined(MY_GATEWAY_RASPBERRYPI) || defined(MY_GATEWAY_LINUX) || defined(MY_GATEWAY_MQTT_CLIENT)
|
#if defined(MY_GATEWAY_SERIAL) || defined(MY_GATEWAY_W5100) || defined(MY_GATEWAY_ENC28J60) || defined(MY_GATEWAY_ESP8266) || defined(MY_GATEWAY_LINUX) || defined(MY_GATEWAY_MQTT_CLIENT)
|
||||||
#define MY_GATEWAY_FEATURE
|
#define MY_GATEWAY_FEATURE
|
||||||
#define MY_IS_GATEWAY (true)
|
#define MY_IS_GATEWAY (true)
|
||||||
#define MY_NODE_TYPE "GW"
|
#define MY_NODE_TYPE "GW"
|
||||||
@@ -52,10 +52,6 @@
|
|||||||
#define MY_NODE_TYPE "NODE"
|
#define MY_NODE_TYPE "NODE"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(MY_GATEWAY_RASPBERRYPI)
|
|
||||||
#define MY_GATEWAY_LINUX
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Enable radio "feature" if one of the radio types was enabled
|
// Enable radio "feature" if one of the radio types was enabled
|
||||||
#if defined(MY_RADIO_NRF24) || defined(MY_RADIO_RFM69) || defined(MY_RS485)
|
#if defined(MY_RADIO_NRF24) || defined(MY_RADIO_RFM69) || defined(MY_RS485)
|
||||||
#define MY_RADIO_FEATURE
|
#define MY_RADIO_FEATURE
|
||||||
@@ -73,7 +69,7 @@
|
|||||||
#include "core/MyHwATMega328.cpp"
|
#include "core/MyHwATMega328.cpp"
|
||||||
#elif defined(ARDUINO_ARCH_SAMD)
|
#elif defined(ARDUINO_ARCH_SAMD)
|
||||||
#include "core/MyHwSAMD.cpp"
|
#include "core/MyHwSAMD.cpp"
|
||||||
#elif defined(LINUX_ARCH_GENERIC)
|
#elif defined(LINUX)
|
||||||
// Remove PSTR macros from debug prints
|
// Remove PSTR macros from debug prints
|
||||||
#undef PSTR
|
#undef PSTR
|
||||||
#define PSTR(x) (x)
|
#define PSTR(x) (x)
|
||||||
@@ -288,7 +284,7 @@
|
|||||||
#if defined(MY_RF24_ENABLE_ENCRYPTION)
|
#if defined(MY_RF24_ENABLE_ENCRYPTION)
|
||||||
#include "drivers/AES/AES.cpp"
|
#include "drivers/AES/AES.cpp"
|
||||||
#endif
|
#endif
|
||||||
#if !defined(RASPBERRYPI_ARCH)
|
#if !defined(LINUX)
|
||||||
#include "drivers/RF24/RF24.cpp"
|
#include "drivers/RF24/RF24.cpp"
|
||||||
#endif
|
#endif
|
||||||
#include "core/MyTransportNRF24.cpp"
|
#include "core/MyTransportNRF24.cpp"
|
||||||
@@ -333,7 +329,7 @@
|
|||||||
#if !defined(MY_CORE_ONLY)
|
#if !defined(MY_CORE_ONLY)
|
||||||
#if defined(ARDUINO_ARCH_ESP8266)
|
#if defined(ARDUINO_ARCH_ESP8266)
|
||||||
#include "core/MyMainESP8266.cpp"
|
#include "core/MyMainESP8266.cpp"
|
||||||
#elif defined(LINUX_ARCH_GENERIC)
|
#elif defined(LINUX)
|
||||||
#include "core/MyMainLinux.cpp"
|
#include "core/MyMainLinux.cpp"
|
||||||
#else
|
#else
|
||||||
#include "core/MyMainDefault.cpp"
|
#include "core/MyMainDefault.cpp"
|
||||||
|
|||||||
@@ -32,11 +32,15 @@ Installation options:
|
|||||||
--gateway-dir=<DIR> Gateway files installation directory. [PREFIX/bin]
|
--gateway-dir=<DIR> Gateway files installation directory. [PREFIX/bin]
|
||||||
|
|
||||||
MySensors options:
|
MySensors options:
|
||||||
--my-debug Enables debug.
|
--my-debug=[enable|disable]
|
||||||
--my-gateway-type=[ethernet|mqtt]
|
Enables or disables debugging.
|
||||||
Gateway type, default to ethernet.
|
Default to enable.
|
||||||
|
--my-gateway=[none|ethernet|mqtt]
|
||||||
|
Gateway type, set to none to disable gateway feature.
|
||||||
|
Default to ethernet.
|
||||||
--my-config-file=<FILE> Config file path. [/etc/MySensorGateway.cfg]
|
--my-config-file=<FILE> Config file path. [/etc/MySensorGateway.cfg]
|
||||||
--my-rf24-enable Enables RF24 radio.
|
--my-radio=[none|nrf24] Radio type, set to none to disable radio feature.
|
||||||
|
Default to rf24.
|
||||||
--my-rf24-channel=<0-125> RF channel for the sensor net, 0-125.
|
--my-rf24-channel=<0-125> RF channel for the sensor net, 0-125.
|
||||||
--my-rf24-pa-level=[RF24_PA_MAX|RF24_PA_LOW]
|
--my-rf24-pa-level=[RF24_PA_MAX|RF24_PA_LOW]
|
||||||
RF24 PA level.
|
RF24 PA level.
|
||||||
@@ -45,7 +49,8 @@ MySensors options:
|
|||||||
--my-controller-ip-address=<IP>
|
--my-controller-ip-address=<IP>
|
||||||
Controller or MQTT broker ip.
|
Controller or MQTT broker ip.
|
||||||
Use commas instead of points. Example: 127,0,0,1
|
Use commas instead of points. Example: 127,0,0,1
|
||||||
--my-port=<PORT> Controller or MQTT broker port.
|
--my-port=<PORT> The port to keep open on gateway mode.
|
||||||
|
If gateway is set to mqtt, it sets the broker port.
|
||||||
--my-mqtt-client-id=<ID> MQTT client id.
|
--my-mqtt-client-id=<ID> MQTT client id.
|
||||||
--my-mqtt-publish-topic-prefix=<PREFIX>
|
--my-mqtt-publish-topic-prefix=<PREFIX>
|
||||||
MQTT publish topic prefix.
|
MQTT publish topic prefix.
|
||||||
@@ -164,10 +169,10 @@ function gcc_cpu_flags {
|
|||||||
local soc=$1
|
local soc=$1
|
||||||
case $soc in
|
case $soc in
|
||||||
BCM2835)
|
BCM2835)
|
||||||
flags="-march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -DRASPBERRYPI_ARCH"
|
flags="-march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -DLINUX_ARCH_RASPBERRYPI"
|
||||||
;;
|
;;
|
||||||
BCM2836)
|
BCM2836)
|
||||||
flags="-march=armv7-a -mtune=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard -DRASPBERRYPI_ARCH"
|
flags="-march=armv7-a -mtune=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard -DLINUX_ARCH_RASPBERRYPI"
|
||||||
;;
|
;;
|
||||||
AM33XX)
|
AM33XX)
|
||||||
flags="-march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=hard"
|
flags="-march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=hard"
|
||||||
@@ -190,7 +195,12 @@ function gcc_cpu_flags {
|
|||||||
echo ${flags}
|
echo ${flags}
|
||||||
}
|
}
|
||||||
|
|
||||||
params="OS SOC CPUFLAGS CXXFLAGS LDFLAGS PREFIX CXX RF24H_LIB_DIR GATEWAY_DIR INIT_SYSTEM"
|
# Default values
|
||||||
|
debug=enable
|
||||||
|
gateway_type=ethernet
|
||||||
|
radio_type=nrf24
|
||||||
|
|
||||||
|
params="OS SOC CXXFLAGS LDFLAGS PREFIX CXX RF24H_LIB_DIR GATEWAY_DIR INIT_SYSTEM"
|
||||||
|
|
||||||
for opt do
|
for opt do
|
||||||
if [ "$opt" = "-h" ] || [ "$opt" = "--help" ]; then
|
if [ "$opt" = "-h" ] || [ "$opt" = "--help" ]; then
|
||||||
@@ -229,20 +239,17 @@ for opt do
|
|||||||
--gateway-dir=*)
|
--gateway-dir=*)
|
||||||
GATEWAY_DIR="$optarg"
|
GATEWAY_DIR="$optarg"
|
||||||
;;
|
;;
|
||||||
--my-debug*)
|
--my-debug=*)
|
||||||
CXXFLAGS="-DMY_DEBUG $CXXFLAGS"
|
debug=${optarg}
|
||||||
;;
|
;;
|
||||||
--my-gateway-type=*)
|
--my-gateway=*)
|
||||||
if [[ ${optarg} == "mqtt" ]]; then
|
gateway_type=${optarg}
|
||||||
LDFLAGS="-lmosquitto $LDFLAGS"
|
|
||||||
CXXFLAGS="-DMY_GATEWAY_MQTT_CLIENT $CXXFLAGS"
|
|
||||||
fi
|
|
||||||
;;
|
;;
|
||||||
--my-config-file=*)
|
--my-config-file=*)
|
||||||
CXXFLAGS="-DMY_CONFIG_FILE=${optarg} $CXXFLAGS"
|
CXXFLAGS="-DMY_CONFIG_FILE=${optarg} $CXXFLAGS"
|
||||||
;;
|
;;
|
||||||
--my-rf24-enable*)
|
--my-radio=*)
|
||||||
CXXFLAGS="-DMY_RADIO_NRF24 $CXXFLAGS"
|
radio_type=${optarg}
|
||||||
;;
|
;;
|
||||||
--my-rf24-channel=*)
|
--my-rf24-channel=*)
|
||||||
CXXFLAGS="-DMY_RF24_CHANNEL=${optarg} $CXXFLAGS"
|
CXXFLAGS="-DMY_RF24_CHANNEL=${optarg} $CXXFLAGS"
|
||||||
@@ -281,7 +288,6 @@ for opt do
|
|||||||
done
|
done
|
||||||
|
|
||||||
PREFIX=${PREFIX:-/usr/local}
|
PREFIX=${PREFIX:-/usr/local}
|
||||||
RF24H_LIB_DIR=${PREFIX}/include/RF24
|
|
||||||
GATEWAY_DIR=${GATEWAY_DIR:-${PREFIX}/bin}
|
GATEWAY_DIR=${GATEWAY_DIR:-${PREFIX}/bin}
|
||||||
CXX=${CXX:-g++}
|
CXX=${CXX:-g++}
|
||||||
|
|
||||||
@@ -299,13 +305,30 @@ if [ -z "${CPUFLAGS}" ]; then
|
|||||||
CPUFLAGS=$(gcc_cpu_flags $SOC)
|
CPUFLAGS=$(gcc_cpu_flags $SOC)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
CXXFLAGS="$CPUFLAGS -Ofast -g -Wall -Wextra -DLINUX_ARCH_GENERIC $CXXFLAGS"
|
CXXFLAGS="$CPUFLAGS -Ofast -g -Wall -Wextra -DLINUX $CXXFLAGS"
|
||||||
|
|
||||||
if [[ $TYPE == "RPi2" || $TYPE == "RPi3" || $REV == "0010" ]]; then
|
if [[ $TYPE == "RPi2" || $TYPE == "RPi3" || $REV == "0010" ]]; then
|
||||||
CXXFLAGS+="-D__RPI_BPLUS"
|
CXXFLAGS+="-D__RPI_BPLUS"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
LDFLAGS="-pthread -lrf24-bcm $LDFLAGS"
|
if [[ ${debug} == "enable" ]]; then
|
||||||
|
CXXFLAGS="-DMY_DEBUG $CXXFLAGS"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ${gateway_type} == "ethernet" ]]; then
|
||||||
|
CXXFLAGS="-DMY_GATEWAY_LINUX $CXXFLAGS"
|
||||||
|
elif [[ ${gateway_type} == "mqtt" ]]; then
|
||||||
|
LDFLAGS="-lmosquitto $LDFLAGS"
|
||||||
|
CXXFLAGS="-DMY_GATEWAY_MQTT_CLIENT $CXXFLAGS"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ${radio_type} == "nrf24" ]]; then
|
||||||
|
CXXFLAGS="-DMY_RADIO_NRF24 $CXXFLAGS"
|
||||||
|
LDFLAGS="-lrf24-bcm $LDFLAGS"
|
||||||
|
RF24H_LIB_DIR=${PREFIX}/include/RF24
|
||||||
|
fi
|
||||||
|
|
||||||
|
LDFLAGS="-pthread $LDFLAGS"
|
||||||
|
|
||||||
if [ -x /usr/bin/systemctl ] || [ -x /bin/systemctl ]; then
|
if [ -x /usr/bin/systemctl ] || [ -x /bin/systemctl ]; then
|
||||||
INIT_SYSTEM=systemd
|
INIT_SYSTEM=systemd
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ void _process() {
|
|||||||
transportProcess();
|
transportProcess();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(LINUX_ARCH_GENERIC)
|
#if defined(LINUX)
|
||||||
// To avoid high cpu usage
|
// To avoid high cpu usage
|
||||||
usleep(10000); // 10ms
|
usleep(10000); // 10ms
|
||||||
#endif
|
#endif
|
||||||
@@ -65,7 +65,7 @@ void _infiniteLoop() {
|
|||||||
#if defined (MY_LEDS_BLINKING_FEATURE)
|
#if defined (MY_LEDS_BLINKING_FEATURE)
|
||||||
ledsProcess();
|
ledsProcess();
|
||||||
#endif
|
#endif
|
||||||
#if defined(LINUX_ARCH_GENERIC)
|
#if defined(LINUX)
|
||||||
exit(1);
|
exit(1);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,8 +20,8 @@
|
|||||||
#include "MyConfig.h"
|
#include "MyConfig.h"
|
||||||
#include "MyTransport.h"
|
#include "MyTransport.h"
|
||||||
|
|
||||||
#ifdef RASPBERRYPI_ARCH
|
#ifdef LINUX_ARCH_RASPBERRYPI
|
||||||
#include "drivers/RF24/RF24_RPi.cpp"
|
#include "drivers/RF24/RF24_Linux.cpp"
|
||||||
#else
|
#else
|
||||||
#include "drivers/RF24/RF24.h"
|
#include "drivers/RF24/RF24.h"
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ char *ltoa(long value, char* result, int base);
|
|||||||
char *ultoa(long num, char *str, int radix);
|
char *ultoa(long num, char *str, int radix);
|
||||||
char *utoa(int num, char *str, int radix);
|
char *utoa(int num, char *str, int radix);
|
||||||
char *dtostrf(float f, int width, int decimals, char *result);
|
char *dtostrf(float f, int width, int decimals, char *result);
|
||||||
|
void delay(unsigned int millis);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <time.h>
|
||||||
#include "Arduino.h"
|
#include "Arduino.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -175,3 +176,12 @@ char *dtostrf(float f, int width, int decimals, char *result)
|
|||||||
sprintf(result,"%*.*f", width, decimals, f);
|
sprintf(result,"%*.*f", width, decimals, f);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void delay(unsigned int millis)
|
||||||
|
{
|
||||||
|
struct timespec sleeper;
|
||||||
|
|
||||||
|
sleeper.tv_sec = (time_t)(millis / 1000);
|
||||||
|
sleeper.tv_nsec = (long)(millis % 1000) * 1000000;
|
||||||
|
nanosleep(&sleeper, NULL);
|
||||||
|
}
|
||||||
@@ -16,35 +16,11 @@
|
|||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
* version 2 as published by the Free Software Foundation.
|
* version 2 as published by the Free Software Foundation.
|
||||||
*
|
*
|
||||||
* Based on Olivier Mauti work(RF24.h), copyright (C) 2016 Olivier Mauti <olivier@mysensors.org>
|
* This is a wrapper for maniacbug's RF24 library, copyright (C) 2011 J. Coliz <maniacbug@ymail.com>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "RF24.h"
|
#include <RF24.h>
|
||||||
|
#include "RF24_Linux.h"
|
||||||
// verify RF24 IRQ defs
|
|
||||||
#if defined(MY_RX_MESSAGE_BUFFER_FEATURE)
|
|
||||||
#if !defined(MY_RF24_IRQ_PIN)
|
|
||||||
#error Message buffering feature requires MY_RF24_IRQ_PIN to be defined!
|
|
||||||
#endif
|
|
||||||
#ifndef SPI_HAS_TRANSACTION
|
|
||||||
#error RF24 IRQ usage requires transactional SPI support
|
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
#ifdef MY_RX_MESSAGE_BUFFER_SIZE
|
|
||||||
#error Receive message buffering requires RF24 IRQ usage
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// pipes
|
|
||||||
#define BROADCAST_PIPE 1
|
|
||||||
#define NODE_PIPE 2
|
|
||||||
|
|
||||||
// debug
|
|
||||||
#if defined(MY_DEBUG_VERBOSE_RF24)
|
|
||||||
#define RF24_DEBUG(x,...) debug(x, ##__VA_ARGS__)
|
|
||||||
#else
|
|
||||||
#define RF24_DEBUG(x,...)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef MY_RX_MESSAGE_BUFFER_FEATURE
|
#ifdef MY_RX_MESSAGE_BUFFER_FEATURE
|
||||||
typedef void (*RF24_receiveCallbackType)(void);
|
typedef void (*RF24_receiveCallbackType)(void);
|
||||||
@@ -57,7 +33,7 @@
|
|||||||
static uint8_t MY_RF24_BASE_ADDR[MY_RF24_ADDR_WIDTH] = { MY_RF24_BASE_RADIO_ID };
|
static uint8_t MY_RF24_BASE_ADDR[MY_RF24_ADDR_WIDTH] = { MY_RF24_BASE_RADIO_ID };
|
||||||
static uint8_t MY_RF24_NODE_ADDRESS = AUTO;
|
static uint8_t MY_RF24_NODE_ADDRESS = AUTO;
|
||||||
|
|
||||||
RF24 _rf24(MY_RF24_CE_PIN, MY_RF24_CS_PIN);
|
RF24 _rf24(RF24_CE_PIN, RF24_CS_PIN, MY_RF24_SPI_MAX_SPEED);
|
||||||
|
|
||||||
static void RF24_startListening(void) {
|
static void RF24_startListening(void) {
|
||||||
RF24_DEBUG(PSTR("start listening\n"));
|
RF24_DEBUG(PSTR("start listening\n"));
|
||||||
@@ -0,0 +1,302 @@
|
|||||||
|
/**
|
||||||
|
* The MySensors Arduino library handles the wireless radio link and protocol
|
||||||
|
* between your home built sensors/actuators and HA controller of choice.
|
||||||
|
* The sensors forms a self healing radio network with optional repeaters. Each
|
||||||
|
* repeater and gateway builds a routing tables in EEPROM which keeps track of the
|
||||||
|
* network topology allowing messages to be routed to nodes.
|
||||||
|
*
|
||||||
|
* Created by Marcelo Aquino <marceloaqno@gmail.org>
|
||||||
|
* Copyright (C) 2016 Marcelo Aquino
|
||||||
|
* Full contributor list: https://github.com/mysensors/MySensors/graphs/contributors
|
||||||
|
*
|
||||||
|
* Documentation: http://www.mysensors.org
|
||||||
|
* Support Forum: http://forum.mysensors.org
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* version 2 as published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __RF24_LINUX_H__
|
||||||
|
#define __RF24_LINUX_H__
|
||||||
|
|
||||||
|
// SPI settings
|
||||||
|
#if !defined(MY_RF24_SPI_MAX_SPEED)
|
||||||
|
#define MY_RF24_SPI_MAX_SPEED BCM2835_SPI_SPEED_8MHZ
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// verify RF24 IRQ defs
|
||||||
|
#if defined(MY_RX_MESSAGE_BUFFER_FEATURE)
|
||||||
|
#if !defined(MY_RF24_IRQ_PIN)
|
||||||
|
#error Message buffering feature requires MY_RF24_IRQ_PIN to be defined!
|
||||||
|
#endif
|
||||||
|
#ifndef SPI_HAS_TRANSACTION
|
||||||
|
#error RF24 IRQ usage requires transactional SPI support
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
#ifdef MY_RX_MESSAGE_BUFFER_SIZE
|
||||||
|
#error Receive message buffering requires RF24 IRQ usage
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// pipes
|
||||||
|
#define BROADCAST_PIPE 1
|
||||||
|
#define NODE_PIPE 2
|
||||||
|
|
||||||
|
// debug
|
||||||
|
#if defined(MY_DEBUG_VERBOSE_RF24)
|
||||||
|
#define RF24_DEBUG(x,...) debug(x, ##__VA_ARGS__)
|
||||||
|
#else
|
||||||
|
#define RF24_DEBUG(x,...)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef LINUX_ARCH_RASPBERRYPI
|
||||||
|
// CE pin
|
||||||
|
#ifdef MY_RF24_CE_PIN
|
||||||
|
#ifdef __RPI_BPLUS
|
||||||
|
#if MY_RF24_CE_PIN == 3
|
||||||
|
#define RF24_CE_PIN RPI_BPLUS_GPIO_J8_03
|
||||||
|
#elif MY_RF24_CE_PIN == 5
|
||||||
|
#define RF24_CE_PIN RPI_BPLUS_GPIO_J8_05
|
||||||
|
#elif MY_RF24_CE_PIN == 7
|
||||||
|
#define RF24_CE_PIN RPI_BPLUS_GPIO_J8_07
|
||||||
|
#elif MY_RF24_CE_PIN == 8
|
||||||
|
#define RF24_CE_PIN RPI_BPLUS_GPIO_J8_08
|
||||||
|
#elif MY_RF24_CE_PIN == 10
|
||||||
|
#define RF24_CE_PIN RPI_BPLUS_GPIO_J8_10
|
||||||
|
#elif MY_RF24_CE_PIN == 11
|
||||||
|
#define RF24_CE_PIN RPI_BPLUS_GPIO_J8_11
|
||||||
|
#elif MY_RF24_CE_PIN == 12
|
||||||
|
#define RF24_CE_PIN RPI_BPLUS_GPIO_J8_12
|
||||||
|
#elif MY_RF24_CE_PIN == 13
|
||||||
|
#define RF24_CE_PIN RPI_BPLUS_GPIO_J8_13
|
||||||
|
#elif MY_RF24_CE_PIN == 15
|
||||||
|
#define RF24_CE_PIN RPI_BPLUS_GPIO_J8_15
|
||||||
|
#elif MY_RF24_CE_PIN == 16
|
||||||
|
#define RF24_CE_PIN RPI_BPLUS_GPIO_J8_16
|
||||||
|
#elif MY_RF24_CE_PIN == 18
|
||||||
|
#define RF24_CE_PIN RPI_BPLUS_GPIO_J8_18
|
||||||
|
#elif MY_RF24_CE_PIN == 19
|
||||||
|
#define RF24_CE_PIN RPI_BPLUS_GPIO_J8_19
|
||||||
|
#elif MY_RF24_CE_PIN == 21
|
||||||
|
#define RF24_CE_PIN RPI_BPLUS_GPIO_J8_21
|
||||||
|
#elif MY_RF24_CE_PIN == 22
|
||||||
|
#define RF24_CE_PIN RPI_BPLUS_GPIO_J8_22
|
||||||
|
#elif MY_RF24_CE_PIN == 23
|
||||||
|
#define RF24_CE_PIN RPI_BPLUS_GPIO_J8_23
|
||||||
|
#elif MY_RF24_CE_PIN == 24
|
||||||
|
#define RF24_CE_PIN RPI_BPLUS_GPIO_J8_24
|
||||||
|
#elif MY_RF24_CE_PIN == 26
|
||||||
|
#define RF24_CE_PIN RPI_BPLUS_GPIO_J8_26
|
||||||
|
#elif MY_RF24_CE_PIN == 29
|
||||||
|
#define RF24_CE_PIN RPI_BPLUS_GPIO_J8_29
|
||||||
|
#elif MY_RF24_CE_PIN == 31
|
||||||
|
#define RF24_CE_PIN RPI_BPLUS_GPIO_J8_31
|
||||||
|
#elif MY_RF24_CE_PIN == 32
|
||||||
|
#define RF24_CE_PIN RPI_BPLUS_GPIO_J8_32
|
||||||
|
#elif MY_RF24_CE_PIN == 33
|
||||||
|
#define RF24_CE_PIN RPI_BPLUS_GPIO_J8_33
|
||||||
|
#elif MY_RF24_CE_PIN == 35
|
||||||
|
#define RF24_CE_PIN RPI_BPLUS_GPIO_J8_35
|
||||||
|
#elif MY_RF24_CE_PIN == 36
|
||||||
|
#define RF24_CE_PIN RPI_BPLUS_GPIO_J8_36
|
||||||
|
#elif MY_RF24_CE_PIN == 37
|
||||||
|
#define RF24_CE_PIN RPI_BPLUS_GPIO_J8_37
|
||||||
|
#elif MY_RF24_CE_PIN == 38
|
||||||
|
#define RF24_CE_PIN RPI_BPLUS_GPIO_J8_38
|
||||||
|
#elif MY_RF24_CE_PIN == 40
|
||||||
|
#define RF24_CE_PIN RPI_BPLUS_GPIO_J8_40
|
||||||
|
#else
|
||||||
|
#error invalid value for MY_RF24_CE_PIN
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
#if MY_RF24_CE_PIN == 3
|
||||||
|
#define RF24_CE_PIN RPI_V2_GPIO_P1_03
|
||||||
|
#elif MY_RF24_CE_PIN == 5
|
||||||
|
#define RF24_CE_PIN RPI_V2_GPIO_P1_05
|
||||||
|
#elif MY_RF24_CE_PIN == 7
|
||||||
|
#define RF24_CE_PIN RPI_V2_GPIO_P1_07
|
||||||
|
#elif MY_RF24_CE_PIN == 8
|
||||||
|
#define RF24_CE_PIN RPI_V2_GPIO_P1_08
|
||||||
|
#elif MY_RF24_CE_PIN == 10
|
||||||
|
#define RF24_CE_PIN RPI_V2_GPIO_P1_10
|
||||||
|
#elif MY_RF24_CE_PIN == 11
|
||||||
|
#define RF24_CE_PIN RPI_V2_GPIO_P1_11
|
||||||
|
#elif MY_RF24_CE_PIN == 12
|
||||||
|
#define RF24_CE_PIN RPI_V2_GPIO_P1_12
|
||||||
|
#elif MY_RF24_CE_PIN == 13
|
||||||
|
#define RF24_CE_PIN RPI_V2_GPIO_P1_13
|
||||||
|
#elif MY_RF24_CE_PIN == 15
|
||||||
|
#define RF24_CE_PIN RPI_V2_GPIO_P1_15
|
||||||
|
#elif MY_RF24_CE_PIN == 16
|
||||||
|
#define RF24_CE_PIN RPI_V2_GPIO_P1_16
|
||||||
|
#elif MY_RF24_CE_PIN == 18
|
||||||
|
#define RF24_CE_PIN RPI_V2_GPIO_P1_18
|
||||||
|
#elif MY_RF24_CE_PIN == 19
|
||||||
|
#define RF24_CE_PIN RPI_V2_GPIO_P1_19
|
||||||
|
#elif MY_RF24_CE_PIN == 21
|
||||||
|
#define RF24_CE_PIN RPI_V2_GPIO_P1_21
|
||||||
|
#elif MY_RF24_CE_PIN == 22
|
||||||
|
#define RF24_CE_PIN RPI_V2_GPIO_P1_22
|
||||||
|
#elif MY_RF24_CE_PIN == 23
|
||||||
|
#define RF24_CE_PIN RPI_V2_GPIO_P1_23
|
||||||
|
#elif MY_RF24_CE_PIN == 24
|
||||||
|
#define RF24_CE_PIN RPI_V2_GPIO_P1_24
|
||||||
|
#elif MY_RF24_CE_PIN == 26
|
||||||
|
#define RF24_CE_PIN RPI_V2_GPIO_P1_26
|
||||||
|
#elif MY_RF24_CE_PIN == 29
|
||||||
|
#define RF24_CE_PIN RPI_V2_GPIO_P1_29
|
||||||
|
#elif MY_RF24_CE_PIN == 31
|
||||||
|
#define RF24_CE_PIN RPI_V2_GPIO_P1_31
|
||||||
|
#elif MY_RF24_CE_PIN == 32
|
||||||
|
#define RF24_CE_PIN RPI_V2_GPIO_P1_32
|
||||||
|
#elif MY_RF24_CE_PIN == 33
|
||||||
|
#define RF24_CE_PIN RPI_V2_GPIO_P1_33
|
||||||
|
#elif MY_RF24_CE_PIN == 35
|
||||||
|
#define RF24_CE_PIN RPI_V2_GPIO_P1_35
|
||||||
|
#elif MY_RF24_CE_PIN == 36
|
||||||
|
#define RF24_CE_PIN RPI_V2_GPIO_P1_36
|
||||||
|
#elif MY_RF24_CE_PIN == 37
|
||||||
|
#define RF24_CE_PIN RPI_V2_GPIO_P1_37
|
||||||
|
#elif MY_RF24_CE_PIN == 38
|
||||||
|
#define RF24_CE_PIN RPI_V2_GPIO_P1_38
|
||||||
|
#elif MY_RF24_CE_PIN == 40
|
||||||
|
#define RF24_CE_PIN RPI_V2_GPIO_P1_40
|
||||||
|
#else
|
||||||
|
#error invalid value for MY_RF24_CE_PIN
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
#ifdef __RPI_BPLUS
|
||||||
|
#define RF24_CE_PIN RPI_BPLUS_GPIO_J8_22
|
||||||
|
#else
|
||||||
|
#define RF24_CE_PIN RPI_V2_GPIO_P1_22
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// CS pin
|
||||||
|
#ifdef MY_RF24_CS_PIN
|
||||||
|
#ifdef __RPI_BPLUS
|
||||||
|
#if MY_RF24_CS_PIN == 3
|
||||||
|
#define RF24_CS_PIN RPI_BPLUS_GPIO_J8_03
|
||||||
|
#elif MY_RF24_CS_PIN == 5
|
||||||
|
#define RF24_CS_PIN RPI_BPLUS_GPIO_J8_05
|
||||||
|
#elif MY_RF24_CS_PIN == 7
|
||||||
|
#define RF24_CS_PIN RPI_BPLUS_GPIO_J8_07
|
||||||
|
#elif MY_RF24_CS_PIN == 8
|
||||||
|
#define RF24_CS_PIN RPI_BPLUS_GPIO_J8_08
|
||||||
|
#elif MY_RF24_CS_PIN == 10
|
||||||
|
#define RF24_CS_PIN RPI_BPLUS_GPIO_J8_10
|
||||||
|
#elif MY_RF24_CS_PIN == 11
|
||||||
|
#define RF24_CS_PIN RPI_BPLUS_GPIO_J8_11
|
||||||
|
#elif MY_RF24_CS_PIN == 12
|
||||||
|
#define RF24_CS_PIN RPI_BPLUS_GPIO_J8_12
|
||||||
|
#elif MY_RF24_CS_PIN == 13
|
||||||
|
#define RF24_CS_PIN RPI_BPLUS_GPIO_J8_13
|
||||||
|
#elif MY_RF24_CS_PIN == 15
|
||||||
|
#define RF24_CS_PIN RPI_BPLUS_GPIO_J8_15
|
||||||
|
#elif MY_RF24_CS_PIN == 16
|
||||||
|
#define RF24_CS_PIN RPI_BPLUS_GPIO_J8_16
|
||||||
|
#elif MY_RF24_CS_PIN == 18
|
||||||
|
#define RF24_CS_PIN RPI_BPLUS_GPIO_J8_18
|
||||||
|
#elif MY_RF24_CS_PIN == 19
|
||||||
|
#define RF24_CS_PIN RPI_BPLUS_GPIO_J8_19
|
||||||
|
#elif MY_RF24_CS_PIN == 21
|
||||||
|
#define RF24_CS_PIN RPI_BPLUS_GPIO_J8_21
|
||||||
|
#elif MY_RF24_CS_PIN == 22
|
||||||
|
#define RF24_CS_PIN RPI_BPLUS_GPIO_J8_22
|
||||||
|
#elif MY_RF24_CS_PIN == 23
|
||||||
|
#define RF24_CS_PIN RPI_BPLUS_GPIO_J8_23
|
||||||
|
#elif MY_RF24_CS_PIN == 24
|
||||||
|
#define RF24_CS_PIN RPI_BPLUS_GPIO_J8_24
|
||||||
|
#elif MY_RF24_CS_PIN == 26
|
||||||
|
#define RF24_CS_PIN RPI_BPLUS_GPIO_J8_26
|
||||||
|
#elif MY_RF24_CS_PIN == 29
|
||||||
|
#define RF24_CS_PIN RPI_BPLUS_GPIO_J8_29
|
||||||
|
#elif MY_RF24_CS_PIN == 31
|
||||||
|
#define RF24_CS_PIN RPI_BPLUS_GPIO_J8_31
|
||||||
|
#elif MY_RF24_CS_PIN == 32
|
||||||
|
#define RF24_CS_PIN RPI_BPLUS_GPIO_J8_32
|
||||||
|
#elif MY_RF24_CS_PIN == 33
|
||||||
|
#define RF24_CS_PIN RPI_BPLUS_GPIO_J8_33
|
||||||
|
#elif MY_RF24_CS_PIN == 35
|
||||||
|
#define RF24_CS_PIN RPI_BPLUS_GPIO_J8_35
|
||||||
|
#elif MY_RF24_CS_PIN == 36
|
||||||
|
#define RF24_CS_PIN RPI_BPLUS_GPIO_J8_36
|
||||||
|
#elif MY_RF24_CS_PIN == 37
|
||||||
|
#define RF24_CS_PIN RPI_BPLUS_GPIO_J8_37
|
||||||
|
#elif MY_RF24_CS_PIN == 38
|
||||||
|
#define RF24_CS_PIN RPI_BPLUS_GPIO_J8_38
|
||||||
|
#elif MY_RF24_CS_PIN == 40
|
||||||
|
#define RF24_CS_PIN RPI_BPLUS_GPIO_J8_40
|
||||||
|
#else
|
||||||
|
#error invalid value for MY_RF24_CS_PIN
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
#if MY_RF24_CS_PIN == 3
|
||||||
|
#define RF24_CS_PIN RPI_V2_GPIO_P1_03
|
||||||
|
#elif MY_RF24_CS_PIN == 5
|
||||||
|
#define RF24_CS_PIN RPI_V2_GPIO_P1_05
|
||||||
|
#elif MY_RF24_CS_PIN == 7
|
||||||
|
#define RF24_CS_PIN RPI_V2_GPIO_P1_07
|
||||||
|
#elif MY_RF24_CS_PIN == 8
|
||||||
|
#define RF24_CS_PIN RPI_V2_GPIO_P1_08
|
||||||
|
#elif MY_RF24_CS_PIN == 10
|
||||||
|
#define RF24_CS_PIN RPI_V2_GPIO_P1_10
|
||||||
|
#elif MY_RF24_CS_PIN == 11
|
||||||
|
#define RF24_CS_PIN RPI_V2_GPIO_P1_11
|
||||||
|
#elif MY_RF24_CS_PIN == 12
|
||||||
|
#define RF24_CS_PIN RPI_V2_GPIO_P1_12
|
||||||
|
#elif MY_RF24_CS_PIN == 13
|
||||||
|
#define RF24_CS_PIN RPI_V2_GPIO_P1_13
|
||||||
|
#elif MY_RF24_CS_PIN == 15
|
||||||
|
#define RF24_CS_PIN RPI_V2_GPIO_P1_15
|
||||||
|
#elif MY_RF24_CS_PIN == 16
|
||||||
|
#define RF24_CS_PIN RPI_V2_GPIO_P1_16
|
||||||
|
#elif MY_RF24_CS_PIN == 18
|
||||||
|
#define RF24_CS_PIN RPI_V2_GPIO_P1_18
|
||||||
|
#elif MY_RF24_CS_PIN == 19
|
||||||
|
#define RF24_CS_PIN RPI_V2_GPIO_P1_19
|
||||||
|
#elif MY_RF24_CS_PIN == 21
|
||||||
|
#define RF24_CS_PIN RPI_V2_GPIO_P1_21
|
||||||
|
#elif MY_RF24_CS_PIN == 22
|
||||||
|
#define RF24_CS_PIN RPI_V2_GPIO_P1_22
|
||||||
|
#elif MY_RF24_CS_PIN == 23
|
||||||
|
#define RF24_CS_PIN RPI_V2_GPIO_P1_23
|
||||||
|
#elif MY_RF24_CS_PIN == 24
|
||||||
|
#define RF24_CS_PIN BCM2835_SPI_CS0
|
||||||
|
#elif MY_RF24_CS_PIN == 26
|
||||||
|
#define RF24_CS_PIN BCM2835_SPI_CS1
|
||||||
|
#elif MY_RF24_CS_PIN == 29
|
||||||
|
#define RF24_CS_PIN RPI_V2_GPIO_P1_29
|
||||||
|
#elif MY_RF24_CS_PIN == 31
|
||||||
|
#define RF24_CS_PIN RPI_V2_GPIO_P1_31
|
||||||
|
#elif MY_RF24_CS_PIN == 32
|
||||||
|
#define RF24_CS_PIN RPI_V2_GPIO_P1_32
|
||||||
|
#elif MY_RF24_CS_PIN == 33
|
||||||
|
#define RF24_CS_PIN RPI_V2_GPIO_P1_33
|
||||||
|
#elif MY_RF24_CS_PIN == 35
|
||||||
|
#define RF24_CS_PIN RPI_V2_GPIO_P1_35
|
||||||
|
#elif MY_RF24_CS_PIN == 36
|
||||||
|
#define RF24_CS_PIN RPI_V2_GPIO_P1_36
|
||||||
|
#elif MY_RF24_CS_PIN == 37
|
||||||
|
#define RF24_CS_PIN RPI_V2_GPIO_P1_37
|
||||||
|
#elif MY_RF24_CS_PIN == 38
|
||||||
|
#define RF24_CS_PIN RPI_V2_GPIO_P1_38
|
||||||
|
#elif MY_RF24_CS_PIN == 40
|
||||||
|
#define RF24_CS_PIN RPI_V2_GPIO_P1_40
|
||||||
|
#else
|
||||||
|
#error invalid value for MY_RF24_CS_PIN
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
#ifdef __RPI_BPLUS
|
||||||
|
#define RF24_CS_PIN RPI_BPLUS_GPIO_J8_24
|
||||||
|
#else
|
||||||
|
#define RF24_CS_PIN BCM2835_SPI_CS0
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -1,91 +0,0 @@
|
|||||||
/**
|
|
||||||
* The MySensors Arduino library handles the wireless radio link and protocol
|
|
||||||
* between your home built sensors/actuators and HA controller of choice.
|
|
||||||
* The sensors forms a self healing radio network with optional repeaters. Each
|
|
||||||
* repeater and gateway builds a routing tables in EEPROM which keeps track of the
|
|
||||||
* network topology allowing messages to be routed to nodes.
|
|
||||||
*
|
|
||||||
* Created by Marcelo Aquino <marceloaqno@gmail.org>
|
|
||||||
* Copyleft (c) 2016, Marcelo Aquino
|
|
||||||
* Full contributor list: https://github.com/mysensors/Arduino/graphs/contributors
|
|
||||||
*
|
|
||||||
* Documentation: http://www.mysensors.org
|
|
||||||
* Support Forum: http://forum.mysensors.org
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU General Public License
|
|
||||||
* version 2 as published by the Free Software Foundation.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <iostream>
|
|
||||||
#include <cstdio>
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
// Enable debug prints to monitor
|
|
||||||
#ifndef MY_DEBUG
|
|
||||||
#define MY_DEBUG
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Config file
|
|
||||||
#ifndef MY_LINUX_CONFIG_FILE
|
|
||||||
#define MY_LINUX_CONFIG_FILE "/etc/MySensorGateway.cfg"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Enables and select radio type (if attached)
|
|
||||||
#ifndef MY_RADIO_NRF24
|
|
||||||
#define MY_RADIO_NRF24
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define MY_GATEWAY_RASPBERRYPI
|
|
||||||
|
|
||||||
// How many clients should be able to connect to this gateway (default 1)
|
|
||||||
#define MY_GATEWAY_MAX_CLIENTS 10
|
|
||||||
|
|
||||||
#ifdef MY_GATEWAY_MQTT_CLIENT
|
|
||||||
// Set MQTT client id
|
|
||||||
#ifndef MY_MQTT_CLIENT_ID
|
|
||||||
#define MY_MQTT_CLIENT_ID "mysensors-1"
|
|
||||||
#endif
|
|
||||||
// MQTT broker ip address.
|
|
||||||
#ifndef MY_CONTROLLER_IP_ADDRESS
|
|
||||||
#define MY_CONTROLLER_IP_ADDRESS 192, 168, 178, 68
|
|
||||||
#endif
|
|
||||||
// The MQTT broker port to to open
|
|
||||||
#ifndef MY_PORT
|
|
||||||
#define MY_PORT 1883
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Enable these if your MQTT broker requires usenrame/password
|
|
||||||
//#define MY_MQTT_USER "username"
|
|
||||||
//#define MY_MQTT_PASSWORD "password"
|
|
||||||
|
|
||||||
// Set this node's subscribe and publish topic prefix
|
|
||||||
#ifndef MY_MQTT_PUBLISH_TOPIC_PREFIX
|
|
||||||
#define MY_MQTT_PUBLISH_TOPIC_PREFIX "mygateway1-out"
|
|
||||||
#endif
|
|
||||||
#ifndef MY_MQTT_SUBSCRIBE_TOPIC_PREFIX
|
|
||||||
#define MY_MQTT_SUBSCRIBE_TOPIC_PREFIX "mygateway1-in"
|
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
// Enable MY_IP_ADDRESS here if you want to listen for incoming network
|
|
||||||
// connections on the specified IP address/hostname only
|
|
||||||
//#define MY_IP_ADDRESS 192,168,178,87
|
|
||||||
|
|
||||||
// The port to keep open on node server mode
|
|
||||||
#ifndef MY_PORT
|
|
||||||
#define MY_PORT 5003
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <MySensors.h>
|
|
||||||
|
|
||||||
void setup() {
|
|
||||||
}
|
|
||||||
|
|
||||||
void presentation() {
|
|
||||||
// Present locally attached sensors here
|
|
||||||
}
|
|
||||||
|
|
||||||
void loop() {
|
|
||||||
// Send locally attached sensors data here
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
/**
|
||||||
|
* The MySensors Arduino library handles the wireless radio link and protocol
|
||||||
|
* between your home built sensors/actuators and HA controller of choice.
|
||||||
|
* The sensors forms a self healing radio network with optional repeaters. Each
|
||||||
|
* repeater and gateway builds a routing tables in EEPROM which keeps track of the
|
||||||
|
* network topology allowing messages to be routed to nodes.
|
||||||
|
*
|
||||||
|
* Created by Marcelo Aquino <marceloaqno@gmail.org>
|
||||||
|
* Copyleft (c) 2016, Marcelo Aquino
|
||||||
|
* Full contributor list: https://github.com/mysensors/Arduino/graphs/contributors
|
||||||
|
*
|
||||||
|
* Documentation: http://www.mysensors.org
|
||||||
|
* Support Forum: http://forum.mysensors.org
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* version 2 as published by the Free Software Foundation.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include <cstdio>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
// For more options run ./configure --help
|
||||||
|
|
||||||
|
// Config file
|
||||||
|
//#define MY_LINUX_CONFIG_FILE "/etc/MySensorGateway.cfg"
|
||||||
|
|
||||||
|
// How many clients should be able to connect to this gateway (default 1)
|
||||||
|
#define MY_GATEWAY_MAX_CLIENTS 10
|
||||||
|
|
||||||
|
// MQTT options
|
||||||
|
//#define MY_CONTROLLER_IP_ADDRESS 192, 168, 178, 68
|
||||||
|
//#define MY_PORT 1883
|
||||||
|
//#define MY_MQTT_CLIENT_ID "mysensors-1"
|
||||||
|
//#define MY_MQTT_PUBLISH_TOPIC_PREFIX "mygateway1-out"
|
||||||
|
//#define MY_MQTT_SUBSCRIBE_TOPIC_PREFIX "mygateway1-in"
|
||||||
|
|
||||||
|
// Enable these if your MQTT broker requires usenrame/password
|
||||||
|
//#define MY_MQTT_USER "username"
|
||||||
|
//#define MY_MQTT_PASSWORD "password"
|
||||||
|
|
||||||
|
|
||||||
|
#include <MySensors.h>
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
}
|
||||||
|
|
||||||
|
void presentation() {
|
||||||
|
// Present locally attached sensors here
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
// Send locally attached sensors data here
|
||||||
|
}
|
||||||
@@ -3,7 +3,7 @@ Description=MySensors Gateway daemon
|
|||||||
Requires=network.target
|
Requires=network.target
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
ExecStart=%gateway_dir%/MySGateway
|
ExecStart=%gateway_dir%/mysGateway
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
### BEGIN INIT INFO
|
### BEGIN INIT INFO
|
||||||
# Provides: MySGateway
|
# Provides: mysGateway
|
||||||
# Required-Start: $remote_fs $syslog
|
# Required-Start: $remote_fs $syslog
|
||||||
# Required-Stop: $remote_fs $syslog
|
# Required-Stop: $remote_fs $syslog
|
||||||
# Default-Start: 2 3 4 5
|
# Default-Start: 2 3 4 5
|
||||||
@@ -20,7 +20,7 @@
|
|||||||
# PATH should only include /usr/* if it runs after the mountnfs.sh script
|
# PATH should only include /usr/* if it runs after the mountnfs.sh script
|
||||||
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin
|
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin
|
||||||
DESC="MySensors Gateway"
|
DESC="MySensors Gateway"
|
||||||
NAME=MySGateway
|
NAME=mysGateway
|
||||||
DAEMON=%gateway_dir%/$NAME
|
DAEMON=%gateway_dir%/$NAME
|
||||||
DAEMON_ARGS="-d"
|
DAEMON_ARGS="-d"
|
||||||
PIDFILE=/var/run/$NAME.pid
|
PIDFILE=/var/run/$NAME.pid
|
||||||
|
|||||||
Reference in New Issue
Block a user