- Accounts with the following providers:
- Resin.io
- Github
- Access to the following services (See Service configuration for more
information)
- Logstash
- Vault
- SITCH feed. See https://github.com/sitch-io/feed_builder for more information.
- Hardware
- Raspberry Pi 3
- Simcom (SIM808 | SIM800L | SIM900) GSM modem with SIM
- USB TTY cable (for GSM modem)
- RTL-SDR device. Tested with NooElec NESDR Mini and NooElec NESDR XTR
- GlobalSat USB GPS dongle (any gpsd-compatible USB GPS shold work)
- Create an application in Resin.
- Fork this project and clone it on your workstation. Or clone it directly... but forking makes modifications and PRs easier to deal with.
- Add the Resin application as a remote repo (
git remote add resin myusername@git.resin.io/myusername/myapplicationname.git
) - Push to your Resin application:
git push resin master
We expect (at least) the following environment variables to be set in Resin:
Variable | Purpose |
---|---|
LOCATION_NAME | Override the default device name (Resin UUID) |
LOG_HOST | hostname:port |
STATE_LIST | List of states (in caps) for FCC feed. ex: "CA,TX" |
VAULT_PATH | Path to logstash cert/keys in Vault |
VAULT_TOKEN | Token for accessing credentials in vault |
VAULT_URL | URL for accessing Vault. ex: https://v.example.com:port |
For more configuration options, consult the environment variables section of the documentation.
Testing is done with pytest. Coverage module optional.
Testing requirements (local testing possible only on Linux):
- lshw
- pip packages: pytest-cov pytest-pep8 pyserial hvac kalibrate haversine python-geoip python-geoip-geolite2 pyudev gps3 LatLon python-dateutil
- Navigate to the base directory of the repository.
- Set the environment variable to reach your SITCH feed:
export SITCH_FEED_BASE=https://MY.FEED.URL/base
- Run
py.test --cov sitchlib
.
- OR, offer a PR and let travis-ci build and run the tests for you.
If you're using a GSM modem that's not recognized by the device detector,
please add the output from running the ATI
command against your GSM modem in
the variable named positive_match
in the is_a_gsm_modem()
method, in the
sensor/sitch/sitchlib/device_detector.py
file. Then send a pull request so
that everyone can get the benefit of your discovery.
This repository contains pre-built binaries for Filebeat and Kalibrate. The licenses which apply to these two tools can be found here and here, respectively.
- Please do PRs against the
test
branch. - To add an ID string to the device detector for GSM modems, add part of the
ID string to the
positive_match
variable in theDeviceDetector.is_a_gsm_modem()
function