Iowa är brunstig och skriker efter bock. Hawaii är gosig och vill kramas massor, Penny försöker i smyg nå torkpappersrullen på väggen medan Apetina är lite nere och vill bli handmatad och Minnie.. ja hon är bara bedårande söt. Det är en vanlig morgon på Framtida Bruk Gårdsmejeri (så vanlig en morgon kan bli när man jobbar med 40 mjölkgetter).
Svansarna viftar förtjust i luften när de första getterna hittar sina frukosthinkar med korn. Mjölkmaskinerna tickar rytmiskt på, fåglarna kvittrar utanför och killingarna leker i morgonsolen. För ett ögonblick fylls vi av total lycka och kan inte bli bli att titta på varandra och säga högt ”asså vi har världens bästa jobb”.
Plötsligt bryts den magiska stunden av att Floridas klöv rappt slår i golvet. Hon vrider sakta på huvudet och ger oss en mörk blick som bara betyder en sak; slut på korn. Rummet fylls för en sekund av en bedövande tystnad, innan alla getter på kommando börjar stampa i ett rungande ”mer korn! mer korn! mer korn!” Vi springer mot hinkarna för påfyllning när vi plötsligt ser något komma svävandes i ögonvrån.
En flygande get. Grevie har tydligen förvandlats till elitgymnast, hoppat över båset och kommer inflygandes över mjölkbordet. Hon ser lika förvånad ut som oss där hon glider genom luften. Den nyfunna smidigheten försvinner samma sekund hennes klövar når i backen. Mjölkmaskinernas sugkoppar flyger all världens väg när hon välter fram i hopp om att hitta en gyllene hink med frukost.
Innan vi hinner reagera exploderar en konfettibomb. Penny har till slut fått tag på torkpappersrullen med tungspetsen och den går snabbt i tusen bitar när alla getter glatt hugger in. Samtidigt har Cher brutit sig ingenom dörren och springer exalterat runt våra fötter i hopp om lite gos (att känna av rätt tid och plats har aldrig varit hennes grej). I dörröppningen har katten Kafka satt sig för att titta fascinerat på spektaklet.
Det blir en svettig kamp som kräver kondition, styrka, list och charm. Till slut lyckas vi locka ut Grevie, fånga Cher, fylla på hinkarna, sätta sugkopparna på plats igen och mjölka klart den här omgången. Okej, bara 30 getter kvar…
En timme senare är detdags för dagens första välförtjänta kaffekopp. En njutfull klunk hinner vi med innan vi ser något fara förbi utanför fönstret. Mini-Glenn och Frippe har brutit sig ut ur hagen med bockkillingarna och springer lyckligt över gårdsplanen. Samtidigt börjar mobilen pipa – mjölken i mejerigrytan har nått rätt temperatur och är redo att förvandlas till Eldost.
Nisse & Anna rusar ut för att förhoppningsvis charma bockarna in i hagen igen och Claire springer till mejeriet. Getterna och osten kallar – kaffet får vänta!
New babies started arrivning at the farm on Febuary 23rd. Let us take a moment to indulge in their cuteness:
Goat kids means cheese season is soon upon us. We will start weaning the oldest ones in the middle of April, and then we will be milking the goats twice a day until December.
A few of the babies are for sale, since our flock will have reached the size we want it to be (45 milkers) per next season.
Looking back on 2018, we can truly say it was the year it all began..
The first kids were born on the farm, 27 of them.
We finished building our dairy, we began milking our goats and then making and selling our very own cheese.
We participated in about 10 REKO-rings, several markets and events, and had lots of visitors who came to the farm, interested in seeing our newly started goat-business.
We continued improving the farm buildings by creating a storage place for our cheese.
We had help from friends, neighbors and several awesome WWOOFers.
Sweden experienced maybe the worst summer (for farmers) ever in modern age, with a drought that lasted for over 3 months and temperatures over 30 degrees most days. We survived that!
We sold a few of our male goat kids and slaughtered 8 of them here on the farm. It was not a pleasant thing to do, we were sad to have to let them go, but take comfort in knowing the had a great life here with us.
We expanded our flock of chickens, from just a few to now having over 20 hens.
We were featured in local magazines, websites, and even got to be live on the local radio station! (see Media & press if you want to have a look or listen)
By the end of the year, we had met and even exceeded our sales goals for 2018.
All in all, it has been a year filled with joy as well as hard work. We are looking forward to 2019 and what we hope it will entail: ca 50-60 goat kids, milking around 30-35 goats, making and selling almost twice as much cheese, expanding our storage, and many other things!
Since kidding season is upon us, it is time for a presentation of our new farm inhabitants!
First out to give birth was the oldest goat, Asta, who came to us as a foster mother and leader of all the kids when we bought them. She was a little grumpy in the morning and head-butted a rooster so that he flew all over the barn. Soon after, she gave a cat what he didn’t deserve. I put her in a box to calm down, but she showed no signs of beginning labour so I went to have breakfast. When I returned half an hour later, a beautiful little goat that we named Athena was delivered, and Asta was happy again.
After that, it was time for Iowa to take over the show. She went straight into labour, and I had just put her in a separate box before she delivered Glenn. A black and white buck, with a certain Klingon resemblance.
The day after, when we were expecting all the kids to arrive. Nobody showed up. The day after that however, Alabama greeted us in the morning with a brand new daughter by her side. We named her Artemis. She got her own box since Asta and Iowa could move together, and even if we had some problem getting the milk to flow, they soon seemed to enjoy life.
Around lunchtime, North Carolina was beginning to show signs of distress, and soon her water broke. I was watching her the entire afternoon and we shared a cup of tea.
5 hours later, she finally delivered a kid, but it had it’s head twisted in a strange way, and was dead. She had been sick a week before, refused to eat and sought solitude. We suspected ketosis/pregnancy poisoning and gave her treatments that eventually started her digestion again. That was probably the moment when the twisted kid died, and her metabolism went into overdrive, providing her with all the energy the kid would have taken.
We cleaned out and went to look after the other goats. When we where about to leave the barn, we heard a strange sound. Like from a cat or a bird. We went to see Northie one more time, and there she was, with a newborn buck who we named Glenn nr 2. That was a very happy moment.
The morning after, as soon as we entered the barn, we noticed something was sticking out from Delawares private parts. It turned out to be a kids head, and nothing more. The poor thing had managed to come out head first thus having caught its front legs still inside Delawares uterus. We managed to get her in to a box and then the difficult kidding began. The kid seemed ok at first, already breathing, but it felt firmly wedged in and impossible to get out even though Delaware was pushing hard. It was not looking good, and we feared for the goats life, not to mention the kid (which in this case, comes second in priority, but still, is a sad loss if there is a chance to save it). Finally, when we pretty much had given up hope, Nils managed to pull the kid out, working as a team with Delaware, who seemed to be in a lot of pain.
It turned out to be a buck, Glenn 3, and even though he was weak at first, he gained strength and turned out to be fine. He also turned out to be the largest of the bunch (so far) with a birth weight of 4.5 kg.
A difficult kidding before breakfast, phew! After breakfast, I went out to the barn again only to find Maine with two newborn babies. Unfortunately only one of them was alive and on its feet, a buck. The other one was lying with its head in a strange angle and was not breathing and did not respond to my efforts to animate it. This is very sad of course, but there was nothing more to do then to direct attention toward the living kid and take care of its mother.
So began the twin kiddings. Soon after Maine, South Carolina went in to labour and we helped her just a little as she delivered two female goats which we named Selene (the light brown one) and Spio (the dark one).
After lunch, one of our dearest and most intelligent goats, Indiana, began telling us it was time for her to have her kids. The whole thing went very smoothly and the kids were very quick to get on their feet and find the teats. She had a super pretty grey buck, Glenn 4, and a light brown goat, Ino, and soon got to move in with Southie and her twins.
So that was a wrap for that day! 10 new kids had arrived in total and about half the goats had given birth.
Sunday morning Oregon went into labour and did a prefect job with two babies, a light brown goat – Oizys, and a dark buck, Glenn 5.
About an hour later, one of the white goats, Utah, decided it was time to take off into the woods. Since we prefer to watch over the kidding in case of complications, Nils had to lure her back inside with some grain, and after another hour or so, she gave birth to a lovely white little female goat we named Urania and a darker, grey buck – Glenn no 6.
Last one out this day was Arizona who gave life to two female goats, it went well and we named them Asteria (the dark one) and Aphrodite (the light one).
As goats are naturally born masters of escaping, we soon realized that the electric fence only should be considered as the first line of defense. Usually, the most clever ones finds their way out, and then calls for the others to follow, and generally, their just heading out to a nearby pasture, where the grass is allegedly greener, or home to the barn. On a few occasions though, they have been spooked by wild boars, and ran off into the forest. When I was tracking them out on a small dirt road, and a neighbor called from his forestry tractor, about 3 km out, and asked if maybe my goats where out hiking, I realized that we have a need for a tracking device. The idea of the GoTo Goat device was born, a GPS-module, transmitting coordinates over the cell network.
Features:
Real-time GPS location
Upload coordinates to a cloud service, or your own server over GPRS
Step-down regulator: AMS1117 adjustable (5V-3.7V) 1 euro
Sim card (Telia) free
Total cost: 19 euro for the components and 50 for the powerbank, but i bought the powerbank locally in Sweden, and there are much cheaper ones around on ebay. With a little more labour put into sourcing, the cost could probably drop to about 30 euro.
The SIM800L
This is a very nice little module. Essentially a complete cell phone, except for user interface, speaker and mic. It’s controlled from the arduino by sending AT commands through serial communication. The SIM800L is supposed to be powered by a 3.7V Li cell, as in a cellphone, and that’s why the buck converter is needed in this setup to bring the current down from 5V.
The only functionality used here is the GPRS device for sending over HTTP, but using SMS or DMTF for controlling the unit are possibilities as well as calling the goat for an occasional chat.
The NEO-6M
A neat GPS-module supported by the arduino TinyGPS library. Pretty fast on getting a fix, and supplying coordinates once a second.
The Nano
I choose an Arduino nano for prototyping, since it has it’s own FTDI, a reasonable size and a friendly number of pins. If the size, power consumption and prize needs to be further tweaked, I can’t see any reason not to use a mini pro though. The SIM800L is rated for max 3.7V to 4.1V so the internal voltage regulators will be useless.
The SIM
Any sim card that supports GPRS will work, but it’s recommended to use one that not expires too soon after charging. As very little traffic volumes are transmitted, it would be a shame if the card needed to be refueled every 3 months or so. Instead, if you can find one that works for several years, and only using the throttled speed when paid data is depleted, that would be completely sufficient.
Connections
SIM800L pin
NEO-&M pin
AMS1117 pin
Arduino pin
Powerbank
Net – antenna
Usb
Port2
Vcc
Vout
Rst
D5
TX
D8
RX
D7
Gnd
Gnd
Gnd
Gnd
Port1 –
Vcc
5V
Rx
D4
Tx
D3
Vin
Port1 +
Cloud API
I choose thingspeak.com as cloud service to store the coordinates. Mostly because I already use it for other sensors, so I’m already familiar with the API. Virtually any online API would be suitable, as long as you can send in values through a HTTP GET parameter.
Thingspeak will let you send in 3 000 000 updates / year with their free account, so that will limit you to 5.7 updates / minute. I’ll go for max 1/min, probably less. Since you are putting the API key in the arduino code, you don’t want to use a service that is likely to go off the market, or become ”premium only”, like Xively did. To be sure that the service stays alive, you could host your own thingspeak platform on a raspberry pi or similar.
Code
The NEO-6M is very simple to interface from the Arduino. I used the kitchensink example from the TinyGPS library, and trimmed it down to the bare necessities.
The SIM800L is more complicated to interface, since you need 2-way communication to ensure that the commands have been successfully performed. I found some example code at Cassiopeia that was very helpful. Even if I do not use DMTF functionality as in the example, their approach for communicating with the SIM800L is very convenient.
As both the NEO-6M, the SIM800L and the arduino IDE Serial monitor are using serial communication for interfacing the arduino, there will be issues regarding which ports to use. I kept the hardware serial (Serial) for debugging purposes, and let only the computer interface with it. For the modules, I assigned two SoftwareSerial ports, sim800 on pin 7 and 8 and ss on pin 3 and 4. To keep the communication channels separated, the arduino is instructed on which one to listen, depending on where input is expected.
#include <SoftwareSerial.h>
#include <TinyGPS++.h>
#include <avr/sleep.h>
#include <avr/wdt.h>
//Thingspeak channel
#define CHANNEL 199082 //Not used
//Thingspeak API write key
#define APIKEY "XXXXXXXXX"//Put your own write key here
//SIM800 TX is connected to Arduino D8
#define SIM800_TX_PIN 8
#define RATE 10000 //GPS sampling rate
//SIM800 RX is connected to Arduino D7
#define SIM800_RX_PIN 7
static const int RXPin = 3, TXPin = 4;
static const uint32_t GPSBaud = 9600;
const int sim_rst = 5;
int errors = 0;
//Create software serial object to communicate with SIM800
SoftwareSerial sim800(SIM800_TX_PIN,SIM800_RX_PIN);
SoftwareSerial ss(RXPin, TXPin);
TinyGPSPlus gps;
unsigned long last = 0UL;
// watchdog interrupt
ISR(WDT_vect)
{
wdt_disable(); // disable watchdog
}
void myWatchdogEnable(const byte interval)
{
MCUSR = 0; // reset various flags
WDTCSR |= 0b00011000; // see docs, set WDCE, WDE
WDTCSR = 0b01000000 | interval; // set WDIE, and appropriate delay
wdt_reset();
set_sleep_mode (SLEEP_MODE_PWR_DOWN);
sleep_mode(); // now goes to Sleep and waits for the interrupt
}
void setup() {
//Begin serial comunication with Arduino and Arduino IDE (Serial Monitor)
Serial.begin(9600);
while(!Serial);
//Beging serial communication with Arduino and SIM800
sim800.begin(9600);
delay(1000);
ss.begin(GPSBaud);
delay(1000);
Serial.println("Setup Complete!");
last = millis()-RATE;
}
void loop() {
errors = 0;
// Dispatch incoming characters from GPS
ss.listen();
while (ss.available() > 0)
gps.encode(ss.read());
if (millis() - last > RATE)
{
if (gps.location.isValid())
{
static const double OFFICE_LAT = 56.000, OFFICE_LON = 14.000; //Hard coded reference coordinates if needed in the future
double distanceToOffice =
TinyGPSPlus::distanceBetween(
gps.location.lat(),
gps.location.lng(),
OFFICE_LAT,
OFFICE_LON);
Serial.println(distanceToOffice);
double courseToOffice =
TinyGPSPlus::courseTo(
gps.location.lat(),
gps.location.lng(),
OFFICE_LAT,
OFFICE_LON);
char tmpCourse[10];
char tmpDistance[10];
char tmpLat[10];
char tmpLng[10];
char tmpSpeed[10];
char params[200];
int batteryLevel;
//Convert GPS data to strings
dtostrf(gps.location.lat(),1,6, tmpLat);
dtostrf(gps.location.lng(),1,6, tmpLng);
dtostrf(distanceToOffice/1000, 1,6, tmpDistance);
dtostrf(courseToOffice,1,6, tmpCourse);
dtostrf(gps.speed.kmph(), 1,6, tmpSpeed);
sim800.listen();//Turn to sim800l channel
disconnectGPRS();//Sometimes, the sim800l gets stuck with GPRS activated, and trying to activate it again will naturally fail.
while(!wakeUpSim800());
if(simOK()){
batteryLevel= getBatteryLevel();
Serial.print("Battery level: ");
Serial.println(batteryLevel);
sprintf(params, "apikey=%s&field1=%s&field2=%s&field3=%s&field6=%d", APIKEY, tmpLat, tmpLng, tmpSpeed, batteryLevel);
Serial.println(params);
//Next three stages are sequential. Error handling means that if the sequence is not completed with less than 5 unsuccessful tries on all stages, there is something wrong, and the sequence is aborted.
while(!initGPRS()&&errors++<5);
while(!initHTTP()&&errors++<5);
while(!putDataToThingspeak(params)&&errors++<5);
errors = 0;
while(!disconnectGPRS()&&errors++<5);
while(!powerDownSim800());
delay(200);
Serial.println("Entering watchdog sleep");
delay(100);
myWatchdogEnable (0b100001); // 8 seconds
myWatchdogEnable (0b100001); // 8 seconds
myWatchdogEnable (0b100001); // 8 seconds
myWatchdogEnable (0b100001); // 8 seconds
myWatchdogEnable (0b100001); // 8 seconds
myWatchdogEnable (0b100001); // 8 seconds
myWatchdogEnable (0b100001); // 8 seconds
myWatchdogEnable (0b100001); // 8 seconds
Serial.println("Resuming operations");
}
ss.listen(); //Turn back to GPS channel
}
if (gps.charsProcessed() < 10)
Serial.println(F("WARNING: No GPS data. Check wiring."));
last = millis();
}
}
boolean wakeUpSim800(){
Serial.println(F("Checking for sim800 module..."));
digitalWrite(sim_rst, LOW); // hardware reset after sleep RST
delay(300);
digitalWrite(sim_rst, HIGH);
// time to startup 3 sec
for (int i = 0; i < 6; i++) {
digitalWrite(13, HIGH); // green LED blink after RESET
delay(250);
digitalWrite(13, LOW);
delay(250);
}
sim800.println("AT"); // check if sim800 module responds
delay(100);
if (sim800.find("OK")) {
Serial.println(F("sim800 module awake"));
return true;
}
else{
Serial.println(F("sim800 module not found"));
return false;
}
}
boolean simOK() { // SIM CHECK OK
Serial.println(F("Checking for SIM card.. "));
sim800.println("AT"); // check if sim800 module responds
delay(100);
if (sim800.find("OK")) {
Serial.println(F("sim800 module found"));
delay(100); // wait for sim800 to settle a bit
sim800.println("AT+CFUN=1"); // operation
if (sim800.find("OK"))
Serial.println(F("Function level 1"));
else
return false;
delay(2000);
sim800.println("AT+CSMINS?"); // check if SIM card inserted
delay(100);
if (sim800.find("CSMINS: 0,0")) {
Serial.println(F("no SIM card found, stop here"));
return false;
}
Serial.println(F("SIM card found")); // continue if SIM card found
Serial.println(F("Allow some time for SIM to register on the network.."));
Serial.println();
delay(1000);
return true;
}
else{
Serial.println(F("sim800 module not found, stop here"));
return false;
}
}
void simReply() { // SIM REPLY
delay(500);
while (sim800.available()) {
char c = sim800.read();
if (c != '\n') Serial.write(c); // replace new line with space
else Serial.print(" ");
delay(5);
}
Serial.println();
}
boolean initGPRS(){
boolean noError = true;
sim800.println("AT+CIPSHUT"); //Ensure GPRS PDP is down before init
simReply();
//delay(1000);
sim800.println("AT+CGATT=1");//Attach to GPRS service
simReply();
sim800.println("AT+SAPBR=3,1,CONTYPE,GPRS");//Set(3) bearer connected(1) to Contype GPRS
if (sim800.find("ERROR"))
noError = false;
sim800.println("AT+CGATT=1");//Attach to GPRS service
if (sim800.find("ERROR"))
noError = false;
sim800.println("AT+SAPBR=3,1,APN,online.telia.se");//Set(3) bearer connected(1) to APN
if (sim800.find("ERROR"))
noError = false;
sim800.println("AT+SAPBR=1,1");//Open connected bearer
if (sim800.find("ERROR"))
noError = false;
Serial.print("initGPRS finished with no errors = ");
Serial.println(noError);
return noError;
}
boolean initHTTP(){
boolean noError = true;
sim800.println("AT+HTTPTERM");
if (sim800.find("ERROR"))
noError = false;
sim800.println("AT+HTTPINIT");
if (sim800.find("ERROR"))
noError = false;
sim800.println("AT+HTTPPARA=CID,1");
if (sim800.find("ERROR"))
noError = false;
Serial.print("initHTTP finished with no errors = ");
Serial.println(noError);
return noError;
}
boolean putDataToThingspeak(char params[200]){
boolean noError = true;
char req[250];
sprintf(req, "AT+HTTPPARA=URL,api.thingspeak.com/update?%s", params);
Serial.println(req);
sim800.println(req);
if (sim800.find("ERROR"))
noError = false;
delay(1000);
sim800.println("AT+HTTPACTION = 0");
if (sim800.find("ERROR"))
noError = false;
Serial.print("putDataToThingspeak finished with no errors = ");
Serial.println(noError);
return noError;
}
boolean disconnectGPRS(){
boolean noError = true;
sim800.println("AT+CIPSHUT");
if (sim800.find("ERROR"))
noError = false;
sim800.println("AT+SAPBR=0,1");
if (sim800.find("ERROR"))
noError = false;
sim800.println("AT+CGATT=0");
if (sim800.find("ERROR"))
noError = false;
sim800.println("AT+CFUN=0");
if (sim800.find("ERROR"))
noError = false;
Serial.print("disconnectGPRS finished with no errors = ");
Serial.println(noError);
return noError;
}
int getBatteryLevel(){
sim800.listen();
sim800.println("AT+CBC"); // battery level
delay(500);
String s = sim800.readStringUntil(',');//Grab the value between the commas
String level = sim800.readStringUntil(',');
return(level.toInt());
}
boolean powerDownSim800(){
boolean noError = true;
sim800.println("AT+CPOWD=1");
if (sim800.find("ERROR"))
noError = false;
Serial.print("SIM800l power down = ");
Serial.println(noError);
return noError;
}
Here are the latitude results from thingspeak, for more, go to the GoTo goat section on the IoT page.
We are happy to introduce a couple of new members here at Framtida Bruk farm: chickens! They are of a New Hampshire dwarf breed and hence they are a bit smaller than regular chickens. For now there are only three of them: Gösta the rooster, who crows proudly every morning, and his two gals Babette and Fabienne who look up to him and like to sleep tucked away under his wing. They are funny, talkative, and often make a little sneeze-hiccup sound when they get up in the morning.
The first few weeks they did not seem very happy to be here. They were not producing any eggs, even though they have a spacious pen to peck about in, lots of food and places to sit… They were even looking a bit ragged?! Finally, we realized they were moulting. A few days ago however, we found our first eggs and were beyond happy to enjoy our first farm-egg breakfast.
The reputation of domesticated ruminators as climate culprits has became spread in later years, due to their large emissions of the greenhouse gas methane (CH4). Especially cows in meat and dairy production are considered liable for a remarkable high share of the climate changing emissions, but other ruminators such as sheeps and goats are considered polluters, even if they don’t get as much attentions as the farting cows, as their total emission of carbon dioxide equivalents are lower due to smaller size and lesser numbers.
How bad are goats then? They’re small and cute, smells good (well, a doe does) and never farts loudly in public. Their ability to feed from forage inaccessible to other livestock, like bushes and leaves, makes them a great tool in keeping biodiversity and stimulate growth in young trees and herbs, leading to a greater uptake of carbon dioxide from the air. But do they actually pollute more more than they clean up?
There are actually a lot of studies published on the topic methane emission from goats, mostly from an economical view, since methane emission is considered a loss in energy uptake, that indicates a suboptimal ration.
When I started digging deeper in this issue, I realized that most goats in the studies where fed a completely different diet than our goats are. While our goats grazes freely during the six warm months eating a mix of grass, leaves, bark and needles, and during the winter eats mostly hay combined with spruce and pine needles, the goats in the studies where fed a single feed, chosen for optimizing milk production or feeding costs.
I got the notion that most goats in industrialized production are not getting their natural forage, and if they do, not in a natural mix. I know what usually happens to me when I do that to myself.
This study, Murciano-Granadina Goat Performance and Methane Emission after Replacing Barley Grain with Fibrous By-Products suggests that the ordinary forage of barley grain can be substituted with high fibrous orange peel or soy been hulls, without increasing methane emission. That is a good thing from a economical view, because those by-products probably is extraordinary cheap, but it says nothing about what a natural methane emission is, since all three rations are unnatural to a goat.
Another common mistake is to consider sheep and goats the same, as in this study: Energy metabolism and methane production in llamas, sheep and goats fed high- and low-quality grass-based diets. where goats, sheep and llamas are given a low fibrous and a high fibrous grass and the difference in methane emission is recorded. Only llamas showed lesser methane emission on the high fibrous diet. My conclusion: goats, nor sheep, do not do well on llama food.
What is the source of the methane then? The complex hydrocarbons in the food needs to be broken down into less complex molecules to be possible to absorb for the animal. In a ruminators digestion, this is an extremely complex process, with enzymes, yeast and bacteria working together decomposing those structures. Goats differs from sheep and cows, since they have an extremely fast digestion, giving them the possibility to decompose the most complex hydrocarbons, lignins, found in wood and all durable structures in the world of plants. The key to achieving this is mostly certain bacterial fermentation processes in the rumen. These bacteria seems to be increasing in numbers when the goat eats a lot of roughage, but decreases when the goat eats a lot of starch and sugars. Instead a methane producing bacteria increases when shorter hydrocarbons are digested.
This study: Methane emission by goats consuming diets with different levels of condensed tannins from lespedeza suggest a very interesting view, that in fact tannins are the key to reduce methane emissions. Even if the study is performed on forage consisting of only two species, the forage is more natural to the goat than in the other studies reviewed. The results is that when the goats are fed with a high tannin forage, the methane emission drops quadratically. The adaptation time of 4-6 days to the high tannin forage is another indicator of transformation in the bacterial balance.
In the study, two kinds of forage, sorghum grass and Kobe lespedeza (a legume, like clover or peas) are compared in different rations, 0/100, 33/67, 67/33 and 100/0. Where the 100% grass diet shows no drop in methane emission after 6 days, the 100% legume diet reduced the methane emission by 50% on day 5. After 20 days, the high tannin legume diet remained at low emission rates (from 10.3 to 10.9 l/day), while the 100% grass diet emission rate was drastically increased (from 20.4 to 26.2 l/day).
Tannins are found in many of the goats natural sources of roughage, such as leaves, bark, needles and branches. When the goat is allowed to forage freely in a diverse environment, the level of tannins would be significantly higher than when grassfed or grainfed.
Aren’t those tannins poisonous then? Yes, to cattle, sheep, and especially horses, a tannin fueled diet, such as lots of oak and beech leaves would be lethal. For a goat though, a much higher level of tannins seems to be acceptable. Several studies suggest that oak leaves are not only nutritious and reduces goat gasses, they also reduce nematode infections.
Amanda Karlsson in Effekten av toxiciteten hos ek för get, får och nötkreatur discusses the effects of oak leaves on goats, sheep and cattle, and concludes that oak toxication on goats are not likely, given they have the choice of eating the right amount.
Content of condensed tannins in the studies performed:
Forage
CT g/kg dry matter
Kobe lespedeza
151
Quercus semecarpifolia (himalayan oak)
170
Quercus robur (Swedish oak)
78
Several studies suggest that the amount of tannins in leaves varies over the seasons and peaks in mature autumn leaves, so the figures are just to get an estimation.
How bad is a goat emitting 10 liters of methane a day? At a methane density of 0.656 g/l, that means 6.56 grams/day. Converting with a carbon dioxide equivalent of 25 for methane gives 164 grams of CO2/day, which is about what a medium car emits on a 1 km ride, or what burning 0.7 dl of petrol emits, like running a chainsaw for 3-5 minutes.
So what all this sums up to, is that a goat can be made into a farting climate culprit when fed with the wrong stuff, but keeping the feed varied and close to the goats natural supply will drastically reduce methane emissions and keep the goats healthy, while minimizing losses in energy uptake.
The goats will still emit some methane, but the carbon emitted will come from the current coal cycle and can be compared to burning wood, in contrary to other methods of keeping the landscape open and diverse, as clearing with fossile fueled machines. If the goats provides you with cheese and meat as by products, that will be a bonus for you and the climate.
The forests have always had a crucial role in the Swedish economy. They have given us fuel, building materials, paper and chemicals, but also a habitat for a rich wildlife, and highly valued recreational areas.
In old times, cattle was often kept in the forest. Feeding on leaves, herbs and barch, the forest gave an addition to a scarce feedstock, but modern breeds are no longer able to both survive and give milk or meat on such frugal diet.
Goats on the other hand, has a much more efficient digestion, and is actually the only domesticated ruminator capable of digesting wood fibres and lignine into sugars. So when your goat heard browses the forests for brush, barch, sticks and spruce needles, and then returns to the barn in the evening to get milked, you actually conduct a refinement process where the input is cheap and abundant cellulose, and the output is exclusive and nutritious milk proteins. The production of proteins for the human diet through livestock handling is often referred to as unfriendly to the environment, with high water consumption and much larger areas needed than for the equivalent calories from vegetables and grain. The conversion of cellulose to go at milk proteins and buckling meat does not have the same problems, since the forest mostly grows on improductive soil, suitable for nothing else than forest. The forest does not need to be watered nor fertilized, neither does it suffer from pests and draught as easily as field crops.
When you own goats you soon discover that they are a quite difficult bunch to keep inside the fence, no matter how delicious and goat-friendly the pasture inside may seem.
That is why we are spending a lot of time putting up and re-inforcing fences!