Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mp911de/iot-distancemeter
Transmit sonic sensor data using RaspberryPi/Logstash/MQTT/Python
https://github.com/mp911de/iot-distancemeter
Last synced: 16 days ago
JSON representation
Transmit sonic sensor data using RaspberryPi/Logstash/MQTT/Python
- Host: GitHub
- URL: https://github.com/mp911de/iot-distancemeter
- Owner: mp911de
- Created: 2015-03-02T22:05:37.000Z (over 9 years ago)
- Default Branch: main
- Last Pushed: 2020-06-13T10:08:50.000Z (over 4 years ago)
- Last Synced: 2024-10-04T13:16:08.587Z (about 1 month ago)
- Language: Python
- Homepage:
- Size: 934 KB
- Stars: 21
- Watchers: 6
- Forks: 8
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
iot-distancemeter
======================This is an example project that demonstrates a ultra-sonic sensor [HC-SR04](http://www.micropik.com/PDF/HCSR04.pdf) connected to a RaspberryPi.
The original connection scheme and code are from http://www.tutorials-raspberrypi.de/gpio/entfernung-messen-mit-ultraschallsensor-hc-sr04/ adopted to
sending the data to either Logstash/Elasticsearch/Kibana or via MQTT.Either way, clone this repo on your RaspberryPi and your host where your server (Logstash or MQTT broker) is hosted.
```bash
$ git clone https://github.com/mp911de/iot-distancemeter.git
```MQTT
-------
[MQTT](http://mqtt.org) is a machine to machine communication protocol in a pub/sub manner. To run the code you have to wire the ultrasonic
sensor to your RaspberryPi and you need python with the `paho-mqtt` package.First you need a MQTT broker. I used [HiveMQ](http://hivemq.org) (execute it in the root path of this Git repo):
```bash
$ mkdir -p target
$ cd target
$ curl http://www.hivemq.com/wp-content/uploads/hivemq-2.2.1.zip > hivemq-2.2.1.zip
$ unzip hivemq-2.2.1.zip
$ cd hivemq-2.2.1/bin
$ chmod a+x *.sh
$ ./run.sh
```Then continue on your RaspberryPi.
If you do not have the `paho-mqtt` package installed, execute (assuming you have `pip` installed):
```bash
$ sudo pip install paho-mqtt
```Alternative using `easy_install`
```bash
$ sudo easy_install paho-mqtt
```Adopt `MQTT_HOST` in `distancemeter_mqtt.py` to your environment and run it using
```bash
$ sudo python distancemeter_mqtt.py
```Now the sensor performs measurement and publishes messages in the topic `sensors/distancemeter`.
To see something, you can start `mqtt_consumer.py` after adopting `MQTT_HOST` in the file.
```bash
$ python mqtt_consumer.py
```You should see some output like:
```
Connected with result code 0
sensors/distancemeter {"distance": 104.49538230895996, "message": "distance 104.5 cm", "hostname": "iotberry"}
sensors/distancemeter {"distance": 103.15831899642944, "message": "distance 103.2 cm", "hostname": "iotberry"}
sensors/distancemeter {"distance": 103.20738554000854, "message": "distance 103.2 cm", "hostname": "iotberry"}
```Logstash/Elasticsearch/Kibana
-----------------------------
You can run this demo also using the ELK-Stack. This way you can visualize the data in a nice way.Install the ELK Stack using (execute it in the root path of this Git repo, you should use a better host than a RaspberryPi since all components are hungry for Memory and CPU):
```bash
$ mkdir -p target
$ cd target
$ curl https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.3.2.zip > elasticsearch-1.3.2.zip
$ curl https://download.elasticsearch.org/logstash/logstash/logstash-1.4.2.zip > logstash-1.4.2.zip
$ unzip elasticsearch-1.3.2.zip
$ unzip logstash-1.4.2.zip
$ cd elasticsearch-1.3.2/bin
$ chmod a+x elasticsearch
$ ./elasticsearch &
$ cd ../..
$ cd logstash-1.4.2/bin
$ chmod a+x logstash
$ ./logstash agent -f ../../../logstash.conf &
$ ./logstash-web &
$ curl -XPUT 'http://localhost:9200/kibana-int/'
$ curl -XPUT --data-binary '@../../../dashboard-source.json' 'http://localhost:9200/kibana-int/dashboard/Sonic%20Distancemeter'
```Now your server stack is running. Go to your RaspberryPi and adopt `JSON_HOST` in `distancemeter_json.py` so the Python
script knows where to send the JSON objects using TCP. Then run:```bash
$ sudo python distancemeter_json.py
```Your RaspberryPi will send every 0.2sec a message over the line. At this point open your browser. Kibana runs on port 9292,
so most likely you want to open:http://localhost:9292/index.html#/dashboard/elasticsearch/Sonic%20Distancemeter
You should see something like:
Have fun!
License
-------
* [The MIT License (MIT)] (http://opensource.org/licenses/MIT)
* Contains also code from http://www.tutorials-raspberrypi.de/gpio/entfernung-messen-mit-ultraschallsensor-hc-sr04/Contributing
-------
Github is for social coding: if you want to write code, I encourage contributions through pull requests from forks of this repository.
Create Github tickets for bugs and new features and comment on the ones that you are interested in.