Ergebnis 1 bis 8 von 8

Thema: LUA-Scripting und MySQL (Filterung)

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Registriert seit
    15.11.2007
    Beiträge
    213
    Hallo,

    das Filtern doppelter Einträge bei doppelter Auslösung geht meines Wissens nach nicht, da der monitord den vorher ausgewerteten Code nicht mehr kennt (das LUA-Skript wird für jede EINZELNE RIC oder ZVEI-Tonfolge einzeln, getrennt voneinander aufgerufen). Der Filter erschlägt also nur die Eintragung aktuell ausgewerteter aber nicht gewünschter RICs/ZVEI-Folgen.

    Wie das geht, sollte eigentlich aus der Anleitung hervor gehen: Du gibst an, welche Tonfolgen/RICs Du in der DB haben magst und alle anderen werden verworfen. Hierzu entsprechend bei "Fund" die Eintragung mit "return 0" erlauben oder halt die Eintragung mit "return 1" verwerfen. Zugegeben, das Beispiel auf monitord.de ist recht umfangreich.

    Das Beispiel unten zeigt einen einfachen Filter, bei dem nur die unter "toShowXXX" angegebenen RICs/ZVEI-Tonfolgen/FMS-Kennungen in der Datenbank landen (ungetestet, eben nur zusammen gesammelt).

    Viele Grüße
    Martin

    Code:
    -- PluginFilter.lua
    --
    -- Filter für die Plugins - wird pro aktivem Plugin 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ückgabewert:
    -- 0 = an Client senden,
    -- 1 = nicht an Client senden,
    -- alle anderen = an Client senden
    --
    
    local toShowFMS = {"11111111", "22222222"} ;
    local toShowPOCSAG = {"1111111", "2222222"} ;
    local toShowZVEI = {"99000", "99001"} ;
    
    function filter() 
    
    	local dummyValue=1 ;
    
    	-- DEBUG-Info: Alles ausgeben
    	for index,testwert in pairs(arg) do 
    		print(index)
    		print(testwert)
    	end	
    
    	-- 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

  2. #2
    Registriert seit
    11.12.2001
    Beiträge
    1.008
    Ich hatte irgendwann mal den Workaround vorgeschlagen, daß das LUA-Skript am Ende der Verarbeitung die aktuelle RIC/Schleife in eine Datei schreibt. Diese Datei könnte man dann beim nächsten Mal auslesen und das Skript würde sich an die letzte(n) RICs/ZVEIs quasi erinnern.

    Könnte man ja auf ne RAMDisk bzw. tmpfs legen damit der Disk I/O nicht zu sehr bremst. Müßte eigentlich klappen.

  3. #3
    Registriert seit
    07.09.2003
    Beiträge
    694
    @mdi: Danke, da blicke ich jetzt besser durch.

    @Buebchen: Die Idee kam mir auch spontan in den Sinn. Dürfte ja gar nicht so schwierig zu implementieren sein. Falls ich das Script zum Laufen kriege, probiere ich mal rum.

    Muss man denn jetzt beim configure noch speziell auf etwas achten, um das Scripting nutzen zu können?

    Danke und Gruß,
    Funkwart

  4. #4
    Registriert seit
    11.12.2001
    Beiträge
    1.008
    Im Log müßte er schon etwas zum Scripting schreiben, wenn er es ausführt. Das configure hat Optionen für LUA:

    (aus ./m4/lua.m4):

    Code:
    #     --with-lua-prefix=DIR     Lua files are in DIR.
    #     --with-lua-suffix=ARG     Lua binaries and library files are
    #                               suffixed with ARG.
    #     --with-lua-includes=DIR   Lua include files are in DIR.
    #     --with-lua-libraries=DIR  Lua library files are in DIR.
    Sollte er die libs / includes nicht finden kannst Du dem configure damit auf die Sprünge helfen. Das configure gibt dann ja auch aus, ob es den lua-support gefunden hat.

    Mit
    --with-lua-includes=DIR Lua include files are in DIR.
    --with-lua-libraries=DIR Lua library files are in DIR.

    solltest es klappen.

    [Edit]
    Im einfachsten Fall sonst mal mit --with-lua den generellen LUA Check starten. Ich weiß gerade nicht, ob der Standard mit lua oder ohne war :)
    Geändert von Buebchen (22.08.2014 um 19:32 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
  •