Wifi temperaturmåler

Amarillo

Norbrygg-medlem
Ja, men da må du legge inn navnet og passordet for nettet du deler fra telefonen inn i koden, da skal det virke.
 

Amarillo

Norbrygg-medlem
Jeg fikk opprinnelig ikke min og max til å fungere. Trykket tilfeldigvis på resett, så fungerte de plutselig.

Regner med at det skyldes at koden sjekker for temperaturforandringer. Ved første start av Blynk, og hvis temperaturen er helt stabil vil det ikke bli lagt noe tall i variablene, og dermed heller ikke i displayene. Så det vil komme av seg selv hvis den får stå på en stund... trur eg.

Jeg får ofte en måling på 85 grader når jeg plugger den inn, det kan skyldes den strømforsyninga jeg bruker, så jeg må som regel resette max/min hver gang jeg starter den.

Det er forresten enkelt å få den til å vise to desimaler, for den som ønsker det. I innstillingene kan man velge antall desimaler i 'Label'. Antall nummertegn (#) bestemmer antall desimaler.

received_285281892309043.png received_2229578130662781.png


Du fikk tydeligvis bibliotekene i Arduino IDE til å fungere? Du hadde dem kanskje liggende allerede du også?
 
Sist redigert:

msevland

Sentralstyre
Den endret temperatur i hovedgraf, men min/max endret seg ikke over flere minutter. Bare et tips til andre :)
Min Blynk ble lastet ned på en maskin som ikke har vært aktiv på to år :)
Har brukt A IDE i flere år, så det gikk naturligvis greit. God instruksjon
 

msevland

Sentralstyre
Jeg har kost meg masse med Blynk i helgen... og har laget en versjon som bruker 4 temperatursensorer. Det er fremdeles koden til @Amarillo som ligger i bunn. Dette er kun er 'fork' / forgrening.
Siden jeg trengte flere Virtual pins, har jeg flyttet litt på dem. Dette fremkommer øverst i koden / info
Denne tar utgangspunkt i min egen Templogger, som også bruker D4 / GPIO2 og DS18B20 sensor. HW er derfor 100% kompatibel (templogg.no).
Siden jeg ikke kommer til å bruke Blynk fremover, har jeg ikke kjøpt mulighet for flere widgets / knapper / 'ting'. Den viser derfor kun 4 målere og min/max temp. Jeg måtte derfor droppe kalibrering og nullstilling siden jeg gikk tom for 'energy balance'.
Koden er satt opp slik at dersom det er 4 sensorer, måles alle - og max/min tar den høyeste/laveste av dem. Dersom det er færre sensorer, vil dem som mangler ha samme temperatur som sensor #1. Selv om koden ikke sender data, vil Blynk lese -127 graderC dersom den ikke får data på en sensor den forventer er der. Max/min fungerer derfor helt strålende slik det nå er satt opp.
Jeg har også lagt inn en liten kode slik at man kan se hvor mange sensorer som enheten gjenkjenner, og den sender også info til Seriell Monitor i Arduino IDE.
Den koden jeg har lagt inn er dokumentert i selve koden slik at det er lettere for alle å lese / endre den.
Igjen takk til @Amarillo for en flott tråd og bruksanvisning.


Kode:
/**************************************************************
* Main code made by @Amarillo
*
* Hardware model : WeMos D1 mini (in Blynk)
* DS18B20 signal connected to D4 / GPIO 2
**************************************************************
* Blynk is a platform with iOS and Android apps to control
* Arduino, Raspberry Pi and the likes over the Internet.
* You can easily build graphic interfaces for all your
* projects by simply dragging and dropping widgets.
*
*   Downloads, docs, tutorials: http://www.blynk.cc
*   Blynk community:            http://community.blynk.cc
*   Social groups:              http://www.fb.com/blynkapp
*                               http://twitter.com/blynk_app
* Blynk library is licensed under MIT license
* This example code is in public domain.
*
**************************************************************
* This example runs directly on ESP8266 chip / WeMos D1 mini
* Change WiFi ssid, pass, and Blynk auth token to run :)
*
* Blynk virtual pins
* V1 - first sensor
* V2 - second sensor
* V3 - third sensor
* V4 - forth sensor
* V5 - minTemp
* V6 - maxTemp
* V7 - reset button
* V8 - Calibration
* V9 - # of sensors / devices
*
* If less than 4 sensors are connected, they simulate sensor # 1 / same temperature
**************************************************************/

#include <DallasTemperature.h>
#include <BlynkSimpleEsp8266.h>;
#define ONE_WIRE_BUS 2                                                                        // DS18B20 pin to GPIO2 - on WeMos this is D4

const char* ssid =        "SSID";
const char* wifiPassord = "yourPWD";
const char  auth[] =      "yourBlynkAuthToken3b20681bdb54c8";
float  temperatur1, temperatur2, temperatur3, temperatur4;
float  kalibrering, maxTemp, minTemp;
int    timer1, start;
byte   numberOfDevices;
BlynkTimer timer;

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

BLYNK_WRITE(V7) {
  if (param.asInt()) {
    start = millis();
  } else {
    if (millis() - start > 1000) {
      maxTemp = 0;
      minTemp = 80;
      Blynk.virtualWrite(5, 0);               // Sett minTemp (V5) to 0
      Blynk.virtualWrite(6, 0);               // Sett maxTemp (V6) to 0
    }
  }
}

BLYNK_WRITE(V8) {
  kalibrering = param.asFloat();
}

void setup() {
  Serial.begin(115200);
 
// DS18B20
  sensors.begin();                                                                            // Start up the sensors library
  sensors.setResolution(12);                                                                  // Mode Resol Conversion time - 9 bits 0.5°C 93.75 ms - 10 bits 0.25°C 187.5 ms - 11 bits 0.125°C 375 ms - 12 bits 0.0625°C 750 ms
  sensors.requestTemperatures();                                                              // Get temperature
  numberOfDevices = sensors.getDeviceCount();                                                 // Counting DS18B20 devices

  Blynk.begin(auth, ssid, wifiPassord);
  while (Blynk.connect() == false) {}
  Blynk.syncAll();
  timer1 = timer.setInterval(5000, hentTemp);                                                 // Gets temp every 5 sec.
}

void loop() {
  Blynk.run();
  timer.run();
}

void hentTemp() {
  sensors.requestTemperatures();                                                              // Gets all sensor values
  Blynk.virtualWrite(9, numberOfDevices);                                                     // Sends # of sensors to Virtual pin V9
  Serial.print("\nNo of sensores: "); Serial.println(numberOfDevices);                        // Writes # of sensors to  Serial Monitor (Arduino IDE)

  temperatur1 = (sensors.getTempCByIndex(0));                                                 // Get temp from sensor 1
    Blynk.virtualWrite(1, temperatur1);                                                       // Write temp from sensor 1 to Blynk
    if (temperatur1 < minTemp) { minTemp = temperatur1; Blynk.virtualWrite(5, minTemp);  }    // Update minTemp if temp is lower
    if (temperatur1 > maxTemp) { maxTemp = temperatur1; Blynk.virtualWrite(6, maxTemp);  }    // Update maxTemp if temp is higher
    Serial.print("Temp1: "); Serial.println(temperatur1);                                     // Print temp to Serial Monitor (Arduino IDE)

  if (numberOfDevices >= 2) {                                                                 // Runs if 2 sensors
    temperatur2 = (sensors.getTempCByIndex(1));                                               // Get temp from sensor 2
    Serial.print("Temp2: "); Serial.println(temperatur2);                                     // Print temp to Serial Monitor (Arduino IDE)
    } else { temperatur2 = (sensors.getTempCByIndex(0)); }                                    // If no second sensor, read from sensor #1 to avoid error -127°C
    Blynk.virtualWrite(2, temperatur2);
    if (temperatur2 < minTemp) { minTemp = temperatur2; Blynk.virtualWrite(5, minTemp);  }
    if (temperatur2 > maxTemp) { maxTemp = temperatur2; Blynk.virtualWrite(6, maxTemp);  }

  if (numberOfDevices >= 3) {                                                                 // Runs if 3 sensors
    temperatur3 = (sensors.getTempCByIndex(2));
    Serial.print("Temp3: "); Serial.println(temperatur3);
    } else { temperatur3 = (sensors.getTempCByIndex(0)); }
    Blynk.virtualWrite(3, temperatur3);
    if (temperatur3 < minTemp) { minTemp = temperatur3; Blynk.virtualWrite(5, minTemp);  }
    if (temperatur3 > maxTemp) { maxTemp = temperatur3; Blynk.virtualWrite(6, maxTemp);  }

  if (numberOfDevices >= 4) {                                                                 // Runs if 4 sensors
    temperatur4 = (sensors.getTempCByIndex(3));
    Serial.print("Temp4: "); Serial.println(temperatur4);
    } else { temperatur4 = (sensors.getTempCByIndex(0)); }
    Blynk.virtualWrite(4, temperatur4);
    if (temperatur4 < minTemp) { minTemp = temperatur4; Blynk.virtualWrite(5, minTemp);  }
    if (temperatur4 > maxTemp) { maxTemp = temperatur4; Blynk.virtualWrite(6, maxTemp);  }
}
 

gle1

Norbrygg-medlem
Det var raskt levert! Så ikke du på den i forrige uke?

Det bilde du la ut sammen med koden i forrige innlegg, hvilket oppsett er det? Så lite og snedig ut. Har du deleliste/oppskrift?

Sent fra min SM-G950F via Tapatalk
 

msevland

Sentralstyre
Ting via Tindie går hurtig. 10 dager fra bestilling til postkasse [emoji4]
Mht oppsettet over, er det samme som jeg har gjengitt via http://templogg.no
Den bygger på en WeMos D1 mini, eller en ESP8266 v1
Ds18B20 leveres med Jack (hodetelefon) plug. Bruker en standard hodetelefonsplitter når jeg trenger flere sensorer
Søker du på nettet finner du skall / box for 3D utskrift. Mine inngår som del av Templogg produktet og kan derfor ikke deles [emoji4]
Har 5-6 prosjekter i pipeline, så jeg får se når jeg starter på trigBoard’et
 

LarsUlv

Fylkesstyre
Er det noen som programmerer disse kortene på mac?
Jeg sliter voldsomt med å få NodeMCU kortet til å registrer seg på en port.
Jeg FÅR kontakt med Arduino UNO kortet mitt, men jeg husker at det var en lang vei å gå der også for at kortet/porten skulle dukke opp.

Jeg sliter både på High Sierra og på Mojave.
Noen som har tips?
 
Sist redigert:

Stein

Norbrygg-medlem
Hadde samme problemet på PC'n, men det løste seg da jeg fikk lastet ned og installert driveren for node mcu.
Ellers må jeg berømme både Amarillo og Morten Sevland for at de vil dele sine kunnskaper med oss andre. Det var greit å sette opp Blynk, og frydefullt å se at alt fungerte som det skulle.
 

LarsUlv

Fylkesstyre
Jeg har nok allerede prøvd ut den driveren på den ene maskinen uten hell.

Det kan være USB kabelen som er problemet, jeg måtte teste mange forskjellig kabler før jeg fikk stabil kontakt med Arduino UNO kortet.
Det gikk nok mange timer i feilsøking på det kortet før jeg tilfeldigvis byttet USB kabelen.
Den kabelen passer dessverre ikke på NodeMCU kortet. (ulik USB-kontakt).

jeg skal prøve med oppdatert driver på den andre maskinen når jeg får tid, for der ser det ut som at maskinen i alle fall reagerer når USB kabelen blir satt inn.
 

gle1

Norbrygg-medlem
Jeg har nok allerede prøvd ut den driveren på den ene maskinen uten hell.

Det kan være USB kabelen som er problemet, jeg måtte teste mange forskjellig kabler før jeg fikk stabil kontakt med Arduino UNO kortet.
Det gikk nok mange timer i feilsøking på det kortet før jeg tilfeldigvis byttet USB kabelen.
Den kabelen passer dessverre ikke på NodeMCU kortet. (ulik USB-kontakt).

jeg skal prøve med oppdatert driver på den andre maskinen når jeg får tid, for der ser det ut som at maskinen i alle fall reagerer når USB kabelen blir satt inn.
Jeg har hatt mange problem med Mac og kinadingser/kort. Bla. så får jeg "bluescreen" når jeg kobler til Wemos D1 kortene på Macen, men på Windows så går det fint.
 
Velg menyen 'Tools' -> 'Board:' -> 'NodeMCU 1.0 (ESP12-E Module)'

Hei!
Prøvde meg på å lage denne modulen. Bygging er ikke noe problem, men jeg får ikke kompilert. En av flere feilmeldinger er denne:
"#error This code is intended to run on the ESP8266 platform! Please check your Tools->Board setting."
Problemet er at jeg ikke finner "NodeMCU 1.0 (ESP12-E Module)" i lista under "Verktøy ->kort". Lista her er betydelig kortere enn den Amarillo har bilde av i nevnte post!
Lasta forøvrig ned og installerte alt i henhold til oppskrifta, men ser at jeg har Arduino ver. 1.8.7.
Noen som har forslag til løsning?
 
Se der ja, da var ikke esp8266 installert som standard i Arduino IDE. Fant en guide som viser hvordan du gjør det. Når jeg tenker meg om så gjorde jeg det samme selv en gang i en fjern fortid. :rolleyes:

https://randomnerdtutorials.com/how-to-install-esp8266-board-arduino-ide/

Tusen takk for hjelp og for en utfyllende beskrivelse!
På tross av dette så dukker det opp disse feilmeldingene når jeg prøver å kompilere:

" In file included from C:\Users\Bruker\Documents\Arduino\libraries\MAX31850_DallasTemp/DallasTemperature.h:22:0,
from C:\Users\Bruker\Documents\Arduino\WiFi_nodeMCU\WiFi_nodeMCU.ino:1:

C:\Users\Bruker\Documents\Arduino\libraries\tempsens/OneWire.h:108:2: error: #error "Please define I/O register types here"
#error "Please define I/O register types here"

^
exit status 1
Error compiling for board NodeMCU 1.0 (ESP-12E Module). "

Noen tips til løsning?
 

Amarillo

Norbrygg-medlem
Hmm, mulig du må installere et bibliotek til som heter OneWire.
Gå til 'Sketch' -> 'Include Library' -> 'Manage Libraries...' og skriv onewire i søkefeltet.
Installer 'OneWire by Jim Studt'

Lukk Arduino IDE, start igjen og prøv å installere på nytt, håper feilmeldingene da er borte.
 

Kjell Magne Hjelle

Fylkesstyre
Arduino:1.8.7 (Windows 10), TD: 1.44, Kort"NodeMCU 1.0 (ESP-12E Module), 80 MHz, Flash, 4M (1M SPIFFS), v2 Lower Memory, Disabled, None, Only Sketch, 115200"

Skissen bruker 269696 bytes (25%) av program lagrings minnet. Maks er 1044464 bytes
Globale variabler bruker 30940 bytes (37%) av dynamisk minne, som etterlater 50980 bytes til lokale variabler. Maks er 81920 bytes.
warning: espcomm_sync failed
error: espcomm_open failed
error: espcomm_upload_mem failed
error: espcomm_upload_mem failed

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
 

Kjell Magne Hjelle

Fylkesstyre
Arduino:1.8.7 (Windows 10), TD: 1.44, Kort"NodeMCU 1.0 (ESP-12E Module), 80 MHz, Flash, 4M (1M SPIFFS), v2 Lower Memory, Disabled, None, Only Sketch, 115200"

Skissen bruker 269696 bytes (25%) av program lagrings minnet. Maks er 1044464 bytes
Globale variabler bruker 30940 bytes (37%) av dynamisk minne, som etterlater 50980 bytes til lokale variabler. Maks er 81920 bytes.
warning: espcomm_sync failed
error: espcomm_open failed
error: espcomm_upload_mem failed
error: espcomm_upload_mem failed

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

Fikk det til no. Måtte legge inn drivarane manuelt. https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers
 
Topp