Moin,
gestern nach der Spätschicht habe ich mich erstmal damit befasst mittels GET eine VAriable auf den ESP zu bekommen. Das hat auch super geklappt nach der Vorlage...
nun stehe ich vor der Hochzeit würde ich mal meinen...
RX empfängt super und TX sendet perfekt aber wenn TX sendet hört der RX nicht zu.
//https://makesmart.net/esp8266-get-variablen-auslesen/#:~:text=Beim%20Aufruf%20der%20URL%20des,Webbrowser%20und%20im%20seriellen%20Monitor.
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
#include <RCSwitch.h>
ESP8266WebServer server(80);
RCSwitch mySwitch = RCSwitch();
const char* ssid = "Mit Sicherheit Fort Knox";
const char* password = "%5jHghBF6634957$%$*******************";
String serverName = "http://192.168.5.100/smarthome/auswerten/rf_receive.php";
void setup() {
Serial.begin(115200);
mySwitch.enableTransmit(D3);
mySwitch.enableReceive(D4);
Serial.println("ESP Gestartet");
IPAddress ip(192, 168, 5, 101);
IPAddress gateway(192, 168, 5, 10);
IPAddress subnet(255, 255, 255, 0);
IPAddress dns(192, 168, 5, 10);
WiFi.hostname("ESP8266-Gateway");
WiFi.config(ip, dns, gateway, subnet);
WiFi.begin(ssid, password);
Serial.print("Verbindung wird hergestellt ...");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println();
Serial.print("Verbunden! IP-Adresse: ");
Serial.println(WiFi.localIP());
server.onNotFound([]() {
get_hook();
}
);
server.begin();
Serial.println("Webserver gestartet.");
}
void loop() {
server.handleClient();
WiFiClient client;
HTTPClient http; //Object of class HTTPClient
if (mySwitch.available()) { // Wenn ein Code Empfangen wird...
Serial.println("RFID-Tag empfangen");
int value = mySwitch.getReceivedValue(); // Empfangene Daten werden unter der Variable "value" gespeichert.
if (value == 0) { // Wenn die Empfangenen Daten "0" sind, wird "Unbekannter Code" angezeigt.
Serial.println("Unbekannter Code");
}
else { // Wenn der Empfangene Code brauchbar ist, wird er hier an den Serial Monitor gesendet.
Serial.print("Via 433MHz Empfaengener RFID-Tag: ");
Serial.println( mySwitch.getReceivedValue() );
Serial.println();
}
int inrfid = mySwitch.getReceivedValue(); //Variable inrfid wird beschrieben
mySwitch.resetAvailable(); // Hier wird der 433 MHz-Empfänger "resettet"
String serverPath = serverName + "?rfcode=" += inrfid;
Serial.print("Serveranfrage, ");
Serial.print(serverPath);
Serial.println(" gestellt.");
http.begin(client, serverPath.c_str());
int httpResponseCode = http.GET();
if (httpResponseCode>0) {
Serial.print("HTTP Response code: ");
Serial.println(httpResponseCode);
String payload = http.getString();
Serial.println(payload);
}
else {
Serial.print("Error code: ");
Serial.println(httpResponseCode);
}
}
}
void get_hook() {
if(server.hasArg("txcode")) {
Serial.println("Variable 'txcode' mit " + server.arg("txcode") + " übergeben!");
if(server.arg("txcode") != "") {
String s = server.arg("txcode");
int txcodesend = atoi( &s[ 0 ] );
mySwitch.send(txcodesend, 24);
Serial.print("Sende auf 433MHz folgenden Code... ");
Serial.println(txcodesend);
delay(1000);
mySwitch.send(txcodesend, 24);
Serial.print("Sende auf 433MHz folgenden Code... ");
Serial.println(txcodesend);
delay(1000);
server.send(200, "text/plain", "");
}
else {
Serial.println("Variable ist da, ohne Inhalt!");
server.send(200, "text/plain","");
}
}
else {
Serial.println("Es wurden keine Variablen übergeben!");
server.send(200, "text/plain", "");
}
}
habe schon versucht "mySwitch.getReceivedValue();" bei nach myswitch.send hinter zuklemmen aber da passierte nichts...
genauso ein fehler wenn ich "String serverPath = serverName + "?rfcode=" += inrfid;" hinter der myswitch.send setzte.
dann habe ich die zeilen ab int inrfid = mySwitch.getReceivedValue(); mit else hinter myswitch.send gesetzt aber auch nichts. fehler in HTTP
wie müsste ich das nun wieder umsetzten?
danke