Cześć, chciałem rozbudować swój setup Raspberry 4 + Mege o Nano.
Dotychczasowy setup działał, z poziomu HA mogłem zmieniać stany przekaźników w Mega i vice versa. Nie było żadnego problemu.
Postanowiłem dodać arduino nano na shildzie z 6 AC dimmerami i jednym przekaźnikiem SSR.
- Mega i nano komunikują się za pomocą MySensors po usb, dostarczyłem osobne zasilanie po pinie a w przewodzie USB został przerwany przewód z +.
- Jeśli chodzi o sketch to przy podpięciu do komputera światło się ściemnia gdy dostaje sygnale z przełącznika, do tego w Serial Monitor lecą message.
- Node jest ustawiony na 2 (#define MY_NODE_ID 2)
- Przy podpięciu do HA również ściemnianie działa ale message nie wpadają do MySensors
- Do tej pory miałem zrobione manualne presentation czyli na jednym z pinów wysyłał wszystkie message (Ha tego nie łapie) po dodaniu presentation nie reaguje na przełączniki a w Serial Monitor wszystko jest ładnie prezentowane
- W logach mam że dla noda 0 childy już istnieją (tylko że w nano zdefinowałem node 2 a mega node 1)
- W settings ->hardware NANO jest widoczne jako
/dev/ttyUSB0
a MEGA ttyACM*
Logi
2024-09-27 20:51:00.970 WARNING (MainThread) [mysensors.sensor] child_id 1 already exists in children of node 0, cannot add child
2024-09-27 20:51:00.972 WARNING (MainThread) [mysensors.sensor] child_id 2 already exists in children of node 0, cannot add child
2024-09-27 20:51:00.973 WARNING (MainThread) [mysensors.sensor] child_id 3 already exists in children of node 0, cannot add child
2024-09-27 20:51:00.974 WARNING (MainThread) [mysensors.sensor] child_id 4 already exists in children of node 0, cannot add child
2024-09-27 20:51:00.978 WARNING (MainThread) [mysensors.sensor] child_id 5 already exists in children of node 0, cannot add child
2024-09-27 20:51:00.979 WARNING (MainThread) [mysensors.sensor] child_id 6 already exists in children of node 0, cannot add child
2024-09-27 20:51:00.980 WARNING (MainThread) [mysensors.sensor] child_id 7 already exists in children of node 0, cannot add child
2024-09-27 20:51:00.982 WARNING (MainThread) [mysensors.sensor] child_id 8 already exists in children of node 0, cannot add child
2024-09-27 20:51:00.983 WARNING (MainThread) [mysensors.sensor] child_id 9 already exists in children of node 0, cannot add child
2024-09-27 20:51:00.985 WARNING (MainThread) [mysensors.sensor] child_id 10 already exists in children of node 0, cannot add child
2024-09-27 20:51:00.987 WARNING (MainThread) [mysensors.sensor] child_id 11 already exists in children of node 0, cannot add child
2024-09-27 20:51:00.988 WARNING (MainThread) [mysensors.sensor] child_id 12 already exists in children of node 0, cannot add child
2024-09-27 20:51:00.990 WARNING (MainThread) [mysensors.sensor] child_id 123 already exists in children of node 0, cannot add child
2024-09-27 20:51:00.992 WARNING (MainThread) [mysensors.sensor] child_id 46 already exists in children of node 0, cannot add child
2024-09-27 20:51:00.993 WARNING (MainThread) [mysensors.sensor] child_id 5 already exists in children of node 0, cannot add child
2024-09-27 20:51:01.996 WARNING (MainThread) [mysensors.sensor] child_id 1 already exists in children of node 0, cannot add child
2024-09-27 20:51:02.000 WARNING (MainThread) [mysensors.sensor] child_id 2 already exists in children of node 0, cannot add child
2024-09-27 20:51:02.005 WARNING (MainThread) [mysensors.sensor] child_id 3 already exists in children of node 0, cannot add child
2024-09-27 20:51:02.009 WARNING (MainThread) [mysensors.sensor] child_id 4 already exists in children of node 0, cannot add child
2024-09-27 20:51:02.011 WARNING (MainThread) [mysensors.sensor] child_id 5 already exists in children of node 0, cannot add child
2024-09-27 20:51:02.013 WARNING (MainThread) [mysensors.sensor] child_id 6 already exists in children of node 0, cannot add child
2024-09-27 20:51:02.015 WARNING (MainThread) [mysensors.sensor] child_id 7 already exists in children of node 0, cannot add child
2024-09-27 20:51:02.016 WARNING (MainThread) [mysensors.sensor] child_id 8 already exists in children of node 0, cannot add child
2024-09-27 20:51:02.018 WARNING (MainThread) [mysensors.sensor] child_id 9 already exists in children of node 0, cannot add child
2024-09-27 20:51:02.019 WARNING (MainThread) [mysensors.sensor] child_id 10 already exists in children of node 0, cannot add child
2024-09-27 20:51:02.021 WARNING (MainThread) [mysensors.sensor] child_id 11 already exists in children of node 0, cannot add child
2024-09-27 20:51:02.022 WARNING (MainThread) [mysensors.sensor] child_id 12 already exists in children of node 0, cannot add child
Sketch dla MEGA (który działa)
#define MY_GATEWAY_SERIAL
#define MY_DEBUG
#define MY_REPEATER_FEATURE
#define MY_NODE_ID 1
//Obcięte z powodu limitu postu
Sketch dla NANO
#define MY_GATEWAY_SERIAL
#define MY_DEBUG
#define MY_REPEATER_FEATURE
#define MY_NODE_ID 2
#include <SPI.h>
#include <MySensors.h>
#include <Bounce2.h>
#include <dimmable_light.h> // NIE AKTUALIZOWAC
#include <Wire.h>
#define SYNC_PIN 2
#define BUTTON_PIN_1 A0 // Portal L
#define BUTTON_PIN_2 A1 // Wyspa L
#define BUTTON_PIN_3 A2 // Wyspa P
#define BUTTON_PIN_8 A7 // Presentation
#define AC_PIN_1 4 // PIN dla Zero Cross
#define AC_PIN_2 3
#define AC_PIN_3 A3
#define AC_PIN_4 5
#define AC_PIN_5 6
#define AC_PIN_6 7
#define RELAY_1 13
#define RELAY_2 12
#define RELAY_3 11
#define RELAY_4 10
#define RELAY_5 9
#define RELAY_6 8 //ZERO CROSS RELAY
#define FADE_DELAY 40
#define RELAY_ON 0
#define RELAY_OFF 1
Bounce debouncer1 = Bounce(); //Portal
Bounce debouncer2 = Bounce(); //Wyspa L
Bounce debouncer3 = Bounce(); //Wyspa P
Bounce debouncer100 = Bounce(); // Presentation
//Kuchnia
DimmableLight light_1(AC_PIN_1);
DimmableLight light_2(AC_PIN_2);
DimmableLight light_3(AC_PIN_3);
//Wyspa
DimmableLight light_4(AC_PIN_4);
DimmableLight light_5(AC_PIN_5);
DimmableLight light_6(AC_PIN_6);
MyMessage lightMsg1(1, V_LIGHT);
MyMessage lightMsg2(2, V_LIGHT);
MyMessage lightMsg3(3, V_LIGHT);
MyMessage lightMsg4(4, V_LIGHT);
MyMessage lightMsg5(5, V_LIGHT);
MyMessage lightMsg6(6, V_LIGHT);
// MyMessage relayMsg1(1001, V_LIGHT);
// MyMessage relayMsg2(1002, V_LIGHT);
// MyMessage relayMsg3(1003, V_LIGHT);
// MyMessage relayMsg4(1004, V_LIGHT);
// MyMessage relayMsg5(1005, V_LIGHT);
// MyMessage relayMsg6(1006, V_LIGHT);
MyMessage buttonMsg1(123, V_LIGHT);
MyMessage buttonMsg2(46, V_LIGHT);
MyMessage buttonMsg3(5, V_LIGHT);
MyMessage dimmerMsg1(1, V_DIMMER);
MyMessage dimmerMsg2(2, V_DIMMER);
MyMessage dimmerMsg3(3, V_DIMMER);
MyMessage dimmerMsg4(4, V_DIMMER);
MyMessage dimmerMsg5(5, V_DIMMER);
MyMessage dimmerMsg6(6, V_DIMMER);
int relay[6] = {RELAY_OFF, RELAY_OFF, RELAY_OFF, RELAY_OFF, RELAY_OFF, RELAY_OFF};
int currentLevel[6] = {RELAY_OFF, RELAY_OFF, RELAY_OFF, RELAY_OFF, RELAY_OFF, RELAY_OFF};
int lastLevel[6] = {33, 66, 100, 33, 66, 100};
int toLevel[6] = {RELAY_OFF, RELAY_OFF, RELAY_OFF, RELAY_OFF, RELAY_OFF, RELAY_OFF};
bool button[4]={RELAY_OFF, RELAY_OFF, RELAY_OFF, RELAY_OFF};
int delta[6] ={0, 0, 0, 0, 0, 0};
byte dim[6] = {0, 0, 0, 0, 0, 0};
byte lastDim[6] = {0, 0, 0, 0, 0, 0};
void fadeToLevel(int sensor, int targetLevel);
void setup() {
delay(1000);
pinMode(BUTTON_PIN_1, INPUT_PULLUP);
debouncer1.attach(BUTTON_PIN_1);
debouncer1.interval(50);
pinMode(BUTTON_PIN_2, INPUT_PULLUP);
debouncer2.attach(BUTTON_PIN_2);
debouncer2.interval(50);
pinMode(BUTTON_PIN_3, INPUT_PULLUP);
debouncer3.attach(BUTTON_PIN_3);
debouncer3.interval(50);
pinMode(BUTTON_PIN_8, INPUT_PULLUP);
debouncer100.attach(BUTTON_PIN_8);
debouncer100.interval(50);
pinMode(RELAY_1, OUTPUT);
pinMode(RELAY_2, OUTPUT);
pinMode(RELAY_3, OUTPUT);
pinMode(RELAY_4, OUTPUT);
pinMode(RELAY_5, OUTPUT);
pinMode(RELAY_6, OUTPUT);
DimmableLight::setSyncPin(SYNC_PIN);
DimmableLight::begin();
// Serial.print("My Node ID: ");
// Serial.println(MY_NODE_ID);
presentation();
Serial.begin(115200);
}
void loop() {
if (debouncer1.update()) { // Portal L
if (debouncer1.read() == LOW) {
// Serial.println("debouncer1");
if(button[0] == RELAY_OFF){
fadeToLevel(123, -1);
}else{
fadeToLevel(123, 0);
}
button[0] = !button[0];
}
}
if (debouncer2.update()) { //Wyspa L
if (debouncer2.read() == LOW) {
// Serial.println("debouncer2");
if(button[1] == RELAY_OFF){
fadeToLevel(46, -1);
}else{
fadeToLevel(46, 0);
}
button[1] = !button[1];
}
}
if (debouncer3.update()) { //Wyspa P
if (debouncer3.read() == LOW) {
// Serial.println("debouncer3");
if(button[2] == RELAY_OFF){
fadeToLevel(5, -1);
}else{
fadeToLevel(5, 0);
}
button[2] = !button[2];
}
}
if (debouncer100.update()) { //Wyspa P
if (debouncer100.read() == LOW) {
// Serial.println("debouncer4");
if(button[3] == RELAY_OFF){
presentManual();
}
button[3] = !button[3];
}
}
}
void changZcRelay(int targetLevel) {
if(
targetLevel != 0 ||
currentLevel[0] > 0 ||
currentLevel[1] > 0 ||
currentLevel[2] > 0 ||
currentLevel[3] > 0 ||
currentLevel[4] > 0 ||
currentLevel[5] > 0
){
digitalWrite(RELAY_6, RELAY_ON);
}else{
digitalWrite(RELAY_6, RELAY_OFF);
}
}
void fadeToLevel(int sensor, int targetLevel){
changZcRelay(targetLevel);
//////////////////////////////////////////////////////////// 123
if (sensor == 123) {
// Serial.print("targetLevel: ");
// Serial.println(targetLevel);
if(targetLevel == -1){
toLevel[0] = lastLevel[0];
toLevel[1] = lastLevel[1];
toLevel[2] = lastLevel[2];
}else{
toLevel[0] = targetLevel;
toLevel[1] = targetLevel;
toLevel[2] = targetLevel;
}
// Serial.print("toLevel[0][1][2]: ");
// Serial.print(toLevel[0]);
// Serial.print(' ');
// Serial.print(toLevel[1]);
// Serial.print(' ');
// Serial.println(toLevel[2]);
relay[0] = toLevel[0] > 0 ? RELAY_ON : RELAY_OFF;
relay[1] = toLevel[1] > 0 ? RELAY_ON : RELAY_OFF;
relay[2] = toLevel[2] > 0 ? RELAY_ON : RELAY_OFF;
// Serial.print("relay[0][1][2]: ");
// Serial.print(relay[0]);
// Serial.print(' ');
// Serial.print(relay[1]);
// Serial.print(' ');
// Serial.println(relay[2]);
if (relay[0] == RELAY_ON) {
// Serial.println("relay[0]: on");
digitalWrite(RELAY_1, relay[0]);
}
if (relay[1] == RELAY_ON) {
// Serial.println("relay[1]: on");
digitalWrite(RELAY_2, relay[1]);
}
if (relay[2] == RELAY_ON) {
// Serial.println("relay[2]: on");
digitalWrite(RELAY_3, relay[2]);
}
lastLevel[0] = currentLevel[0];
lastLevel[1] = currentLevel[1];
lastLevel[2] = currentLevel[2];
delta[0] = (toLevel[0] - currentLevel[0]) < 0 ? -1: 1;
delta[1] = (toLevel[1] - currentLevel[1]) < 0 ? -1: 1;
delta[2] = (toLevel[2] - currentLevel[2]) < 0 ? -1: 1;
}
//////////////////////////////////////////////////////////// 46
if (sensor == 46) {
if(targetLevel == -1){
toLevel[3] = lastLevel[3];
toLevel[5] = lastLevel[5];
}else{
toLevel[3] = targetLevel;
toLevel[5] = targetLevel;
}
// Serial.print("toLevel[3][5]: ");
// Serial.print(toLevel[3]);
// Serial.print(' ');
// Serial.println(toLevel[5]);
relay[3] = toLevel[3] > 0 ? RELAY_ON : RELAY_OFF;
relay[5] = toLevel[5] > 0 ? RELAY_ON : RELAY_OFF;
// Serial.print("relay[3][5]: ");
// Serial.print(relay[3]);
// Serial.print(' ');
// Serial.println(relay[5]);
if (relay[3] == RELAY_ON) {
digitalWrite(RELAY_4, relay[3]);
}
if (relay[5] == RELAY_ON) {
digitalWrite(RELAY_6, relay[5]);
}
lastLevel[3] = currentLevel[3];
lastLevel[5] = currentLevel[5];
delta[3] = (toLevel[3] - currentLevel[3]) < 0 ? -1: 1;
delta[5] = (toLevel[5] - currentLevel[5]) < 0 ? -1: 1;
}
//////////////////////////////////////////////////////////// 1
if (sensor == 1) {
if(targetLevel == -1){
toLevel[0] = lastLevel[0];
}else{
toLevel[0] = targetLevel;
}
// Serial.print("toLevel[4]: ");
// Serial.println(toLevel[4]);
relay[0] = toLevel[0] > 0 ? RELAY_ON : RELAY_OFF;
// Serial.print("relay[4]: ");
// Serial.println(relay[4]);
if (relay[0] == RELAY_ON) {
digitalWrite(RELAY_1, relay[0]);
}
lastLevel[0] = currentLevel[0];
delta[0] = (toLevel[0] - currentLevel[0]) < 0 ? -1: 1;
}
//////////////////////////////////////////////////////////// 2
if (sensor == 2) {
if(targetLevel == -1){
toLevel[1] = lastLevel[1];
}else{
toLevel[1] = targetLevel;
}
// Serial.print("toLevel[1]: ");
// Serial.println(toLevel[1]);
relay[1] = toLevel[1] > 0 ? RELAY_ON : RELAY_OFF;
// Serial.print("relay[1]: ");
// Serial.println(relay[1]);
if (relay[1] == RELAY_ON) {
digitalWrite(RELAY_2, relay[1]);
}
lastLevel[1] = currentLevel[1];
delta[1] = (toLevel[1] - currentLevel[1]) < 0 ? -1: 1;
}
//////////////////////////////////////////////////////////// 3
if (sensor == 3) {
if(targetLevel == -1){
toLevel[2] = lastLevel[2];
}else{
toLevel[2] = targetLevel;
}
// Serial.print("toLevel[2]: ");
// Serial.println(toLevel[2]);
relay[2] = toLevel[2] > 0 ? RELAY_ON : RELAY_OFF;
// Serial.print("relay[2]: ");
// Serial.println(relay[2]);
if (relay[2] == RELAY_ON) {
digitalWrite(RELAY_3, relay[2]);
}
lastLevel[2] = currentLevel[2];
delta[2] = (toLevel[2] - currentLevel[2]) < 0 ? -1: 1;
}
//////////////////////////////////////////////////////////// 4
if (sensor == 4) {
if(targetLevel == -1){
toLevel[3] = lastLevel[3];
}else{
toLevel[3] = targetLevel;
}
// Serial.print("toLevel[3]: ");
// Serial.println(toLevel[3]);
relay[3] = toLevel[3] > 0 ? RELAY_ON : RELAY_OFF;
// Serial.print("relay[3]: ");
// Serial.println(relay[3]);
if (relay[3] == RELAY_ON) {
digitalWrite(RELAY_4, relay[3]);
}
lastLevel[3] = currentLevel[3];
delta[3] = (toLevel[3] - currentLevel[3]) < 0 ? -1: 1;
}
//////////////////////////////////////////////////////////// 5
if (sensor == 5) {
if(targetLevel == -1){
toLevel[4] = lastLevel[4];
}else{
toLevel[4] = targetLevel;
}
// Serial.print("toLevel[4]: ");
// Serial.println(toLevel[4]);
relay[4] = toLevel[4] > 0 ? RELAY_ON : RELAY_OFF;
// Serial.print("relay[4]: ");
// Serial.println(relay[4]);
if (relay[4] == RELAY_ON) {
digitalWrite(RELAY_5, relay[4]);
}
lastLevel[4] = currentLevel[4];
delta[4] = (toLevel[4] - currentLevel[4]) < 0 ? -1: 1;
}
//////////////////////////////////////////////////////////// 6
if (sensor == 6) {
if(targetLevel == -1){
toLevel[5] = lastLevel[5];
}else{
toLevel[5] = targetLevel;
}
// Serial.print("toLevel[5]: ");
// Serial.println(toLevel[5]);
relay[5] = toLevel[5] > 0 ? RELAY_ON : RELAY_OFF;
// Serial.print("relay[5]: ");
// Serial.println(relay[5]);
if (relay[5] == RELAY_ON) {
digitalWrite(RELAY_6, relay[5]);
}
lastLevel[5] = currentLevel[5];
delta[5] = (toLevel[5] - currentLevel[5]) < 0 ? -1: 1;
}
// Pętla while do aktualizacji jasności poziomów
while (
currentLevel[0] != toLevel[0] ||
currentLevel[1] != toLevel[1] ||
currentLevel[2] != toLevel[2] ||
currentLevel[3] != toLevel[3] ||
currentLevel[4] != toLevel[4] ||
currentLevel[5] != toLevel[5]) {
// Aktualizacja currentLevel1
if (currentLevel[0] != toLevel[0]) {
currentLevel[0] += delta[0];
dim[0] = (int)(currentLevel[0] / 100. * 255);
light_1.setBrightness(dim[0]);
}
// Aktualizacja currentLevel2
if (currentLevel[1] != toLevel[1]) {
currentLevel[1] += delta[1];
dim[1] = (int)(currentLevel[1] / 100. * 255);
light_2.setBrightness(dim[1]);
}
// Aktualizacja currentLevel3
if (currentLevel[2] != toLevel[2]) {
currentLevel[2] += delta[2];
dim[2] = (int)(currentLevel[2] / 100. * 255);
light_3.setBrightness(dim[2]);
}
// Aktualizacja currentLevel4
if (currentLevel[3] != toLevel[3]) {
currentLevel[3] += delta[3];
dim[3] = (int)(currentLevel[3] / 100. * 255);
light_4.setBrightness(dim[3]);
}
// Aktualizacja currentLevel5
if (currentLevel[4] != toLevel[4]) {
currentLevel[4] += delta[4];
dim[4] = (int)(currentLevel[4] / 100. * 255);
light_5.setBrightness(dim[4]);
}
// Aktualizacja currentLevel6
if (currentLevel[5] != toLevel[5]) {
currentLevel[5] += delta[5];
dim[5] = (int)(currentLevel[5] / 100. * 255);
light_6.setBrightness(dim[5]);
}
delay(FADE_DELAY);
}
if(relay[0] == RELAY_OFF){
digitalWrite(RELAY_1, relay[0]);
}
if(relay[1] == RELAY_OFF){
digitalWrite(RELAY_2, relay[1]);
}
if(relay[2] == RELAY_OFF){
digitalWrite(RELAY_3, relay[2]);
}
if(relay[3] == RELAY_OFF){
digitalWrite(RELAY_4, relay[3]);
}
if(relay[4] == RELAY_OFF){
digitalWrite(RELAY_5, relay[4]);
}
changZcRelay(targetLevel);
// Serial.print("po offrelay[0][1][2]: ");
// Serial.print(relay[0]);
// Serial.print(' ');
// Serial.print(relay[1]);
// Serial.print(' ');
// Serial.println(relay[2]);
// Serial.print("dim[0][1][2]: ");
// Serial.print(dim[0]);
// Serial.print(' ');
// Serial.print(dim[1]);
// Serial.print(' ');
// Serial.println(dim[2]);
send(dimmerMsg1.set(currentLevel[0]));
send(dimmerMsg2.set(currentLevel[1]));
send(dimmerMsg3.set(currentLevel[2]));
send(dimmerMsg4.set(currentLevel[3]));
send(dimmerMsg5.set(currentLevel[4]));
send(dimmerMsg6.set(currentLevel[5]));
}
void receive(const MyMessage &message) {
int sensorId = message.sensor;
if (message.getType() == V_LIGHT) {
bool state = message.getBool();
// if(sensorId < 1000){
if (state) {
fadeToLevel(sensorId, -1); // Use the last saved brightness level
} else {
fadeToLevel(sensorId, 0); // Fade to 0 (off)
}
// }else{
// digitalWrite(message.sensor-988, message.getBool()?RELAY_ON:RELAY_OFF);
// }
}
if(message.getType() == V_DIMMER){
int level = message.getInt();
fadeToLevel(sensorId, level);
}
}
void presentManual(){
send(dimmerMsg1.set(currentLevel[0]));
send(dimmerMsg2.set(currentLevel[1]));
send(dimmerMsg3.set(currentLevel[2]));
send(dimmerMsg4.set(currentLevel[3]));
send(dimmerMsg5.set(currentLevel[4]));
send(dimmerMsg6.set(currentLevel[5]));
send(lightMsg1.set(relay[0]));
send(lightMsg2.set(relay[1]));
send(lightMsg3.set(relay[2]));
send(lightMsg4.set(relay[3]));
send(lightMsg5.set(relay[4]));
send(lightMsg6.set(relay[5]));
send(buttonMsg1.set(button[0]));
send(buttonMsg2.set(button[1]));
send(buttonMsg3.set(button[2]));
}
void presentation(){
sendSketchInfo("Nano", "1.0");
present(1, S_LIGHT,"L Kuchnia I");
present(2, S_LIGHT,"L Kuchnia II");
present(3, S_LIGHT,"L Kuchnia III");
present(4, S_LIGHT,"L Wyspa I");
present(5, S_LIGHT,"L Wyspa II");
present(6, S_LIGHT,"L Wyspa III");
present(7, S_DIMMER,"D Kuchnia I");
present(8, S_DIMMER,"D Kuchnia II");
present(9, S_DIMMER,"D Kuchnia III");
present(10, S_DIMMER,"D Wyspa I");
present(11, S_DIMMER,"D Wyspa II");
present(12, S_DIMMER,"D Wyspa III");
present(123, S_LIGHT,"B Portwl L");
present(46, S_LIGHT,"B Wyspa L");
present(5,S_LIGHT,"B Wyspa P");
}
W sketchach zdaje się poprawnie mam ustawione MY_NODE_ID a pomimo tego leci i jedno i drugie na 0 . O ile MEGA samotnie działa, tak NANO już nie. Zakładam że problemem w tym wszystkim jest ten node id. Jednak child id 123 i 46 nie występuje w jednym i drugiem więc troche jestem zmieszany.
Używam MySensors 2.3.2.
Zmiana wersji bibliotek w NANO nie wchodzi w grę ponieważ jest problem z kompatybilnością
Wiecie może co może być nie tak? dodam jeszcze że w nano używałem w setup()
// Serial.print("My Node ID: ");
// Serial.println(MY_NODE_ID);
I drukowało 2
Po podpięciu nano: