schrolli91 / boswatch Goto Github PK
View Code? Open in Web Editor NEWPython Script to process input data from rtl_fm and multimon-NG - multiple Plugin support
Home Page: https://bwcc.boswatch.de
License: GNU General Public License v2.0
Python Script to process input data from rtl_fm and multimon-NG - multiple Plugin support
Home Page: https://bwcc.boswatch.de
License: GNU General Public License v2.0
BosWatch startet ohne Fehlermeldung obwohl RTL_FM nicht frei ist
--> Meldung erscheint bloß im Log
Im Testmodus wird keine Rücksicht genommen welche Argumente angegeben sind. wenn ich also nun nur POC1200 lade und FMS einlese, könnte es den ein oder anderen Fehler geben, oder ?
Kann jemand eine Lösung einbauen die es ermöglicht nur RICs / Kennungen zu erlauben die in der passenden Description Datei vorhanden sind ? Denke wer auch immer das geschrieben hat kann das schneller als ich, danke.
Änderung der Kodierung des Quellcodes in UTF-8.
Wäre es nicht sinnvoll alle Passwortdaten etc. aus dem Log zu löschen, halte ich für nicht so sicher ...??!
NotifyMyAndroid-Unterstützung einbauen.
Ist etwas geplant Daten per serieller Schnittstelle empfangen zu können z.B. via Swissphone BOSS Station?
Servus,
wäre es nicht sinnvoll, die E-Mail-Aktion noch zusätzlich nach Sub-RIC zu unterscheiden? Bei uns wird via D bspw. der Probealarm alarmiert, da muss ich keine E-Mail versenden; bei A-C hingegen schon (und ggf. das als Alarmierung für zB GroupAlarm nutzen).
VG
Installation in den Stammordner /etc/ und Verknüpfung zu init.d
Liebe Community!
Ich bin über einen Tipp in einem Forum auf dieses Programm/Plugin gestoßen, hab jedoch keine Ahnung wie ich es richtig anwenden kann. Ich nutze SDR Sharp und PDW Pager zum Empfangen und Anzeigen von POCSAG Signalen. Da diese in letzter Zeit jedoch nur noch verschlüsselt gesendet werden, war ich auf der suche nach einem entsprechenden Programm zum entschlüsseln dieser Nachrichten und bin dabei auf BOSWatch gestoßen. Leider stieß ich jedoch bereits bei der Anleitung auf Probleme sodass ich jetzt keine Ahnung habe, wie ich BOSWatch nutzen kann. Daher meine Frage/Bitte - hat sich vielleicht mal jemand die Mühe gemacht, eine Schritt für Schritt Anleitung für Neulinge zu verfassen? Bzw. gibt es die Anleitung auch auf Deutsch? Danke für eure Hilfe und LG
Hallo,
Möchte mal kurz ein kleines neues Projekt von mir vorstellen:
Das Plugin wird in der Lage sein ein Arduino zu steuern welcher x beliebig viele LED's schaltet.
Die Idee dahinter:
Wir haben eine große Karte mit allen Wachen drauf verzeichnet, diese wird auf Holz geklebt und dann von hinten für jede Wache eine LED eingesetzt. ( eventuell RGB LEDs) Bei eingehendem Alarm fängt die Lampe an rot zu blinken, wird der Status von 2 auf 3 gewechselt wird die Lampe nur noch Rot, wird die 4 gedrückt im FMS wird die LED grün, in der 1 gelb und so weiter und sofort.
Schritt eins wird erstmal sein die POCSAG Meldungen zu übergeben und alleine auszuwerten (rotes Blinken für 5 min)
Danach eine Verbindung zwischen POCSAG-RIC und FMS-Kennung herzustellen.
Dann die einzelnen Statis auszuwerten.
PS. Warum schreibe ich den Text..? Nicht das wir uns hier doppelte Arbeit machen
Wunsch-Feature:
Überwachung, ob BOSWatch noch arbeitet.
Im POCSAG werden alle n Minuten "keep alive"-Signale gesendet.
Wenn die nicht in BOSWatch ankommen, ist was fault.
Lösungsidee:
Asynchroner Timertask, der schaut, ob alle x Miuten ein Alarm verarbeitet wurde.
POCSAG Nachrichten werden zwei Mal angezeigt, wenn mehrere Nachrichten auf einmal gesendet werden. ( Trotz eingeschalteter Doppelfunktion)
Ex.:
1130506
1130607
1130506
1130607
Für den Test der umfangreichen Funktionen wird ein Testtreiber mit entsprechenden Testdaten benötigt.
1.) [x] Implementierung des Testreibers (Aufruf mit -t)
2.) Bereitstellung von Testdaten-Strings, die möglichst viele Funktionen abdecken:
Um jegliche (maximal eine Sekunde) Differenzen in der Alarmzeit zu eliminieren, schlage ich vor, ein data[time] einzuführen, damit jeder Alarm im Plugin die selbe Zeit hat - ansonsten kann es passieren, das ein Plugin 13:41:50 und das nächste 13:41:51 bekommt...
Was haltet ihr davon? 👍 ? 👎 ?
Habe ich das nicht gesehen oder gib es keine Beschreibung welche Felder in den Tabellen angelegt werden sollen?
Ich habe gerade das MySQL Plugin ein wenig erweitert.
Aktuell kann ich es aber nicht testen, evtl könnte das jemand mal für mich übernehmen und mir eine Rückmeldung geben.
Grüße
EDIT:
Achtung die Datenbank Struktur hat sich ein wenig geändert. Es sollte also die neuste boswatch.sql eingespielt werden. Befindet sich jetzt im Ordner des MySQL Plugins.
Hab da was gefunden:
https://github.com/tgalal/yowsup (Python)
https://github.com/WHAnonymous/Chat-API (PHP ?)
Unten ein Auszug aus meinen LOG
Ich habe wohl schlechten Empfang, hier meine Frage wie sieht euer Setup aus?
Ich benutze einen raspberry pi mit DVB-T Stick mit (RTL2838UHIDIR) Chip und die Mitgelieferte Antenne.
Ich habe das Setup schon an verschiedenen Orten im Haus getestet.
Brauche ich eine Andere Antenne oder einen LNA Vorverstärker?
Hat jemand ein anderes Setup?
Der Gain in BOSWatch steht Standard mäßig auf 100, da habe ich auch schon kurz mit rumgespielt, macht das Sinn?
LOG
23.07.2015 16:02:19 - decoder [DEBUG ] recieved FMS
23.07.2015 16:02:19 - fms [WARNING ] FMS CRC incorrect
23.07.2015 16:02:19 - decoder [DEBUG ] recieved FMS
23.07.2015 16:02:19 - fms [WARNING ] No valid FMS: af238121s
[...]
23.07.2015 19:33:59 - decoder [DEBUG ] recieved FMS
23.07.2015 19:33:59 - fms [WARNING ] FMS CRC incorrect
Wenn PlugIn A eine Exception wirft, kann es passieren, dass das PlugIn B nicht mehr aufgerufen wird.
Lösung: try-cath-Block in alarmHandler.py plugin.run(typ,freq,data)
mit exception: pass
Hallo,
Hab da eine Idee, mir fehlt aber noch der richtige Gedanke zur Umsetzung:
Es wird ja meist nicht nur eine Einheit Alamiert für eine Schadenslage, sondern meist mehrere.
Ich will nun das abfangen und global bereit stellen damit ich auf meinem Alarmmonitor darstellen kann wer noch alles kommt.
Also:
Ric1
Ric2
RicX werden alamiert innerhalb von y Sekunden zwischen den Meldungen Alamiert,
Schreibe alle Discriptions und RICs in 2 verschiedene Strings mit Komma getrennt und gebe es aus wenn Ric1 auch Alamiert ist als Pseudo-ric oder zvei ?!
Jemand ne Idee ?
Überschrift sagt alles. data[description] ist in einem falschen Zeichensatz. daher hängt die Übergabe zu firEmergency .
Momentan hilft mir in der firE.py Zeile 102: einfach ein .encode('UTF-8') an das data[description]
Woher das rührt, ist mir unbekannt.
Hallo zusammen,
ist es möglich zwei Frequenzen (FMS/POCSAG) mit zwei Adaptern an einem RPi auszuwerten? Wenn eine zweite Instanz gestartet wird, wird rtl-fm nicht ein zweites Mal geöffnet.
Grüße
Please add paramter -g to boswatch.py to be able to set custom rtl_fm gain at the start.
Thx Jockel
Hallo zusammen,
falls jemand Lust hat, den aktuellen Dev-Branch ein bisschen auf Herz und Nieren zu testen, würde ich mich über Feedback und Berichte über evtl. auftauchende Probleme freuen.
Wenn das ganze nämlich soweit stabil läuft, würde ich das ganze gerne offiziell in den Master übernehmen.
Wie der Name schon sagt, ein Plugin, welches die Daten über die serielle Schnittstelle schiebt.
Welche Möglichkeiten gibt es den auf die Schnittstellen zuzugrifen? Direkt wird das Python nicht können, oder?
http://pyserial.sourceforge.net/ wäre eine Möglichkeit...
NotifyMyAndroid-Unterstützung einbauen.
Moin, moin,
folgender Fehler wurde im FMS-Forum gepostet:
Problem mit dem versenden von Emails,
d.h. es wird nur an die erste Adresse in der Zeile verschickt,
ich habe schon diverse Alternativen ausprobiert, allerdings ohne Erfolg:
1. to = user@irgendwo, user2@woanders
2. to = user@irgendwo,user2@woanders
3. to = user@irgendwo; user2@woanders
4. to = user@irgendwo;user2@woanders
der erste user@irgendwo bekommt die Email, alles was dahinter steht wird ignoriert :-(
Zeilenumbruch in eMails hinzufügen:
%BR% wird durch einen Zeilenumbruch ersetzt
Aus dem multimon-ng code:
if (!quietflg)
fprintf(stdout, "Enabled demodulators:");
https://github.com/EliasOenal/multimon-ng/blob/master/unixinput.c ab Zeile 759
Was passiert wenn multimon im quiet mode startet?
Kommen die Decoder Ausgaben dann trotzdem zustande?
So könnte man die Ausgabe von dieser Zeile komplett unterbinden und erspart sich das Abfangen in der decoder.py
# For POCSAG we have to ignore the multimon-ng line "Enabled demodulators:"
elif "Enabled demodulators:" in decoded:
pass
decoder.py ab Zeile 41
Da ich aktuell kein System zum testen habe, weis ich nicht was multimon ausspuckt wenn man es im quiet Mode startet. Wäre schön wenn sich das mal jemand anschauen könnte.
Dann würde ich die decoder.py sowie den multimon-ng Aufruf noch anpassen.
Feature Request/Verbesserung: Die Description Lookup Funktion ist momentan leider noch nicht im BOSWatch "WebInterface" umgesetzt.
Wäre klasse wenn diese Funktion dort ebenfalls implementiert werden könnte.
Hallo,
Die Ausgabe des Programms wird trotz Disown im Terminal angezeigt.
Es wäre so langsam mal angebracht, alle Informationen die zum schreiben eines Plugins von Relevanz sind, zentral als keines Readme zusammenzuschreiben.
Evtl. auch anhand von Beispielen zusammen mit dem template
Plugin das ganze besser nachvollziehbar gestalten.
Wichtige Punkte die mit rein müssen:
Am ende soll die interface.txt
komplett abegelöst werden
Der neue doublefilter verschluckt meine Textnachrichten.
Bedeutet:
Es werden 3x Ton Rufe ausgesendet dann 3x Textmeldungen. Wenn der erste Tonruf in die Liste geschrieben wird sind die Textmeldungen weck...
Heißt also, man muss überprüfen ob es ein Text dabei gibt..?
Aktuell gibt es Probleme beim Import der csv-Files für die description.
ToDos:
Hallo,
habe ein Alarmmonitor Plugin geschrieben, allerdings durchblicke ich nicht wo ich eine Funktion einbringen kann die Überprüft ob der Alarm länger als 30 min her ist und das Display wieder ausschaltet. Habt ihr irgendeine Idee?
Ich würde ein Plugin für pushbullet schreiben.
Push an pushbullet Kanal.
https://docs.pushbullet.com
Ich muss das Tool ersmal zum laufen bringen ;)
Bekomme im Moment noch diese Meldung "[WARNING ] FMS CRC incorrect"
Überschrift sagt alles.
Umlaute werden fehlerhaft übertragen. Anzeige in firE nur durch "unknown char".
Ich nutze seit gestern dieses fantastische Tool und komme ganz gut zurecht.
Nun möchte ich aber bei einem empfangenen "Alarm" einen http-request ausführen. Die Parameter sollen in einer PHP weiterverarbeitet werden, sodass im Endergebnis eine Pushnachricht auf's iPhone erfolgt.
Leider scheitert es bereits beim http request:
Wenn ich die Adresse mit der PHP so im Browser aufrufe, funktioniert es. Ich kriege es nur nicht hin, dass die Datei im Plugin aufgerufen wird. Ich bin nicht der Experte, aber liegt es am GET-Befehl in der Plugin-Datei? Es müssen für meine Erfordernisse streng genommen keine Werte zurückgegben werden. Es reicht, wenn die PHP mit entsprechenden Parametern aufgerufen wird. Sozusagen Fire and forget.
Gruß, Christian
Folgefehler zu #30
Tut noch nicht ganz was es soll :
30.06.2015 00:32:25 - descriptionList [DEBUG ] -- loading csv finished
30.06.2015 00:32:25 - boswatch [DEBUG ] starting rtl_fm
30.06.2015 00:32:28 - boswatch [DEBUG ]
Found 1 device(s):
0: Realtek, RTL2838UHIDIR, SN: 00000001
Using device 0: Generic RTL2832U OEM
Found Rafael Micro R820T tuner
Tuner gain set to 49.60 dB.
Tuner error set to 75 ppm.
Tuned to 172992800 Hz.
Oversampling input by: 64x.
Oversampling output by: 1x.
Buffer size: 5.80ms
Exact sample rate is: 1411200.013458 Hz
Sampling at 1411200 S/s.
Output at 22050 Hz.
30.06.2015 00:32:28 - boswatch [CRITICAL] cannot start rtl_fm
30.06.2015 00:32:28 - boswatch [DEBUG ] cannot start rtl_fm
Traceback (most recent call last):
File "./boswatch.py", line 268, in
raise OSError("starting rtl_fm returns an error")
OSError: starting rtl_fm returns an error
30.06.2015 00:32:28 - boswatch [WARNING ] SystemExit received
30.06.2015 00:32:28 - boswatch [DEBUG ] BOSWatch shuting down
30.06.2015 00:32:28 - boswatch [DEBUG ] terminate rtl_fm (3393)
rtl_fm war bei mir zu dem Zeitpunkt frei, trotzdem hat er abgebrochen...
Hallo,
folgenden Fehler bekomme ich:
recv timed out, retry later
14.07.2015 14:14:44 [DEBUG ] Aus: 1436876041
14.07.2015 14:14:44 [DEBUG ] Now: 1436876084
14.07.2015 14:14:44 [DEBUG ] parsed message: {u'function': u'1', u'functionChar': u'a', u'description': u'(13) FF Muster', u'msg': u'H\xf6ffentlich d\xe4s letzte M\xe4l, verspr\xfcchen', u'bitrate': 1200, u'ric': u'1234567'}
14.07.2015 14:14:44 [DEBUG ] Open Alarm.html
14.07.2015 14:14:44 [ERROR ] unknown error
Traceback (most recent call last):
File "Alarmmonitor.py", line 143, in <module>
index.write(line.replace(repl,message))
UnicodeEncodeError: 'ascii' codec can't encode character u'\xf6' in position 1: ordinal not in range(128)
14.07.2015 14:14:44 [DEBUG ] socketServer shuting down
14.07.2015 14:14:44 [DEBUG ] socket closed
14.07.2015 14:14:44 [DEBUG ] exiting socketServer
14.07.2015 14:14:44 [DEBUG ] close Logging
14.07.2015 14:14:44 [INFO ] socketServer exit()
Leider sehe ich glaube ich den Wald vor lauter Bäumen nicht mehr...
Habe wirklich 0-Ahnung oder Ideen noch wo mein Fehler liegen könnte.
Danke schon mal.
Quelltext:
#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
PLATZHALTER
"""
IP = ""
# listen on port
PORT = 10501
import fileinput, sys, os
import logging
import logging.handlers
from time import *
import socket
import json
#
# Main Program
#
try:
# Logging
myLogger = logging.getLogger()
myLogger.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s [%(levelname)-8s] %(message)s', '%d.%m.%Y %H:%M:%S')
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
ch.setFormatter(formatter)
myLogger.addHandler(ch)
# Start TCP socket:
logging.debug("Start jsonSocketServer")
sock = socket.socket()
sock.bind((IP,PORT))
sock.listen(1)
sock.settimeout(5)
logging.info("jsonSocketServer runs")
aus = time()
now = time()
Display_active=0
Areset = 1
os.system("export DISPLAY=:0.0&&xhost +")
os.system("xhost +")
while True:
#
# Zeitüberwachung
#
now = time()
logging.debug("Aus: %i",aus)
logging.debug("Now: %i",now)
Display_active_man = 0
if aus<now and Areset==1:
logging.debug("Open Alarm.html")
uhrzeit = open("uhr.html").readlines()
index = open("index.html","w")
for line in uhrzeit:
index.write(line)
index.close()
Areset=0
if Display_active==1 and aus<=now and Display_active_man!=1:
os.system("tvservice -o")
logging.debug("Display ausgeschaltet")
Display_active = 0
if Display_active_man==1 and Display_active==0:
os.system("tvservice -p")
os.system("chvt 6")
os.system("chvt 7")
Display_active = 1
logging.debug("Display manuell eingeschaltet")
if Display_active<1 and aus>now:
os.system("tvservice -p")
os.system("chvt 6")
os.system("chvt 7")
Display_active=1
logging.debug("Display automatisch eingeschaltet")
try:
(clientsocket, address) = sock.accept()
json_string = clientsocket.recv( 4096 ) # buffer size is 4096 bytes
except socket.timeout, e:
err = e.args[0]
# this next if/else is a bit redundant, but illustrates how the
# timeout exception is setup
if err == 'timed out':
sleep(1)
print 'recv timed out, retry later'
else:
print e
sys.exit(1)
except socket.error, e:
# Something else happened, handle error, exit, etc.
print e
sys.exit(1)
else:
if len(json_string) == 0:
print 'orderly shutdown on server end'
sys.exit(0)
else:
data = json.loads(json_string)
logging.debug("parsed message: %s", data)
alarmzeit = time()
aus = alarmzeit+1800
try:
logging.debug("Open Alarm.html")
alarm = open("alarm.html").readlines()
index = open("index.html","w+")
except:
logging.error("Cant open Alarmfile")
TIME = strftime("%H:%M",localtime())
message = data["msg"]
message.encode("utf-8")
repl = "%MELDUNG%"
for line in alarm:
index.write(line.replace(repl,message))
index.close()
logging.debug("Chrome neu laden und Bildschirm anschalten")
Display_active = 1
Areset = 1
os.system("Chrome-Refresh")
os.system("tvservice -p")
os.system("chvt 6")
os.system("chvt 7")
except KeyboardInterrupt:
logging.warning("Keyboard Interrupt")
except:
logging.exception("unknown error")
finally:
try:
logging.debug("socketServer shuting down")
sock.close()
logging.debug("socket closed")
logging.debug("exiting socketServer")
except:
logging.warning("failed in clean-up routine")
finally:
logging.debug("close Logging")
logging.info("socketServer exit()")
logging.shutdown()
ch.close()
exit(0)
Wenn zwei RegEX Filter auf ein Plugin zeigen und zwei verschiedene Felder filtern sollen, Wird entweder nach dem einen oder dem anderen RegEX Filter ausgefiltert (Immer unterschiedlich).
Jeder ist eingeladen zu helfen, die Testdaten in citest/testdata.txt
mit zu vervollständigen.
btw: die Felder kann man anklicken, um einen Haken zu setzen 👍
Nabend zusammen,
Ich würde gerne im 4m Band FMS und ZVEI Decodieren und im 2m Band POCSAG, auf Grund der Differenz der Frequenzen, werde ich wohl um 2 Sticks nicht drum herum kommen.
1. Frage: Hat jemand sowas schon realisiert?
2. Frage: Macht es Sinn dann einfach 2 Instanzen von BOSWatch laufen zu lassen (wird auf dem Raspberry dann glaube ich knapp)oder sollte man dann drüber nachdenken den Aufruf von rtl_fm zu verdoppeln im Script?
3. Anregung: Wäre es eventuell sinnvoll einen Multimix so wie unten im Link zu realisieren, und eventuell einzufügen? Mit 2 Sticks hätte man dann relativ viele Kanäle abgedeckt?
Nach Adam Riese würde es ja bedeuten das man maximal wenn man alle Unter und Oberbänder abhören will auf Grund der Frequenzweite von 3,4 MHz 4x RTL-Sticks benötigt, heißt also auch das wäre endlich und müsste nicht dynamisch programmiert werden.
https://github.com/hpdvanwyk/fm-multimix
4. Anregung: Momentan verbraucht mein Raspberry relativ viel seiner geringen CPU-Kapazität, gäbe es die Möglichkeit die Schnittstelle zu RTL SDR etwas zu konkretisieren bzw. zu Verbessern. Es gäbe ja auch eventuell die Möglichkeit Anpassungen an der: https://github.com/steve-m/librtlsdr/blob/master/src/rtl_adsb.c zu nehmen und auf POCSAG bzw. FMS / ZVEI umzubasteln, oder?
(Nur ich glaube sehr Aufwendig, oder?)
Aktuell werden bei jedem Plugin-Aufruf die benötigten connection-Objekte instanziiert und Verbindungen aufgebaut.
Je nach Plugin brauchen die Objekte nur einmal angelegt und teilweise (z.B. MySQL) auch nur einmalig eine Connection erstellt werden.
Um die Verbindungen am Ende sauber zu schließen, benötigt der pluginHandler dafür eine unloadPlugin()
- Funktion, die die entsprechende Methoden im aktiven Plugin aufruft.
Neue Plugin-Struktur am Bsp MySQL:
# lokale Variablen
connection = None
# onLoad (init) function of plugin
# will be called one time by the pluginLoader on start
def onLoad():
connection = mysql.connector.connect
# Main function of MySQL-plugin
# will be called by the alarmHandler
def run(typ,freq,data):
cursor = connection.cursor()
....
cursor.close()
# unLoad (close) function of plugin
# will be called one time by the pluginLoader on shuting down BOSWatch
def unLoad():
connection.close()
Merker mit niedriger Prio...
Aktuell wird als Hilfsmittel die Konfiguration nachträglich geändert. Dies ist unschön.
Ziel: config/logging(.template).ini
Problem:
Wird BOSWatch als Dienst beim Systemstart in rc2.d/S99 gestartet, findet subprocess.popen() die Binaries nicht.
Workaraound:
Feste Pfadangabe /usr/local/bin
ToDo:
Andere Lösung finden, liegt vielleicht auch mal woanders und betrifft nur die, die einen Dienst starten wollen.
Die Gültigkeitsprüfung lässt einen POCSAG-Funktionscode > 3 im decoded-String zu
Wenn man zu viele Plugins aktiviert bzw Plugins viel Zeit brauchen, wird die nachfolgende Meldung von multimon verschluckt und nicht ausgelesen!
Mir ist heute folgendes aufgefallen,
wenn ein Plugin beim import
einen Fehler wirft, wird es komischerweise trotzdem irgendwie in die globals.pluginList[ ]
mit richtigen Namen aufgenommen, aber auf das zuvor geladene Plugin referenziert. Sprich das zuvor geladene Plugin wird 2 mal ausgeführt, siehe Logfile (MySQL)
Er schreibt call MySQL
tatsächlich führt er in diesem Fall dann aber das httpRequest
Plugin aus...
...
09.07.2015 07:51:13 - pluginLoader [DEBUG ] Search in plugin folder
09.07.2015 07:51:13 - pluginLoader [DEBUG ] Plugin [DISABLED] BosMon
09.07.2015 07:51:13 - pluginLoader [DEBUG ] Plugin [DISABLED] eMail
09.07.2015 07:51:13 - pluginLoader [DEBUG ] Plugin [DISABLED] firEmergency
09.07.2015 07:51:13 - pluginLoader [DEBUG ] Plugin [ENABLED ] httpRequest
09.07.2015 07:51:13 - pluginLoader [DEBUG ] Plugin [DISABLED] jsonSocket
09.07.2015 07:51:13 - pluginLoader [DEBUG ] Plugin [ENABLED ] MySQL
09.07.2015 07:51:13 - pluginLoader [DEBUG ] Plugin [DISABLED] template
09.07.2015 07:51:13 - pluginLoader [DEBUG ] load plugin: httpRequest
09.07.2015 07:51:13 - pluginLoader [DEBUG ] call httpRequest.onLoad()
09.07.2015 07:51:13 - pluginLoader [DEBUG ] load plugin: MySQL
09.07.2015 07:51:13 - pluginLoader [ERROR ] cannot load plugin: MySQL
09.07.2015 07:51:13 - pluginLoader [DEBUG ] cannot load plugin: MySQL
Traceback (most recent call last):
File "C:\Users\123\Documents\BOSWatch\includes\pluginLoader.py", line 108, in loadPlugin
return imp.load_module(plugin["name"], *plugin["info"])
File "C:\Users\123\Documents\BOSWatch/plugins\MySQL\MySQL.py", line 16, in <module>
import mysql
ImportError: No module named mysql
09.07.2015 07:51:13 - pluginLoader [ERROR ] error loading plugin: MySQL
09.07.2015 07:51:13 - pluginLoader [DEBUG ] error loading plugin: MySQL
Traceback (most recent call last):
File "C:\Users\123\Documents\BOSWatch\includes\pluginLoader.py", line 32, in loadPlugins
plugin = loadPlugin(i)
File "C:\Users\123\Documents\BOSWatch\includes\pluginLoader.py", line 108, in loadPlugin
return imp.load_module(plugin["name"], *plugin["info"])
File "C:\Users\123\Documents\BOSWatch/plugins\MySQL\MySQL.py", line 16, in <module>
import mysql
ImportError: No module named mysql
09.07.2015 07:51:13 - pluginLoader [DEBUG ] call MySQL.onLoad()
09.07.2015 07:51:13 - boswatch [WARNING ] !!! Test-Mode: rtl_fm not started !!!
09.07.2015 07:51:13 - boswatch [WARNING ] !!! Test-Mode: multimon-ng not started !!!
09.07.2015 07:51:13 - boswatch [DEBUG ] start testing
09.07.2015 07:51:13 - boswatch [INFO ] Testdata: # Testdata for the BOSWatch Test Mode function
09.07.2015 07:51:14 - boswatch [INFO ] Testdata: POCSAG512: Address: 1000512 Function: 1 Alpha: BOSWatch-Test ÖÄÜß: okay
09.07.2015 07:51:14 - decoder [DEBUG ] recieved POCSAG
09.07.2015 07:51:14 - poc [DEBUG ] POCSAG Bitrate: 512
09.07.2015 07:51:14 - poc [INFO ] POCSAG512: 1000512 2 BOSWatch-Test ÖÄÜß: okay
09.07.2015 07:51:14 - alarmHandler [DEBUG ] [ ALARM ]
09.07.2015 07:51:14 - alarmHandler [DEBUG ] call Plugin: httpRequest
09.07.2015 07:51:14 - configHandler [DEBUG ] read [httpRequest] from config file
09.07.2015 07:51:14 - configHandler [DEBUG ] - fms_url = www.google.de?ric=%RIC%&subric=%TIME%&msg=%MSG%
09.07.2015 07:51:14 - configHandler [DEBUG ] - zvei_url = www.google.de?ric=%RIC%&subric=%TIME%&msg=%MSG%
09.07.2015 07:51:14 - configHandler [DEBUG ] - poc_url = www.google.de?ric=%RIC%&subric=%TIME%&msg=%MSG%
09.07.2015 07:51:14 - wildcardHandler [DEBUG ] wildcards been replaced
09.07.2015 07:51:14 - httpRequest [DEBUG ] send POC HTTP request
09.07.2015 07:51:15 - httpRequest [DEBUG ] HTTP response: 200 - OK
09.07.2015 07:51:15 - httpRequest [DEBUG ] close HTTP-Connection
09.07.2015 07:51:15 - alarmHandler [DEBUG ] return from: httpRequest
09.07.2015 07:51:15 - alarmHandler [DEBUG ] call Plugin: MySQL
09.07.2015 07:51:15 - configHandler [DEBUG ] read [httpRequest] from config file
09.07.2015 07:51:15 - configHandler [DEBUG ] - fms_url = www.google.de?ric=%RIC%&subric=%TIME%&msg=%MSG%
09.07.2015 07:51:15 - configHandler [DEBUG ] - zvei_url = www.google.de?ric=%RIC%&subric=%TIME%&msg=%MSG%
09.07.2015 07:51:15 - configHandler [DEBUG ] - poc_url = www.google.de?ric=%RIC%&subric=%TIME%&msg=%MSG%
09.07.2015 07:51:15 - wildcardHandler [DEBUG ] wildcards been replaced
09.07.2015 07:51:15 - httpRequest [DEBUG ] send POC HTTP request
09.07.2015 07:51:15 - httpRequest [DEBUG ] HTTP response: 200 - OK
09.07.2015 07:51:15 - httpRequest [DEBUG ] close HTTP-Connection
09.07.2015 07:51:15 - alarmHandler [DEBUG ] return from: MySQL
09.07.2015 07:51:15 - alarmHandler [DEBUG ] [END ALARM]
....
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.