update README and Makefile

pull/1/head
bert hubert 2019-08-15 22:08:59 +02:00
parent ee24f6f639
commit ac76ba1d28
2 changed files with 56 additions and 20 deletions

View File

@ -2,12 +2,12 @@ CXXFLAGS:= -std=gnu++17 -Wall -O3 -MMD -MP -ggdb -fno-omit-frame-pointer -Iext/
PROGRAMS = navparse ubxtool navnexus navrecv navdump
all: $(PROGRAMS)
all: navmon.pb.cc $(PROGRAMS)
-include *.d
clean:
rm -f *~ *.o *.d ext/*/*.o $(PROGRAMS)
rm -f *~ *.o *.d ext/*/*.o $(PROGRAMS) navmon.pb.h navmon.pb.cc
H2OPP=ext/powerblog/h2o-pp.o
SIMPLESOCKETS=ext/powerblog/ext/simplesocket/swrappers.o ext/powerblog/ext/simplesocket/sclasses.o ext/powerblog/ext/simplesocket/comboaddress.o
@ -26,11 +26,9 @@ navrecv: navrecv.o ext/fmt-5.2.1/src/format.o $(SIMPLESOCKETS) navmon.pb.o stora
$(CXX) -std=gnu++17 $^ -o $@ -pthread -lprotobuf
navmon.pb.h: navmon.proto
navmon.pb.cc: navmon.proto
protoc --cpp_out=./ navmon.proto
ubxtool: ubxtool.o ubx.o bits.o ext/fmt-5.2.1/src/format.o galileo.o navmon.pb.o gps.o
ubxtool: navmon.pb.o ubxtool.o ubx.o bits.o ext/fmt-5.2.1/src/format.o galileo.o gps.o
$(CXX) -std=gnu++17 $^ -o $@ -lprotobuf

View File

@ -1,5 +1,51 @@
# galmon
galileo open source monitoring
galileo/GPS open source monitoring
Theoretically multi-vendor, although currently only the U-blox 8 chipset is
supported.
Goals:
1) Support multiple wildly distributed receivers
2) Combine these into a forensic archive of all Galileo/GPS NAV messages
3) Make this archive available, offline and as a stream
4) Consume this stream and turn it into an attractive live website
(https://galmon.eu/). As part of this, perform higher-level calculations
to determine ephemeris discontinuities, live gst/gps/galileo time
offsets, atomic clock jumps etc.
5) Populate an InfluxDB timeseries database with raw measurements and higher
order calculations
To get started, make sure you have a C++17 compiler, git, protobuf-compiler,
libh2o-dev.
```
git clone https://github.com/ahupowerdns/galmon.git --recursive
cd galmon
make
```
If this doesn't succeed with an error about h2o, make sure you have this
library installed, and if you have remove the # in front of "# -lwslay".
This may solve the problem.
Once compiled, run for example ./ubxtool /dev/ttyACM0 1 | ./ubxparse 10000 html null
Next up, browse to http://[::1]:10000 (or try http://localhost:10000/ and
you should be in business. ubxtool changes (non-permanently) the
configuration of your u-blox receiver so it emits the required frames for
GPS and Galileo. If you have a u-blox timing receiver it will also enable
the doppler frames.
To see what is going on, try:
```
./ubxtool /dev/ttyACM0 1 | ./navdump
```
Setting up a distributed setup is slightly more complicated & may still
change.
Tooling:
@ -7,18 +53,13 @@ Tooling:
convert it into a protbuf stream of GNSS NAV frames + metadata
Adds 64-bit timestamps plus origin information to each message
* xtool: if you have another chipset, build something that extracts NAV
frames & metadata
* navtrans: transmits GNSS NAV frames emitted by ubxtool to a collector.
Performs some best effort buffering & will reconnect if needed.
UPDATE -> will be part of ubxtool
frames & metadata. Not done yet.
* navrecv: receives GNSS NAV frames and stores them on disk, split out per
sender.
* navstore: tails the file stored by navrecv, puts them in LMDB.
UPDATE -> part of navnexus
* navstream: produces a stream of NAV updates from all sources, with a few
seconds delay so all data is in. Does this with queries to LMDB
* navweb: consumes these ordered nav updates for a nice website
* navinflux: puts "ready to graph" data in influxdb - this is the first
* navnexus: tails the files stored by navrecv, makes them available over
TCP
* navpartse: consumes these ordered nav updates for a nice website
and puts "ready to graph" data in influxdb - this is the first
step that breaks "store everything in native format". Also does
computations on ephemerides.
* grafana dashboard: makes pretty graphs
@ -40,9 +81,6 @@ Big TODO
* Dual goals: completeness, liveness, not the same
For forensics, great if the packet is there
For display, not that bad if we missed a message
* Navnexus permanence
lmdb? sqlite?
* It looks like we have some ups and downs in WN/TOW
* In general, consider refeed strategy
Raw serial
Protobuf