DeviceScript est une innovation de pointe de Microsoft Research. Elle étend les capacités de TypeScript pour s’adapter aux appareils de l’Internet des objets (IoT) à petite échelle avec des ressources limitées.
Son objectif principal est de vous permettre d’écrire du code en TypeScript et de le compiler en bytecode personnalisé, optimisé pour le déploiement sur des environnements à ressources limitées.
Sortie console en DeviceScript
Microsoft DeviceScript offre une console conviviale. Elle prend en charge la sortie de messages et l’enregistrement des données des capteurs, mais sert également d’outil précieux pour la vérification des erreurs.
Une série de fonctions est à votre disposition pour enregistrer des messages à différents niveaux :
console.debug("debug")
console.log("log")
console.warn("warn")
console.error("error")
La sortie de la console est facilement visible dans la fenêtre du terminal DeviceScript. Elle peut fournir des informations précieuses sur l’exécution de votre code et faciliter le processus de débogage.
En outre, DeviceScript simplifie l’enregistrement des données des capteurs en fournissant la fonction console.data qui ajoute automatiquement un horodatage aux données enregistrées.
Prenons l’exemple suivant :
const temperature = 20;
const humidity = 60;
console.data({ temperature, humidity });
Pour accéder aux données enregistrées, vous pouvez naviguer jusqu’à l’onglet DeviceScript – Sortie des données dans Visual Studio Code ou le télécharger à partir du menu d’affichage.
Un formatage puissant des chaînes de caractères
Lors de l’utilisation de la fonction console.log() En utilisant la fonction console.log de DeviceScript, vous disposez de nombreuses options pour formater les chaînes de caractères en vue d’une sortie améliorée. Prenons les exemples suivants :
let x = 0;
let y = 4;
console.log("Greetings, world");
console.log("The value of X is", x, "while Y is", y);
console.log("X=", x, "Y=", y);
console.log(`X=${x} Y=${y}`);
console.log("X=" + x + " Y=" + y);
Le compilateur DeviceScript insère automatiquement des espaces, ce qui permet d’obtenir des résultats plus lisibles. Par exemple, les deuxième et troisième exemples produiront La valeur de X est 7 alors que Y est 12 et X=7 Y=12respectivement.
Lorsque vous écrivez dans des registres, vous pouvez également utiliser la concaténation et les littéraux de modèle. Considérons l’extrait de code suivant :
const screen = new ds.CharacterScreen();
let x = 7;
screen.message.write("The value of X is " + x);
screen.message.write(`X is equal to ${x}`);
En utilisant la concaténation ou les littéraux de modèle, vous pouvez construire sans effort des chaînes dynamiques pour répondre à un large éventail d’exigences.
En outre, DeviceScript offre la possibilité de ds.format() pour un formatage avancé des chaînes de caractères. Vous pouvez utiliser cette fonction en conjonction avec console.log() ou lors de la configuration des registres de chaînes.
Spécifier des caractères génériques pour les arguments en utilisant le format {0}, {1}, {2}et ainsi de suite. Vous pouvez également spécifier la précision en ajoutant un deuxième chiffre.
Observez l’exemple suivant :
const screen = new ds.CharacterScreen();
let x = 7;
let y = 12;
console.log(ds.format("X is {0} and Y is {1}", x, y));
console.log(ds.format("X = {04}", x));
screen.message.write(ds.format("X is approximately {0}", x));
Gardez à l’esprit que le fait de spécifier la précision avec un deuxième chiffre peut ne pas donner des résultats parfaits dans tous les cas de figure.
Clients : Permettre l’interaction avec les capteurs et les actionneurs
L’écosystème DeviceScript abstrait l’interaction avec les capteurs, les actionneurs et les autres composants matériels par le biais des services Jacdac.
Ce cadre traite les capteurs comme des serveurs, tandis que vos scripts connectent les clients à ces serveurs pour faciliter l’interaction. Pour illustrer ce concept, considérons le scénario d’un contrôleur de système de chauffage domestique.
Le système de chauffage comprend un relais qui régule le fonctionnement de la chaudière, un capteur de température et un encodeur rotatif qui permet de régler la température souhaitée. Dans DeviceScript, vous définissez des clients, également appelés rôles, pour chaque service requis.
Examinez l’extrait de code suivant :
import { Temperature, Relay } from "@devicescript/core";
const thermometer = new Temperature();
const thermometer2 = new Temperature();
const relay = new Relay();
En instanciant les clients de service nécessaires, tels que thermomètre, thermomètre2et relaisvous établissez une communication transparente avec les serveurs correspondants.
Serveurs matériels DeviceScript
Pour interagir avec un composant matériel en DeviceScript, vous utilisez des clients de service. Cependant, pour une programmation efficace de ces composants matériels, il est impératif d’initialiser des serveurs de services sur le matériel sous-jacent.
DeviceScript offre une gamme étendue de serveurs dans le cadre du programme @devicescript/servers ce qui simplifie le processus.
Par exemple, le startButton permet de déployer un serveur de boutons sur un pin spécifique et d’obtenir le client correspondant. Observez l’exemple suivant :
import { gpio } from "@devicescript/core";
import { startButton } from "@devicescript/servers";
const buttonA = startButton({ pin: gpio(2),});
En incorporant cet extrait de code dans votre script, vous obtenez la possibilité d’interagir avec la broche 2 (l’identifiant spécifique au matériel) par l’intermédiaire de la fonction boutonA client. Vous pouvez alors vous abonner à des événements tels que la pression d’un bouton et exécuter des actions spécifiques dans votre application IoT.
Développer l’IoT avec DeviceScript
DeviceScript vous permet d’exploiter TypeScript pour les petits appareils IoT, en optimisant le code pour les environnements contraignants. Sa sortie console simplifie la journalisation et la visualisation des données. En abstrayant l’interaction avec le matériel grâce aux services Jacdec, il rationalise la communication avec les capteurs et les actionneurs.
Intégré à Visual Studio Code, DeviceScript offre un environnement de développement complet, ce qui en fait un outil précieux pour des solutions IoT efficaces et sécurisées. Avec DeviceScript et Visual Studio Code, vous pouvez construire en toute confiance des solutions IoT qui sont non seulement efficaces mais qui maintiennent également un haut niveau de sécurité tout au long du processus de développement.