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 [14.01.2018 08:18] – [Bewegungsalarmsystem] havelockalarmsystem [20.01.2018 21:01] (aktuell) – [Software] havelock
Zeile 5: Zeile 5:
 Noch implementieren Noch implementieren
   * Konfiguration über ''uci'' bzw. ''/etc/config''   * Konfiguration über ''uci'' bzw. ''/etc/config''
-  * Freifunk-Clientnetzwerk im Fahrzeugknoten deaktivieren, wenn kein Link zu einem anderen Freifunkknoten besteht. +  * 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 37: 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.1515914299.txt.gz · Zuletzt geändert: 14.01.2018 08:18 von havelock