Also den Status merkt er sich einfach nicht. Sorry, dass ich immer noch damit anfange. Solange ich in der Homefit-App bin, zeigt er das Relais korrekt an, wenn ich kurz beende steht alles danach auf 0. Ich verstehe es nicht.
Beiträge von fapoo
-
-
Hm, der Code der Homebridge ist angefügt. Aber das Problem besteht ja auch, wenn ich die Homebridge gar nicht nutze, sondern allein über die URL schalte und auslese. Ich bin echt kurz vor der Verzweiflung
Edit: Okay, ich habe jetzt die High- und Low-Befehle im Code wieder in die alte Reihenfolge gebracht. Jetzt behält er die States bei, allerdings alles *-1. also An ist aus und umgekehrt, weil die Homebridge, warum auch immer, bei mir 3,3V die ich brauche, um das Relais zu schalten, als ausgeschaltet interpretiert. Allerdings hätte das ja auch vorher schon alles umgekehrt sein müssen. Ich brauche ne Pause. Steige da gerade nicht durch.
Code- "accessories": [
- {
- "accessory": "HTTP-SWITCH",
- "name": "Relais 1.",
- "switchType": "stateful",
- "httpMethod": "POST",
- "onUrl": "http://192.168.178.54/Pin_D1_on",
- "offUrl": "http://192.168.178.54/Pin_D1_off",
- "statusUrl": "http://192.168.178.54/Pin_D1_state"
- },
- {
- "accessory": "HTTP-SWITCH",
- "name": "Relais 2.",
- "switchType": "stateful",
- "httpMethod": "POST",
- "onUrl": "http://192.168.178.54/Pin_D2_on",
- "offUrl": "http://192.168.178.54/Pin_D2_off",
- "statusUrl": "http://192.168.178.54/Pin_D2_state"
- },
- {
- "accessory": "HTTP-SWITCH",
- "name": "Relais 3.",
- "switchType": "stateful",
- "httpMethod": "POST",
- "onUrl": "http://192.168.178.54/Pin_D3_on",
- "offUrl": "http://192.168.178.54/Pin_D3_off",
- "statusUrl": "http://192.168.178.54/Pin_D3_state"
- },
- {
- "accessory": "HTTP-SWITCH",
- "name": "Relais 4.",
- "switchType": "stateful",
- "httpMethod": "POST",
- "onUrl": "http://192.168.178.54/Pin_D4_on",
- "offUrl": "http://192.168.178.54/Pin_D4_off",
- "statusUrl": "http://192.168.178.54/Pin_D4_state"
- },
- {
- "accessory": "HTTP-SWITCH",
- "name": "Relais 5.",
- "switchType": "stateful",
- "httpMethod": "POST",
- "onUrl": "http://192.168.178.54/Pin_D5_on",
- "offUrl": "http://192.168.178.54/Pin_D5_off",
- "statusUrl": "http://192.168.178.54/Pin_D5_state"
- },
- {
- "accessory": "HTTP-SWITCH",
- "name": "Relais 6.",
- "switchType": "stateful",
- "httpMethod": "POST",
- "onUrl": "http://192.168.178.54/Pin_D6_on",
- "offUrl": "http://192.168.178.54/Pin_D6_off",
- "statusUrl": "http://192.168.178.54/Pin_D6_state"
- }
- ],
-
Funktioniert nicht so richtig. Unmittelbar nach dem Einschalten wechselt der Homekit-Schalter wieder auf aus, aber das Relais bleibt an. Wenn ich das Relais dann ausschalten will, muss ich in Homefit den Schalter dann immer zweimal schalten (einmal, damit Homefit merkt, dass er an ist, und das zweite mal um ihn wirklich auszuschalten). Ich dachte es läge daran, dass ich die Pins im eingeschalteten Zustand auf Low gesetzt habe und vice versa. Kann aber eigentlich ja nicht sein, weil ihn High und Low ja nicht interessiert.
Wenn ich den Status nur übers den Link ändere, hat das auch keinerlei Auswirkungen auf den Status in Homekit, da State immer auf 0 bleibt.
Irgendeine Idee, wieso er sich so verhält und was ich tun kann?
Ich hoffe ich nerve nicht
Edit: Der Code auf nem zweiten ESP zeigt genau das gleiche Verhalten. Aber ich finde den Fehler einfach nicht.
-
Hi nochmal. Jetzt läuft das ganze. Leider kommt er mit dem Status immer durcheinander. Wenn ich eine Quelle ansteuere, dann schaltet er es ein und kurz darauf in homekit wieder aus, obwohl es noch läuft. Dann ist der Status der URL auch 0. Da die Homebridge mit dem Plugin "http-switch Dafang" 3,3 V als aus- und 0 V als eingeschaltet interpretiert, habe ich unten im Arduino-sketch die Off- und On-Zustände mit High und Low vertauscht. Ich nehme an, dass das sein Problem ist. Wüsste aber gerade nicht, wie ich das anders lösen könnte. Eine Idee? Oder stelle ich mich einfach doof an?
Danke.
Gruß Falko
C- #include <ESP8266WiFi.h>
- #include <ESP8266WebServer.h>
- #include <ESP8266mDNS.h>
- ESP8266WebServer server(80);
- const char* ssid = "ssid";
- const char* password = "pw";
- //Signal-Pins der Relais
- int Pin_D1 = 5;
- int Pin_D2 = 4;
- int Pin_D3 = 0; //Pull-Up
- int Pin_D4 = 2; //Pull-Up
- int Pin_D5 = 14;
- int Pin_D6 = 12;
- //int Pin_D7 = 13;
- //int Pin_D8 = 15; //Pull-Down
- // following for the name of: http://ESP-relais.local/
- //http://ESP-relais.local/Pin_D1_on Schaltet Relais 1 an.
- //http://ESP-relais.local/Pin_D1_off Schaltet Relais 1 aus.
- //http://ESP-relais.local/Pin_D1_state Gibt den Status von Relais 1 (0/1) im Browser zurück.
- const char* dns_name = "ESP-relais";
- void setup()
- {
- // LED ausschalten
- pinMode(LED_BUILTIN, OUTPUT); // LED als Output definieren
- digitalWrite(LED_BUILTIN, HIGH); // Ausschalten
- //delay(2000);
- //digitalWrite(LED_BUILTIN, LOW);
- //delay(2000);
- pinMode(Pin_D1, OUTPUT);
- pinMode(Pin_D2, OUTPUT);
- pinMode(Pin_D3, OUTPUT);
- pinMode(Pin_D4, OUTPUT);
- pinMode(Pin_D5, OUTPUT);
- pinMode(Pin_D6, OUTPUT);
- //pinMode(Pin_D7, OUTPUT);
- //pinMode(Pin_D8, OUTPUT);
- Serial.begin(115200); //Serielle Datenübertragung mit definierter Baud-Rate
- Serial.println("ESP Gestartet");
- 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());
- if(MDNS.begin(dns_name)) {
- Serial.println("DNS gestartet");
- }
- server.onNotFound([](){
- server.send(404, "text/plain", "Link wurde nicht gefunden!");
- });
- server.on("/", []() {
- server.send(200, "text/plain", "Startseite");
- });
- // Pins Server
- server.on("/Pin_D1_on", []() {
- server.send(200, "text/plain", "Relais 1 eingeschaltet.");
- Pin_D1_on();
- });
- server.on("/Pin_D1_off", []() {
- server.send(200, "text/plain", "Relais 1 ausgeschaltet.");
- Pin_D1_off();
- });
- server.on("/Pin_D1_state", []() {
- server.send(200, "text/plain", String(digitalRead(Pin_D1)));
- });
- server.on("/Pin_D2_on", []() {
- server.send(200, "text/plain", "Relais 2 eingeschaltet.");
- Pin_D2_on();
- });
- server.on("/Pin_D2_off", []() {
- server.send(200, "text/plain", "Relais 2 ausgeschaltet.");
- Pin_D2_off();
- });
- server.on("/Pin_D2_state", []() {
- server.send(200, "text/plain", String(digitalRead(Pin_D2)));
- });
- server.on("/Pin_D3_on", []() {
- server.send(200, "text/plain", "Relais 3 eingeschaltet.");
- Pin_D3_on();
- });
- server.on("/Pin_D3_off", []() {
- server.send(200, "text/plain", "Relais 3 ausgeschaltet.");
- Pin_D3_off();
- });
- server.on("/Pin_D3_state", []() {
- server.send(200, "text/plain", String(digitalRead(Pin_D3)));
- });
- server.on("/Pin_D4_on", []() {
- server.send(200, "text/plain", "Relais 4 eingeschaltet.");
- Pin_D4_on();
- });
- server.on("/Pin_D4_off", []() {
- server.send(200, "text/plain", "Relais 4 ausgeschaltet.");
- Pin_D4_off();
- });
- server.on("/Pin_D4_state", []() {
- server.send(200, "text/plain", String(digitalRead(Pin_D4)));
- });
- server.on("/Pin_D5_on", []() {
- server.send(200, "text/plain", "Relais 5 eingeschaltet.");
- Pin_D5_on();
- });
- server.on("/Pin_D5_off", []() {
- server.send(200, "text/plain", "Relais 5 ausgeschaltet.");
- Pin_D5_off();
- });
- server.on("/Pin_D5_state", []() {
- server.send(200, "text/plain", String(digitalRead(Pin_D5)));
- });
- server.on("/Pin_D6_on", []() {
- server.send(200, "text/plain", "Relais 6 eingeschaltet.");
- Pin_D6_on();
- });
- server.on("/Pin_D6_off", []() {
- server.send(200, "text/plain", "Relais 6 ausgeschaltet.");
- Pin_D6_off();
- });
- server.on("/Pin_D6_state", []() {
- server.send(200, "text/plain", String(digitalRead(Pin_D6)));
- });
- server.begin();
- Serial.println("Webserver gestartet.");
- }
- void loop() {
- server.handleClient();
- }
- // Eingeschaltet müssen 0V sein, aus 3,3V. Darum HIGH und LOW vertauscht.
- void Pin_D1_on(){
- digitalWrite(Pin_D1, LOW);
- }
- void Pin_D1_off(){
- digitalWrite(Pin_D1, HIGH);
- }
- void Pin_D2_on(){
- digitalWrite(Pin_D2, LOW);
- }
- void Pin_D2_off(){
- digitalWrite(Pin_D2, HIGH);
- }
- void Pin_D3_on(){
- digitalWrite(Pin_D3, LOW);
- }
- void Pin_D3_off(){
- digitalWrite(Pin_D3, HIGH);
- }
- void Pin_D4_on(){
- digitalWrite(Pin_D4, LOW);
- }
- void Pin_D4_off(){
- digitalWrite(Pin_D4, HIGH);
- }
- void Pin_D5_on(){
- digitalWrite(Pin_D5, LOW);
- }
- void Pin_D5_off(){
- digitalWrite(Pin_D5, HIGH);
- }
- void Pin_D6_on(){
- digitalWrite(Pin_D6, LOW);
- }
- void Pin_D6_off(){
- digitalWrite(Pin_D6, HIGH);
- }
-
Oha, du hast Recht. Danke für die Hilfe.
-
Hi,
bin neu hier und kenne mich mit Arduino noch weitestgehend gar nicht aus.
Bisher habe ich eine Homebridge laufen und an dem Raps ein 8-Kanal-Relais, was auch zuverlässig funktioniert. Nun wollte ich den Raps am Relais gegen den ESP8266 D1 mini austauschen. Dafür habe ich den Code von hier in Betracht gezogen
WLAN-Relais mit dem ESP8266 und HTTP-API
und entsprechend erweitert, mit der Absicht, die anderen Pins noch zu schalten, aber egal, was ich mache, er schaltet immer nur den ersten, die weiteren kann ich ansprechen, aber sie ändern den Status nicht. Unten mal ein gekürztes Beispiel mit zwei Pins. Wo ist der Fehler? Komme einfach nicht weiter.
Danke schonmal für die Hilfe.
C- #include <ESP8266WiFi.h>
- #include <ESP8266WebServer.h>
- ESP8266WebServer server(80);
- const char* ssid = "SSID";
- const char* password = "pw";
- //Signal-Pins der Relais
- int Pin_D1 = 5;
- int Pin_D2 = 4;
- void setup()
- {
- pinMode(Pin_D1, OUTPUT);
- Serial.begin(115200);
- Serial.println("ESP Gestartet");
- 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([](){
- server.send(404, "text/plain", "Link wurde nicht gefunden!");
- });
- server.on("/", []() {
- server.send(200, "text/plain", "Startseite");
- });
- server.on("/Pin_D1_on", []() {
- server.send(200, "text/plain", "Relais 1 eingeschaltet");
- Pin_D1_on();
- });
- server.on("/Pin_D1_off", []() {
- server.send(200, "text/plain", "Relais 1 ausgeschaltet");
- Pin_D1_off();
- });
- server.on("/Pin_D1_state", []() {
- server.send(200, "text/plain", String(digitalRead(Pin_D1)));
- });
- server.on("/Pin_D2_on", []() {
- server.send(200, "text/plain", "Relais 2 eingeschaltet");
- Pin_D2_on();
- });
- server.on("/Pin_D2_off", []() {
- server.send(200, "text/plain", "Relais 2 ausgeschaltet");
- Pin_D2_off();
- });
- server.on("/Pin_D2_state", []() {
- server.send(200, "text/plain", String(digitalRead(Pin_D2)));
- });
- server.begin();
- Serial.println("Webserver gestartet.");
- }
- void loop() {
- server.handleClient();
- }
- void Pin_D1_on(){
- digitalWrite(Pin_D1, HIGH);
- }
- void Pin_D1_off(){
- digitalWrite(Pin_D1, LOW);
- }
- void Pin_D2_on(){
- digitalWrite(Pin_D2, HIGH);
- }
- void Pin_D2_off(){
- digitalWrite(Pin_D2, LOW);
- }