Contrôleur bandeau LED WiFi Magic Home Pro et Jeedom

Suite à un achat pour ajouter une lumière décorative à un bureau, j’en ai profité pour commander un contrôleur WiFi de bandeau LED. Celui-ci (chinois…) fonctionne avec l’application MagicHomePro.

Ce type de contrôleur est géré dans Home-Assistant via une librairie python « flux_led ». A priori, cela serait également géré par un plugin jeedom WiFilightV2 (payant). Mais impossible de savoir avant s’il est bien géré car le plugin ne gère que les contrôleurs RGBW/RGBWW. Evidemment, le mien n’est que RGB…

Installation préalable et configuration hors jeedom

  1. Installer le bandeau LED physiquement, faire le collage, les pliages éventuels
  2. Configurer le contrôleur de bandeau LED avec l’application Magic Home PRO. Le mode local est suffisant.
  3. Fixer l’adresse IP du contrôleur de bandeau LED dans votre routeur.

J’ai l’avantage d’avoir un routeur sous openwrt. J’ai donc décider de donner un nommage fixe à mon bandeau led, cela me sera utile plus tard. Mon bandeau led est nommé « bandeau-led-1.lan« . Si ce n’est pas le cas, pensez bien à noter l’adresse IP de votre (vos) bandeaux leds.

Configuration jeedom

Se connecter sur jeedom via ssh (puTTy, mobaxterm) pour installer les modules python3 flux_led et webcolors.

sudo pip3 install flux_led
sudo pip3 install webcolors

On en profite pour tester l’allumage (-1) et l’extinction du bandeau led (-0) via la ligne de commande. C’est une étape indispensable, si cela ne fonctionne pas, impossible de contrôler votre bandeau avec jeedom…

flux_led bandeau-led-1.lan -1
flux_led bandeau-led-1.lan -0

Voir l’aide de flux_led pour les autres paramètres éventuels

Par exemple, on peut une fonction de changement de couleur (en rouge)

flux_led bandeau-led-1.lan -c "#FF0000"

En l’état actuel on peut déjà utiliser le plugin script pour exécuter les commandes On / Off, et changement de couleur.

Pour cela, depuis le plugin script on crée un nouvel équipement, et dans l’onglet commandes on crée 3 commandes distinctes de type script

  • Une commande action « On » avec la requête flux_led bandeau-led-1.lan -1
  • Une commande action « Off avec la requête flux_led bandeau-led-1.lan -0
  • Une commande action « Color » de type action/couleur avec la commande flux_led bandeau-led-1.lan -c « #color# »

C’est pas mal… Mais il nous manque un retour d’état. Et mauvais point de flux_led, il n’y a pas de commande dans flux_led pour renvoyer l’état…

Mais après tout, comme on a commencé à faire un script, il est temps de passer au niveau 2 : on va créer notre propre script python en faisant appel aux classes de flux_led.

Script de retour d’état

Pour créer un script depuis jeedom, rien de plus simple. On crée une nouvelle commande (Etat) depuis l’équipement de type script info / numérique. Oui, numérique, impossible d’utiliser le retour binaire dans Jeedom… Dans la partie requête on clique sur l’icône verte « nouveau ». J’ai nommé mon script valueBandeau.py mais vous pouvez l’appeler comme bon vous semble.

Voilà un exemple de script. Il n’est pas super propre, il faudrait encadrer l’appel à WifiLedBulb avec un try catch et une gestion des erreurs pour renvoyer autre chose… bref… Le script est assez simple, et prend un seul paramètre : l’adresse IP ou nom

!/usr/bin/env python3
 from flux_led import *
 from argparse import ArgumentParser
 def main():
         parser = ArgumentParser(description='Return status of a WiFi LED controler.')
         parser.add_argument('ip',help='IP of WiFi LED controler')
         args = parser.parse_args()
         bulb1 = WifiLedBulb(args.ip)
         bulb1Status = bulb1.isOn()
         if bulb1.isOn():
                 print("1")
         else:
                 print("0")
 if name == 'main':
         main()

Une fois le script sauvegardé, il faut ajouter l’adresse IP ou nom DSLAN en paramètre.

Dans mon cas, cet appel est :

/var/www/html/plugins/script/data/valueBandeau.py bandeau-led-1.lan

Reste ensuite à mettre en place la partie widget. Mais je vous laisse faire ce que vous voulez. Exemple chez moi :

Et voilà, un bandeau LED intégré pour quelques heures de travail.

Xiaomi thermomètre Mija bluetooth LYWSD03 dans jeedom

Suite à une promotion récente dans dealabs je me suis commandé plusieurs petits thermomètres LYWSD03. (Lot de 4 Thermomètres connectés Xiaomi Mijia Bluetooth 2 hygromètre – Dealabs.com)

en vrai ils sont minuscules 😉

Ces thermomètres bluetooth sont très bien gérés dans home assistant et je pensais naïvement que c’était également le cas dans jeedom, vu qu’ils étaient présents dans la Documentation Jeedom. Et même dans le documentation de compatibilité, aucune précision 🙁 Jeedom compatibility

Alors oui, cela fonctionne mais au bout de quelques heures… plus rien. Et la batterie fond comme neige au soleil. C’est de saison…

Heureusement, certains utilisateurs de jeedom ont résolus le problème 🙂

Ces thermomètres utilisent un système de chiffrement avec une clé définie lors de l’appairage à l’application Xiaomi Home.

La méthode pour rajouter (proprement) les LYWSD03 dans Jeedom et de récupérer la clé d’appairage (bind key) via ce flasher web… Si votre PC a une clé bluetooth évidemment.

Telink Flasher (atc1441.github.io)

Dans cette fenêtre, il faut cliquer sur le bouton connect, puis sélectionner l’équipement bluetooth à relier; Ensuite il faut cliquer sur le bouton « Do activation ». La clé qui nous intéresse sera dans le champ « Mi Bind Key »

Attention, cette clé change à chaque activation. Une fois la clé récupérée, il faut donc « déconnecter » le thermomètre de la page. Le plus simple, faire CTRL+ »F5″ pour recharger la page. Si vous avez plusieurs thermomètres, il faut refaire la manipulation en sélectionnant le bon thermomètre.

Une fois ceci fait, il faut aller modifier dans la partie bluetooth de jeedom sur la machine principale. Il faut se connecter en SSH à la machine hébergeant jeedom (Depuis windows : puTTY, mobaxterm).

sudo pip3 install pycryptodomex
cd /var/www/html/plugins/blea/resources/blead/devices/
sudo mv lywsd03.py lywsd03.py.old
sudo cv lywsd03.py_with_bindkey lywsd03.py
sudo nano lywsd03.py

On modifie alors la variable keys en associant chacune des MACS bluetooth avec sa clé d’appairage. La casse de l’adresse MAC n’est pas importante.

MAIS MAIS ce n’est pas fini. Si on a plusieurs antennes bluetooth, il faut réaliser une opération sur chacune des antennes.

  • Si on a déjà configurer les antennes, il faut se connecter à chacune d’entre elles via SSH et installer MANUELLEMENT le fichier pycryptodomex
sudo pip3 install pycryptodomex
  • Depuis jeedom, il faut démarrer le démon des antennes et vérifier qu’elles récupèrent bien le bon fichier lywsd03.py en regardant le contenu du fichier présent dans le fichier
~/blead/resources/blead/devices/lywsd03.py

Si le fichier n’est pas identique, il faut réinstaller / relancer le démon sur chacune des antennes. On peut également relancer le démon en mode debug et vérifier la présence de logs contenant les infos « LYWSD03——Encrypted »

Mettre en place un contrôle parental sur Open-WRT

Il existe plusieurs méthode pour contrôler les accès des enfants aux réseaux, mais la méthode la plus « simple » est de couper le réseau internet sur les machines pouvant être utilisées par les enfants à certaines heures via le routeur.

ça marche aussi pour les adultes…

Dans OpenWRT, il faut rajouter une règle au firewall et spécifier les équipements n’ayant pas besoin d’accès réseau.

https://openwrt.org/docs/guide-user/firewall/fw3_configurations/fw3_parent_controls

Inconvénients de cette méthode : en cas de changements d’appareils, il ne faut pas oublier de modifier la règle et surtout si on a besoin (temporairement) de bypasser la règle, c’est pas facile de la modifier à la volée, mais ça reste faisable.

Mais il est possible de mettre en place des scripts on/off depuis l’extérieur, par exemple depuis jeedom:

Voir le topic suivant qui précise la démarche.

Vu mon besoin actuel, je n’ai pas testé les scripts on/off. Par contre, le contrôle parental fonctionne bien et m’a été d’un grand secours au cours de 2020 !

Personnaliser la taille des icones Jeedom dans les widgets

Alors ce tutorial n’est pas pour tout le monde. Dans jeedom V4, il est possible de créer des widgets personnalisés assez facilement, et de réutiliser les icônes standard de jeedom.

Oui, mais on se retrouve confronté à un problème (de taille ahahah) assez vite. En effet, les icônes standard ne sont pas redimensionnables « facilement ».

Donc avec, par exemple un widget d’alarme on se retrouve avec ça

Un développeur web a fourni une méthode en passant par les CSS avancées, mais cela reste compliqué.

https://community.jeedom.com/t/modifier-taille-icone-widget-en-v4/14135/11

Mais il existe une autre méthode un poil plus simple… on peut directement écrire le CSS dans le widget.

L’astuce est d’insérer dans la balise <i> le code suivant

style="font-size 60px"

Ce qui fait que dans mon cas l’image devient

<i class='icon jeedomapp-lock-home icon_red' style="font-size: 60px"></i>

Youpi!

Gestion avancées des photos depuis Plex

Plex est un super outils pour la gestion des vidéos, pour l’audio (surtout avec plexamp), pour la télé (les flux IPTV de free fonctionnent très bien via xTeve!). Pour les utilisateurs payants, c’est un produit qui vaut le coup et qui a peu de concurrence (emby…)

Et parmi tout ça. Plex permet également de gérer des photos.

Bon, là, faut être honnête, c’est pas terrible terrible. Les photos peuvent avoir des autotags à la « Google Photo » mais … rien de génial.

Rien que l’export d’une sélection de photos est à s’arracher les cheveux. D’ailleurs, ça tombe bien, c’est l’objectif de cet article 🙂

Prérequis : plex, des photos

Attention, le plugin n’a plus de suivi car Plex a décidé d’arrêter le support des plugins… mais ils continuent pour l’instant de fonctionner.

  • Etape 2 : Dans votre compte plex, sélectionner les photos que vous voulez exporter et (c’est le plus important!!!) leur ajouter un tag spécial. Par exemple « mon_beau_voyage »
Ah les voyages…
  • Etape 3 : Dans plex, il faut créer une playlist automatique à partir du tag « mon_beau_voyage »
  • Etape 4 : via le plugin WebTools exporter la playlist au format m3u

Il faut se rendre sur l’url du plugin webtools (par défaut : http://<nomserveur>:33400 ), puis dans la page « playlist ». Sélectionner la playlist automatique

  • Etape 5: extraire la liste des noms de fichiers du m3u

Chacun sa méthode, mais comme je suis linuxien via windows, j’utiliser mobaxterm, un petit script comme

cat playlist.m3u | grep "path=" | sort -u  > liste_photos.txt
  • Etape 6 : Recopier la liste des photos dans un dossier à part. J’insiste sur le recopier. On ne déplace pas ces photos pour rien 😉
  • Etape 7 : Faites ce que vous voulez des photos. Vous pouvez par exemple les transférer sur photobox.fr pour faire un magnifique album de vacances. Tadam!

Bon alors, c’était pas si compliqué que ça non ?

Oui bon, d’accord, c’est quand même bien infernal pour juste exporter 30 photos.

Et sinon, plex, c’est quand que tu décides à rajouter un fichu bouton exporter?