Hausgemachtes Sicherheitssystem basierend auf Produkten für intelligentes Zuhause von Nootehnika

Guten Tag, liebe Gemeinschaft. Ich möchte Ihnen ein Experiment bei der Implementierung von Sicherheitssystemen für zu Hause mit Geräten für ein Smart Home der Firma Nootehnika vorstellen. Ich möchte nur reservieren, dass dies eines der ersten Experimente ist, und habe mir das Ziel gesetzt, nicht "eine uneinnehmbare Bastion zu bauen", sondern eine Demonstration der Möglichkeiten, die von mir ausgewählten Geräte zu verwenden, zu experimentieren und Lektionen zu lernen sowie Rückmeldungen von Ihnen zu erhalten.

Kurz gesagt, das von mir entworfene System sollte im Scharfschaltmodus jede Person fotografieren, die sich der Eingangstür nähert, und ein Foto an eine E-Mail-Adresse senden sowie eine E-Mail-Nachricht senden, wenn sich eine Bewegungsregistrierung im Flur befindet (d. H. Bewegung in der Wohnung). .Also zur Formulierung des Problems.

1. Feststellung des Problems


Das System, das ich entwerfe, sollte:

  • Machen Sie im Aktivierungsmodus Fotos von jeder Person, die sich der Eingangstür nähert, und senden Sie das Foto an eine E-Mail-Adresse.
  • Senden Sie im Aktivierungsmodus eine E-Mail-Nachricht, wenn Sie den Verkehr auf dem Flur registrieren (ohne Foto, da ich keine IP-Kameras habe).
  • bieten verschiedene Schnittstellen zum Aktivieren und Deaktivieren.

Mit verschiedenen Aktivierungsschnittstellen meine ich:

  • Umschalten in den Schutzmodus und Deaktivierung mit Nootech-Funkschaltern;
  • Umschalten in den Schutzmodus und Deaktivierung über ein Webinterface zur Steuerung eines Smart Home.

2. Beschreibung der Lösung


Um dieses Problem zu lösen, habe ich folgende Hardware verwendet:

  • zwei Bewegungssensoren PM112;
  • Signalempfänger von Sensoren und Schaltern RX2164;
  • Schalter PU311-2;
  • Nettop 3VI (basierend auf dem Prozessor Atom D525);
  • Chinesische noname IP-Kamera.

Ich habe bereits eine kurze Beschreibung der Geräte für den Bau des Smart Home der Firma Notechnika im Abschnitt "Einführung" des Artikels angeführt , deshalb werde ich mich hier nicht auf dieses Thema konzentrieren. Darüber hinaus können alle Einzelheiten über die Geräte finden Sie auf der off.sayte finden Unternehmen .

Also zur Beschreibung des Systems. Debian Linux 7, die Simple Event Correlation (SEC) -Software und ein Linux-Toolkit zur Steuerung von Nootech-Geräten von Oleg Artamonov sind auf dem 3VI-Netz installiert .

Bewegungssensoren (PM112) sind im Vorraum vor der Eingangstür und im Flur (in der Wohnung) installiert. Ein USB-Signalempfänger RX2164 ist an das Netz angeschlossen. Der Empfänger empfängt Signale von Sensoren und Schaltern, und die auf dem Netz installierten Hilfsprogramme zur Steuerung der Geräte des Technikers (im Folgenden als Noolite-Hilfsprogramme bezeichnet) senden die empfangenen Signale an das Syslog. SEC liest die Datei, in die die Syslog-Daten geschrieben werden, und verarbeitet sie gemäß den konfigurierten Regeln. Als Ergebnis der Verarbeitung werden Aktionen wie das Empfangen von Fotos von einer IP-Kamera und das Senden von E-Mails ausgeführt.

Das Aktivieren (und Deaktivieren) des Sicherheitsmodus erfolgt auf zwei Arten:

  1. durch Drücken einer Taste am Schalter PU311-2;
  2. Knopfdruck in der Weboberfläche des Smart Home Control Systems.

Ein Blockdiagramm, das den Betrieb des Systems veranschaulicht, ist in



1 gezeigt. 1 - Ein Blockdiagramm, das den Betrieb des Systems darstellt

3. Installation der Systemhardware


Für dieses System verwende ich dieselben 2 Bewegungssensoren, deren Installation ich in Abschnitt 4 des Artikels beschrieben habe .

Kurz gesagt, einer der Sensoren ist in der Nähe der Eingangstür im Vorraum (außerhalb der Wohnung) installiert. Die Empfindlichkeit dieses Sensors ist so eingestellt, dass Bewegungen in unmittelbarer Nähe der Tür aufgezeichnet werden. Der zweite Sensor ist unmittelbar in der Nähe der Eingangstür installiert, jedoch bereits in der Wohnung. Die Empfindlichkeit wird so eingestellt, dass die Bewegung in unmittelbarer Nähe der Tür fixiert wird.

Die IP-Kamera befindet sich außerhalb der Wohnung im Vorraum unter der Decke. Eine Eingangstür und etwa 1,5 Meter vor ihr fallen in ihr Sichtfeld.

Der PU311-2-Schalter ist im Gehäuse installiert, damit er nicht ins Auge fällt und nicht versehentlich gedrückt wird.

Das 3VI-Netz mit dem Signalempfänger RX2164 befindet sich in der Nähe des Zwischengeschosses, um einen gleichmäßigen Empfang der Signale von Sensoren und Schaltern sicherzustellen.

Das Geräteinstallationsdiagramm ist in Abbildung 2 dargestellt.



Abbildung 2 - Geräteinstallationsdiagramm

4. Einrichten der Software


Das Software-Setup umfasst:

  • Einrichten von Noolite-Dienstprogrammen zum Empfangen von Signalen von Sensoren und Schaltern;
  • Einrichtung von SEC-Regeln zur Auslösung von Signalen von Sensoren und Schaltern;
  • Erstellen eines Skripts, das das Foto von der Kamera empfängt und E-Mails sendet;
  • Erstellen einer Schaltfläche im und aus dem System in der Weboberfläche.

Einrichten von Noolite-Dienstprogrammen zum Empfangen von Signalen von Sensoren und Schaltern


Damit der Empfänger RX2164 Signale von einem Sensor oder Schalter empfangen kann, muss er „gebunden“ werden. Drücken Sie dazu die „Bind“ -Taste am Sensor (auf der Rückseite) und führen Sie den Befehl auf dem Computer aus, an den der Empfänger angeschlossen ist: nooliterxcfg –bind <Kanalnummer von 1 bis 64>. Ebenso die Anbindung des Schalters an den Empfänger.

In meinem Fall war der Sensor im Vorraum mit Kanal 3 verbunden, der Sensor in der Wohnung war mit Kanal 2 und die beiden Schaltknöpfe mit Kanal 1 bzw. 4 verbunden.

Um Signale von Sensoren in Echtzeit zu empfangen, müssen Sie das Dienstprogramm nooliterx im Daemon-Modus ausführen. Der Installationsprozess der Dienstprogramme und ihre Einstellungen werden vom Entwickler selbst (Oleg Artamonov in der Dienstprogrammdokumentation) sowie von mir in Abschnitt 4 des Artikels (LINK) beschrieben. Als Ergebnis erhalten wir die Aufzeichnung von Signalen von Sensoren und Schaltern im Syslog. Es bleibt nur noch das Syslog selbst zu konfigurieren, um diese Meldungen in einer Datei aufzuzeichnen, und Folgendes wird abgerufen (Beispiele für Meldungen von Sensoren):

Jan  7 15:47:39 vmon nooliterx[23022]: Received: status 133, channel 3, command 25, format 1, data 2 0 0 0
Jan  7 18:43:58 vmon nooliterx[23022]: Received: status 135, channel 2, command 25, format 1, data 1 0 0 0

Beispielnachrichten von den Schaltern (wenn Sie auf die Schaltflächen klicken) sehen etwas anders aus:

Jan  5 22:29:43 vmon nooliterx[23022]: Received: status 26, channel 1, command 4, format 0, data 1 0 0 0
Jan  5 22:27:55 vmon nooliterx[23022]: Received: status 145, channel 4, command 4, format 0, data 1 0 0 0

Legen Sie SEC-Regeln für die Auslösung von Signalen von Sensoren und Schaltern fest.


SEC ist ein Dienstprogramm zum Verwalten von Ereignisprotokollen. Kurz gesagt, bei der Eingabe erhält es einen Ereignisstrom, von dem jedes die Übereinstimmung mit den Vorlagen angepasster Regeln prüft. Wenn eine Übereinstimmung gefunden wird, wird die in der entsprechenden Regel angegebene Aktion gestartet. Die Sache ist erstaunlich flexibel in der Anwendung. Es gibt eine ausführliche Manpage im Web.

SEC wird in meinem System verwendet, um Nachrichten von Sensoren und Schaltern im Ereignisstrom in Echtzeit zu finden und ein Skript zu starten, das ein Foto aufnimmt und E-Mails sendet oder das System einfach ein- und ausschaltet.

In der SEC habe ich 4 Regeln aufgestellt. 2 - für die Verarbeitung von Ereignissen von Bewegungssensoren und zwei - für die Verarbeitung von Signalen von zwei Tasten am Schalter. Die Regeln befinden sich in der Datei /etc/sec.conf.

Regel 1: Verarbeitung des Signals vom Bewegungssensor im Vestibül (dem mit Kanal 3 verbundenen Sensor)

type=SingleWithSuppress
ptype=RegExp
pattern=\w+\s+\d+\s+\d+\:\d+\:\d+\s+\w+\s+nooliterx\S+\s+Received\:\s+status\s+\d+,\s+channel\s+(3),\s+command\s+25.*
desc=Motion sensor frontdoor $1 triggered
action=shellcmd (/usr/local/smarthome/security/send_photo_alert.sh $1); event %s
window=60

Der Typ dieser Regel - „SingleWithSurpress“ - soll nur innerhalb des durch den Parameter „window“ angegebenen Zeitintervalls in Sekunden auf das erste registrierte Ereignis reagieren. Ie Diese Einstellung besagt, dass die Regel nur einmal pro Minute funktioniert und die im Parameter "action" angegebene Aktion nur einmal pro Minute gestartet wird. Dies geschieht, um sicherzustellen, dass sich jemand für einige Minuten an der Tür aufhält, ohne die Post mit Tonnen von Briefen zu spammen. Der Parameter "Muster" enthält einen regulären Ausdruck, nach dem Ereignisse von dem an Kanal 3 angeschlossenen Sensor gesucht werden. Der Parameter "Aktion" enthält zwei Aktionen - shellcmd, die das Skript ausführt und den aus dem regulären Ausdruck ausgewählten Parameter (in diesem Fall) übergibt Fall, der die Zahl "3" darstellt) und die zweite Aktion "event% s" wird verwendet, um den im Parameter "desc" geschriebenen Ausdruck auf andere Regeln zu übertragen, was für den Betrieb dieses Systems nicht erforderlich ist und weggelassen werden kann. Der Parameter "desc" enthält zusätzliche Dienstinformationen, die von anderen Regeln verwendet werden. Für dieses System ist es nicht notwendig und dort können beliebige Daten eingegeben werden.

Regel 2: Verarbeitung des Signals vom Bewegungssensor im Korridor (Sensor ist mit Kanal 2 verbunden)

type=SingleWithSuppress
ptype=RegExp
pattern=\w+\s+\d+\s+\d+\:\d+\:\d+\s+\w+\s+nooliterx\S+\s+Received\:\s+status\s+\d+,\s+channel\s+(2),\s+command\s+25.*
desc=Motion sensor lobby $1 triggered
action=shellcmd (/usr/local/smarthome/security/send_photo_alert.sh $1); event %s
window=60

Alles hier ist der Regel 1 ähnlich. Es ist erwähnenswert, dass dem Skript die Nummer "2" übergeben wird, die aus einem regulären Ausdruck erhalten wird.

Regel 3: Verarbeitung des Signals von einem an Kanal 1 angeschlossenen Schaltknopf

type=single
ptype=regexp
pattern=\w+\s+\d+\s+\d+\:\d+\:\d+\s+\w+\s+nooliterx\S+\s+Received\:\s+status\s+\d+,\s+channel\s+(1),\s+command\s+4.*
desc=switch guard mode online
action=shellcmd (/bin/echo"online" > /usr/local/smarthome/security/status)

Diese Regel ist noch einfacher: Sie funktioniert bei jedem Ereignis, das mit dem im Parameter "pattern" angegebenen regulären Ausdruck übereinstimmt. Als Aktion wird in der Systemstatusdatei aufgezeichnet. Diese Datei wird von einem Skript analysiert, das nach den Regeln 1 und 2 ausgeführt wird. Bei Status "Online" wird das Skript ausgelöst, bei dem Wert "Offline" - das Skript wird nicht ausgelöst. Mehr dazu etwas weiter.

Regel 4: Verarbeitung des Signals von einem an Kanal 4 angeschlossenen Schaltknopf

type=single
ptype=regexp
pattern=\w+\s+\d+\s+\d+\:\d+\:\d+\s+\w+\s+nooliterx\S+\s+Received\:\s+status\s+\d+,\s+channel\s+(4),\s+command\s+4.*
desc=switch guard mode offline
action=shellcmd (/bin/echo"offline" > /usr/local/smarthome/security/status)

Alles ist vergleichbar mit Regel 3, nur der Status ist auf "offline" gesetzt.

Skript, mit dem Fotos von der Kamera empfangen und E-Mails gesendet werden


Das nach den Regeln 1 und 2 ausgeführte Skript überprüft den Status des Systems in der Statusdatei und führt je nach Wert ("online" oder "offline") die folgenden Aktionen aus oder führt keine Aktionen aus:

  • empfängt ein Foto von der IP-Kamera im Vestibül und sendet es im Falle eines Sensors im Vestibül per E-Mail;
  • sendet eine Alarmmeldung bei einem Sensor im Flur.

Unten ist der Hauptteil des Skripts. An seinem Eingang erhält er (von der SEC) die Kanalnummer, an die der Sensor angeschlossen ist, und führt abhängig von dieser Nummer und dem Systemstatus bestimmte Aktionen aus.

#!/bin/sh
dir="/usr/local/smarthome/security"
MAIL=$dir/mail.letter
stat_file="$dir/status"
dt=`date`
if [ "$1" -eq 2 ]
thenif grep "online"$stat_filethencd$dir
      rm -f $dir/snapshot.cgi
      wget http://<IP адрес камеры>/snapshot.cgi --user=<username> --password=<password>
      mpack -s "Someone at the door at $dt"$dir/snapshot.cgi d.shulinin@gmail.com
   fielif [ "$1" -eq 3 ]
thenif grep "online"$stat_filethenprintf"Subject: Motion in the lobby spotted at $dt\n" > $MAIL
      /usr/sbin/ssmtp email@gmail.com < $MAILfielseecho"no legitimate input detected"fi

Um Fotos von meiner IP-Kamera zu erhalten, verwende ich wget und eine Zeile wie diese:

wget http://<IP адрес камеры>/snapshot.cgi --user=<username> --password=<password>

Bei anderen IP-Kameras müssen Sie möglicherweise nach anderen Optionen suchen. Es gibt keine einzige Lösung. RTFM an die Kamera, wie sie sagen.

Tasten zum Ein- und Ausschalten des Systems in der Weboberfläche. Um den Sicherheitsmodus zu aktivieren und zu deaktivieren, fügte ich meiner samopisny-Weboberfläche auch ein paar Schaltflächen hinzu, um die Lichter des Smart Home zu steuern.

Sie sehen so aus:

<?php
    if (isset($_POST['button9_on']))
    {
         exec('/bin/echo "online" > /usr/local/smarthome/security/status');
    }
?>
<?php
    if (isset($_POST['button9_off']))
    {
         exec('/bin/echo "offline" > /usr/local/smarthome/security/status');
    }
?>
<p><h2>Guard mode</h2></p>
        <form method="post">
        <p>
        <button name="button9_on">ON</button>
        <button name="button9_off">OFF</button>
        </p>

Hier ist alles einfach: Wenn Sie auf die Schaltfläche "EIN" klicken, wird "Online" in die Statusdatei geschrieben, wenn Sie auf "AUS" - "Offline" klicken.

5. Schlussfolgerung


Als Ergebnis erhielt ich ein System, das bei Aktivierung Bilder von Personen macht, die sich der Tür nähern, und das Foto an eine E-Mail senden. Und im Falle einer Bewegung in der Wohnung - sendet einfach eine E-Mail-Benachrichtigung.

So ähnlich wie die Beispiel-E-Mails (siehe Abbildung 3). Die Bilder selbst sind natürlich größer und entfalten sich, wenn Sie mit der Maus darauf klicken.


Abbildung 3 - Beispiel für eine E-Mail-Nachricht mit Foto

Das System kann durch einen Tastendruck am Schalter und auch über Tasten in der Weboberfläche des Smart Home Control Systems aktiviert und deaktiviert werden.

Kurzfristig möchte ich auch den aktuellen Status des Systems (aktiv / inaktiv) im Web-Interface anzeigen.

Jetzt auch beliebt: