[JAVA] Surveillez facilement l'environnement intérieur - ⑦ Résumez dans un outil simple -

introduction

Dans une série d'articles, j'ai brièvement présenté la bibliothèque Java créée pour obtenir des informations générales sur l'environnement et des informations sur le fonctionnement des équipements d'automatisation industrielle. C'est comme suit une fois organisé.

Un outil simple (** rainy) qui acquiert et surveille ces données et met en place un mécanisme pour utiliser les données acquises à d'autres fins. **). J'ai mis Java dans Raspberry Pi 3B et je l'ai exécuté sur Apache Felix (framework OSGi). ** rainy ** construit et assemblé dans un outil est publié sous le nom de ** rainy-felix.zip ** à ** ici ** Je suis.

L'image de contour de ** pluvieux ** est la suivante. rainy_overview_0_jp.png De plus, l'image suivante est une configuration dans laquelle la fonction de surveillance coexiste dans le même Raspberry Pi 3B. rainy_overview_2_jp.png L'équipement utilisé est le suivant. rainy_hardware_1.png Les dispositifs de connexion au MH-Z19B avec un adaptateur de communication série USB sont les suivants. rainy_hardware_0.png Cet article est presque le même que Github here.

table des matières

Objectif Le but de cet outil ** pluvieux ** est le suivant.
  • Obtenir des informations générales sur l'environnement et des informations sur le fonctionnement des équipements d'automatisation industrielle à l'intérieur (privé / bureau / usine).
  • Surveiller ces données en temps quasi réel et les rendre disponibles à d'autres fins.
  • Exécuter en tant qu'application Java / OSGi sur un Raspberry Pi 3B (arm) et une machine Ubuntu (amd64).

Je pense que ** pluvieux ** n'est pas suffisant en fonction et en performances pour un fonctionnement officiel, mais je pense que c'est un outil compact et facile à essayer.

Configuration du système d'exploitation Pour que la configuration s'exécute ** rainy ** sur Raspberry Pi 3B, [ici](https://qiita.com/s5uishida/items/1759498f8f706c4c3314) et [ici](https://qiita.com/ Veuillez vous référer à s5uishida / items / 4ae7784aeaf50df1e3d3). Le Bluetooth intégré et la communication série (UART) du Raspberry Pi 3B peuvent être utilisés en même temps.

Configuration de la transmission des données ** rainy ** prend en charge les courtiers InfluxDB et MQTT pour les destinations de données.

Installer et démarrer InfluxDB J'utilise [InfluxDB](https://www.influxdata.com/) sur une machine virtuelle Ubuntu 18.04. Pour la procédure d'installation, reportez-vous à [ici](https://portal.influxdata.com/downloads/).
# wget https://dl.influxdata.com/influxdb/releases/influxdb_1.7.8_amd64.deb
# dpkg -i influxdb_1.7.8_amd64.deb
# systemctl enable influxdb.service
# systemctl start influxdb.service

La procédure d'installation d'InfluxDB sur Rasbperry Pi 3B est la suivante.

# wget https://dl.influxdata.com/influxdb/releases/influxdb_1.7.8_armhf.deb
# dpkg -i influxdb_1.7.8_armhf.deb
# systemctl enable influxdb.service
# systemctl start influxdb.service

Installer et démarrer Mosquitto (courtier MQTT) J'utilise [Mosquitto](https://mosquitto.org/) (courtier MQTT) sur une machine virtuelle Ubuntu 18.04. La procédure d'installation est la suivante.
# apt-get update
# apt-get install mosquitto
# apt-get install mosquitto-clients
# systemctl enable mosquitto.service
# systemctl start mosquitto.service

La procédure d'installation de Mosquitto sur Rasbperry Pi 3B est la même.

Configuration de l’outil de visualisation

Installation et lancement de Grafana J'utilise [Grafana](https://grafana.com/) sur une machine virtuelle Ubuntu 18.04. Pour la procédure d'installation, reportez-vous à [ici](https://grafana.com/grafana/download?platform=linux).
# wget https://dl.grafana.com/oss/release/grafana_6.3.4_amd64.deb
# dpkg -i grafana_6.3.4_amd64.deb
# systemctl enable grafana-server.service
# systemctl start grafana-server.service

La procédure d'installation de Grafana sur Rasbperry Pi 3B est la suivante.

# wget https://dl.grafana.com/oss/release/grafana_6.3.4_armhf.deb
# dpkg -i grafana_6.3.4_armhf.deb
# systemctl enable grafana-server.service
# systemctl start grafana-server.service

Installation et lancement de Chronograf J'utilise [Chronograf](https://www.influxdata.com/time-series-platform/chronograf/) sur une machine virtuelle Ubuntu 18.04. Pour la procédure d'installation, reportez-vous à [ici](https://portal.influxdata.com/downloads/).
# wget https://dl.influxdata.com/chronograf/releases/chronograf_1.7.14_amd64.deb
# dpkg -i chronograf_1.7.14_amd64.deb
# systemctl enable chronograf.service
# systemctl start chronograf.service

La procédure d'installation de Chronograf sur Rasbperry Pi 3B est la suivante.

# wget https://dl.influxdata.com/chronograf/releases/chronograf_1.7.14_armhf.deb
# dpkg -i chronograf_1.7.14_armhf.deb
# systemctl enable chronograf.service
# systemctl start chronograf.service

Confirmation de connexion HTTPS avec certificat auto-signé En général, il n'est pas recommandé d'utiliser un certificat auto-signé pour les opérations de production, mais je pense que cela convient à des fins de test.

Créer une clé publique auto-signée (cert.pem) et une clé privée (cert.key)
# openssl req -x509 -newkey rsa:4096 -sha256 -nodes -keyout cert.key -out cert.pem -subj "/CN=localhost" -days 365

Créez le répertoire / etc / rainy et placez les clés publique et privée
# mkdir /etc/rainy
# cp cert.pem cert.key /etc/rainy/
# cd /etc/rainy
# chmod 0644 cert.pem cert.key

Paramètres HTTPS Grafana Pour plus de détails, consultez [ici](https://grafana.com/docs/installation/configuration/).

--Modifiez / etc / grafana / grafana.ini.

@@ -29,7 +29,7 @@
 #################################### Server ####################################
 [server]
 # Protocol (http, https, socket)
-;protocol = http
+protocol = https
 
 # The ip address to bind to, empty will bind to all interfaces
 ;http_addr =
@@ -58,8 +58,8 @@
 ;enable_gzip = false
 
 # https certs & key file
-;cert_file =
-;cert_key =
+cert_file = /etc/rainy/cert.pem
+cert_key = /etc/rainy/cert.key
 
 # Unix socket path
 ;socket =
  • Redémarrez Grafana et connectez-vous à https: // hostAddress: 3000 / dans votre navigateur.
# systemctl restart grafana-server.service

Paramètres HTTPS de Chronograf Veuillez consulter [ici](https://docs.influxdata.com/chronograf/v1.7/administration/managing-security/) pour plus de détails.

--Modifier / etc / default / chronograf.

TLS_CERTIFICATE=/etc/rainy/cert.pem
TLS_PRIVATE_KEY=/etc/rainy/cert.key
  • Redémarrez Chronograf et connectez-vous à https: // hostAddress: 8888 / dans votre navigateur.
# systemctl restart chronograf.service

configuration pluvieuse --rainy / conf

rainy.properties

- **`clientID`** ** rainy ** Définissez un identifiant unique comme outil lors de l'exécution. - **`cc2650`** Réglez sur «true» lors de l'utilisation de CC2650. La valeur par défaut est «false». - **`mhz19b`** Réglez sur «true» lors de l'utilisation du MH-Z19B. La valeur par défaut est «false». - **`ppd42ns`** Défini sur «true» lors de l'utilisation de PPD42NS. La valeur par défaut est «false». **point important. Comme PPD42NS est utilisé à partir de Pi4J, Rainy ne peut utiliser PPD42NS qu'avec la série Raspberry Pi (arm). Pi4J ne peut pas être utilisé sur les machines Linux amd64, alors définissez-le sur `false` dans ce cas. ** ** - **`opcua`** Défini sur «true» lors de l'utilisation d'OPC-UA. La valeur par défaut est «false».

Paramètres de connexion de transmission de données

InfluxDB - influxdb.properties

- **`influxDBUrl`** - **`userName`** - **`password`** - `actions` Définissez l'unité pour le nombre de traitements par lots. La valeur par défaut est «1000». - `flushDuration` Définissez l'intervalle de temps de rinçage (ms). La valeur par défaut est «1000». - `dataOnly` Réglez sur «true» pour obtenir uniquement les données. La valeur par défaut est «true».

MQTT - mqtt.properties

- **`brokerUri`** - `userName` - `password` - **`clientID`** Définit la première moitié de l'ID client lors de la connexion au courtier MQTT. La seconde moitié de la chaîne est attribuée par le système pour compléter l'ID client. - `qos` La valeur par défaut est «0». - `topic` Définit la chaîne de rubrique lors de la publication sur le courtier MQTT. La valeur par défaut est «pluvieuse».

Paramètres du capteur et du protocole

CC2650 - cc2650.properties

[Ici](https://qiita.com/s5uishida/items/79a2de6a7026ef230e9b) est également utile.
# hciconfig -a
hci0:   Type: Primary  Bus: UART
        BD Address: B8:27:EB:7D:0F:7D  ACL MTU: 1021:8  SCO MTU: 64:1
        UP RUNNING 
        RX bytes:28342 acl:441 sco:0 events:2265 errors:0
        TX bytes:34605 acl:441 sco:0 commands:1955 errors:0
        Features: 0xbf 0xfe 0xcf 0xfe 0xdb 0xff 0x7b 0x87
        Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3 
        Link policy: RSWITCH SNIFF 
        Link mode: SLAVE ACCEPT 
        Name: 'raspberrypi'
        Class: 0x000000
        Service Classes: Unspecified
        Device Class: Miscellaneous, 
        HCI Version: 4.1 (0x7)  Revision: 0x168
        LMP Version: 4.1 (0x7)  Subversion: 0x2209
        Manufacturer: Broadcom Corporation (15)
  #io.github.s5uishida.level=INFO
  -->
  io.github.s5uishida.level=FINE
# hcitool lescan
LE Scan ...
B0:B4:48:B9:92:86 (unknown)
B0:B4:48:B9:92:86 CC2650 SensorTag

Exécutez la commande hcitool et appuyez sur le bouton d'alimentation du CC2650 pour afficher l'adresse numérisée comme ci-dessus.

MH-Z19B - mhz19b.properties

[Ici](https://github.com/s5uishida/mh-z19b-driver) est également utile.

**point important. Lorsqu'il est utilisé avec le PPD42NS, connectez la broche 4 (jaune) du PPD42NS à la broche 19 (GPIO10) ou à la broche 38 (GPIO20) du Raspberry Pi 3B. Alternativement, lors de la connexion de la broche 4 (jaune) du PPD42NS à la broche 8 (GPIO14) du Raspberry Pi 3B, connectez-vous au Raspberry Pi 3B via un adaptateur de communication série USB au MH-Z19B (DSD TECH SH- Adaptateur série USB vers TTL U09C avec puce FTDI FT232RL, etc.). Si vous connectez le MH-Z19B à un adaptateur de communication série USB, le nom du port de communication série sera / dev / ttyUSB0. ** **

  #io.github.s5uishida.level=INFO
  -->
  io.github.s5uishida.level=FINE

PPD42NS - ppd42ns.properties

[Ici](https://github.com/s5uishida/ppd42ns-driver) est également utile.
  #io.github.s5uishida.level=INFO
  -->
  io.github.s5uishida.level=FINE

OPC-UA - opcua.properties

  #io.github.s5uishida.level=INFO
  -->
  io.github.s5uishida.level=FINE
Serveur OPC-UA --conf / opcua / milo-public-demo.properties Ce qui suit est un exemple de configuration du [serveur de démonstration publique Eclipse Milo](https://github.com/eclipse/milo).
  • use
    Défini sur «true» lors de la connexion à ce serveur OPC-UA. La valeur par défaut est «false».
  • serverName
    Définissez le nom du serveur OPC-UA.
  • endpointIP
    Définissez l'adresse du serveur OPC-UA.
  • endpointPort
    Définissez le numéro de port du serveur OPC-UA.
  • securityPolicy
    Pour securityPolicy, définissez l'un des paramètres «Basic128Rsa15», «Basic256», «Basic256Sha256», «None». La valeur par défaut est «Aucun».
  • securityMode
    Définissez l'un des paramètres «Sign», «SignAndEncrypt» ou «None» pour securityMode. La valeur par défaut est «Aucun».
  • userName
  • password
  • requestTimeout
    La valeur par défaut est «10000» (msec).
  • sessionTimeout
    La valeur par défaut est «10000» (msec).
  • publishingInterval
    Définit l'intervalle de publication pour l'élément surveillé (ms). La valeur par défaut est «1000».
  • samplingInterval
    Définit le samplingInterval pour MonitoredItem (ms). La valeur par défaut est «500».
  • queueSize
    Définit queueSize dans MonitoredItem. La valeur par défaut est «10».
  • dataChangeTrigger
    Définissez l'une des valeurs suivantes pour DataChangeTrigger dans MonitoredItem.
    • 0 for DataChangeTrigger.Status
    • 1 for DataChangeTrigger.StatusValue
    • 2 for DataChangeTrigger.StatusValueTimestamp
      La valeur par défaut est «1».
  • nodeIDs
    Écrivez l'ID du nœud à observer avec un espace. Le format est le suivant.
  <namespaceIndex>,<identifier>,<depth>

Voici un exemple. Si la profondeur est définie sur «-1», l'ID de nœud sera recherché de l'ID de nœud jusqu'à la fin.

  nodeIDs=2,Dynamic/RandomInt32,0 \
	  2,Dynamic/RandomInt64,0 \
	  2,Dynamic,-1 \
	  0,2295,-1

Dans l'exemple ci-dessus, «2, Dynamic / RandomInt32» et «2, Dynamic / RandomInt64» sont explicitement spécifiés pour l'ID de nœud, et ensemble, sous «2, Dynamic» et «0,2295» (VendorServerInfo). Recherchez l'ID de nœud de la hiérarchie jusqu'à la fin.

Il y a aussi «milo-example.properties» dans le répertoire «conf / opcua». Ceci est un exemple de connexion des paramètres à milo-example-server qui a créé l'exemple de serveur inclus dans Eclipse Milo.

Pour référence, en tant qu'outil simple pour vérifier l'espace d'adresses du serveur OPC-UA, [toem impulse OPC / UA Extension (Eclipse pulug-in)](https://toem.de/index.php/projects/impulse- Il y a opcua).

début pluvieux
  • Commencez Commencez comme suit.
# cd /path/to/rainy-felix/bin
# sh rainy-start.sh
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.apache.felix.framework.ext.ClassPathExtenderFactory$DefaultClassLoaderExtender (file:/path/to/rainy-felix/bin/felix.jar) to method java.net.URLClassLoader.addURL(java.net.URL)
WARNING: Please consider reporting this to the maintainers of org.apache.felix.framework.ext.ClassPathExtenderFactory$DefaultClassLoaderExtender
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
-> ps
START LEVEL 1
   ID   State         Level  Name
[   0] [Active     ] [    0] System Bundle (6.0.3)
[   1] [Active     ] [    1] bcpkix (1.62)
[   2] [Active     ] [    1] bcprov (1.62)
[   3] [Active     ] [    1] bluetooth scanner (0.1.1)
[   4] [Active     ] [    1] bluez-dbus-osgi (0.1.2.201908052042)
[   5] [Active     ] [    1] bsd-parser-core (0.3.3)
[   6] [Active     ] [    1] bsd-parser-gson (0.3.3)
[   7] [Active     ] [    1] java driver for ti sensortag cc2650 (0.1.0)
[   8] [Active     ] [    1] Apache Commons Lang (3.9.0)
[   9] [Active     ] [    1] cron4j-osgi (2.2.5)
[  10] [Active     ] [    1] dbus-java-with-java-utils-osgi (3.0.2)
[  11] [Active     ] [    1] Gson (2.8.5)
[  12] [Active     ] [    1] Guava: Google Core Libraries for Java (26.0.0.jre)
[  13] [Active     ] [    1] Java client for InfluxDB (2.15)
[  14] [Active     ] [    1] jSerialComm (2.5.1)
[  15] [Active     ] [    1] Jackson-annotations (2.9.9)
[  16] [Active     ] [    1] Jackson-core (2.9.9)
[  17] [Active     ] [    1] jackson-databind (2.9.9.1)
[  18] [Active     ] [    1] JavaBeans Activation Framework (1.2.0)
[  19] [Active     ] [    1] jaxb-api (2.4.0.b1808300359)
[  20] [Active     ] [    1] file:/home/pi/rainy-felix/bundle/jaxb-runtime-2.4.0-b180830.0438.jar
[  21] [Active     ] [    1] java driver for mh-z19b - intelligent infrared co2 module (0.1.2)
[  22] [Active     ] [    1] A modern JSON library for Kotlin and Java (1.7.0)
[  23] [Active     ] [    1] MessagePack serializer implementation for Java (0.8.17)
[  24] [Active     ] [    1] Netty/Buffer (4.1.38.Final)
[  25] [Active     ] [    1] netty-channel-fsm-osgi (0.3.0)
[  26] [Active     ] [    1] Netty/Codec (4.1.38.Final)
[  27] [Active     ] [    1] Netty/Codec/HTTP (4.1.38.Final)
[  28] [Active     ] [    1] Netty/Common (4.1.38.Final)
[  29] [Active     ] [    1] Netty/Handler (4.1.38.Final)
[  30] [Active     ] [    1] Netty/Resolver (4.1.38.Final)
[  31] [Active     ] [    1] Netty/Transport (4.1.38.Final)
[  32] [Active     ] [    1] Apache Felix Shell Service (1.4.3)
[  33] [Active     ] [    1] Apache Felix Shell TUI (1.4.1)
[  34] [Active     ] [    1] Apache ServiceMix :: Bundles :: jsr305 (3.0.2.1)
[  35] [Active     ] [    1] Apache ServiceMix :: Bundles :: okhttp (3.14.1.1)
[  36] [Active     ] [    1] Apache ServiceMix :: Bundles :: okio (1.15.0.1)
[  37] [Active     ] [    1] Apache ServiceMix :: Bundles :: retrofit (2.5.0.2)
[  38] [Active     ] [    1] Paho MQTT Client (1.2.1)
[  39] [Active     ] [    1] OSGi LogService implemented over SLF4J (1.7.26)
[  40] [Active     ] [    1] Pi4J :: Java Library (Core) (1.2)
[  41] [Active     ] [    1] java driver for ppd42ns - dust sensor module (0.1.6)
[  42] [Active     ] [    1] osgi activator of rainy - a tiny tool for iot data collection and monitoring (0.1.6)
[  43] [Active     ] [    1] OPC-UA bundle of rainy - a tiny tool for iot data collection and monitoring (0.1.4)
[  44] [Active     ] [    1] rainy - a tiny tool for iot data collection and monitoring (0.1.14)
[  45] [Active     ] [    1] sdk-client (0.3.3)
[  46] [Active     ] [    1] sdk-core (0.3.3)
[  47] [Active     ] [    1] slf4j-api (1.7.26)
[  48] [Resolved   ] [    1] slf4j-jdk14 (1.7.26)
[  49] [Active     ] [    1] stack-client (0.3.3)
[  50] [Active     ] [    1] stack-core (0.3.3)
[  51] [Active     ] [    1] strict-machine-osgi (0.1.0)
-> 
  • Arrêtez Arrêtez comme suit.
-> stop 0

Sortie des données du capteur dans le fichier journal

Si vous changez le niveau de journalisation suivant de conf / logging.properties en ʻINFO-> FINE et redémarrez ** rainy **, les données de capteur acquises seront le fichier journal logs / rainy.log.0 Il est sorti vers `.

#io.github.s5uishida.level=INFO
-->
io.github.s5uishida.level=FINE

Voici un exemple de sortie de fichier journal. Le début de la ligne est omis.

[/dev/ttyAMA0] co2:850 
[hci0] B0:B4:48:B9:92:86 obj:28.28125 amb:32.28125 
[hci0] B0:B4:48:B9:92:86 humidity:59.362793 
[hci0] B0:B4:48:B9:92:86 pressure:1012.27 
[hci0] B0:B4:48:B9:92:86 optical:227.28 
[hci0] B0:B4:48:B9:92:86 gyr[x]:-1.3198851 
[hci0] B0:B4:48:B9:92:86 gyr[y]:-0.2593994 
[hci0] B0:B4:48:B9:92:86 gyr[z]:0.7476806 
[hci0] B0:B4:48:B9:92:86 acc[x]:0.0056152344 
[hci0] B0:B4:48:B9:92:86 acc[y]:-0.007080078 
[hci0] B0:B4:48:B9:92:86 acc[z]:0.9707031 
[hci0] B0:B4:48:B9:92:86 mag[x]:127.0 
[hci0] B0:B4:48:B9:92:86 mag[y]:420.0 
[hci0] B0:B4:48:B9:92:86 mag[z]:302.0
[GPIO_10] pcs:1373.6702 ugm3:2.1420693

Pour réduire le nombre d'écritures sur la carte SD du Raspberry Pi 3B, il est généralement recommandé de définir le niveau de journalisation sur ʻINFO`.

Vérifiez le nom de la base de données créée dans InfluxDB

À partir du fichier journal logs / rainy.log.0, vérifiez le nom de la base de données créée dans InfluxDB. Vous trouverez ci-dessous un exemple du nom de base de données créé pour chaque capteur.

  • MH-Z19B ⇒ RP3B_01__dev_ttyAMA0 --CC2650 ⇒ B0_B4_48_B9_92_86 et B0_B4_48_ED_B6_04
  • Serveur de démonstration publique Eclipse Milo ⇒ milo_digitalpetri_com_62541_milo
  • PPD42NS ⇒ RP3B_01_GPIO_10
execute - CREATE DATABASE RP3B_01__dev_ttyAMA0
...
execute - CREATE DATABASE B0_B4_48_B9_92_86
...
execute - CREATE DATABASE B0_B4_48_ED_B6_04
...
execute - CREATE DATABASE milo_digitalpetri_com_62541_milo
...
execute - CREATE DATABASE RP3B_01_GPIO_10

Ces noms de base de données sont nécessaires pour se connecter à InfluxDB lors de la création de tableaux de bord dans Grafana ou Chronograf.

Créer des tableaux de bord avec des outils de visualisation

Connectez-vous à InfluxDB à partir des outils de visualisation Grafana et Chronograf pour surveiller les données des capteurs de séries temporelles.

Pour Grafana

Pour savoir comment utiliser Grafana, reportez-vous à Mise en route ici. Le graphique ci-dessous est un exemple de tableau de bord créé avec Grafana. rainy_grafana_1.png Le graphique ci-dessous est un exemple d'image 3D magnétique (3 axes) utilisant le panneau Plotly. rainy_grafana_1_1.png Le graphique ci-dessous est un exemple d'image d'utilisation du panneau ImageIt (https://grafana.com/grafana/plugins/pierosavi-imageit-panel) pour mapper les données du capteur au sol. Le CC2650 est placé dans trois pièces et le MH-Z19B (concentration de CO2) et le PPD42NS (concentration de PM2,5) sont placés dans la pièce principale. rainy_floor_env_1.png

Pour Chronograf

Pour savoir comment utiliser Chronograf, reportez-vous à Premiers pas sur ici. Le graphique ci-dessous est un exemple de tableau de bord créé avec Chronograf. rainy_chronograf_1.png Le graphique ci-dessous est un exemple d'image de tableau de bord pour les ID de nœud suivants du serveur de démonstration public d'Eclipse Milo.

  • 1,VendorServerInfo/ProcessCpuLoad
  • 1,VendorServerInfo/SystemCpuLoad
  • 1,VendorServerInfo/UsedMemory
  • 2,Dynamic/RandomDouble
  • 2,Dynamic/RandomFloat
  • 2,Dynamic/RandomInt32
  • 2,Dynamic/RandomInt64 rainy_opcua_1.png La ligne supérieure montre les données de chaque ID de nœud de «1, VendorServerInfo / ProcessCpuLoad», «1, VendorServerInfo / SystemCpuLoad» et «1, VendorServerInfo / UsedMemory». La ligne du milieu montre les données de chaque ID de nœud de «2, Dynamic / Random Double» et «2, Dynamic / Random Float» superposées. La ligne inférieure montre les données de chaque ID de nœud de «2, Dynamic / RandomInt32» et «2, Dynamic / RandomInt64».

Les outils de visualisation Grafana et Chronograf facilitent la création d'un tableau de bord de données chronologiques pour chaque capteur envoyé à InfluxDB.

Vérifier les données envoyées au courtier MQTT

Vous pouvez vérifier les données envoyées au courtier MQTT en exécutant la commande client MQTT comme suit:

# mosquitto_sub -d -t rainy/B0_B4_48_ED_B6_04
Client mosqsub|2095-u1804 sending CONNECT
Client mosqsub|2095-u1804 received CONNACK
Client mosqsub|2095-u1804 sending SUBSCRIBE (Mid: 1, Topic: rainy/B0_B4_48_ED_B6_04, QoS: 0)
Client mosqsub|2095-u1804 received SUBACK
Subscribed (mid: 1): 0
Client mosqsub|2095-u1804 received PUBLISH (d0, q0, r0, m0, 'rainy/B0_B4_48_ED_B6_04', ... (670 bytes))
{"deviceID":"B0:B4:48:ED:B6:04","clientID":"RP3B-01","samplingDate":"2019-08-09 12:56:00.009","samplingTimeMillis":1565351760009,"samplingTimeNanos":0,"firmwareVersion":"1.30 (May 23 2016)","batteryLevel":{"value":72,"unit":"%"},"objectTemperature":{"value":27.46875,"unit":"deg C"},"ambientTemperature":{"value":32.03125,"unit":"deg C"},"humidity":{"value":34.61914,"unit":"%"},"pressure":{"value":1009.16,"unit":"hPa"},"optical":{"value":203.84,"unit":"lux"},"gyroscope":{"x":-10.589599,"y":-7.8887935,"z":-2.281189,"unit":"deg/s"},"accelerometer":{"x":-0.029785156,"y":-0.06347656,"z":1.1887207,"unit":"G"},"magnetometer":{"x":138.0,"y":125.0,"z":-199.0,"unit":"uT"}}

Limitations - Un seul adaptateur Bluetooth peut être utilisé à la fois. ――Je pense que le nombre de CC2650 pouvant être utilisés en même temps est d'environ plusieurs en raison de la limitation de la puce Bluetooth. --Lorsque la connexion avec CC2650 est perdue, la reconnexion automatique peut échouer. --PPD42NS est utilisé à partir de Pi4J, donc ** rainy ** ne peut utiliser PPD42NS qu'avec la série Raspberry Pi (arm). Vous ne pouvez pas utiliser PPD42NS car vous ne pouvez pas utiliser Pi4J sur les machines Linux amd64. - Pour le serveur OPC-UA, la charge sur InfluxDB peut augmenter considérablement en raison de l'équilibre entre le nombre d'ID de nœud à observer et l'intervalle de publication.

Liste des bundles

La licence pour le bundle suivant que j'ai créé est une licence MIT.

Veuillez vérifier chaque licence pour les ensembles suivants du tiers que vous utilisez.

Nous remercions les développeurs de ces poignées et ceux qui ont contribué.

Une série d'articles

Cette série comprend les articles suivants:

  1. Motivation et concept
  2. Capturez le signal publicitaire Bluetooth LE avec Java (Bluetooth LE / bluez-dbus) Le Github associé est ici.
  3. Obtenir la température / l'humidité / l'éclairement etc. à partir du TI SensorTag CC2650 avec Java (Bluetooth LE / bluez-dbus) Le Github associé est ici.
  4. Obtenir la concentration de CO2 du MH-Z19B avec Java (communication série / jSerialComm) Le Github associé est ici.
  5. Obtenir la concentration de PM2,5 à partir de PPD42NS en Java (GPIO / Pi4J) Le Github associé est ici.
  6. Obtenir des informations sur le fonctionnement des équipements d'automatisation industrielle en Java (OPC-UA / Eclipse Milo) Le Github associé est ici.
  7. ** Résumer dans un outil simple (cette fois) ** Le Github associé est ici.
  8. Postscript

Postscript

[2019.11.16] Pour obtenir les dernières informations sur les outils simples, veuillez consulter ici.

Recommended Posts

Surveillez facilement l'environnement intérieur - ⑦ Résumez dans un outil simple -
Surveillez facilement l'environnement intérieur ~ ⑧ Postscript ~
Surveillez facilement l'environnement intérieur - (1) Motivation et concept -
Surveillez facilement l'environnement intérieur ~ ⑨ Obtenez la détection de mouvement (HC-SR501 / RCWL-0516) avec Java (GPIO / Pi4J) ~
Création d'un servlet dans l'environnement Liberty
Surveillez facilement l'environnement intérieur-⑥ Acquérez les informations de fonctionnement des équipements d'automatisation industrielle en Java (OPC-UA / Eclipse Milo) -
Surveillez facilement l'environnement intérieur-⑪ Obtenez l'éclairement avec Java à partir de BH1750FVI (substitut) - (I2C / Pi4J) -
Surveillez facilement l'environnement intérieur-② Capturez le signal publicitaire Bluetooth LE avec Java (Bluetooth LE / bluez-dbus) -
Surveillez facilement l'environnement intérieur-⑤ Obtenez la concentration de PM2,5 à partir du PPD42NS avec Java (GPIO / Pi4J) -
Surveillez facilement l'environnement intérieur ~ ④ Obtenez la concentration de CO2 du MH-Z19B avec Java (communication série / jSerialComm) ~
Créer un environnement de test de navigateur à l'aide de Capybara dans l'environnement de développement Docker
Nous allons créer un environnement de développement Spring Framework dans l'environnement sur site.
3 Implémentez un interpréteur simple en Java
Un exemple simple de rappels en Java
Surveillez facilement l'environnement intérieur - ⑩ Obtenez température / humidité / pression à partir du BME280 (substitut) avec Java (I2C / Pi4J) -
Création d'un environnement de développement Lambda avec Eclipse
Effectuer un vidage de thread dans un environnement JRE
[Rails] Réinitialisez la base de données dans l'environnement de production
Construction d'un environnement de développement simple Docker + Django
(Capistrano) Après le déploiement, j'obtiens une erreur Désolé ... dans l'environnement de production.
Surveillez facilement l'environnement intérieur ~ ③ Obtenez la température / l'humidité / l'éclairement, etc. de TI SensorTag CC2650 avec Java (Bluetooth LE / bluez-dbus) ~