iot
This commit is contained in:
parent
a619a2142e
commit
3e468bfda0
5 changed files with 229 additions and 0 deletions
98
iot/02_standards.md
Normal file
98
iot/02_standards.md
Normal file
|
@ -0,0 +1,98 @@
|
||||||
|
# Standards
|
||||||
|
|
||||||
|
## Introduction
|
||||||
|
|
||||||
|
## MQTT
|
||||||
|
|
||||||
|
Message Queue Telemetry Transport
|
||||||
|
Protocole de transmission de télémesure en machine-to-machine léger.
|
||||||
|
Basé sur des files d'attentes avec un API basé sur le patron de Notification.
|
||||||
|
|
||||||
|
Commande
|
||||||
|
Notification
|
||||||
|
|
||||||
|
- créée en 1999 par IBM et Eurotech.
|
||||||
|
- adopté par OASIS (version actuelle 5.0)
|
||||||
|
|
||||||
|
### Exemple
|
||||||
|
|
||||||
|
```
|
||||||
|
+----------+
|
||||||
|
| Client A |-.
|
||||||
|
+----------+ | +---------------+
|
||||||
|
| | Application X |
|
||||||
|
+----------+ `>+--------+<==>+---------------+
|
||||||
|
| Client B |-->| Broker |
|
||||||
|
+----------+ .>+--------+<==>+---------------+
|
||||||
|
| \ | Application Y |
|
||||||
|
+----------+ | \ +---------------+
|
||||||
|
| Client C |-' \__ abonnement / notification IP
|
||||||
|
+----------+ \__ messages
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
- n Clients (STM32, Aruino, Rapberry Pi)
|
||||||
|
- 1 Broker (en ligne, serveur)
|
||||||
|
- m Appilications (PC, Smartphone)
|
||||||
|
|
||||||
|
### Modèles
|
||||||
|
|
||||||
|
Topic
|
||||||
|
- Des queues parallèlles de messages.
|
||||||
|
- Permet aux clients d'échanger des informations d'une sémantique spécifique.
|
||||||
|
|
||||||
|
Session
|
||||||
|
- Une session qui identifie l'ensemble des topics et la séquence des messages reçus.
|
||||||
|
- Toutes les communications client / serveur se feront par sessions.
|
||||||
|
|
||||||
|
Subscriptions
|
||||||
|
- Contrairement aux sessions, un abonnement attache un client à un topic.
|
||||||
|
|
||||||
|
```
|
||||||
|
clients applications
|
||||||
|
|
||||||
|
+-----------+ +- broker -+ +------------+
|
||||||
|
| | | +--1-->| |
|
||||||
|
| publisher +--1-->| topic 1 | | subscriber |
|
||||||
|
| | | +--4-->| |
|
||||||
|
+-----------+ | topic 2 | +------------+
|
||||||
|
| |
|
||||||
|
+-----------+ | topic 3 | +------------+
|
||||||
|
| +--1-->| | | |
|
||||||
|
| publisher | | topic 4 +--4-->| subscriber |
|
||||||
|
| +--2-->| | ^\ | |
|
||||||
|
+-----------+ ^\ +----------+ \ +------------+
|
||||||
|
\ \_ subscription -> notifications
|
||||||
|
\_ publications
|
||||||
|
```
|
||||||
|
|
||||||
|
### Trame
|
||||||
|
|
||||||
|
```
|
||||||
|
+----+-+-+-+-----------+---------+-----------+
|
||||||
|
| 4 |1|2|1| 8 | C | remaining |
|
||||||
|
+----+-+-+-+-----------+---------+-----------+
|
||||||
|
|Type|D|Q|R| remaining | options | DATA |
|
||||||
|
+----+-+-+-+-----------+---------+-----------+
|
||||||
|
^\^\^\ ^^^^^^^^^\ ^^^^^^^\_ champ d'options
|
||||||
|
\ \ \ \_ taille de DATA
|
||||||
|
\ \ \_ RETAIN
|
||||||
|
\ \__ QoS
|
||||||
|
\___ DUPL
|
||||||
|
```
|
||||||
|
|
||||||
|
- type
|
||||||
|
- 3: publish
|
||||||
|
- .: ...
|
||||||
|
- DUPL : drapeau signifiant que le message est une duplication
|
||||||
|
- QoS : Qualité de service
|
||||||
|
- 0: envoyé
|
||||||
|
- 2: une reception
|
||||||
|
- 3: toute les réceptions
|
||||||
|
-
|
||||||
|
|
||||||
|
## CoAP
|
||||||
|
|
||||||
|
## Comparaisons
|
||||||
|
|
||||||
|
## IoT pour la gestion d'appareils : LwM2M
|
22
iot/tp2/2/a.sh
Executable file
22
iot/tp2/2/a.sh
Executable file
|
@ -0,0 +1,22 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
sudo systemctl start mosquitto.service
|
||||||
|
|
||||||
|
topic='test/topic'
|
||||||
|
|
||||||
|
|
||||||
|
(
|
||||||
|
echo "[mosquitto_sub] listening"
|
||||||
|
mosquitto_sub -v -t $topic
|
||||||
|
) & listener_pid=$!
|
||||||
|
|
||||||
|
(
|
||||||
|
echo "[mosquitto_pub] publishing"
|
||||||
|
mosquitto_pub -t $topic -m 'helloWorld'
|
||||||
|
)
|
||||||
|
|
||||||
|
sleep 1s
|
||||||
|
kill $listener_pid
|
||||||
|
|
||||||
|
|
||||||
|
sudo systemctl stop mosquitto.service
|
27
iot/tp2/2/b.sh
Executable file
27
iot/tp2/2/b.sh
Executable file
|
@ -0,0 +1,27 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
sudo systemctl start mosquitto.service
|
||||||
|
|
||||||
|
topic='maison/is_connecté'
|
||||||
|
|
||||||
|
|
||||||
|
(
|
||||||
|
echo "[application] listening"
|
||||||
|
mosquitto_sub -v -t $topic
|
||||||
|
) & listener_pid=$!
|
||||||
|
|
||||||
|
(
|
||||||
|
echo "[maison] up"
|
||||||
|
while true
|
||||||
|
do
|
||||||
|
echo "[maison] publishing"
|
||||||
|
mosquitto_pub -t $topic -m 'oui'
|
||||||
|
sleep 1s
|
||||||
|
done
|
||||||
|
) &
|
||||||
|
|
||||||
|
sleep 5s
|
||||||
|
kill $listener_pid
|
||||||
|
|
||||||
|
|
||||||
|
sudo systemctl start mosquitto.service
|
36
iot/tp2/2/c.sh
Executable file
36
iot/tp2/2/c.sh
Executable file
|
@ -0,0 +1,36 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
sudo systemctl start mosquitto.service
|
||||||
|
|
||||||
|
topic='test/topic'
|
||||||
|
|
||||||
|
|
||||||
|
(
|
||||||
|
echo "[mosquitto_pub] publishing (no retain)"
|
||||||
|
mosquitto_pub -t $topic -m 'helloWorld'
|
||||||
|
)
|
||||||
|
|
||||||
|
(
|
||||||
|
echo "[mosquitto_sub] listening"
|
||||||
|
mosquitto_sub -v -t $topic
|
||||||
|
) & listener_pid=$!
|
||||||
|
|
||||||
|
sleep 1s
|
||||||
|
kill $listener_pid
|
||||||
|
|
||||||
|
|
||||||
|
(
|
||||||
|
echo "[mosquitto_pub] publishing (retain set)"
|
||||||
|
mosquitto_pub -t $topic -m 'helloWorld' -r
|
||||||
|
)
|
||||||
|
|
||||||
|
(
|
||||||
|
echo "[mosquitto_sub] listening"
|
||||||
|
mosquitto_sub -v -t $topic
|
||||||
|
) & listener_pid=$!
|
||||||
|
|
||||||
|
sleep 1s
|
||||||
|
kill $listener_pid
|
||||||
|
|
||||||
|
|
||||||
|
sudo systemctl stop mosquitto.service
|
46
iot/tp2/2/d.sh
Executable file
46
iot/tp2/2/d.sh
Executable file
|
@ -0,0 +1,46 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
sudo systemctl start mosquitto.service
|
||||||
|
|
||||||
|
topic='test/topic'
|
||||||
|
|
||||||
|
|
||||||
|
function prefix() {
|
||||||
|
while read line
|
||||||
|
do echo "$@" "$line"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
(
|
||||||
|
echo "[mosquitto_sub] listening (qos=0)"
|
||||||
|
mosquitto_sub -v -t $topic -q 0 | prefix "(qos=0)"
|
||||||
|
) & listener_pid=$!
|
||||||
|
|
||||||
|
(
|
||||||
|
echo "[mosquitto_sub] listening (qos=1)"
|
||||||
|
mosquitto_sub -v -t $topic -q 1 | prefix "(qos=1)"
|
||||||
|
) & listener_pid="$listener_pid $!"
|
||||||
|
|
||||||
|
(
|
||||||
|
echo "[mosquitto_sub] listening (qos=2)"
|
||||||
|
mosquitto_sub -v -t $topic -q 2 | prefix "(qos=2)"
|
||||||
|
) & listener_pid="$listener_pid $!"
|
||||||
|
|
||||||
|
|
||||||
|
(
|
||||||
|
echo "[mosquitto_pub] publishing (qos=0)"
|
||||||
|
mosquitto_pub -t $topic -m "message (qos=0)" -q 0
|
||||||
|
|
||||||
|
echo "[mosquitto_pub] publishing (qos=1)"
|
||||||
|
mosquitto_pub -t $topic -m "message (qos=1)" -q 1
|
||||||
|
|
||||||
|
echo "[mosquitto_pub] publishing (qos=2)"
|
||||||
|
mosquitto_pub -t $topic -m "message (qos=2)" -q 2
|
||||||
|
)
|
||||||
|
|
||||||
|
sleep 1s
|
||||||
|
kill $listener_pid
|
||||||
|
|
||||||
|
|
||||||
|
sudo systemctl stop mosquitto.service
|
Loading…
Add table
Add a link
Reference in a new issue