Skip to content
  • MySensors
  • OpenHardware.io
  • Categories
  • Recent
  • Tags
  • Popular
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo
  1. Home
  2. Troubleshooting
  3. Ethernet Gateway: How to turn Off Debug?

Ethernet Gateway: How to turn Off Debug?

Scheduled Pinned Locked Moved Troubleshooting
11 Posts 3 Posters 5.1k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S Offline
    S Offline
    siod
    wrote on last edited by
    #1

    Hi Guys,

    I´m trying to deactivate to debug to save memory, but where in the Mysensor.h code and how do I have to do it?

    /*
     The MySensors library adds a new layer on top of the RF24 library.
     It handles radio network routing, relaying and ids.
    
     Created by Henrik Ekblad <henrik.ekblad@gmail.com>
    	
     This program is free software; you can redistribute it and/or
     modify it under the terms of the GNU General Public License
     version 2 as published by the Free Software Foundation.
    */
    
    #ifndef MySensor_h
    #define MySensor_h
    
    #include "Version.h"   // Auto generated by bot
    #include "MyConfig.h"
    #include "MyMessage.h"
    #include <stddef.h>
    #include <avr/eeprom.h>
    #include <avr/pgmspace.h>
    #include <avr/wdt.h>
    #include <stdarg.h>
    
    #ifdef __cplusplus
    #include <Arduino.h>
    #include <SPI.h>
    #include "utility/LowPower.h"
    #include "utility/RF24.h"
    #include "utility/RF24_config.h"
    #endif
    
    #ifdef DEBUG
    #define debug(x,...) debugPrint(x, ##__VA_ARGS__)
    #else
    #define debug(x,...)
    #endif
    
    #define BAUD_RATE 115200
    
    #define AUTO 0xFF // 0-254. Id 255 is reserved for auto initialization of nodeId.
    #define NODE_SENSOR_ID 0xFF // Node child id is always created for when a node
    
    // EEPROM start address for mysensors library data
    #define EEPROM_START 0
    // EEPROM location of node id
    #define EEPROM_NODE_ID_ADDRESS EEPROM_START
    // EEPROM location of parent id
    #define EEPROM_PARENT_NODE_ID_ADDRESS (EEPROM_START+1)
    // EEPROM location of distance to gateway
    #define EEPROM_DISTANCE_ADDRESS (EEPROM_PARENT_NODE_ID_ADDRESS+1)
    #define EEPROM_ROUTES_ADDRESS (EEPROM_DISTANCE_ADDRESS+1) // Where to start storing routing information in EEPROM. Will allocate 256 bytes.
    #define EEPROM_CONTROLLER_CONFIG_ADDRESS (EEPROM_ROUTES_ADDRESS+256) // Location of controller sent configuration (we allow one payload of config data from controller)
    #define EEPROM_FIRMWARE_TYPE_ADDRESS (EEPROM_CONTROLLER_CONFIG_ADDRESS+24)
    #define EEPROM_FIRMWARE_VERSION_ADDRESS (EEPROM_FIRMWARE_TYPE_ADDRESS+2)
    #define EEPROM_FIRMWARE_BLOCKS_ADDRESS (EEPROM_FIRMWARE_VERSION_ADDRESS+2)
    #define EEPROM_FIRMWARE_CRC_ADDRESS (EEPROM_FIRMWARE_BLOCKS_ADDRESS+2)
    #define EEPROM_LOCAL_CONFIG_ADDRESS (EEPROM_FIRMWARE_CRC_ADDRESS+2) // First free address for sketch static configuration
    
    // This is the nodeId for sensor net gateway receiver sketch (where all sensors should send their data).
    #define GATEWAY_ADDRESS ((uint8_t)0)
    #define BROADCAST_ADDRESS ((uint8_t)0xFF)
    #define TO_ADDR(x) (BASE_RADIO_ID + x)
    
    #define WRITE_PIPE ((uint8_t)0)
    #define CURRENT_NODE_PIPE ((uint8_t)1)
    #define BROADCAST_PIPE ((uint8_t)2)
    
    // Search for a new parent node after this many transmission failures
    #define SEARCH_FAILURES  5
    
    struct NodeConfig
    {
    	uint8_t nodeId; // Current node id
    	uint8_t parentNodeId; // Where this node sends its messages
    	uint8_t distance; // This nodes distance to sensor net gateway (number of hops)
    };
    
    struct ControllerConfig {
    	uint8_t isMetric;
    };
    
    #ifdef __cplusplus
    class MySensor : public RF24
    {
      public:
    	/**
    	* Constructor
    	*
    	* Creates a new instance of Sensor class.
    	*
    	* @param _cepin The pin attached to RF24 Chip Enable on the RF module (default 9)
    	* @param _cspin The pin attached to RF24 Chip Select (default 10)
    	*/
    	MySensor(uint8_t _cepin=DEFAULT_CE_PIN, uint8_t _cspin=DEFAULT_CS_PIN);
    
    	/**
    	* Begin operation of the MySensors library
    	*
    	* Call this in setup(), before calling any other sensor net library methods.
    	* @param incomingMessageCallback Callback function for incoming messages from other nodes or controller and request responses. Default is NULL.
    	* @param nodeId The unique id (1-254) for this sensor. Default is AUTO(255) which means sensor tries to fetch an id from controller.
    	* @param repeaterMode Activate repeater mode. This node will forward messages to other nodes in the radio network. Make sure to call process() regularly. Default in false
    	* @param parentNodeId Use this to force node to always communicate with a certain parent node. Default is AUTO which means node automatically tries to find a parent.
    	* @param paLevel Radio PA Level for this sensor. Default RF24_PA_MAX
    	* @param channel Radio channel. Default is channel 76
    	* @param dataRate Radio transmission speed. Default RF24_1MBPS
    	*/
    
    	void begin(void (* msgCallback)(const MyMessage &)=NULL, uint8_t nodeId=AUTO, boolean repeaterMode=false, uint8_t parentNodeId=AUTO, rf24_pa_dbm_e paLevel=RF24_PA_LEVEL, uint8_t channel=RF24_CHANNEL, rf24_datarate_e dataRate=RF24_DATARATE);
    
    	/**
    	 * Return the nodes nodeId.
    	 */
    	uint8_t getNodeId();
    
    	/**
    	* Each node must present all attached sensors before any values can be handled correctly by the controller.
        * It is usually good to present all attached sensors after power-up in setup().
    	*
    	* @param sensorId Select a unique sensor id for this sensor. Choose a number between 0-254.
    	* @param sensorType The sensor type. See sensor typedef in MyMessage.h.
    	* @param ack Set this to true if you want destination node to send ack back to this node. Default is not to request any ack.
    	* @param description A textual description of the sensor.
    	*/
    	void present(uint8_t sensorId, uint8_t sensorType, const char *description="", bool ack=false);
    
    	/**
    	 * Sends sketch meta information to the gateway. Not mandatory but a nice thing to do.
    	 * @param name String containing a short Sketch name or NULL  if not applicable
    	 * @param version String containing a short Sketch version or NULL if not applicable
    	 * @param ack Set this to true if you want destination node to send ack back to this node. Default is not to request any ack.
    	 *
    	 */
    	void sendSketchInfo(const char *name, const char *version, bool ack=false);
    
    	/**
    	* Sends a message to gateway or one of the other nodes in the radio network
    	*
    	* @param msg Message to send
    	* @param ack Set this to true if you want destination node to send ack back to this node. Default is not to request any ack.
    	* @return true Returns true if message reached the first stop on its way to destination.
    	*/
    	bool send(MyMessage &msg, bool ack=false);
    
    	/**
    	 * Send this nodes battery level to gateway.
    	 * @param level Level between 0-100(%)
    	 * @param ack Set this to true if you want destination node to send ack back to this node. Default is not to request any ack.
    	 *
    	 */
    	void sendBatteryLevel(uint8_t level, bool ack=false);
    
    	/**
    	* Requests a value from gateway or some other sensor in the radio network.
    	* Make sure to add callback-method in begin-method to handle request responses.
    	*
    	* @param childSensorId  The unique child id for the different sensors connected to this Arduino. 0-254.
    	* @param variableType The variableType to fetch
    	* @param destination The nodeId of other node in radio network. Default is gateway
    	*/
    	void request(uint8_t childSensorId, uint8_t variableType, uint8_t destination=GATEWAY_ADDRESS);
    
    	/**
    	 * Requests time from controller. Answer will be delivered to callback.
    	 *
    	 * @param callback for time request. Incoming argument is seconds since 1970.
    	 */
    	void requestTime(void (* timeCallback)(unsigned long));
    
    
    	/**
    	 * Processes incoming messages to this node. If this is a relaying node it will
    	* Returns true if there is a message addressed for this node just was received.
    	* Use callback to handle incoming messages.
    	*/
    	boolean process();
    
    	/**
    	 * Returns the most recent node configuration received from controller
    	 */
    	ControllerConfig getConfig();
    
    	/**
    	 * Save a state (in local EEPROM). Good for actuators to "remember" state between
    	 * power cycles.
    	 *
    	 * You have 256 bytes to play with. Note that there is a limitation on the number
    	 * of writes the EEPROM can handle (~100 000 cycles).
    	 *
    	 * @param pos The position to store value in (0-255)
    	 * @param Value to store in position
    	 */
    	void saveState(uint8_t pos, uint8_t value);
    
    	/**
    	 * Load a state (from local EEPROM).
    	 *
    	 * @param pos The position to fetch value from  (0-255)
    	 * @return Value to store in position
    	 */
    	uint8_t loadState(uint8_t pos);
    
    	/**
    	* Returns the last received message
    	*/
    	MyMessage& getLastMessage(void);
    
    	/**
    	 * Sleep (PowerDownMode) the Arduino and radio. Wake up on timer.
    	 * @param ms Number of milliseconds to sleep.
    	 */
    	void sleep(unsigned long ms);
    
    	/**
    	 * Wait for a specified amount of time to pass.  Keeps process()ing.
    	 * This does not power-down the radio nor the Arduino.
    	 * Because this calls process() in a loop, it is a good way to wait
    	 * in your loop() on a repeater node or sensor that listens to messages.
    	 * @param ms Number of milliseconds to sleep.
    	 */
    	void wait(unsigned long ms);
    
    	/**
    	 * Sleep (PowerDownMode) the Arduino and radio. Wake up on timer or pin change.
    	 * See: http://arduino.cc/en/Reference/attachInterrupt for details on modes and which pin
    	 * is assigned to what interrupt. On Nano/Pro Mini: 0=Pin2, 1=Pin3
    	 * @param interrupt Interrupt that should trigger the wakeup
    	 * @param mode RISING, FALLING, CHANGE
    	 * @param ms Number of milliseconds to sleep or 0 to sleep forever
    	 * @return true if wake up was triggered by pin change and false means timer woke it up.
    	 */
    	bool sleep(uint8_t interrupt, uint8_t mode, unsigned long ms=0);
    
    	/**
    	 * Sleep (PowerDownMode) the Arduino and radio. Wake up on timer or pin change for two separate interrupts.
    	 * See: http://arduino.cc/en/Reference/attachInterrupt for details on modes and which pin
    	 * is assigned to what interrupt. On Nano/Pro Mini: 0=Pin2, 1=Pin3
    	 * @param interrupt1 First interrupt that should trigger the wakeup
    	 * @param mode1 Mode for first interrupt (RISING, FALLING, CHANGE)
    	 * @param interrupt2 Second interrupt that should trigger the wakeup
    	 * @param mode2 Mode for second interrupt (RISING, FALLING, CHANGE)
    	 * @param ms Number of milliseconds to sleep or 0 to sleep forever
    	 * @return Interrupt number wake up was triggered by pin change and negative if timer woke it up.
    	 */
    	int8_t sleep(uint8_t interrupt1, uint8_t mode1, uint8_t interrupt2, uint8_t mode2, unsigned long ms=0);
    
    
    
    
    #ifdef DEBUG
    	void debugPrint(const char *fmt, ... );
    	int freeRam();
    #endif
    
      protected:
    	NodeConfig nc; // Essential settings for node to work
    	ControllerConfig cc; // Configuration coming from controller
    	bool repeaterMode;
    	bool autoFindParent;
    	bool isGateway;
    	MyMessage msg;  // Buffer for incoming messages.
    	MyMessage ack;  // Buffer for ack messages.
    
    	void setupRepeaterMode();
    	void setupRadio(rf24_pa_dbm_e paLevel, uint8_t channel, rf24_datarate_e dataRate);
    	boolean sendRoute(MyMessage &message);
    	boolean sendWrite(uint8_t dest, MyMessage &message, bool broadcast=false);
    
      private:
    #ifdef DEBUG
    	char convBuf[MAX_PAYLOAD*2+1];
    #endif
    	uint8_t failedTransmissions;
    	uint8_t *childNodeTable; // In memory buffer for routing information to other nodes. also stored in EEPROM
        void (*timeCallback)(unsigned long); // Callback for requested time messages
        void (*msgCallback)(const MyMessage &); // Callback for incoming messages from other nodes and gateway.
    
        void requestNodeId();
    	void setupNode();
    	void findParentNode();
    	uint8_t crc8Message(MyMessage &message);
    	uint8_t getChildRoute(uint8_t childId);
    	void addChildRoute(uint8_t childId, uint8_t route);
    	void removeChildRoute(uint8_t childId);
    	void internalSleep(unsigned long ms);
    };
    #endif
    
    #endif
    

    Thx for your help!

    still learning...

    1 Reply Last reply
    0
    • H Offline
      H Offline
      hek
      Admin
      wrote on last edited by
      #2

      http://www.mysensors.org/build/debug#enabling-debug-logging

      1 Reply Last reply
      0
      • S Offline
        S Offline
        siod
        wrote on last edited by
        #3

        Yes I've read that but it didn't work. I have to disable debug in mysensor.h to save memory and there I have a problem to disable it. I uncommented debug but then I couldn't compile.

        still learning...

        1 Reply Last reply
        0
        • H Offline
          H Offline
          hek
          Admin
          wrote on last edited by hek
          #4

          Master branch? Works fine here...

          What is the compile error?

          1 Reply Last reply
          0
          • S Offline
            S Offline
            siod
            wrote on last edited by
            #5

            First of all: which "debug" do I have to uncomment in mysensor.h? I think that's where I made a mistake.

            still learning...

            1 Reply Last reply
            0
            • H Offline
              H Offline
              hek
              Admin
              wrote on last edited by
              #6

              Just put // before "#define DEBUG" like the instruction says (in reverse)

              1 Reply Last reply
              0
              • S Offline
                S Offline
                siod
                wrote on last edited by
                #7

                yes, it sounds so easy, but I can´t find that #define DEBUG in Mysensor.h
                all I found is this:

                #ifdef DEBUG
                #define debug(x,...) debugPrint(x, ##__VA_ARGS__)
                #else
                #define debug(x,...)
                #endif
                

                I uncommented all of that, then I couldn´t compile anymore. So that´s actually my problem. I´m feeling very dumb right now because I don´t get it :(

                still learning...

                1 Reply Last reply
                0
                • M Offline
                  M Offline
                  MartinP
                  wrote on last edited by
                  #8

                  You are changing in the wrong file.
                  The file you should change in is MyConfig.h.

                  #ifndef MyConfig_h
                  #define MyConfig_h
                  
                  /***
                   * Configure Sensor Network
                   */
                  #define RF24_CHANNEL	   76             //RF channel for the sensor net, 0-127
                  #define RF24_DATARATE 	   RF24_250KBPS   //RF24_250KBPS for 250kbs, RF24_1MBPS for 1Mbps, or RF24_2MBPS for 2Mbps
                  #define RF24_PA_LEVEL 	   RF24_PA_MAX    //Sensor PA Level == RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm, RF24_PA_HIGH=-6dBM, and RF24_PA_MAX=0dBm
                  #define RF24_PA_LEVEL_GW   RF24_PA_LOW  //Gateway PA Level, defaults to Sensor net PA Level.  Tune here if using an amplified nRF2401+ in your gateway.
                  #define BASE_RADIO_ID 	   ((uint64_t)0xA8A8E1FC00LL) // This is also act as base value for sensor nodeId addresses. Change this (or channel) if you have more than one sensor network.
                  
                  // MySensors online examples defaults
                  #define DEFAULT_CE_PIN 9
                  #define DEFAULT_CS_PIN 10
                  
                  
                  /***
                   * Enable/Disable debug logging
                   */
                  #define DEBUG  
                  
                  #endif
                  
                  1 Reply Last reply
                  0
                  • S Offline
                    S Offline
                    siod
                    wrote on last edited by
                    #9

                    mmh, I tried that before, which worked, but still was too less memory available. So I got back to http://www.mysensors.org/build/ethernet_gateway where it is described like this: "Note that the ENC28J60 mdoule uses much more memory than W5100. You probably have to disable DEBUG in MySensors.h to make it compile."
                    I´m confused now ;(

                    still learning...

                    1 Reply Last reply
                    0
                    • H Offline
                      H Offline
                      hek
                      Admin
                      wrote on last edited by
                      #10

                      MyConfig.h is the correct file to edit. Anything else you've seen is probably just a typo.

                      1 Reply Last reply
                      0
                      • S Offline
                        S Offline
                        siod
                        wrote on last edited by
                        #11

                        Ok, so I edited MyConfig.h but now I get this message from Arduino IDE:

                        Sketch uses 31,890 bytes (103%) of program storage space. Maximum is 30,720 bytes.
                        Global variables use 1,564 bytes (76%) of dynamic memory, leaving 484 bytes for local variables. Maximum is 2,048 bytes.

                        So it still doesn´t fit. Any idea how to save some storage space?

                        still learning...

                        1 Reply Last reply
                        0

                        Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                        Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                        With your input, this post could be even better 💗

                        Register Login
                        Reply
                        • Reply as topic
                        Log in to reply
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes


                        21

                        Online

                        12.0k

                        Users

                        11.2k

                        Topics

                        113.4k

                        Posts


                        Copyright 2025 TBD   |   Forum Guidelines   |   Privacy Policy   |   Terms of Service
                        • Login

                        • Don't have an account? Register

                        • Login or register to search.
                        • First post
                          Last post
                        0
                        • MySensors
                        • OpenHardware.io
                        • Categories
                        • Recent
                        • Tags
                        • Popular