Wiki - Freifunk Pinneberg

Freies WLAN im Kreis Pinneberg

Benutzer-Werkzeuge

Webseiten-Werkzeuge


alarmsystem

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
alarmsystem [12.01.2018 19:56] havelockalarmsystem [20.01.2018 21:01] (aktuell) – [Software] havelock
Zeile 2: Zeile 2:
  
 TODO Das hier ist noch in der Erprobungsphase TODO Das hier ist noch in der Erprobungsphase
 +
 +Noch implementieren
 +  * Konfiguration über ''uci'' bzw. ''/etc/config''
 +  * Freifunk-Clientnetzwerk im Fahrzeugknoten deaktivieren, wenn kein Link zu einem anderen Freifunkknoten besteht. Befehle dafür:<code>
 +ip link set down dev client0
 +ip link set up dev client0
 +</code>
  
 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.
 +
 +Voraussetzung ist, daß im Fahrzeug eine permanente Stromversorgung sichergestellt ist.
  
 Feststellen ob ein Fahrzeug von seinem Parkplatz bewegt wird. Feststellen ob ein Fahrzeug von seinem Parkplatz bewegt wird.
Zeile 22: Zeile 31:
       * 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.       * 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       * 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, so daß bei einem weiteren Entfernen erneut ein Alarm ausgelöst wird. Damit muß man das System nicht manuell aktivieren.
  
 ===== Hardware ===== ===== Hardware =====
Zeile 30: Zeile 40:
     * Am USB-Anschluß kann ein GPS-Stick angeschlossen werden     * Am USB-Anschluß kann ein GPS-Stick angeschlossen werden
   * WR841N/ND im Fenster   * WR841N/ND im Fenster
 +
 +===== Software =====
 +
 +Das Link-Überwachungsprogramm
 +<file lua neighbourwatch.lua>
 +#!/usr/bin/lua
 +
 +function file_exists(name)
 +    local f=io.open(name,"r")
 +    if f~=nil then io.close(f) return true else return false end
 +end
 +
 +function watch_mac(mac)
 +    command = "batctl n | grep -i " .. mac .. " | tr -s ' ' | cut -d' ' -f4"
 +    local handle = io.popen(command)
 +    local result = handle:read("*a")
 +    handle:close()
 +    return result:match("(.-)%s*$")
 +end
 +
 +counterfile = "/var/run/alarmcounter"
 +lastseen = watch_mac("a2:1b:3a:0b:3e:72")
 +age_seconds = tonumber(lastseen:sub(1, -2)) or 1000
 +if age_seconds > 30 then
 +    if not file_exists(counterfile) then
 +        file = io.open(counterfile, "w")
 +        file:write("1")
 +        file:close()
 +        command = "ssh alarmuser@srv01.ffpi ./alarmmail.sh"
 +        local handle = io.popen(command)
 +        local result = handle:read("*a")
 +        handle:close()
 +    end
 +else
 +    if file_exists(counterfile) then
 +        os.remove(counterfile)
 +    end
 +end
 +</file>
 +
 +Der Cronjob der das Überwachungsscript regelmäßig aufruft
 +<file conf /usr/lib/micron.d/neighbourwatch>
 +* * * * * /root/neighbourwatch.lua
 +</file>
 +
 +Alarmierung momentan per mail
 +<file bash alarmmail.sh>
 +#!/bin/bash
 +mail -s "Alarm: Fahrzeugbewegung" mustermann@example.com << EOF
 +Alarm!
 +Das Fahrzeug /Mein Auto/ wird gerade bewegt.
 +EOF
 +</file>
 +
 +Dynamische Steuerung des Client-WLANs im Fahrzeug.
 +
 +Erster Entwurf:
 +<file lua meshcheck.lua>
 +#!/usr/bin/lua
 +
 +function neighbourcount()
 +    local handle = io.popen("batctl n | grep ibss0 | wc -l")
 +    local result = handle:read("*a")
 +    handle:close()
 +    return result
 +end
 +
 +function ifstate()
 +    local file = io.open("/sys/class/net/client0/operstate", "r")
 +    local result = file:read("*l")
 +    file:close()
 +    return result
 +end
 +
 +state = ifstate()
 +if neighbourcount() == 0 then
 +    if state == "up" then
 +        os.execute("ip link set down dev client0")
 +    end
 +else
 +    if state == "down" then
 +        os.execute("ip link set up dev client0")
 +    end
 +end
 +</file>
  
alarmsystem.1515783371.txt.gz · Zuletzt geändert: 12.01.2018 19:56 von havelock