Haustüer per ESP8266-12E und Blynk App öffnen

Hallo zusammen,

habe Anfang März meinen ersten Arduino bestellt und seitdem völlig davon begeistert.
Mein erstes größeres Projekt, zwei Gagarentore per App öffnen zu können, die Endpositionen der Tore angezeigt bekommen und den Einfahrtbereich per Ultraschall überwachen habe ich schon mal hin bekommen. Als Verbindung zum Smartphone habe ich die App Blynk verwendet.

Nun kam mir der Gedanke, parallel zur normalen Haussprechanlage (Bus System von Ritto) den Türöffner der Haustür ebenfalls per Blynk App öffnen zu können, für den Fall, das man mal den Schlüssel vergessen hat, etc.

Dazu würde ich ein Relaiskontakt so schalten, das er 6V AC vom Trafo direkt auf den Türöffner gibt. Was sonst die Steuerung der Haussprechanlage übernimmt also übergehen und per App schalten.

Programmiertechnisch und auch Hardwaretechnisch ist dies ja nicht sehr aufwändig.
Meine Frage ist aber, IST das sicher, bzw. kann ich an meinem Vorhaben etwas verbessern?

Zu meinen Mikrokontroller Wissensstand: Habe Anfang der 2000er etwas Siemens S5 per Programmiergerät programmiert (einfache Ein- und Ausgänge) und beruflich mit Logo zu tun gehabt. Seitdem nichts mehr in die Richtung gemacht. Mit dem Uno R3 und div. ESP8266 Board habe ich dank dem Internet nun etwas ich nenne es mal copy&paste/trail&error Grundwissen aufgebaut.
Wenn der Sketch also einfach ist, bin ich nicht böse :slight_smile:

Viele Grüße
Norman

Du solltest als Erstes dieses Vorhaben mit Deiner Versicherung absprechen. Du wirst wahrscheinlich Deinen Versicherungsschutz gegen Einbruch/Diebstahl verlieren. Spätestens jedoch im Schadensfall.

Gruß Tommy

Edit: Weil es keinen HTTPS-Server für den ESP8266 gibt.

Hi

HTTPS: Da das eigene WLan wohl verschlüsselt ist, sehe ich hier noch keine Schwachstelle, oder? Dafür darf die Verbindung allerdings nicht über das INet, oder öffentliche Netzte gehen, sondern rein vom heimischen, sicheren WLan.

Versicherung: Da eine Tür erst abgeschlossen als verschlossen gilt, dürfte sich hier kaum etwas ändern - nicht abgeschlossen könnte man die Tür auch offen stehen lassen, mit dem gleichen Versicherungsschutz.

MfG

Wenn da Blynk App steht, gehe ich vom worst case aus und das heißt Internet und das ist für mich mit einer offenen Tür bzw. Schlüssel unter der Fußmatte gleichgesetzt. Im Endeffekt muss das jeder selbst wissen, was er tut. Er sollte sich nur nicht wundern, wenn die Bude leer ist und die Versicherung nicht zahlt.

Gruß Tommy

Ich hätte da eher wenig Bedenken. Einbrecher knacken im Privatbereich keine individuell gebaute Anlagen. Die haben andere Methoden bzw. suchen sich andere Schwachstellen. Einen zuverlässigen Sperrcode solltest du aber schon auf dem Smartphone haben. Es gibt auch Motorantriebe für den Schliesszylinder. Wenn schon, denn schon.

Mhh, eure Antworten bestätigen meine Bedenken bzgl. der Sicherheit.

Gibt es "sicherere" Alternativen? Habe erst an einen RFID Cardreader gedacht (wollte den eigentlich am Garagentor mit einbinden, aber da war schon ein Schlüsselschalter am Torpfosten vorhanden, also liegt der nun hier rum. Da ich gelesen habe, das das Script vom RFID Cardreader nicht sicher ist, fällt der also komplett weg. Wie sieht es mit Zahlenfeld o.Ä. aus? Diese Bedienfelder gibt es auch zu meiner Haussprechanlage, da von Ritto, aber mit 600€ ziemlich teuer...

Die Bedienung per App nicht über das Internet und mit Blynk laufen lassen, würde was bedeuten? Ich brauche einen Server zu hause, der das übernimmt? Da fehlt mir dann doch etwas der Wissensstand für...

Hi

Was ist an dem Sketch zum RFID-Reader nicht sicher? Bitte hier nicht nachplappern, was man irgendwo im Gesichtsbuch lesen durfte - ich möchte sogar behaupten, daß ein Standalone-Arduino um Längen sicherer ist, als Alles gesicherte mit Online-Zugang. Aber klar: Wen man an die Hardware ran kommt, ist's vorbei.

Meine RFID-Türen sind definitiv nicht sicher (da der zu brückende Kontakt AUSSEN !! liegt) - und auch mit Eigenbau, also nur RFID-Leser Außen und die Schalterei/Logik innen, wird's kein Fort Knox.

Aber ich käme auch nicht auf die Idee, meine Türen online öffnen zu wollen - somit wäre 'Logik und Schaltstelle innen' schon ein großer Schritt, zumindest bei mir hier.

Ritto, oder wessen Sprechanlage man hat, werden sich schon einige Gedanken gemacht haben, lassen Sich Diese aber auch bezahlen. Möchte trotzdem behaupten, daß irgendwo im Kleingedrucktem steht, daß die Tür nur abgeschlossen als verschlossen gilt - eben weil - spätestens Ritto - Dir die Tür öffnen kann.

Alles, was egal wie bedient werden kann, kann auch von egal wem bedient werden - Mal mit etwas mehr Aufwand, Mal auch nur 'einfach so'.

Wenn Sicherheit bei Dir im Vordergrund steht: Laß das Basteln - Das wird funktionieren, aber nie so sicher, wie komerzielle Lösungen. Wenn's Dir nur darum geht, bequem in Deine Hütte rein zu kommen, ist Basteln kein schlechter Anfang (und man kann sich an RFID-Öffnung gewöhnen, bis auf die Brandschutztür zum Ölraum gehen meine Türen ALLE per RFID auf).

MfG

du sprichst von garagentoren: Wenn du dort mit deinem Smartphone noch in deinem Heim-WLAN bist, dann könntest ja "relativ sicher" im Heim-Netzwerk deine Toröffnung starten - ganz ohne Internet-Zugang...

Also die Technik aussen an die Türe bauen wäre schon eine Einladung zum reingehen. Wenn die komplett RFID Technik innen angebracht ist, dann finde ich das rel. sicher. Ausserdem, wenn eine Türe abgesperrt und einigermaßen stabil ist, dann gehen die Einbrecher auch nicht durch die Türe, sondern suchen sich Schwachstellen wie die Fenster. Gibt es die nicht, gehen sie weiter zum Nachbaren. Ich bin gerade etwas am lernen, wie man Türen und Fenster öffnet. Und da ist eine Türe die nur zugezogen ist, natürlich gar kein Hindernis und wenn man abgesprerrt hat, würde ich durchs Fenster gehen. Nur wenn das nicht geht, weil es eine Wohnung in oberen Etagen ist, dann gehe ich an den Schließzylinder. Wenn der nicht gesichert ist gegen ausziehen, ist die Türe auch in 20 Minunten offen, obwohl abgesperrt. Aber ich würde es vorziehen zum öffnen ein kleines Loch in einen Fensterrahmen zu boren, das man wieder verschließen kann, bevor ich beim Zylinder ziehen an der Türe das komplette Schloss kaputt mache. Schloss heißt, nicht nur der Zylinder, sondern das ganze Schoss in der Türe, wird auch sehr stark verbogen beim Zylinder ziehen.

Franz

Über das Internet würde ich das auch nie und nimmer machen, Du wärst stets von einem Server abhängig, den Du nicht kontrollieren oder steuern kannst.

Blynk kannst Du aber auf einem lokalen Server laufen lassen, der müsste dann rund um die Uhr arbeiten.

Alternativ könntest Du mit Virtuino arbeiten, und den hinter der Tür sitzenden ESP als Server laufen lassen. Mit dem Handy verbindest Du Dich in das WLAN und steuerst per selbst erstelltem Dashboard (in Virtuino-App) die Tür o.Ä.

Das Virtuino ist versicherungssicher? Ich kenne es nicht.

Ich würde in meinem lokalen Netz nichts zulassen, was von außen eine Verbindung aufbaut.

Wenn dann nur Anmeldung direkt am WLAN, was ja an der Tür verfügbar sein dürfte. Das ist aber nicht versicherungstechnisch abgeprüft.

Gruß Tommy

Das Virtuino ist versicherungssicher? Ich kenne es nicht.

-->Dann wirds ja mal Zeit^^ Ob es versicherungssicher ist? Keine Ahnung, hab mit Versicherungen nicht allzu viel am Hut

Bevor man an einem Virtuino-Server rumpfuschen kann, muss man mind. 2 Hürden überwinden: a) Verbindung ins lokale WLAN, hier gibts das erste Passwort. Virtuino funktioniert [u]nicht[/u] über das Internet. b) Das Passwort des Virtuino-Servers muss bekannt sein, also auch mit Arduino-Kenntnissen UND WiFi-Zugang kann man auf Anhieb nichts weiter ausrichten.

Wenn alles sowieso im lokalen Netz läuft, warum brauche ich dann noch Virtuino?

Gruß Tommy

Blynk braucht einen richtigen Computer, der rund um die Uhr laufen müsste. Virtuino nur den Controller selbst, der entweder im Haus-WLAN verbunden ist oder sein eigenes Netz aufbaut. Natürlich kann man auch gleich einen eigenen kleinen Webserver auf dem ESP laufen lassen, nur dessen Ansteuerung ist alles andere als komfortabel mit dem Smartphone, während Virtuino ein schickes, selbst zusammenstellbares Interface zur Verfügung stellt.

Also wo der Webserver auf dem (richtigen - nicht die -01 Krücken) unkonfortabel sein soll, musst Du erst noch beweisen. Der ist sowas von einfach - HTML-Grundkenntnisse vorausgesetzt.

Aber ist ja egal. Jeder was er mag und versteht. Ich mag nur nicht unnötige Zwischensysteme, die nix bringen und ausfallen können.

Gruß Tommy

also ich finde einfache Schaltaufgaben gehen locker mit einem ESP. Wozu eine Extra App oder gar ein 3rd party service. So eine simple Weboberfläche läuft auf Iphone, Android, und jeden halbwegs vernünftigen Browser…

sonoff.png

Mit Komfort beziehe ich mich auf das Endergebnis, nicht auf die dazu nötige Arbeit. HTML-Webserver: spartanisch eingerichtete Website, die man mittels IP-Adresse im Browser öffnen muss. Virtuino: App öffnen, Verbinden-Button, Aktions-Button (Slider oder was auch immer) betätigen. Ist am Ende einfacher zu bedienen und sieht besser aus.

noiasca: 2018 kann man auch einen Shortcut auf eine IP legen, ergo kein anderer Aufwand als eine native App zu starten.

Genau so sehe ich das auch!!

Und ob so eine "App", mit nur 36 MB, über das Smartphone nach Hause telefoniert, dürfte auch schwer zu kontrollieren sein.

Gruß Fips

Hatte bevor ich blynk entdeckt hatte auf dem ESP8266 folgenden Code laufen:

/*
 * Creation:    02.11.2016
 * Last Update: 20.12.2016
 *
 * Copyright (c) 2016 by Georg Kainzbauer <http://www.gtkdb.de>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 */

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>

// wireless network credentials:
const char* ssid = "<your_ssid>";
const char* password = "<your_wireless_password>";

// hostname for this system:
const char* host = "webcontrol";

// define GPIO pins:
const int output1 = 0;
const int output2 = 2;

// output status variables:
boolean output1_state = false;
boolean output2_state = false;

// web server on port 80:
ESP8266WebServer server(80);

String getContent()
{
  // create content for the website:
  String content = "<html><head><title>ESP8266 WebControl</title></head><body>";
  content += "This page shows the current state of the ESP8266 outputs and can be used to control these.

";

  if (output1_state)
  {
    content += "Output1: <a href=\"output1\"><button>ON</button></a>
";
  }
  else
  {
    content += "Output1: <a href=\"output1\"><button>OFF</button></a>
";
  }

  if (output2_state)
  {
    content += "Output2: <a href=\"output2\"><button>ON</button></a>
";
  }
  else
  {
    content += "Output2: <a href=\"output2\"><button>OFF</button></a>
";
  }

  content += "</body></html>";

  return content;
}

void setup()
{
  // configure GPIO 0 and GPIO 2 as outputs:
  pinMode(output1, OUTPUT);
  pinMode(output2, OUTPUT);

  // set outputs to low:
  digitalWrite(output1, LOW);
  digitalWrite(output2, LOW);

  // initialize serial port for debugging purpose:
  Serial.begin(115200);

  // connect to the wireless network:
  WiFi.begin(ssid, password);

  // wait for wireless network connection and print connection settings:
  Serial.println("");
  while (WiFi.status() != WL_CONNECTED)
  {
    Serial.print(".");
    delay(500);
  }
  Serial.println("");
  Serial.println("Wireless network connection established.");
  Serial.print("SSID: ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());

  // initialize mDNS:
  if (MDNS.begin(host))
  {
    Serial.println("mDNS responder started");
  }
  MDNS.addService("http", "tcp", 80);

  // start HTTP server:
  server.begin();
  Serial.println("HTTP server started");

  // print start page:
  server.on("/", [](){
    server.send(200, "text/html", getContent());
  });

  // control output1:
  server.on("/output1", [](){
    if (output1_state)
    {
      digitalWrite(output1, LOW);
      output1_state = false;
    }
    else
    {
      digitalWrite(output1, HIGH);
      output1_state = true;
    }
    server.send(200, "text/html", getContent());
    delay(1000);
  });

  // control output2:
  server.on("/output2", [](){
    if (output2_state)
    {
      digitalWrite(output2, LOW);
      output2_state = false;
    }
    else
    {
      digitalWrite(output2, HIGH);
      output2_state = true;
    }
    server.send(200, "text/html", getContent());
    delay(1000);
  });
}

void loop()
{
  // handle HTTP request:
  server.handleClient();
}

Der läuft über ein webinterface local in meinem WLAN.

Damit umgehe ich doch das Problem, meinen Kram auf irgendeinem Server im Internet liegen zu haben, oder?

Ja, es sei denn, Du machst in Deinem Router eine Verbindung zum ESP auf.

Gruß Tommy