mirror of
https://github.com/openplotter/openplotter-maiana.git
synced 2025-06-01 06:50:11 -07:00
add noise detection
This commit is contained in:
parent
fbf534359d
commit
1083567ab6
BIN
openplotterMaiana/data/notifications.png
Normal file
BIN
openplotterMaiana/data/notifications.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 9.4 KiB |
@ -134,7 +134,19 @@ class MyFrame(wx.Frame):
|
|||||||
|
|
||||||
def onRead(self):
|
def onRead(self):
|
||||||
self.ShowStatusBarYELLOW(_('Reading MAIANA device settings...'))
|
self.ShowStatusBarYELLOW(_('Reading MAIANA device settings...'))
|
||||||
|
self.mmsi.SetValue('')
|
||||||
|
self.vesselName.SetValue('')
|
||||||
|
self.callSign.SetValue('')
|
||||||
|
self.vesselType.SetValue('')
|
||||||
|
self.LOA.SetValue('')
|
||||||
|
self.beam.SetValue('')
|
||||||
|
self.portOffset.SetValue('')
|
||||||
|
self.bowOffset.SetValue('')
|
||||||
|
self.logger.Clear()
|
||||||
|
self.logger2.Clear()
|
||||||
self.device = self.conf.get('MAIANA', 'device')
|
self.device = self.conf.get('MAIANA', 'device')
|
||||||
|
if self.conf.get('MAIANA', 'noiseDetect') == '1': self.toolbar3.ToggleTool(304,True)
|
||||||
|
else: self.toolbar3.ToggleTool(304,False)
|
||||||
deviceOld = self.device
|
deviceOld = self.device
|
||||||
availableIDs = []
|
availableIDs = []
|
||||||
selected = ''
|
selected = ''
|
||||||
@ -192,25 +204,20 @@ class MyFrame(wx.Frame):
|
|||||||
data = ujson.loads(resp.content)
|
data = ujson.loads(resp.content)
|
||||||
except: data = {}
|
except: data = {}
|
||||||
|
|
||||||
self.logger.Clear()
|
|
||||||
self.logger.BeginFontSize(10)
|
self.logger.BeginFontSize(10)
|
||||||
self.logger.WriteText('This feature is still under construction')
|
|
||||||
self.logger.Newline()
|
|
||||||
self.logger.Newline()
|
|
||||||
self.logger.WriteText(_('Hardware revision'))
|
self.logger.WriteText(_('Hardware revision'))
|
||||||
if 'hardwareRevision' in data: self.logger.WriteText(': '+data['hardwareRevision']['value'])
|
if 'hardwareRevision' in data: self.logger.WriteText(': '+data['hardwareRevision']['value'])
|
||||||
self.logger.Newline()
|
self.logger.Newline()
|
||||||
self.logger.WriteText(_('Firmware revision'))
|
self.logger.WriteText(_('Firmware revision'))
|
||||||
if 'firmwareRevision' in data: self.logger.WriteText(': '+data['firmwareRevision']['value'])
|
if 'firmwareRevision' in data: self.logger.WriteText(': '+data['firmwareRevision']['value'])
|
||||||
self.logger.Newline()
|
self.logger.Newline()
|
||||||
self.logger.WriteText(_('Serial number'))
|
|
||||||
if 'serialNumber' in data: self.logger.WriteText(': '+data['serialNumber']['value'])
|
|
||||||
self.logger.Newline()
|
|
||||||
self.logger.WriteText(_('Type of MCU'))
|
self.logger.WriteText(_('Type of MCU'))
|
||||||
if 'MCUtype' in data: self.logger.WriteText(': '+data['MCUtype']['value'])
|
if 'MCUtype' in data: self.logger.WriteText(': '+data['MCUtype']['value'])
|
||||||
self.logger.Newline()
|
self.logger.Newline()
|
||||||
|
self.logger.WriteText(_('Serial number'))
|
||||||
self.logger2.Clear()
|
if 'serialNumber' in data: self.logger.WriteText(': '+data['serialNumber']['value'])
|
||||||
|
self.logger.Newline()
|
||||||
|
|
||||||
self.logger2.BeginFontSize(10)
|
self.logger2.BeginFontSize(10)
|
||||||
self.logger2.WriteText(_('Transmitter hardware module'))
|
self.logger2.WriteText(_('Transmitter hardware module'))
|
||||||
if 'transmission' in data:
|
if 'transmission' in data:
|
||||||
@ -319,15 +326,7 @@ class MyFrame(wx.Frame):
|
|||||||
if 'beam' in data['station']: self.beam.SetValue(str(data['station']['beam']['value']))
|
if 'beam' in data['station']: self.beam.SetValue(str(data['station']['beam']['value']))
|
||||||
if 'bowOffset' in data['station']: self.bowOffset.SetValue(str(data['station']['bowOffset']['value']))
|
if 'bowOffset' in data['station']: self.bowOffset.SetValue(str(data['station']['bowOffset']['value']))
|
||||||
if 'portOffset' in data['station']: self.portOffset.SetValue(str(data['station']['portOffset']['value']))
|
if 'portOffset' in data['station']: self.portOffset.SetValue(str(data['station']['portOffset']['value']))
|
||||||
else:
|
|
||||||
self.mmsi.SetValue('')
|
|
||||||
self.vesselName.SetValue('')
|
|
||||||
self.callSign.SetValue('')
|
|
||||||
self.vesselType.SetValue('')
|
|
||||||
self.LOA.SetValue('')
|
|
||||||
self.beam.SetValue('')
|
|
||||||
self.portOffset.SetValue('')
|
|
||||||
self.bowOffset.SetValue('')
|
|
||||||
self.ShowStatusBarGREEN(_('Done'))
|
self.ShowStatusBarGREEN(_('Done'))
|
||||||
|
|
||||||
|
|
||||||
@ -424,6 +423,9 @@ class MyFrame(wx.Frame):
|
|||||||
toolTX = self.toolbar3.AddTool(302, _('Software TX switch'), wx.Bitmap(self.currentdir+"/data/switch-off.png"))
|
toolTX = self.toolbar3.AddTool(302, _('Software TX switch'), wx.Bitmap(self.currentdir+"/data/switch-off.png"))
|
||||||
self.Bind(wx.EVT_TOOL, self.OnToolTX, toolTX)
|
self.Bind(wx.EVT_TOOL, self.OnToolTX, toolTX)
|
||||||
self.toolbar3.AddSeparator()
|
self.toolbar3.AddSeparator()
|
||||||
|
toolNoise = self.toolbar3.AddCheckTool(304, _('Detect noise'), wx.Bitmap(self.currentdir+"/data/notifications.png"))
|
||||||
|
self.Bind(wx.EVT_TOOL, self.OnToolNoise, toolNoise)
|
||||||
|
self.toolbar3.AddSeparator()
|
||||||
toolSave = self.toolbar3.AddTool(303, _('Save station data'), wx.Bitmap(self.currentdir+"/data/apply.png"))
|
toolSave = self.toolbar3.AddTool(303, _('Save station data'), wx.Bitmap(self.currentdir+"/data/apply.png"))
|
||||||
self.Bind(wx.EVT_TOOL, self.OnToolSave, toolSave)
|
self.Bind(wx.EVT_TOOL, self.OnToolSave, toolSave)
|
||||||
|
|
||||||
@ -462,6 +464,12 @@ class MyFrame(wx.Frame):
|
|||||||
vbox.Add(hbox4, 1, wx.ALL | wx.EXPAND, 0)
|
vbox.Add(hbox4, 1, wx.ALL | wx.EXPAND, 0)
|
||||||
self.settings.SetSizer(vbox)
|
self.settings.SetSizer(vbox)
|
||||||
|
|
||||||
|
def OnToolNoise(self,e):
|
||||||
|
if self.toolbar3.GetToolState(304):
|
||||||
|
self.conf.set('MAIANA', 'noiseDetect', '1')
|
||||||
|
else:
|
||||||
|
self.conf.set('MAIANA', 'noiseDetect', '0')
|
||||||
|
|
||||||
def OnToolSave(self, event):
|
def OnToolSave(self, event):
|
||||||
mmsi = self.mmsi.GetValue()
|
mmsi = self.mmsi.GetValue()
|
||||||
if not re.match('^[0-9]{9,9}$', mmsi):
|
if not re.match('^[0-9]{9,9}$', mmsi):
|
||||||
|
@ -15,16 +15,23 @@
|
|||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with Openplotter. If not, see <http://www.gnu.org/licenses/>.
|
# along with Openplotter. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
import socket, time, ssl, json
|
import os, socket, time, ssl, json, datetime
|
||||||
from openplotterSettings import conf
|
from openplotterSettings import conf
|
||||||
from openplotterSettings import platform
|
from openplotterSettings import platform
|
||||||
|
from openplotterSettings import language
|
||||||
from websocket import create_connection
|
from websocket import create_connection
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
platform2 = platform.Platform()
|
platform2 = platform.Platform()
|
||||||
conf2 = conf.Conf()
|
conf2 = conf.Conf()
|
||||||
|
currentdir = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
currentLanguage = conf2.get('GENERAL', 'lang')
|
||||||
|
package = 'openplotter-maiana'
|
||||||
|
language.Language(currentdir, package, currentLanguage)
|
||||||
token = conf2.get('MAIANA', 'token')
|
token = conf2.get('MAIANA', 'token')
|
||||||
device = conf2.get('MAIANA', 'device')
|
device = conf2.get('MAIANA', 'device')
|
||||||
|
if conf2.get('GENERAL', 'debug') == 'yes': debug = True
|
||||||
|
else: debug = False
|
||||||
if token and device:
|
if token and device:
|
||||||
ws = False
|
ws = False
|
||||||
sock = False
|
sock = False
|
||||||
@ -56,16 +63,27 @@ def main():
|
|||||||
data3 = data2.split('*')
|
data3 = data2.split('*')
|
||||||
data3 = data3[0].split(',')
|
data3 = data3[0].split(',')
|
||||||
#$PAINF,A,0x20*5B
|
#$PAINF,A,0x20*5B
|
||||||
if data3[0] == '$PAINF':
|
if data3[0] == '$PAINF':
|
||||||
try: SKdata.update({"MAIANA.channel"+data3[1]+".noiseFloor":int(data3[2],16)})
|
try:
|
||||||
|
noiseValue = int(data3[2],16)
|
||||||
|
SKdata.update({"MAIANA.channel"+data3[1]+".noiseFloor":noiseValue})
|
||||||
|
if conf2.get('MAIANA', 'noiseDetect') == '1':
|
||||||
|
if noiseValue > 64:
|
||||||
|
now = datetime.datetime.now()
|
||||||
|
now = now.strftime("%Y-%m-%dT%H:%M:%fZ")
|
||||||
|
SKdata.update({"notifications.MAIANA.channel"+data3[1]+".noiseFloor":{"message":_("There may be electromagnetic interference near the MAIANA AIS antenna"),"state":"alert","method": ["visual", "sound"],"timestamp":now}})
|
||||||
|
else:
|
||||||
|
SKdata.update({"notifications.MAIANA.channel"+data3[1]+".noiseFloor":None})
|
||||||
except: pass
|
except: pass
|
||||||
#$PAITX,A,18*1C
|
#$PAITX,A,18*1C
|
||||||
elif data3[0] == '$PAITX':
|
elif data3[0] == '$PAITX':
|
||||||
SKdata.update({"MAIANA.channel"+data3[1]+".transmittedMessageType":data3[2]})
|
SKdata.update({"MAIANA.channel"+data3[1]+".transmittedMessageType":data3[2]})
|
||||||
#$PAISYS,11.0.0,3.1.0,00010*2E
|
#$PAISYS,11.3.0,4.0.0,,STM32L422,1,1*05
|
||||||
elif data3[0] == '$PAISYS':
|
elif data3[0] == '$PAISYS':
|
||||||
try: SKdata.update({"MAIANA.hardwareRevision":data3[1],"MAIANA.firmwareRevision":data3[2],"MAIANA.serialNumber":data3[3],"MAIANA.MCUtype":data3[4]})
|
try: SKdata.update({"MAIANA.hardwareRevision":data3[1],"MAIANA.firmwareRevision":data3[2],"MAIANA.serialNumber":data3[3],"MAIANA.MCUtype":data3[4],"MAIANA.breakoutGeneration":data3[5],"MAIANA.bootloader":data3[6]})
|
||||||
except: SKdata.update({"MAIANA.hardwareRevision":data3[1],"MAIANA.firmwareRevision":data3[2],"MAIANA.serialNumber":data3[3],"MAIANA.MCUtype":''})
|
except:
|
||||||
|
try: SKdata.update({"MAIANA.hardwareRevision":data3[1],"MAIANA.firmwareRevision":data3[2],"MAIANA.serialNumber":data3[3],"MAIANA.MCUtype":data3[4],"MAIANA.breakoutGeneration":'',"MAIANA.bootloader":''})
|
||||||
|
except: SKdata.update({"MAIANA.hardwareRevision":data3[1],"MAIANA.firmwareRevision":data3[2],"MAIANA.serialNumber":data3[3],"MAIANA.MCUtype":'',"MAIANA.breakoutGeneration":'',"MAIANA.bootloader":''})
|
||||||
#$PAISTN,987654321,NAUT,,37,0,0,0,0*2A
|
#$PAISTN,987654321,NAUT,,37,0,0,0,0*2A
|
||||||
elif data3[0] == '$PAISTN':
|
elif data3[0] == '$PAISTN':
|
||||||
try:
|
try:
|
||||||
@ -83,7 +101,8 @@ def main():
|
|||||||
SignalK = {"updates":[{"$source":"OpenPlotter.maiana","values":keys}]}
|
SignalK = {"updates":[{"$source":"OpenPlotter.maiana","values":keys}]}
|
||||||
SignalK = json.dumps(SignalK)
|
SignalK = json.dumps(SignalK)
|
||||||
ws.send(SignalK+'\r\n')
|
ws.send(SignalK+'\r\n')
|
||||||
except:
|
except Exception as e:
|
||||||
|
if debug: print(str(e))
|
||||||
if ws: ws.close()
|
if ws: ws.close()
|
||||||
if sock: sock.close()
|
if sock: sock.close()
|
||||||
time.sleep(5)
|
time.sleep(5)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user