Hallo,
anbei ein laufendes LUA-Skript als Beispiel.
Code:
-- SocketFilter.lua
--
-- Filter für den SocketServer - wird pro aktiven Client aufgerufen
--
-- Globales Array "arg" enthält die Daten vom Auswertermodul
--
-- Zusätzliche Werte im Array:
--
-- client_authenticated: 0/1 (1=angemeldet)
-- client_ip: IP-Adresse des Clients
-- client_loginname: Anmeldename
-- client_type: fms32, crusader, monitord
--
-- Rückgabewerte:
-- 0 = an Client senden
-- 1 = nicht an Client senden
-- alle anderen = an Client senden
--
filterDoppelteZVEI = 1
local toShowFMS = {"11111111", "22222222"} ;
local toShowPOCSAG = {"1111111", "2222222"} ;
local toShowZVEI = {"99000", "99001"} ;
function myfilterFMS32()
for index,testwert in pairs(toShowFMS) do
if (testwert==arg["ric"]) then
return 0
end
end
return 1 ;
end
function myfilterMONITORD()
-- ZVEI
if(arg["typ"] == "zvei") then
for index,testwert in pairs(toShowZVEI) do
if(testwert == arg["zvei"]) then
return 0
end
end
end
-- FMS
if(arg["typ"] == "fms") then
for index,testwert in pairs(toShowFMS) do
if(testwert == arg["fmskennung"]) then
return 0
end
end
end
-- POCSAG
if(arg["typ"] == "pocsag") then
for index,testwert in pairs(toShowPOCSAG) do
if(testwert == arg["ric"]) then
return 0
end
end
end
-- default: anzeige unterdruecken
return 1;
end
function filter()
-- DEBUG-Info: Alles ausgeben
for index,testwert in pairs(arg) do
print(index)
print(testwert)
end
-- genau zweimal gesendete Auslösungen filtern (Fünftonfolgen)
if(filterDoppelteZVEI == 1) then
if (arg["zvei"] == altZVEI) then
altZVEI = nil;
return 1;
end
altZVEI = arg["zvei"]
end
-- wird für jedes Telegramm (pocsag, fms, zvei) aufgerufen
if (arg["client_type"]=="fms32") then
return 0; -- delete this line to enable and uncomment the next one!
-- return myfilterFMS32() ;
end
if (arg["client_type"]=="crusader") then
-- nix
dummyValue=2 ;
end
if (arg["client_type"]=="monitord") then
return 0; -- delete this line to enable and uncomment the next one!
-- return myfilterMONITORD() ;
end
-- default: alles anzeigen; ändern auf "1" um nichts anzuzeigen!
return 0;
end
Edit1: Ich komme derzeit nicht an den monitord-Server ran (Passwort vergessen). Eine entsprechende Anfrage an den Hoster ist raus.
Edit2: Ich habe ein Paket geschnürt und es bei Rapidshare hochgeladen. Beispiel-LUA-Skripte von Buebchen und mir sind enthalten, ebenso eine MySQL-Tabellendefinition, die mit der monitord-Konfigurationsdatei überein stimmen sollte. Wenn es Probleme gibt, bitte hier im Thread oder per PM an mich! Download-URL: http://rapidshare.com/files/37191401...w32-2.0svn.exe
Edit3: Verbessertes Skript-Beispiel hier im Beitrag.
Edit4: Der Download geht jetzt auch wieder über die monitord.de-Webseite.
Edit5: Skript um Filter für Fünfton-Doppelauslösungen ergänzt.
Viele Grüße
Martin