 
					
						
					
				
				
					Hi electrik,
Yes, my nodes send the sketch name within the presentation function.
As for the gateway, I have not set up a sketch name, the example I found did not implement this, so I didn't think it
was necessary?
I manually named the gateway node in the configuration.yaml file, and the "missing sketch name" message no longer appears in the log. I guess, I'll add an entry for node 0 (controller) as well .
I'm still getting the "USB0 not ready after 15.0 secs" at startup, but all seems to  work regardless.
I connected the gateway to my pc using mycontroller, it all works fine. Logs look normal.
Here is the code for one of my nodes, a temperature node with Arduino mini & RFM69 radio, running on battery.
// Enable debug prints to serial monitor
#define MY_DEBUG 
#define MY_BAUD_RATE 38400
// Enable and select radio type attached
//#define MY_RADIO_RF24
#define MY_RADIO_RFM69
#define MY_IS_RFM69HW
#define MY_RFM69_FREQUENCY  RFM69_915MHZ
#include <MySensors.h>  
#include <DallasTemperature.h>
#include <OneWire.h>
#define COMPARE_TEMP 0 // Send temperature only if changed? 1 = Yes 0 = No
#define ONE_WIRE_BUS 8 // Pin where dallas sensor is connected 
#define CHILD_ID_TEMP 0
#define CHILD_ID_BATT 1
// function protos
void ReadBat(double& b, uint8_t& bPct);
unsigned long SLEEP_TIME = 300000;    // Sleep time between reads (5min) (in milliseconds)
const int BAT_V = A0;                 // battery voltage, AnaIn 0
OneWire oneWire(ONE_WIRE_BUS);        // Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
DallasTemperature sensors(&oneWire);  // Pass the oneWire reference to Dallas Temperature. 
float lastTemperature;
double bat, lastBat=0.0;
uint8_t batPct;
int numSensors=0;
bool receivedConfig = false;
bool metric = true;
bool initialValuesSent = false;
bool initialValTempSent = false;
bool initialValBatSent = false;
// Initialize message objects
MyMessage msg(CHILD_ID_TEMP, V_TEMP);
MyMessage msgBatt(CHILD_ID_BATT, V_VOLTAGE);
void before()
{
  // Startup up the OneWire library
  sensors.begin();
}
void setup()  
{ 
  sensors.setWaitForConversion(false);
  // requestTemperatures() will not block current thread
  Serial.print("Found ");
  Serial.print(sensors.getDeviceCount(), DEC);
  Serial.println(" temperature devices.");
  sensors.requestTemperatures();
}
void presentation() {
  Serial.println("Sending presentation");
  // Send the sketch version information to the gateway and Controller
  sendSketchInfo("Temperature Sensor", "1.2");
  // Present all sensors to controller
  present(CHILD_ID_TEMP, S_TEMP, "Bed room Temperature");
  present(CHILD_ID_BATT, S_MULTIMETER, "Bed room node Voltage");
}
void loop()     
{     
  int16_t conversionTime = 0;
  float temperature = 0;
  
  if (!initialValuesSent) {
    Serial.println("Sending initial value");
    // Read in the battery voltage
    ReadBat(bat, batPct);
    // get temperature conversion time
    conversionTime = sensors.millisToWaitForConversion(sensors.getResolution());
    wait(conversionTime);
    // Fetch temperature
    temperature = sensors.getTempCByIndex(0);
    // send the temperature reading
    // set(float value, uint8_t decimals)
    send(msg.set(temperature, 2));
    Serial.println("Requesting initial Temp value from controller");
    request(CHILD_ID_TEMP, V_TEMP);
    wait(2000, C_SET, V_TEMP);
    // send bat voltage
    send(msgBatt.set(bat, 2));
    Serial.println("Requesting initial Batt value from controller");
    request(CHILD_ID_BATT, V_VOLTAGE);
    wait(2000, C_SET, V_VOLTAGE);
  }
//  {
  else {
    // Fetch temperatures from Dallas sensors (non-blocking)
    sensors.requestTemperatures();
    // Read in the battery voltage
    ReadBat(bat, batPct);
  
    // query conversion time and sleep until conversion completed
    conversionTime = sensors.millisToWaitForConversion(sensors.getResolution());
    
    // sleep() call can be replaced by wait() call if node need to process incoming messages (or if node is repeater)
    sleep(conversionTime);
  
    // Read temperature and send to controller 
    // Fetch temperature
    temperature = sensors.getTempCByIndex(0);
    Serial.println("temperature: ");
    Serial.println(temperature);
  
    // Only send data if temperature has changed and no error
    #if COMPARE_TEMP == 1
    if (lastTemperature != temperature && temperature != -127.00 && temperature != 85.00) {
    #else
    if (temperature != -127.00 && temperature != 85.00) {
    #endif
      // Send in the new temperature
      // set(float value, uint8_t decimals)
      send(msg.set(temperature, 2));
      // Save new temperatures for next compare
      lastTemperature=temperature;
    }
    // Send in the new battery level
    sendBatteryLevel(batPct);
    send(msgBatt.set(bat, 2));
    // Save the battery level for next compare
    lastBat = bat;
    Serial.println("Sleep...");
    sleep(SLEEP_TIME);
  }
}
void receive(const MyMessage &message) {
  if (message.isAck()) {
     Serial.println("This is an ack from gateway");
  }
  if (message.type == V_TEMP) {
    if (!initialValTempSent) {
      Serial.println("Received initial temp value from controller");
      initialValTempSent = true;
    }
  }
  else if (message.type == V_VOLTAGE) {
    if (!initialValBatSent) {
      Serial.println("Received initial bat value from controller");
      initialValBatSent = true;
    }
  }
  if (initialValTempSent && initialValBatSent)
    initialValuesSent = true;
}
// b - battery voltage
// bPct - battery percent
void ReadBat(double& b, uint8_t& bPct)
{
  long sumBat=0;
  int i;
  // take average over 64 readings
  for (i = 0; i < 64; ++i) {
    // read & sum battery voltage
    sumBat += analogRead(BAT_V);
  }
  sumBat = sumBat >> 6;      // shift 6 -> divide by 64
  b = sumBat*3.3/1023.0;
  bPct = (uint8_t)(sumBat*100.0/1023.0);
}
Here is the serial gateway sketch:
#include <SoftwareSerial.h>
SoftwareSerial softSerial(8, 9); // RX, TX
// Enable debug prints to serial monitor
#define MY_DEBUG
#define MY_DEBUGDEVICE softSerial
// You also need to create softSerial in setup()
// Enable and select radio type attached
//#define MY_RADIO_RF24
//#define MY_RADIO_NRF5_ESB
//#define MY_RADIO_RFM95
#define MY_RADIO_RFM69
#define MY_IS_RFM69HW
#define MY_RFM69_FREQUENCY  RFM69_915MHZ
// Set LOW transmit power level as default, if you have an amplified NRF-module and
// power your radio separately with a good regulator you can turn up PA level.
//#define MY_RF24_PA_LEVEL RF24_PA_LOW
// 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
// Set blinking period
#define MY_DEFAULT_LED_BLINK_PERIOD 300
// Inverses the behavior of leds
//#define MY_WITH_LEDS_BLINKING_INVERSE
// Flash leds on rx/tx/err
// Uncomment to override default HW configurations
//#define MY_DEFAULT_ERR_LED_PIN 4  // Error led pin
//#define MY_DEFAULT_RX_LED_PIN  6  // Receive led pin
//#define MY_DEFAULT_TX_LED_PIN  5  // the PCB, on board LED
#include <MySensors.h>
void setup()
{
  softSerial.begin(38400);
}
void presentation()
{
	// Present locally attached sensors
}
void loop()
{
	// Send locally attached sensor data here
}