Commit 3
This commit is contained in:
parent
9e702af8c6
commit
2e2687d3f7
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -0,0 +1,22 @@
|
|||
Gauche
|
||||
------
|
||||
blanc
|
||||
orange
|
||||
vert
|
||||
-
|
||||
-
|
||||
gris
|
||||
violet
|
||||
bleu
|
||||
jaune
|
||||
|
||||
Droite
|
||||
------
|
||||
-
|
||||
brun
|
||||
rouge
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
|
Before Width: | Height: | Size: 682 KiB After Width: | Height: | Size: 682 KiB |
141
platformio.ini
141
platformio.ini
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
84
src/main.ino
84
src/main.ino
|
|
@ -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();
|
||||
|
|
|
|||
Loading…
Reference in New Issue