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. Development
  3. NodeManager
  4. ds18b20 and negative temperature values

ds18b20 and negative temperature values

Scheduled Pinned Locked Moved NodeManager
6 Posts 3 Posters 3.9k 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.
  • fabix68F Offline
    fabix68F Offline
    fabix68
    wrote on last edited by
    #1

    hi,
    I'm having problems with negative temperatures on a node with 2 ds18b20
    if both sensors measure the positive temperature, the values ​​are correctly sent. If one of the 2 negative negative values ​​is ignored.
    everything works correctly using the example in the library.

    both positive values

    0_1505712997134_Screenshot 2017-09-18 07.23.11.png

    One Negative value

    0_1505713025652_Screenshot 2017-09-18 07.16.34.png

    1 Reply Last reply
    0
    • rejoe2R Offline
      rejoe2R Offline
      rejoe2
      wrote on last edited by
      #2

      As your serial output is different to the temperature sensor example, you should also post your changed code for deeper analysis.

      Controller: FHEM; MySensors: 2.3.1, RS485,nRF24,RFM69, serial Gateways

      1 Reply Last reply
      0
      • fabix68F Offline
        fabix68F Offline
        fabix68
        wrote on last edited by fabix68
        #3

        Config.h

        #ifndef config_h
        #define config_h
         
        /**********************************
         * Sketch configuration
         */
         
        #define SKETCH_NAME "Temperatura"
        #define SKETCH_VERSION "1.0"
         
        /**********************************
         * MySensors node configuration
         */
         
        // General settings
        #define MY_BAUD_RATE 9600
        #define MY_DEBUG
        //#define MY_NODE_ID 100
        //#define MY_SMART_SLEEP_WAIT_DURATION_MS 500
         
        // NRF24 radio settings
        #define MY_RADIO_NRF24
        //#define MY_RF24_ENABLE_ENCRYPTION
        //#define MY_RF24_CHANNEL 76
        //#define MY_RF24_PA_LEVEL RF24_PA_HIGH
        //#define MY_DEBUG_VERBOSE_RF24
        //#define MY_RF24_DATARATE RF24_250KBPS
         
        // RFM69 radio settings
        //#define MY_RADIO_RFM69
        //#define MY_RFM69_FREQUENCY RF69_868MHZ
        //#define MY_RFM69_FREQUENCY RFM69_868MHZ
        //#define MY_IS_RFM69HW
        //#define MY_RFM69_NEW_DRIVER
        //#define MY_RFM69_ENABLE_ENCRYPTION
        //#define MY_RFM69_NETWORKID 100
        //#define MY_DEBUG_VERBOSE_RFM69
        //#define MY_RF69_IRQ_PIN D1
        //#define MY_RF69_IRQ_NUM MY_RF69_IRQ_PIN
        //#define MY_RF69_SPI_CS D2
        //#define MY_RFM69_ATC_MODE_DISABLED
         
        // RS485 serial transport settings
        //#define MY_RS485
        //#define MY_RS485_BAUD_RATE 9600
        //#define MY_RS485_DE_PIN 2
        //#define MY_RS485_MAX_MESSAGE_LENGTH 40
        //#define MY_RS485_HWSERIAL Serial1
         
        // Message signing settings
        //#define MY_SIGNING_SOFT
        //#define MY_SIGNING_SOFT_RANDOMSEED_PIN 7
        //#define MY_SIGNING_REQUEST_SIGNATURES
        //#define MY_SIGNING_ATSHA204
         
        // OTA Firmware update settings
        //#define MY_OTA_FIRMWARE_FEATURE
        //#define OTA_WAIT_PERIOD 300
        //#define FIRMWARE_MAX_REQUESTS 2
        //#define MY_OTA_RETRY 2
         
        /**********************************
         * MySensors gateway configuration
         */
        // Common gateway settings
        //#define MY_REPEATER_FEATURE
         
        // Serial gateway settings
        //#define MY_GATEWAY_SERIAL
         
        // Ethernet gateway settings
        //#define MY_GATEWAY_W5100
         
        // ESP8266 gateway settings
        //#define MY_GATEWAY_ESP8266
        //#define MY_ESP8266_SSID ""
        //#define MY_ESP8266_PASSWORD ""
         
        // Gateway networking settings
        //#define MY_IP_ADDRESS 192,168,178,87
        //#define MY_IP_GATEWAY_ADDRESS 192,168,178,1
        //#define MY_IP_SUBNET_ADDRESS 255,255,255,0
        //#define MY_PORT 5003
        //#define MY_GATEWAY_MAX_CLIENTS 2
        //#define MY_USE_UDP
         
        // Gateway MQTT settings
        //#define MY_GATEWAY_MQTT_CLIENT
        //#define MY_CONTROLLER_IP_ADDRESS 192, 168, 178, 68
        //#define MY_PORT 1883
        //#define MY_MQTT_USER "username"
        //#define MY_MQTT_PASSWORD "password"
        //#define MY_MQTT_CLIENT_ID "mysensors-1"
        //#define MY_MQTT_PUBLISH_TOPIC_PREFIX "mygateway1-out"
        //#define MY_MQTT_SUBSCRIBE_TOPIC_PREFIX "mygateway1-in"
         
        // Gateway inclusion mode
        //#define MY_INCLUSION_MODE_FEATURE
        //#define MY_INCLUSION_BUTTON_FEATURE
        //#define MY_INCLUSION_MODE_DURATION 60
        //#define MY_DEFAULT_LED_BLINK_PERIOD 300
         
        // Gateway Leds settings
        //#define MY_DEFAULT_ERR_LED_PIN 4
        //#define MY_DEFAULT_RX_LED_PIN  5
        //#define MY_DEFAULT_TX_LED_PIN  6
         
        /***********************************
         * NodeManager configuration
         */
         
        // if enabled, enable debug messages on serial port
        #define DEBUG 1
         
        // if enabled, enable the capability to power on sensors with the arduino's pins to save battery while sleeping
        #define POWER_MANAGER 1
        // if enabled, will load the battery manager library to allow the battery level to be reported automatically or on demand
        #define BATTERY_MANAGER 1
        // if enabled, allow modifying the configuration remotely by interacting with the configuration child id
        #define REMOTE_CONFIGURATION 1
        // if enabled, persist the remote configuration settings on EEPROM
        #define PERSIST 0
        // if enabled, a battery sensor will be created at BATTERY_CHILD_ID (201 by default) and will report vcc voltage together with the battery level percentage
        #define BATTERY_SENSOR 1
        // if enabled, a signal sensor will be created at RSSI_CHILD_ID (202 by default) and will report the signal quality of the transport layer
        #define SIGNAL_SENSOR 0
        // if enabled, send a SLEEPING and AWAKE service messages just before entering and just after leaving a sleep cycle and STARTED when starting/rebooting
        #define SERVICE_MESSAGES 0
         
        // Enable this module to use one of the following sensors: SENSOR_ANALOG_INPUT, SENSOR_LDR, SENSOR_THERMISTOR, SENSOR_ML8511, SENSOR_ACS712, SENSOR_RAIN, SENSOR_SOIL_MOISTURE
        #define MODULE_ANALOG_INPUT 0
        // Enable this module to use one of the following sensors: SENSOR_DIGITAL_INPUT
        #define MODULE_DIGITAL_INPUT 0
        // Enable this module to use one of the following sensors: SENSOR_DIGITAL_OUTPUT, SENSOR_RELAY, SENSOR_LATCHING_RELAY
        #define MODULE_DIGITAL_OUTPUT 0
        // Enable this module to use one of the following sensors: SENSOR_DHT11, SENSOR_DHT22
        #define MODULE_DHT 0
        // Enable this module to use one of the following sensors: SENSOR_SHT21, SENSOR_HTU21D
        #define MODULE_SHT21 0
        // Enable this module to use one of the following sensors: SENSOR_SWITCH, SENSOR_DOOR, SENSOR_MOTION
        #define MODULE_SWITCH 0
        // Enable this module to use one of the following sensors: SENSOR_DS18B20
        #define MODULE_DS18B20 1
        // Enable this module to use one of the following sensors: SENSOR_BH1750
        #define MODULE_BH1750 0
        // Enable this module to use one of the following sensors: SENSOR_MLX90614
        #define MODULE_MLX90614 0
        // Enable this module to use one of the following sensors: SENSOR_BME280
        #define MODULE_BME280 0
        // Enable this module to use one of the following sensors: SENSOR_SONOFF
        #define MODULE_SONOFF 0
        // Enable this module to use one of the following sensors: SENSOR_BMP085
        #define MODULE_BMP085 0
        // Enable this module to use one of the following sensors: SENSOR_HCSR04
        #define MODULE_HCSR04 0
        // Enable this module to use one of the following sensors: SENSOR_MCP9808
        #define MODULE_MCP9808 0
        // Enable this module to use one of the following sensors: SENSOR_MQ
        #define MODULE_MQ 0
        // Enable this module to use one of the following sensors: SENSOR_MHZ19
        #define MODULE_MHZ19 0
        // Enable this module to use one of the following sensors: SENSOR_AM2320    
        #define MODULE_AM2320 0
        // Enable this module to use one of the following sensors: SENSOR_TSL2561    
        #define MODULE_TSL2561 0
        // Enable this module to use one of the following sensors: SENSOR_PT100
        #define MODULE_PT100 0
        // Enable this module to use one of the following sensors: SENSOR_BMP280
        #define MODULE_BMP280 0
        // Enable this module to use one of the following sensors: SENSOR_DIMMER
        #define MODULE_DIMMER 0
        // Enable this module to use one of the following sensors: SENSOR_RAIN_GAUGE, SENSOR_POWER_METER, SENSOR_WATER_METER
        #define MODULE_PULSE_METER 0
         
        #endif
        

        File

        
        /*
          NodeManager is intended to take care on your behalf of all those common tasks a MySensors node has to accomplish, speeding up the development cycle of your projects.
          NodeManager includes the following main components:
          - Sleep manager: allows managing automatically the complexity behind battery-powered sensors spending most of their time sleeping
          - Power manager: allows powering on your sensors only while the node is awake
          - Battery manager: provides common functionalities to read and report the battery level
          - Remote configuration: allows configuring remotely the node without the need to have physical access to it
          - Built-in personalities: for the most common sensors, provide embedded code so to allow their configuration with a single line
          Documentation available on: https://github.com/mysensors/NodeManager
        */
        
        
        // load user settings
        #include "config.h"
        // include supporting libraries
        #ifdef MY_GATEWAY_ESP8266
        #include <ESP8266WiFi.h>
        #endif
        // load MySensors library
        #include <MySensors.h>
        // load NodeManager library
        #include "NodeManager.h"
        
        // create a NodeManager instance
        NodeManager nodeManager;
        
        // before
        void before() {
          // setup the serial port baud rate
          Serial.begin(MY_BAUD_RATE);
          nodeManager.registerSensor(SENSOR_DS18B20, 3);
          nodeManager.setBatteryMin(1.8);
          nodeManager.setBatteryMin(3.2);
          nodeManager.setSleepMinutes(1);
        
          /*
             Register below your sensors
          */
        
        
        
        
          /*
             Register above your sensors
          */
          nodeManager.before();
        
        }
        
        // presentation
        void presentation() {
          // call NodeManager presentation routine
          nodeManager.presentation();
        
        }
        
        // setup
        void setup() {
          // call NodeManager setup routine
          nodeManager.setup();
        }
        
        // loop
        void loop() {
          // call NodeManager loop routine
          nodeManager.loop();
        }
        
        // receive
        void receive(const MyMessage &message) {
          // call NodeManager receive routine
          nodeManager.receive(message);
        }
        
        // receiveTime
        void receiveTime(unsigned long ts) {
          // call NodeManager receiveTime routine
          nodeManager.receiveTime(ts);
        }
        
        
        1 Reply Last reply
        0
        • rejoe2R Offline
          rejoe2R Offline
          rejoe2
          wrote on last edited by
          #4

          @fabix68 sorry, but this seems to be a problem specific to nodemanager, so I'm not able to help you wrt this.

          Controller: FHEM; MySensors: 2.3.1, RS485,nRF24,RFM69, serial Gateways

          1 Reply Last reply
          0
          • fabix68F Offline
            fabix68F Offline
            fabix68
            wrote on last edited by
            #5

            I solved the problem.
            The error is in the NodeManager.cpp file in the section below here calculates the average of the detected values.
            Exactly at this point

            // process a float value
              else if (_value_type == TYPE_FLOAT && total > -1)
            

            the program does not send data if the average of the measurements is less than -1.
            Certainly a lapse.
            The average reading of a temperature sensor may also be negative.
            Removed control> -1 and the negative reads sell sent.
            It is necessary to analyze the behavior of the program when a sensor does not work, generating as -127 reading. I did not see if the library already does this check.

            1 Reply Last reply
            0
            • U Offline
              U Offline
              user2684
              Contest Winner
              wrote on last edited by
              #6

              Sorry for the delayed answer! Referencing https://github.com/mysensors/NodeManager/issues/219 to follow the resolution which as I mentioned might be a bit more complex unfortunately :)

              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