Installer Marlin 2.0.7.2 sur la Creality CR-10

Je possède une Creality CR-10 depuis plusieurs années, suite à des problèmes techniques et diverses pannes j’y ai fais de nombreuses modifications.

Ma Creality CR-10 possède entre autre une carte mère et un écran de CR-10S. Lors de l’installation de la carte mère j’avais flashé Marlin 1.9. Récemment j’ai voulu reflasher le firmware pour faire quelques modifs mais impossible de retrouver le fichier source que j’avais utilisé, alors me voilà partie pour flasher Marlin 2.0.7.2 sur ma CR-10.

Première étape : Télécharger Marlin 2.0.x. Ca se passe ici. Ensuite dézipper à l’endroit de sont choix.

Deuxième étape modifier et compiler Marlin. J’ai d’abord testé avec le logiciel Arduino mais un bug m’a empêchée d’aller plus loin. Je me suis donc tournée vers Visual Studio Code.

J’ai utilisé le tutoriel suivant (sans l’installation de Git)

On commence par installer Visual Studio Code (ici)

Une fois VSC installé aller dans les plugins et installer PlatformIO IDE. Surtout bien attendre que PlatformIO soit complètement installé et redémarrer le logiciel.

Dans VSC choisir « Import Arduino Project », choisir le dossier Marlin précédemment téléchargé et choisir l’environnement « Arduino Mega or Mege 2560 or ATMega 2560 (Mega 2560) ».

Dans le projet aller dans « config » et ouvrir le fichier readme.

Marlin met a disposition tout un tas d’exemple de fichiers de configuration en fonction des machines sur le marché. Il faut aller les télécharger à part. L’adresse est dans ce fichier readme.

Fermer VSC.

Une fois le zip contenant les configs téléchargé, le dézipper dans le dossier Marlin / config. Chercher le dossier Creality, puis CR10S et copier les fichier de configuration.

Coller ces fichiers dans Marlin / Marlin

Ouvrir VSC puis se rendre dans le dossier Marlin / Marlin. Le fichier de configuration fourni par Marlin est quasi parfait pour ma CR10.

J’ai seulement modifié les points suivants dans Configuration.h :

  1. Activer « //#define PIDTEMPBED » en supprimant les //
  2. #define DEFAULT_MAX_FEEDRATE { 500, 500, 100, 25 } au lieu de { 2500, 2500, 100, 25 }
  3. Désactiver #define FILAMENT_RUNOUT_SENSOR (je n’en ai pas)

J’ai fais les modifications suivantes dans Configuration_adv.h :

  1. #define WATCH_BED_TEMP_PERIOD 120// Seconds

Une fois les modifications faites on lance le build en appuyant sur l’icone build dans la barre bleue en bas de VSC. L’opération se fait et le firmware est disponible dans le dossier Marlin sous .pio/build/mega2560/. C’est le fichier firmware.hex

Reste ensuite à le flasher sur la CR-10. Pour cela j’ai utilisé octoprint et le plugin Firmware update. Les explications pour configurer Firmware Update sont ici.

Une fois que tout est prêt, connecter la CR-10 à Octoprint pour s’assurer que tout va bien. La déconnecter. Se rendre dans le menu du plugin Firmware Update. Choisir le fichier firmware.hex et flasher.

Après quelques minutes, le firmware est flashé dans la machine et il n’y a plus qu’à l’utiliser.

Je conseille une fois le firmware modifié de calibrer l’extrudeur, le pid, le débit du filament puis les mouvements des axes pour que tous les paramètres soient adaptés à l’imprimante.

Le site Aide et ressources en français pour imprimantes 3D Artillery (docarti.fr) explique tout ça très bien. C’est un site dédié à mon autre imprimante la Sidewinder X1 mais ces explications sont parfaitement adaptables à la Creality CR-10.

Une fois que l’étape de calibration est faite il n’y a plus qu’à s’amuser.

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!