WeMos D1 mini als WLAN-Sensor/-Aktor
Moderator: Co-Administratoren
-
- Beiträge: 23
- Registriert: 01.10.2015, 17:48
Re: WeMos D1 mini als WLAN-Sensor/-Aktor
Hallo TomT danke für die Antwort.
ich habe weiter oben im Sketch eine Variable deklariert.
String CCU_variable = "D1mini";
Wenn ich die Zeile von Dir einbinde, kommt die Meldung D!mini was not declared in this scope.
ich habe weiter oben im Sketch eine Variable deklariert.
String CCU_variable = "D1mini";
Wenn ich die Zeile von Dir einbinde, kommt die Meldung D!mini was not declared in this scope.
Als es dem Kapitän zu dumm wurde, lies er das ganze Schiff über Bord werfen.
-
- Beiträge: 319
- Registriert: 16.02.2015, 17:05
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 129 Mal
- Danksagung erhalten: 35 Mal
Re: WeMos D1 mini als WLAN-Sensor/-Aktor
das sieht nach einem Vertipper oben aus:
D!mini
statt
D1mini
D!mini
statt
D1mini
Mit Mut und Entschlossenheit gegen Intoleranz
-
- Beiträge: 23
- Registriert: 01.10.2015, 17:48
Re: WeMos D1 mini als WLAN-Sensor/-Aktor
Sorry - der Vertipper kam von mir - es heisst natürlich D1Mini was not declred.
Im Sketch ist aber alles richtig geschrieben und trotzdem der Fehler.
Im Sketch ist aber alles richtig geschrieben und trotzdem der Fehler.
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
Ok
Wenn das der Variablenname ist, dann ist das natürlich klar.
Welche Arduino Version verwendest du?
Welche ESP 8266 Core Version?
Bekommst du beim Kompilieren irgendeinen Fehler angezeigt?
Poste auch zur Not mal den kompletten Code.
Grüße
Tom
Wenn das der Variablenname ist, dann ist das natürlich klar.
Welche Arduino Version verwendest du?
Welche ESP 8266 Core Version?
Bekommst du beim Kompilieren irgendeinen Fehler angezeigt?
Poste auch zur Not mal den kompletten Code.
Grüße
Tom
-
- Beiträge: 23
- Registriert: 01.10.2015, 17:48
Re: WeMos D1 mini als WLAN-Sensor/-Aktor
Hallo Tom,
die Arduino-Version ist 1.8.8
Wie finde ich die Core-Version des ESP raus?
Vielen Dank im Voraus
die Arduino-Version ist 1.8.8
Wie finde ich die Core-Version des ESP raus?
Vielen Dank im Voraus
Code: Alles auswählen
/*
* WeMos-Schaltaktor (Prototyp)
* verbindet sich mit dem vorhandenen WLAN als Server
* Steuerung über HTTP-Befehle:
* "<IP-Adresse>" gibt eine Status- und Befehlsübersicht aus
* "<IP-Adresse>/aus" schaltet das Relais aus
* "<IP-Adresse>/ein" schaltet das Relais ein
* "<IP-Adresse>/status" gibt den Schaltzustand des Relais als Logikwert ("ein" oder "aus") zurück
* "<IP-Adresse>/toggle" toggelt den Schaltzustand des Relais
* Getesteter Aufbau:
* WeMos D1 mini
* Relay Shield mini
* Pin-Belegung:
* D1: Steuerleitung Relais
* 31.Januar 2016 —m.yoda
*/
include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
// ******* Netzwerkeinstellungen, bitte anpassen! *******
const char* ssid = "XXX"; // SSID des vorhandenen WLANs
const char* password = "XXXXXXXXXX"; // Passwort für das vorhandene WLAN
IPAddress gateway(192,168,0,1); // IP-Adresse des WLAN-Gateways
IPAddress subnet(255,255,255,0); // Subnetzmaske
IPAddress ip(192,168,0,70); // feste IP-Adresse für den WeMos
const char* host = "192.168.0.10"; // IP-Adresse der CCU (mit Punkten!)
ESP8266WebServer server(80); // Webserver initialisieren auf Port 80
String antwort = "";
String CCU_variable = "D1mini"; //
String Zustand;
String meldung;
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;
}
/////////////////////////////////////// es klappt alles bis auf diesen Teil mit der Rückmeldung
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);
}
////////////////////////////////////////////////
void wurzel_behandlung() { // bei Aufruf des Root-Verzeichnisses
String temp = zeitstempel();
antwort = "WeMos Schaltaktor\n\n";
if (digitalRead(D1) == HIGH)
antwort = antwort + "Status: eingeschaltet\n";
else
antwort = antwort + "Status: ausgeschaltet\n";
antwort = antwort + "Betriebszeit: " + temp + " (Std:Min:Sek)\n";
antwort = antwort + "Verbunden mit: " + ssid + "\n";
int rssi = WiFi.RSSI();
antwort = antwort + "Signalstaerke: " + String(rssi) + " dBm\n\n";
antwort = antwort + "HTTP-Befehlsuebersicht:\n";
antwort = antwort + "\"<IP-Adresse>/toggle\" toggelt das Relais /n";
antwort = antwort + "\"<IP-Adresse>/aus\" schaltet das Relais aus\n";
antwort = antwort + "\"<IP-Adresse>/ein\" schaltet das Relais ein\n";
antwort = antwort + "\"<IP-Adresse>/status\" gibt den Schaltzustand des\n Relais als Logikwert (\"ein\" oder \"aus\") zurueck\n";
server.send(300, "text/plain", antwort);
delay(150);
Serial.println(temp + " unspezifische HTTP-Anfrage");
}
void mach_an() {
pinMode(D1, OUTPUT);
digitalWrite(D1, HIGH);
server.send(200, "text/plain", "WeMos-Schaltaktor ist eingeschaltet");
delay(100);
Serial.println(zeitstempel() + " ueber HTTP eingeschaltet");
}
void mach_aus()
{
pinMode(D1, OUTPUT);
digitalWrite(D1, LOW);
server.send(200, "text/plain", "WeMos-Schaltaktor ist ausgeschaltet");
delay(100);
Serial.println(zeitstempel() + " ueber HTTP ausgeschaltet");
}
void toggle_relais()
{
if (digitalRead(D1) == HIGH)
{ pinMode(D1, OUTPUT);
digitalWrite(D1, LOW);
server.send(200, "text/plain", "WeMos-Schaltaktor ist ausgeschaltet");
delay(100);
Serial.println(zeitstempel() + " ueber HTTP ausgeschaltet");
}
else
{
pinMode(D1, OUTPUT);
digitalWrite(D1, HIGH);
server.send(200, "text/plain", "WeMos-Schaltaktor ist eingeschaltet");
delay(100);
Serial.println(zeitstempel() + " ueber HTTP eingeschaltet");
}
melde_CCU;
}
void melde_status() {
String temp = zeitstempel();
if (digitalRead(D1) == HIGH)
antwort = "ein";
else
antwort = "aus";
server.send(200, "text/plain", antwort);
delay(100);
Serial.println(zeitstempel() + " ueber HTTP Status gemeldet");
}
void setup() {
pinMode(D1, OUTPUT); // Relais-Pin als Ausgang setzen
// Seriellen Monitor für Kontrollausgaben öffnen
Serial.begin(9600);
Serial.println("");
Serial.println("WeMos-Schaltaktor");
// 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("/ein", mach_an);
server.on("/aus", mach_aus);
server.on("/status", melde_status);
server.on("/toggle", toggle_relais);
// HTTP-Server starten
server.begin();
Serial.println(zeitstempel() + " HTTP-Server gestartet");
}
void loop() {
server.handleClient(); // auf HTTP-Anfragen warten
}
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
8266 Core Version :
Menüleiste im Arduino IDE : Werkzeuge - BOARD : -> Boardverwalter... klicken
Oben im Fenster dann TYp ALLE und im Textfeld ESP8266 eingeben.
Dann zeigt er bei ESP8266 die installierte Version an...
Den Code schau ich mir später mal an....
EDIT
So, den Code mal gerade durch den Arduino 1.8.5 gejagt (ich verwende ESP Core 2.4.1)
und dein geposteter Code kann nicht so funktionieren ohne Fehler....
Ich bekomme ne Fehlermeldung, weil :
Ich weiß zwar nicht, ob die die INCUDE Deklarationen in der neueren Arduino IDE geändert haben (glauben tue ich das allerdings nicht), aber ohne # davor gibt das keinen....
Na was solls....
Hast du mal versucht, den Webrequest per Hand in den Browser einzugeben?
Also den GET komplett mal ohne den ESP senden zu lassen, und klappt damit dann das Ändern der SysVar in der CCU?
Ersetze xxx.xxxx.... mit der IP deiner CCU und wenn du den Link dann aufrufst, sollte in der SysVar "D1mini" der String "Test" drin stehen....
Grüße
Tom
Menüleiste im Arduino IDE : Werkzeuge - BOARD : -> Boardverwalter... klicken
Oben im Fenster dann TYp ALLE und im Textfeld ESP8266 eingeben.
Dann zeigt er bei ESP8266 die installierte Version an...
Den Code schau ich mir später mal an....
EDIT
So, den Code mal gerade durch den Arduino 1.8.5 gejagt (ich verwende ESP Core 2.4.1)
und dein geposteter Code kann nicht so funktionieren ohne Fehler....
Ich bekomme ne Fehlermeldung, weil :
Code: Alles auswählen
error: 'include' does not name a type
include <ESP8266WiFi.h>
Na was solls....
Hast du mal versucht, den Webrequest per Hand in den Browser einzugeben?
Also den GET komplett mal ohne den ESP senden zu lassen, und klappt damit dann das Ändern der SysVar in der CCU?
Code: Alles auswählen
http://xxx.xxx.xxx.xxx/xy.exe?antwort1=dom.GetObject('D1mini').State('Test')
Grüße
Tom
-
- Beiträge: 23
- Registriert: 01.10.2015, 17:48
Re: WeMos D1 mini als WLAN-Sensor/-Aktor
Also:
ESP-Daten siehe Grafik
Wenn ich
Eine Frage zum allgemeinen Ablauf:
Wenn der Request schreibt: WeMos Schaltaktor ist eingeschaltet und ich gehe ja auf D1, dann müsste ich doch an D1 nach Ground ca. 3,3 Volt messen können?
Ich glaube ich verbrenne mein Diplom und werde Bäcker
ESP-Daten siehe Grafik
Wenn ich
mit meiner CPU-Adresse eingebe, kommt: 403 FORBIDDEN
Eine Frage zum allgemeinen Ablauf:
Wenn der Request schreibt: WeMos Schaltaktor ist eingeschaltet und ich gehe ja auf D1, dann müsste ich doch an D1 nach Ground ca. 3,3 Volt messen können?
Ich glaube ich verbrenne mein Diplom und werde Bäcker
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
OKsegelwinni hat geschrieben: ↑10.01.2019, 11:32Wenn ichmit meiner CPU-Adresse eingebe, kommt: 403 FORBIDDEN
Wenn auch das nicht funktioniert...
Deine CCU nimmt das Format so nicht, meine RASPIMATIC schon.
Kommen wir also der Sache näher.
Ich befürchte, es liegt an der CCU Firewall oder an deinem Netzwerkrouter...
Du lässt keinen Zugriff auf die exec auf der CCU zu.
Jetzt bin ich aber leider schon fast raus, weil meine Firmware noch aus Ende 2017 (Raspi 2.29.23 xxxx) stammt und ich keinen blassen Schimmer habe, ob da wirklich was am Zugriff auf die EXEC geändert wurde....
Jedenfalls musst du erst mal sehen, daß der Webrequest per Hand die CCU Variable ändert.
So lange wie das nicht funktioniert, macht ein Suchen in der ESP-Arduino Software keinen Sinn...
Ja, der digital.write(D1, HIGH); schaltet den Ausgang D1 auf HIGH, also 3,3V...Wenn der Request schreibt: WeMos Schaltaktor ist eingeschaltet und ich gehe ja auf D1, dann müsste ich doch an D1 nach Ground ca. 3,3 Volt messen können?
LOW müsste dann 0V GND Potential haben.
UIUIUI den Core 2.5.0 BETA2 zu nutzen .... Du bist aber mutig
Grüße
Tom
-
- Beiträge: 23
- Registriert: 01.10.2015, 17:48
Re: WeMos D1 mini als WLAN-Sensor/-Aktor
http://x.x.x.x:8181/xy.exe?antwort1=dom.GetObject(%27D1mini%27).State(%27Test%27)
Dann geht das Schreiben ! ! Es muss der Port 8181 mit übergeben werden.
Ich teste mal weiter.
Dann geht das Schreiben ! ! Es muss der Port 8181 mit übergeben werden.
Ich teste mal weiter.
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
Dann ändere mal :
auf
Code: Alles auswählen
void melde_CCU()
{ // Werte an die CCU melden
WiFiClient client;
const int httpPort = 80;
Code: Alles auswählen
void melde_CCU()
{ // Werte an die CCU melden
WiFiClient client;
const int httpPort = 8181;