Unbeantwortete Themen | Aktive Themen Aktuelle Zeit: Sa 18. Aug 2018, 16:44



Auf das Thema antworten  [ 15 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Anleitung Alarm quittieren mit IoT WLAN-Button 
Autor Nachricht

Registriert: So 12. Nov 2017, 20:00
Beiträge: 7
Hallo,

ich hab mir auf Basis der Anleitung aus CT Heft 01/2017 einen IoT WLAN-Button gebaut um damit den anstehenden Alarm zu quittieren.
Leider kann ich den CT Artikel hier nicht posten. Der Link dazu ist: http://ct.de/yj3v

Es handelt sich um ein umgebautes LED-Schranklicht mit einem ESP-01 Board auf dem ein ESP8266 Microcontroller seinen Dienst tut.
Zum Programmieren benötigt man einen günstigen USB Seriell Converter und die kostenlose Arduino Entwicklungsumgebung IDE.

Beim Tastendruck wird das Modul aus dem Schlafmodus geweckt, in dem es extrem wenig Energie verbraucht.
Anschließend loggt es sich per W-Lan am Access Point ein und schickt einen HTTP Request an die Quittungs-URL des Alarm Servers.
Damit das funktioniert muss auf Eurem Alarmfax-Rechner die Webseite installiert sein.

Ich poste hier mal meinen IDE-Sketch für das ESP-Board und wünsche viel Spaß beim nachbauen.

Gruß Schouster

Code:
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>

/************************* WiFi Access Point *********************************/

#define WLAN_SSID       "WLAN-FZG-Halle"
#define WLAN_PASS       "xxxxxxxxxxxxxxx"
#define LED             2

/************************** Server Data ***************************************/

#define host            "http://alarmserver2.fritz.box"    // Alarmserver
#define url             "/Alarm/ResetLatestOperation"     // Letzten Alarm quittieren

/************************ Serial Interface ***********************************/

#define USE_Serial Serial

/************************** Global State *************************************/

// HTTPClient
HTTPClient http;                    //Declare object of class HTTPClient

/*************************** Sketch Code ************************************/

void setup() {
 
  String startup = ESP.getResetReason(); // Startart abfragen um Scriptstart bei Batteriewechsel zu verhindern
  USE_Serial.begin(115200);
  USE_Serial.println();
  USE_Serial.println(startup); // Ausgabe Startart
  if (startup != "Deep-Sleep Wake") {
    shutdown(); // bei Start ohne Reset shutdown
  }
 
  USE_Serial.println("Initializing outputs...");
  pinMode(LED, OUTPUT);
  digitalWrite(LED, LOW);  // LED on
 
  USE_Serial.println("Starting Wifi connection...");
  WiFi.persistent(false); // verhindert das speichern der Wifi Konfig bei jedem Neustart
  WiFi.mode(WIFI_STA); // Wifi AP Mode bei Start unterdruecken
  WiFi.begin(WLAN_SSID, WLAN_PASS);
 
  int failcounter = 200;
  USE_Serial.print("Waiting for a connection");
  while (WiFi.status() != WL_CONNECTED) {
    delay(100);
    USE_Serial.print(".");
    if (failcounter <= 0) {
      USE_Serial.println();
      USE_Serial.println("Giving up to connect Wifi.");
      blinkError();
      shutdown();
    }
    failcounter--;
  }

  // Wifi Connect OK
  digitalWrite(LED, HIGH);  // LED off
  USE_Serial.println();
  USE_Serial.print("Wifi connected with IP: ");
  USE_Serial.println(WiFi.localIP());
  delay(200);
 
    // send HTTP GET Message
    String HTTPHost = String(host) + url; //Specify request destination as String   
   
    USE_Serial.println("Sending a message to the server.");
    http.begin(HTTPHost);
    http.addHeader("Content-Type", "text/plain"); //Specify content-type header

    USE_Serial.println("Connected to Client: " + HTTPHost);
    int httpCode=http.GET(); //Send the request

    // check HTTP response
    String payload = http.getString(); //Get the response payload
    USE_Serial.println("Server HTTP return Code: " + String(httpCode)); //Print HTTP return code

    if (httpCode > 0) {
      USE_Serial.println("Server response: " + payload); //Print request response payload
      blinkSent();
      delay(300);
    } else {
      String error = http.errorToString(httpCode).c_str();
      USE_Serial.println("[HTTP] GET... failed, error: " + error);
      blinkError();
    }
    if (httpCode == 200) {
      USE_Serial.println("[HTTP] GET... successfully <200>.");
      blinkSuccess();
    }
   
    // close HTTP connection
    http.end(); //Close connection
    USE_Serial.println("Closing the HTTP connection.");
    shutdown();
}

void loop() {
  // this should never be reached.
}

void blinkSuccess() {
  for (int i = 4; i < 50; i=(5*i) >> 2) {
    digitalWrite(LED, HIGH);   // turn the LED off
    delay(10*i);               // wait
    digitalWrite(LED, LOW);    // turn the LED on
    delay(10*i);               // wait
  }
}

void blinkError() {
  for (int i = 0; i < 28; i++) {
    digitalWrite(LED, HIGH);   // turn the LED off
    delay(125);                        // wait
    digitalWrite(LED, LOW);    // turn the LED on
    delay(125);                        // wait
  }
}

void blinkSent() {
  for (int i = 0; i < 2; i++) {
    digitalWrite(LED, LOW);   // turn the LED on
    delay(250);                        // wait
    digitalWrite(LED, HIGH);    // turn the LED off
    delay(250);                        // wait
  }
}

void shutdown() {
  USE_Serial.println("Shutting down.");
  USE_Serial.println("Going to sleep.");
  ESP.deepSleep(0);
  USE_Serial.println("Sleep failed.");
  while(1) {
    blinkError();
  }
}


So 12. Nov 2017, 20:51
Profil
OpenFireSource-Team

Registriert: So 28. Okt 2012, 08:45
Beiträge: 190
Hi,

cooles Projekt!!!

Für alle die keine c't haben hilft diese Anleitung auf Instructables weiter: http://www.instructables.com/id/Programming-ESP8266-ESP-12E-NodeMCU-Using-Arduino-/

Grüße Philipp

_________________
Entwickler AlarmWorkflow
--------
Kein Support via PN!


So 19. Nov 2017, 17:15
Profil

Registriert: Di 3. Okt 2017, 14:45
Beiträge: 38
Hallo Schouster,

Das hört sich ja super an, das statt normalen Taster mit einem Schlüsseltaster kombinieren, so das nicht jeder unbefugt den Alarm quittieren kann
wäre top. Leider habe ich keinerlei Erfahrungen mit diesen Platinen, kann man sich sowas von dir fertigen lassen? (ist ja bald Weihnachten)
um den kompletten c´t Artikel lesen zu können muss man sich ja erst kostenpflichtig anmelden.
Wenn ich bei Ebay ESP-01 eingebe kommen ja schon zig verschiedene Varianten.

Gruß Iev

_________________
Freiwillige Feuerwehr Oberroning
www.ff-oberroning.de


Mo 20. Nov 2017, 21:24
Profil
OpenFireSource-Team

Registriert: So 28. Okt 2012, 08:45
Beiträge: 190
Hallo Iev,

wenn es nicht darum geht, dass es sehr Platz sparsam sein muss dann kannst du dich (wenn du ein bisschen Zeit hast) auch mit Arduinos beschäftigen.
Es gibt dort inzwischen ziemlich viele Anleitungen und Platinen die man nur zusammen stecken muss und ein paar Zeilen programmieren und dann hast du ein ähnliches System.

Gruß Philipp


Mo 20. Nov 2017, 23:46
Profil

Registriert: Di 3. Okt 2017, 14:45
Beiträge: 38
Naja, wäre schon cool wenn es in ein Aufputz Schaltergehäuse passen würde, Strom könnte ja per USB-Verlängerung über den Kabelkanal eingespeist werden

_________________
Freiwillige Feuerwehr Oberroning
www.ff-oberroning.de


Di 21. Nov 2017, 12:06
Profil
OpenFireSource-Team

Registriert: So 28. Okt 2012, 08:45
Beiträge: 190
Mit einem Arduino Nano ist es bestimmt möglich und platzsparsam:)


Di 21. Nov 2017, 12:15
Profil

Registriert: Di 3. Okt 2017, 14:45
Beiträge: 38
Hättest du einen LINK damit ich das richtige besorgen kann?

Bei Pollin https://www.pollin.de/p/arduino-nano-810330

Nur lese ich da nix von WLAN

_________________
Freiwillige Feuerwehr Oberroning
www.ff-oberroning.de


Di 21. Nov 2017, 14:18
Profil

Registriert: So 12. Nov 2017, 20:00
Beiträge: 7
Hallo lev,

in die Fertigung kann ich da leider nicht gehen,
dazu fehlt mir die Zeit. Ich schreibe übers WE noch ein paar Infos zusammen mach Bilder dazu und poste es hier. Natürlich kann man die Platine auch in ein Aufputz Schaltergehäuse einbauen.
Der Arduino nano braucht für W-Lan noch ein Zusätzliches Board wie das ESP-01. Es wird prinzipiell nur teurer und den Arduino brauchst nicht wirklich für die mini Aufgabe. Hier ist mal ein Link zu dem ESP-01 Board das ich verwendet habe: http://r.ebay.com/W7K4Ks

Gruß Schouster


Mi 22. Nov 2017, 10:26
Profil

Registriert: Di 3. Okt 2017, 14:45
Beiträge: 38
Hallo Schoster,

Eine Anleitung wäre super toll. Das ESP-01 Board von deinem Link habe ich soeben gekauft!
Werden sonst noch Bauteile benötigt?
Anschlussplan oder Verdrahtungsplan wäre super.

Will das mit einem Schlüsseltaster kombinieren, damit nicht unbefugt ein Einsatz bestätigt werden kann.

Das oben gepostete Script muss ich dann mit dem Ardinotool auf das ESP-01 Board schreiben?

Gruß Iev

_________________
Freiwillige Feuerwehr Oberroning
www.ff-oberroning.de


Mi 22. Nov 2017, 18:03
Profil

Registriert: So 12. Nov 2017, 20:00
Beiträge: 7
Hallo lev,

ja genau. Ganz oben musst du es noch an Euer Netzwerk anpassen.

Hier musst du den Namen deines W-Lan's und das Passwort eintragen:
#define WLAN_SSID "WLAN-Name"
#define WLAN_PASS "Passwort"

Hier muss der Name oder die IP Adresse Eures Servers rein: z.B. "http://192.168.178.20" oder "http://alarmserver.fritz.box"
#define host "http://ip oder namen des servers" // Alarmserver

Schreibe gerade noch eine Anleitung wo alles drin steht. Deine Idee mit dem Schlüsselschalter find ich gut.
Zwei Sachen gibt es unbedingt zu beachten damit es später funktioniert: Du brauchst W-Lan Empfang am Installationsort und
auf dem Server muss die Webseite installiert sein.

Gruß
Schouster


Fr 24. Nov 2017, 21:09
Profil
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Auf das Thema antworten   [ 15 Beiträge ]  Gehe zu Seite 1, 2  Nächste

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software for PTF.
Deutsche Übersetzung durch phpBB.de