To refine your code: Try to use arduino IDEs "Tab"-Function. Add few tabs to organise your code. e.g. Tab "Network" with functions like init_rf() and just call this function from your setup() or before() method. Same with your actual sensors. Consider making an extra tab to put all the relevant functions there. I try to keep my "Main" tab as clean as possible. As I understand your code right your rf95 receiver acts as a gateway to mysensors MyMessage msg(NODE_ID, V_FLOW); // Set's up mesaaging protocol to reciever, lets it know what variables are used MyMessage vmsg(NODE_ID,V_VOLUME); // V_FLOW means that the data being sent is a flowrate, etc. All your Sensor-Nodes who send to your receiver-serial-gateway should have different IDs and your gateway should use these IDs to send the sensor date to your controller. So NODE_ID should be a variable depending on "from which node" you got your sensor date. Have a look at "MyMessage.h" // Setters for building message "on the fly" MyMessage& setType(uint8_t type); MyMessage& setSensor(uint8_t sensor); MyMessage& setDestination(uint8_t destination); You can change the message Sensor (your actual sensor no the gateway) dynamically on your gateway depending on the payload you get and from which sensor.