Labs GrovePi

1. Description

La carte d'extension grovepi permet de faciliter la connexion de composants électroniques de prise de mesure et d'interaction utilisateur avec un Raspberry Pi B (GrovePi+) ou Rasperry Pi Zero (GrovePi Zero). Elle fonctionne avec un contrôleur ATmega328 qui embarque nativement un convertisseur analogique / digital (A/D) 6 canaux. Elle existe aussi pour Arduino (Seeduino) et sans contrôleur à interfacer directement avec Arduino. Les composants sont disponibles sous forme de modules facilement enfichables sur la carte.

Sources :

Descriptif :

  • 7 Ports digitaux
  • 3 Ports analogiques
  • 3 Ports I2C
  • 1 Port Serial (GrovePi)
  • 1 Port Serial (Raspberry Pi)

2. Super capteur

Source

Ports Capteurs Image
A0 Air Quality Sensor
A1 Light Sensor
A2 Sound Sensor
D4 Green LED
D8 Buzzer
D7 Temperature & Humidity Sensor
I2C-1 Barometer (High Accuracy))
I2C-2 LCD RGB

Mise en place

Commencer Labs Raspberry Pi : Mise en place

Ne pas installer la carte.

sudo apt-get update && apt-get -y upgrade
sudo apt-get install emacs git -y
cd /home/pi/Desktop
sudo git clone https://github.com/DexterInd/GrovePi
cd /home/pi/Desktop/GrovePi/Script
sudo chmod +x install.sh
sudo ./install.sh
sudo reboot

Le script install.sh offre le message suivant :


  _____            _
 |  __ \          | |
 | |  | | _____  _| |_ ___ _ __
 | |  | |/ _ \ \/ / __/ _ \ '__|
 | |__| |  __/>  <| ||  __/ |
 |_____/ \___/_/\_\__\___|_| _        _
 |_   _|         | |         | |      (_)
   | |  _ __   __| |_   _ ___| |_ _ __ _  ___  ___
   | | | '_ \ / _` | | | / __| __| '__| |/ _ \/ __|
  _| |_| | | | (_| | |_| \__ \ |_| |  | |  __/\__ \
 |_____|_| |_|\__,_|\__,_|___/\__|_|  |_|\___||___/

Welcome to GrovePi Installer.

Requirements:
1) Must be connected to the internet
2) This script must be run as root user

Steps:
1) Installs package dependencies:
   - python-pip       alternative Python package installer
   - git              fast, scalable, distributed revision control system
   - libi2c-dev       userspace I2C programming library development files
   - python-serial    pyserial - module encapsulating access for the serial port
   - python-rpi.gpio  Python GPIO module for Raspberry Pi
   - i2c-tools        This Python module allows SMBus access through the I2C /dev
   - python-smbus     Python bindings for Linux SMBus access through i2c-dev
   - python3-smbus    Python3 bindings for Linux SMBus access through i2c-dev
   - arduino          AVR development board IDE and built-in libraries
   - minicom          friendly menu driven serial communication program
2) Clone, build wiringPi in GrovePi/Script and install it
3) Removes I2C and SPI from modprobe blacklist /etc/modprobe.d/raspi-blacklist.conf
4) Adds I2C-dev, i2c-bcm2708 and spi-dev to /etc/modules
5) Installs gertboard avrdude_5.10-4_armhf.deb package
6) Runs gertboard setup
   - configures avrdude
   - downloads gertboard known boards and programmers
   - replaces avrsetup with gertboards version
   - in /etc/inittab comments out lines containing AMA0
   - in /boot/cmdline.txt removes: console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1
   - in /usr/share/arduino/hardware/arduino creates backup of boards.txt
   - in /usr/share/arduino/hardware/arduino creates backup of programmers.txt

Special thanks to Joe Sanford at Tufts University. This script was derived from his work. Thank you Joe!

Raspberry Pi wil reboot after completion.

Et puis, une mise à jour de l'installation.

bash /home/pi/Desktop/GrovePi/Script/update_grovepi.sh

Une mise à jour du firmware de la carte

cd /home/pi/Desktop/GrovePi/Firmware
sudo ./firmware_update.sh

Redémarrer et installer les librairies.

sudo pip install grovepi
sudo shutdown -h now

Placer la carte sur le Raspberry Pi et alimenter.

sudo i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          03 04 -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- 3e --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- 62 -- -- -- -- -- -- -- -- -- -- -- -- --
70: 70 -- -- -- -- -- -- --

Node Red

Pour installer ou mettre à jour en utilisant la commande de script de mise à niveau Node-RED.

bash <(curl -sL https://raw.githubusercontent.com/node-red/raspbian-deb-package/master/resources/update-nodejs-and-nodered)
sudo systemctl enable nodered.service

Installation des noeuds GrovePi

cd ~/.node-red
npm install node-red-contrib-grovepi
npm install node-red-grovepi-nodes

Redémarrage du système.

sudo reboot

Scripts Python

Script air.py

#!/usr/bin/env python
import time
import grovepi

# Connect the Grove Air Quality Sensor to analog port A0
# SIG,NC,VCC,GND
air_sensor = 0

grovepi.pinMode(air_sensor,"INPUT")

while True:
    try:
        # Get sensor value
        sensor_value = grovepi.analogRead(air_sensor)

        if sensor_value > 700:
            print ("High pollution")
        elif sensor_value > 300:
            print ("Low pollution")
        else:
            print ("Air fresh")

        print("sensor_value =", sensor_value)
        time.sleep(.5)

    except IOError:
        print ("Error")

Script baro.py, à condition de copier le module python à côté du script cp /home/pi/Desktop/GrovePi/Software/Python/grove_barometer_sensors/high_accuracy_hp206c_barometer/hp206c.py ./.

#!/usr/bin/env python
import hp206c
h= hp206c.hp206c()

temp=h.ReadTemperature()
pressure=h.ReadPressure()
altitude=h.ReadAltitude()
print('{"temperature":%.2f,"pressure":%.2f,"altitude":%.2f}' %(temp,pressure,altitude))

Script dht.py

#!/usr/bin/env python
import grovepi
import math
while True:
    try:
        [temp,humidity] = grovepi.dht(7,0)
        if math.isnan(temp) == False and math.isnan(humidity) == False:
            print("temp = %.02f C humidity =%.02f%%"%(temp, humidity))
    break

    except IOError:
        print ("Error")

Script light.py

#!/usr/bin/env python
import time
import grovepi

# Connect the Grove Light Sensor to analog port A0
# SIG,NC,VCC,GND
light_sensor = 1

# Connect the LED to digital port D4
# SIG,NC,VCC,GND
led = 4

# Turn on LED once sensor exceeds threshold resistance
threshold = 10

grovepi.pinMode(light_sensor,"INPUT")
grovepi.pinMode(led,"OUTPUT")

while True:
    try:
        # Get sensor value
        sensor_value = grovepi.analogRead(light_sensor)

        # Calculate resistance of sensor in K
        resistance = (float)(1023 - sensor_value) * 10 / sensor_value

        if resistance > threshold:
            # Send HIGH to switch on LED
            grovepi.digitalWrite(led,1)
        else:
            # Send LOW to switch off LED
            grovepi.digitalWrite(led,0)

        print("sensor_value = %d resistance = %.2f" %(sensor_value,  resistance))
        time.sleep(.5)

    except IOError:
        print ("Error")

Node-RED

Créer un dossier de travail /home/pi/grove-sensors et y copier la librairie python qui permet d'exploiter la puce HP206C du baromètre.

cd
pwd
mkdir grove-sensors
cd grove-sensors
cp /home/pi/Desktop/GrovePi/Software/Python/grove_barometer_sensors/high_accuracy_hp206c_barometer/hp206c.py ./

Pour exploiter les différents capteurs, on peut passer un script python qui rend un message formaté en json. On nomme ce script sensors.py.

#!/usr/bin/env python
import hp206c
h= hp206c.hp206c()
import grovepi
temperature=h.ReadTemperature()
pressure=h.ReadPressure()
altitude=h.ReadAltitude()
[temp,humidity] = grovepi.dht(7,0)
grovepi.pinMode(0,"INPUT")
air = grovepi.analogRead(0)
print('{"temperature": %.2f,"pressure": %.2f,"altitude": %.2f,"humidity": %.2f,"air": %.2f}' %(temperature,pressure,altitude,humidity,air))

Toutes les dix secondes, le script /home/pi/grove-sensors/sensors.py est appelé pour générer une charge (msg.payload) formatée en JSON en tant que ligne de texte (string), le noeud JSON le transforme en objet nodejs que l'on manipule avec le noeud change (par exemle, msg.payload.temperature remplace le msg.payload final).

[{"id":"fcfdb194.824ff","type":"exec","z":"fa434de1.2acb7","command":"sudo python /home/pi/grove-sensors/sensors.py","addpay":true,"append":"","useSpawn":"false","timer":"","oldrc":false,"name":"","x":290,"y":440,"wires":[["e8a85407.929048"],[],[]]},{"id":"ed247023.9e707","type":"debug","z":"fa434de1.2acb7","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":1070,"y":80,"wires":[]},{"id":"e8a85407.929048","type":"json","z":"fa434de1.2acb7","name":"","property":"payload","action":"obj","pretty":false,"x":390,"y":220,"wires":[["9e8bc0be.a9bc3","f6c8dc7f.8a2da","edc9bbba.127cd8","1444df5e.611781","b579a0ba.dc1de","9adc05b9.6e2b48"]]},{"id":"9e8bc0be.a9bc3","type":"change","z":"fa434de1.2acb7","name":"temperature","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.temperature","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":850,"y":80,"wires":[["ed247023.9e707"]]},{"id":"f6c8dc7f.8a2da","type":"change","z":"fa434de1.2acb7","name":"humidity","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.humidity","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":840,"y":180,"wires":[["43f5f3e8.52d2dc"]]},{"id":"43f5f3e8.52d2dc","type":"debug","z":"fa434de1.2acb7","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":1070,"y":180,"wires":[]},{"id":"edc9bbba.127cd8","type":"change","z":"fa434de1.2acb7","name":"altitude","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.altitude","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":840,"y":280,"wires":[["d35a2bae.c08498"]]},{"id":"d35a2bae.c08498","type":"debug","z":"fa434de1.2acb7","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":1070,"y":280,"wires":[]},{"id":"1444df5e.611781","type":"change","z":"fa434de1.2acb7","name":"pressure","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.pressure","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":840,"y":380,"wires":[["a4ec38ce.02e228"]]},{"id":"a4ec38ce.02e228","type":"debug","z":"fa434de1.2acb7","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":1070,"y":380,"wires":[]},{"id":"83db99e7.fb8e08","type":"inject","z":"fa434de1.2acb7","name":"","topic":"","payload":"","payloadType":"date","repeat":"10","crontab":"","once":false,"onceDelay":0.1,"x":150,"y":220,"wires":[["fcfdb194.824ff"]]},{"id":"b579a0ba.dc1de","type":"change","z":"fa434de1.2acb7","name":"air","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.air","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":830,"y":480,"wires":[["c4cf7399.524d2"]]},{"id":"c4cf7399.524d2","type":"debug","z":"fa434de1.2acb7","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":1070,"y":480,"wires":[]},{"id":"9adc05b9.6e2b48","type":"debug","z":"fa434de1.2acb7","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":630,"y":60,"wires":[]}]

MQTT (+ Dashboard)

Dashboard Node-RED.

cd ~/.node-red
npm install node-red-dashboard
cd
systemctl restart nodered

Voir Protocole MQTT

MQTT Broker gratuit : https://github.com/mqtt/mqtt.github.io/wiki/public_brokers

  • address test.mosquitto.org
  • port 1883, 8883 (SSL), 8884 (SSL), 80 (WebSockets)
  • type mosquitto

Installation des clients MQTT (Rpi).

sudo apt-get update && sudo apt-get -y upgrade
sudo apt-get -y install mosquitto mosquitto-clients

MQTT Publisher

[{"id":"e819c6c.6c0dd38","type":"ui_button","z":"c7685c61.851e6","name":"","group":"9f2bafea.b8a12","order":0,"width":"2","height":"2","passthru":false,"label":"On","color":"","bgcolor":"green","icon":"","payload":"1","payloadType":"num","topic":"","x":160,"y":120,"wires":[["ceecf606.6f0798"]]},{"id":"7d2871b2.48632","type":"ui_button","z":"c7685c61.851e6","name":"","group":"9f2bafea.b8a12","order":0,"width":"2","height":"2","passthru":false,"label":"Off","color":"","bgcolor":"red","icon":"","payload":"0","payloadType":"num","topic":"","x":170,"y":200,"wires":[["ceecf606.6f0798"]]},{"id":"ceecf606.6f0798","type":"mqtt out","z":"c7685c61.851e6","name":"","topic":"feg/rix/office/led","qos":"","retain":"","broker":"a4abff2a.b8d37","x":410,"y":160,"wires":[]},{"id":"ddc8cdd5.188e4","type":"debug","z":"c7685c61.851e6","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":400,"y":120,"wires":[]},{"id":"ce110a6e.207358","type":"mqtt out","z":"c7685c61.851e6","name":"","topic":"feg/rix/office/temperature","qos":"","retain":"","broker":"a4abff2a.b8d37","x":1050,"y":340,"wires":[]},{"id":"4cef2e63.6beae","type":"mqtt out","z":"c7685c61.851e6","name":"","topic":"feg/rix/office/humidity","qos":"","retain":"","broker":"a4abff2a.b8d37","x":1040,"y":440,"wires":[]},{"id":"f95602cf.53896","type":"mqtt out","z":"c7685c61.851e6","name":"","topic":"feg/rix/office/altitude","qos":"","retain":"","broker":"a4abff2a.b8d37","x":1040,"y":540,"wires":[]},{"id":"8752d248.fbdce","type":"mqtt out","z":"c7685c61.851e6","name":"","topic":"feg/rix/office/pressure","qos":"","retain":"","broker":"a4abff2a.b8d37","x":1040,"y":640,"wires":[]},{"id":"64d89a7a.ad6a64","type":"exec","z":"c7685c61.851e6","command":"sudo python /home/pi/grove-sensors/sensors.py","addpay":true,"append":"","useSpawn":"false","timer":"","oldrc":true,"name":"","x":370,"y":320,"wires":[["a3d59b20.ad1e28"],[],[]]},{"id":"234c8292.76fdce","type":"inject","z":"c7685c61.851e6","name":"","topic":"","payload":"1","payloadType":"num","repeat":"10","crontab":"","once":false,"onceDelay":0.1,"x":90,"y":320,"wires":[["64d89a7a.ad6a64"]]},{"id":"593f1b39.c5c6c4","type":"debug","z":"c7685c61.851e6","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":1010,"y":400,"wires":[]},{"id":"a3d59b20.ad1e28","type":"json","z":"c7685c61.851e6","name":"","property":"payload","action":"obj","pretty":false,"x":570,"y":540,"wires":[["5233f0da.27bde","3727d9f2.d2faf6","d2649992.613898","aec8ab5f.d93be8","ebaf2496.495118"]]},{"id":"650819bc.aa7408","type":"debug","z":"c7685c61.851e6","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":1010,"y":500,"wires":[]},{"id":"f9035163.38563","type":"debug","z":"c7685c61.851e6","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":1010,"y":600,"wires":[]},{"id":"6e0c3221.ab287c","type":"debug","z":"c7685c61.851e6","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":1010,"y":700,"wires":[]},{"id":"ced00baf.63f158","type":"debug","z":"c7685c61.851e6","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":1010,"y":800,"wires":[]},{"id":"861ddccb.427d6","type":"mqtt out","z":"c7685c61.851e6","name":"","topic":"feg/rix/office/air","qos":"","retain":"","broker":"a4abff2a.b8d37","x":1020,"y":740,"wires":[]},{"id":"5233f0da.27bde","type":"change","z":"c7685c61.851e6","name":"temperature","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.temperature","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":770,"y":400,"wires":[["ce110a6e.207358"]]},{"id":"3727d9f2.d2faf6","type":"change","z":"c7685c61.851e6","name":"humidity","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.humidity","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":760,"y":500,"wires":[["4cef2e63.6beae"]]},{"id":"d2649992.613898","type":"change","z":"c7685c61.851e6","name":"altitude","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.altitude","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":760,"y":600,"wires":[["f95602cf.53896"]]},{"id":"aec8ab5f.d93be8","type":"change","z":"c7685c61.851e6","name":"pressure","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.pressure","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":760,"y":700,"wires":[["8752d248.fbdce"]]},{"id":"ebaf2496.495118","type":"change","z":"c7685c61.851e6","name":"air","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.air","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":750,"y":800,"wires":[["861ddccb.427d6"]]},{"id":"9f2bafea.b8a12","type":"ui_group","z":"","name":"LED","tab":"ecf36f3d.f281","disp":true,"width":"3","collapse":false},{"id":"a4abff2a.b8d37","type":"mqtt-broker","z":"","name":"","broker":"test.mosquitto.org","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"willTopic":"","willQos":"0","willPayload":"","birthTopic":"","birthQos":"0","birthPayload":""},{"id":"ecf36f3d.f281","type":"ui_tab","z":"","name":"Office","icon":"dashboard"}]

MQTT Subscriber

[{"id":"482a1d7c.38fcd4","type":"grove digital output","z":"9ba6dc7c.f8c9","name":"","board":"a733887b.bf2b58","pin":"4","x":550,"y":120,"wires":[]},{"id":"856c46f9.8ba2d8","type":"mqtt in","z":"9ba6dc7c.f8c9","name":"","topic":"feg/rix/office/led","qos":"2","broker":"a4abff2a.b8d37","x":230,"y":120,"wires":[["482a1d7c.38fcd4"]]},{"id":"47731099.a6ec6","type":"mqtt in","z":"9ba6dc7c.f8c9","name":"","topic":"feg/rix/office/temperature","qos":"2","broker":"a4abff2a.b8d37","x":250,"y":380,"wires":[["75c4bf25.a0ad7","c5b599b.0804768","a22a4e5c.97bc7"]]},{"id":"75c4bf25.a0ad7","type":"debug","z":"9ba6dc7c.f8c9","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":530,"y":320,"wires":[]},{"id":"a1074724.69b8d8","type":"mqtt in","z":"9ba6dc7c.f8c9","name":"","topic":"feg/rix/office/humidity","qos":"2","broker":"a4abff2a.b8d37","x":240,"y":460,"wires":[["a20a030f.779cf","ae6254a2.a94d78","520679df.e2cb18"]]},{"id":"a20a030f.779cf","type":"debug","z":"9ba6dc7c.f8c9","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":530,"y":460,"wires":[]},{"id":"2306fc43.c869a4","type":"mqtt in","z":"9ba6dc7c.f8c9","name":"","topic":"feg/rix/office/temperature","qos":"2","broker":"a4abff2a.b8d37","x":250,"y":540,"wires":[["1fc47543.0bd4bb"]]},{"id":"1fc47543.0bd4bb","type":"debug","z":"9ba6dc7c.f8c9","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":530,"y":540,"wires":[]},{"id":"e8848635.ed3288","type":"mqtt in","z":"9ba6dc7c.f8c9","name":"","topic":"feg/rix/office/temperature","qos":"2","broker":"a4abff2a.b8d37","x":250,"y":600,"wires":[["a55bf2b5.b3f7c"]]},{"id":"a55bf2b5.b3f7c","type":"debug","z":"9ba6dc7c.f8c9","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":530,"y":600,"wires":[]},{"id":"19c156ba.a676c9","type":"mqtt in","z":"9ba6dc7c.f8c9","name":"","topic":"feg/rix/office/air","qos":"2","broker":"a4abff2a.b8d37","x":220,"y":680,"wires":[["556b5c39.38f1f4"]]},{"id":"556b5c39.38f1f4","type":"debug","z":"9ba6dc7c.f8c9","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":530,"y":680,"wires":[]},{"id":"c5b599b.0804768","type":"ui_chart","z":"9ba6dc7c.f8c9","name":"","group":"ddc5be14.690cb","order":0,"width":0,"height":0,"label":"Temperature graph 12h °C","chartType":"line","legend":"true","xformat":"HH:mm:ss","interpolate":"linear","nodata":"","dot":true,"ymin":"","ymax":"","removeOlder":"36","removeOlderPoints":"","removeOlderUnit":"3600","cutout":0,"useOneColor":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"useOldStyle":false,"x":580,"y":280,"wires":[[],[]]},{"id":"a22a4e5c.97bc7","type":"ui_gauge","z":"9ba6dc7c.f8c9","name":"","group":"ddc5be14.690cb","order":0,"width":0,"height":0,"gtype":"gage","title":"Temperature gauge","label":"°C","format":"{{value}}","min":"-20","max":"50","colors":["#0040b5","#47e603","#ca5800"],"seg1":"0","seg2":"25","x":550,"y":220,"wires":[]},{"id":"520679df.e2cb18","type":"ui_chart","z":"9ba6dc7c.f8c9","name":"","group":"a6a5a120.a71a3","order":0,"width":0,"height":0,"label":"Humidity graph 12h %","chartType":"line","legend":"true","xformat":"HH:mm:ss","interpolate":"linear","nodata":"","dot":true,"ymin":"","ymax":"","removeOlder":"36","removeOlderPoints":"","removeOlderUnit":"3600","cutout":0,"useOneColor":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"useOldStyle":false,"x":560,"y":420,"wires":[[],[]]},{"id":"ae6254a2.a94d78","type":"ui_gauge","z":"9ba6dc7c.f8c9","name":"","group":"a6a5a120.a71a3","order":0,"width":0,"height":0,"gtype":"gage","title":"Humidity gauge","label":"%","format":"{{value}}","min":"0","max":"100","colors":["#b5b019","#47e603","#ca5800"],"seg1":"0","seg2":"25","x":540,"y":380,"wires":[]},{"id":"a733887b.bf2b58","type":"board-config","z":"","board":"GrovePi"},{"id":"a4abff2a.b8d37","type":"mqtt-broker","z":"","name":"","broker":"test.mosquitto.org","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"willTopic":"","willQos":"0","willPayload":"","birthTopic":"","birthQos":"0","birthPayload":""},{"id":"ddc5be14.690cb","type":"ui_group","z":"","name":"Temperature","tab":"ecf36f3d.f281","disp":true,"width":"12","collapse":false},{"id":"a6a5a120.a71a3","type":"ui_group","z":"","name":"Humidity","tab":"ecf36f3d.f281","disp":true,"width":"12","collapse":false},{"id":"ecf36f3d.f281","type":"ui_tab","z":"","name":"Office","icon":"dashboard"}]

Dashboard sur http://<ip_address>:1880/ui/.

Questions / Améliorations

Format de publication MQTT

  • Correction envoyer les charges MQTT en JSON

Consommation de ressources

  • Communication de données
  • Stockage des données
  • charge (autonomie)

Sécurité

  • confidentialité
  • authentification

Qualité de service

Filtrage des Topics MQTT

Notes

Report et graphes sur Initialstate

A lire : http://www.networkworld.com/article/3093434/internet-of-things/data-driven-farming-how-iot-delivers-hyperlocal-weather-information-affordably.html

Bluemix

Emoncms

Plateformes IoT

Voir Ressources.

Twitter

ibeacons

http://thethingbox.io/docs/iBeacon-tsa.html

results matching ""

    No results matching ""