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. Hardware
  3. Temperature sensor on ESP8266

Temperature sensor on ESP8266

Scheduled Pinned Locked Moved Hardware
14 Posts 7 Posters 14.1k Views 7 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.
  • ? A Former User

    Just finished a setup with a dallas DS18b20 sensor connected directly to an ESP8266 module, connected to Domoticz using the MySensor LAN Gateway. It actually works!

    Nice to be able to use MySensors without an Arduino Pro mini and without a NRF24L01 module. Just one single ESP. Opens up new possibilities...

    DidiD Offline
    DidiD Offline
    Didi
    wrote on last edited by
    #2

    @martinus said:

    Nice to be able to use MySensors without an Arduino Pro mini and without a NRF24L01 module. Just one single ESP. Opens up new possibilities...

    Cann you share your setup please?

    if (knowledge == 0) { use BRAIN; use GOOGLE;use SEARCH; } else {make POST;}

    1 Reply Last reply
    1
    • D Offline
      D Offline
      deki
      wrote on last edited by
      #3

      Yes please share. I have bunch of 8266 left over from previous project

      1 Reply Last reply
      0
      • ? A Former User

        Just finished a setup with a dallas DS18b20 sensor connected directly to an ESP8266 module, connected to Domoticz using the MySensor LAN Gateway. It actually works!

        Nice to be able to use MySensors without an Arduino Pro mini and without a NRF24L01 module. Just one single ESP. Opens up new possibilities...

        YveauxY Offline
        YveauxY Offline
        Yveaux
        Mod
        wrote on last edited by
        #4

        @martinus said:

        It actually works!

        Great to hear man!
        Always nice to read succes stories :+1:

        http://yveaux.blogspot.nl

        1 Reply Last reply
        0
        • ? Offline
          ? Offline
          A Former User
          wrote on last edited by
          #5

          I could share stuff, but it's actually not much more than a trial sketch to see if it really works.

          The whole thing started by some user "hek" on our esp8266.nu forum stating that we do not need a dedicated gateway if we want to connect a sensor to some Home Automation controller.

          This is the topic where I also posted the demo sketch. It's just a simple combination of the GatewayESP8266 sketch and the DallasTemperatureSensor sketch.
          http://www.esp8266.nu/forum/viewtopic.php?f=6&t=427#p2144

          I'm new to MySensors. I've certainly heard about it, but never used it. All my NRF modules used with the Nodo project have been replaced with ESP modules by now. I'm using the ESP Easy firmware, but it could be interesting to see if I can migrate to MySensors if it has support for ESP modules.

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

            @martinus
            Glad to hear that if worked for you.

            @Didi
            You can taken any example sketch from the dev-branch and run it on the ESP8266.

            If you want it to run as a standalone ESP8266 sensor (without any NRF/RF69 radio attached) just remove the radio define at the top (MY_RADIO_NRF24) and as a minimum add the following defines from the GaterwayESP8266.ino:

            #define MY_ESP8266_SSID "MySSID"
            #define MY_ESP8266_PASSWORD "MyVerySecretPassword"
            #include <ESP8266WiFi.h>
            

            This will assign the node a dynamic IP from your DHCP server. You can of course set it statically as well (see GaterwayESP8266.ino for detailed configuration).

            The ESP node will run the MySensors protocol as default. If you instead want the example-sketch communicate using MQTT, you can add the following defines instead:

            #define MY_GATEWAY_MQTT_CLIENT
            
            // Set this nodes subscripe and publish topic prefix
            #define MY_MQTT_PUBLISH_TOPIC_PREFIX "mygateway1-out"
            #define MY_MQTT_SUBSCRIBE_TOPIC_PREFIX "mygateway1-in"
            
            // Set MQTT client id
            #define MY_MQTT_CLIENT_ID "mysensors-1"
            
            // Enable these if your MQTT broker requires usenrame/password
            //#define MY_MQTT_USER "username"
            //#define MY_MQTT_PASSWORD "password"
            
            // Set WIFI SSID and password
            #define MY_ESP8266_SSID "MySSID"
            #define MY_ESP8266_PASSWORD "MyVerySecretPassword"
            #include <ESP8266WiFi.h>
            

            See GatewayESP8266MQTTClient.ino for more detailed configuration options.

            Just note that I haven't verified all the external support libraries on the ESP8266, so there might be examples that won't work out of the box.

            DidiD 1 Reply Last reply
            0
            • hekH hek

              @martinus
              Glad to hear that if worked for you.

              @Didi
              You can taken any example sketch from the dev-branch and run it on the ESP8266.

              If you want it to run as a standalone ESP8266 sensor (without any NRF/RF69 radio attached) just remove the radio define at the top (MY_RADIO_NRF24) and as a minimum add the following defines from the GaterwayESP8266.ino:

              #define MY_ESP8266_SSID "MySSID"
              #define MY_ESP8266_PASSWORD "MyVerySecretPassword"
              #include <ESP8266WiFi.h>
              

              This will assign the node a dynamic IP from your DHCP server. You can of course set it statically as well (see GaterwayESP8266.ino for detailed configuration).

              The ESP node will run the MySensors protocol as default. If you instead want the example-sketch communicate using MQTT, you can add the following defines instead:

              #define MY_GATEWAY_MQTT_CLIENT
              
              // Set this nodes subscripe and publish topic prefix
              #define MY_MQTT_PUBLISH_TOPIC_PREFIX "mygateway1-out"
              #define MY_MQTT_SUBSCRIBE_TOPIC_PREFIX "mygateway1-in"
              
              // Set MQTT client id
              #define MY_MQTT_CLIENT_ID "mysensors-1"
              
              // Enable these if your MQTT broker requires usenrame/password
              //#define MY_MQTT_USER "username"
              //#define MY_MQTT_PASSWORD "password"
              
              // Set WIFI SSID and password
              #define MY_ESP8266_SSID "MySSID"
              #define MY_ESP8266_PASSWORD "MyVerySecretPassword"
              #include <ESP8266WiFi.h>
              

              See GatewayESP8266MQTTClient.ino for more detailed configuration options.

              Just note that I haven't verified all the external support libraries on the ESP8266, so there might be examples that won't work out of the box.

              DidiD Offline
              DidiD Offline
              Didi
              wrote on last edited by
              #7

              @hek said:

              @Didi
              You can taken any example sketch from the dev-branch and run it on the ESP8266.

              Thank you hek i will try it

              if (knowledge == 0) { use BRAIN; use GOOGLE;use SEARCH; } else {make POST;}

              1 Reply Last reply
              0
              • ? Offline
                ? Offline
                A Former User
                wrote on last edited by
                #8

                Just added another ESP node in the network. But the only way I could think of connecting to Domoticz was by adding another MySensors LAN gateway to the hardware section. Was this supposed to be used that way? I don't know if there's a limit on the number of gateways I can add to the system.

                Is this the way to go with using a bunch of ESP units working as a sensor?

                Or should I move over to MQTT? Does this work with the "Domoticz MQTT Client gateway with LAN interface"?

                F 1 Reply Last reply
                1
                • ? A Former User

                  Just added another ESP node in the network. But the only way I could think of connecting to Domoticz was by adding another MySensors LAN gateway to the hardware section. Was this supposed to be used that way? I don't know if there's a limit on the number of gateways I can add to the system.

                  Is this the way to go with using a bunch of ESP units working as a sensor?

                  Or should I move over to MQTT? Does this work with the "Domoticz MQTT Client gateway with LAN interface"?

                  F Offline
                  F Offline
                  flopp
                  wrote on last edited by
                  #9

                  @martinus
                  Hi
                  I have been using esp8266 for temp/hum sensors that sends the data to a php webpage.
                  I will try I later but I just reed that it seems to be possible to use same thing for Domoticz.

                  http://www.domoticz.com/wiki/Domoticz_API/JSON_URL's

                  1 Reply Last reply
                  1
                  • F Offline
                    F Offline
                    flopp
                    wrote on last edited by
                    #10

                    It works.

                    i have now tried it with a browser.

                    http://192.168.1.112:8080/json.htm?type=command&param=udevice&idx=2&nvalue=0&svalue=12

                    this is what I got from the server

                    {
                    "status" : "OK",
                    "title" : "Update Device"
                    }

                    1 Reply Last reply
                    0
                    • F Offline
                      F Offline
                      flopp
                      wrote on last edited by flopp
                      #11

                      This is my code. Tested and working fine on a ESP-01, powered from PC USB.

                      Question, shall I include the license text below?
                      "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."

                      License text copied from an example from MySensors.org

                      /*
                       * Created by Daniel Nilsson
                       *
                       * 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 - Daniel Nilsson
                       * 
                       * DESCRIPTION
                       * This sketch provides an example how to implement a Dallas OneWire temperature sensor (DS18B20 or equal) to send data to Domoticz-server (www.domoticz.com)
                       * Sleep function is disable as default
                       * Temperature value will be -555 as an indication that the sensor is not working properly, value will be -555 if one of the following criteria are met; above 80; below -100; exakt 0.00
                       */
                      
                      /* remove this line to activate
                      // ***sleep function starts here***
                      // you must connect a cable from pin 8 on ESP8266 IC to Reset pin otherwise sleep doesn't work
                      
                      extern "C" {
                      #include "user_interface.h" //for sleep
                      }
                      
                      // ***sleep function ends here***
                      */ //remove this line to activate
                      
                      #include <ESP8266WiFi.h>
                      
                      const char* ssid = "SSID"; // ***your WiFi name***
                      const char* password = "password"; // ***your WiFi password***
                      const char* server = "123.123.123.123"; // ***IP adress for Domoticz***
                      int port = 8080; // ***port for Domoticz***
                      String idx = "1"; // ***id for your sensor***
                      
                      WiFiClient client;
                      
                      #include <OneWire.h> //OneWire library
                      #include <DallasTemperature.h> // Dallas library
                      
                      #define ONE_WIRE_BUS 2 // Data wire is plugged into port 2 on the ESP
                      
                      OneWire oneWire(ONE_WIRE_BUS); // Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
                      
                      DallasTemperature sensors(&oneWire); // Pass our oneWire reference to Dallas Temperature. 
                      
                      void setup() {
                        Serial.begin(115200);
                        delay(10);
                        sensors.begin(); //start Dallas sensor
                       
                        WiFi.begin(ssid, password); // connect to WiFi
                       
                        Serial.println();
                        Serial.println();
                        Serial.print("Connecting to ");
                        Serial.println(ssid);
                       
                        WiFi.begin(ssid, password);
                       
                        while (WiFi.status() != WL_CONNECTED) {
                          delay(500);
                          Serial.print(".");
                        }
                        Serial.println("");
                        Serial.println("WiFi connected");
                       
                      }
                       
                      void loop() {
                        
                        float temp;
                        // call sensors.requestTemperatures() to issue a global temperature 
                        // request to all devices on the bus
                        Serial.print("Requesting temperatures...");
                        sensors.requestTemperatures(); // Send the command to get temperatures
                        Serial.println("DONE");
                        
                        Serial.print("Temperature for the device 1 (index 0) is: ");
                        Serial.println(sensors.getTempCByIndex(0));  
                        temp=sensors.getTempCByIndex(0);
                       
                        if (client.connect(server,port)) {
                      
                        client.print("GET /json.htm?type=command&param=udevice&idx="+idx+"&nvalue=0&svalue=");
                          if(temp>80 || temp<-100 || temp==0.00) { // limits if sensor is broken or not connected
                            client.print( "-555" ); //Bad value indication
                            }
                          else{
                            client.print( temp );
                            }
                        
                        client.println( " HTTP/1.1");
                        client.print( "Host: " );
                        client.println(server);
                        client.println( "Connection: close" );
                        client.println();
                        client.println();
                        client.stop();
                      
                        Serial.print("Temperature: ");
                        Serial.print(temp);
                        Serial.println(" degrees Celcius");
                        
                        }
                        
                        Serial.println("Waiting...");
                        delay(60000); // 60 seconds
                      }
                      
                      1 Reply Last reply
                      1
                      • B Offline
                        B Offline
                        bagou91
                        wrote on last edited by
                        #12

                        Hello,

                        Sorry for my question on this old post...

                        On Domoticz, should you create a virtual device or something else?
                        Or when the client sends the GET command, this add and update a device automatically?

                        Thank you for your answer.

                        F 1 Reply Last reply
                        0
                        • B bagou91

                          Hello,

                          Sorry for my question on this old post...

                          On Domoticz, should you create a virtual device or something else?
                          Or when the client sends the GET command, this add and update a device automatically?

                          Thank you for your answer.

                          F Offline
                          F Offline
                          flopp
                          wrote on last edited by
                          #13

                          @bagou91
                          Sorry for late answer.
                          I don't remember but after I look at the code it seems to be that you need define what IDX your device have.

                          String idx = "1"; // ***id for your sensor***
                          

                          So, yes, you need to create a virtual temperature and then put in the IDX in your sketch

                          B 1 Reply Last reply
                          0
                          • F flopp

                            @bagou91
                            Sorry for late answer.
                            I don't remember but after I look at the code it seems to be that you need define what IDX your device have.

                            String idx = "1"; // ***id for your sensor***
                            

                            So, yes, you need to create a virtual temperature and then put in the IDX in your sketch

                            B Offline
                            B Offline
                            bagou91
                            wrote on last edited by
                            #14

                            @flopp thanks you.

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


                            37

                            Online

                            11.7k

                            Users

                            11.2k

                            Topics

                            113.1k

                            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