Skip to content

iotexproject/pebble-simulator

Repository files navigation

Pebble Simulator

This is a shell script that simulates verifiable IoT data produced by a Pebble Tracked device and store it to a local file. If required, the script can publish the data to AWS IoT Core using MQTT similarly to a real Pebble Tracker device.

Installation

The script has been successfully tested on Ubuntu 16.04.6 and MacOS 10.14

Dependencies

  • linux bash
  • openssl 1.0.2g or later
  • mosquitto-clients

Ubuntu

Run the following commands in a Linux shell

$ apt-get install  openssl
$ apt-get install  mosquitto-clients

MacOS

$ brew install openssl
$ brew install mosquitto

Run the simulator

$ ./simulator.sh

========>> PEBBLE SIMULATOR <<========


 1.  Config Sensors

 2.  Set Number of Data Points (Current: 30)

 3.  Generate Simulated Data

 4.  Publish to IoTT Portal

 5.  Device Registration

 6.  Set Device IMEI (Current: 103381234567402)

 7.  Config device privkey (Current: 0510802dad279d7451c63ab28a44915ffc1fa61db98c276a16f8b0f1e87ec1af)

 8.  Exit

Select:

How to registration

  1. Run the simulator
    ./simulator.sh
  1. Select menu '5'

  2. Add a device on the page: https://portal.iott.network/"

    When you get the prompt "Device registration complete!", it means that the device has been registered

Generate the data points

You need to register the device before generating data.By default, the scirpt will generate 30 data points using random values for each of the 8 sensors available on Pebble Tracker, along with the elliptic curve signature for each data point. You can change the number of generated data points by selecting the menu item #2. Finally select the menu item #3 to generate and save the data points to pebble.dat. Each data point is saved in JSON format:

{
    "message": {
        "snr": 185,
        "vbat": 3.98584,
        "latitude": 8150.30185,
        "longitude": 9830.17993,
        "gasResistance": 1124,
        "temperature": 16.38644,
        "pressure": 503.77594,
        "humidity": 31.56519,
        "light": 725.80341,
        "temperature2": 76.39319,
        "gyroscope": [7, -1184, 8],
        "accelerometer": [906, 1184, 1461],
        "timestamp": "150000",
        "random": "e954d411fed3f5c0"
    },
    "signature": {
        "r": "4c05a4fa3eba782780a517ba03ef6fdd65e5b560a027808b47fcc6ed2b864169",
        "s": "05bde29104febe10c096c550b91f5d8ed2cf0d15fe48e164ee0e9765dda76f34"
    }
}
$ cat pebble.dat

{"message":{"snr":3,"vbat":0.96024,"latitude":1608.27036,"longitude":15147.14661,"gasResistance":3451,"temperature":39.17099,"pressure":1084.90033,"humidity":60.16272,"light":1306.92780,"temperature2":19.17529,"gyroscope":[11,-2638,-13],"accelerometer":[2361,2638,2915],"timestamp":"5000","random":"3f7e6c358150c30c"},"signature":{"r":"5d1557f43c6aa781e82043f73f84cca9cd06e5eba06b530a9d83d28e89889f38","s":"1a79e43825a1f5e48706d8e4eb359c283c8f31fa4f9b37f2200494f8a137a2e4"}}
{"message":{"snr":88,"vbat":2.59143,"latitude":4628.10452,"longitude":2906.98260,"gasResistance":6099,"temperature":65.62442,"pressure":1746.80295,"humidity":93.23846,"light":1968.83044,"temperature2":45.63116,"gyroscope":[-1,2,-4570],"accelerometer":[4016,4293,4570],"timestamp":"10000","random":"0bfc6c9b3363ec67"},"signature":{"r":"d46facce007012e22dbcf47b0e54d8bb07a1dc25d5ad49bf7da62a96157d8741","s":"08b65972c616ee6c0cf6f5d501cab49995f4d32b70a908c1d7cac5254ffa63fc"}}
...
{"message":{"snr":86,"vbat":2.48517,"latitude":157.96259,"longitude":12137.83881,"gasResistance":2153,"temperature":26.61856,"pressure":760.86353,"humidity":44.36566,"light":982.82999,"temperature2":6.62286,"gyroscope":[9,-1826,-10],"accelerometer":[1549,1826,2104],"timestamp":"25000","random":"6b95e9e7a4bcd119"},"signature":{"r":"8bec9b753ae7743f7c6ac9cb51baa5c70f12e9f511c96216975657002b809768","s":"4dccd4be89388ba70ef3b498a8c56e1acfad859f73526591b8988a8536d8d70e"}}

How to config private key

  1. Run the simulator.
./simulator.sh
  1. Select menu '7'.

  2. Select menu '1' if you enter a new private key. Or the simulator automatically generates a private key, select menu '2'.

  3. Now return to the main menu, you can see the configured private key at the end of menu '7'.

Publish all data

Since the data has a time stamp, it is necessary to select menu "3" to generate new data before publishing the data.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages