diff --git a/mapservice.py b/mapservice.py index eeb5c15..4765e0b 100644 --- a/mapservice.py +++ b/mapservice.py @@ -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): diff --git a/obp60v.py b/obp60v.py index 95012d9..e669d8c 100755 --- a/obp60v.py +++ b/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() diff --git a/pages/anchor.py b/pages/anchor.py index 8e370b3..9feb093 100644 --- a/pages/anchor.py +++ b/pages/anchor.py @@ -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