Compare commits
2 commits
2d03497de9
...
07bd9dce39
Author | SHA1 | Date | |
---|---|---|---|
07bd9dce39 | |||
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