Skip to content
  • 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. Development
  3. A kitchen-sink options header
  • Getting Started
  • Controller
  • Build
  • Hardware
  • Download/API
  • Forum
  • Store

A kitchen-sink options header

Scheduled Pinned Locked Moved Development
7 Posts 3 Posters 1.1k Views 3 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.
  • alowhumA Offline
    alowhumA Offline
    alowhum
    Plugin Developer
    wrote on last edited by alowhum
    #1

    I'm creating a number of sketches for MySensors, and since I will be publishing them I want them all to have a nice, solid header that contains interesting settings.

    This is what I got so far:

    
    //
    // SETTINGS
    // Add or remove the two slashes at the beginning a line to enable or disable it.
    //
    
    // MySensors: enable and select the attached radio type
    #define MY_RADIO_NRF24                              // This is a common and simple radio used with MySensors. Downside is that it uses the same frequency space as WiFi.
    //#define MY_RADIO_NRF5_ESB                         // This is a new type of device that is arduino and radio all in one. Currently not suitable for beginners yet.
    //#define MY_RADIO_RFM69                            // This is an open source radio on the 433mhz frequency. Great range and built-in encryption, but more expensive and little more difficult to connect.
    //#define MY_RADIO_RFM95                            // This is a LoRaWan radio, which can have a range of 10km.
    
    // MySensors: choose your desired radio power level. Only choose one.
    //#define MY_RF24_PA_LEVEL RF24_PA_MIN              // Low power also means low range.
    #define MY_RF24_PA_LEVEL RF24_PA_LOW                // This is a good middle of the road setting.
    //#define MY_RF24_PA_LEVEL RF24_PA_HIGH             // High power can cause issues on cheap Chinese NRF24 radios
    //#define MY_RF24_PA_LEVEL RF24_PA_MAX              // Offers the most range, but high power can cause issues on cheap Chinese NRF24 radios
    
    // Mysensors: security
    //#define MY_SECURITY_SIMPLE_PASSWD "changeme"      // Be aware that longer passwords use slightly more memory.
    //#define MY_SIGNING_SOFT_RANDOMSEED_PIN A7         // Setting a pin to pickup random electromagnetic noise helps make encryption more secure.
    
    // Mysensors: advanced settings
    #define MY_TRANSPORT_WAIT_READY_MS 10000            // Try connecting for 10 seconds. Otherwise just continue.
    //#define MY_RF24_CHANNEL 100                       // In EU the default channel 76 overlaps with wifi, so you could try using channel 100. You will have to select the same setting on every device in the network (including the gateway).
    //#define MY_RF24_DATARATE RF24_250KBPS             // Slower datarate, increases wireless range. Does not work on all hardware.
    //#define MY_RF24_DATARATE RF24_1MBPS               // Medium, safe setting.
    //#define MY_RF24_DATARATE RF24_2MBPS               // Fastest datarate, at the cost of less range. Does not work on all hardware.
    
    //#define MY_NODE_ID 10                             // Giving a node a manual ID can in rare cases fix connection issues.
    //#define MY_PARENT_NODE_ID 0                       // Fixating the ID of the gateway node can in rare cases fix connection issues.
    //#define MY_PARENT_NODE_IS_STATIC                  // Used together with setting the parent node ID. Daking the controller ID static can in rare cases fix connection issues.
    #define MY_SPLASH_SCREEN_DISABLED                   // Saves a little memory.
    //#define MY_DISABLE_RAM_ROUTING_TABLE_FEATURE      // Saves a little memory. On simple Arduino's this is already disabled by default.
    #define MY_DISABLE_SIGNAL_REPORT                    // Saves 1kb of space
    
    // MySensors: enable debug output to the serial monitor?
    //#define MY_DEBUG                                  // This can help check if the radio is working ok.
    
    // MySensors: do you want this node to also be a repeater? 
    #define MY_REPEATER_FEATURE                         // The devices can form a mesh network by passing along messages for each other. The only reason to disable this is if the device runs on battery power.
    
    
    

    Are there interesting settings that I am missing?

    mfalkviddM 1 Reply Last reply
    0
    • alowhumA alowhum

      I'm creating a number of sketches for MySensors, and since I will be publishing them I want them all to have a nice, solid header that contains interesting settings.

      This is what I got so far:

      
      //
      // SETTINGS
      // Add or remove the two slashes at the beginning a line to enable or disable it.
      //
      
      // MySensors: enable and select the attached radio type
      #define MY_RADIO_NRF24                              // This is a common and simple radio used with MySensors. Downside is that it uses the same frequency space as WiFi.
      //#define MY_RADIO_NRF5_ESB                         // This is a new type of device that is arduino and radio all in one. Currently not suitable for beginners yet.
      //#define MY_RADIO_RFM69                            // This is an open source radio on the 433mhz frequency. Great range and built-in encryption, but more expensive and little more difficult to connect.
      //#define MY_RADIO_RFM95                            // This is a LoRaWan radio, which can have a range of 10km.
      
      // MySensors: choose your desired radio power level. Only choose one.
      //#define MY_RF24_PA_LEVEL RF24_PA_MIN              // Low power also means low range.
      #define MY_RF24_PA_LEVEL RF24_PA_LOW                // This is a good middle of the road setting.
      //#define MY_RF24_PA_LEVEL RF24_PA_HIGH             // High power can cause issues on cheap Chinese NRF24 radios
      //#define MY_RF24_PA_LEVEL RF24_PA_MAX              // Offers the most range, but high power can cause issues on cheap Chinese NRF24 radios
      
      // Mysensors: security
      //#define MY_SECURITY_SIMPLE_PASSWD "changeme"      // Be aware that longer passwords use slightly more memory.
      //#define MY_SIGNING_SOFT_RANDOMSEED_PIN A7         // Setting a pin to pickup random electromagnetic noise helps make encryption more secure.
      
      // Mysensors: advanced settings
      #define MY_TRANSPORT_WAIT_READY_MS 10000            // Try connecting for 10 seconds. Otherwise just continue.
      //#define MY_RF24_CHANNEL 100                       // In EU the default channel 76 overlaps with wifi, so you could try using channel 100. You will have to select the same setting on every device in the network (including the gateway).
      //#define MY_RF24_DATARATE RF24_250KBPS             // Slower datarate, increases wireless range. Does not work on all hardware.
      //#define MY_RF24_DATARATE RF24_1MBPS               // Medium, safe setting.
      //#define MY_RF24_DATARATE RF24_2MBPS               // Fastest datarate, at the cost of less range. Does not work on all hardware.
      
      //#define MY_NODE_ID 10                             // Giving a node a manual ID can in rare cases fix connection issues.
      //#define MY_PARENT_NODE_ID 0                       // Fixating the ID of the gateway node can in rare cases fix connection issues.
      //#define MY_PARENT_NODE_IS_STATIC                  // Used together with setting the parent node ID. Daking the controller ID static can in rare cases fix connection issues.
      #define MY_SPLASH_SCREEN_DISABLED                   // Saves a little memory.
      //#define MY_DISABLE_RAM_ROUTING_TABLE_FEATURE      // Saves a little memory. On simple Arduino's this is already disabled by default.
      #define MY_DISABLE_SIGNAL_REPORT                    // Saves 1kb of space
      
      // MySensors: enable debug output to the serial monitor?
      //#define MY_DEBUG                                  // This can help check if the radio is working ok.
      
      // MySensors: do you want this node to also be a repeater? 
      #define MY_REPEATER_FEATURE                         // The devices can form a mesh network by passing along messages for each other. The only reason to disable this is if the device runs on battery power.
      
      
      

      Are there interesting settings that I am missing?

      mfalkviddM Offline
      mfalkviddM Offline
      mfalkvidd
      Mod
      wrote on last edited by mfalkvidd
      #2

      @alowhum note sure which are interesting, but this should be the full list:

      MY_BAUD_RATE
      MY_CORE_ONLY
      MY_CORE_MIN_VERSION
      MY_CORE_VERSION
      MY_CRITICAL_SECTION
      MY_DISABLE_RAM_ROUTING_TABLE_FEATURE
      MY_DISABLE_REMOTE_RESET
      MY_DISABLED_SERIAL
      MY_INDICATION_HANDLER
      MY_RX_MESSAGE_BUFFER_SIZE
      MY_RX_MESSAGE_BUFFER_FEATURE
      MY_SERIAL_OUTPUT_SIZE
      MY_SLEEP_NOT_POSSIBLE
      MY_SMART_SLEEP_WAIT_DURATION
      MY_SPLASH_SCREEN_DISABLED
      MY_WAKE_UP_BY_TIMER
      MY_CORE_COMPATIBILITY_CHECK
      MY_DEBUG_VERBOSE_TRANSPORT
      MY_NODE_ID
      MY_PARENT_NODE_ID
      MY_PARENT_NODE_IS_STATIC
      MY_PASSIVE_NODE
      MY_RAM_ROUTING_TABLE_FEATURE
      MY_REGISTRATION_CONTROLLER
      MY_REGISTRATION_DEFAULT
      MY_REGISTRATION_FEATURE
      MY_REGISTRATION_RETRIES
      MY_REPEATER_FEATURE
      MY_ROUTING_TABLE_SAVE_INTERVAL_MS
      MY_SIGNAL_REPORT_ENABLED
      MY_SLEEP_TRANSPORT_RECONNECT_TIMEOUT_MS
      MY_SMART_SLEEP_WAIT_DURATION_MS
      MY_TRANSPORT_CHKUPL_INTERVAL_MS
      MY_TRANSPORT_DISCOVERY_INTERVAL_MS
      MY_TRANSPORT_MAX_TSM_FAILURES
      MY_TRANSPORT_MAX_TX_FAILURES
      MY_TRANSPORT_SANITY_CHECK
      MY_TRANSPORT_SANITY_CHECK_INTERVAL
      MY_TRANSPORT_SANITY_CHECK_INTERVAL_MS
      MY_TRANSPORT_STATE_RETRIES
      MY_TRANSPORT_STATE_TIMEOUT_MS
      MY_TRANSPORT_TIMEOUT_EXT_FAILURE_STATE_MS
      MY_TRANSPORT_TIMEOUT_FAILURE_STATE_MS
      MY_TRANSPORT_UPLINK_CHECK_DISABLED
      MY_TRANSPORT_WAIT_READY_MS
      MY_DEBUG
      MY_DEBUGDEVICE
      MY_DEBUG_VERBOSE_GATEWAY
      MY_SPECIAL_DEBUG
      MY_DEBUG_OTA
      MY_DEBUG_OTA_DISABLE_ACK
      MY_DEBUG_VERBOSE_OTA_UPDATE
      MY_DEFAULT_ERR_LED_PIN
      MY_DEFAULT_LED_BLINK_PERIOD
      MY_DEFAULT_RX_LED_PIN
      MY_DEFAULT_TX_LED_PIN
      MY_INCLUSION_MODE_FEATURE
      MY_INCLUSION_BUTTON_FEATURE
      MY_INCLUSION_MODE_BUTTON_PIN
      MY_INCLUSION_MODE_DURATION
      MY_INCLUSION_LED_PIN
      MY_OTA_FIRMWARE_FEATURE
      MY_OTA_FLASH_SS
      MY_OTA_FLASH_JDECID
      MY_OTA_LOG_RECEIVER_FEATURE
      MY_OTA_LOG_SENDER_FEATURE
      MY_OTA_USE_I2C_EEPROM
      MY_SPIFLASH_SST25TYPE
      MY_WITH_LEDS_BLINKING_INVERSE
      MY_DEBUG_VERBOSE_SIGNING
      MY_ENCRYPTION_SIMPLE_PASSWD
      MY_NODE_LOCK_FEATURE
      MY_NODE_UNLOCK_PIN
      MY_NODE_LOCK_COUNTER_MAX
      MY_SECURITY_SIMPLE_PASSWD
      MY_SIGNING_ATSHA204
      MY_SIGNING_ATSHA204_PIN
      MY_SIGNING_NODE_WHITELISTING
      MY_SIGNING_SIMPLE_PASSWD
      MY_SIGNING_SOFT
      MY_SIGNING_SOFT_RANDOMSEED_PIN
      MY_SIGNING_REQUEST_SIGNATURES
      MY_SIGNING_WEAK_SECURITY
      MY_VERIFICATION_TIMEOUT_MS
      MY_HW_HAS_GETENTROPY
      MY_GATEWAY_TINYGSM
      MY_GSM_APN
      MY_GSM_BAUDRATE
      MY_GSM_PIN
      MY_GSM_PSW
      MY_GSM_RX
      MY_GSM_SSID
      MY_GSM_TX
      MY_GSM_USR
      MY_SOFTSPI
      MY_SOFT_SPI_MISO_PIN
      MY_SOFT_SPI_MOSI_PIN
      MY_SOFT_SPI_SCK_PIN
      MY_DEBUG_VERBOSE_RF24
      MY_RADIO_RF24
      MY_RF24_ADDR_WIDTH
      MY_RF24_BASE_RADIO_ID
      MY_RF24_ENABLE_ENCRYPTION
      MY_RF24_CE_PIN
      MY_RF24_CHANNEL
      MY_RF24_CS_PIN
      MY_RF24_DATARATE
      MY_RF24_IRQ_PIN
      MY_RF24_PA_LEVEL
      MY_RF24_POWER_PIN
      MY_RF24_SPI_SPEED
      MY_DEBUG_VERBOSE_NRF5_ESB
      MY_NRF5_ESB_ADDR_WIDTH
      MY_NRF5_ESB_BASE_RADIO_ID
      MY_NRF5_ESB_CHANNEL
      MY_NRF5_ESB_ENABLE_ENCRYPTION
      MY_NRF5_ESB_MODE
      MY_NRF5_ESB_PA_LEVEL
      MY_NRF5_ESB_RX_BUFFER_SIZE
      MY_NRF5_ESB_REVERSE_ACK_RX
      MY_NRF5_ESB_REVERSE_ACK_TX
      MY_RADIO_NRF5_ESB
      MY_DEBUG_VERBOSE_RFM95
      MY_RADIO_RFM95
      MY_RFM95_ATC_MODE_DISABLED
      MY_RFM95_ATC_TARGET_RSSI
      MY_RFM95_ATC_TARGET_RSSI_DBM
      MY_RFM95_CS_PIN
      MY_RFM95_FREQUENCY
      MY_RFM95_IRQ_NUM
      MY_RFM95_IRQ_PIN
      MY_RFM95_MAX_POWER_LEVEL_DBM
      MY_RFM95_MODEM_CONFIGRUATION
      MY_RFM95_POWER_PIN
      MY_RFM95_RST_PIN
      MY_RFM95_SPI_SPEED
      MY_RFM95_TCXO
      MY_RFM95_TX_POWER
      MY_RFM95_TX_POWER_DBM
      MY_RFM95_TX_TIMEOUT_MS
      MY_RFM95_ENABLE_ENCRYPTION
      MY_DEBUG_VERBOSE_RFM69
      MY_DEBUG_VERBOSE_RFM69_REGISTERS
      MY_IS_RFM69HW
      MY_RADIO_RFM69
      MY_RFM69_ATC_MODE_DISABLED
      MY_RFM69_ATC_TARGET_RSSI_DBM
      MY_RFM69_BITRATE_LSB
      MY_RFM69_BITRATE_MSB
      MY_RFM69_CS_PIN
      MY_RFM69_CSMA_ADD_DELAY_BASE
      MY_RFM69_CSMA_ADD_DELAY_COUNT
      MY_RFM69_CSMA_LIMIT_DBM
      MY_RFM69_CSMA_TIMEOUT_MS
      MY_RFM69_DEFAULT_LISTEN_IDLE_US
      MY_RFM69_DEFAULT_LISTEN_RX_US
      MY_RFM69_ENABLE_ENCRYPTION
      MY_RFM69_ENABLE_LISTENMODE
      MY_RFM69_FREQUENCY
      MY_RFM69_IRQ_NUM
      MY_RFM69_IRQ_PIN
      MY_RFM69_MAX_POWER_LEVEL_DBM
      MY_RFM69_MODEM_CONFIGURATION
      MY_RFM69_NETWORKID
      MY_RFM69_NEW_DRIVER
      MY_RFM69_POWER_PIN
      MY_RFM69_RST_PIN
      MY_RFM69_SPI_SPEED
      MY_RFM69_TX_TIMEOUT_MS
      MY_RFM69_TX_POWER_DBM
      MY_RS485
      MY_RS485_BAUD_RATE
      MY_RS485_DE_PIN
      MY_RS485_HWSERIAL
      MY_RS485_MAX_MESSAGE_LENGTH
      MY_RS485_SOH_COUNT
      MY_GATEWAY_CLIENT_MODE
      MY_GATEWAY_ENC28J60
      MY_GATEWAY_ESP32
      MY_GATEWAY_ESP8266
      MY_GATEWAY_MQTT_CLIENT
      MY_GATEWAY_SERIAL
      MY_GATEWAY_W5100
      MY_HOSTNAME
      MY_INCLUSION_BUTTON_EXTERNAL_PULLUP
      MY_MQTT_CLIENT_ID
      MY_MQTT_CLIENT_PUBLISH_RETAIN
      MY_MQTT_PASSWORD
      MY_MQTT_PUBLISH_TOPIC_PREFIX
      MY_MQTT_SUBSCRIBE_TOPIC_PREFIX
      MY_MQTT_USER
      MY_W5100_SPI_EN
      MY_WIFI_SSID
      MY_WIFI_BSSID
      MY_WIFI_PASSWORD
      MY_CONTROLLER_IP_ADDRESS
      MY_CONTROLLER_URL_ADDRESS
      MY_GATEWAY_MAX_CLIENTS
      MY_GATEWAY_MAX_RECEIVE_LENGTH
      MY_GATEWAY_MAX_SEND_LENGTH
      MY_IP_ADDRESS
      MY_IP_GATEWAY_ADDRESS
      MY_IP_RENEWAL_INTERVAL
      MY_IP_RENEWAL_INTERVAL_MS
      MY_IP_SUBNET_ADDRESS
      MY_MAC_ADDRESS
      MY_PORT
      MY_USE_UDP
      MY_ESP8266_SERIAL_MODE
      
      1 Reply Last reply
      2
      • alowhumA Offline
        alowhumA Offline
        alowhum
        Plugin Developer
        wrote on last edited by
        #3

        Thanks for that.

        I'm curious though: are there any on that list that you often/sometimes use in sketches that I didn't list?

        mfalkviddM 1 Reply Last reply
        0
        • alowhumA alowhum

          Thanks for that.

          I'm curious though: are there any on that list that you often/sometimes use in sketches that I didn't list?

          mfalkviddM Offline
          mfalkviddM Offline
          mfalkvidd
          Mod
          wrote on last edited by
          #4

          @alowhum no, but I don't use 90% of what's already on your list either ;-)

          1 Reply Last reply
          0
          • alowhumA Offline
            alowhumA Offline
            alowhum
            Plugin Developer
            wrote on last edited by
            #5

            Learning a little more today:

            Apparently..

            #define MY_DISABLE_RAM_ROUTING_TABLE_FEATURE
            

            ..is not required for Arduino Nano boards. Because they have little RAM, MySensors disables it automatically. Nice!

            I also want my nodes to always keep trying to reconnect to the network. I thought that would be standard, but apparently it's not? Is my understanding correct? The code below would set it to try and reconnect later:

            #define MY_TRANSPORT_WAIT_READY_MS (10*1000ul) // On boot-up, stop trying to connect to the gateway after 10 seconds
            #define MY_TRANSPORT_TIMEOUT_EXT_FAILURE_STATE (15*60*1000ul) // If connection is down, try to reconnect to the gateway every 15 minutes.
            

            In the documentation I also noticed "MY_TRANSPORT_TIMEOUT_FAILURE_STATE_MS" which is set to ten seconds. I guess this happens:

            • If the radio is OK, every 10 seconds, for a maximum of 7 times, the node will try to connect to the gateway.
            • If it fails after 7 retries, it will wait much longer before retrying?

            Does it eventually give up?

            1 Reply Last reply
            0
            • W Offline
              W Offline
              waspie
              wrote on last edited by
              #6

              get rid of all your apostrophes. Those words are pluralized, not possessive (as long as you're trying to clean it up and make it look nice you might as well fix the punctuation).

              1 Reply Last reply
              0
              • alowhumA Offline
                alowhumA Offline
                alowhum
                Plugin Developer
                wrote on last edited by
                #7

                @waspie: done :-)

                Doe anyone have any idea about the retries? I'd like my nodes to keep trying to reconnect as long as they have power.

                Another question:

                I've read different things about

                #define MY_DISABLE_SIGNAL_REPORT
                

                Some recently said this saves memory, but I've found an older post that states it's already disabled by default.

                1 Reply Last reply
                0
                Reply
                • Reply as topic
                Log in to reply
                • Oldest to Newest
                • Newest to Oldest
                • Most Votes


                1

                Online

                11.7k

                Users

                11.2k

                Topics

                113.0k

                Posts


                Copyright 2019 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
                • OpenHardware.io
                • Categories
                • Recent
                • Tags
                • Popular