Receive and redistribute data from vehicle geolocation sensors.
Prototyping project to receive data from remote Ercogener Genloc sensors.
Try to receive data from TCP:
- not message-based, but we can presume that one connection = one message;
- how to secure the channel and protect from fake-data?
- very light still reliable.
Try to receive data from SMTP:
- certainly can put a password;
- clearly message-based;
- still light;
- maybe difficult if we got a lot of sensors on the gateway.
Do a server prototype on Erlang, so we really begin to construct reliable pieces of network and messaging software.
An OTP application
Erlang Solutions provides a great Erlang builds for many platforms.
Refer to their download page: https://packages.erlang-solutions.com/erlang/
To control the build process, you can also use kerl.
Recommended method: install from repository.
wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb
sudo dpkg -i erlang-solutions_1.0_all.deb
Then install the complete distribution:
sudo apt-get update
sudo apt-get install esl-erlang
See official installation instructions.
The easiest is to download the latest binary build of Rebar3, place in a directory and add it to your path.
# These instructions are only provided as example: please refer to official instructions.
# This is a system-wide install.
sudo wget https://s3.amazonaws.com/rebar3/rebar3 -O /usr/bin/rebar3
sudo chmod +x /usr/bin/rebar3
You can use your configuration file from a sample to get started rapidly.
cp ./priv/conf/configuration.sample.json ./priv/conf/configuration.json
$ make compile
$ make test
Only compatible with Erlang OTP 20+.
% TODO Use error_logger:info_msg("") for logging --> Use a logging facility and be able to configure it to stdout or file, with a defined verbosity. (let message dump in stdout only in debug)
TODO Put examples in /doc/examples cf http://erlang.org/doc/design_principles/applications.html
TODO Add unit test for:
- Auth
- Username does not match
- Plain, Login, cram-md5
- FROM filtering
- Json user loading
- Missing password, email
- Mail parsing
- Invalid mail
- Sensor not managed
- Valid mail for Ercogener GenLoc TODO Forwarder examples:
- dumping (raw and parsed);
- to a list of mails;
- to a Google Sheet;
- to https://www.mapbox.com/api-documentation/#datasets
- POST to custom API endpoint
- Maybe think of another way to archive systematically any file.
- ---> To AWS s3?
- Create sample forwarders for that.
- So we can recover any data when we need.
- Gateway reporting: add a statistics service
- Report to Slack or mails the number of payloads forwarder in a day, week, etc.
- Manage that in the application level? (Geo-service storage API?)