NMEA2000 remote keyboard support
This commit is contained in:
@@ -35,6 +35,8 @@ class MapService():
|
||||
|
||||
def get_px_meters(self, lat, zoom):
|
||||
# Erdumfang am Äquator: 40075016 m
|
||||
if not lat:
|
||||
return 0
|
||||
return 40075016 * math.cos(math.radians(lat)) / (2 ** (zoom + 8))
|
||||
|
||||
def web_get_tile(self, domain, path):
|
||||
|
||||
21
obp60v.py
21
obp60v.py
@@ -118,7 +118,7 @@ import nmea0183
|
||||
import pages
|
||||
|
||||
__author__ = "Thomas Hooge"
|
||||
__copyright__ = "Copyleft 2024-2025, all rights reversed"
|
||||
__copyright__ = "Copyleft 2024-2026, all rights reversed"
|
||||
__version__ = "0.3"
|
||||
__email__ = "thomas@hoogi.de"
|
||||
__status__ = "Development"
|
||||
@@ -166,6 +166,10 @@ def rxd_n2k(device):
|
||||
#boatdata.setValue("LAT", lat)
|
||||
#boatdata.setValue("LON", lon)
|
||||
parser.parse_129025(msg.data, boatdata)
|
||||
case 127502:
|
||||
# Switch bank control
|
||||
# Remote keys received via callback function
|
||||
parser.parse_127502(msg.data, boatdata)
|
||||
case 127505:
|
||||
# Fluid level
|
||||
#fluidtype = msg.data[0] >> 4
|
||||
@@ -398,6 +402,11 @@ class Frontend(Gtk.Window):
|
||||
# Flash LED
|
||||
self.flashled = LED(self.fixed, self._fullscreen) # Soft Flash-LED
|
||||
|
||||
# Callback für Remote-Tasten einbauen
|
||||
for button in range(1, 7):
|
||||
boatdata.switchbank[0].setCallback(button, self.on_remote_key)
|
||||
print(f"Added remote key {button}")
|
||||
|
||||
self.button_clicked = 0 # Geklickter Button vor Loslassen
|
||||
self.keylock = False
|
||||
self.pages = profile
|
||||
@@ -540,6 +549,10 @@ class Frontend(Gtk.Window):
|
||||
if selected == 6 and self.button_clicked == 1:
|
||||
self.keylock = False
|
||||
return True
|
||||
|
||||
return self.handle_button(selected)
|
||||
|
||||
def handle_button(self, selected):
|
||||
# Alarm! Only botton "1" so dismiss
|
||||
if self.boatdata.alarm:
|
||||
if selected == 1:
|
||||
@@ -589,6 +602,10 @@ class Frontend(Gtk.Window):
|
||||
self.curpage.backlight = not self.curpage.backlight
|
||||
return True
|
||||
|
||||
def on_remote_key(self, index, action):
|
||||
print(f"Remote key {index}: {action}")
|
||||
return self.handle_button(index)
|
||||
|
||||
def on_delete(self, widget, event):
|
||||
# Einhängepunkt für zukünftige Erweiterungen
|
||||
# Hier kann der Vorgang noch durch z.B. Benutzerinteraktion
|
||||
@@ -687,6 +704,7 @@ def init_logging(logdir, logfile='obp60v.log', loglevel=logging.INFO):
|
||||
console.setLevel(loglevel)
|
||||
log.addHandler(console)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
setproctitle("obp60v")
|
||||
@@ -701,6 +719,7 @@ if __name__ == "__main__":
|
||||
boatdata = BoatData()
|
||||
boatdata.addTank(0)
|
||||
boatdata.addEngine(0)
|
||||
boatdata.addSwitchBank(0)
|
||||
|
||||
# Basiskonfiguration aus Datei lesen
|
||||
config = configparser.ConfigParser()
|
||||
|
||||
@@ -50,7 +50,7 @@ class Anchor(Page):
|
||||
self._bd = boatdata
|
||||
self.zoom = 15
|
||||
self.app.mapsrv.set_output_size(260, 260)
|
||||
self.app.mapsrv.get_px_meters(self._bd.lat.getRawValue(), self.zoom)
|
||||
self.app.mapsrv.get_px_meters(self._bd.lat.getValueRaw(), self.zoom)
|
||||
self.bgimage = None
|
||||
self._map_tick = 10
|
||||
# Vor Hafeneinfahrt Wedel
|
||||
|
||||
Reference in New Issue
Block a user