Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| alarmsystem [01.01.2018 08:56] – angelegt havelock | alarmsystem [20.01.2018 20:01] (aktuell) – [Software] havelock | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| ====== Bewegungsalarmsystem ====== | ====== Bewegungsalarmsystem ====== | ||
| + | |||
| + | TODO Das hier ist noch in der Erprobungsphase | ||
| + | |||
| + | Noch implementieren | ||
| + | * Konfiguration über '' | ||
| + | * Freifunk-Clientnetzwerk im Fahrzeugknoten deaktivieren, | ||
| + | ip link set down dev client0 | ||
| + | ip link set up dev client0 | ||
| + | </ | ||
| Dieses System ist natürlich immer im Zusammenhang mit anderen Sicherungssystemen zu sehen. | Dieses System ist natürlich immer im Zusammenhang mit anderen Sicherungssystemen zu sehen. | ||
| - | Feststellen ob ein Fahrzeugvon | + | Voraussetzung ist, daß im Fahrzeug eine permanente Stromversorgung sichergestellt ist. |
| + | |||
| + | Feststellen ob ein Fahrzeug von seinem Parkplatz bewegt wird. | ||
| Dazu können Freifunkknoten verwendet werden. | Dazu können Freifunkknoten verwendet werden. | ||
| Zeile 10: | Zeile 21: | ||
| Wie funktioniert das? | Wie funktioniert das? | ||
| - | * Der Knoten im Gebäude | + | * Der Knoten im Gebäude |
| - | * Wenn das letzte Signal ein bestimmtes Alter überschritten hat, wird davon ausgegangen, daß das Fahrzeug | + | * Micron-Job '' |
| - | * Jetzt kann man durch ei | + | * Script '' |
| - | | + | * Wenn das letzte Signal ein bestimmtes Alter überschritten hat und die Semaphor-Datei nicht vorhanden ist, wird die Alarmierung gestartet |
| + | * Es wird eine SSH-Verbindung zu einem Server im Freifunknetz hergestellt und dort ein Alarmprogramm gestartet< | ||
| + | ssh alarmuser@server.ffpi ./ | ||
| + | </ | ||
| + | * Damit Dropbear eine Verbindung aufbauen kann, wird ein Schlüsselpaar benötigt. Es gibt dafür das Programm '' | ||
| + | * Der Alarmserver ist notwendig, da der Freifunkknoten nur Dienste im Freifunk-Netz ansprechen kann, d.h. alles was im lokalen Subnet ist. Die Alarmierung benötigt aber meistens erweiterte Funktionen, wie z.B. Internetzugriff um eine Mail zu versenden. | ||
| + | * Es wäre auch denkbar, einen kleinen Alarmcomputer (Raspberry) im Freifunk-Netz zu haben, der mehr kann, als ein /normaler/ Freifunkknoten | ||
| + | * Kommt das Fahrzeug zurück auf seinen Platz, wird die Alarmierung zurückgesetzt, | ||
| + | |||
| + | ===== Hardware ===== | ||
| + | |||
| + | * GL-iNet 6416A im Fahrzeug | ||
| + | * Stromversorgung über einen Zigarettenanzünder-USB-Adapter | ||
| + | * Sehr klein | ||
| + | * Am USB-Anschluß kann ein GPS-Stick angeschlossen werden | ||
| + | * WR841N/ND im Fenster | ||
| + | |||
| + | ===== Software ===== | ||
| + | |||
| + | Das Link-Überwachungsprogramm | ||
| + | <file lua neighbourwatch.lua> | ||
| + | # | ||
| + | |||
| + | function file_exists(name) | ||
| + | local f=io.open(name," | ||
| + | if f~=nil then io.close(f) return true else return false end | ||
| + | end | ||
| + | |||
| + | function watch_mac(mac) | ||
| + | command = " | ||
| + | local handle = io.popen(command) | ||
| + | local result = handle: | ||
| + | handle: | ||
| + | return result: | ||
| + | end | ||
| + | |||
| + | counterfile = "/ | ||
| + | lastseen = watch_mac(" | ||
| + | age_seconds = tonumber(lastseen: | ||
| + | if age_seconds > 30 then | ||
| + | if not file_exists(counterfile) then | ||
| + | file = io.open(counterfile, | ||
| + | file: | ||
| + | file: | ||
| + | command = "ssh alarmuser@srv01.ffpi ./ | ||
| + | local handle = io.popen(command) | ||
| + | local result = handle: | ||
| + | handle: | ||
| + | end | ||
| + | else | ||
| + | if file_exists(counterfile) then | ||
| + | os.remove(counterfile) | ||
| + | end | ||
| + | end | ||
| + | </ | ||
| + | |||
| + | Der Cronjob | ||
| + | <file conf / | ||
| + | * * * * * / | ||
| + | </ | ||
| + | |||
| + | Alarmierung momentan per mail | ||
| + | <file bash alarmmail.sh> | ||
| + | # | ||
| + | mail -s " | ||
| + | Alarm! | ||
| + | Das Fahrzeug /Mein Auto/ wird gerade bewegt. | ||
| + | EOF | ||
| + | </ | ||
| + | |||
| + | Dynamische Steuerung des Client-WLANs im Fahrzeug. | ||
| + | |||
| + | Erster Entwurf: | ||
| + | <file lua meshcheck.lua> | ||
| + | # | ||
| + | |||
| + | function neighbourcount() | ||
| + | | ||
| + | local result = handle: | ||
| + | handle: | ||
| + | return result | ||
| + | end | ||
| + | |||
| + | function ifstate() | ||
| + | local file = io.open("/ | ||
| + | local result = file: | ||
| + | file: | ||
| + | return result | ||
| + | end | ||
| + | |||
| + | state = ifstate() | ||
| + | if neighbourcount() == 0 then | ||
| + | if state == " | ||
| + | os.execute(" | ||
| + | end | ||
| + | else | ||
| + | if state == " | ||
| + | os.execute(" | ||
| + | end | ||
| + | end | ||
| + | </ | ||