Wemos temperatuur binnen en buiten
7 berichten
• Pagina 1 van 1
Wemos temperatuur binnen en buiten
hallo ik wil het volgende maken binnen een Wemos met scherm waar info op komt, buiten een Wemos met een temp sensor en deze waarde wil ik op de eerste Wemos met scherm weergeven.hoe doe ik dit? moet de een een server zijn en de andere een client. of kan ik de buiten Wemos een webpage laten generen waar de temp opstaat en de binnen Wemos daar laten kijken en de waarde er af halen? ik weet niet goed hoe ik dit doe hebben jullie ideeën? of zijn er nog andere mogelijkheden?
graag feedback!
graag feedback!
Advertisement
- FonzieBonzo
- Berichten: 118
- Geregistreerd: 01 Okt 2015, 11:54
- Woonplaats: Castricum
Re: Wemos temperatuur binnen en buiten
Hoi Olan,
Wat je ipv buiten iets ophangen is gebruik maken van https://openweathermap.org/api
Deze services is gratis en kun je instellen op je postcode om vervolgens eens in de zoveel tijd de buitentemp in JSON formaat op te halen.
Werkt hier al jaren prima.
Gr,
Fonzie
Wat je ipv buiten iets ophangen is gebruik maken van https://openweathermap.org/api
Deze services is gratis en kun je instellen op je postcode om vervolgens eens in de zoveel tijd de buitentemp in JSON formaat op te halen.
Werkt hier al jaren prima.
Gr,
Fonzie
Re: Wemos temperatuur binnen en buiten
Met een Wemos is een prima oplossing te maken.
De "buiten" Wemos als server en de "binnen" Wemos die bijvoorbeeld elke minuut ( of 5 minuten) actuele data vraagt via http (dus als client) aan de "buiten" Wemos.
Kijk daarbij ook naar de mogelijkheden van OTA (sketch update via Wifi).
Ik heb een soortgelijke oplossing gemaakt waarbij een Wemos de data verzamelt van een PV omvormer en van de elektra meter.
Naast deze info wordt er via http door deze Wemos ook weer gegevens verzamelt via mijn eerder genoemde link.
https://weerlive.nl/delen.php
Ik heb als display geen tweede Wemos maar een "oude" GSM telefoon.
Via een Webpagina op de Wemos met javascript wordt e.e.a. grafisch weergegeven op deze GSM.
Maar met een tweede Wemos met een daaraan gekoppeld display is ook veel mogelijk.
Ik heb zelf nog wel een wens; een Wemos voor mijn gasmeter, die staat helaas buiten mijn Wifi mogelijkheden en vervelender ook ver van een stopcontact.
Voor een Wemos zonder stopcontact heb ik nog geen haalbare oplossing.
m.v.g Nico
De "buiten" Wemos als server en de "binnen" Wemos die bijvoorbeeld elke minuut ( of 5 minuten) actuele data vraagt via http (dus als client) aan de "buiten" Wemos.
Kijk daarbij ook naar de mogelijkheden van OTA (sketch update via Wifi).
Ik heb een soortgelijke oplossing gemaakt waarbij een Wemos de data verzamelt van een PV omvormer en van de elektra meter.
Naast deze info wordt er via http door deze Wemos ook weer gegevens verzamelt via mijn eerder genoemde link.
https://weerlive.nl/delen.php
Ik heb als display geen tweede Wemos maar een "oude" GSM telefoon.
Via een Webpagina op de Wemos met javascript wordt e.e.a. grafisch weergegeven op deze GSM.
Maar met een tweede Wemos met een daaraan gekoppeld display is ook veel mogelijk.
Ik heb zelf nog wel een wens; een Wemos voor mijn gasmeter, die staat helaas buiten mijn Wifi mogelijkheden en vervelender ook ver van een stopcontact.
Voor een Wemos zonder stopcontact heb ik nog geen haalbare oplossing.
m.v.g Nico
Re: Wemos temperatuur binnen en buiten
hallo ik heb dit als server gebruikt dit is de code:
#include <ESP8266WiFi.h>
#include <OneWire.h>
const char* ssid = "OEPINET";
const char* password = "geenDRAAD";
OneWire ds(D2);
WiFiServer server(80);
void setup()
{
Serial.begin(115200);
delay(10);
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, HIGH);
// 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");
digitalWrite(LED_BUILTIN, LOW);
// Start the server
server.begin();
Serial.println("Server started");
// Print the IP address
Serial.print("Use this URL : ");
Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/");
}
void loop()
{
byte i;
byte present = 0;
byte type_s;
byte data[12];
byte addr[8];
float celsius, fahrenheit;
// Check if a client has connected
WiFiClient client = server.available();
if (!client) {
return;
}
// Wait until the client sends some data
Serial.println("new client");
while(!client.available()){
delay(1);
}
// Read the first line of the request
String request = client.readStringUntil('\r');
Serial.println(request);
client.flush();
//now the DS18b20
if ( !ds.search(addr))
{
ds.reset_search();
delay(250);
return;
}
if (OneWire::crc8(addr, 7) != addr[7])
{
Serial.println("CRC is not valid!");
return;
}
// the first ROM byte indicates which chip
switch (addr[0])
{
case 0x10:
type_s = 1;
break;
case 0x28:
type_s = 0;
break;
case 0x22:
type_s = 0;
break;
default:
Serial.println("Device is not a DS18x20 family device.");
return;
}
ds.reset();
ds.select(addr);
ds.write(0x44, 1); // start conversion, with parasite power on at the end
delay(1000);
present = ds.reset();
ds.select(addr);
ds.write(0xBE); // Read Scratchpad
for ( i = 0; i < 9; i++)
{
data[i] = ds.read();
}
// Convert the data to actual temperature
int16_t raw = (data[1] << 8) | data[0];
if (type_s) {
raw = raw << 3; // 9 bit resolution default
if (data[7] == 0x10)
{
raw = (raw & 0xFFF0) + 12 - data[6];
}
}
else
{
byte cfg = (data[4] & 0x60);
if (cfg == 0x00) raw = raw & ~7; // 9 bit resolution, 93.75 ms
else if (cfg == 0x20) raw = raw & ~3; // 10 bit res, 187.5 ms
else if (cfg == 0x40) raw = raw & ~1; // 11 bit res, 375 ms
}
celsius = (float)raw / 16.0;
fahrenheit = celsius * 1.8 + 32.0;
// Return the response
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println(""); // do not forget this one
client.println("<!DOCTYPE HTML>");
client.println("<meta http-equiv=\"refresh\" content=\"5\">"); //refresh every 5 seconds
client.println("<H3>DS18b20 temperature example</h3>");
client.print("Temperature in Celsius = ");
client.println(celsius);
client.println("<br><br>");
client.print("Temperature in Celsius = ");
client.println(fahrenheit);
client.println("</html>");
delay(1);
Serial.println("Client disconnected");
Serial.println("");
}
maar het probleem is ik krijg via de seriële monitor een ip adres maar deze wil niet openen.
doe ik iets fout of wat ?
#include <ESP8266WiFi.h>
#include <OneWire.h>
const char* ssid = "OEPINET";
const char* password = "geenDRAAD";
OneWire ds(D2);
WiFiServer server(80);
void setup()
{
Serial.begin(115200);
delay(10);
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, HIGH);
// 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");
digitalWrite(LED_BUILTIN, LOW);
// Start the server
server.begin();
Serial.println("Server started");
// Print the IP address
Serial.print("Use this URL : ");
Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/");
}
void loop()
{
byte i;
byte present = 0;
byte type_s;
byte data[12];
byte addr[8];
float celsius, fahrenheit;
// Check if a client has connected
WiFiClient client = server.available();
if (!client) {
return;
}
// Wait until the client sends some data
Serial.println("new client");
while(!client.available()){
delay(1);
}
// Read the first line of the request
String request = client.readStringUntil('\r');
Serial.println(request);
client.flush();
//now the DS18b20
if ( !ds.search(addr))
{
ds.reset_search();
delay(250);
return;
}
if (OneWire::crc8(addr, 7) != addr[7])
{
Serial.println("CRC is not valid!");
return;
}
// the first ROM byte indicates which chip
switch (addr[0])
{
case 0x10:
type_s = 1;
break;
case 0x28:
type_s = 0;
break;
case 0x22:
type_s = 0;
break;
default:
Serial.println("Device is not a DS18x20 family device.");
return;
}
ds.reset();
ds.select(addr);
ds.write(0x44, 1); // start conversion, with parasite power on at the end
delay(1000);
present = ds.reset();
ds.select(addr);
ds.write(0xBE); // Read Scratchpad
for ( i = 0; i < 9; i++)
{
data[i] = ds.read();
}
// Convert the data to actual temperature
int16_t raw = (data[1] << 8) | data[0];
if (type_s) {
raw = raw << 3; // 9 bit resolution default
if (data[7] == 0x10)
{
raw = (raw & 0xFFF0) + 12 - data[6];
}
}
else
{
byte cfg = (data[4] & 0x60);
if (cfg == 0x00) raw = raw & ~7; // 9 bit resolution, 93.75 ms
else if (cfg == 0x20) raw = raw & ~3; // 10 bit res, 187.5 ms
else if (cfg == 0x40) raw = raw & ~1; // 11 bit res, 375 ms
}
celsius = (float)raw / 16.0;
fahrenheit = celsius * 1.8 + 32.0;
// Return the response
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println(""); // do not forget this one
client.println("<!DOCTYPE HTML>");
client.println("<meta http-equiv=\"refresh\" content=\"5\">"); //refresh every 5 seconds
client.println("<H3>DS18b20 temperature example</h3>");
client.print("Temperature in Celsius = ");
client.println(celsius);
client.println("<br><br>");
client.print("Temperature in Celsius = ");
client.println(fahrenheit);
client.println("</html>");
delay(1);
Serial.println("Client disconnected");
Serial.println("");
}
maar het probleem is ik krijg via de seriële monitor een ip adres maar deze wil niet openen.
doe ik iets fout of wat ?
- FonzieBonzo
- Berichten: 118
- Geregistreerd: 01 Okt 2015, 11:54
- Woonplaats: Castricum
Re: Wemos temperatuur binnen en buiten
Hoi Olan,
Los van je vraag, je bent je wifi login gegevens vergeten te censureren. Beter even je post aanpassen
Gr,
Fonzie
Los van je vraag, je bent je wifi login gegevens vergeten te censureren. Beter even je post aanpassen
Gr,
Fonzie
Re: Wemos temperatuur binnen en buiten
Olan schreef:hallo ik heb dit als server gebruikt dit is de code:
#include <ESP8266WiFi.h>
#include <OneWire.h>
const char* ssid = "xxxxxxxxxxxx";
const char* password = "xxxxxxxxx";
OneWire ds(D2);
WiFiServer server(80);
void setup()
{
Serial.begin(115200);
delay(10);
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, HIGH);
// 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");
digitalWrite(LED_BUILTIN, LOW);
// Start the server
server.begin();
Serial.println("Server started");
// Print the IP address
Serial.print("Use this URL : ");
Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/");
}
void loop()
{
byte i;
byte present = 0;
byte type_s;
byte data[12];
byte addr[8];
float celsius, fahrenheit;
// Check if a client has connected
WiFiClient client = server.available();
if (!client) {
return;
}
// Wait until the client sends some data
Serial.println("new client");
while(!client.available()){
delay(1);
}
// Read the first line of the request
String request = client.readStringUntil('\r');
Serial.println(request);
client.flush();
//now the DS18b20
if ( !ds.search(addr))
{
ds.reset_search();
delay(250);
return;
}
if (OneWire::crc8(addr, 7) != addr[7])
{
Serial.println("CRC is not valid!");
return;
}
// the first ROM byte indicates which chip
switch (addr[0])
{
case 0x10:
type_s = 1;
break;
case 0x28:
type_s = 0;
break;
case 0x22:
type_s = 0;
break;
default:
Serial.println("Device is not a DS18x20 family device.");
return;
}
ds.reset();
ds.select(addr);
ds.write(0x44, 1); // start conversion, with parasite power on at the end
delay(1000);
present = ds.reset();
ds.select(addr);
ds.write(0xBE); // Read Scratchpad
for ( i = 0; i < 9; i++)
{
data[i] = ds.read();
}
// Convert the data to actual temperature
int16_t raw = (data[1] << 8) | data[0];
if (type_s) {
raw = raw << 3; // 9 bit resolution default
if (data[7] == 0x10)
{
raw = (raw & 0xFFF0) + 12 - data[6];
}
}
else
{
byte cfg = (data[4] & 0x60);
if (cfg == 0x00) raw = raw & ~7; // 9 bit resolution, 93.75 ms
else if (cfg == 0x20) raw = raw & ~3; // 10 bit res, 187.5 ms
else if (cfg == 0x40) raw = raw & ~1; // 11 bit res, 375 ms
}
celsius = (float)raw / 16.0;
fahrenheit = celsius * 1.8 + 32.0;
// Return the response
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println(""); // do not forget this one
client.println("<!DOCTYPE HTML>");
client.println("<meta http-equiv=\"refresh\" content=\"5\">"); //refresh every 5 seconds
client.println("<H3>DS18b20 temperature example</h3>");
client.print("Temperature in Celsius = ");
client.println(celsius);
client.println("<br><br>");
client.print("Temperature in Celsius = ");
client.println(fahrenheit);
client.println("</html>");
delay(1);
Serial.println("Client disconnected");
Serial.println("");
}
maar het probleem is ik krijg via de seriële monitor een ip adres maar deze wil niet openen.
doe ik iets fout of wat ?
7 berichten
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: etibofofiue en 101 gasten