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. DHT11 Arduino pro mini no temp readings

DHT11 Arduino pro mini no temp readings

Scheduled Pinned Locked Moved Development
13 Posts 5 Posters 5.0k Views 4 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.
  • M Offline
    M Offline
    Mr_sensor
    wrote on last edited by
    #1

    Hi,

    I'm trying to get my first sensor working. A DHT11 temp/ humidity sensor. I followed the instructions from the build part on Mysensors. Uploaded the sketch and had a look at the serial monitor.
    There it appeared that no temperatures are coming up. So I had a look at the connections and all seems fine to me. What could be the problem? Power?
    Also, having a look at the serial log, does it communicate with the gateway? I think so, but which lines are referring to that?
    The parts with: TSF:MSG:READ,0-0-1,s=255,c=3,t=27,pt=1,l=1,sg=0:1 ?

    Any advise on how to get the DHT11 to work? Thanks.

    Using the DHTlibrary as mentioned in the instructions.
    Arduino 1.8.2
    Mysensors 2.1.1
    Arduino pro mini ordered from aliexpress I am not sure which version I have both 3.3 volt and 5volt version (how to determine?).

    link text
    link text

    0 MCO:BGN:INIT NODE,CP=RNNNA--,VER=2.1.1
    4 TSM:INIT
    4 TSF:WUR:MS=0
    12 TSM:INIT:TSP OK
    14 TSM:INIT:STATID=1
    16 TSF:SID:OK,ID=1
    18 TSM:FPAR
    18 TSM:FPAR:STATP=0
    20 TSM:ID
    22 TSM:ID:OK
    24 TSM:UPL
    32 TSF:MSG:SEND,1-1-0-0,s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=OK:1
    47 TSF:MSG:READ,0-0-1,s=255,c=3,t=25,pt=1,l=1,sg=0:1
    53 TSF:MSG:PONG RECV,HP=1
    55 TSM:UPL:OK
    57 TSM:READY:ID=1,PAR=0,DIS=1
    71 TSF:MSG:SEND,1-1-0-0,s=255,c=3,t=15,pt=6,l=2,sg=0,ft=0,st=OK:0100
    79 TSF:MSG:READ,0-0-1,s=255,c=3,t=15,pt=6,l=2,sg=0:0100
    90 TSF:MSG:SEND,1-1-0-0,s=255,c=0,t=17,pt=0,l=5,sg=0,ft=0,st=OK:2.1.1
    100 TSF:MSG:SEND,1-1-0-0,s=255,c=3,t=6,pt=1,l=1,sg=0,ft=0,st=OK:0
    2117 TSF:MSG:SEND,1-1-0-0,s=255,c=3,t=11,pt=0,l=22,sg=0,ft=0,st=OK:TemperatureAndHumidity
    2129 TSF:MSG:SEND,1-1-0-0,s=255,c=3,t=12,pt=0,l=3,sg=0,ft=0,st=OK:1.1
    2144 TSF:MSG:SEND,1-1-0-0,s=0,c=0,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
    2154 TSF:MSG:SEND,1-1-0-0,s=1,c=0,t=6,pt=0,l=0,sg=0,ft=0,st=OK:
    2160 MCO:REG:REQ
    2166 TSF:MSG:SEND,1-1-0-0,s=255,c=3,t=26,pt=1,l=1,sg=0,ft=0,st=OK:2
    2226 TSF:MSG:READ,0-0-1,s=255,c=3,t=27,pt=1,l=1,sg=0:1
    2232 MCO:PIM:NODE REG=1
    2234 MCO:BGN:STP
    2236 MCO:SLP:MS=1000,SMS=0,I1=255,M1=255,I2=255,M2=255
    2242 MCO:SLP:TPD
    2244 MCO:SLP:WUP=-1
    2246 MCO:BGN:INIT OK,TSP=1
    Failed reading temperature from DHT!
    Failed reading humidity from DHT
    2269 MCO:SLP:MS=60000,SMS=0,I1=255,M1=255,I2=255,M2=255
    2279 MCO:SLP:TPD
    2281 MCO:SLP:WUP=-1
    Failed reading temperature from DHT!
    Failed reading humidity from DHT
    2304 MCO:SLP:MS=60000,SMS=0,I1=255,M1=255,I2=255,M2=255
    2314 MCO:SLP:TPD
    2316 MCO:SLP:WUP=-1
    Failed reading temperature from DHT!
    Failed reading humidity from DHT
    2336 MCO:SLP:MS=60000,SMS=0,I1=255,M1=255,I2=255,M2=255
    2347 MCO:SLP:TPD
    2349 MCO:SLP:WUP=-1```
    
    Any help would be appreciated. Thanks. W.
    1 Reply Last reply
    0
    • H Offline
      H Offline
      hek
      Admin
      wrote on last edited by
      #2

      Well, something is wrong with either the wiring or sensor. If you have a multimeter, you should probably do a continuity test on the connections.

      M 1 Reply Last reply
      0
      • H hek

        Well, something is wrong with either the wiring or sensor. If you have a multimeter, you should probably do a continuity test on the connections.

        M Offline
        M Offline
        Mr_sensor
        wrote on last edited by
        #3

        @hek Thanks for the reply. I just did a test with my multimeter and measuring at the dht11 it shows 3.46 so that should be ok right?
        I used the DHT11 some time ago with an esp8266 and than it was working fine. Could the pin 3 data be the problem?

        1 Reply Last reply
        0
        • tonnerre33T Offline
          tonnerre33T Offline
          tonnerre33
          Hardware Contributor
          wrote on last edited by tonnerre33
          #4

          Hi, which sensor do you use ?
          A DHT put on a pcb or without pcb ?
          If you haven't a DHT with pcb, you need to put a 5k resistor between pin 1 and 2 of the DHT ;)
          More information here : https://www.mysensors.org/dl/57c3ec0c4d04abe84cd93e0f/design/DHT11.pdf

          M 1 Reply Last reply
          0
          • tonnerre33T tonnerre33

            Hi, which sensor do you use ?
            A DHT put on a pcb or without pcb ?
            If you haven't a DHT with pcb, you need to put a 5k resistor between pin 1 and 2 of the DHT ;)
            More information here : https://www.mysensors.org/dl/57c3ec0c4d04abe84cd93e0f/design/DHT11.pdf

            M Offline
            M Offline
            Mr_sensor
            wrote on last edited by
            #5

            @tonnerre33 No I have one with pcb.

            M 1 Reply Last reply
            0
            • M Mr_sensor

              @tonnerre33 No I have one with pcb.

              M Offline
              M Offline
              Mr_sensor
              wrote on last edited by
              #6

              @Mr_sensor Stil get the message

              Failed reading temperature from DHT!
              Failed reading humidity from DHT

              Also tried it with an dh22 I had (included a pull-up resistor between vcc and data) but get the same result. What can I do to get this working?
              If I use the arduino pro mini for an other sensor they are working fine (tested with a magnet-reed switch).

              1 Reply Last reply
              0
              • gohanG Offline
                gohanG Offline
                gohan
                Mod
                wrote on last edited by
                #7

                have you set all the waiting/delay times and the initialization before reading the temperature (as seen in the examples)?

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

                  This is the sketch I'm using.

                  /**
                   * The MySensors Arduino library handles the wireless radio link and protocol
                   * between your home built sensors/actuators and HA controller of choice.
                   * The sensors forms a self healing radio network with optional repeaters. Each
                   * repeater and gateway builds a routing tables in EEPROM which keeps track of the
                   * network topology allowing messages to be routed to nodes.
                   *
                   * Created by Henrik Ekblad <henrik.ekblad@mysensors.org>
                   * Copyright (C) 2013-2015 Sensnology AB
                   * Full contributor list: https://github.com/mysensors/Arduino/graphs/contributors
                   *
                   * Documentation: http://www.mysensors.org
                   * Support Forum: http://forum.mysensors.org
                   *
                   * 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.
                   *
                   *******************************
                   *
                   * REVISION HISTORY
                   * Version 1.0: Henrik EKblad
                   * Version 1.1 - 2016-07-20: Converted to MySensors v2.0 and added various improvements - Torben Woltjen (mozzbozz)
                   * 
                   * DESCRIPTION
                   * This sketch provides an example of how to implement a humidity/temperature
                   * sensor using a DHT11/DHT-22.
                   *  
                   * For more information, please visit:
                   * http://www.mysensors.org/build/humidity
                   * 
                   */
                  #define MY_NODE_ID 2
                  #define MY_PARENT_NODE_ID 0
                  #define MY_PARENT_NODE_IS_STATIC
                  
                  // Enable debug prints
                  #define MY_DEBUG
                  
                  // Enable and select radio type attached 
                  #define MY_RADIO_NRF24
                  //#define MY_RADIO_RFM69
                  //#define MY_RS485
                   
                  #include <SPI.h>
                  #include <MySensors.h>  
                  #include <DHT.h>
                  
                  
                  // Set this to the pin you connected the DHT's data pin to
                  #define DHT_DATA_PIN 3
                  
                  // Set this offset if the sensor has a permanent small offset to the real temperatures
                  #define SENSOR_TEMP_OFFSET 0
                  
                  // Sleep time between sensor updates (in milliseconds)
                  // Must be >1000ms for DHT22 and >2000ms for DHT11
                  static const uint64_t UPDATE_INTERVAL = 60000;
                  
                  // Force sending an update of the temperature after n sensor reads, so a controller showing the
                  // timestamp of the last update doesn't show something like 3 hours in the unlikely case, that
                  // the value didn't change since;
                  // i.e. the sensor would force sending an update every UPDATE_INTERVAL*FORCE_UPDATE_N_READS [ms]
                  static const uint8_t FORCE_UPDATE_N_READS = 10;
                  
                  #define CHILD_ID_HUM 0
                  #define CHILD_ID_TEMP 1
                  
                  float lastTemp;
                  float lastHum;
                  uint8_t nNoUpdatesTemp;
                  uint8_t nNoUpdatesHum;
                  bool metric = true;
                  
                  MyMessage msgHum(CHILD_ID_HUM, V_HUM);
                  MyMessage msgTemp(CHILD_ID_TEMP, V_TEMP);
                  DHT dht;
                  
                  
                  void presentation()  
                  { 
                    // Send the sketch version information to the gateway
                    sendSketchInfo("TemperatureAndHumidity", "1.1");
                    
                    // Register all sensors to gw (they will be created as child devices)
                    present(CHILD_ID_HUM, S_HUM);
                    present(CHILD_ID_TEMP, S_TEMP);
                    
                    metric = getControllerConfig().isMetric;
                  }
                  
                  
                  void setup()
                  {
                    dht.setup(DHT_DATA_PIN); // set data pin of DHT sensor
                    if (UPDATE_INTERVAL <= dht.getMinimumSamplingPeriod()) {
                      Serial.println("Warning: UPDATE_INTERVAL is smaller than supported by the sensor!");
                    }
                    // Sleep for the time of the minimum sampling period to give the sensor time to power up
                    // (otherwise, timeout errors might occure for the first reading)
                    sleep(dht.getMinimumSamplingPeriod());
                  }
                  
                  
                  void loop()      
                  {  
                    // Force reading sensor, so it works also after sleep()
                    dht.readSensor(true);
                    
                    // Get temperature from DHT library
                    float temperature = dht.getTemperature();
                    if (isnan(temperature)) {
                      Serial.println("Failed reading temperature from DHT!");
                    } else if (temperature != lastTemp || nNoUpdatesTemp == FORCE_UPDATE_N_READS) {
                      // Only send temperature if it changed since the last measurement or if we didn't send an update for n times
                      lastTemp = temperature;
                      if (!metric) {
                        temperature = dht.toFahrenheit(temperature);
                      }
                      // Reset no updates counter
                      nNoUpdatesTemp = 0;
                      temperature += SENSOR_TEMP_OFFSET;
                      send(msgTemp.set(temperature, 1));
                  
                      #ifdef MY_DEBUG
                      Serial.print("T: ");
                      Serial.println(temperature);
                      #endif
                    } else {
                      // Increase no update counter if the temperature stayed the same
                      nNoUpdatesTemp++;
                    }
                  
                    // Get humidity from DHT library
                    float humidity = dht.getHumidity();
                    if (isnan(humidity)) {
                      Serial.println("Failed reading humidity from DHT");
                    } else if (humidity != lastHum || nNoUpdatesHum == FORCE_UPDATE_N_READS) {
                      // Only send humidity if it changed since the last measurement or if we didn't send an update for n times
                      lastHum = humidity;
                      // Reset no updates counter
                      nNoUpdatesHum = 0;
                      send(msgHum.set(humidity, 1));
                      
                      #ifdef MY_DEBUG
                      Serial.print("H: ");
                      Serial.println(humidity);
                      #endif
                    } else {
                      // Increase no update counter if the humidity stayed the same
                      nNoUpdatesHum++;
                    }
                  
                    // Sleep for a while to save energy
                    sleep(UPDATE_INTERVAL); 
                  }
                  
                  1 Reply Last reply
                  0
                  • M Offline
                    M Offline
                    Mr_sensor
                    wrote on last edited by
                    #9

                    since I did not get these Dht11 or Dht22 working, I decided to try an other sensor type to see if that would work better.
                    So I connected a HTU21D sensor and included the library from sparkfun. Using there demo sketch I can see the sensor is working fine:

                    HTU21D Example!
                    Time:192 Temperature:20.8C Humidity:998.0%
                    Time:1318 Temperature:20.8C Humidity:47.3%
                    Time:2445 Temperature:20.7C Humidity:47.4%
                    Time:3571 Temperature:20.7C Humidity:47.4%
                    Time:4698 Temperature:20.7C Humidity:47.5%
                    Time:5824 Temperature:20.7C Humidity:47.5%
                    Time:6948 Temperature:20.7C Humidity:47.6%
                    Time:8075 Temperature:20.7C Humidity:47.6%
                    Time:9201 Temperature:20.7C Humidity:47.6%

                    But when I include the "adapted" Mysensors sketch I found here in the forum it seems the temperatures are not read or something else is wrong?

                    This is what is in the log file in a ongoing loop:

                    MCO:BGN:INIT NODE,CP=RNNNA--,VER=2.1.1
                    4 TSM:INIT
                    4 TSF:WUR:MS=0
                    12 TSM:INIT:TSP OK
                    14 TSM:INIT:STATID=2
                    16 TSF:SID:OK,ID=2
                    18 TSM:FPAR
                    18 TSM:FPAR:STATP=0
                    20 TSM:ID
                    22 TSM:ID:OK
                    22 TSM:UPL
                    28 TSF:MSG:SEND,2-2-0-0,s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=OK:1
                    47 TSF:MSG:READ,0-0-2,s=255,c=3,t=25,pt=1,l=1,sg=0:1
                    53 TSF:MSG:PONG RECV,HP=1
                    55 TSM:UPL:OK
                    57 TSM:READY:ID=2,PAR=0,DIS=1
                    63 TSF:MSG:SEND,2-2-0-0,s=255,c=3,t=15,pt=6,l=2,sg=0,ft=0,st=OK:0100
                    75 TSF:MSG:READ,0-0-2,s=255,c=3,t=15,pt=6,l=2,sg=0:0100
                    86 TSF:MSG:SEND,2-2-0-0,s=255,c=0,t=17,pt=0,l=5,sg=0,ft=0,st=OK:2.1.1
                    96 TSF:MSG:SEND,2-2-0-0,s=255,c=3,t=6,pt=1,l=1,sg=0,ft=0,st=OK:0
                    2107 TSF:MSG:SEND,2-2-0-0,s=255,c=3,t=11,pt=0,l=8,sg=0,ft=0,st=OK:Humidity
                    2119 TSF:MSG:SEND,2-2-0-0,s=255,c=3,t=12,pt=0,l=3,sg=0,ft=0,st=OK:2.0
                    2129 TSF:MSG:SEND,2-2-0-0,s=0,c=0,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
                    2140 TSF:MSG:SEND,2-2-0-0,s=1,c=0,t=6,pt=0,l=0,sg=0,ft=0,st=OK:
                    2146 MCO:REG:REQ
                    2164 TSF:MSG:SEND,2-2-0-0,s=255,c=3,t=26,pt=1,l=1,sg=0,ft=0,st=OK:2
                    2220 TSF:MSG:READ,0-0-2,s=255,c=3,t=27,pt=1,l=1,sg=0:1
                    2226 MCO:PIM:NODE REG=1
                    2228 MCO:BGN:INIT OK,TSP=1
                    2 MCO:BGN:INIT NODE,CP=RNNNA--,VER=2.1.1
                    6 TSM:INIT
                    6 TSF:WUR:MS=0
                    14 TSM:INIT:TSP OK
                    16 TSM:INIT:STATID=2
                    18 TSF:SID:OK,ID=2
                    20 TSM:FPAR
                    20 TSM:FPAR:STATP=0
                    22 TSM:ID
                    24 TSM:ID:OK
                    26 TSM:UPL
                    30 TSF:MSG:SEND,2-2-0-0,s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=OK:1
                    57 TSF:MSG:READ,0-0-2,s=255,c=3,t=25,pt=1,l=1,sg=0:1
                    63 TSF:MSG:PONG RECV,HP=1
                    67 TSM:UPL:OK
                    67 TSM:READY:ID=2,PAR=0,DIS=1
                    73 TSF:MSG:SEND,2-2-0-0,s=255,c=3,t=15,pt=6,l=2,sg=0,ft=0,st=OK:0100
                    92 TSF:MSG:READ,0-0-2,s=255,c=3,t=15,pt=6,l=2,sg=0:0100
                    102 TSF:MSG:SEND,2-2-0-0,s=255,c=0,t=17,pt=0,l=5,sg=0,ft=0,st=OK:2.1.1
                    112 TSF:MSG:SEND,2-2-0-0,s=255,c=3,t=6,pt=1,l=1,sg=0,ft=0,st=OK:0
                    2121 TSF:MSG:SEND,2-2-0-0,s=255,c=3,t=11,pt=0,l=8,sg=0,ft=0,st=OK:Humidity
                    2134 TSF:MSG:SEND,2-2-0-0,s=255,c=3,t=12,pt=0,l=3,sg=0,ft=0,st=OK:2.0
                    2144 TSF:MSG:SEND,2-2-0-0,s=0,c=0,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
                    2154 TSF:MSG:SEND,2-2-0-0,s=1,c=0,t=6,pt=0,l=0,sg=0,ft=0,st=OK:
                    2160 MCO:REG:REQ
                    2164 TSF:MSG:SEND,2-2-0-0,s=255,c=3,t=26,pt=1,l=1,sg=0,ft=0,st=OK:2
                    2234 TSF:MSG:READ,0-0-2,s=255,c=3,t=27,pt=1,l=1,sg=0:1
                    2240 MCO:PIM:NODE REG=1
                    2242 MCO:BGN:INIT OK,TSP=1
                    

                    This is the sketch I use now I had to adopt it since it seemed to be for an older version of Mysensors. I'm no programmer so it might be messed up somehow :)

                    /**
                     * The MySensors Arduino library handles the wireless radio link and protocol
                     * between your home built sensors/actuators and HA controller of choice.
                     * The sensors forms a self healing radio network with optional repeaters. Each
                     * repeater and gateway builds a routing tables in EEPROM which keeps track of the
                     * network topology allowing messages to be routed to nodes.
                     *
                     * Created by Henrik Ekblad <henrik.ekblad@mysensors.org>
                     * Copyright (C) 2013-2015 Sensnology AB
                     * Full contributor list: https://github.com/mysensors/Arduino/graphs/contributors
                     *
                     * Documentation: http://www.mysensors.org
                     * Support Forum: http://forum.mysensors.org
                     *
                     * 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.
                     *
                     *******************************
                     *
                     * REVISION HISTORY
                     * Version 1.0: Henrik EKblad
                     * Version 1.1 - 2016-07-20: Converted to MySensors v2.0 and added various improvements - Torben Woltjen (mozzbozz)
                     * 
                     * DESCRIPTION
                     * This sketch provides an example of how to implement a humidity/temperature
                     * sensor using a DHT11/DHT-22.
                     *  
                     * For more information, please visit:
                     * http://www.mysensors.org/build/humidity
                     * 
                     HTU21D Humidity Sensor
                     Hardware Connections (Breakoutboard to Arduino):
                     -VCC = 3.3V
                     -GND = GND
                     -SDA = A4 (use inline 330 ohm resistor if your board is 5V)
                     -SCL = A5 (use inline 330 ohm resistor if your board is 5V)
                     */
                    
                     
                    #define MY_NODE_ID 2
                    #define MY_PARENT_NODE_ID 0
                    #define MY_PARENT_NODE_IS_STATIC
                    
                    // Enable debug prints
                    #define MY_DEBUG
                    
                    // Enable and select radio type attached 
                    #define MY_RADIO_NRF24
                    //#define MY_RADIO_RFM69
                    //#define MY_RS485
                     
                    #include "SparkFunHTU21D.h"
                    #include <MySensors.h>  
                    #include <Wire.h>
                    #include <SPI.h>
                    
                    // Force sending an update of the temperature after n sensor reads, so a controller showing the
                    // timestamp of the last update doesn't show something like 3 hours in the unlikely case, that
                    // the value didn't change since;
                    // i.e. the sensor would force sending an update every UPDATE_INTERVAL*FORCE_UPDATE_N_READS [ms]
                    //static const uint8_t FORCE_UPDATE_N_READS = 10;
                    
                    #define CHILD_ID_HUM 0
                    #define CHILD_ID_TEMP 1
                    
                    float lastTemp;
                    float lastHum;
                    uint8_t nNoUpdatesTemp;
                    uint8_t nNoUpdatesHum;
                    boolean metric = true;
                    
                    
                    void presentation()  
                    { 
                     // Send the Sketch Version Information to the Gateway                                                                                                                     
                      sendSketchInfo("Humidity", "2.0");      
                       
                     // Register all sensors to gw (they will be created as child devices)                                                                                                     
                      present(CHILD_ID_HUM, S_HUM);                                                                                                                                          
                      present(CHILD_ID_TEMP, S_TEMP);                                                                                                                                        
                     
                      //metric = getControllerConfig().isMetric;
                    }
                    
                                                                                                                                                                      
                    unsigned long SLEEP_TIME = 60000; // Sleep time between reads (in milliseconds)                                                                                             
                                                                                                                                                                                            
                                                                                                                                                                                   
                                                                                                                                                                                            
                    //Create an instance of the object                                                                                                                                          
                    HTU21D myHumidity;                                                                                                                                                         
                    
                                                                                                                                                                                                                                                                                                                                                 
                    MyMessage msgHum(CHILD_ID_HUM, V_HUM);                                                                                                                                      
                    MyMessage msgTemp(CHILD_ID_TEMP, V_TEMP);                                                                                                                                   
                                                                                                                                                                                                                                                                                                                                                                      
                    void loop()                                                                                                                                                                 
                    {                                                                                                                                                                           
                      float temperature = myHumidity.readTemperature();                                                                                                                         
                      //if (!metric) {                                                                                                                                                            
                      //    temperature = (temperature * 1.8) + 32.0;                                                                                                                             
                      //}                                                                                                                                                                         
                      send(msgTemp.set(temperature, 1));                                                                                                                                     
                    
                      float humidity = myHumidity.readHumidity();                                                                                                                               
                      send(msgHum.set(humidity, 1));                                                                                                                                         
                                                                                                                                                                                            
                      sleep(SLEEP_TIME); //sleep a bit  
                                                                                                                                                           
                    }
                    

                    Can anyone advise me on the code and the error log so I understand what's going on and what needs to be done to get it working? Thanks a lot.

                    W.

                    mfalkviddM 1 Reply Last reply
                    0
                    • M Mr_sensor

                      since I did not get these Dht11 or Dht22 working, I decided to try an other sensor type to see if that would work better.
                      So I connected a HTU21D sensor and included the library from sparkfun. Using there demo sketch I can see the sensor is working fine:

                      HTU21D Example!
                      Time:192 Temperature:20.8C Humidity:998.0%
                      Time:1318 Temperature:20.8C Humidity:47.3%
                      Time:2445 Temperature:20.7C Humidity:47.4%
                      Time:3571 Temperature:20.7C Humidity:47.4%
                      Time:4698 Temperature:20.7C Humidity:47.5%
                      Time:5824 Temperature:20.7C Humidity:47.5%
                      Time:6948 Temperature:20.7C Humidity:47.6%
                      Time:8075 Temperature:20.7C Humidity:47.6%
                      Time:9201 Temperature:20.7C Humidity:47.6%

                      But when I include the "adapted" Mysensors sketch I found here in the forum it seems the temperatures are not read or something else is wrong?

                      This is what is in the log file in a ongoing loop:

                      MCO:BGN:INIT NODE,CP=RNNNA--,VER=2.1.1
                      4 TSM:INIT
                      4 TSF:WUR:MS=0
                      12 TSM:INIT:TSP OK
                      14 TSM:INIT:STATID=2
                      16 TSF:SID:OK,ID=2
                      18 TSM:FPAR
                      18 TSM:FPAR:STATP=0
                      20 TSM:ID
                      22 TSM:ID:OK
                      22 TSM:UPL
                      28 TSF:MSG:SEND,2-2-0-0,s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=OK:1
                      47 TSF:MSG:READ,0-0-2,s=255,c=3,t=25,pt=1,l=1,sg=0:1
                      53 TSF:MSG:PONG RECV,HP=1
                      55 TSM:UPL:OK
                      57 TSM:READY:ID=2,PAR=0,DIS=1
                      63 TSF:MSG:SEND,2-2-0-0,s=255,c=3,t=15,pt=6,l=2,sg=0,ft=0,st=OK:0100
                      75 TSF:MSG:READ,0-0-2,s=255,c=3,t=15,pt=6,l=2,sg=0:0100
                      86 TSF:MSG:SEND,2-2-0-0,s=255,c=0,t=17,pt=0,l=5,sg=0,ft=0,st=OK:2.1.1
                      96 TSF:MSG:SEND,2-2-0-0,s=255,c=3,t=6,pt=1,l=1,sg=0,ft=0,st=OK:0
                      2107 TSF:MSG:SEND,2-2-0-0,s=255,c=3,t=11,pt=0,l=8,sg=0,ft=0,st=OK:Humidity
                      2119 TSF:MSG:SEND,2-2-0-0,s=255,c=3,t=12,pt=0,l=3,sg=0,ft=0,st=OK:2.0
                      2129 TSF:MSG:SEND,2-2-0-0,s=0,c=0,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
                      2140 TSF:MSG:SEND,2-2-0-0,s=1,c=0,t=6,pt=0,l=0,sg=0,ft=0,st=OK:
                      2146 MCO:REG:REQ
                      2164 TSF:MSG:SEND,2-2-0-0,s=255,c=3,t=26,pt=1,l=1,sg=0,ft=0,st=OK:2
                      2220 TSF:MSG:READ,0-0-2,s=255,c=3,t=27,pt=1,l=1,sg=0:1
                      2226 MCO:PIM:NODE REG=1
                      2228 MCO:BGN:INIT OK,TSP=1
                      2 MCO:BGN:INIT NODE,CP=RNNNA--,VER=2.1.1
                      6 TSM:INIT
                      6 TSF:WUR:MS=0
                      14 TSM:INIT:TSP OK
                      16 TSM:INIT:STATID=2
                      18 TSF:SID:OK,ID=2
                      20 TSM:FPAR
                      20 TSM:FPAR:STATP=0
                      22 TSM:ID
                      24 TSM:ID:OK
                      26 TSM:UPL
                      30 TSF:MSG:SEND,2-2-0-0,s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=OK:1
                      57 TSF:MSG:READ,0-0-2,s=255,c=3,t=25,pt=1,l=1,sg=0:1
                      63 TSF:MSG:PONG RECV,HP=1
                      67 TSM:UPL:OK
                      67 TSM:READY:ID=2,PAR=0,DIS=1
                      73 TSF:MSG:SEND,2-2-0-0,s=255,c=3,t=15,pt=6,l=2,sg=0,ft=0,st=OK:0100
                      92 TSF:MSG:READ,0-0-2,s=255,c=3,t=15,pt=6,l=2,sg=0:0100
                      102 TSF:MSG:SEND,2-2-0-0,s=255,c=0,t=17,pt=0,l=5,sg=0,ft=0,st=OK:2.1.1
                      112 TSF:MSG:SEND,2-2-0-0,s=255,c=3,t=6,pt=1,l=1,sg=0,ft=0,st=OK:0
                      2121 TSF:MSG:SEND,2-2-0-0,s=255,c=3,t=11,pt=0,l=8,sg=0,ft=0,st=OK:Humidity
                      2134 TSF:MSG:SEND,2-2-0-0,s=255,c=3,t=12,pt=0,l=3,sg=0,ft=0,st=OK:2.0
                      2144 TSF:MSG:SEND,2-2-0-0,s=0,c=0,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
                      2154 TSF:MSG:SEND,2-2-0-0,s=1,c=0,t=6,pt=0,l=0,sg=0,ft=0,st=OK:
                      2160 MCO:REG:REQ
                      2164 TSF:MSG:SEND,2-2-0-0,s=255,c=3,t=26,pt=1,l=1,sg=0,ft=0,st=OK:2
                      2234 TSF:MSG:READ,0-0-2,s=255,c=3,t=27,pt=1,l=1,sg=0:1
                      2240 MCO:PIM:NODE REG=1
                      2242 MCO:BGN:INIT OK,TSP=1
                      

                      This is the sketch I use now I had to adopt it since it seemed to be for an older version of Mysensors. I'm no programmer so it might be messed up somehow :)

                      /**
                       * The MySensors Arduino library handles the wireless radio link and protocol
                       * between your home built sensors/actuators and HA controller of choice.
                       * The sensors forms a self healing radio network with optional repeaters. Each
                       * repeater and gateway builds a routing tables in EEPROM which keeps track of the
                       * network topology allowing messages to be routed to nodes.
                       *
                       * Created by Henrik Ekblad <henrik.ekblad@mysensors.org>
                       * Copyright (C) 2013-2015 Sensnology AB
                       * Full contributor list: https://github.com/mysensors/Arduino/graphs/contributors
                       *
                       * Documentation: http://www.mysensors.org
                       * Support Forum: http://forum.mysensors.org
                       *
                       * 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.
                       *
                       *******************************
                       *
                       * REVISION HISTORY
                       * Version 1.0: Henrik EKblad
                       * Version 1.1 - 2016-07-20: Converted to MySensors v2.0 and added various improvements - Torben Woltjen (mozzbozz)
                       * 
                       * DESCRIPTION
                       * This sketch provides an example of how to implement a humidity/temperature
                       * sensor using a DHT11/DHT-22.
                       *  
                       * For more information, please visit:
                       * http://www.mysensors.org/build/humidity
                       * 
                       HTU21D Humidity Sensor
                       Hardware Connections (Breakoutboard to Arduino):
                       -VCC = 3.3V
                       -GND = GND
                       -SDA = A4 (use inline 330 ohm resistor if your board is 5V)
                       -SCL = A5 (use inline 330 ohm resistor if your board is 5V)
                       */
                      
                       
                      #define MY_NODE_ID 2
                      #define MY_PARENT_NODE_ID 0
                      #define MY_PARENT_NODE_IS_STATIC
                      
                      // Enable debug prints
                      #define MY_DEBUG
                      
                      // Enable and select radio type attached 
                      #define MY_RADIO_NRF24
                      //#define MY_RADIO_RFM69
                      //#define MY_RS485
                       
                      #include "SparkFunHTU21D.h"
                      #include <MySensors.h>  
                      #include <Wire.h>
                      #include <SPI.h>
                      
                      // Force sending an update of the temperature after n sensor reads, so a controller showing the
                      // timestamp of the last update doesn't show something like 3 hours in the unlikely case, that
                      // the value didn't change since;
                      // i.e. the sensor would force sending an update every UPDATE_INTERVAL*FORCE_UPDATE_N_READS [ms]
                      //static const uint8_t FORCE_UPDATE_N_READS = 10;
                      
                      #define CHILD_ID_HUM 0
                      #define CHILD_ID_TEMP 1
                      
                      float lastTemp;
                      float lastHum;
                      uint8_t nNoUpdatesTemp;
                      uint8_t nNoUpdatesHum;
                      boolean metric = true;
                      
                      
                      void presentation()  
                      { 
                       // Send the Sketch Version Information to the Gateway                                                                                                                     
                        sendSketchInfo("Humidity", "2.0");      
                         
                       // Register all sensors to gw (they will be created as child devices)                                                                                                     
                        present(CHILD_ID_HUM, S_HUM);                                                                                                                                          
                        present(CHILD_ID_TEMP, S_TEMP);                                                                                                                                        
                       
                        //metric = getControllerConfig().isMetric;
                      }
                      
                                                                                                                                                                        
                      unsigned long SLEEP_TIME = 60000; // Sleep time between reads (in milliseconds)                                                                                             
                                                                                                                                                                                              
                                                                                                                                                                                     
                                                                                                                                                                                              
                      //Create an instance of the object                                                                                                                                          
                      HTU21D myHumidity;                                                                                                                                                         
                      
                                                                                                                                                                                                                                                                                                                                                   
                      MyMessage msgHum(CHILD_ID_HUM, V_HUM);                                                                                                                                      
                      MyMessage msgTemp(CHILD_ID_TEMP, V_TEMP);                                                                                                                                   
                                                                                                                                                                                                                                                                                                                                                                        
                      void loop()                                                                                                                                                                 
                      {                                                                                                                                                                           
                        float temperature = myHumidity.readTemperature();                                                                                                                         
                        //if (!metric) {                                                                                                                                                            
                        //    temperature = (temperature * 1.8) + 32.0;                                                                                                                             
                        //}                                                                                                                                                                         
                        send(msgTemp.set(temperature, 1));                                                                                                                                     
                      
                        float humidity = myHumidity.readHumidity();                                                                                                                               
                        send(msgHum.set(humidity, 1));                                                                                                                                         
                                                                                                                                                                                              
                        sleep(SLEEP_TIME); //sleep a bit  
                                                                                                                                                             
                      }
                      

                      Can anyone advise me on the code and the error log so I understand what's going on and what needs to be done to get it working? Thanks a lot.

                      W.

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

                      @Mr_sensor I think you need to add

                      void setup() {
                          myHumidity.begin();
                      }
                      

                      Without that, the sensor/sensor library is not initialized.

                      (I looked at sparkfun's example sketch)

                      1 Reply Last reply
                      0
                      • M Offline
                        M Offline
                        Mr_sensor
                        wrote on last edited by Mr_sensor
                        #11

                        :) Great! That helped a lot. I Kicked that out when reading the Converting a sketch from 1.5 to 2.x article.

                        4911 TSF:MSG:SEND,2-2-0-0,s=1,c=1,t=0,pt=7,l=5,sg=0,ft=0,st=OK:20.4
                        4954 TSF:MSG:SEND,2-2-0-0,s=0,c=1,t=1,pt=7,l=5,sg=0,ft=0,st=OK:50.2
                        4962 MCO:SLP:MS=60000,SMS=0,I1=255,M1=255,I2=255,M2=255
                        4968 MCO:SLP:TPD
                        

                        Now I only have to find out what to use for mqtt to read this sensor values. Thats still not very clear to me:
                        Guess it would be something like:
                        mygateway1-out/2/2/0/0/ or 2/2/0/0/1 ?

                        Would it be possible to have something like this:

                        mygateway-out/2/2/Temperature ?

                        1 Reply Last reply
                        1
                        • M Offline
                          M Offline
                          Mr_sensor
                          wrote on last edited by
                          #12

                          Ok found out what topic is send to mqtt turned out to be:
                          mygateway1-out/2/1/1/0/1 or mygateway1-out/2/0/1/0/1

                          How to get an % and "C" to this topic value?

                          1 Reply Last reply
                          0
                          • gohanG Offline
                            gohanG Offline
                            gohan
                            Mod
                            wrote on last edited by
                            #13

                            Just use any mqtt client and subscribe to topic # , you will be able to see all messages and pick the one you are looking for

                            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


                            11

                            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