Outils pour utilisateurs

Outils du site


script_post_auto_image_mastodon

Poster des images sur mastodon à partir d'un raspberry pi équipé d'une Picam

Pour surveiller la tortue hermann de ma fille lors de nos absences et m'amuser j'ai codé un petit script qui publie des images à intervalles réguliers sur un compte mastodon dédié.

Pour cela, je me suis basé sur madonctl, une app en GO permettant d’interagir avec mastodon en ligne de commande. Elle est installée sur un raspberry pi zero w équipé d'une Picam chinoise sous raspbian. Les photos sont prisent via la commande raspistill. Le script est lancé toutes les heures via un cron classique. Il est aussi très possible de l'améliorer ou de le simplifier.

Le script:

La première version était lancée toutes les heures via un cronjob et la prise de vue se faisait si la plage horaire était celle où les lampes du terrarium étaient allumées via les conditions du “if”.

C'est celle-ci:

Version basée sur une plage horaire

#!/bin/bash
 
#Diverses variables:
#m qui représente 9h00 du matin, s qui représente 23h00
m=9
s=23
#h l'heure système au lancement du script
#M la valeur des minutes au lancement du script
h=$(date +%H)
M=$(date +%M)
#k juste pour nommer les photos prises par la Picam
k=koopa
 
#On vérifie que l'on est bien entre 9h00 et 23h00
if [ "$h" -gt "$m" ] && [ "$h" -lt "$s" ];
 
then
 
        #On se place dans le /home de l'utilisateur pi
        cd /home/pi/
 
        #On lance la prise de vue en indiquant la taille de l'image de sortie avec -w et -h puis on indique où la stocker et sous quel nom
        raspistill -w 987 -h 740 -o /home/pi/bot/$k.jpg
 
 
         #On poste l'image sur mastodon avec un petit texte d'accompagnement. J'ai choisi d'y indiquer l'heure en me servant des varaibles
         #ci-dessus.
         /home/pi/go/bin/madonctl toot "Hello, I'm #$k. It's $h : $M" --file /home/pi/bot/$k.jpg
 
         #Enfin on supprime la photo prise.
         rm /home/pi/bot/$k.jpg ;
 
 
 
fi

Version utilisant Home Assistant

Depuis la tortue vit dehors, et les lampes du terrarium sont remplacées par le soleil. Pour adapter chaque jour les heures de début et de fin des plages de prises de vue, j'ai décidé de me baser sur l'API de mon instance Home Assistant qui propose une valeur qui indique si le soleil est levé ou couché (“above_horizon” pour levé, “below_horison” pour couché).

L'entity_id est appelée “sun.sun”:

{
    "entity_id": "sun.sun",
    "state": "above_horizon",
    "attributes": {
        "next_dawn": "2021-09-08T04:48:16.968508+00:00",
        "next_dusk": "2021-09-07T18:59:46.953285+00:00",
        "next_midnight": "2021-09-07T23:53:29+00:00",
        "next_noon": "2021-09-07T11:53:59+00:00",
        "next_rising": "2021-09-08T05:21:52.340410+00:00",
        "next_setting": "2021-09-07T18:26:15.586092+00:00",
        "elevation": 3.57,
        "azimuth": 84.71,
        "rising": true,
        "friendly_name": "Sun"
    }

Le nouveau script se présente comme ceci:

#!/bin/bash
 
 
#h l'heure système au lancement du script
#M la valeur des minutes au lancement du script
h=$(date +%H)
M=$(date +%M)
 
#k juste pour nommer les photos prises par la Picam
k=koopa
 
#sun est la variable dans laquelle on récupère la valeur dans l'API de Home Assistant via la commande curl
#Pour utiliser l'API il faut demande un token à Home Assistant et le placer après "Bearer" dans la commande. C'est la longue suite de caractères.
#On voit ensuite l'adresse http de l'instance Home assistant, suivi du port, puis de l'emplacement de des informations sur le soleil api/states/sun.sun puis le traitement par jq pour extraire la valeur qui nous intéresse.
 
sun=$(curl -s GET -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9........" http://192.168.X.X:8123/api/states/sun.sun | jq -r .state)
 
 
#Ensuite on lance la prise de vue puis l'envoi sur mastodon si la valeur remontée indique que le soleil est levé
if [ $sun = "above_horison" ]
 
then
 
	cd /home/pi/
 
 
	raspistill -w 987 -h 740 -o /home/pi/bot/$k.jpg
 
 
 
	/home/pi/go/bin/madonctl toot "Hello, I'm #$k. It's $h : $M" --file /home/pi/bot/$k.jpg
 
	rm /home/pi/bot/$k.jpg ;
 
 
 
fi

Le résultat est visible sur le compte de Koopa sur botsinspace.

script_post_auto_image_mastodon.txt · Dernière modification: 2021/09/08 16:35 de tom23