This commit is contained in:
Nigreon 2025-10-28 16:12:52 +01:00
parent 9e702af8c6
commit 2e2687d3f7
8 changed files with 252 additions and 57 deletions

View File

@ -3,6 +3,9 @@
#include <stdint.h>
#define digitalPinToInterrupt(p) p
static const uint8_t LED_BUILTIN = 8;
#define BUILTIN_LED LED_BUILTIN // backward compatibility
#define LED_BUILTIN LED_BUILTIN // allow testing #ifdef LED_BUILTIN

22
doc/cc1101-pinout.txt Normal file
View File

@ -0,0 +1,22 @@
Gauche
------
blanc
orange
vert
-
-
gris
violet
bleu
jaune
Droite
------
-
brun
rouge
-
-
-
-
-

View File

Before

Width:  |  Height:  |  Size: 682 KiB

After

Width:  |  Height:  |  Size: 682 KiB

View File

@ -10,9 +10,11 @@
[platformio]
;default_envs = esp32_cc1101
;default_envs = esp32c3_cdc_cc1101
default_envs = esp32s3_cdc_sx1278
default_envs = esp32c3_cdc_cc1101
;default_envs = esp32s3_cdc_sx1278
;default_envs = esp32c3_cdc_sx1278
;default_envs = rp2040_cdc_sx1278
;default_envs = esp32_sx1278
boards_dir = boards
[libraries]
@ -30,22 +32,23 @@ rtl_433_ESP = https://github.com/NorthernMan54/rtl_433_ESP
framework = arduino
monitor_filters = esp32_exception_decoder
;platform = espressif32@3.5.0
;platform = espressif32@6.1.0
platform = espressif32
lib_ldf_mode = deep+
platform = espressif32@6.1.0
;lib_ldf_mode = deep+
lib_ldf_mode = chain+
lib_deps =
sui77/rc-switch
; sui77/rc-switch
; https://github.com/1technophile/NewRemoteSwitch
${libraries.arduinolog}
${libraries.arduinojson}
${libraries.rtl_433_ESP}
[env:esp32s3_cdc_sx1278]
board = seeed_xiao_esp32s3
[env:esp32_sx1278]
board = wemos_d1_mini32
build_flags =
'-DCONFIG_ESP_CONSOLE_UART=1' ; settings for esp32c3 without uart
'-DARDUINO_USB_MODE=1'
'-DARDUINO_USB_CDC_ON_BOOT=1'
'-DLOG_LEVEL=LOG_LEVEL_TRACE'
;'-DCONFIG_ESP_CONSOLE_UART=1' ; settings for esp32c3 without uart
;'-DARDUINO_USB_MODE=1'
;'-DARDUINO_USB_CDC_ON_BOOT=1'
;'-DLOG_LEVEL=LOG_LEVEL_TRACE'
;'-DOOK_FIXED_THRESHOLD=0x6E'
;'-DAUTOOOKFIX=1'
;'-DPUBLISH_UNPARSED=true'
@ -53,15 +56,49 @@ build_flags =
;'-DDEMOD_DEBUG=true'
'-DOOK_MODULATION=true' ; False is FSK, True is OOK
'-DRF_SX1278="SX1278"' ; CC1101 Transceiver Module
'-DRF_MODULE_DIO0=8' ; CC1101 pin GDO0
'-DRF_MODULE_DIO1=44' ; CC1101 pin GDO2
'-DRF_MODULE_DIO2=7'
'-DRF_MODULE_RST=43' ; CC1101 pin GDO2
;'-DRF_MODULE_SCK=9' ; SPI Clock
;'-DRF_MODULE_MISO=1' ; SPI Serial Output
;'-DRF_MODULE_MOSI=2' ; SPI Serial Input
'-DRF_MODULE_CS=3' ; SPI Chip select
'-DRF_MODULE_DIO0=21' ; CC1101 pin GDO0
'-DRF_MODULE_DIO1=22' ; CC1101 pin GDO2
'-DRF_MODULE_DIO2=16'
'-DRF_MODULE_RST=26' ; CC1101 pin GDO2
'-DRF_MODULE_CS=5' ; SPI Chip select
'-DRF_MODULE_INIT_STATUS=true' ; Display transceiver config during startup
'-DRADIOLIB_DEBUG=true'
targets = upload
monitor_port = /dev/ttyUSB0
monitor_speed = 115200
upload_port = /dev/ttyUSB0
monitor_filters =
default ; Remove typical terminal control codes from input
time ; Add timestamp with milliseconds for each new line
; log2file ; Log data to a file “platformio-device-monitor-*.log” located in the current working directory
[env:esp32s3_cdc_sx1278]
board = waveshare_esp32_s3_zero
build_flags =
;'-DMY_DEVICES=true'
;'-DDISABLERSSITHRESHOLD=true'
'-DCONFIG_ESP_CONSOLE_UART=1' ; settings for esp32c3 without uart
;'-DARDUINO_USB_MODE=1'
;'-DARDUINO_USB_CDC_ON_BOOT=1'
'-DLOG_LEVEL=LOG_LEVEL_TRACE'
;'-DOOK_FIXED_THRESHOLD=0x6E'
;'-DAUTOOOKFIX=1'
'-DPUBLISH_UNPARSED=true'
'-DRAW_SIGNAL_DEBUG=true' ; display raw received messages
'-DSIGNAL_RSSI=true'
'-DDEMOD_DEBUG=true'
'-DOOK_MODULATION=true' ; False is FSK, True is OOK
'-DRF_SX1278="SX1278"' ; CC1101 Transceiver Module
'-DRF_MODULE_DIO0=11' ; CC1101 pin GDO0
'-DRF_MODULE_DIO1=9' ; CC1101 pin GDO2
'-DRF_MODULE_DIO2=8'
'-DRF_MODULE_RST=4' ; CC1101 pin GDO2
;'-DRF_MODULE_SCK=12' ; SPI Clock
;'-DRF_MODULE_MISO=13' ; SPI Serial Output
;'-DRF_MODULE_MOSI=5' ; SPI Serial Input
'-DRF_MODULE_CS=10' ; SPI Chip select
'-DRF_MODULE_INIT_STATUS=true' ; Display transceiver config during startup
;'-DRADIOLIB_DEBUG=true'
targets = upload
monitor_port = /dev/ttyACM0
monitor_speed = 115200
@ -78,6 +115,8 @@ build_flags =
'-DARDUINO_USB_MODE=1'
'-DARDUINO_USB_CDC_ON_BOOT=1'
'-DLOG_LEVEL=LOG_LEVEL_TRACE'
'-DMY_DEVICES=true'
'-DDISABLERSSITHRESHOLD=true'
;'-DOOK_FIXED_THRESHOLD=0x6E'
;'-DAUTOOOKFIX=1'
;'-DPUBLISH_UNPARSED=true'
@ -85,14 +124,50 @@ build_flags =
;'-DDEMOD_DEBUG=true'
'-DOOK_MODULATION=true' ; False is FSK, True is OOK
'-DRF_SX1278="SX1278"' ; CC1101 Transceiver Module
'-DRF_MODULE_DIO0=8' ; CC1101 pin GDO0
'-DRF_MODULE_DIO1=44' ; CC1101 pin GDO2
'-DRF_MODULE_DIO2=7'
'-DRF_MODULE_RST=44' ; CC1101 pin GDO2
'-DRF_MODULE_DIO0=1' ; CC1101 pin GDO0
'-DRF_MODULE_DIO1=3' ; CC1101 pin GDO2
'-DRF_MODULE_DIO2=0'
'-DRF_MODULE_RST=20' ; CC1101 pin GDO2
;'-DRF_MODULE_SCK=9' ; SPI Clock
;'-DRF_MODULE_MISO=1' ; SPI Serial Output
;'-DRF_MODULE_MOSI=2' ; SPI Serial Input
'-DRF_MODULE_CS=3' ; SPI Chip select
'-DRF_MODULE_CS=7' ; SPI Chip select
'-DRF_MODULE_INIT_STATUS=true' ; Display transceiver config during startup
targets = upload
monitor_port = /dev/ttyACM0
monitor_speed = 115200
upload_port = /dev/ttyACM0
monitor_filters =
default ; Remove typical terminal control codes from input
time ; Add timestamp with milliseconds for each new line
; log2file ; Log data to a file “platformio-device-monitor-*.log” located in the current working directory
[env:rp2040_cdc_sx1278]
platform = https://github.com/maxgerhardt/platform-raspberrypi.git
board = waveshare_rp2040_zero
board_build.core = earlephilhower
build_flags =
'-DCONFIG_ESP_CONSOLE_UART=1' ; settings for esp32c3 without uart
'-DARDUINO_USB_MODE=1'
'-DARDUINO_USB_CDC_ON_BOOT=1'
'-DLOG_LEVEL=LOG_LEVEL_TRACE'
'-DMY_DEVICES=true'
'-DDISABLERSSITHRESHOLD=true'
;'-DOOK_FIXED_THRESHOLD=0x6E'
;'-DAUTOOOKFIX=1'
;'-DPUBLISH_UNPARSED=true'
;'-DSIGNAL_RSSI=true'
;'-DDEMOD_DEBUG=true'
'-DOOK_MODULATION=true' ; False is FSK, True is OOK
'-DRF_SX1278="SX1278"' ; CC1101 Transceiver Module
'-DRF_MODULE_DIO0=1' ; CC1101 pin GDO0
'-DRF_MODULE_DIO1=3' ; CC1101 pin GDO2
'-DRF_MODULE_DIO2=0'
'-DRF_MODULE_RST=20' ; CC1101 pin GDO2
;'-DRF_MODULE_SCK=9' ; SPI Clock
;'-DRF_MODULE_MISO=1' ; SPI Serial Output
;'-DRF_MODULE_MOSI=2' ; SPI Serial Input
'-DRF_MODULE_CS=7' ; SPI Chip select
'-DRF_MODULE_INIT_STATUS=true' ; Display transceiver config during startup
targets = upload
monitor_port = /dev/ttyACM0
@ -110,6 +185,8 @@ build_flags =
'-DARDUINO_USB_MODE=1'
'-DARDUINO_USB_CDC_ON_BOOT=1'
'-DLOG_LEVEL=LOG_LEVEL_TRACE'
'-DMY_DEVICES=true' ; subset of devices
'-DDISABLERSSITHRESHOLD=true'
; '-DONBOARD_LED=13' ; LED_D4
; *** rtl_433_ESP Options ***
; '-DRF_MODULE_FREQUENCY=915.00'
@ -119,10 +196,9 @@ build_flags =
; '-DRAW_SIGNAL_DEBUG=true' ; display raw received messages
; '-DMEMORY_DEBUG=true' ; display memory usage information
; '-DDEMOD_DEBUG=true' ; display signal debug info
; '-DMY_DEVICES=true' ; subset of devices
; '-DPUBLISH_UNPARSED=true' ; publish unparsed signal details
'-DDISABLERSSITHRESHOLD=true'
'-DMINRSSI=-82'
; '-DDISABLERSSITHRESHOLD=true'
; '-DMINRSSI=-82'
; '-DMINRSSI=-60'
; '-DRSSI_THRESHOLD=12' ; Apply a delta of 12 to average RSSI level
; '-DAVERAGE_RSSI=5000' ; Display RSSI floor ( Average of 5000 samples )
@ -130,9 +206,12 @@ build_flags =
; '-DOOK_MODULATION=false' ; False is FSK, True is OOK
; *** RF Module Options ***
'-DRF_CC1101="CC1101"' ; CC1101 Transceiver Module
'-DRF_MODULE_CS=21' ; pin to be used as chip select
'-DRF_MODULE_GDO0=6' ; CC1101 pin GDO0
'-DRF_MODULE_GDO2=5' ; CC1101 pin GDO2
;'-DRF_MODULE_CS=21' ; pin to be used as chip select
;'-DRF_MODULE_GDO0=6' ; CC1101 pin GDO0
;'-DRF_MODULE_GDO2=5' ; CC1101 pin GDO2
'-DRF_MODULE_CS=7' ; pin to be used as chip select
'-DRF_MODULE_GDO0=0' ; CC1101 pin GDO0
'-DRF_MODULE_GDO2=1' ; CC1101 pin GDO2
'-DRF_MODULE_INIT_STATUS=true' ; Display transceiver config during startup
; *** RadioLib Options ***
; '-DRADIOLIB_DEBUG=true'

View File

@ -1,9 +1,11 @@
import json
#import fileinput
import serial
import datetime
import paho.mqtt.client as paho
#input = '{"model":"Oregon-THGR810","id":226,"channel":10,"battery_ok":0,"temperature_C":19.7,"humidity":24,"protocol":"Oregon Scientific Weather Sensor"}'
SKIP_KEYS = [ "type", "model", "subtype", "channel", "id", "mic", "mod", "freq", "sequence_num", "message_type", "exception", "raw_msg", "protocol", "duration", "sync", "flags", "status" ]
TOPIC_KEYS = [ "type", "model", "subtype", "channel", "id" ]
@ -11,10 +13,16 @@ TOPIC_KEYS = [ "type", "model", "subtype", "channel", "id" ]
#default="devices[/type][/model][/subtype][/channel][/id]"
prefix = "home/rtl_433"
broker = "192.168.67.1"
broker = "127.0.0.1"
port = 1883
altitude = 150
#altitude = 150
altitude = 210
rainref = -1
rainlast = -1
rainrefday = -1
rainday = -1
serialdev = "/dev/ttyACM0"
serialspeed = 115200
@ -43,11 +51,15 @@ def publish(jsonin, prefix_device):
def on_connect(client, userdata, flags, reason_code, properties):
print(f"Connected to MQTT")
client.subscribe(prefix+"/cmd")
client.subscribe(prefix+"/rain_reset")
def on_message(client, userdata, msg):
global rainref
print(msg.topic+" "+str(msg.payload))
if(str(msg.topic) == prefix+"/cmd"):
ser.write(msg.payload)
if(str(msg.topic) == prefix+"/rain_reset"):
rainref = rainlast
mqtt=paho.Client(paho.CallbackAPIVersion.VERSION2)
mqtt.on_connect = on_connect
@ -73,6 +85,23 @@ while True:
if 'pressure' in data:
data['pressure'] = get_sealevel_pressure(data['pressure'], altitude, data['temperature_C'])
data['pressure'] = round(data['pressure'], 1)
if 'rain_mm' in data:
if rainref == -1 or data['rain_mm'] < rainlast:
rainref = data['rain_mm']
rainrefday = data['rain_mm']
rainlast = rainref
rainday = datetime.datetime.now().day
data['rain_local'] = 0
data['rain_day'] = 0
else:
rainlast = data['rain_mm']
data['rain_local'] = round(rainlast - rainref, 2)
if datetime.datetime.now().day != rainday:
rainday = datetime.datetime.now().day
rainrefday = data['rain_mm']
data['rain_day'] = 0
else:
data['rain_day'] = round(data['rain_mm'] - rainrefday,2)
mqtt.publish(prefix+'/events', json.dumps(data))
prefix_device = generate_topic(data)

View File

@ -71,34 +71,46 @@ def on_message(mqttc, obj, msg):
tags[t] = str(jsonin[t])
measures = ""
measuresnb = 0
if 'temperature_C' in jsonin:
value = float(jsonin['temperature_C'])
measures += create_measure("temperature", currentts, tags, value)
if 'temperature' not in recorddb[ref] or recorddb[ref]['temperature'] != value:
measures += create_measure("temperature", currentts, tags, value)
measuresnb += 1
recorddb[ref]['temperature'] = value
if 'humidity' in jsonin:
value = int(jsonin['humidity'])
measures += create_measure("humidity", currentts, tags, value)
if 'humidity' not in recorddb[ref] or recorddb[ref]['humidity'] != value:
measures += create_measure("humidity", currentts, tags, value)
measuresnb += 1
recorddb[ref]['humidity'] = value
if 'moisture' in jsonin:
value = int(jsonin['moisture'])
measures += create_measure("moisture", currentts, tags, value)
if 'moisture' not in recorddb[ref] or recorddb[ref]['moisture'] != value:
measures += create_measure("moisture", currentts, tags, value)
measuresnb += 1
recorddb[ref]['moisture'] = value
if 'rain_mm' in jsonin:
value = float(jsonin['rain_mm'])
measures += create_measure("rain", currentts, tags, value)
if 'rain' not in recorddb[ref] or recorddb[ref]['rain'] != value:
measuresnb += 1
recorddb[ref]['rain'] = value
if 'pressure' in jsonin:
value = float(jsonin['pressure'])
measures += create_measure("pressure", currentts, tags, value)
if 'pressure' not in recorddb[ref] or recorddb[ref]['pressure'] != value:
measures += create_measure("pressure", currentts, tags, value)
recorddb[ref]['humidity'] = value
measuresnb += 1
recorddb[ref]['pressure'] = value
if 'battery_ok' in jsonin:
value = int(jsonin['battery_ok'])
measures += create_measure("battery_ok", currentts, tags, value)
if 'battery_ok' not in recorddb[ref] or recorddb[ref]['battery_ok'] != value:
measures += create_measure("battery_ok", currentts, tags, value)
measuresnb += 1
recorddb[ref]['battery_ok'] = value
if len(measures) > 0:
if measuresnb > 0:
recorddb[ref]["lastsend"] = currentts
#print(measures)
try:

View File

@ -1,6 +1,6 @@
#include <ArduinoJson.h>
#include <rtl_433_ESP.h>
#include <RCSwitch.h>
//#include <RCSwitch.h>
#include <Wire.h>
#include <BME280I2C.h>
#include <EnvironmentCalculations.h>
@ -12,21 +12,23 @@
#define _DICT_PACK_STRUCTURES
#ifndef LED_BUILTIN
#define LED_BUILTIN 12
#endif
#define LED LED_BUILTIN
#define RCSWITCH_PIN 43
//CC1101 radiotx = RADIO_LIB_MODULE;
RCSwitch mySwitch = RCSwitch();
CC1101 radiotx = RADIO_LIB_MODULE;
//RCSwitch mySwitch = RCSwitch();
#ifndef RF_MODULE_FREQUENCY
# define RF_MODULE_FREQUENCY 433.92
#endif
#define JSON_MSG_BUFFER 512
#define MINDELAY 10L
#define ALTITUDE 150.0
#define DELAYLOCALSENSORS 30L
//#define ALTITUDE 150.0
#define ALTITUDE 210.0
#define DELAYLOCALSENSORS 60L
//#define DELAYKAKUSEND 750L
Dictionary<String, unsigned long> d1;
@ -38,6 +40,10 @@ BME280I2C bme;
bool sensors_enabled;
int count = 0;
unsigned long lastrcv = 0;
//unsigned long kakucode = 0;
//bool kakucmd = false;
uint32_t lastts_localsensors = 0;
@ -45,16 +51,22 @@ void rtl_433_Callback(char* message) {
//Serial.println("RTL433 Callback");
JsonDocument jsonDocument;
deserializeJson(jsonDocument,message);
//logJsonAll(jsonDocument);
logJson(jsonDocument);
count++;
lastrcv = millis();
}
JsonDocument analyzeTH_type1(JsonArray payloadrh) {
JsonDocument doc;
doc["moisture"] = payloadrh[5].as<int>();
doc["battery_ok"] = payloadrh[0].as<unsigned char>() & 0b00000001;
int16_t payloadtemp = payloadrh[4].as<unsigned char>();
payloadtemp += payloadrh[3].as<unsigned char>() << 8;
doc["temperature_C"] = payloadtemp / 100.0;
//doc["moisture"] = payloadrh[5].as<int>();
uint16_t payloadmoisture = payloadrh[6].as<unsigned char>();
payloadmoisture += payloadrh[5].as<unsigned char>() << 8;
doc["moisture"] = payloadmoisture;
doc["battery_ok"] = payloadrh[0].as<unsigned char>() & 0b00000001;
uint16_t payloadbat = payloadrh[2].as<unsigned char>();
payloadbat += payloadrh[1].as<unsigned char>() << 8;
@ -63,6 +75,16 @@ JsonDocument analyzeTH_type1(JsonArray payloadrh) {
return doc;
}
JsonDocument analyzeTH_type2(JsonArray payloadrh) {
JsonDocument doc;
int16_t payloadtemp = payloadrh[2].as<unsigned char>();
payloadtemp += payloadrh[1].as<unsigned char>() << 8;
doc["temperature_C"] = payloadtemp / 100.0;
uint8_t payloadhumidity = payloadrh[3].as<unsigned char>();
doc["humidity"] = payloadhumidity;
return doc;
}
void logJson(JsonDocument jsondata) {
if(jsondata["model"].is<String>())
{
@ -76,7 +98,7 @@ void logJson(JsonDocument jsondata) {
if(jsondata["model"].is<String>() && jsondata["model"] == "RadioHead-ASK") {
JsonArray payloadrh = jsondata["payload"];
bool treatrh = 0;
if(jsondata["len"].as<int>() == 6 && ((payloadrh[0].as<unsigned char>() & 0b00010000 ) > 0)) {
if(jsondata["len"].as<int>() == 7 && ((payloadrh[0].as<unsigned char>() & 0b00010000 ) > 0)) {
treatrh = true;
//Serial.println("Analyse RH Payload");
JsonDocument adoc = analyzeTH_type1(payloadrh);
@ -85,6 +107,11 @@ void logJson(JsonDocument jsondata) {
jsondata["battery_V"] = adoc["battery_V"];
jsondata["battery_percent"] = adoc["battery_percent"];
jsondata["temperature_C"] = adoc["temperature_C"];
} else if(jsondata["len"].as<int>() == 4 && ((payloadrh[0].as<unsigned char>() & 0b00100000 ) > 0)) {
treatrh = true;
JsonDocument adoc = analyzeTH_type2(payloadrh);
jsondata["temperature_C"] = adoc["temperature_C"];
jsondata["humidity"] = adoc["humidity"];
}
if(treatrh == true) {
jsondata.remove("from");
@ -149,6 +176,7 @@ void logJsonRH(JsonDocument jsondata) {
//Serial.println();
//ledblink();
}
*/
void logJsonAll(JsonDocument jsondata) {
// Serial.println(count);
@ -162,7 +190,7 @@ void logJsonAll(JsonDocument jsondata) {
Serial.println(JSONmessageBuffer);
//ledblink();
}
*/
void sendBME280() {
JsonDocument jsonDocument;
@ -203,14 +231,29 @@ void ledblink() {
}
void setup() {
Serial.setTxBufferSize(512);
//Serial.setTxBufferSize(512);
//Serial.setTxTimeoutMs(100);
Serial.begin(115200);
delay(1000);
delay(10000);
//for (int i=0 ; i<10; i++) {
// Serial.print("Hello");
// delay(1000);
//}
/*Serial.print("MISO ");
Serial.println(MISO);
Serial.print("MOSI ");
Serial.println(MOSI);
Serial.print("SS ");
Serial.println(SS);
Serial.print("SCK ");
Serial.println(SCK);
*/
/*SPI.begin(SCK, MISO, MOSI, SS);
SPI.setFrequency(4000000);*/
SPI.setFrequency(4000000);
Serial.printf("SPI.begin(SCK=%d, MISO=%d, MOSI=%d, CS=%d)\n", SCK, MISO, MOSI, SS);
Serial.print("RF_MODULE_RECEIVER_GPIO ");
Serial.println(RF_MODULE_RECEIVER_GPIO);
/* if(SS != 21 || MOSI != 20 || MISO != 10 || SCK != 7)
{
for ( ; ; ) {
@ -235,10 +278,17 @@ void setup() {
void loop() {
rf.loop();
if(sensors_enabled == true && (millis() > (lastts_localsensors + (DELAYLOCALSENSORS*1000)) || lastts_localsensors > millis())) {
if(sensors_enabled == true && (millis() > (lastts_localsensors + (DELAYLOCALSENSORS*1000) + random(0, 5000)) || lastts_localsensors > millis())) {
lastts_localsensors = millis();
sendBME280();
}
/*if(kakucode > 0 && (millis() > (lastrcv + DELAYKAKUSEND) || lastrcv > millis())) {
rf.disableReceiver();
radiotx.SPIsendCommand(RADIOLIB_CC1101_CMD_TX);
radiotx.SPIsendCommand(RADIOLIB_CC1101_CMD_RX);
rf.enableReceiver();
kakucode = 0;
}*/
if (Serial.available())
{
// Read the JSON document from the "link" serial port
@ -257,10 +307,10 @@ void loop() {
//rf.disableReceiver();
//radiotx.SPIsendCommand(RADIOLIB_CC1101_CMD_TX);
//mySwitch.enableTransmit(RF_MODULE_GDO0);
mySwitch.enableTransmit(RCSWITCH_PIN);
//mySwitch.enableTransmit(RCSWITCH_PIN);
//mySwitch.setRepeatTransmit(8);
mySwitch.setRepeatTransmit(5);
mySwitch.send(doc["value"].as<uint32_t>(), 24);
//mySwitch.setRepeatTransmit(5);
//mySwitch.send(doc["value"].as<uint32_t>(), 24);
//mySwitch.disableTransmit();
//radiotx.SPIsendCommand(RADIOLIB_CC1101_CMD_RX);
//rf.enableReceiver();