Le JavaScript sur ZiBASE Multi - Opérations sur les périphériques

Le JavaScript sur ZiBASE Multi - Retour aux généralités

Le JavaScript sur ZiBASE Multi - Mise en oeuvre

Le JavaScript sur ZiBASE Multi - Opérations sur Android

Le JavaScript sur ZiBASE Multi - Opérations sur les périphériques

Le JavaScript sur ZiBASE Multi - Opérations sur les fichiers

Le JavaScript sur ZiBASE Multi - Opérations sur le réseau IP

Le JavaScript sur ZiBASE Multi - Opérations sur ZiBASE

Le JavaScript sur ZiBASE Multi - Opérations sur l'enregistreur

 

OBJET :  device

 

ROLE : Cet objet comporte les fonctions liées à la gestion de périphériques.


void on(String device)
Mise à ON d’un actuateur.
Exemple :  device.on («Lumière couloir») ;

void off(String device)
Mise à OFF d’un actuateur.

void fullSet(String device, int op)
void fullSet(String device, int op, int var )
void fullSet(String device, int op, int var, int dimval)
void fullSet(String device, int op, int var, int dimval, int prot)
void fullSet(String device, int op, int var, int dimval, int prot, int during)
void fullSet(String device,
int op, int var, int dimval, int prot, int during, int after)

Mise ON/OFF/DIM dynamique d’un actuateur avec paramètres supplémentaires.

op :  0 : OFF (paramètre during non applicable), 1 : ON, 3 : DIM, valeur de dim 0...100% dans dimval  (paramètres during et after non applicables), 4: ON/OFF dynamique selon le contenu de la variable de ZIBASE pointée par var (0...59). 0: OFF & <>0 : ON

during : Temps en secondes après lequel l'ordre est exécuté.

after : Temps en secondes pendant lequel l'ordre est exécuté.

prot: N° de protocole si celui-ci n'est pas implicitement donné par 'device'.

void dim(String device, int dimval)
DIM d’une valeur dimval  0…100 sur un actuateur

int zerror(String device)
Etat d’erreur en émission sur un actuateur ZWAVE

int value(String device)
Lecture de la valeur d’un périphérique
Exemple : var a =  device.value(«Ma Fenêtre») ;

void value (String device,int op)
Mise ON/OFF dynamique d’un actuateur.

op : 0 : OFF, 1 : ON

Exemple : device.value(«Lumière couloir», 0) ;

int zLowBatt(String line)
Etat de batterie faible sur un périphérique ZWAVE. 1: batterie faible. 0 : batterie OK.

String labelToId(String label)
retourne l'ID d'un périphérique à partir de son label. L'ID est vide ("") si l'ID n'a pas été trouvé.

String labelToIdwithQual(String label, int qualifier)
retourne l'ID d'un périphérique à partir de son label selon un élément discriminant ('qualifier'). Utile pour les télécommandes qui associent 2 IDs (ON/OFF) avec un seul label. (0: choix du OFF ; 1: choix du ON). L'ID est vide ("") si l'ID n'a pas été trouvé.

int fullAlert(String label, int op)
Pilote l'état visuel d'une alerte à partir de son label ( alerte donnée par un détecteur réel ou virtuel). op = 0 : remise à zéro de l'alerte ; op = 1 : mise à l'état actif de l'alerte ; op = 2 : simulation d'une alerte (qui peut entraîner le déclenchement de scénarios). retourne 1 si le périphérique a été identifié, 0 sinon.

void fullAlertById(String label, int op)
Pilote l'état visuel d'une alerte à partir de l'ID du périphérique. Même champ 'op' que fullAlert().

int setAlert(String label)
Mise à l'état actif de l'état d'alerte d'un détecteur. Retourne 1 si le périphérique a été identifié, 0 sinon.

int resetAlert(String label)
Mise à l'état inactif de l'état d'alerte d'un détecteur . Retourne 1 si le périphérique a été identifié, 0 sinon.

int simulateAlert(String label)
Simulation d'une alerte sur un détecteur
(qui peut entraîner le déclenchement de scénarios). Retourne 1 si le périphérique a été identifié, 0 sinon.

Fonctions de gestion de ligne série type RS232 / RS422 / RS485

ZIBASE Multi peut reconnaitre un dongle de conversion USB / Lien série (classiquement utilisé sur le PC). Ce dongle intègre un chip de conversion dont la marque la plus connue est FTDI. ZiBASE Multi gère justement les chips de marque FTDI. Il existerait des contrefaçons d'origine asiatique des produits FTDI.

Voir les produits manufacturés  EBConnections ou CHIPI-X, testés et conseillés. Il existe d'autres produits FTDI sur le marché mais non testés.

 

Paramétrage de la ligne série

void presetRs232SerialBaudrate (int rate, int bits, int stopbits, int  parity  )
Enregistrement des paramètres de la ligne série.
int rate : Débit de la ligne (300...115200)
int bits : Nombre de bits par caractère. (classiquement 8).
int stopbits : Nombre de bit de stop (classiquement 1)
int parity : Parité. 0: sans, 1 : impaire, 2 : paire. (classiquement : sans)

NB : il est nécessaire d'exécuter cette fonction au moins une fois puis de redémarrer ZIBASE Multi pour qu'ils soient pris en compte. Ces paramètres seront pris en compte lors des redémarrages ultérieurs. Toutefois, Si l'application ZiBASE Multi est désinstallée puis réinstallée dans votre appareil Android, cette fonction devra être re-exécutée au moins une fois avant re-démarrage opérationnel.


void presetRs232SerialBaudrate (int rate )
Enregistrement du débit la ligne, les autres paramètres étant ceux par défaut (bits=8, stoptbits=1, parité: sans)

void changeRs232SerialRecParams ( int delay , int term, int trace)
Positionnement de paramètres de réception et trace de debug.
int delay : unité : millisecondes. Délai au delà duquel les données bufférisées reçues sont toujours rendues disponibles. Une valeur de 0 signifie qu'aucune limite de temps n'est prise en compte. Sans terminateur imposé, les données sont rendues disponibles par entité de 999 octets.
int term : Caractère terminateur de fin de ligne ou buffer. A réception de ce caractère, les données bufférisées reçues sont toujours rendues disponibles. Cette condition peut se cumuler avec le paramètre delay décrit ci-dessus par un OU logique. Classiquement, le caractère terminateur est 10 (\n = Line Feed) ou 13 (\r = Carriage Return). Une valeur négative ou nulle signifie qu'aucun caractère terminateur n'est spécifié.
int trace : Trace de debug. Une valeur de 0 signifie qu'aucune trace n'est réalisée. Une valeur différente de 0 ( = 1) signifie qu'une trace est réalisée en HEXA et ASCII dans le suivi d'activité de ZiBASE Multi portant sur les entrées/sorties de la ligne série. TOUJOURS DEVALIDER la trace lorsque le debug est terminé car cette fonction consomme énormément de ressources et affecte grandement les performances du système. 

NB : Par défaut d'appel de la fonction, delay = 10ms, terminateur = sans, trace = sans.


Emission de données sur le lien série

int sendData64ToRs232Serial (String data)
Emission de données sur le lien série
String data : Données émises présentées sous le format String Base64. Ce format présente l'avantage de pouvoir manipuler n'importe quel type de données, y compris binaires. La fonction décode la chaine data en format Base64 pour l'émettre en binaire sur le lien série. La taille maximale du paquet doit être inférieure ou égale à 1000 octets (données utiles, la chaîne de caractères en Base64 étant alors de taille plus importante). Découper les données par entités de 1000 octets si une taille plus importante doit être envoyée à un instant donné.

Le passage de paramètres entre Javascript et le moteur Java de ZiBASE Multi ne peut pas techniquement s'appliquer sur des données binaires. Le format Base64 est là pour contourner cet aléa en passant par un intermédiaire "String". Pour information, JavaScript et Java peuvent chacun de leur côté manipuler des données binaires (tableaux d'octets). (voir fonctions JavaScript atob() et btoa() lorsque les données sont uniquement ASCII.

Fonctions utiles de conversion sur des paquets UDP binaires :

function arrayBufferToBase64( buffer ) {  // JavaScript / convert  Byte Array to base64
var base64String = btoa(String.fromCharCode.apply(null, new Uint8Array(array)));
return (base64String);
}

function base64ToArrayBuffer(base64) { // JavaScript / convert base64 to Byte Array
var binary_string =  atob(base64);
var len = binary_string.length;
var bytes = new Uint8Array( len );
for (var i = 0; i < len; i++)        {
bytes[i] = binary_string.charCodeAt(i);
}
return bytes;
}

Réception de données sur le lien série

La réception fait appel à des fonctions déclarées dans l'objet ZIBASE ici :

- addRegisteredFunction()

- subRegisteredFunction()

- clearRegisteredFunctions()

Ouverture de la ligne série :

zibase.addRegisteredFunction("RS232SERIAL:myCallBack");


function myCallBack (str,len) {

// traitement
}

Exemple de traitement de "loopback" réalisé sur des chaînes de caractères terminées par Line Feed (données non binaires) avec affichage à l'écran des données rebouclées

dans un environnement de debug (trace = 1) .