mirror of
https://github.com/openplotter/openplotter-maiana.git
synced 2025-05-28 04:50:19 -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):
|
||||
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')
|
||||
if self.conf.get('MAIANA', 'noiseDetect') == '1': self.toolbar3.ToggleTool(304,True)
|
||||
else: self.toolbar3.ToggleTool(304,False)
|
||||
deviceOld = self.device
|
||||
availableIDs = []
|
||||
selected = ''
|
||||
@ -192,25 +204,20 @@ class MyFrame(wx.Frame):
|
||||
data = ujson.loads(resp.content)
|
||||
except: data = {}
|
||||
|
||||
self.logger.Clear()
|
||||
self.logger.BeginFontSize(10)
|
||||
self.logger.WriteText('This feature is still under construction')
|
||||
self.logger.Newline()
|
||||
self.logger.Newline()
|
||||
self.logger.WriteText(_('Hardware revision'))
|
||||
if 'hardwareRevision' in data: self.logger.WriteText(': '+data['hardwareRevision']['value'])
|
||||
self.logger.Newline()
|
||||
self.logger.WriteText(_('Firmware revision'))
|
||||
if 'firmwareRevision' in data: self.logger.WriteText(': '+data['firmwareRevision']['value'])
|
||||
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'))
|
||||
if 'MCUtype' in data: self.logger.WriteText(': '+data['MCUtype']['value'])
|
||||
self.logger.Newline()
|
||||
|
||||
self.logger2.Clear()
|
||||
self.logger.WriteText(_('Serial number'))
|
||||
if 'serialNumber' in data: self.logger.WriteText(': '+data['serialNumber']['value'])
|
||||
self.logger.Newline()
|
||||
|
||||
self.logger2.BeginFontSize(10)
|
||||
self.logger2.WriteText(_('Transmitter hardware module'))
|
||||
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 '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']))
|
||||
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'))
|
||||
|
||||
|
||||
@ -424,6 +423,9 @@ class MyFrame(wx.Frame):
|
||||
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.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"))
|
||||
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)
|
||||
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):
|
||||
mmsi = self.mmsi.GetValue()
|
||||
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
|
||||
# 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 platform
|
||||
from openplotterSettings import language
|
||||
from websocket import create_connection
|
||||
|
||||
def main():
|
||||
platform2 = platform.Platform()
|
||||
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')
|
||||
device = conf2.get('MAIANA', 'device')
|
||||
if conf2.get('GENERAL', 'debug') == 'yes': debug = True
|
||||
else: debug = False
|
||||
if token and device:
|
||||
ws = False
|
||||
sock = False
|
||||
@ -56,16 +63,27 @@ def main():
|
||||
data3 = data2.split('*')
|
||||
data3 = data3[0].split(',')
|
||||
#$PAINF,A,0x20*5B
|
||||
if data3[0] == '$PAINF':
|
||||
try: SKdata.update({"MAIANA.channel"+data3[1]+".noiseFloor":int(data3[2],16)})
|
||||
if data3[0] == '$PAINF':
|
||||
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
|
||||
#$PAITX,A,18*1C
|
||||
elif data3[0] == '$PAITX':
|
||||
SKdata.update({"MAIANA.channel"+data3[1]+".transmittedMessageType":data3[2]})
|
||||
#$PAISYS,11.0.0,3.1.0,00010*2E
|
||||
elif data3[0] == '$PAISYS':
|
||||
try: SKdata.update({"MAIANA.hardwareRevision":data3[1],"MAIANA.firmwareRevision":data3[2],"MAIANA.serialNumber":data3[3],"MAIANA.MCUtype":data3[4]})
|
||||
except: SKdata.update({"MAIANA.hardwareRevision":data3[1],"MAIANA.firmwareRevision":data3[2],"MAIANA.serialNumber":data3[3],"MAIANA.MCUtype":''})
|
||||
#$PAISYS,11.3.0,4.0.0,,STM32L422,1,1*05
|
||||
elif data3[0] == '$PAISYS':
|
||||
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:
|
||||
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
|
||||
elif data3[0] == '$PAISTN':
|
||||
try:
|
||||
@ -83,7 +101,8 @@ def main():
|
||||
SignalK = {"updates":[{"$source":"OpenPlotter.maiana","values":keys}]}
|
||||
SignalK = json.dumps(SignalK)
|
||||
ws.send(SignalK+'\r\n')
|
||||
except:
|
||||
except Exception as e:
|
||||
if debug: print(str(e))
|
||||
if ws: ws.close()
|
||||
if sock: sock.close()
|
||||
time.sleep(5)
|
||||
|
Loading…
x
Reference in New Issue
Block a user