derhuerst / live-icomera-position

Live vehicle geolocation, taken from the on-board Icomera WiFi system.
https://github.com/derhuerst/live-icomera-position#live-icomera-position
ISC License
1 stars 0 forks source link
flixbus geolocation icomera

live-icomera-position

Live vehicle geolocation, taken from the on-board Icomera WiFi system.

npm version ISC-licensed minimum Node.js version chat with me on Gitter support me on Patreon

Installation

npm install live-icomera-position

Usage

command-line interface (CLI)

Usage:
    live-icomera-postion
Options:
    --interval <ms>      -i <ms>  How often to fetch the current position.
                                    Default: 3000
    --timeout <ms>       -t <ms>  How long to wait when fetching a position.
                                    Default: 2500
Examples:
    live-icomera-postion -i 5000 >>positions.ndjson

as a library

asStream() returns a readable stream in object mode.

import {pipeline} from 'node:stream/promises'
import {asStream} from 'live-icomera-position'
import ndjson from 'ndjson'

await pipeline(
    asStream(),
    ndjson.stringify(),
    process.stdout,
)

An individual data point will look like this:

{
    latitude: 50.9069,
    longitude: 7.0649,
    altitude: 36.9,
    speed: 97, // km/h
    nrOfSatellites: 8,
    mode: '3' // see below
}

You can also use the EventEmitter-based API:

import {asEventEmitter} from 'live-icomera-position'

const positions = asEventEmitter()
positions.on('error', console.error)
positions.on('data', data => console.log(data))

Mode

The mode value in a datapoint appears familiar with the one a widespread gps client called GPSD uses. We don't have any confirmation that the icomera system uses GPSD, but if it did the mode values would mean following: Value State
0 no value seen.
1 no position.
2 2D position, no altitude.
3 3D position, altitude present.

source: GPSD Documentation

Related

Contributing

If you have a question or need support using live-icomera-position, please double-check your code and setup first. If you think you have found a bug or want to propose a feature, use the issues page.