HA, MySensor, Arduino Nano problem z komunikacja

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:
image