I come back here with good news
Here I succeeded in making communicate the Node and the Gateway.
At first I did not have a Parent and I understood that this was because I had not given a hard NODE_ID.
To remedy this I downloaded the excel: Windows GUI / Controller for MySensors which automatically assigns the NODE_lD
So if I resume my start test installation:
a Node RFM69HCW + ATmega 328p with the following sketch:
/*
This is an example that demonstrates how to report the battery level for a sensor
Instructions for measuring battery capacity on A0 are available here:
http://www.mysensors.org/build/battery
*/
// Enable debug prints to serial monitor
#define MY_DEBUG
//#define MY_DEBUG_VERBOSE_SIGNING
// RFM config
#define MY_RADIO_RFM69
#define MY_RFM69_NEW_DRIVER
#define MY_RFM69_FREQUENCY RFM69_868MHZ
#define MY_SIGNAL_REPORT_ENABLED
#define MY_RFM69_ATC_TARGET_RSSI_DBM (-85)
//#define MY_RFM69_ENABLE_ENCRYPTION
//#define MY_DEBUG_VERBOSE_RFM69
//#define MY_RFM69_NETWORKID 101
#define MY_RFM69_IRQ_PIN 2
#define MY_RFM69_CS_PIN 10
#define MY_IS_RFM69HW
//========== LED ==========
//#define MY_DEFAULT_TX_LED_PIN 9 // the PCB, on board LED
#define MY_DEFAULT_RX_LED_PIN 9 // Receive led pin
// Set blinking period
#define MY_DEFAULT_LED_BLINK_PERIOD 300
// Inverses the behavior of leds
#define MY_WITH_LEDS_BLINKING_INVERSE
//========== ANALOG INPUT ==========
//#define BATTERY_SENSE_PIN = 0; // select the input pin for the battery sense point
//int oldBatteryPcnt = 0;
//========== DIGITAL INPUT ==========
//#define DIGITAL_INPUT_SENSOR 3 // The digital input you attached your motion sensor. (Only 2 and 3 generates interrupt!)
//#define CHILD_ID 1 // Id of the sensor child
//========== NODE ID ==========
//#define MY_NODE_ID 1
//#define MY_NODE_TYPE "NODE"
#include <MySensors.h>
// ID of the sensor child
#define CHILD_ID_UPLINK_QUALITY (0)
#define CHILD_ID_TX_LEVEL (1)
#define CHILD_ID_TX_PERCENT (2)
#define CHILD_ID_TX_RSSI (3)
#define CHILD_ID_RX_RSSI (4)
#define CHILD_ID_TX_SNR (5)
#define CHILD_ID_RX_SNR (6)
// Initialize general message
//MyMessage msgUplinkQuality(CHILD_ID_UPLINK_QUALITY, V_CUSTOM);
//MyMessage msgTxLevel(CHILD_ID_TX_LEVEL, V_CUSTOM);
//MyMessage msgTxPercent(CHILD_ID_TX_PERCENT, V_CUSTOM);
MyMessage msgTxRSSI(CHILD_ID_TX_RSSI, V_CUSTOM);
//MyMessage msgRxRSSI(CHILD_ID_RX_RSSI, V_CUSTOM);
//MyMessage msgTxSNR(CHILD_ID_TX_SNR, V_CUSTOM);
//MyMessage msgRxSNR(CHILD_ID_RX_SNR, V_CUSTOM);
//===================================
//= SETUP =
//===================================
void setup()
{
}//FIN du SETUP
//==========================================
//= PRESENTATION =
//==========================================
void presentation()
{
// Send the sketch version information to the gateway and controller
sendSketchInfo("ATC_report", "1.0");
// Register all sensors to gw (they will be created as child devices)
//present(CHILD_ID_UPLINK_QUALITY, S_CUSTOM, "UPLINK QUALITY RSSI");
// present(CHILD_ID_TX_LEVEL, S_CUSTOM, "TX LEVEL DBM");
//present(CHILD_ID_TX_PERCENT, S_CUSTOM, "TX LEVEL PERCENT");
present(CHILD_ID_TX_RSSI, S_CUSTOM, "TX RSSI");
// present(CHILD_ID_RX_RSSI, S_CUSTOM, "RX RSSI");
// present(CHILD_ID_TX_SNR, S_CUSTOM, "TX SNR");
// present(CHILD_ID_RX_SNR, S_CUSTOM, "RX SNR");
}
//===================================
//= LOOP =
//===================================
void loop()
{
// send messages to GW
//send(msgUplinkQuality.set(transportGetSignalReport(SR_UPLINK_QUALITY)));
//send(msgTxLevel.set(transportGetSignalReport(SR_TX_POWER_LEVEL)));
//send(msgTxPercent.set(transportGetSignalReport(SR_TX_POWER_PERCENT)));
send(msgTxRSSI.set(transportGetSignalReport(SR_TX_RSSI)));
// retrieve RSSI / SNR reports from incoming ACK
// send(msgRxRSSI.set(transportGetSignalReport(SR_RX_RSSI)));
// send(msgTxSNR.set(transportGetSignalReport(SR_TX_SNR)));
// send(msgRxSNR.set(transportGetSignalReport(SR_RX_SNR)));
// wait a bit
wait(10000);
}// FIN de LOOP
///*
void receive(const MyMessage &message) {
Serial.print("Message recu pour le capteur :");
Serial.print(message.sensor);
Serial.print(", Nouveau statut : ");
Serial.println(message.getBool());
}
//*/
a Gateway RFM69HCW + ATmega 328p with the following sketch, connected to the PC win10 on a USB socket (thanks to an FTDI) :
/*
DESCRIPTION
The ArduinoGateway prints data received from sensors on the serial link.
The gateway accepts input on serial which will be sent out on radio network.
The GW code is designed for Arduino Nano 328p / 16MHz
*/
// Enable debug prints to serial monitor
#define MY_DEBUG
//#define MY_DEBUG_VERBOSE_SIGNING
// RFM config
#define MY_RADIO_RFM69
#define MY_RFM69_NEW_DRIVER
#define MY_RFM69_FREQUENCY RFM69_868MHZ
#define MY_SIGNAL_REPORT_ENABLED
//#define MY_RFM69_ATC_TARGET_RSSI_DBM (-85)
//#define MY_RFM69_ENABLE_ENCRYPTION
//#define MY_DEBUG_VERBOSE_RFM69
//#define MY_RFM69_NETWORKID 101
#define MY_RFM69_IRQ_PIN 2
#define MY_RFM69_CS_PIN 10
#define MY_IS_RFM69HW
// Enable serial gateway
#define MY_GATEWAY_SERIAL
/*
// Define a lower baud rate for Arduinos running on 8 MHz (Arduino Pro Mini 3.3V & SenseBender)
#if F_CPU == 8000000L
#define MY_BAUD_RATE 38400
#endif
// Enable inclusion mode
#define MY_INCLUSION_MODE_FEATURE
// Enable Inclusion mode button on gateway
//#define MY_INCLUSION_BUTTON_FEATURE
// Inverses behavior of inclusion button (if using external pullup)
//#define MY_INCLUSION_BUTTON_EXTERNAL_PULLUP
// Set inclusion mode duration (in seconds)
#define MY_INCLUSION_MODE_DURATION 60
// Digital pin used for inclusion mode button
//#define MY_INCLUSION_MODE_BUTTON_PIN 3
*/
//========== LED ==========
//#define MY_DEFAULT_TX_LED_PIN 9 // the PCB, on board LED
#define MY_DEFAULT_RX_LED_PIN 9 // Receive led pin
// Set blinking period
#define MY_DEFAULT_LED_BLINK_PERIOD 300
// Inverses the behavior of leds
#define MY_WITH_LEDS_BLINKING_INVERSE
#include <MySensors.h>
//===================================
//= SETUP =
//===================================
void setup()
{
// Setup locally attached sensors
}
//==========================================
//= PRESENTATION =
//==========================================
void presentation()
{
// Present locally attached sensors
}
//===================================
//= LOOP =
//===================================
void loop()
{
// Send locally attached sensor data here
}
On the PC the execution of the Controller program: Windows GUI / Controller for MySensors.
Which give :
We can see in sky blue, the sending of the state of a virtual "Motion" sensor from the Gateway to the Node (adjustable at the bottom of the interface).
The other V_CUSTOMs are the RSSI of the RFM69 transmition stage.
Oddity: after receiving the state of the Motion sensor, sent by the Gateway, the Node transmits a value of 127 ??
Everything works, out of the box, you just had to know how to start with the configuration of the RFM69HCW, thank you @scalz
The second step is to replace the Win10 Controller with a Node-Red Controller.
I already have a Node-Red server with its Dashboard running on an RPI 3B.
I found "node-red-contrib-mysensors" but it still seems blurry to me (sorry I learn fast but you have to explain myself a long time)
I think I'll open another Topic or continue on the original node-red-contrib-mysensors, Topic.