Passer au contenu

CNX Software teste le kit de routeur de bordure Thread GL-S200

La semaine dernière, nous avons vérifié le matériel du kit de routeur de bordure Thread GL.iNet GL-S200 et de ses trois cartes de développement nRF52840. J'ai maintenant pu essayer le kit ; voici la deuxième partie de mon test, consacrée à sa mise en route.

Configuration initiale du GL-S200

J'ai relié le port WAN à mon commutateur Ethernet, lui-même connecté au modem-routeur, et le port LAN à mon ordinateur portable. J'ai ainsi accédé à l'interface Web à l'adresse IP par défaut 192.168.8.1. Le GL-S200 utilise la même interface d'administration que d'autres routeurs GL.iNet, comme le Beryl AX que nous avons testé plus tôt cette année.

Tableau de bord GL-S200

L'assistant de démarrage permet de choisir la langue et de définir un mot de passe administrateur. Vous accédez ensuite à l'interface GL.iNet 4.x.x habituelle.

Panneau d'administration GL-S200

À la fin de l'assistant, le système devrait se connecter automatiquement à Internet et la LED RVB centrale devenir verte.

Réseau Thread

Dans le panneau de gauche, ouvrez « THREAD MESH » pour activer le réseau Thread.

Configurer le réseau Thread du GL-S200
Adresses IPv6 du réseau Thread activé

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

  • Adresse Link-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'elles s'appellent Global Address dans Documentation OpenThread)

    Mise à jour de GL.iNet : l'accès à Internet mondial IPv6 n'est pas encore pris en charge par OT/OTBR.

    Vous pouvez consulter la réponse officielle d’Openthread : https://github.com/openthread/openthread/discussions/8794

    L'adresse locale est une adresse OMR (off-mesh-routable), à l'aide de laquelle vous pouvez accéder aux appareils Thread du côté wifi/Ethernet.

  • Mesh-Local EID – Toutes les interfaces accessibles au sein du même réseau Thread

Pour associer vos propres appareils Thread, ouvrez « Thread Commissioning » et saisissez leur identifiant EUI64 ainsi que la clé prépartagée. GL.iNet propose aussi une section plus simple pour ses cartes de développement Thread, abrégées ici « TBD ».

Carte de développement GL pour ajouter des appareils

Dans la section GL DEV BOARD -> Devices, cliquez sur Add Devices, puis sur Apply. Appuyez sur le bouton SW2 d'une carte pour l'associer au routeur de bordure Thread GL-S200.

Carte de développement Thread type A0 A1

Sélectionnez le type A0+A1 et donnez un nom à la carte. Répétez l'opération pour les deux autres cartes : leurs mesures de température, de pression, d'humidité et de luminosité apparaîtront dans l'interface d'administration.

Panneau d'administration GL S200 GL DEV BOARD Appareils 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. Alors faisons-le maintenant en allant dans « SYSTEM->Mise à niveau ».

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 compilé le 6 mars 2023.

Téléchargement du micrologiciel GL-S200

J'ai téléchargé le fichier sur mon ordinateur, puis l'ai importé dans la section de mise à niveau locale du routeur de bordure Thread GL-S200.

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

La vérification a réussi, j'ai donc cliqué sur Installer, et finalement, j'ai obtenu la version 4.1.3 du micrologiciel7 installé sur mon appareil.

Micrologiciel du panneau d'administration GL-S200 4.1.3 version 7

Mise à niveau du micrologiciel des cartes de développement Thread

Pendant que je poursuivais cette activité de mise à jour du micrologiciel, j'ai également remarqué que les cartes de développement Thread é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 Thread 1.1.9

Topologie du réseau Thread

Thread s'appuie sur un réseau Mesh, donc 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 des routeurs. Avec tous les appareils sur mon bureau…

Mise en route du routeur de bordure de thread GL-S200

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

Topologie Thread en étoile du GL-S200

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.

Cartes de développement Thread Intérieur Extérieur

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

Puissance du signal Thread

En cliquant sur « Self » dans le graphique de topologie, on voit aussi la puissance du signal du nœud connecté au routeur de bordure Thread. Je n'arrivais toutefois pas à faire fonctionner une carte de développement comme routeur, même en l'éloignant pour affaiblir le signal. Les ingénieurs GL.iNet m'ont expliqué qu'il fallait pour cela un firmware de routeur Thread :

Le firmware installé par défaut sur nos cartes TBD les configure comme appareils terminaux Thread ; elles ne peuvent donc pas communiquer directement entre elles. Nous vous enverrons le firmware de routeur Thread et les instructions pour le flasher sur une carte TBD plus tard dans la journée.

Ils m'ont envoyé le firmware du routeur, ainsi que le mcumgr utilitaire pour Linux et Windows.

nRF52 utilitaire mcumgr pour Linux Windows

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

print("Hello World") sera affiché sous la forme print("Hello World")`.

$ bt -l
 port |  age (sec) | device     | driver           | description
------+------------+------------+------------------+----------------------
 *  0 |       1137 | ttyUSB0    | ch341-uart       | USB Serial

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

$ sudo ./mcumgr --conntype serial --connstring=/dev/ttyUSB0,baud=460800 image list
Error: NMP timeout
jaufranc@cnx-laptop-4:~/edev/GL-S200/TBD upgrade$ sudo ./mcumgr --conntype serial --connstring=/dev/ttyUSB0,baud=460800 image list
Images:
 image=0 slot=0
    version: 1.1.9
    bootable: true
    flags: active confirmed
    hash: 88b4725af7975e0b60915c320a82082bb2dda923b736f0e31d2c7d4d67cac3d3
 image=0 slot=1
    version: 1.1.5
    bootable: true
    flags:
    hash: 4d8548e6910e7214d8325a7d1a49a8390fb25cce983bdb0b15bfecc657f7860b
Split status: 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. Je peux maintenant essayer de flasher le firmware du routeur :

$ sudo ./mcumgr --conntype serial --connstring=/dev/ttyUSB0,baud=460800 image upload GL-Thread-Dev-Board-FTD-OTA-v1.1.9.bin
 426.58 KiB / 426.58 KiB [========================] 100.00% 8.93 KiB/s 47s
Done

Vérifions-le à nouveau :

$ sudo ./mcumgr --conntype serial --connstring=/dev/ttyUSB0,baud=460800 image list
Images:
 image=0 slot=0
    version: 1.1.9
    bootable: true
    flags: active confirmed
    hash: 88b4725af7975e0b60915c320a82082bb2dda923b736f0e31d2c7d4d67cac3d3
 image=0 slot=1
    version: 1.1.9
    bootable: true
    flags:
    hash: 7dbb8a9867a000bb968099593bc1f6c2c7bb28ab458719f499364c4a77feca9f
Split status: N/A (0)
Done

Le micrologiciel de l'emplacement 0 est le micrologiciel actuellement 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 serial --connstring=/dev/ttyUSB0,baud=460800 image test 7dbb8a9867a000bb968

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

$ sudo ./mcumgr --conntype serial --connstring=/dev/ttyUSB0,baud=460800 image list
Images:
 image=0 slot=0
    version: 1.1.9
    bootable: true
    flags: active confirmed
    hash: 7dbb8a9867a000bb968099593bc1f6c2c7bb28ab458719f499364c4a77feca9f
 image=0 slot=1
    version: 1.1.9
    bootable: true
    flags:
    hash: 88b4725af7975e0b60915c320a82082bb2dda923b736f0e31d2c7d4d67cac3d3
Split status: 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 Thread avec routeur leader et appareils terminaux

Aucun des périphériques finaux n'est connecté au routeur Board 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 GL-S200 Thread Border. Mais la topologie n'a pas changé. Il semble que la connexion soit « collante » et qu'un nœud Thread ne se reconnectera à un autre routeur que s'il est hors de portée, et pas uniquement en fonction de la force du signal.

Mais lorsque j'ai éteint le GL-S200 et l'ai redémarré, les deux périphériques finaux s'étaient reconnectés au routeur Board 1 qui était désormais le « Thread Leader » du réseau.

Firmware de routeur Thread sur la carte de développement

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 GL-S200 Thread Border (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 certain temps. 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é Thread du routeur de bordure GL-S200

J'ai donc pris la carte 2 (appareil final) et la carte 1 (routeur) pour un court voyage 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 à pied. Et cela a fonctionné, comme dans le schéma ci-dessus, la carte 2 se connecte au « Thread Leader » GL-S200 via la carte 1 agissant comme un routeur.

Informations sur la carte de développement Thread GL

Action des appareils GL S200

Si nous cliquons sur les trois points dans la colonne Action d'un appareil spécifique, nous aurons accès à plus d'options avec les détails de l'appareil, afficher les enregistrements, modifier l'appareil, obtenir le code et réinitialiser l'appareil.

Informations sur l'appareil

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

Nous obtiendrons le 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é consulter le menu « Afficher les enregistrements » pour voir les graphiques des valeurs des capteurs d'une carte spécifique.

Gl S200 GL DEV BOARD Voir les records 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

Cela semble encore pire sur le graphique horaire. Cela ressemble à un bug 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 codes

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 Thread Border GL-S200 via SSH pour exécuter les exemples. Commençons par le code permettant de lire les données des capteurs.

root@GL-S200:~# /usr/bin/demo_get_sensor_data
1 dev_id=9483c44004df0679 connected=1 temperature=31.300811 humidity=43.409729 brightness=0 pressure=97.817392
2 dev_id=9483c47d79c19475 connected=1 temperature=32.742767 humidity=53.620910 brightness=0 pressure=97.814472
3 dev_id=9483c4ec736c4f68 connected=1 temperature=31.292800 humidity=42.652893 brightness=0 press

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 connected=1 temperature=31.300811 humidity=43.409729 brightness=0 pre

Voici le code source pour référence :

#!/bin/sh
# Note, this file is stored in /usr/bin/demo_get_sensor_data
# Usage: demo_get_sensor_data <dev_id>
# It will print all sensor data if <dev_id> is null, and the <dev_id> is the EUI64 of the device, which saved in /etc/config/thread_devices

. /usr/share/libubox/jshn.sh

dev_id=$1
if [ -z "$dev_id" ]; then
    res=$(curl -s localhost/rpc -d '{"jsonrpc":"2.0","id":"0","method":"call","params":["","gw","get_device_list",{}]}')

    json_init
    json_load "$res"
    json_select result
    json_select device_list
    idx=1
    while json_is_a ${idx} object; do
        json_select ${idx}
        json_get_var dev_id dev_id
        json_get_var connected connected

        json_select dev_data
        json_get_var val_temp temperature
        json_get_var val_humi humidity
        json_get_var val_brightness brightness
        json_get_var val_pressure pressure
        echo "$idx dev_id=$dev_id connected=$connected temperature=$val_temp humidity=$val_humi brightness=$val_brightness pressure=$val_pressure"

        json_select ..
        json_select ..

        idx=$((idx + 1))
    done
else
    res=$(curl -s localhost/rpc -d "{\"jsonrpc\":\"2.0\",\"id\":\"0\",\"method\":\"call\",\"params\":[\"\",\"gw\",\"get_device_status\",{\"dev_id\":\"$dev_id\"}]}")

    json_init
    json_load "$res"
    json_select result
    json_get_var dev_id dev_id
    json_get_var connected connected
    json_select dev_data
    json_get_var val_temp temperature
    json_get_var val_humi humidity
    json_get_var val_brightness brightness
    json_get_var val_pressure pressure
    echo "dev_id=$dev_id connected=$connected temperature=$val_temp humidity=$val_humi brightness=$val_brightness pressure=$val_pressure"
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 RGB LEDs sur la carte sélectionnée par son dispositif EUI-64 ID :

root@GL-S200:~#  /usr/bin/demo_control_led 9483c44004df0679
LED OFF
LED ON
LED OFF
LED TOGGLE
Changle LED Color to Red light
Changle LED Color to Orange light
Changle LED Color to Yellow light
Changle LED Color to Green light
Changle LED Color to Blue light
Changle LED Color to Indigo light
Changle LED Color to Purple light
Changle LED Color to White light

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

L'échantillon de contrôle GPIO définit certaines E/S en mode de sortie, faible et élevé, toujours pour une carte spécifique :

root@GL-S200:~#  /usr/bin/demo_control_gpio 9483c44004df0679
Get GPIO Status
GPIO 0.15: 0
GPIO 0.16: 0
GPIO 0.17: 0
GPIO 0.20: 0
Set GPIO 0.15/0.16/0.17/0.20 to output low level
Get GPIO Status
GPIO 0.15: 0
GPIO 0.16: 0
GPIO 0.17: 0
GPIO 0.20: 0
Set GPIO 0.15/0.16/0.17/0.20 to output high level
Get GPIO Status
GPIO 0.15: 1
GPIO 0.16: 1
GPIO 0.17: 1
GPIO 0.20: 1

Les deux derniers exemples pour contrôler le LEDs et le GPIOs utilisent la commande coap_cli « petite implémentation CoAP », par exemple, pour désactiver le LEDs :

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

Utilisation de coap_cli :

root@GL-S200:~# coap_cli
coap_cli v4.2.1 -- a small CoAP implementation
Copyright (C) 2010-2019 Olaf Bergmann <bergmann@tzi.org> and others

TLS Library: None

Usage: coap_cli [-a addr] [-b [num,]size] [-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

	URI can be an absolute URI or a URI prefixed with scheme and host

General Options
	-a addr		The local interface address to use
	-b [num,]size	Block size to be used in GET/PUT/POST requests
	       		(value must be a multiple of 16 not larger than 1024)
	       		If num is present, the request chain will start at
	       		block num
	-e text		Include text as payload (use percent-encoding for
	       		non-ASCII characters)
	-f file		File to send with PUT/POST (use '-' for STDIN)
	-l list		Fail to send some datagrams specified by a comma
	       		separated list of numbers or number ranges
	       		(for debugging only)
	-l loss%	Randomly fail to send datagrams with the specified
	       		probability - 100% all datagrams, 0% no datagrams
	-m method	Request method (get|put|post|delete|fetch|patch|ipatch),
	       		default is 'get'
	-o file		Output received data to this file (use '-' for STDOUT)
	-p port		Listen on specified port
	-r     		Use reliable protocol (TCP or TLS)
	-s duration	Subscribe to / Observe resource for given duration
	       		in seconds
	-t type		Content format for given resource for PUT/POST
	-v num 		Verbosity level (default 3, maximum is 9). Above 7,
	       		there is increased verbosity in GnuTLS logging
	-A type		Accepted media type
	-B seconds	Break operation after waiting given seconds
	       		(default is 90)
	-K interval	send a ping after interval seconds of inactivity
	-N     		Send NON-confirmable message
	-O num,text	Add option num with contents text to request. If the
	       		text begins with 0x, then the hex text is converted to
	       		binary data
	-P addr[:port]	Use proxy (automatically adds Proxy-Uri option to
	       		request)
	-T token	Include specified token
	-U     		Never include Uri-Host or Uri-Port options
PSK Options (if supported by underlying (D)TLS library)
	-k key 		Pre-shared key for the specified user
	-u user		User identity for pre-shared key mode
PKI Options (if supported by underlying (D)TLS library)
	-c certfile	PEM file containing both CERTIFICATE and PRIVATE KEY
	       		This argument requires (D)TLS with PKI to be available
	-C cafile	PEM file containing the CA Certificate that was used to
	       		sign the certfile. This will trigger the validation of
	       		the server certificate.  If certfile is self-signed (as
	       		defined by '-c certfile'), then you need to have on the
	       		command line the same filename for both the certfile and
	       		cafile (as in '-c certfile -C certfile') to trigger
	       		validation
	-R root_cafile	PEM file containing the set of trusted root CAs that
	       		are to be used to validate the server certificate.
	       		The '-C cafile' does not have to be in this list and is
	       		'trusted' for the verification.
	       		Alternatively, this can point to a directory containing
	       		a set of CA PEM files

Examples:
	coap-client -m get coap://[::1]/
	coap-client -m get coap://[::1]/.well-known/core
	coap-client -m get coap+tcp://[::1]/.well-known/core
	coap-client -m get coaps://[::1]/.well-known/core
	coap-client -m get coaps+tcp://[::1]/.well-known/core
	coap-client -m get -T cafe coap://[::1]/time
	echo -n 1000 | coap-client -m put -T cafe coap://[::1]/time -f -

La démo du déclencheur d'action rapporte 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: Press the knob.
2023/03/19 17:38:16 info (/usr/bin/demo_user_action_trigger:34) 9483c44004df0679: Press the knob.
2023/03/19 17:38:18 info (/usr/bin/demo_user_action_trigger:32) 9483c44004df0679: Turn the knob forward
2023/03/19 17:38:19 info (/usr/bin/demo_user_action_trigger:32) 9483c44004df0679: Turn the knob forward
2023/03/19 17:38:20 info (/usr/bin/demo_user_action_trigger:32) 9483c44004df0679: Turn the knob forward
2023/03/19 17:38:20 info (/usr/bin/demo_user_action_trigger:32) 9483c44004df0679: Turn the knob reverse
2023/03/19 17:38:21 info (/usr/bin/demo_user_action_trigger:32) 9483c44004df0679: Turn the knob reverse
2023/03/19 17:38:21 info (/usr/bin/demo_user_action_trigger:32) 9483c44004df0679: Turn the knob reverse
2023/03/19 17:38:23 info (/usr/bin/demo_user_action_trigger:34) 9483c44004df0679: Press the knob.
2023/03/19 17:38:25 info (/usr/bin/demo_user_action_trigger:32) 9483c44004df0679: Turn the

Le code s'appuie sur le binaire /usr/bin/eco [Mise à jour : on dirait que c'est le éco-lua Lua projet d'interprète, voir section commentaires] :

#!/usr/bin/env eco

-- Note, this file is stored in /usr/bin/demo_user_action_trigger, It listens for events reported when the user operates the knob.
-- Usage: demo_sensor_trigger

local ubus = require 'eco.ubus'
local sys = require 'eco.sys'
local cjson = require 'cjson'
local log = require "glog"

local OPT_TURNING_THE_KNOB = 1
local OPT_PRESS_THE_KNOB = 2

log.level(log.LOG_INFO)

sys.signal(sys.SIGINT, function()
    print('
Got SIGINT, now quit')
    eco.unloop()
end)

local con, err = ubus.connect()
if not con then
    error(err)
end

con:listen('user_active_trigger', function(ev, msg)
    local event_data = cjson.encode(msg)
    log.debug('Recievd user active trigger ' .. ev .. ' ' .. event_data)

    local trigger, operation, direction = msg.trigger, msg.operation, msg.direction
    if operation == OPT_TURNING_THE_KNOB then
        log.info(trigger .. ': Turn the knob ' .. direction)
    elseif operation == OPT_PRESS_THE_KNOB then
        log.info(trigger .. ': Press the knob.')
    else
        log.err('Unknown operation!')
    end
end)

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 Thread connectées au routeur Thread Border GL-S200 :

root@GL-S200:~#  /usr/bin/demo_sensor_trigger
2023/03/19 17:47:46 info (/usr/bin/demo_sensor_trigger:31) 9483c44004df0679: Human body detected.
2023/03/19 17:47:46 info (/usr/bin/demo_sensor_trigger:31) 9483c4ec736c4f68: Human body detected.
2023/03/19 17:47:49 info (/usr/bin/demo_sensor_trigger:31) 9483c4ec736c4f68: Human body detected.
2023/03/19 17:47:52 info (/usr/bin/demo_sensor_trigger:31) 9483c44004df0679: Human body detected.
2023/03/19 17:48:15 info (/usr/bin/demo_sensor_trigger:31) 9483c47d79c19475: Human body detected.

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

GL-S200 « Automatisations »

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

Création d'une automatisation sur le routeur de bordure Thread GL-S200

Je vais essayer de contrôler le RGB LEDS sur deux cartes de développement Thread en utilisant le bouton de 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 ».

Tableau de déclenchement
Bouton tournant d'automatisation de la gâchette

J'ai sélectionné « Tourner le bouton », puis « Action du ou des appareils ».

Action du périphérique d'automatisation

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

Créer des actionneurs d'automatisation

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

Changement de couleur d'automatisation

Mais cela ne fonctionne pas et le RGB LEDs reste éteint quelle que soit la direction dans laquelle je tourne le bouton. J'ai finalement découvert que le RGB LEDs devait être allumé avant de pouvoir changer les couleurs, j'ai donc créé une autre automatisation pour allumer/éteindre le LEDs lorsque vous appuyez sur le bouton.

GL-S200 Automatismes Contrôle LED

Et maintenant ça marche.

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é. Pour cela, j'ai créé un serveur Discord et obtenu un Webhook URL(https://discord.com/api/webhooks/xxxx) 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'automatisation GL-S200

… « Corps humain détecté » (ce qui signifie simplement que le capteur de mouvement PIR a été déclenché)

GL-S200 Automatismes Corps humain détecté

… et « Webhook ».

Webhook d’automatisation GL-S200

Là, j'ai ajouté mon Webhook URL, sélectionné Json et ajouté du contenu tel que :

{"content":"OMG! Somebody has just entered the bedroom!"}
Discorde du webhook GL-S200

J'ai ensuite cliqué sur Apply et répété l'opération pour détecter les mouvements dans la cuisine et le bureau.

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

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

Notifications Discord du routeur de bordure Thread GL-S200

Succès ! La section d'automatisation est plutôt soignée, mais il semble qu'elle ne fonctionne qu'avec les cartes de développement GL.iNet Thread. 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 périphériques 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.

GoodCloud GL-S200

Au départ, je pensais que le bouton Mode Switch pourrait ê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 de mode GL S200

En raison de contraintes de temps, je n'ai pas testé la partie Bluetooth, mais je m'attendrais à ce que l'interface et l'expérience soient similaires à celles de la version Bluetooth. Pont GL-S10 BLE à MQTT J'ai révisé l'année dernière.

Ce test a été intéressant. Merci à GL.iNet de m'avoir envoyé le kit de routeur de bordure Thread GL-S200 pour l'évaluer en version bêta. Le kit reçu est disponible en précommande pour 154,00 $ plus frais d'expédition, mais si vous disposez déjà de vos propres nœuds Thread, alors le GL-S200 seul est vendu 79 $ pendant la période de précommande, après quoi ce sera 99 $.

Jean-Luc Aufranc (CNXSoft)

Jean-Luc a lancé CNX Software en 2010 à temps partiel, avant de quitter son poste de responsable de l'ingénierie logicielle et de commencer à rédiger des actualités et des critiques quotidiennes à temps plein plus tard en 2011.

Lire cet avis sur le logiciel CNX

À propos de GL.iNet

Fondée en 2010, GL.iNet est un fournisseur de premier plan de routeurs innovants et de solutions réseau. Des routeurs de voyage compacts aux solutions KVM à distance de pointe, GL.iNet propose des technologies réseau primées, conçues pour la performance et la sécurité.

GL.iNet donne aux particuliers et aux organisations les moyens de se connecter en toute confiance. En laissant le contrôle aux utilisateurs, GL.iNet favorise la productivité et la collaboration qui contribuent à une Good Life.

Article précédent Spitz AX sur la route
Article suivant Résolvez « Internet cassé » de votre mère une fois pour toutes

Comparer les produits

{"one"=>"Sélectionnez 2 ou 3 articles à comparer", "other"=>"{{ count }} éléments sélectionnés sur 3"}

Sélectionnez le premier élément à comparer

Sélectionnez le deuxième élément à comparer

Sélectionnez le troisième élément à comparer

Comparer