A kitchen-sink options header



  • 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 radio's
    //#define MY_RF24_PA_LEVEL RF24_PA_MAX              // Offers the most range, but high power can cause issues on cheap Chinese NRF24 radio's
    
    // Mysensors: security
    //#define MY_SECURITY_SIMPLE_PASSWD "changeme"      // Be aware, the length of the password has an effect on memory use.
    //#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. But you will have to set this up on every device, and also on the controller.
    //#define MY_RF24_DATARATE RF24_1MBPS               // Slower datarate makes the network more stable?
    //#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 gatewaynode 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.
    
    // 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?


  • Mod

    @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
    


  • 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?


  • Mod

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


 

337
Online

7.7k
Users

8.6k
Topics

92.4k
Posts