Automatic drafting system
Vee sorteren
Onder automatic drafting system verstaat men in de veeteelt een systeem waarmee vee gesorteerd kan worden. Het sorteren kan gebeuren op basis van gewicht of oormerk waarbij aan het oormerk natuurlijk allerlei eigenschappen gekoppeld kunnen worden zoals bijvoorbeeld medicatiegebruik of het vorige gewicht. Een dier wat snel in gewicht aan het toenemen is kan mogelijk drachtig zijn en behoefte hebben aan extra voeding. Een dier wat in gewicht aan het afnemen is heeft mogelijk wat onder de leden en dan kan het automatisch apart worden gezet om aan te sterken.
Het systeem zelf bestaat uit een enkel hek wat meestal als wissel fungeert. Het dier loopt via de ingang naar binnen, wordt gewogen en het oormerk wordt uitgelezen. Deze gegevens gaan naar een backend waar de boer selectie criteria heeft ingeven. De backend registreert het gewicht en het RFID nummer en maakt op basis van eerder genoemde criteria een keuze voor een uitgang. Het hek gaat open en het dier loopt direct of na verloop van tijd verder. Zodra de sluis leeg is gaat de uitgang weer dicht en de ingang weer open en start het proces opnieuw.
Situatie
Bij het ontwikkelen van dit systeem moest ik er rekening mee houden dat er verschillende typen weegunit, RFID lezers, sensoren en hekken met het systeem moesten kunnen werken. Daarnaast is uiteraard het dierwelzijn heel erg belangrijk dus een bug zou er niet voor moeten zorgen dat een dier verwond zou kunnen raken.
Aanpak
Bij de opzet van dit systeem ben ik gegaan voor een microservice architectuur, niet vanwege schaalbaarheid maar voornamelijk om het systeem zo transparant en flexibel mogelijk te maken. Transparantie is normaliter niet echt een kenmerk van microservices maar in deze specifieke situatie was dit denk ik wel de juiste aanpak. Elke vorm van input / output (Sensoren, Actuatoren, Api) kreeg een eigen proces en een lokaal draaiende solid state machine was verantwoordelijk voor de logica en de aansturing. Inter proces communicatie verliep via MQTT waarbij de broker ook lokaal op de PI was geïnstalleerd. Bij het online komen van de PI zette het systeem automatisch een SSH tunnel op waarover de communicatie met een server verliep. Om elk apparaat uniek te kunnen identificeren kreeg ieder apparaat eenmalig een id toegewezen die aan de kant van de server gekoppeld werd aan het mac adres van het apparaat.
- ["- De microservices zorgden ervoor dat het eenvoudig was om over te stappen op andere hardware.","- Dankzij de microservices was het opsporen van problemen eenvoudig te automatiseren en te visualiseren en dit heb ik dan ook zo gemaakt.","- Doordat de communicatie via MQTT verliep kon je vanaf de server rechtstreeks meekijken in het berichten verkeer. ","- MQTT lokaal op de PI zorgde ervoor dat het systeem autonoom \/ decentraal kon werken. Lang niet overal op het platteland is namelijk goed bereik.","- De finite state machine die alleen met externe processen hoefde te communiceren via een gestandaardiseerd mechanisme (MQTT) maakte het zeer leesbaar en begrijpelijke code, ook voor niet programmeurs.",""]