Metadata-Version: 2.1
Name: boatface
Version: 0.0.2
Summary: Instrumentation panel for displaying NMEA and SignalK telemetry data
Home-page: https://github.com/maritime-labs/boatface
Download-URL: https://pypi.org/project/boatface/
Author: Holger Marseille
Author-email: ml@argonauta.studio
Maintainer: Andreas Motl
Maintainer-email: andreas.motl@panodata.org
License: AGPL-3.0, EUPL-1.2
Keywords: instrumentation,navigation,panel,display,opencpn,signalk,openplotter,nmea,nmea-0183,sailing,sensor,environmental-monitoring,e-ink,kindle,kobo,tolino
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: License :: OSI Approved :: GNU Affero General Public License v3
Classifier: License :: OSI Approved :: European Union Public Licence 1.2 (EUPL 1.2)
Classifier: Development Status :: 3 - Alpha
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: MacOS
Classifier: Natural Language :: English
Classifier: Intended Audience :: Customer Service
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Education
Classifier: Intended Audience :: Information Technology
Classifier: Intended Audience :: Manufacturing
Classifier: Intended Audience :: Science/Research
Classifier: Intended Audience :: System Administrators
Classifier: Intended Audience :: Telecommunications Industry
Classifier: Topic :: Communications
Classifier: Topic :: Education :: Testing
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: System :: Emulators
Classifier: Topic :: System :: Networking
Classifier: Topic :: Utilities
License-File: LICENSE
Requires-Dist: asyncio-dgram (<3,>2)
Requires-Dist: pynmea2 (<2,>1)
Requires-Dist: Pillow (<10)
Requires-Dist: click (<9)
Requires-Dist: dataclasses ; python_version <= "3.6"
Requires-Dist: importlib-metadata ; python_version <= "3.7"
Provides-Extra: test
Requires-Dist: pytest (<8) ; extra == 'test'
Requires-Dist: pytest-cov (<4) ; extra == 'test'
Provides-Extra: ui
Requires-Dist: pyglet (<2) ; extra == 'ui'
Requires-Dist: pysdl2 (<1) ; extra == 'ui'

.. image:: https://github.com/maritime-labs/boatface/workflows/Tests/badge.svg
    :target: https://github.com/maritime-labs/boatface/actions?workflow=Tests

.. image:: https://codecov.io/gh/maritime-labs/boatface/branch/main/graph/badge.svg
    :target: https://codecov.io/gh/maritime-labs/boatface

.. image:: https://pepy.tech/badge/boatface/month
    :target: https://pypi.org/project/boatface/

.. image:: https://img.shields.io/pypi/v/boatface.svg
    :target: https://pypi.org/project/boatface/

.. image:: https://img.shields.io/pypi/status/boatface.svg
    :target: https://pypi.org/project/boatface/

.. image:: https://img.shields.io/pypi/pyversions/boatface.svg
    :target: https://pypi.org/project/boatface/

.. image:: https://img.shields.io/pypi/l/boatface.svg
    :target: https://github.com/maritime-labs/boatface/blob/main/LICENSE

|

######################
Maritime Labs Boatface
######################


*****
About
*****

An instrumentation panel for displaying NMEA and SignalK telemetry data,
specifically on `electronic ink`_ displays.

NMEA-0183 telemetry data is received on UDP port 10110.


.. note::

    Please note this is ALPHA quality software.

    - Essentially, the program currently only demonstrates two features
      separately: Telemetry receiver vs. Rendering and display.
    - Many details will still need to be implemented.
    - There might be dragons.


Screenshot
==========

.. figure:: https://user-images.githubusercontent.com/453543/181004242-49231c0d-8c2c-4470-81d5-8d882b073736.png

Features
========

- Receive and parse NMEA sentences
- Render user interface as PIL image
- Display user interface on different backends: `PNG`_, `pyglet`_, `PySDL2`_, `eips`_

Device support
==============

- Desktop: Linux, macOS, Windows
- E-book devices using `electronic ink`_ displays:
  `Amazon Kindle`_, `Kobo eReader`_, `Tolino eReader`_


*****
Setup
*****
::

    pip install --upgrade boatface[ui]

To install the latest development version from the repository, invoke::

    pip install --upgrade git+https://github.com/maritime-labs/boatface#egg=boatface[ui]


*****
Usage
*****

Terminal::

    # Submit telemetry messages in NMEA-0183 format to UDP broadcast.
    pip install calypso-anemometer
    calypso-anemometer fake --subscribe --rate=hz_8 --target=udp+broadcast+nmea0183://255.255.255.255:10110

    # Listen on the network for NMEA-0183 messages and display them on the terminal.
    boatface log --source=udp+broadcast+nmea0183://0.0.0.0:10110

GUI::

    # Display demo data in preview application, single-shot.
    boatface ui --source=demo:// --display=viewer

    # Display demo data on the screen, using the `eips` program, in landscape orientation.
    boatface ui --source=demo:// --display=eips --landscape

    # Display demo data on the user interface, using Pyglet.
    boatface ui --source=demo:// --display=pyglet

    # Display demo data on the user interface, using SDL.
    boatface ui --source=demo:// --display=sdl

An example NMEA-0183 sentence emitted by ``calypso-anemometer`` is::

    $IIVWR,154.0,L,11.06,N,5.69,M,20.48,K*65

More options::

    # Enable verbose output.
    boatface --verbose ui --source=demo:// --display=pyglet


**************
Other projects
**************

- SignalK Instrument package:
  https://github.com/mxtommy/Kip

- Kindle eink UI for SignalK data:
  https://github.com/ieb/signalk-eink

- iKommunicate-Kindle:
  https://github.com/tkurki/sk-on-kindle

- Using Tolino eBook reader as display for SignalK:
  https://github.com/koileLab/SignalkTolino


*******************
Project information
*******************

Etymology
=========

In honour of `Boaty McBoatface`_.

Contributions
=============

Any kind of contribution, feedback or patches are very much welcome! Just `create
an issue`_ or submit a patch if you think we should include a new feature, or to
report or fix a bug.

Development
===========

In order to setup a development environment on your workstation, please head over
to the `development sandbox`_ documentation. When you see the software tests succeed,
you should be ready to start hacking.

Resources
=========

- `Source code repository <https://github.com/maritime-labs/boatface>`_
- `Documentation <https://github.com/maritime-labs/boatface/blob/main/README.rst>`_
- `Python Package Index (PyPI) <https://pypi.org/project/boatface/>`_

License
=======

The project is licensed under the terms of the GNU AGPL license.



.. _Amazon Kindle: https://en.wikipedia.org/wiki/Amazon_Kindle
.. _Boaty McBoatface: https://en.wikipedia.org/wiki/Boaty_McBoatface
.. _create an issue: https://github.com/maritime-labs/boatface/issues
.. _development sandbox: https://github.com/maritime-labs/boatface/blob/main/doc/sandbox.rst
.. _eips: https://wiki.mobileread.com/wiki/Eips
.. _electronic ink: https://en.wikipedia.org/wiki/E_Ink
.. _FBInk: https://github.com/NiLuJe/FBInk
.. _Kobo eReader: https://en.wikipedia.org/wiki/Kobo_eReader
.. _OpenCPN: https://opencpn.org/
.. _OpenPlotter: https://open-boat-projects.org/en/openplotter/
.. _PNG: https://en.wikipedia.org/wiki/Portable_Network_Graphics
.. _pyglet: https://pyglet.readthedocs.io/
.. _PySDL2: https://pysdl2.readthedocs.io/
.. _SignalK: https://github.com/SignalK/signalk-server
.. _Tolino eReader: https://de.wikipedia.org/wiki/Tolino
