WeMos D1 mini als WLAN-Sensor/-Aktor
Moderator: Co-Administratoren
-
- Beiträge: 12925
- Registriert: 16.01.2009, 18:48
- Wohnort: Steingaden
- Hat sich bedankt: 1599 Mal
- Danksagung erhalten: 222 Mal
Re: WeMos D1 mini als WLAN-Sensor/-Aktor
nur die eine: hau die dinger in die tonne... ich habe mal welche zum test auf dem tisch gehabt -... lohnt nicht kann man hier auch mehrfach nachlesen!
sie haben mehrere schwachstellen .
-------
!!! der download der handbüchern auf den seiten von eq3 und das lesen der tips und tricks kann das hm-leben sehr erleichtern - das nutzen der suche nach schlagworten ebenso !!!
wer schreibfehler findet darf sie behalten.
!!! der download der handbüchern auf den seiten von eq3 und das lesen der tips und tricks kann das hm-leben sehr erleichtern - das nutzen der suche nach schlagworten ebenso !!!
wer schreibfehler findet darf sie behalten.
-
- Beiträge: 12925
- Registriert: 16.01.2009, 18:48
- Wohnort: Steingaden
- Hat sich bedankt: 1599 Mal
- Danksagung erhalten: 222 Mal
Re: WeMos D1 mini als WLAN-Sensor/-Aktor
am rande, ggf mag ja einer so einfacher verdrahten, ich habe den draht auch vor einigen tagen im keller wiedergefunden - nur das werkzeug war weg .. .. wurde jetzt neu bestellt .
hier wird eine alte technik der verdrahtung neu zum leben erweckt !
YOUTUBE.COM
Better than Dupont Wires: Wire Wrapping for our Projects (Arduino, ESP8266, ESP32)
Several technologies exist to connect electronic components. In this video, I want to add a nearly…
hier wird eine alte technik der verdrahtung neu zum leben erweckt !
YOUTUBE.COM
Better than Dupont Wires: Wire Wrapping for our Projects (Arduino, ESP8266, ESP32)
Several technologies exist to connect electronic components. In this video, I want to add a nearly…
-------
!!! der download der handbüchern auf den seiten von eq3 und das lesen der tips und tricks kann das hm-leben sehr erleichtern - das nutzen der suche nach schlagworten ebenso !!!
wer schreibfehler findet darf sie behalten.
!!! der download der handbüchern auf den seiten von eq3 und das lesen der tips und tricks kann das hm-leben sehr erleichtern - das nutzen der suche nach schlagworten ebenso !!!
wer schreibfehler findet darf sie behalten.
-
- Beiträge: 142
- Registriert: 17.07.2016, 10:40
- Hat sich bedankt: 3 Mal
- Danksagung erhalten: 1 Mal
Re: WeMos D1 mini als WLAN-Sensor/-Aktor
Hallo zusammen,
Ich hab da ein Problem mit meinen Wemos Steckdosen,, für die Weihnachtsbeleuchtung..
Letztes Jahr hab ich einfach verwendet
zum einschalten.
aber das geht nicht mehr.. komme nicht dahinter warum
im Browser geht natürlich http://192.168.0.216/cmd?R1=1 für ein
bzw. http://192.168.0.216/cmd?R1=0 für aus..
hat sich da seit letzten jahr was verändert??
Danke
mfg.
Flo
Ich hab da ein Problem mit meinen Wemos Steckdosen,, für die Weihnachtsbeleuchtung..
Letztes Jahr hab ich einfach verwendet
Code: Alles auswählen
string url="'http://192.168.0.216/cmd?R1=1'";
dom.GetObject("CUxD.CUX2801004:9.CMD_SETS").State("wget -q -O /dev/null " # url);
dom.GetObject("CUxD.CUX2801004:9.CMD_RUNS").State("1");
aber das geht nicht mehr.. komme nicht dahinter warum
im Browser geht natürlich http://192.168.0.216/cmd?R1=1 für ein
bzw. http://192.168.0.216/cmd?R1=0 für aus..
hat sich da seit letzten jahr was verändert??
Danke
mfg.
Flo
-
- Beiträge: 12925
- Registriert: 16.01.2009, 18:48
- Wohnort: Steingaden
- Hat sich bedankt: 1599 Mal
- Danksagung erhalten: 222 Mal
Re: WeMos D1 mini als WLAN-Sensor/-Aktor
wenn die ccu ein update erhalten hat die sicherheitseinstellungen ...
( deshalb braucht meine ccu kein update ... )
( deshalb braucht meine ccu kein update ... )
-------
!!! der download der handbüchern auf den seiten von eq3 und das lesen der tips und tricks kann das hm-leben sehr erleichtern - das nutzen der suche nach schlagworten ebenso !!!
wer schreibfehler findet darf sie behalten.
!!! der download der handbüchern auf den seiten von eq3 und das lesen der tips und tricks kann das hm-leben sehr erleichtern - das nutzen der suche nach schlagworten ebenso !!!
wer schreibfehler findet darf sie behalten.
-
- Beiträge: 142
- Registriert: 17.07.2016, 10:40
- Hat sich bedankt: 3 Mal
- Danksagung erhalten: 1 Mal
Re: WeMos D1 mini als WLAN-Sensor/-Aktor
Sicherheitseinstellungen beim Senden ?
Wo wäre das was zum Einstellen?
Mfg.
Wo wäre das was zum Einstellen?
Mfg.
-
- Beiträge: 12925
- Registriert: 16.01.2009, 18:48
- Wohnort: Steingaden
- Hat sich bedankt: 1599 Mal
- Danksagung erhalten: 222 Mal
Re: WeMos D1 mini als WLAN-Sensor/-Aktor
suche mal hier im thema 8181
( bin hier im stress )
( bin hier im stress )
-------
!!! der download der handbüchern auf den seiten von eq3 und das lesen der tips und tricks kann das hm-leben sehr erleichtern - das nutzen der suche nach schlagworten ebenso !!!
wer schreibfehler findet darf sie behalten.
!!! der download der handbüchern auf den seiten von eq3 und das lesen der tips und tricks kann das hm-leben sehr erleichtern - das nutzen der suche nach schlagworten ebenso !!!
wer schreibfehler findet darf sie behalten.
-
- Beiträge: 312
- Registriert: 11.01.2008, 14:41
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 33 Mal
- Danksagung erhalten: 19 Mal
Re: WeMos D1 mini als WLAN-Sensor/-Aktor
Hallo Zusammen.
Nach zwei Tagen vergeblicher Mühe bräuchte ich mal Euere Hilfe bei der Fehlersuche in meinem Sktech. Es funktioniert alles prima - bis auf die CCU-Meldung bei Druckänderung.
Ändert sich der Duck um 0.1 bar soll eine Meldung an die CCU erfolgen - passiert aber nicht. Die Meldung alle 600 Sekunden wird durchgeführt.
Hier mal der Sktech:
EDIT: Kaum gepostet, Fehler gefunden. Es lag an der Kommazahl. Das Script mag wohl nur ganze Zahlen.
Nach zwei Tagen vergeblicher Mühe bräuchte ich mal Euere Hilfe bei der Fehlersuche in meinem Sktech. Es funktioniert alles prima - bis auf die CCU-Meldung bei Druckänderung.
Ändert sich der Duck um 0.1 bar soll eine Meldung an die CCU erfolgen - passiert aber nicht. Die Meldung alle 600 Sekunden wird durchgeführt.
Hier mal der Sktech:
Code: Alles auswählen
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include "Wire.h"
#define SENSOR_ADDRESS 0x6D
#define SENSOR_REG 0x06
// ******* Netzwerkeinstellungen, bitte anpassen! *******
const char* ssid = "xx"; // SSID des vorhandenen WLANs
const char* password = "xx"; // Passwort für das vorhandene WLAN
IPAddress gateway(xx); // IP-Adresse des WLAN-Gateways
IPAddress subnet(255,255,255,0); // Subnetzmaske
IPAddress ip(xx); // feste IP-Adresse für den WeMos
const char* host = "xx"; // IP-Adresse der CCU (mit Punkten!)
ESP8266WebServer server(80); // Webserver initialisieren auf Port 80
// ******* Sensoreinstellungen, bitte anpassen! *******
unsigned long deltaMessungSekunden = 10; //Zeitintervall (Sekunden) nach dem eine Messung erfolgt
float korrDruck = 1; // Korrekturwert fuer die Druckmessung
float fadc;
// ******* Einstellungen fuer Meldungen an die CCU, bitte anpassen! *******
String druckCCUname = "CUxD.CUX9000015:1.SET_STATE"; // CUxD-Gerät "Brauchwasserdruck"
unsigned long deltaMeldungSekunden = 600; // Zeitintervall (Sekunden) nach dem eine CCU-Meldung erfolgt (0 bedeutet nie)
float deltaDruck = 0.1; // Druckänderung bei der eine CCU-Meldung erfolgt (0 bedeutet nie)
float druck = 0, druckCCU = 0;
unsigned long jetztMillis = 0;
unsigned long deltaMessungMillis = deltaMessungSekunden * 1000, letzteMessungMillis = 0;
unsigned long deltaMeldungMillis = deltaMeldungSekunden * 1000, letzteMeldungMillis = 0;
String antwort = "", meldung = "",letzteMeldungCCUzeit = "";
String zeitstempel()// Betriebszeit als Stunde:Minute:Sekunde
{
char stempel[10];
int lfdStunden = millis()/3600000;
int lfdMinuten = millis()/60000-lfdStunden*60;
int lfdSekunden = millis()/1000-lfdStunden*3600-lfdMinuten*60;
sprintf (stempel,"%03d:%02d:%02d", lfdStunden, lfdMinuten, lfdSekunden);
return stempel;
}
void messung() // Sensor abfragen
{
uint32_t low, med, high;
uint32_t wert;
Wire.beginTransmission(SENSOR_ADDRESS);
Wire.write(SENSOR_REG);
Wire.endTransmission(false);
Wire.requestFrom(SENSOR_ADDRESS, 3);
if(Wire.available() == 3 )
{
high = Wire.read();
med = Wire.read();
low = Wire.read();
wert = (high<<16) | (med<<8) | low;
}
Wire.endTransmission();
if(wert & 0x800000)
{
fadc = wert - 16777216.0;
}
else
{
fadc = wert;
}
druck = 500 * ((3.3 * wert / 8388608.0)-0.5) / 200.0 * korrDruck;
if (isnan(druck))
{
Serial.println(zeitstempel() + " Fehler: Brauchwasserdrucksensor konnte nicht abgefragt werden");
delay(100);
return;
}
letzteMessungMillis = jetztMillis;
Serial.println(zeitstempel() + " Druck: " + druck + " bar");
}
void melde_CCU()// Werte an die CCU melden
{
WiFiClient client; // Webclient initialisieren
const int httpPort = 8181;
if (!client.connect(host, httpPort)) // mit dem CCU-Port 8181 verbinden
{
Serial.println(zeitstempel() + " Fehler: Verbindung zur CCU konnte nicht aufgebaut werden");
delay(100);
return;
}
String url = "/xy.exe?antwort1=dom.GetObject('" + druckCCUname + "').State('" + druck + "')";
client.println(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n"); // Daten an CCU melden
delay(100);
int i = 0;
// String zeile = "";
while(client.available()) // Antwort der CCU zeilenweise auslesen
{
i ++;
String zeile = client.readStringUntil('\r'); // Zeitstempel der CCU ausfiltern und merken
if (i == 7)
{
letzteMeldungCCUzeit = zeile;
}
}
Serial.println("Werte an CCU gemeldet, " + letzteMeldungCCUzeit);
letzteMeldungMillis = jetztMillis; // gemeldete Daten merken
druckCCU = druck;
}
void wurzel_behandlung()// bei Aufruf des Root-Verzeichnisses
{
String betriebszeit = zeitstempel();
antwort = "WeMos Brauchwasserdrucksensor\n";
antwort = antwort + "\tBetriebszeit: " + betriebszeit + " (Std:Min:Sek)\n";
antwort = antwort + "\tVerbunden mit: " + ssid + "\n";
int rssi = WiFi.RSSI();
antwort = antwort + "\tSignalstaerke: " + String(rssi) + " dBm\n\n";
antwort = antwort + "Letzte Messwerte\n\tDruck: " + String(druck) + " bar\n";
antwort = antwort + "Korrekturwerte\n\tDruck: " + String(korrDruck) + "\n\n";
antwort = antwort + "Letzte Datenuebertragung CCU: " + letzteMeldungCCUzeit + "\n";
antwort = antwort + "\tGemeldeter Druck: " + String(druckCCU) + " bar\n\n";
antwort = antwort + "Ausloeser fuer Datenuebertragung CCU\n";
antwort = antwort + "\tZeitintervall: " + String(deltaMeldungSekunden) + " Sekunden\n";
antwort = antwort + "\tDruckdifferenzwert: " + String(deltaDruck) + " bar\n\n";
antwort = antwort + "HTTP-Befehlsuebersicht:\n";
antwort = antwort + "\"192.168.178.69/druck\" gibt den zuletzt gemessenen Brauchwasserdruck aus (Bar)\n";
antwort = antwort + "\"192.168.178.69/zeit\" gibt den CCU-Zeitstempel aus, an dem die letzte Meldung an die CCU erfolgte\n";
antwort = antwort + "\"192.168.178.69/druck?delta=<wert>\" setzt den Brauchwasserdruck-Differenzwert, der eine CCU-Meldung ausloest\n";
antwort = antwort + "\"192.168.178.69/druck?korr=<wert>\" setzt den Korrekturwert fuer die Brauchwasserdruckmessung\n";
antwort = antwort + "\"192.168.178.69/zeit?delta=<wert>\" setzt die Zeitspanne (in Sekunden), nach der spaetestens eine CCU-Meldung erfolgt\n";
antwort = antwort + "\"192.168.178.69/zeit?mess=<wert>\" definiert das Messintervall (in Sekunden)\n";
server.send(300, "text/plain", antwort);
delay(150);
Serial.println(zeitstempel() + " unspezifische HTTP-Anfrage");
}
void melde_druck() // bei Aufruf von ".../druck"
{
String delta = server.arg("delta");
String korr = server.arg("korr");
if (delta != "")
{
deltaDruck = delta.toFloat();
server.send(200, "text/plain", "Brauchwasserdruckdifferenzwert fuer CCU-Meldungen auf " + delta + " bar gesetzt.");
delay(100);
Serial.println(zeitstempel() + " Druckdifferenzwert ueber HTTP geaendert: " + delta + " bar");
}
else if (korr != "")
{
korrDruck = korr.toFloat();
server.send(200, "text/plain", "Korrekturwert fuer Brauchwasserdruckmessung auf " + korr + " gesetzt.");
delay(100);
Serial.println(zeitstempel() + " Druckkorrekturwert ueber HTTP geaendert: " + korr + " Sekunden");
}
else {
server.send(200, "text/plain", String(druck));
delay(100);
Serial.println(zeitstempel() + " Brauchwasserdruck ueber HTTP gemeldet");
}
}
void melde_zeit()// bei Aufruf von ".../zeit"
{
String delta = server.arg("delta");
String mess = server.arg("mess");
if (delta != "")
{
deltaMeldungSekunden = delta.toInt();
deltaMeldungMillis = deltaMeldungSekunden * 1000;
server.send(200, "text/plain", "Zeitintervall fuer CCU-Meldungen auf " + delta + " Sekunden gesetzt.");
delay(100);
Serial.println(zeitstempel() + " Zeitintervall fuer CCU-Meldungen ueber HTTP geaendert: " + delta + " Sekunden");
}
else if (mess != "")
{
deltaMessungMillis = mess.toInt() * 1000;
server.send(200, "text/plain", "Zeitintervall fuer Sensorabfrage auf " + mess + " Sekunden gesetzt.");
delay(100);
Serial.println(zeitstempel() + " Zeitintervall fuer Sensorabfrage ueber HTTP geaendert: " + mess + " Sekunden");
}
else
{
server.send(200, "text/plain", "Letzte Aktualisierung der CCU\n" + letzteMeldungCCUzeit);
delay(100);
Serial.println(zeitstempel() + " Letzte Aktualisierung der CCU ueber HTTP Status gemeldet");
}
}
void setup()
{
// Seriellen Monitor für Kontrollausgaben öffnen
Serial.begin(9600);
Serial.println("");
Serial.println("WeMos Brauchwasserdrucksensor");
// I2C starten mit SDA = D2 und SCL = D3
Wire.begin(D2,D3);
delay(100);
// WLAN-Verbindung herstellen
WiFi.config(ip, gateway, subnet); // auskommentieren, falls eine dynamische IP bezogen werden soll
WiFi.begin(ssid, password);
Serial.print("Verbindungsaufbau");
// Verbindungsaufbau abwarten
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println(" erfolgreich!");
Serial.println("");
Serial.print("Verbunden mit: ");
Serial.println(ssid);
Serial.print("Signalstaerke: ");
int rssi = WiFi.RSSI();
Serial.print(rssi);
Serial.println(" dBm");
Serial.print("IP-Adresse: ");
Serial.println(WiFi.localIP());
Serial.println("");
// HTTP-Anfragen bearbeiten
server.on("/", wurzel_behandlung);
server.on("/druck", melde_druck);
server.on("/zeit", melde_zeit);
// HTTP-Server starten
server.begin();
Serial.println(zeitstempel() + " HTTP-Server gestartet");
// Startwerte fuer Zeittrigger
letzteMessungMillis = millis();
letzteMeldungMillis = millis();
}
void loop()
{
// auf HTTP-Anfragen warten
server.handleClient();
jetztMillis = millis();
// neue Messung falls Zeitintervall erreicht
if(jetztMillis - letzteMessungMillis > deltaMessungMillis)
{
messung();
}
// neue Meldung an die CCU falls Zeitintervall erreicht
if(!deltaMeldungMillis == 0 && jetztMillis - letzteMeldungMillis > deltaMeldungMillis)
{
Serial.print(zeitstempel() + " Zeitintervall erreicht: ");
melde_CCU();
}
// neue Meldung an die CCU falls Druckänderung den Schwellwert erreicht
if(!deltaDruck == 0 && abs(druck - druckCCU) >= deltaDruck)
{
Serial.print(zeitstempel() + " Brauchwasserdruckaenderung: ");
melde_CCU();
}
}
EDIT: Kaum gepostet, Fehler gefunden. Es lag an der Kommazahl. Das Script mag wohl nur ganze Zahlen.
Raspberry PI 4 mit RaspberryMatic, 4 LAN-Gateways, zwei HmIP-HAP und 248 Geräte
CUxD mit 357 Kanälen auf 64 Geräten
Zusatzsoftware: XML-API, CUxD-Highcharts, NEO-Server, Programmedrucken, CUxD, E-Mail, Philips Hue, Messenger, CCU-Historian, JB-HP-Devices, HomeKit HomeMatic
Anbindungen: Wolf eBus; NodeMCU-Ultraschall-Füllstandsmessung mit Temperatureinfluß; Fußbodenheizung mit Rücklauftemperaturbegrenzer (RTL)
CUxD mit 357 Kanälen auf 64 Geräten
Zusatzsoftware: XML-API, CUxD-Highcharts, NEO-Server, Programmedrucken, CUxD, E-Mail, Philips Hue, Messenger, CCU-Historian, JB-HP-Devices, HomeKit HomeMatic
Anbindungen: Wolf eBus; NodeMCU-Ultraschall-Füllstandsmessung mit Temperatureinfluß; Fußbodenheizung mit Rücklauftemperaturbegrenzer (RTL)
-
- Beiträge: 22
- Registriert: 11.02.2018, 10:32
Re: WeMos D1 mini als WLAN-Sensor/-Aktor
Asche auf mein Haupt. Ich habe versagt. Einfach nur zu doof zum Lesen. Es funktioniert nun, nachdem ich gemacht habe, was da steht.jp112sdl hat geschrieben: ↑11.09.2018, 17:48Probiers mal damit: https://github.com/jp112sdl/WemosD1_HomeMatic_PIR
-
- Beiträge: 23
- Registriert: 01.10.2015, 17:48
Re: WeMos D1 mini als WLAN-Sensor/-Aktor
Hallo zusammen,
ich habe vor 2 Tagen mit dem WeMos angefangen zu "spielen". Bin also Anfänger mit Arduino und Co.
Ich habe mir den Schaltaktor vom m.yoda nachgebaut und das klappt wunderbar.
Lässt sich von der Zentrale aus steuern.
Nun möchte ich gerne nach einem Schaltvorgang den Zustand des Relais an die Homematic senden.
Dazu habe ich in der CCU die Systemvariable D1mini als Textvariable angelegt und rufe die Funktion melde_CCU im Sketch auf.
URL der CCU ist auch richtig eingetragen.
Die Variable wird nicht gesetzt. Hab ich da einen Fehler eingebaut?
Wäre schön wenn mal jemand drüber schauen könnte.
Danke.
ich habe vor 2 Tagen mit dem WeMos angefangen zu "spielen". Bin also Anfänger mit Arduino und Co.
Ich habe mir den Schaltaktor vom m.yoda nachgebaut und das klappt wunderbar.
Lässt sich von der Zentrale aus steuern.
Nun möchte ich gerne nach einem Schaltvorgang den Zustand des Relais an die Homematic senden.
Dazu habe ich in der CCU die Systemvariable D1mini als Textvariable angelegt und rufe die Funktion melde_CCU im Sketch auf.
URL der CCU ist auch richtig eingetragen.
Die Variable wird nicht gesetzt. Hab ich da einen Fehler eingebaut?
Wäre schön wenn mal jemand drüber schauen könnte.
Danke.
Code: Alles auswählen
void melde_CCU()
{ // Werte an die CCU melden
WiFiClient client;
const int httpPort = 80;
if (!client.connect(host, httpPort))
{ return; }
Zustand = "----";
if (digitalRead(D1) == HIGH)
Zustand = "eingeschaltet";
else
Zustand = "ausgeschaltet";
String url = "/xy.exe?antwort1=dom.GetObject('" + CCU_variable + "').State('" + Zustand + "')";
// This will send the request to the server
client.print(String("GET ") + url + " HTTP/1.1\r\n" +
"Host: " + host + "\r\n" +
"Connection: close\r\n\r\n");
delay(100);
Als es dem Kapitän zu dumm wurde, lies er das ganze Schiff über Bord werfen.
- TomT
- Beiträge: 565
- Registriert: 19.11.2014, 15:13
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 4 Mal
- Danksagung erhalten: 4 Mal
Re: WeMos D1 mini als WLAN-Sensor/-Aktor
Code: Alles auswählen
String url = "/xy.exe?antwort1=dom.GetObject('" + CCU_variable + "').State('" + Zustand + "')";
Code: Alles auswählen
String url = "/xy.exe?antwort1=dom.GetObject('" + D1mini + "').State('" + Zustand + "')";
Ausserdem Groß-Kleinschreibung beim Variablennamen beachtet?
Grüße
Tom