Ergebnis 1 bis 12 von 12

Thema: monitord - LUA als Skriptsprache ?

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #8
    Registriert seit
    15.11.2007
    Beiträge
    213
    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
    Geändert von mdi (21.04.2010 um 17:31 Uhr)

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •