janvier 6

Serveur Blynk local

Blynk est un service génial permettant de contrôler les entrées/sorties de beaucoup de matériels (Arduino, raspberryPi, Teensy…) via une appli smartphone ou du code arduino.
Blynk peut aussi utiliser les capteurs du smartphones pour son projet.
La création d’un compte octroi un cloud permettant la liaison via Internet mais du coup, une latence qui peut être gênante parfois.

Heureusement, on peut facilement installer son propre serveur Blynk, en Java, sur un raspberry Pi (une version 2 avec Raspbian Lite dans mon exemple).
L’avantage aussi est de s’affranchir de la limite « d’energy balance » du projet Blynk car sur son propre serveur, on peut monter cette valeur.

Installer Java

sudo apt-get update
sudo apt-get install oracle-java8-jdk

Faire : java -version pour afficher le numéro de version

Télécharger et installer Blynk

Allez chercher l’adresse sur le site : https://github.com/blynkkk/blynk-server/
(ex: wget « https://github.com/blynkkk/blynk-server/releases/download/v0.28.9/server-0.28.9-java8.jar »)

Démarrer Blynk
(modifier le numéro de java selon)
java -jar server-0.28.9-java8.jar -dataFolder /home/pi/Blynk

Un Ctrl+C ferme le serveur, pour redémarrer faire
java -jar server-0.28.9-java8.jar -dataFolder /home/pi/Blynk

Allez sur : https://ip_du_raspi:9443/admin

Utiliser au départ admin@blynk.cc et admin pour rentrer dans l’interface, ajouter ensuite un utilisateur avec login et password et supprimer ensuite le compte admin.

Mettre à jour le server

Tuer le processus, via son numéro PID

ps -aux | grep java
sudo kill ***

Télécharger et installer la nouvelle version

Penser à modifier le crontab

Source

 

Blynk au démarrage du Raspi

Editer le crontab
sudo crontab -e (sudo si le dossier Blynk est root:root, sinon crontab -e)
ajouter
@reboot java -jar /home/pi/server-0.28.9-java8.jar -dataFolder /home/pi/Blynk &

Pare-feux

Au besoin, ajouter des règles de redirection à sa box :

Blynk server has 3 ports open for different security levels.
8441 – SSL/TLS connection for hardware
8442 – plain TCP connection for hardware (no security)
9443 – Webhook SSL
8080 – Webhook

Modification des ports en début 2018
443 – mutual authentication (mutual SSL) connection for Mobile Apps

 

A partir de la, il suffit de créer un projet dans l’appli Blynk et de choisir « custom » pour le serveur, avec l’adresse IP de son Raspberry ou l’adresse IP externe de sa box, si l’on souhaite un accès via une connexion 4G.

L’appli envoie le token du projet par mail mais on peut le récupérer via la rubrique « users » du serveur Blynk.

Configuration

On peut aussi créer et personnaliser un fichier server.properties selon des besoins particuliers mais ce n’est pas indispensable.
En cas de réinstallation du serveur, il suffira de sauvegarder  ces fichiers.

sudo nano server.properties (dans le même dossier que le *.jar)
https://github.com/blynkkk/blynk-server/blob/master/server/core/src/main/resources/server.properties

remplacer
#server.host=test.blynk.cc
par
server.host=192.168.0.30

si une appli utilise le port 8080 (apache…) ou peut le changer
http.port=8181

en cas de blocage via webhook
webhooks.frequency.user.quota.limit=-1 to server properties.

Erreur de flow (trop de requètes)
If sending hundreds of requests is what you need for your product you may increase flood limit on local server and within Blynk library.
For local server you need to change user.message.quota.limit property within server.properties file :
#100 Req/sec rate limit per user.
user.message.quota.limit=100

sudo nano mail.properties
On peut recevoir le token via Gmail… créer un fichier mail.properties dans le même dossier que je ***.jar
sudo nano mail.properties
ATTENTION : ne fonctionne pas si la « validation en 2 étapes » est activé sur le compte Google
ajouter dedans
mail.smtp.auth=true
mail.smtp.starttls.enable=true
mail.smtp.host=smtp.gmail.com
mail.smtp.port=587
mail.smtp.username=YOUR_EMAIL_HERE
mail.smtp.password=YOUR_EMAIL_PASS_HERE

Webhook

Une des fonctions les plus puissante de Blynk est l’utilisation de webhook, des URL qui permettent de déclencher des actions sur Blynk.
Par exemple, via IFTTT : https://son_ip_publique:9443/le_token_du_projet/update/d10?value=1

enverra la valeur 1 sur la pin virtuel numéro 10 de Blynk.

 

 

 

 

Catégorie : Non classé | Commenter
novembre 19

Les applications de gestion de mot de passe

Toutes ces applications ont le même principe, regrouper ses mots de passe dans un coffre-fort numérique (un fichier crypté), protégé par un mot de passe maître.
L’ensemble sera synchronisé via Internet entre navigateur Web et smartphone.

C’est l’application qui se charge de générer un mot de passe long, compliqué et différent pour chaque compte. Vous n’avez qu’à vous rappeler du mot de passe maître.

Les ténors

LastPass et DashLane mais je préfère m’en écarter car elles sont, en partie, payantes et sur des serveurs très connus, donc soumises à de potentielles attaques.

Bitwarden

Open-source, interface sur le Web (en anglais),  extension Chrome en français avec beaucoup d’options.

Sur la page de connexion d’un site web (login et mot de passe à créer), l’application peut générer un mot de passe complexe et remplit une entrée avec le login choisi, le mot de passe et l’adresse Web de la page de connexion.

De retour sur cette page (l’adresse doit être identique à celle mémorisée dans Bitwarden), un simple clic sur l’icone Bitwarden remplira automatiquement les champs.

  

On a l’application gratuite, à l’apparence identique et toujours en Français sur  Android.

La syncro se fait via un serveur sécurisé (même les gestionnaires du serveur ne peuvent lire les mots de passe) chez Microsoft Azure.

… »bitwarden traite et stocke toutes les données de manière sécurisée dans le cloud Microsoft Azure à l’aide de services gérés par l’équipe de Microsoft.
bitwarden ne gère pas directement l’infrastructure ou la sécurité du serveur. Toutes les données sont sauvegardées plusieurs fois, à l’aide des services fournis par Microsoft Azure… »

Bitwarden indique que l’on peut l’installer sur son propre serveur Linux, mais ce n’est pas évident pour le commun des mortels.

Point positif, pas d’installation à faire sur l’ordinateur, tout se fait en ligne ou via les applications Chrome et Android.

Point négatif, la page web du service en anglais.

Endpass

Belle interface, en français et une extension Chrome. Installable sur PC et Mac avec une version classique ou portable (c’est-à-dire à installer par exemple sur une clé USB ou Dropbox/GoogleDrive/OneDrive…). Endpass sera donc accessible sur différents ordinateurs ou smartphones.

La syncro des mots de passe peut se faire via différents services Internet (dropbox, Google Drive…)

La consommation en mémoire est un peut élevée (comparé à Keepass par exemple).

Points positifs, la qualité de l’interface et des catégories (dont les cartes bancaires et autres), l’ajout possible de champs et l’auto-remplissage dans le navigateur.

Point négatif, l’application Android (en français) gratuite est limitée à 20 entrées, la version payante coûte presque 10€.

Keepass

Logiciel open-source, en version installable ou portable, en anglais mais on peut installer facilement une traduction française.


Beaucoup de réglages et de possibilités… dont l’auto-remplissage via un raccourci clavier même pour les logiciels installés sur le PC (autre que le navigateur).

 

Points positifs :

  • open-source
  • version portable (à installer dans Dropbox, Google Drive, OneDrive… par exemple)
  • la personnalisation du remplissage des champs (ex: login1, tab, login2, tab password, enter)
  • l’auto-remplissage via un raccourci clavier (même pour un programme installé sur le PC).
  • la reconnaissance de l’adresse Web par un mot (ex: *dropbox* reconnait toutes les pages du site Dropbox)
  • l’application Android  gratuite.
  • beaucoup d’options et de plugins disponibles

Point négatif :

  •  l’interface, un peu « old school » et les nombreux réglages peuvent rebuter les moins « geeks ».

Zenpass

15 identifiants maxi avec l’offre gratuite, ensuite il faut payer pour chaque mot de passe supplémentaire.
Les serveurs de ZenyPass sont hébergés par la société Digital Ocean, et sont situés à Francfort, Allemagne.

Point positif: 

  • Open-source,
    Le paiement se fait en une seule fois, sans abonnement.

Points négatifs :

  • Pas d’auto-remplissage automatique, il faut d’abord passez par la page Zenpass pour ensuite allez sur le site
  • Pas d’extension navigateur
  • Pas d’application smartphone

 

Comparatifs en 2016

Comparatifs en 2017

Catégorie : LOGICIELS | Commenter
octobre 5

Un monitoring simple pour le raspberry

Il est bien d’avoir accès aux infos de son raspi parfois SANS passer par l’installation d’un système de monitoring par le Web, qui nécessite un server apache et PHP.

Pour avoir ces infos via la console, EZmonitoring suffit.

Installation

A modifier selon la version et cours

wget --content-disposition http://www.ezservermonitor.com/esm-sh/downloads/version/2.2
unzip ezservermonitor-sh_v2.2.zip
chmod u+x eZServerMonitor.sh

Une fois fait, la commande

/eZServerMonitor.sh --all

Permet d’avoir toutes les infos.

Catégorie : RASPBERRY PI | Commenter
octobre 1

Resilio sur disque-dur Freebox

Resilio (ex BitTorrentSyncro) est un système permettant de synchroniser des dossiers entre divers appareils tel que Raspberry, NAS, PC…
Le pitch içi étant de synchroniser les dossiers  présents sur un serveur Linux avec ceux présents sur le disque-dur interne d’une Freebox revolution, via un raspberry Pi (version 1 dans mon cas) connecté en réseaux sur la Freebox.

Resilio Synchro

Installer d’abord une version Lite de Raspbian et la configurer (date, langue…).
Pour infos, le faite de placer un fichier appelé ssh (sans extension) à la racine de la carte permet d’avoir accès au Raspi directement.

Installer ensuite Resilio, la version varie selon que l’on utilise un Raspi 1 ou un Raspi 3.
Pensez à faire un apt-get update et upgrade avant.

Pour mettre Resilio au démarrage

sudo systemctl enable resilio-sync
sudo nano /usr/lib/systemd/user/resilio-sync.service
changer "WantedBy=multi-user.target" par "WantedBy=default.target"
sudo systemctl --user start resilio-sync

Ensuite, se connecter sur <ip-du-raspi>:8080/gui/

La belle interface de Resilio devrait apparaitre. Indiquer ensuite la clé, fourni par le Resilio source, et choisir le dossier de le Freebox qui sera syncronisé.

Montage du disque-dur Freebox

 

Créer un dossier dans le dossier « media » (dédié au disque externe) du raspi.

sudo mkdir /media/freebox
sudo mkdir /media/freebox/Rtorrent/

leurs donner des droits d’accès total

sudo chmod -R 777 /media/freebox/

Créer le montage

//mafreebox.freebox.fr/Disque\040dur\Rtorrent /media/freebox/Rtorrent cifs _netdev,rw,users,iocharset=utf8,uid=1000,gid=1000,credentials=/etc/freebox.credentials,sec=none,file_mode=0777,dir_mode=0777 0 0

uid et gid 1000 est l’utilisateur et groupe du Raspberry (afficher avec la commande id).

Si mafreebox.freebox.fr renvoie une erreur lors du montage, on peut remplacer par 192.168.0.254.

La 1er partie indique que le dossier Rtorrent situé sur le disque-dur de la Freebox. Le 2e partie indique de le dossier Rtorrent, inclus dans freebox, lui même inclus dans media sera syncronisé.

Monter le disque au démarrage du Raspi

Créer un fichier

sudo nano /etc/freebox.credentials

Ecrire dedans

username=
password=

Monter le disque dur, une fois pour toute

sudo mount -a

La commande df permet de voir si le disque-dur est bien monté.

Voila, dans mon cas, tout ce qui est téléchargé sur mon Rtorrent est synchronisé avec ma Freebox…. un bonheur !

source 1

source 2

Catégorie : RASPBERRY PI | Commenter
septembre 23

Ambilight avec OpenElec et WS2801

J’ai déjà fait un post sur Ambilight MAIS avec un Raspi un Arduino et un WS2812. Cette version est plus simple et utilise un Raspberry Pi 3 (avec OpenElec) et un ruban LED WS2801.

Pour le placement des LED sur la télé, voir ce post.

Branchement

Le Raspi et le ruban LED est alimenté via une petite alim ATX 5V/6A,

Le WS2801 contient 32 LED par mètre et consomme 1.8A par mètre (50mA/LED), avec toutes les LED en blanc (source)

bien que ma mesure, avec 89 LED allumé en blanc et le rapi ne consomme que 1 A.
Théoriquement on devrait avoir 0.05 X 89 = 4.45 A. J’ai testé avec une autre alim, c’est idem…. j’ai pas de réponse la dessus.

  • +5V sur le Raspi et le fil rouge du WS2801
  • GND sur le Raspi et le fil noir/rouge du WS2801
  • CI du WS2801 sur SPI_clock du Raspi
  • DI du WS2811 sur CPI_mosi du Raspi

Logiciel

Installer l’image d’Openelec pour raspberry.

Une fois fait, installer Hyperion. Même si on peut l’installer en ligne de commande, le plus simple est de passer par le logiciel Hypercon (en Java) à installer sur Windows.

Il permet d’installer Hyperion sur le raspi (via une connexion SSH) et surtout de paramétrer les LED et autres.

Dans la rubrique hardware :

  • type = WS2801
  • Output = /dev/spidev0.0
  • baudrate = 1000 000

Le reste dépend de votre configuration et choix.

Dans le rubrique Grabber :

  • internal frame garbber = enabled
  • External/Kodi checker = enabled
  • SSH/system = Openelec /LE

Dans la rubrique SSH :

Indiquer l’adresse IP de son Raspi, le username Openelec (root), le password (openelec) puis faire « connect ».

Faire « stop hyperion »

Cliquer sur « Create Hyperion Configuration » avant d’envoyer cette configuration, via « Send config ».

Faire « start hyperion » pour actualiser la config.

En cas de problème

Vérifier que les ports SPI du Raspi sont activés via le fichier config.tx présent sur la carte SD du raspi.

nano /flash/config.txt

A la fin du fichier, on rajoute les lignes suivantes:

device_tree_overlay=overlays/enable-spi-overlay.dtb
dtparam=spi=on

On reboot ensuite le raspberry

reboot

 

 

Catégorie : RASPBERRY PI | Commenter
juillet 3

Arduino ne s’ouvre plus

Suite au passage à Windows 10 Update Creator, Arduino commence à s’ouvrir puis se ferme sans message d’erreur.

Pour corriger ça, supprimer le dossier « Arduino 15″ situé dans : User/AppData/local

Et voila, ça fonctionne !

Catégorie : Teensy/Arduino | Commenter
avril 29

Carte réseaux à du mal à se reveiller

Parfois, lors de la mise en vielle profonde de Windows, la carte réseaux met du temps à retrouver la connexion.

Dans : propriétés/gestion de l’alimentation de la carte il faut, d’une part, décocher la case « autoriser l’ordinateur à éteindre… »

mais surtout dans : propriétés/avancés désactiver l’économie d’énergie.

Catégorie : WINDOWS | Commenter
février 25

Resilio Syncro

Résilio syncro (anciennement BitTorrent Syncro)

Installation sur un serveur Ubuntu

sudo nano /etc/apt/sources.list.d/resilio-sync.list

Ajouter dedans :

deb http://linux-packages.resilio.com/resilio-sync/deb resilio-sync non-free

Ajouter la clé public :

wget -qO - https://linux-packages.resilio.com/resilio-sync/key.asc | sudo apt-key add -

Après le classique  apt-get update

sudo apt-get
install resilio-sync

On se place dans le dossier d’installation

cd /usr/bin

et on change l’IP (local par defaut) et le port

./rslsync --webui.listen ***.***.***.***:8888

Le fichier de config se trouve :

/etc/resilio-sync/

On fois fait, on y a accès depuis son navigateur, reste juste à suivre la démarche de création de compte.

Par contre, à chaque reboot du serveur, penser à relancer Resilio et son interface:

cd /usr/bin
./rslsync --webui.listen ***.***.***.***:8888

NOTE :

Ne pas oublier de donner des droits 777 au dossier que l’on souhaite ajouter au partage sous peine de message d’erreur lors de l’ajout via Resilio.

Par défaut, Resilio à un dossier « Archive » qui stocke les fichiers supprimer. Ca peut vite remplir le disque-dur.
Pour éviter ça, faire un clic-droit/préférences sur le dossier syncronisé et décocher la case dédié.

 

source1

source2

 

 

 

Catégorie : Linux | Commenter
février 4

Ambilight avec OpenElec et Arduino

Ambilight est un système, à base de ruban LED rgb disposé à l’arrière d’une télé, permettant de diffuser des couleurs en rapport avec le contenu de l’image affiché à l’écran.

Pour cela, j’utilise un Raspberry 3 avec le mediacenter Openelec (LibreElec fonctionne aussi) connecté en USB à un Arduino Uno (un nano devrait aussi fonctionner) lui même connecté à un ruban de LED WS2812b.

J’ai fabriqué un cadre en bois avec des liteaux de 4X13 mm, fixé via les 2 vis VESA de la télé. Le ruban LED est collé sur les liteaux.
Les liteaux sont inclinés à 45° pour avoir un maximum de projection lumineuse à l’arrière de la télé.

Les fichiers 3D que j’ai créé pour ce montage sont disponible sur mon Thingiverse.

dans mon exemple, j’ai 29 LED en haut et bas et 17 à droite et gauche = 92 au total.

 

J’ai fais des pièces en 3D, tout est disponible sur mon Thingiverse.

Ruban LED

Le ruban est une suite de module de LED que l’on peut découpé et souder. Chaque module fait 33 mm, bien mesuré la longueur des liteaux haut/bas et droite/gauche en multiple de 33 mm, pour que le ruban arrive pile poil au bout.

Le ruban à un sens indiqué par une flêche, le logiciel utilisé par la suite permet de choisir la position de départ et le sens (horaire/anti), on est libre donc, pour ma part, je démarre en bas à droite (vu de l’arrière de la télé)

La ruse est de mettre des LED sur la longueur/largeur de l’écran ET PAS de la télé, si comme moi, elle comporte une bordure sur les bords.
Diviser donc la largeur de l’écran (en mm) par 33 pour avoir le nombre de LED à placer. Si ça tombe pas juste, ajuster au plus proche.

Le ruban comporte 3 connexion : +5V, GND, data, que j’ai relié à un domino fixé au cadre.

Arduino

le code vient de Tweaking4all et  utilise la librairie Adafruit NeoPixel, et fastLED, accessible via le gestionnaire de librairie d’Arduino.

#include <bitswap.h>
#include <chipsets.h>
#include <color.h>
#include <colorpalettes.h>
#include <colorutils.h>
#include <controller.h>
#include <cpp_compat.h>
#include <dmx.h>
#include <FastLED.h>
#include <fastled_config.h>
#include <fastled_delay.h>
#include <fastled_progmem.h>
#include <fastpin.h>
#include <fastspi.h>
#include <fastspi_bitbang.h>
#include <fastspi_dma.h>
#include <fastspi_nop.h>
#include <fastspi_ref.h>
#include <fastspi_types.h>
#include <hsv2rgb.h>
#include <led_sysdefs.h>
#include <lib8tion.h>
#include <noise.h>
#include <pixelset.h>
#include <pixeltypes.h>
#include <platforms.h>
#include <power_mgt.h>



/* t4a_boblight
 * (C) 2014 Hans Luijten, www.tweaking4all.com
 *
 * t4a_boblight is free software and can be distributed and/or modified
 * freely as long as the copyright notice remains in place.
 * Nobody is allowed to charge you for this code.
 * Use of this code is entirely at your own risk.
 */

#include "Adafruit_NeoPixel.h"

// DEFINITIONS

#define STARTCOLOR 0xFFFFFF  // LED colors at start
#define BLACK      0x000000  // LED color BLACK

#define DATAPIN    13        // PIN Arduino connecté à la broche DATA du WS2812
#define LEDCOUNT   92       // Nombre de LED du WS2812 utilisé
#define SHOWDELAY  20       //200 délai (en m/s) avant l'allumage (à reporter dans Hyperion)
#define BAUDRATE   500000    // Serial port 500000 étant prévu pour Arduino
#define BRIGHTNESS 100        // Max. luminosité en % (d'origine à 95)

const char prefix[] = {0x41, 0x64, 0x61, 0x00, 0x5B, 0x0E};  // = 91 LED indiqué par BoblightConfigMaker
char buffer[sizeof(prefix)]; // Temp buffer for receiving prefix data 

// Init LED strand, WS2811/WS2912 specific

// These might work for other configurations:
//   NEO_KHZ800  800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
//   NEO_KHZ400  400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
//   NEO_GRB     Pixels are wired for GRB bitstream (most NeoPixel products)
//   NEO_RGB     Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)

Adafruit_NeoPixel strip = Adafruit_NeoPixel(LEDCOUNT, DATAPIN, NEO_GRB + NEO_KHZ800);

int state;                   // Define current state
#define STATE_WAITING   1    // - Waiting for prefix
#define STATE_DO_PREFIX 2    // - Processing prefix
#define STATE_DO_DATA   3    // - Handling incoming LED colors

int readSerial;           // Read Serial data (1)
int currentLED;           // Needed for assigning the color to the right LED

void setup()
{
  strip.begin();            // Init LED strand, set all black, then all to startcolor
  
  strip.setBrightness( (255 / 100) * BRIGHTNESS );
  
  setAllLEDs(BLACK, 0);
  setAllLEDs(STARTCOLOR, 5);
  
  Serial.begin(BAUDRATE);   // Init serial speed
  
  state = STATE_WAITING;    // Initial state: Waiting for prefix
}


void loop()
{
  switch(state)
  {
    case STATE_WAITING:                  // *** Waiting for prefix ***
      if( Serial.available()>0 )
      {
        readSerial = Serial.read();      // Read one character
        
        if ( readSerial == prefix[0] )   // if this character is 1st prefix char
          { state = STATE_DO_PREFIX; }   // then set state to handle prefix
      }
      break;
      
      
    case STATE_DO_PREFIX:                // *** Processing Prefix ***
      if( Serial.available() > sizeof(prefix) - 2 ) 
      {
          Serial.readBytes(buffer, sizeof(prefix) - 1);
          
          for( int Counter = 0; Counter < sizeof(prefix) - 1; Counter++) 
          {
            if( buffer[Counter] == prefix[Counter+1] ) 
            {
              state = STATE_DO_DATA;     // Received character is in prefix, continue
              currentLED = 0;            // Set current LED to the first one
            }
            else 
            {
              state = STATE_WAITING;     // Crap, one of the received chars is NOT in the prefix
              break;                     // Exit, to go back to waiting for the prefix
            } // end if buffer
          } // end for Counter
      } // end if Serial
      break;
      
      
    case STATE_DO_DATA:                  // *** Process incoming color data ***
      if( Serial.available() > 2 )       // if we receive more than 2 chars
      {
        Serial.readBytes( buffer, 3 );   // Abuse buffer to temp store 3 charaters
        strip.setPixelColor( currentLED++, buffer[0], buffer[1], buffer[2]);  // and assing to LEDs
      }
  
      if( currentLED > LEDCOUNT )        // Reached the last LED? Display it!
      {
          strip.show();                  // Make colors visible
          delayMicroseconds(SHOWDELAY);  // Wait a few micro seconds
          
          state = STATE_WAITING;         // Reset to waiting ...
          currentLED = 0;                // and go to LED one
          
          break;                         // and exit ... and do it all over again
      }
      break; 
  } // switch(state)
  
} // loop


// Sets the color of all LEDs in the strand to 'color'
// If 'wait'>0 then it will show a swipe from start to end
void setAllLEDs(uint32_t color, int wait)
{
  for ( int Counter=0; Counter < LEDCOUNT; Counter++ )      // For each LED
  {
    strip.setPixelColor( Counter, color );      // .. set the color

    if( wait > 0 )                        // if a wait time was set then
    {
      strip.show();                     // Show the LED color
      delay(wait);                      // and wait before we do the next LED
    } // if wait
    
  } // for Counter
  
  strip.show();                         // Show all LEDs
} // setAllLEDs

On indique la pin Arduino connecté à DATA du ruban.

La vitesse du port à 500000 n’est pas conventionnel mais est adapté (d’après ce que j’ai compris) à la fréquence de fonctionnement d’Arduino.

La valeur hexa décimal à indiqué dans le code et qui doit correspondre (en autre) au nombre de LED utilisé. La calcul de cette valeur n’est pas très glamour :https://hyperion-project.org/threads/communication-issues-between-raspberry-and-arduino.507/
41, 64, 61 00 (les 4 premier byte ne changent pas)
ensuite, nombre de LED-1 en hexa, 92-1 = 5B
ensuite, la valeur XOR de 55 et de la valeur précédente (5B) E

Pour ma part, ça ne m’a pas aidé. Jai donc utilisé le logiciel BobLight ConfigMaker , prévu à la base pour le système BobLight.

La grosse ruse est que j’ai du indiqué dans ConfigMaker une valeur de LED inférieur de 1 au nombre réel de LED utilisé. Peut être du fait d’un calcul qui ne prend pas en compte la LED numéro 0 ?!?

Le GND d’Arduino est connecté au GND de l’alimentation des LED. L’alimentation d’Arduino est donc fourni par l’USB venant du raspberry.

Pour infos, chaque LED consomme environ 60 mA (si les 3 couleurs sont allumés ensemble), prévoir donc une alimentation en conséquence mais si dans mon cas, avec une alim de 2.5A ça fonctionne ?!?

Hyperion et Openelec

Hyperion est le système qui va gérer la liaison et les gestion des LED entre Openelec et Arduino.

Il faut donc l’installé sur le raspi qui contient Openelec.

On commence par rendre le dossier Flash accessible en écriture.

mount -o remount,rw /flash

On télécharge l’overlay qui gérera les sorties vers les leds

cd /flash/overlays/
curl -L --output enable-spi-overlay.dtb --get https://dl.dropboxusercontent.com/u/3669512/temp/enable-spi-overlay.dtb

on va ensuite modifier le fichier config.txt (présent sur la carte SD) pour activer le bus SPI

nano /flash/config.txt

A la fin du fichier, on rajoute les lignes suivantes:

device_tree_overlay=overlays/enable-spi-overlay.dtb
dtparam=spi=on

On reboot ensuite le raspberry

reboot

On télécharge et installe ensuite hyperion pour Raspi:

curl -L --output install_hyperion.sh --get https://raw.githubusercontent.com/tvdzwan/hyperion/master/bin/install_hyperion.sh
sh ./install_hyperion.sh

Hyperion démarre automatiquement avec Openelec, aucun de ses réglages n’est accessible depuis ce dernier.

Problème avec la version 8 de OpenElec

Le passage de la version 7 à 8 à supprimer 2 librairie de Openelec (/usr/lib/), indispensable pourtant à Hyperion :

  • libfontconfig.so.1.9.2
  • libfreetype.so.6.13.0

Comme ce dossier est protégé en écriture, il faut les mettre dans le dossier : /storage/hyperion/bin.
MAIS la ruse est qui faut les renommer en :

  • libfontconfig.so.1
  • libfreetype.so.6

pour que ça fonctionne ??

LibrairieHyperion
Source

Hyperion

Tout ce fait via le logiciel HyperionCron, écrit an JAVA, à installer sur un PC ou autre donc.

Un tuto en Français est disponible pour le réglages précis des LED :

On indique la rubrique  Hardware :

type = Adalight c’est la librairie Arduino

Output = /dev/ttyACM0, c’est la sortie USB du raspi
Le port tty peut être trouvé en débranchant/branchant l’Arduino et taper la commande : dmesg -s 1024 pour le Raspi.
Cela affiche les derniers log du Raspi.

baudrate = 500 000, comme indiqué dans le code Arduino

delay = 20, j’ai mis pareil que dans le code Arduino mais je ne sais pas si c’est pertinent.

RGB Byte order = RGB

Le nombre de LED

direction = Le sens du ruban

1st LED offset = La position de la LED de départ

image process = la surface qui va détecter les couleurs sur l’écran, à tester donc.

Blackborder detection = 20, c’est pour qu’il détecte les bords de la vidéo même avec des bandes noir en haut et bas.

La rubrique Process permet de modifier la transition des couleurs et leurs valeurs.

Le paramètre Smoothing permet d’avoir un allumage des LED moins rapide. En cas d’éclair à l’image par exemple, pour avoir un rendu plus naturel.

Dans la rubrique grabber, cocher enabled. Je n’ai pas creusé plus les paramètres.

dans la rubrique external, cocher Kodi checker et indiquer l’adresse IP du raspi.

La rubrique SSH permet d’envoyer la configuration créé directement dans le Raspberry, dans le dossier /storage/.config/

Pour cela, il faut indiquer l’adresse IP de son Raspi, le username Openelec (root), le password (openelec) puis faire « connect ».

Penser à bien cliquer sur « Create Hyperion Configuration » avant d’envoyer cette configuration, via « Send config« .

Faire stop et start pour actualiser la config.

A noter que « inst/upd Hyperion » permet d’installer et de mettre à jour Hyperion sur le Raspi.

Voila, si pas d’erreur, à l’ouverture d’OpenElec le ruban s’allume en blanc 2  fois  puis selon les couleurs de l’interface choisi pour Openelec.

Raspberry et Arduino

J’ai concocté un support en 3D  permettant d’avoir cote à cote le Raspi et Arduino… dispo sur mon Thingiverse

janvier 19

Ambilight avec Teensy

Ambilight est un système, à base de ruban LED rgb disposé à l’arrière d’une télé, permettant de diffuser des couleurs en rapport avec le contenu de l’image affiché à l’écran.

Ca donne un truc comme ça :

Matériel et logiciel

Disposer le ruban aux 4 bords de la télé, il se découpe et permet de relier les morceaux ensemble via 3 fils à souder.
Faire en sorte que les LED haut/bas et droite/gauche soient alignées.
Le mieux je pense est de les placer sur une plaque ou des liteaux, avec un angle de 45°, fixé derrière la télé.
Chaque bloc de LED fond 33 mm, divisé donc la largeur et hauteur de la télé par cette valeur afin de placer les led le plus régulièrement possible.

Dans mon système, ma télé est relié à un PC sur lequel j’ai installé le mediacenter Kodi.

IMPORTANT : Le ruban à un sens, indiqué par une flèche. Mettre la 1er LED sur le ruban haut ou bas.

  • Le mico-controller Teensy 3.2 (le Teensy LC ne fonctionne pas)
  • L’adaptateur OctoWS2811, qui permet la liaison entre les LED et le teensy, via un connecteur RJ45
  • les logiciels Arduino et TeensyDuino
  • La librairie OctoWS2811 pour Adalight
  • Le logiciel Ambibox

Connecter le Teensy en USB au PC et charger la librairie OctoWS2811/Adalight dans Arduino.
Indiquer simplement le nombre de LED utiliser.

  • Une alimentation « solide » à calculer en fonction du nombre de LED utilisé.
Dans mon système, j’utilise 94 LED :
calculer 0.06A par LED + 20%
84 * 0.06 = 5A + 20% = 6,7A
Pour ma part, j’utilise la sortie 5V de l’alim du PC, qui alimente aussi le Teensy via USB

Connexion

+5V et 0V de l’alim vers le ruban LED
data 01 et 0V du RJ45/Octo vers le ruban LED (Normalement fil orange/blanc et orange)

Teensy rélié à l’USB du PC

Ambibox

C’est le logiciel qui permet de faire comprendre au Teensy/Octo/Adalight que l’image que renvoie le PC doit être coordonné au LED.
Son interface est une horreur d’ergonomie et de clarté mais on arrive à ses fins.

IMPORTANT :  via le panneaux de configuration/gestionnaire de périphériques, noter le numéro du port COM attribué au Teensy.
Ce numéro est à indiquer dans Ambibox.

Plusieurs possibilités son disponible, permettant d’afficher une couleur sur toutes les LED (pratique pour un test), de détecter l’image du PC, selon différent mode qui influenceront sur la latence des LED et/ou le consommation du CPU.
Un mode permet aussi de le lier seulement à Kodi, via une extension à installer sur ce dernier.

  • Indiquer le nombre de LED total
  • le numéro du port COM du Teensy
  • Le sens du ruban
  • Un raccourci pour « backlight », qui permettra d’allumer/éteindre le système.

Cliquer sur « More settings » pour avoir accès au bouton « Wizard capture zone » (qui peut être masqué par une zone qui ce place devant le bouton).

Indiquer le nombre de LED haut/bas (il doit en avoir le même nombre) et droite/gauche.
Attention Ambibox rajoute les LED du bout du ruban haut/bas au LED du ruban droite/gauche.
Dans mon cas, j’ai 29 LED haut/bas et 18 droite/gauche (29+29+18+18=94) MAIS je doit indiquer 20 pour droite/gauche ?!?

Faire « apply », à noter que si on revient ensuite dans « Wizard… » les paramètres précédemment  rentrés ne sont pas indiqués.
Mais, si on fait un test avec « troublesootting » on voit que les valeurs ont bien été appliqués ?!?

Ambibox est vraiment obscure !

Notes

Le mode Screen capture permet d’avoir n’importe quelle logiciel qui active ambilight, même Kodi sans extension dédié.
MAIS si Windows est en mode non aero (graphique au minimum), il ne réagit pas.

 

Aide

Catégorie : Teensy/Arduino | Commenter