Mise en route avec le kit de routeur de bordure de fil GL-S200

Routeur Gl S200

La semaine dernière, nous avons vérifié le matériel du kit de routeur de bordure de thread GL.iNet GL-S200 avec trois cartes de développement de thread nRF52840, et j’ai maintenant eu le temps de travailler avec le kit, donc je vais rapporter mon expérience de démarrage dans le deuxième partie de l’examen.

Configuration initiale du GL-S200

J’ai connecté le port WAN à mon commutateur Ethernet lui-même connecté à mon modem routeur et le port LAN à mon ordinateur portable, afin de pouvoir accéder à l’interface Web en utilisant l’adresse IP par défaut (192.168.8.1). Le GL-S200 utilise le même panneau d’administration que les autres routeurs GL.iNet tels que le routeur Beryl AX que nous avons examiné au début de l’année.

Tableau de bord GL-200

Vous serez accueilli par un assistant pour vous permettre de sélectionner la langue et de définir un nouveau mot de passe pour le panneau d’administration, et une fois que vous avez terminé, vous aurez accès au panneau d’administration familier GL.iNet 4.xx

Panneau d'administration GL-S200

Une fois l’assistant terminé, le système devrait se connecter automatiquement à Internet et le voyant RVB du milieu passera au vert sur l’appareil.

Réseau de fils

La première étape consiste alors à aller dans THREAD MESH dans le panneau de gauche afin d’activer le réseau Thread.

Configurer le réseau de threads du routeur frontalier GL-S200

Adresse IPv6 activée par le réseau de threads

Une fois que vous aurez cliqué sur Activer, vous obtiendrez trois adresses IPv6 :

  • Adresse lien-local – Toutes les interfaces accessibles par une seule transmission radio
  • Adresse locale – Toutes les interfaces accessibles depuis l’extérieur d’un réseau Thread (on dirait qu’elle s’appelle Global Address dans la documentation OpenThread)
  • Mesh-Local EID – Toutes les interfaces accessibles au sein du même réseau Thread

Si vous avez vos propres appareils Thread, vous pouvez passer au menu Thread Commissioning et saisir l’EUI64 de vos appareils et la clé pré-partagée, mais GL.iNet a simplifié la section de l’interface Web pour gérer leurs Thread Dev Boards, ou À déterminer pour les shorts.

Carte de développement GL Ajouter des appareils

Dans la section GL DEV BOARD->Devices, nous pouvons cliquer sur le bouton Add Devices, puis sur Apply. Si nous appuyons sur le commutateur SW2 d’une carte, elle sera alors automatiquement ajoutée au routeur de bordure de fil GL-S200.

Conseil de développement de fil type A0 + A1

Nous devons sélectionner le type A0+A1 et nommer la carte. Nous pouvons répéter la même chose pour les deux autres cartes et nous obtiendrons les valeurs de température, de pression, d’humidité et d’éclairement pour les trois cartes affichées dans le panneau d’administration.

Panneau d'administration GL S200 GL DEV BOARD Périphériques Capteurs

Mise à jour du micrologiciel GL-S200

À ce moment-là, je me souviens avoir oublié quelque chose… GL.iNet m’a informé qu’ils avaient un nouveau firmware pour le GL-S200 que je devrais appliquer manuellement. Faisons-le maintenant en allant dans « SYSTEM->Upgrade ».

Mise à niveau du micrologiciel GL-S200

Le micrologiciel indique que le micrologiciel 4.1.3 version 5 est à jour dans le panneau d’administration car le nouveau micrologiciel n’a pas été transmis au serveur OTA. Mais on m’a donné un lien de téléchargement avec un firmware plus récent qui a été compilé le 6 mars 2023.

Téléchargement du micrologiciel GL-S200

J’ai téléchargé le fichier, dans la section Mise à niveau locale, et téléchargé le fichier sur le routeur de bordure de thread GL-S200.

Mise à niveau du micrologiciel local du routeur de bordure de thread GL-S200

La vérification a réussi, j’ai donc cliqué sur Installer, et finalement, j’ai installé le firmware 4.1.3 Release7 sur mon appareil.

Micrologiciel du panneau d'administration GL-S200 4.1.3 Release7 - Routeur de bordure de fil

Mise à jour du micrologiciel des cartes de développement de threads

Pendant que je poursuivais cette activité de mise à jour du micrologiciel, j’ai également remarqué que les cartes de développement de threads étaient également éligibles pour une mise à jour du micrologiciel de la version 1.1.5 à 1.1.9, alors j’ai continué et cela a fonctionné parfaitement.

Mise à niveau du micrologiciel de la carte de développement de threads 1.1.9

Topologie de thread

Thread s’appuie sur la mise en réseau Mesh, de sorte que lorsque les nœuds sont proches du routeur, ils se connectent directement au routeur, et lorsqu’ils sont hors de portée ou que le signal est faible, ils peuvent eux-mêmes agir comme routeurs. Avec tous les appareils sur mon bureau…

Routeur de bordure de fil GL-S200

… le réseau avait une topologie en étoile comme prévu.

Topologie de thread en étoile GL-S200 - Routeur de bordure de thread

J’ai donc essayé d’éloigner les planches les unes des autres et de les disposer en ligne droite, voire d’en placer une à l’extérieur.

Thread Dev Boards Intérieur Extérieur

Nous pouvons facilement repérer celui à l’extérieur avec une température et un éclairement plus élevés.

Force du signal de fil

Si nous cliquons sur « Self » dans le tableau de topologie, nous pouvons également voir la force du signal du nœud connecté au Thread Border Router. Mais à aucun moment je n’ai pu utiliser le Thread Dev Board comme routeur. Nous sommes même allés marcher dehors pour essayer de nous mettre hors de portée ou au moins un signal plus faible, mais le réseau maillé ne fonctionnerait tout simplement pas comme je m’y attendais. J’ai donc demandé aux ingénieurs de GL.iNet, et ils m’ont répondu qu’un firmware de routeur de thread était nécessaire pour que cela fonctionne :

Actuellement, notre micrologiciel TBD par défaut est du dispositif d’extrémité de fil type et ne peuvent pas être directement connectés les uns aux autres. Nous vous fournirons le routeur de thread firmware et le guide de brossage TBD correspondant plus tard dans la journée.

Ils m’ont envoyé le firmware du routeur, ainsi que l’utilitaire mcumgr pour Linux et Windows.
nRF52 mcumgr utilitaire linux windows

J’ai connecté l’une des cartes de développement de threads à un PC Linux (Ubuntu 22.04):

$ bt -l

port | âge (sec) | appareil | chauffeur | description

——+————+————+———— -+———————-

* 0 | 1137 | ttyUSB0 | ch341-uart | USB série

 

Le port série est détecté, je peux donc exécuter la commande pour vérifier l’état actuel du micrologiciel :

$ sudo ./mcumgr –conntype série –connstring=/dev/ttyUSB0,baud=460800 liste d’images

Erreur : délai d’attente NMP

jaufranc@cnx-laptop-4:~/edev/GL-S200/TBD upgrade$ sudo ./mcumgr –conntype serial –connstring=/dev/ttyUSB0,baud=460800 liste d’images

Images:

image=0 emplacement=0

Version : 1.1.9

amorçable : vrai

flags : actif confirmé

hachage : 88b4725af7975e0b60915c320a82082bb2dda923b736f0e31d2c7d4d67cac3d3

image=0 emplacement=1

Version : 1.1.5

amorçable : vrai

drapeaux :

hachage : 4d8548e6910e7214d8325a7d1a49a8390fb25cce983bdb0b15bfecc657f7860b

Statut partagé : N/A (0)

 

Il a échoué la première fois avec l’erreur « NMP timeout », mais a fonctionné la deuxième fois. Nous pouvons voir que le firmware 1.1.9 que j’ai mis à jour dans le panneau d’administration se trouve dans l’emplacement 0, et le firmware 1.1.5 antérieur dans l’emplacement 1. Maintenant, je peux essayer de flasher le firmware du routeur :

$ sudo ./mcumgr –conntype serial –connstring=/dev/ttyUSB0,baud=460800 téléchargement d’image GL-Thread-Dev-Board-FTD-OTA-v1.1.9.bin

426,58 Kio / 426,58 Kio [========================] 100.00% 8.93 Kio/s 47s

Fait

 

Vérifions à nouveau:

$ sudo ./mcumgr –conntype série –connstring=/dev/ttyUSB0,baud=460800 liste d’images

Images:

image=0 emplacement=0

Version : 1.1.9

amorçable : vrai

flags : actif confirmé

hachage : 88b4725af7975e0b60915c320a82082bb2dda923b736f0e31d2c7d4d67cac3d3

image=0 emplacement=1

Version : 1.1.9

amorçable : vrai

drapeaux :

hachage : 7dbb8a9867a000bb968099593bc1f6c2c7bb28ab458719f499364c4a77feca9f

Statut partagé : N/A (0)

 

Le micrologiciel de l’emplacement 0 est le micrologiciel en cours d’exécution, tandis que le micrologiciel de l’emplacement 1 est la version du routeur que nous venons de flasher. Nous pouvons passer au nouveau firmware comme suit :

sudo ./mcumgr –conntype série –connstring=/dev/ttyUSB0,baud=460800 test d’image 7dbb8a9867a000bb968099593bc1f6c2c7bb28ab458719f499364c4a77feca9f

 

Nous pouvons ensuite redémarrer la carte et nous assurer que le nouveau micrologiciel commençant par le hachage 7dbb est dans l’emplacement 0 :

$ sudo ./mcumgr –conntype série –connstring=/dev/ttyUSB0,baud=460800 liste d’images

Images:

image=0 emplacement=0

Version : 1.1.9

amorçable : vrai

flags : actif confirmé

hachage : 7dbb8a9867a000bb968099593bc1f6c2c7bb28ab458719f499364c4a77feca9f

image=0 emplacement=1

Version : 1.1.9

amorçable : vrai

drapeaux :

hachage : 88b4725af7975e0b60915c320a82082bb2dda923b736f0e31d2c7d4d67cac3d3

Statut partagé : N/A (0)

 

Après avoir ajouté à nouveau la carte au panneau d’administration, nous pouvons voir le Thread Leader (GL-S200), deux périphériques finaux et un routeur (la carte que nous venons de flasher avec le micrologiciel du routeur).

Topologie de thread : leader de thread (routeur de bordure), routeur et périphérique d'extrémité

Aucun des périphériques finaux n’est connecté au routeur de la carte 1 car tous sont sur mon bureau et connectés au GL-S200. Je déplace donc la carte 1 avec l’un des périphériques finaux dans une autre pièce, à 12 mètres du routeur de bordure de fil GL-S200. Mais la topologie n’a pas changé. Il semble que la connexion soit « collante » et qu’un nœud Thread ne se reconnecte à un autre routeur que s’il est hors de portée, et pas seulement en fonction de la force du signal.

Mais lorsque j’ai éteint le GL-S200 et que je l’ai redémarré, les deux périphériques finaux s’étaient reconnectés au routeur de la carte 1 qui était maintenant le «thread leader» du réseau.

Micrologiciel du routeur de la carte de développement de thread Leader du thread

Donc ça marche. Je ne m’attendais pas à ce que cela fonctionne exactement comme ça car la carte 2 est à 10 centimètres du routeur de bordure de fil GL-S200 (auto) et la carte 1 est à 12 mètres, mais la carte 2 ne s’est pas reconnectée au GL-S200, même après un alors que. En d’autres termes, tant que la connexion est active, un nœud Thread ne se reconnectera pas à un autre routeur même s’il est plus proche et avec un signal plus fort, et je suppose que cela a du sens pour la durée de vie de la batterie.

Réseau maillé de routeur de bordure de thread GL-S200

J’ai donc pris la carte 2 (périphérique terminal) et la carte 1 (routeur) pour un court trajet hors de portée du GL-S200, puis j’ai allumé la carte 1, suivie de la carte 2 pour m’assurer qu’elles étaient associées, et je suis rentré chez moi. Et cela a fonctionné, comme dans le schéma ci-dessus, la carte 2 se connecte au «thread leader» du GL-200 via la carte 1 agissant comme un routeur.

Informations sur la carte de développement de threads GL

Périphériques GL-S200 Action

Si nous cliquons sur les trois points dans la colonne Action pour un appareil spécifique, nous aurons accès à plus d’options avec Détails de l’appareil, Afficher les enregistrements, Modifier l’appareil, Obtenir le code et Réinitialiser l’appareil.

Info appareil

Détails de l'appareil du nœud IoT Thread

Nous obtiendrons l’EUI-64, le nom, l’adresse IPv6, l’adresse MAC étendue (64 bits au lieu des 48 bits habituels), la version du micrologiciel et les données du capteur.

Afficher les enregistrements

Après avoir laissé les cartes fonctionner pendant plus de 24 heures, je suis allé vérifier le menu « Afficher les enregistrements » pour voir les graphiques des valeurs des capteurs d’une carte spécifique.

GL S200 GL DEV BOARD Afficher les enregistrements du jour

Cela semble plutôt bien, mais comme vous pouvez le voir en bas à gauche, il y a des valeurs à 21 heures et le graphique ne commence qu’à 23 heures pour une raison quelconque. C’est pareil pour toutes les planches.

GL DEV BOARD Afficher les enregistrements Heure

C’est encore pire sur le graphique horaire. Cela ressemble à un bogue d’affichage plutôt qu’à des points de données manquants puisque nous pouvons toujours obtenir un point de données sur le côté gauche.

Exemples de code

La section « Obtenir le code » peut être la partie la plus importante si vous souhaitez surveiller et contrôler vos propres appareils Thread avec cinq exemples de code fournis.

Exemple de code de périphériques de thread

Nous devrons nous connecter au routeur de bordure de thread GL-S200 via SSH pour exécuter les exemples. Commençons par le code pour lire les données des capteurs.

root@GL-S200 :~# /usr/bin/demo_get_sensor_data

1 dev_id=9483c44004df0679 connecté=1 température=31.300811 humidité=43.409729 luminosité=0 pression=97.817392

2 dev_id=9483c47d79c19475 connecté=1 température=32.742767 humidité=53.620910 luminosité=0 pression=97.814472

3 dev_id=9483c4ec736c4f68 connecté=1 température=31.292800 humidité=42.652893 luminosité=0 pression=97.822056

Nous pouvons également sélectionner un appareil spécifique à l’aide de son EUI-64 :

root@GL-S200 :~# /usr/bin/demo_get_sensor_data 9483c44004df0679

dev_id=9483c44004df0679 connecté=1 température=31.300811 humidité=43.409729 luminosité=0 pression=97.817392

Voici le code source pour référence :

1

2

3

4

5

6

7

8

9

dix

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

#!/bin/ch

# Notez que ce fichier est stocké dans /usr/bin/demo_get_sensor_data

# Utilisation : demo_get_sensor_data

# Il imprimera toutes les données du capteur si est nul, et le est l’EUI64 du périphérique, qui a été enregistré dans /etc/config/thread_devices

. /usr/share/libubox/jshn.sh

dev_id=$1

si [ -z « $dev_id » ]; alors

res=$(curl -s localhost/rpc -d ‘{« jsonrpc »: »2.0″, »id »: »0″, »method »: »call », »params »:[«  », »gw », »get_device_list »,{}]}’)

json_init

json_load « $res »

résultat json_select

json_select device_list

idx=1

while json_is_a ${idx} objet ; faire

json_select ${idx}

json_get_var dev_id dev_id

json_get_var connecté connecté

json_select dev_data

json_get_var val_temp température

json_get_var val_humi humidité

json_get_var val_brightness luminosité

json_get_var val_pression pression

echo « $idx dev_id=$dev_id connecté=$température connectée=$val_temp humidité=$val_humi luminosité=$val_luminosité pression=$val_pression »

json_select ..

json_select ..

idx=$((idx + 1))

fait

autre

res=$(curl -s localhost/rpc -d « {\ »jsonrpc\ »:\ »2.0\ »,\ »id\ »:\ »0\ »,\ »method\ »:\ »call\ », \ »paramètres\ »:[\ »\ »,\ »gw\ »,\ »get_device_status\ »,{\ »dev_id\ »:\ »$dev_id\ »}]} »)

json_init

json_load « $res »

résultat json_select

json_get_var dev_id dev_id

json_get_var connecté connecté

json_select dev_data

json_get_var val_temp température

json_get_var val_humi humidité

json_get_var val_brightness luminosité

json_get_var val_pression pression

echo « dev_id=$dev_id connecté=$température connectée=$val_temp humidité=$val_humi luminosité=$val_luminosité pression=$val_pression »

Fi

Essayons les autres échantillons.

ls /usr/bin/demo*

/usr/bin/demo_control_gpio /usr/bin/demo_sensor_trigger

/usr/bin/demo_control_led /usr/bin/demo_user_action_trigger

/usr/bin/demo_get_sensor_data

Le deuxième échantillon contrôle les deux LED RVB sur la carte sélectionnée par son ID d’appareil EUI-64 :

root@GL-S200 :~# /usr/bin/demo_control_led 9483c44004df0679

LED éteinte

CONDUIT SUR

LED éteinte

BASCULE DEL

Changer la couleur de la LED en lumière rouge

Changez la couleur de la LED en lumière orange

Changer la couleur de la LED en lumière jaune

Changer la couleur de la LED en lumière verte

Changer la couleur de la LED en lumière bleue

Changez la couleur de la LED en lumière Indigo

Changez la couleur de la LED en lumière violette

Changer la couleur de la LED en lumière blanche

Voici une courte vidéo de démonstration pour montrer à quoi cela ressemble.

YouTube video

L’échantillon de contrôle GPIO a défini certaines E/S sur le mode de sortie, le bas et le haut, encore une fois pour une carte spécifique :

1

2

3

4

5

6

7

8

9

dix

11

12

13

14

15

16

17

18

root@GL-S200 :~# /usr/bin/demo_control_gpio 9483c44004df0679

Obtenir le statut GPIO

GPIO 0.15 : 0

GPIO 0.16 : 0

GPIO 0.17 : 0

GPIO 0.20 : 0

Réglez GPIO 0.15/0.16/0.17/0.20 pour sortir le niveau bas

Obtenir le statut GPIO

GPIO 0.15 : 0

GPIO 0.16 : 0

GPIO 0.17 : 0

GPIO 0.20 : 0

Réglez GPIO 0.15/0.16/0.17/0.20 pour produire un niveau élevé

Obtenir le statut GPIO

GPIO 0.15 : 1

GPIO 0.16 : 1

GPIO 0.17 : 1

GPIO 0.20 : 1

Les deux derniers exemples pour contrôler les LED et les GPIO utilisent la commande coap_cli « small CoAP implementation », par exemple, pour éteindre les LED :

coap_cli -B 2 -N -e « $ctl_cmd_led_off » -m mettre coap://[$addr]/cmd 1>/dev/null 2>/

Utilisation de coap_cli :

1

2

3

4

5

6

7

8

9

dix

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

root@GL-S200 :~# coap_cli

coap_cli v4.2.1 – une petite implémentation CoAP

Copyright (C) 2010-2019 Olaf Bergmann <bergmann@tzi.org> et autres

Bibliothèque TLS : Aucune

Utilisation : coap_cli [-a addr] [-b [num,]taille] [-e text] [-f file] [-l loss]

[-m method] [-o file] [-p port] [-r] [-s duration] [-t type]

[-v num] [-A type] [-B seconds] [-K interval] [-N] [-O num,text]

[-P addr[:port]] [-T token] [-U]

[[-k key] [-u user]]

[[-c certfile] [-C cafile] [-R root_cafile]]URI

L’URI peut être un URI absolu ou un URI préfixé avec le schéma et l’hôte

Options générales

-a addr L’adresse de l’interface locale à utiliser

-b [num,]taille Taille de bloc à utiliser dans les requêtes GET/PUT/POST

(la valeur doit être un multiple de 16 pas supérieur à 1024)

Si num est présent, la chaîne de requête commencera à

numéro de bloc

-e text Inclure le texte comme charge utile (utiliser le codage en pourcentage pour

caractères non ASCII)

-f file Fichier à envoyer avec PUT/POST (utilisez ‘-‘ pour STDIN)

-l list Échec de l’envoi de certains datagrammes spécifiés par une virgule

liste séparée de nombres ou de plages de nombres

(uniquement pour le débogage)

-l loss% Échec aléatoire de l’envoi de datagrammes avec le

probabilité – 100 % tous les datagrammes, 0 % aucun datagramme

-m méthode Méthode de requête (get|put|post|delete|fetch|patch|ipatch),

la valeur par défaut est ‘obtenir’

-o fichier Sortir les données reçues dans ce fichier (utiliser ‘-‘ pour STDOUT)

-p port Ecouter sur le port spécifié

-r Utiliser un protocole fiable (TCP ou TLS)

-s durée S’abonner à/Observer la ressource pour une durée donnée

en secondes

-t type Format de contenu pour une ressource donnée pour PUT/POST

-v num Niveau de verbosité (3 par défaut, 9 au maximum). Au-dessus de 7,

il y a une verbosité accrue dans la journalisation GnuTLS

-A type Type de média accepté

-B secondes Interrompre l’opération après avoir attendu secondes données

(la valeur par défaut est 90)

-K intervalle envoie un ping après un intervalle de secondes d’inactivité

-N Envoie un message NON confirmable

-O num,text Ajoute l’option num avec le texte du contenu à demander. Si la

le texte commence par 0x, puis le texte hexadécimal est converti en

données binaires

-P adresse[:port] Utiliser proxy (ajoute automatiquement l’option Proxy-Uri à

demande)

-T jeton Inclure le jeton spécifié

-U Ne jamais inclure les options Uri-Host ou Uri-Port

Options PSK (si pris en charge par la bibliothèque (D)TLS sous-jacente)

-k clé Clé pré-partagée pour l’utilisateur spécifié

-u user Identité de l’utilisateur pour le mode clé pré-partagée

Options PKI (si elles sont prises en charge par la bibliothèque (D)TLS sous-jacente)

-c certfile Fichier PEM contenant à la fois le CERTIFICAT et la CLÉ PRIVÉE

Cet argument nécessite que (D)TLS avec PKI soit disponible

-C cafile Fichier PEM contenant le certificat CA utilisé pour

signer le fichier de certificat. Cela déclenchera la validation de

le certificat du serveur. Si certfile est auto-signé (comme

défini par ‘-c certfile’), alors vous devez avoir sur le

ligne de commande le même nom de fichier pour le certfile et

cafile (comme dans ‘-c certfile -C certfile’) pour déclencher

validation

-R root_cafile Fichier PEM contenant l’ensemble des autorités de certification root de confiance qui

doivent être utilisés pour valider le certificat du serveur.

Le ‘-C cafile’ n’a pas besoin d’être dans cette liste et est

‘de confiance’ pour la vérification.

Alternativement, cela peut pointer vers un répertoire contenant

un ensemble de fichiers CA PEM

Exemples:

coap-client -m obtenir coap://[::1]/

coap-client -m obtenir coap://[::1]/.well-known/core

coap-client -m obtenir coap+tcp://[::1]/.well-known/core

coap-client -m obtenir coaps://[::1]/.well-known/core

coap-client -m obtenir coaps+tcp://[::1]/.well-known/core

coap-client -m get -T café coap://[::1]/temps

echo -n 1000 | coap-client -m put -T café coap://[::1]/heure -f –

La démo du déclencheur d’action signale l’état du bouton :

root@GL-S200 :~# /usr/bin/demo_user_action_trigger 9483c44004df0679

2023/03/19 17:38:14 info (/usr/bin/demo_user_action_trigger:34) 9483c44004df0679 : Appuyez sur le bouton.

2023/03/19 17:38:16 info (/usr/bin/demo_user_action_trigger:34) 9483c44004df0679 : Appuyez sur le bouton.

2023/03/19 17:38:18 info (/usr/bin/demo_user_action_trigger:32) 9483c44004df0679 : Tourner le bouton vers l’avant

2023/03/19 17:38:19 info (/usr/bin/demo_user_action_trigger:32) 9483c44004df0679 : Tourner le bouton vers l’avant

2023/03/19 17:38:20 info (/usr/bin/demo_user_action_trigger:32) 9483c44004df0679 : Tourner le bouton vers l’avant

2023/03/19 17:38:20 info (/usr/bin/demo_user_action_trigger:32) 9483c44004df0679 : Tournez le bouton vers l’arrière

2023/03/19 17:38:21 info (/usr/bin/demo_user_action_trigger:32) 9483c44004df0679 : Tournez le bouton vers l’arrière

2023/03/19 17:38:21 info (/usr/bin/demo_user_action_trigger:32) 9483c44004df0679 : Tournez le bouton vers l’arrière

2023/03/19 17:38:23 info (/usr/bin/demo_user_action_trigger:34) 9483c44004df0679 : Appuyez sur le bouton.

2023/03/19 17:38:25 info (/usr/bin/demo_user_action_trigger:32) 9483c44004df0679 : Tournez le bouton vers l’arrière

Le code repose sur /usr/bin/eco binary [Update: it looks like it’s the eco-lua Lua interpreter project, see comments section]:

1

2

3

4

5

6

7

8

9

dix

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

#!/usr/bin/env eco

— Notez que ce fichier est stocké dans /usr/bin/demo_user_action_trigger, il écoute les événements signalés lorsque l’utilisateur actionne le bouton.

— Utilisation : demo_sensor_trigger

ubus local = nécessite ‘eco.ubus’

sys local = nécessite ‘eco.sys’

cjson local = nécessite ‘cjson’

journal local = nécessite « glog »

local OPT_TURNING_THE_KNOB = 1

locale OPT_PRESS_THE_KNOB = 2

log.level(log.LOG_INFO)

sys.signal(sys.SIGINT, fonction()

imprimer(‘

Vous avez SIGINT, maintenant quittez ‘)

eco.unloop()

fin)

con local, erreur = ubus.connect()

sinon con alors

erreur (erreur)

fin

con:listen(‘user_active_trigger’, function(ev, msg)

local event_data = cjson.encode(msg)

log.debug(‘Déclencheur actif de l’utilisateur reçu ‘ .. ev .. ‘ ‘ .. event_data)

déclencheur local, opération, direction = msg.trigger, msg.operation, msg.direction

si opération == OPT_TURNING_THE_KNOB alors

log.info(trigger .. ‘: Tourner le bouton ‘ .. direction)

opération elseif == OPT_PRESS_THE_KNOB alors

log.info(trigger .. ‘: Appuyez sur le bouton.’)

autre

log.err(‘Opération inconnue !’)

fin

fin)

Il en va de même pour l’échantillon de déclenchement du capteur qui surveille le capteur PIR pour toutes les cartes de développement de threads connectées au routeur de bordure de thread GL-S200 :

root@GL-S200 :~# /usr/bin/demo_sensor_trigger

2023/03/19 17:47:46 info (/usr/bin/demo_sensor_trigger:31) 9483c44004df0679 : Corps humain détecté.

2023/03/19 17:47:46 info (/usr/bin/demo_sensor_trigger:31) 9483c4ec736c4f68 : Corps humain détecté.

2023/03/19 17:47:49 info (/usr/bin/demo_sensor_trigger:31) 9483c4ec736c4f68 : Corps humain détecté.

2023/03/19 17:47:52 info (/usr/bin/demo_sensor_trigger:31) 9483c44004df0679 : Corps humain détecté.

2023/03/19 17:48:15 info (/usr/bin/demo_sensor_trigger:31) 9483c47d79c19475 : Corps humain détecté.

Tous ces exemples pourraient vous aider à démarrer avec vos propres scripts.

GL-S200 « Automatismes »

La section GL DEV BOARDS comprend également une section « Automatisations ».

GL-S200 Thread Border Router Créer une automatisation

Je vais essayer de contrôler les LED RVB sur deux cartes de développement de threads en utilisant le bouton sur la troisième carte restante.

Action utilisateur d'automatisation

Après avoir donné un nom à l’automatisation, nous pouvons sélectionner l’action de l’utilisateur, puis la carte que nous utiliserons comme bouton : « Board 2 ».

Carte de déclenchement

Bouton tournant d'automatisation de déclenchement

J’ai sélectionné « Tourner le bouton », puis « Action de périphérique(s) ».

Action du dispositif d'automatisation

Puisque je veux contrôler les deux autres cartes, j’ai sélectionné « Board 1 » et « Board 2 ».

Créer des actionneurs d'automatisation

Ensuite, la seule option est « Changer la couleur », alors sélectionnons-la et cliquez sur Appliquer.

Automatisation Changer de couleur

Mais cela ne fonctionne pas et les LED RVB restent éteintes quelle que soit la direction dans laquelle je tourne le savoir. J’ai finalement découvert que les LED RVB devaient être allumées avant de pouvoir changer les couleurs, alors j’ai créé une autre automatisation pour allumer/éteindre les LED lorsque j’appuie sur le bouton.

GL-S200 Contrôle des LED d'automatismes

Et maintenant ça marche.

YouTube video

 

La section Automatisation prend également en charge les webhooks, j’ai donc décidé de créer une automatisation pour m’alerter dans Discord lorsqu’un mouvement est détecté. À cette fin, j’ai créé un serveur Discord et obtenu une URL Webhook (https://discord.com/api/webhooks/xxxx) en suivant les instructions sur Discord.

Serveur Discord du logiciel CNX

Ensuite, j’ai créé une autre automatisation en sélectionnant Sensor Trigger…

Déclencheur de capteur d'automatisations GL-S200

… « Human Body Detected » (ce qui signifie simplement que le capteur de mouvement PIR a été déclenché)

GL-S200 Automations Corps humain détecté

… et « Webhook ».

Webhook Automatismes GL-S200

Là, j’ai ajouté mon URL Webhook, sélectionné Json et ajouté du contenu comme :

{« content »: »OMG ! Quelqu’un vient d’entrer dans la chambre ! »}

Discorde Webhook GL-S200

Enfin, j’ai cliqué sur Appliquer et j’ai répété la même procédure pour détecter le mouvement dans la cuisine et le bureau.

Cartes de développement de threads GL-S200 Automatisations de détection de mouvement

Maintenant, je peux aller sur Discord et me promener dans la maison pour déclencher les capteurs de mouvement PIR pour les trois cartes.

Notifications Discord GL-S200 Thread Border Router

Succès! La section d’automatisation est assez soignée, mais il semble qu’elle ne fonctionne qu’avec les cartes de développement de threads GL.iNet. J’ai donc demandé si le code source serait partagé pour permettre aux utilisateurs de mettre à jour la solution afin qu’elle fonctionne avec leurs propres appareils Thread, mais je n’ai pas obtenu de réponse à cette question spécifique.

Divers

Tout comme les autres appareils réseau GL.iNet, le GL-S200 prend en charge GoodCloud pour l’accès à distance, mais son utilisation est limitée car les parties Thread et Bluetooth ne sont pas prises en charge.

Good Cloud GL-S200

Au départ, je pensais que le bouton Mode Switch pouvait être utilisé pour basculer entre BLE et Thread, mais tout comme dans les routeurs précédents, il peut être configuré pour activer / désactiver WireGuard ou OpenVPN.

Bouton Mode GL S200

En raison de contraintes de temps, je n’ai pas testé la partie Bluetooth, mais je m’attends à ce que l’interface et l’expérience soient similaires au pont GL-S10 BLE vers MQTT que j’ai examiné l’année dernière.

Ce fut une expérience intéressante, et j’aimerais remercier GL.iNet d’avoir envoyé le kit GL-S200 Thread Border Router pour évaluation/test bêta. Le kit que j’ai reçu est disponible en précommande pour 154,00 $ plus les frais d’expédition, mais si vous avez déjà vos propres nœuds Thread, le GL-S200 seul est vendu 79 $ pendant la période de précommande, après quoi il sera de 99 $. .

Retrouvez l’histoire de Raspberry Pi dans cette vidéo :

YouTube video