Compare commits

...

2 commits

5 changed files with 229 additions and 0 deletions

98
iot/02_standards.md Normal file
View 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
View 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
View 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
View 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
View 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