Maak je eigen WiFi Waterthermometer (DS18B20 + Homeyduino)

Maak je eigen WiFi Waterthermometer (DS18B20 + Homeyduino)

 Bouw je eigen watertemperatuur of gewone thermometer die je via WiFi uit kunt lezen en zelfs als trigger kunt gebruiken voor Homey. 

Na lang proberen en experimenteren is het vandaag eindelijk gelukt om een zelfbouw WiFi Waterthermometer te maken. Vandaag is dit zelfbouw project eindelijk tot voltooiing gekomen, ruim twee maanden geleden was ik hier al aan begonnen maar toentertijd liep ik tegen wat problemen aan,  vooral met coderen.  Vandaag vanwege het druilige weer dit project toch maar weer opgepikt en tot mijn grote verbazing lukte het zowaar ineens.

Via Homey Insights laat Homey  straks hopelijk een mooi temperatuur verloop te zien met fluctuaties gedurende het jaar. Ook kun je op deze manier gemakkelijk bij  houden wanneer de watertemperatuur hoog genoeg is zodat de Koi eventueel gaan paaien. Deze temperatuur kun je bijvoorbeeld ook als trigger instellen in Homey zodat je een berichtje ontvang op mijn telefoon wanneer het zo ver is.

Dit project na te maken kost je hooguit 15 minuten van je tijd en met totale kosten van amper € 5,- inclusief bezorging, slaat het ook geen deuk in je budget.

Hieronder lees je wat je nodig hebt en hoe je het aansluit.

Normale thermometer of thermometer met hygrometer

Met onderstaande code kun je ook een normale thermometer maken, volg dan alle stappen zoals hieronder beschreven, op het in het water gooien na dan. Mocht je liever een thermometer en luchtvochtigheidssensor (hygrometer) in één bouwen? Lees dan hier verder. 

De WiFi Waterthermometer hangt in de plantenbak en is op Homey of telefoon uit te lezen. | Huisvanvandaag.nl
Vijver WiFi waterthermometer die via Homey uit te lezen is
Een overzicht van alle Homeyduino projecten, vind je hier.

De benodigdheden:

Geen tijd of geduld om op levering uit China te wachten? Conrad heeft het ook en levert direct vanuit Nederland!

Ook nodig maar enkel op de boel eenmalig te configureren, een computer of laptop met daarop geïnstalleerd:

 

 

ESP8266 ESP-12 NodeMCU Lua WiFi

 

AliExpress.com Product – WeMos D1 mini , WiFi board  met ESP8266 intergratie  + 32Mb flash

 

DS18b20 Waterbestendige DS18b20  temperatuur sensor gevonden opAliExpress.com Product  | Thuisbezrogd en al voor nog geen € 1,-

 

5 stuks Soldeerloze Prototype Breadboard 170 Tie-points PCB Test Board – Gevonden op AliExpress.com | Thuis bezorgd en al voor €1,60 

 

100PCS 1/4W Watt 10K ohm 10K Metal Film Resistor 0.25W 1% ROHS High Quality  – Gevonden op AliExpress.com | Gratis thuisbezorgd voor nog geen € 0,63 

 

 

Aansluiten

Volg onderstaand schema op de sensor aan te sluiten aan je board. Onderstaand plaatje ie een Arduino Uno maar aansluiten op een ESP8266 NodeMCU  of D1 Mini is nagenoeg hetzelfde, voltage werkt ook op 3.3V.

 

Aansluitschema DS18B20 sensor op Arduino board | Huisvanvandaag.nl
Aansluitschema DS18B20 sensor op Arduino board gaat nagenoeg hetzelfde op een ESP8266

 

DS18B20 sensor aangesloten en getest | Huisvanvandaag.nl
DS18B20 sensor aangesloten en klaar om te testen

Code 

Onderstaand de code zoals ik deze zelf heb samengesteld uit reeds beschikbare code voor Arduino en Homeyduino. Het werkt naar behoren maar aangezien ik, als leek, zelf weinig tot geen ervaring met coderen heb kan dit hoogstwaarschijnlijk efficiënter.

Mocht je deze kennis wel hebben en suggesties hebben, laat het me dan weten!  Uploaden gaat via Arduino IDE, mocht je hier niet bekend mee zijn lees dan hier voor een uitgebreide handleiding. Zorg dat je bij instellingen in Arduino IDE het juiste board hebt geselecteerd en dat je op 115200 baud de code upload.  Mocht je ESP8266 board niet werken dan kun je proberen deze eerste te flashen met de NodeMcu Flasher.

 

// Code aangepast voor Homeyduino door Domoticablog https://huisvanvandaag.nl. 
// Kijk op de site voor meer Homeyduino en andere Smart Home gerelateerde posts.

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <Homey.h>
#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS D3 // Indien dit niet werkt D3 vervangen door 0, dit is het GPIO pin nummer

OneWire oneWire(ONE_WIRE_BUS);

DallasTemperature sensors(&oneWire);

 float Celcius=0;
 float Fahrenheit=0;
 
 void wifi() {
  if (WiFi.status() != WL_CONNECTED) {
    WiFi.begin("<SSID>", "<PASSWORD>");
    uint8_t timeout = 30;
    while (WiFi.status() != WL_CONNECTED) {
      delay(500);
      Serial.print(".");
      if (timeout<1) break;
    }
    if (WiFi.status() == WL_CONNECTED) {
      //Print IP address
      Serial.print("Verbonden met WiFi! (");
      Serial.print(WiFi.localIP());
      Serial.println(")");
    }
  }
}

void setup(void){
  Serial.begin(115200); // indien niet werkt, veranderen in 9600
  Homey.begin("SENSOR NAAM"); // vul hier de door jouw gewenste naam voor de sensor in
  Homey.setClass("sensor");
  Homey.addCapability("measure_temperature");
    }

void loop(void)
{ 
  wifi();
  Homey.loop();
 // unsigned long currentMillis = millis();
  sensors.requestTemperatures(); 
  Celcius=sensors.getTempCByIndex(0);
  Fahrenheit=sensors.toFahrenheit(Celcius);
  Serial.print(Celcius);
  Serial.print (" C ");
  Homey.setCapabilityValue("measure_temperature", (int) Celcius); 
  delay(1000);
}
WiFi (Water)Thermometer

 

Testen

Nadat het je gelukt is om de code te uploaden gaan we deze meteen testen. Hang de sensor in een glas water en open de Seriële Monitor in Arduino IDE, klik op Hulpmiddelen en dan Seriële Monitor of sneltoets CTRL+SHIFT+M.

Vervolgens opent er een scherm waarop je de waardes van de sensor uit kunt lezen. Zie je waardes die niet lijken te kloppen zoals bijvoorbeeld -126 of iets dergelijks dan moet de code even opnieuw uploaden.

 

Hier lees je de waardes van je zojuist gemaakte sensor uit. | Huisvanvandaag.nl
Hier lees je de waardes van je zojuist gemaakte sensor uit.

 

Homeyduino sensoren koppelen in Homey 2.0? Hoe je dat doet lees je hier!

 

Onderstaande manier geldt enkel voor Homey 1.0:
Klik op de + en vervolgens op Homeyduino om een nieuwe sensor toe te voegen | Huisvanvandaag.nl
Klik op de + en vervolgens op Homeyduino om een nieuwe sensor toe te voegen.

 

Kies de juiste sensor | Huisvanvandaag.nl
Kies de juiste sensor en klik op volgende

 

Als alles goed is gegaan verschijnt nu de sensor en kun je deze dus ook via Homey uitlezen | Huisvanvandaag.nl
Als alles goed is gegaan verschijnt nu de sensor en kun je deze dus ook via Homey uitlezen

 

DS18B20 sensor in doos bij de vijver | Huisvanvandaag.nl
Nu de boel binnen is getest en werkt, word het tijd om de boel buiten te bevestigen.

 

DS18B20 sensor in dichte doos | Huisvanvandaag.nl
DS18B20 sensor in (spatwater?)dichte doos bij vijver met de voeler in het water van de plantenbak.

 

En Voilà 

Je zelf gemaakte Wifi Waterthermometer is nu klaar en kan overal ter wereld via internet uitgelezen worden of desgewenst zelfs als trigger gebruikt worden in je Homey flows. Zoals hierboven al aangegeven gebruik ik hem voor het uitlezen van de vijver. Wat voor toepassingen kan jij bedenken voor deze handige WiFi thermometer, laat het me weten.

 

De WiFi Waterthermometer hangt in de plantenbak en is op Homey of telefoon uit te lezen. | Huisvanvandaag.nl
De WiFi Waterthermometer hangt links achter in de plantenbak en is via Homey of  telefoon uit te lezen.

 

Mike | Huisvanvandaag

5 reacties op “Maak je eigen WiFi Waterthermometer (DS18B20 + Homeyduino)

  1. Hoi. Ik heb een (zonne) boiler met 3 temp buizen waar een ds18b20 sensor in kan. Ik heb de bestaande opbouw chinese habbiwabbi thermostaat verwijderd en nu bezig om aan de hand van jouw code zelf een thermostaat te maken (3 voudig uitleesbaar met sensor onder warmte element, 1 erboven en 1 helemaal bovenin.) Op basis van 1, 2 of 3 sensoren is dan de temperatuur van de boiler te sturen via de homey. Dit om zo te kunnen regelen dat wanneer mijn zonnepanelen genoeg opwekken dat dan de boiler aangaat. De vermogenssom (ook uit homey) van mijn 2 omvormers bepalen dan de boiler aan uit status. De boiler trekt max 1600watt. Loggen zal uitwijzen wat de meest efficiënte ‘stookmethode’ is.

    1. Hey Gijs,

      Leuk dat je op m’n site terecht bent gekomen en klinkt als een mooi project! Laat me zeker even weten of het gelukt is! Of als je ergens niet helemaal aan uit komt wil ik altijd graag met je meedenken. Ben namelijk zelf ook aan het overwegen een zonneboiler aan te schaffen.

      Wat ik je wel wil meegeven is op voorhand goed te testen of dat Homey bij het gebruik van meerdere sensoren van hetzelfde type, de waarde per sensor uitleest, of hier een gemiddelde van pakt.
      Hier liep ik zelf namelijk tegenaan toen ik meerdere DHT11 sensoren gebruikte.

  2. Beste,

    Is het mogelijk om meerdere temperatuursensoren te gebruiken op 1 Wemos D1 bordje? Ik wil graag de verwarming loggen en heb daarvoor meerdere temp sensoren nodig namelijk.

    Ik hoor graag van u.

    Met vriendelijke groeten,

    Daniel.

    1. Beste Daniel,

      Kan het zelf even niet testen wegens een gebrek aan dergelijke sensoren, maar probeer dit eens:

      // Code aangepast voor Homeyduino door Domoticablog https://huisvanvandaag.nl.
      // Kijk op de site voor meer Homeyduino en andere Smart Home gerelateerde posts.

      #include
      #include
      #include
      #include
      #include

      #define ONE_WIRE_BUS1 D3 // Pin D3
      #define ONE_WIRE_BUS2 D0 // Pin D0

      OneWire oneWire1(ONE_WIRE_BUS1);
      OneWire oneWire2(ONE_WIRE_BUS2);

      DallasTemperature sensors(&oneWire);

      float Celcius=0;
      float Fahrenheit=0;

      void wifi() {
      if (WiFi.status() != WL_CONNECTED) {
      WiFi.begin(““, ““);
      uint8_t timeout = 30;
      while (WiFi.status() != WL_CONNECTED) {
      delay(500);
      Serial.print(“.”);
      if (timeout<1) break;
      }
      if (WiFi.status() == WL_CONNECTED) {
      //Print IP address
      Serial.print("Verbonden met WiFi! (");
      Serial.print(WiFi.localIP());
      Serial.println(")");
      }
      }
      }

      void setup(void){
      Serial.begin(115200); // indien niet werkt, veranderen in 9600
      Homey.begin("SENSOR NAAM"); // vul hier de door jouw gewenste naam voor de sensor in
      Homey.setClass("sensor");
      Homey.addCapability("measure_temperature");
      }

      void loop(void)
      {
      wifi();
      Homey.loop();
      // unsigned long currentMillis = millis();
      sensors.requestTemperatures();
      Celcius=sensors.getTempCByIndex(0);
      Fahrenheit=sensors.toFahrenheit(Celcius);
      Serial.print(Celcius);
      Serial.print (" C ");
      Homey.setCapabilityValue("measure_temperature", (int) Celcius);
      delay(1000);
      }

      Laat je even weten of het gewerkt heeft?

      Mvg,

      Mike

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Aanbevolen
De Google Home Mini, het kleine broertje van de Google Home speaker en hoewel ze…
Translate »