Demo émission Modules Blyss™
Ce programme permet d'envoyer des commandes sur une liaison LiveEz™ 433.92 MHz à l'aide d'un module d'émission connecté à une broche de GPIO. Par exemple, on pourra utiliser le module SeeedStudio du kit : https://www.seeedstudio.com/433Mhz-RF-link-kit-p-127.html# Le module émetteur est alimenté entre GND et +5V, l'entrée DATA sera reliée à une broche de GPIO (3.3 ou 5V).
Le programme émule par défaut une télécommande 8 canaux Ref. 582883 Le synopsis est le suivant :
sysio_demo_blyss_tx channel {on,off,loop} [pin]
channel
numéro du canal à commander entre 1 et 8, 0 pour tous les canaux
{on,off,loop}
commande à effectuer : on
pour marche, off
pour arrêt et loop
pour entrer dans une boucle qui bascule l'état du canal toutes les 5 secondes (CTRL+C por arrêter)
[pin]
numéro de la broche à utiliser, optionnel, par défaut le programme utilise la broche 0 (numérotation logique qui dépend de la carte utilisé, voir les modules Raspberry Pi ou NanoPi pour la numérotation.
Voilà ce que ça donne :
sysio_demo_blyss_tx 4 on
Press Ctrl+C to abort ...
RF frame : FE508241098E9
RF footprint : FE - Ok
RF global channel : 5
RF adress : 0824
RF channel : 4
Light status : On
Rolling code : 98 - Ok
Token : E9
everything was closed.
Have a nice day !
Si le programme n'est pas installé à l'aide d'un sudo make install
, la commande est sudo ./sysio_demo_blyss_tx 4 on
, en effet l'accès au GPIO est réservé à root.
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <signal.h>
#include <sysio/delay.h>
#include <sysio/blyss.h>
#include <sysio/string.h>
#define DEFAULT_OUT_PIN 0
static const uint8_t my_id[] = {
0x05, 0x08, 0x24
};
static void
vSigIntHandler (int sig) {
free (f);
printf ("\niBlyssDelete() failed !\n");
exit (EXIT_FAILURE);
}
printf ("\neverything was closed.\nHave a nice day !\n");
exit (EXIT_SUCCESS);
}
static void
vExitFailure (void) {
printf (
"Usage: %s channel {on,off,loop} [pin]\n",
__progname);
exit (EXIT_FAILURE);
}
int
main (int argc, char **argv) {
uint8_t channel;
long num;
int out_pin = DEFAULT_OUT_PIN;
bool loop = false;
bool state = true;
if (argc < 3) {
vExitFailure();
}
printf ("Error: channel must be a number !\n");
vExitFailure();
}
printf ("Error: illegal channel !\n");
vExitFailure();
}
channel = num;
if (strcasecmp (argv[2], "on")) {
if (strcasecmp (argv[2], "off")) {
if (strcasecmp (argv[2], "loop")) {
printf ("Error: illegal command !\n");
vExitFailure();
}
else {
loop = true;
}
}
else {
state = false;
}
}
if (argc > 3) {
printf ("Error: pin must be a number !\n");
vExitFailure();
}
out_pin = num;
}
signal (SIGINT, vSigIntHandler);
printf ("Press Ctrl+C to abort ...\n");
do {
printf ("iBlyssSend() failed !\n");
}
else {
}
if (loop) {
state = !state;
}
}
while (loop);
vSigIntHandler (SIGQUIT);
return 0;
}