まこと の ブログ

MaKoTo no burogu — Journal de bord…

Aller au contenu | Aller au menu | Aller à la recherche

dimanche, 3 juillet 2022

Tempéro, thermomètres connectés -02-

Précédemment sur makotoworkshop.org… :

À priori, non, tu ne met pas ton capteur de DHT22 dehors « comme ça », et encore moins accroché au mur de ta fenêtre.

C'est ce que j'ai assez vite déduit aux vues des résultats de recherche sur Thingiverse, en quête d'inspiration pour un modèle de boîtier.
En effet, il semble finalement assez logique de se tenir aussi éloigné que possible des murs du bâtiment, au risque sinon de se retrouver à mesurer la T° résiduelle emmagasinée par celui-ci, et malgré ça, on ne peut pas non plus imaginer laisser le capteur cuire en plein soleil…

Une fois de plus ce fût l'occasion d'apprendre de nouvelle choses, et en cela, l’existence du « Stevenson shelter », un abris ventilé dans lequel on place les instruments de mesure pour les protéger du soleil tout en les laissant prendre le vent.

J'ai pu trouver le modèle qui me convenait et de l'adapter à mon besoin en le « remixant » en Stevenson shelter pour balcon.

  • Arès avoir imprimé toutes les pièces déterminantes en blanc, évidemment ici pour profiter de l'effet albédo, j'ai fait un essai d'assemblage de la soucoupe du bas avec la glissières.



Grâce aux tête fraisées des vis la glissière fait son office correctement.

  • Les trous de cette soucoupe sont plus petits et destinés à être taraudés donc, pour accueillir les vis de ⌀4 mm.


  • Ensuite collage du mille-feuille en m'aidant des trous prévus à l'origine pour des tiges filetées afin de bien aligner les pièces. Le capteur DHT22 ainsi fixé à son support vient se loger au centre :


  • Reste à visser la glissière en place.


  • Une fois la seconde partie de la glissière fixée à la rambarde du balcon à l'aide de serre-câbles, il suffit de glisser notre stevenson shelter en place et de ligaturer une attache dans la boucle prévue pour éviter qu'il ne bouge.



À suivre…

dimanche, 26 juin 2022

Tempéro, thermomètres connectés -01-

Ayant pu expérimenter les capteurs de température dans le but de réguler la température interne des bornes jubeat et Sound Voltex, la thématique estivale des températures records aidant, j'ai eu envie de m'essayer à bricoler une petite station météo partielle, sachant que le boulot serait pas mal inspiré de mes précédents travaux sur l'anémomètre (la version WiFi)

Partielle car il manquerait un pluviomètre et l'absence d'anémomètre va permettre je pense l'utilisation d'une alimentation sur batterie solaire, mais nous étudierons cela plus tard, commençons déjà par expérimenter.

Câblage :

Un capteur DHT22 est situé à l'intérieur de l'habitat.
Un autre capteur DHT22 est placé à l'extérieur de l'habitat.
Tous deux connectés sur un NodeMCU (plaquette à base d'esp8266) chargé d'envoyer les valeurs de températures et d'humidité sur un afficheur LCD connecté en I²C, et également sur un serveur web influxDB + Grafana pour tracer des courbes dans le temps.


  • Voici la maquette câblée, avec le module I²C bien pratique, soudé au dos de l'afficheur LCD :



Programme :

  • Le code utilisé est disponible en annexe du billet[1] et sur mon github.

https://github.com/makotoworkshop/nodeMCU_tempero_AlimSecteur.

  • J'attire cependant l'attention du bidouilleur attentif.

En effet le code utilisé dans le fichier ESPinfluxdb.cpp n'est plus compatible avec la librairie de carte disponibles dans l'Arduino IDE que j'utilise pour programmer le nodeMCU.
Pour disposer de la carte NodeMCU 1.0 (ESP-12E Module) dans l'IDE il faut avoir au préalable chargé la carte, ce qui se fait en deux temps :

1 - Ajouter l'adresse https://arduino.esp8266.com/stable/package_esp8266com_index.json à la case URL de gestionnaire de cartes supplémentaires depuis le menu Fichier > Préférences > onglet Paramètres.
2 - Ajouter la carte depuis le menu Outil > Type de carte > Gestionnaire de Carte, puis

rechercher esp8268 et on trouve esp8268 by ESP8266 Community dont la dernière version est la 3.0.1, et qui refuse de compiler le code dudit fichier avec des erreurs à base de machin « deprecated blablabla use WiFiClient… ».
J'ai eu beau modifier le code, je ne suis pas parvenu à circonscrire les erreurs de compilation, aussi j'ai rétrogradé à la version 2.4.2, celle-là même qui fonctionnait à l'époque de mes bricoles avec l'anémomètreWiFi.


Au démarrage du programme, différents messages s'affichent pour indiquer la connexion au WiFi, puis la connexion à la base de donnée influxDB, ainsi qu'un avertissement en cas de problème avec les capteurs.

  • Ensuite on devrait obtenir ceci :



Traceur de courbe :

  • Synoptique de principe :

Mon tuto de l'époque reste relativement adéquat, aussi je vous renvoie aux sections Configuration de la Base de données et Configuration de la Grafana de celui-ci.
Grafana a quelque peu évolué depuis, et certaines captures d'écrans ne sont plus bonnes, mais l'essentiel y est, flemme d'en refaire de nouvelles.

  • Voici ce qu'on peut obtenir avec un peu de temps à configurer les graphes :



À suivre…

Note

[1] Voir ci-dessous

samedi, 25 juin 2022

Quand la mise à jour de Peertube crashe salement…

Il m'est arrivé des mésaventures avec les mises à jour de logiciel sur yunohost, et souvent les problèmes se résolvent par une restauration de l'application, et de prévenir en déclarant une issue sur le github yunohost dédié à l'applicatif, pour ensuite patienter le temps que le problème soit résolu et de retenter une mise à jour.

Par contre, la mise à jour de peertube, grosse appli, m'a plusieurs fois pété à la tronche, et j'ai donc déployé un tas de précautions que je m'en vais décrire ici, vu qu'une fois de plus j'ai passé 2h à réparer mon instance peertube, l'occasion de parfaire ma procédure.


Précautions avant mise à jour:

  • Avant la mise à jour, il faut déplacer les données vidéo, sinon elles sont prise dans le backpup Yunohost et ça met des plombes, en plus de prendre un espace disque monstre (80 Gio pour moi en ce moment).

Alors je sais qu'il est possible de demander une sauvegarde via la commande spéciale suivante, mais ça n'a jamais fonctionné pour peertube (et je n'ai pas retenté depuis un bail) :

sudo BACKUP_CORE_ONLY=1 yunohost backup create --apps peertube

Et quand bien même, le processus de mise à jour fera quand même le backup complet (j'ignore s'il existe une commande pour le modifier).
Donc je fais comme ceci :

sudo du -sh /home/yunohost.app/peertube/storage/
sudo mv /home/yunohost.app/peertube/storage/videos/ /home/tmp/
sudo mv /home/yunohost.app/peertube/storage/streaming-playlists /home/tmp/
sudo mv /home/yunohost.app/peertube/storage/logs/ /home/tmp/
sudo mv /home/yunohost.app/peertube/storage/thumbnails/ /home/tmp/
sudo mv /home/yunohost.app/peertube/storage/avatars/ /home/tmp/
sudo du -sh /home/yunohost.app/peertube/storage/
  • Ensuite on va sauvegarder la base de donnée, plutôt 3 fois qu'une !

via PG_dump au format texte : (si vous ne connaissez-pas le mot de passe, lire ceci.)

sudo pg_dump --file /home/tmp/peertubeBasePostgreSQL_$(date '+%Y-%m-%d').txt -d peertube_peertube -U peertube

via PG_dump au format tar :

sudo pg_dump --format=tar --file /home/tmp/peertubeBasePostgreSQL_$(date '+%Y-%m-%d').tar peertube_peertube -U peertube

Manuellement, méthode pelleteuse :

sudo service postgresql stop
sudo cp -a /var/lib/postgresql/ /home/tmp/postgresql.bak
sudo service postgresql start


La mise à jour:

  • Lancer la mise à jour par la commande
sudo yunohost app upgrade peertube

Je ne le fais plus par l'interface web, l'opération est trop lourde et inbuvable…

Après la mise à jour:

  • Il faut donc remettre les données vidéos :
sudo mv /home/tmp/videos /home/yunohost.app/peertube/storage/
sudo mv /home/tmp/streaming-playlists/hls/* /home/yunohost.app/peertube/storage/streaming-playlists/hls
sudo rmdir /home/tmp/streaming-playlists/hls/
sudo rmdir /home/tmp/streaming-playlists/
  • Et les vignettes :
sudo mv /home/tmp/logs/* /home/yunohost.app/peertube/storage/logs
sudo rmdir /home/tmp/logs/
sudo mv /home/tmp/thumbnails/0* /home/yunohost.app/peertube/storage/thumbnails
sudo mv /home/tmp/thumbnails/1* /home/yunohost.app/peertube/storage/thumbnails
sudo mv /home/tmp/thumbnails/2* /home/yunohost.app/peertube/storage/thumbnails
sudo mv /home/tmp/thumbnails/3* /home/yunohost.app/peertube/storage/thumbnails
sudo mv /home/tmp/thumbnails/4* /home/yunohost.app/peertube/storage/thumbnails
sudo mv /home/tmp/thumbnails/5* /home/yunohost.app/peertube/storage/thumbnails
sudo mv /home/tmp/thumbnails/6* /home/yunohost.app/peertube/storage/thumbnails
sudo mv /home/tmp/thumbnails/7* /home/yunohost.app/peertube/storage/thumbnails
sudo mv /home/tmp/thumbnails/8* /home/yunohost.app/peertube/storage/thumbnails
sudo mv /home/tmp/thumbnails/9* /home/yunohost.app/peertube/storage/thumbnails
sudo mv /home/tmp/thumbnails/a* /home/yunohost.app/peertube/storage/thumbnails
sudo mv /home/tmp/thumbnails/b* /home/yunohost.app/peertube/storage/thumbnails
sudo mv /home/tmp/thumbnails/c* /home/yunohost.app/peertube/storage/thumbnails
sudo mv /home/tmp/thumbnails/d* /home/yunohost.app/peertube/storage/thumbnails
sudo mv /home/tmp/thumbnails/e* /home/yunohost.app/peertube/storage/thumbnails
sudo mv /home/tmp/thumbnails/f* /home/yunohost.app/peertube/storage/thumbnails
sudo mv /home/tmp/thumbnails/p* /home/yunohost.app/peertube/storage/thumbnails
sudo rmdir /home/tmp/thumbnails
sudo mv /home/tmp/avatars/0* /home/yunohost.app/peertube/storage/avatars
sudo mv /home/tmp/avatars/1* /home/yunohost.app/peertube/storage/avatars
sudo mv /home/tmp/avatars/2* /home/yunohost.app/peertube/storage/avatars
sudo mv /home/tmp/avatars/3* /home/yunohost.app/peertube/storage/avatars
sudo mv /home/tmp/avatars/4* /home/yunohost.app/peertube/storage/avatars
sudo mv /home/tmp/avatars/5* /home/yunohost.app/peertube/storage/avatars
sudo mv /home/tmp/avatars/6* /home/yunohost.app/peertube/storage/avatars
sudo mv /home/tmp/avatars/7* /home/yunohost.app/peertube/storage/avatars
sudo mv /home/tmp/avatars/8* /home/yunohost.app/peertube/storage/avatars
sudo mv /home/tmp/avatars/9* /home/yunohost.app/peertube/storage/avatars
sudo mv /home/tmp/avatars/a* /home/yunohost.app/peertube/storage/avatars
sudo mv /home/tmp/avatars/b* /home/yunohost.app/peertube/storage/avatars
sudo mv /home/tmp/avatars/c* /home/yunohost.app/peertube/storage/avatars
sudo mv /home/tmp/avatars/d* /home/yunohost.app/peertube/storage/avatars
sudo mv /home/tmp/avatars/e* /home/yunohost.app/peertube/storage/avatars
sudo mv /home/tmp/avatars/f* /home/yunohost.app/peertube/storage/avatars
sudo rmdir /home/tmp/avatars
  • Si tout est bon, on pourra effacer les backups :
sudo rm -R /home/tmp/postgresql.bak
sudo rm peertubeBasePostgreSQL_*


En cas de crash de la mise à jour:

  • Normalement le processus de mise à jour de yunohost restaure le backup effectué post mise à jour.

L'opération se termine souvent par un message comme celui-ci, indiquant qu'on est revenu en arrière :

666348 Restauration terminée
2022-06-25 11:05:37,729: DEBUG - 666348 action [9697.1] executed in 665.934s
2022-06-25 11:05:37,729: DEBUG - apps:
2022-06-25 11:05:37,729: DEBUG -   peertube: Success
2022-06-25 11:05:37,729: DEBUG - system:
2022-06-25 11:05:37,890: DEBUG - + [[ -d /etc/yunohost/apps/peertube ]]
2022-06-25 11:05:37,890: DEBUG - + ynh_die '--message=The app was restored to the way it was before the failed upgrade.'
2022-06-25 11:05:37,932: WARNING - The app was restored to the way it was before the failed upgrade.
2022-06-25 11:05:38,935: ERROR - Impossible de mettre à jour peertube : Une erreur s'est produite durant l'exécution du script de mise à niveau de l'application

Sauf que !! En fait non, jamaissystématiquement l'erreur 502 s'y met.

Habituellement il suffit de restaurer la base de donnée.

  • Utile : afficher taille de la base, avant et après :
sudo -u postgres psql -c "SELECT pg_size_pretty(pg_database_size('peertube_peertube'));"
  • Il faut jeter l’actuelle base, et en recréer une :
sudo service peertube stop
sudo -u postgres psql -c "DROP DATABASE IF EXISTS peertube_peertube;"
sudo -u postgres createdb -O peertube -E UTF8 -T template0 peertube_peertube
sudo -u postgres psql -c "CREATE EXTENSION pg_trgm;" peertube_peertube
sudo -u postgres psql -c "CREATE EXTENSION unaccent;" peertube_peertube
  • Restaurer ensuite la base, depuis un backup pg_dump au format texte :
sudo psql -d peertube_peertube -U peertube -1 -f /home/tmp/peertubeBasePostgreSQL_2022-06-25.txt  -v ON_ERROR_STOP=1
  • Restaurer ensuite la base, depuis un backup pg_dump au format tar :
sudo pg_restore -U peertube -d peertube_peertube /home/tmp/peertubeBasePostgreSQL_2022-06-25.tar

Aujourd'hui, une nouvelle fois, cette opération n'a pas fonctionné !
Je n'ai plus le message d'erreur sous la main, mais la restauration de la base s'arrête en cours de route, et me laisse au mieux avec une instance peertupe bancale.
Je m'y prend peut-être mal, aussi si vous y voyez une erreur, n'hésitez-pas à me l'indiquer.


En cas de crash, Restauration de la dernière chance:

  • On va remplacer toute les bases à la pelleteuse, en commançant par arrêter peertube et postgresql :
sudo service peertube stop
sudo service postgresql stop
  • Déplacer le dossier des bases courant :
sudo sudo mv /var/lib/postgresql /var/lib/postgresql.hs
  • Copier le backup en place :
sudo cp -a /home/tmp/postgresql.bak/ /var/lib/postgresql
  • Relancer postgresql et peertube :
sudo service postgresql start
sudo service peertube  start
  • Ouf…



Ressources :
- https://www.postgresql.org/docs/8.0/backup.html
- https://public.dalibo.com/exports/formation/manuels/modules/i1/i1.handout.html
- https://www.latavernedejohnjohn.fr/articles/24-logiciel-scripts/217-installation-d-une-instance-peertube-sur-debian-stretch-9-6/

lundi, 6 juin 2022

jubeat -9-

Suite de l'ouvrage précédent :

Maintenant que la peinture est faite, je me suis demandé comment aborder la déco des « sides », avec en arrière pensée la technique classique du vinyle imprimé.

  • La déco imprimée sur un A3 pour se figurer le travail à faire :


Sauf que par expérience, j'ai pu constater qu'une couleur à l'écran et sortie d'imprimante est souvent différente, et c'est d'autant plus vrai pour les couleurs métallisées, sans compter qu'il faudrait passer par une prestation avec tout le délai que cela implique, et les mauvaises surprises de rendu potentielles donc.
J'ai alors pensé à des carrés de vinyle colorés, découpés à la machine, à condition d'aller au FabLab

  • Avec un peu de recul, c'est utile parfois, cette peinture noire là, dans laquelle j'ai tant investi, faudrait être bête pour la recouvrir !

Et puis après réflexion, l'évidence m'est apparue tranquillement… Est-ce que je ne pourrais tout simplement pas mettre à profit mon expérience et les outils de maquettismes, ceux-là même qui m'ont permis d'aller toujours plus loin dans la qualité visée de mes réalisations ?


Décoration des côtés :

J'ai alors sorti mon meilleur ruban de masquage, une peinture aluminium (Gunze Sangyo H8), un réglet et un crayon pour tracer quelques lignes de repères afin de positionner le ruban au mieux.

  • Après avoir terminé les grands carrés, et essayé de faire un petit avec succès…


Lire la suite...

- page 3 de 166 -