À cĂŽtĂ© de mon travail d’IngĂ©nieur SystĂšme (focus Kubernetes) chez PostFinance, je suis mariĂ© Ă  une agricultrice en Suisse, et vis avec elle et sa famille sur l’exploitation familiale.
Cela me change de mon travail quotidien, et j’ai parfois l’occasion d’aider en donnant par exemple Ă  boire aux veaux lors de la traite, en utilisant mes compĂ©tences pour par exemple installer des camĂ©ras de surveillance, pour dĂ©ployer un rĂ©seau WiFi longue distance Ă  travers l’exploitation, ou encore pour moderniser la surveillance de la traite quotidienne.
C’est ce dernier point que je dĂ©taille aujourd’hui (sans les dĂ©tails techniques, qui seront eux abordĂ©s dans la version anglaise de cette article, et dans le README du projet OpenSource que j’ai crĂ©Ă© pour ce projet).

La traite sur la Ferme

Mon Ă©pouse et sa famille traient quotidiennement 65 vaches laitiĂšres Holstein, Ă  5h30 le matin et Ă  16h30 pour la traite du soir. Les donnĂ©es de la traite sont enregistrĂ©es dans un logiciel appelĂ© Alpro, qui n’a plus Ă©tĂ© mis Ă  jour depuis 2009, et qui ressemble Ă  ça:

Screenshot Alpro Windows

Le logiciel permet d’obtenir un grand nombre d’informations sur les vaches, comme la quantitĂ© de lait pour chaque traite, la quantitĂ© de concentrĂ© distribuĂ© Ă  la vache, la durĂ©e de la traite, le nombre de jours depuis la derniĂšre mise-bas, etc.

Bien que ces donnĂ©es soit intĂ©ressantes, comme le seul moyen d’y accĂ©der est de se connecter Ă  l’ordinateur et de d’utiliser le vieux logiciel Ă  l’interface dĂ©modĂ©e, je me suis intĂ©ressĂ© Ă  essayer d’importer les donnĂ©es de la traite dans une base de donnĂ©es de sĂ©ries chronologiques (en anglais: time-series database), afin de pouvoir ensuite visualiser ces donnĂ©es avec un logiciel moderne et que j’apprĂ©cie au quotidien: Grafana.

Importer les données Access

Pour ce faire, je me suis intĂ©ressĂ© Ă  la base de donnĂ©es employĂ©e par le logiciel Alpro, qui est une base de donnĂ©e Access assez vieille, mais que l’on peut toujours ouvrir avec des logiciels comme MDB/ACCDB viewer sour MacOS, avec Microsoft Access, ou encore avec l’excellent logiciel open-source mdbtools.

Le processus pour sortir les données Access et les convertir au format OpenMetrics/Prometheus est le suivant:

  1. je sauvegarde les fichiers de la base de donnĂ©es Alpro avec le logiciel open-source restic, qui me permet assez facilement de faire une sauvegarde incrĂ©mentale toutes les 15 minutes sur un serveur S3 (en l’occurrence, Cloudflare R2, avec une offre gratuite gĂ©nĂ©reuse), et qui gĂšre automatiquement la rotation des sauvegardes
  2. je télécharge la derniÚre sauvegarde dans un CronJob sous Kubernetes, et je convertis les fichiers Access .mdb en une base de données SQLite
  3. un script python importe les donnĂ©es SQLite avec la librairie pandas, convertit les “timestamps”, filtre les donnĂ©es manquantes/erronĂ©ees, puis gĂ©nĂšre des enregistrements OpenMetrics/Prometheus qui ressemblent Ă  ça:
11                             cow_milk_yield{cow_id="JADE",cow_no="1",session="1",} 9.32 1705383960000
12                            cow_milk_yield{cow_id="JADE",cow_no="1",session="2",} 11.07 1705422540000
13                         cow_milk_yield{cow_id="JURAFLO",cow_no="2",session="1",} 16.63 1705384860000
14                         cow_milk_yield{cow_id="JURAFLO",cow_no="2",session="2",} 12.82 1705421520000
15                        cow_milk_yield{cow_id="JOLIMOME",cow_no="3",session="1",} 12.34 1705380300000
                                                     ...
4049                 cow_milk_daily_yield{cow_id="JETSET",cow_no="72",session="2",} 20.58 1708014720000
4051                 cow_milk_daily_yield{cow_id="FIGGIE",cow_no="75",session="2",} 20.87 1708015740000
4053                  cow_milk_daily_yield{cow_id="ETIVA",cow_no="77",session="2",} 24.34 1708014180000
4055    cow_milk_daily_yield{cow_id="JESSIE",cow_no="78",session="2",} 22.729999999999997 1708016460000
4057               cow_milk_daily_yield{cow_id="HESQUISE",cow_no="80",session="2",} 33.47 1708011780000
Name: 0, Length: 20290, dtype: objec
  1. j’envoie tous ces enregistrements dans ma base de donnĂ©e chronologique de prĂ©dilection: VictoriaMetrics

Visualisation des données

Comme les donnĂ©es de la traite sont disponibles dans VictoriaMetrics, je peux utiliser Grafana pour les visualiser. Je pourrai potentiellement par la suite crĂ©er des alertes, par exemple lorsqu’il faut beaucoup plus de temps pour traire une vache que la veille, ou si la production moyenne de lait sur 3 jours baisse sensiblement.

Comme Grafana est une solution de visualisation de graphiques web, il est maintenant possible en tout temps de consulter la production de chaque vache, la tendance de production, la durĂ©e moyenne de la traite, etc. Et ce mĂȘme depuis son natel (/tĂ©lĂ©phone portable/smartphone)!

Je clĂŽture donc cet article avec un aperçu de la visualisation. Le prochain Ă©pisode concernera l’installation de mĂ©thanisation/biogaz de l’exploitation !

Grafana dashboard