Sida 2 av 2
Re: DIY Temperatur reporter
Postat: 06 apr 2018, 23:23
av Thief
Nu är jag i "Beta" stadiet med mitt lilla projekt
Har fått det att fungera som jag vill
D1:an kopplar sig mot wifi och när man "surfar" till den med ddns adressen så visas temperaturen i webbläsaren.
Och det fungerar även utifrån.
Återstår att rensa bort fahrenheit och annat skräp från koden, men jag är överlycklig att jag kommit så långt med mina usla kunskaper
larky, jag pm:ar addressen till dig, om du har tid så kolla att det funkar.
Nu återstår att maila till supporten att de ändrar rapporteringssätt.
Re: DIY Temperatur reporter (bilder)
Postat: 07 apr 2018, 22:07
av Thief
Då är allt klart, och loggningen på temperatur.nu har fungerat felfritt i redan 8 timmar
Stort tack till larky för hans hjälp!
Delarna: Wemos D1 Mini Pro
https://www.m.nu/esp8266/d1-mini-pro (går absolut bra med "ej pro" versionen)
Var bara först rädd att Wemosen har kort räckvidd på wifit, (möjlighet till extern antenn på pro-versionen) men nej den slår min 7000kr mobil på räckvidd!
DS18B20 sensor
https://www.m.nu/komponenter-1-wire/1wi ... or-ds18b20
Lådorna är bara billiga kopplingsdosor för ute bruk.
Wemosen är verkligen toppen att använda till liknande projekt.
När den är programmerad så är den helt underhållsfri. Plugga in strömsladden så är det klart.
Den ansluter till wifi automatiskt, återuppkopplar om nätet går ner.
Samma om strömmen går.
Den som vill komma igång med Wemos D1 rekommenderar jag använda programmet Arduino IDE.
https://wiki.wemos.cc/tutorials:get_sta ... in_arduino
Bifogar lite bilder från "mini" projektet..

- Valde att löda motståndet under kortet då det var enklast så.

- Hittade en gammal telefonsladd som funkar bra eftersom kabellängden är bara 1.5 meter.
DS18B20 lödd fast, och lite krympslang på.

- D4 pinnen tänkte jag välja först eftersom den ligger närmast jord och +5V och skulle då kunna använt en kontakt från en gammal datorfläkt. men sen hävdar vissa att den pinnen redan har 10K pull-up resistor inbyggt och kan skapa problem, så det blev D3 istället.

- Färdigt! Det var ett självklart val att ha sensorn och Wemosen i separata lådor eftersom all elektronik genererar värme och någon extra värme vill man ju inte ha om man ska mäta utetemperatur. Efteråt borrade jag ca. 30st 2mm hål i sensorboxen på sidorna och undertill för bättre luftcirkulation.
Re: DIY Temperatur reporter (bilder)
Postat: 22 dec 2018, 12:09
av Thief
Här är koden till reportern:
Fyll i wifi SSID och lösenord
Glöm inte att ändra GPIO pin i koden om du inte använder samma som jag, D3 (se bild i tidigare inlägg).
Ip adressen får den automatiskt av din routers dhcp.
Kod: Markera allt
#include <ESP8266WiFi.h>
#include <OneWire.h>
#include <DallasTemperature.h>
const char* ssid = "DITT WIFI NAMN HIT";
const char* password = "DITT WIFI LÖSENORD HIT";
// Data wire is plugged into pin D3 on the ESP8266 12-E - GPIO 0
#define ONE_WIRE_BUS 0
// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature DS18B20(&oneWire);
char temperatureCString[7];
// Create an instance of the server
// specify the port to listen on as an argument
WiFiServer server(8020);
// only runs once on boot
void setup() {
// Initializing serial port for debugging purposes
Serial.begin(115200);
delay(10);
DS18B20.begin(); // IC Default 9 bit. If you have troubles consider upping it 12. Ups the delay giving the IC more time to process the temperature measurement
// Connect to WiFi network
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");
// Starting the web server
server.begin();
Serial.println("Web server running. Waiting for the ESP IP...");
delay(10000);
// Print the IP address
Serial.println(WiFi.localIP());
}
void getTemperature() {
float tempC;
do {
DS18B20.requestTemperatures();
tempC = DS18B20.getTempCByIndex(0);
dtostrf(tempC, 2, 2, temperatureCString);
delay(100);
} while (tempC == 85.0 || tempC == (-127.0));
}
// runs over and over again
void loop() {
// Listenning for new clients
WiFiClient client = server.available();
if (client) {
Serial.println("New client");
// bolean to locate when the http request ends
boolean blank_line = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
if (c == '\n' && blank_line) {
getTemperature();
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println();
// your actual web page that displays temperature
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.println("<head></head><body><h1>");
client.println(temperatureCString);
client.println("</body></html>");
break;
}
if (c == '\n') {
// when starts reading a new line
blank_line = true;
}
else if (c != '\r') {
// when finds a character on the current line
blank_line = false;
}
}
}
// closing the client connection
delay(1);
client.stop();
Serial.println("Client disconnected.");
}
}