Ergebnis 1 bis 7 von 7

Thema: Lua Skripts für monitord

  1. #1
    Registriert seit
    13.01.2014
    Beiträge
    7

    Lua Skripts für monitord

    Ich habe monitord zurzeit auf einem Raspberry pi am laufen und hatte nun hier:

    http://monitord.de/?article=5 (Punkt: Ausführen von Programmen)

    die Möglichkeit gefunden direkt per Lua Skript ein externes Skript z.B. zum SMS Versand aufzurufen. Nun habe ich aber auch nach längerer Suche keinerlei Infos gefunden wie ich dieses umsetze. D.h. ich weiß nicht wo ich die Datei anlegen muss und wie ich diese einbinde.

    Mfg

  2. #2
    Registriert seit
    31.03.2003
    Beiträge
    520
    Hallo Moo,
    habe ein lua Skript laufen welches mir Emails verschickt. Habe auch ziemlich lange gebastelt bis es lief. Es wird bei mir auch nur ausgeführt wenn ich mit dem miniclient verbunden bin. Das kann aber auch ein fehler meinerseits sein. Aber wie heißt es doch, nichts hält länger als ddas beste Provisorium.
    Werde mein Script morgen mal hier reinstellen.

    Gruß
    Reissdorf

  3. #3
    Registriert seit
    13.01.2014
    Beiträge
    7
    Das hört sich doch schonmal gut an :)
    Nur was ist miniclient?

  4. #4
    Registriert seit
    11.12.2001
    Beiträge
    1.008
    Das Skript in den PluginFilter legen. Im Normalfall heißt das "pluginfilter.lua". Dann muss nur noch ein plugin Aktiv sein. Sonst wird der Filter nicht aufgerufen. Das gleiche gilt auch for den socketfilter. Solange kein Client verbunden ist wird auch die lua nicht aufgerufen.

    Das ist vermutlich der Grund, warum Reissdorf sich mit dem miniclient verbunden muss: Sein Skript liegt im socketfilter.lua. Und wenn kein Client verbunden ist gibt's auch keinen Grund etwas zu filtern :)

    Deshalb z.B. das mySQL-Plugin laden. Dann wird der pluginfilter immer aufgerufen wenn etwas ankommt, da jedesmal geprüft wird, ob die Daten an dies Plugin gehen sollen oder nicht.

    Im pluginfilter.lua kannst du dann die Daten auswerten und per os.execute() auch programme aufrufen.

    In der pluginfilter.lua muss es dann eine Funktion pluginFilter() geben. Das ist der Einstiegspunkt.

    Beispiel - ungetestet. Hab keinen monitord mehr aktiv. Sollte aber so in der Art passen.

    Code:
    -- PluginFilter.lua
    --
    -- Filter für den PluginThread - wird pro aktiven Plugin aufgerufen
    -- 
    -- Globales Array "arg" enthält die Daten vom Auswertermodul
    --
    -- Zusätzliche Werte im Array:
    --
    -- plugin_name: Name des Plugins, das aufgerufen werden soll
    --
    -- Rückgabewert:
    -- 1= nicht ans Plugin geben (wird NICHT aufgerufen)
    -- alle anderen = Plugin wird aufgerufen
    --
    
    function pluginFilter() 
       -- Beispiel aus http://monitord.de/?article=5
       -- aufruf eines PHP Skriptes
       --
       if(arg["typ"] == "zvei" and string.sub(arg["zvei"], 0, 3) == "007" and arg["channelnum"] == "0") then
    	toexecute = "cmd /c c:\\xampp\\php\\php.exe ";
    	toexecute = toexecute .. "c:\\programme\\monitord\\sendsms.php ";
    	toexecute = toexecute .. arg["zvei"] ;
    	os.execute(toexecute);
       end
    
       -- default: alles anzeigen; ändern auf "1" um nichts ans plugin geben!
       -- wer keine mySQL Datenbank hat sondern nur das os.execute() will kann hier dann eine 1 zurückgeben.
       return 0;
    end

  5. #5
    Registriert seit
    31.03.2003
    Beiträge
    520
    So, dank Buebchens Informationen die ich so nebenbei bekommen habe, habe ich das Script umbenannt, angepasst, in der monitor.xml eingebunden und auch schon getestet. Auf den Hintergrund mit dem Clientfilter war ich nicht gekommen und nicht hält ja bekanntlich länger wie das beste Provisorium.
    Also hier mein Schript zum versenden von Emails mit blat:
    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?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"} ;
    local sperrliste = {"1292587", "1308795"};
    local versandliste = {"1291234", "1297777", "1298888", "1295555"};
    -- Liste Namentlich {LG Musterdorf, GWG Musterdorf, Wehrführer, Alarmdrucker}
    function myfilterFMS32()
    	for index,testwert in pairs(toShowFMS) do 
    		if (testwert==arg["ric"]) then
    			return 0
    		end
    	end
    	return 1 ;
    end
    
    
    function myfilterCRUSADER()
    	for index,testwert in pairs(sperrliste) do
    		if (testwert==arg["ric"]) then
    			return 1
    		end
    	end
    	print(arg["text"])
    	return 0 ;
    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 pluginFilter()
    
    	local dummyValue=1 ;
    
    	if(arg["typ"] == "pocsag") then
    		for index,testwert in pairs(versandliste) do
    			if (testwert == arg["ric"]) then
    				
    				toexecute = "start c:\\programme\\blat262\\full\\blat.exe ";
    				toexecute = toexecute .. "-to email@gmx.de -u [Benutzername] -pw [Passwort] -subject ";
    				toexecute = toexecute .. arg["ric"] ;
    				toexecute = toexecute .. " -body \"" ;
    				toexecute = toexecute .. arg["text"] ;
    				toexecute = toexecute .. " ||Subric: " ;
    				toexecute = toexecute .. arg["sub"] ;
    				toexecute = toexecute .. " |Alarmdatum: " ;
    				toexecute = toexecute .. arg["datum"] ;
    				toexecute = toexecute .. "  |Alarmzeit: " ;
    				toexecute = toexecute .. arg["uhrzeit"] ;
    				toexecute = toexecute .. "\"" ;
    				print(toexecute);
    				os.execute(toexecute);
    			end
    		end
    	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
    		return myfilterCRUSADER() ;
    	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
    Minicient ist wie der Name schon sagt ein kleiner Client der sich mit monitor verbinden kann und eingehende Meldungen in einer schmalen Zeile an der Bildschirmoberkante anzeigt. Benötige ich jetzt dank Buebchens Hinweis nicht mehr.

    Gruß
    Reissdorf

  6. #6
    Registriert seit
    13.01.2014
    Beiträge
    7
    Besten Dank euch beiden, ich werd es heute oder morgen mal ausprobieren.

  7. #7
    Registriert seit
    13.01.2014
    Beiträge
    7
    So 2 neue Probleme.

    -Da bei mir die beiden Dateien nicht existierten habe ich sie mir aus dem Sample Config Ordner besorgt und in den Hauptordner gepackt. Liegen bei euch die Dateien auch da?

    -Mein 2. Problem ist das ich das ganze unter Linux (raspberry pi) laufen habe und nicht unter windows und jetzt ein Python Script aufrufen möchte. Wie müsste das aufrufen des scripts dann aussehen?

    Mfg

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
  •