My grandfather in law, Wendell Anderson, made the first ground receiver station for APT satellites long before the USG got theirs working; and he did it out of his kids playset. Ever since then, I’d been fighting the ability to replicate so may other folk’s work in this space because I have a lot of trees. The next best thing was to be able to receive the GOES satellites, which I was able to do. Here’s how I did it.
Step 2: Wire up the antenna Follow the instructions from Nooelec on how to connect the antenna to the SDR. I’d recommend first having all the components laid out and then running the GOES software first to ensure everything works on the ground before putting things into boxes, dealing with tape, and other misc hazards. Connecting everying in a simple way, you should go from the antenna, to the LNA to the long cable, to the SDR which is plugged into the Pi. The LNA’s power supple should have a GREEN LED turned on. If it doesn’t, the Bias-T power injection from your SDR may be bad; this happened to me. If you need to test that, you can use a voltmeter on the SMA connector, setting the voltmeter to DC, placing the black probe on the outside of the SMA connector, and the red probe on the middle pin. You should see 5 Volts. If not, then your SDR’s Bias-T power injector is bad, and send it in for an exchange.
Once you’ve confirmed the basic operation of the system, go to https://www.dishpointer.com/ and plug in your info. This site will tell you where to point your antenna. Take careful note!
Once you know where the dish needs to point, you can freehand ‘test point’ it if you’d like, or use a tri-pod, or whatever. However, the command you’ll want to use as you align the antenna is:
goesrecv -v-i 1 -c ~/goesrecv.conf
Pay attention to the ‘vit’ value. If it is over 2000, then there’s no signal. Mine comfortably hovers around 200. With some more work I should be able to get it to 80 or so. You’ll be able to decode data at maybe less than 400. If you can verify that before mounting it all, then wunderbar!
Step 3: Prep for install I placed the LNA inside the weather proof box, had the feed cables go into it via the waterproof joints, and used the Scotch tape on the antenna input ports. Additinally, for my specific install, my RasPi is in an outdoor waterproof box like this one.
Step 4: Install! This part sucked. You gotta get the J-Pole installed, use a lot of locktite, use the compass and elevation meter to point the dish, and then use the debug from the command line to make sure you’re pointed in the most ideal configuration. You’re on your own for this one; it’s going to be a unique experience.
Step 5: Software Glue I noticed quickly that there’s almost 4GB of data a day, and that was going to hurt the storage on my Pi. This is why I offload all the data to a NAS. So what’s next, pictures, stats and more!
/etc/systemd/system/goesdecode.service
# Store all original GOES-16 products.[[handler]]
type="image"
origin ="goes16"
directory ="/home/pi/incoming/goes/goes16/{region:short|lower}/{channel:short|lower}/{time:%Y-%m-%d}"
filename ="GOES16_{region:short}_{channel:short}_{time:%Y%m%dT%H%M%SZ}"
format ="jpg"
json =false[[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_0_countries_lakes.json"[[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_1_states_provinces_lakes.json"# Store all original GOES-17 products.[[handler]]
type="image"
origin ="goes17"
directory ="/home/pi/incoming/goes/goes17/{region:short|lower}/{channel:short|lower}/{time:%Y-%m-%d}"
filename ="GOES17_{region:short}_{channel:short}_{time:%Y%m%dT%H%M%SZ}"
format ="jpg"
json =false[[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_0_countries_lakes.json"[[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_1_states_provinces_lakes.json"# GOES-16 ABI false color.[[handler]]
type="image"
origin ="goes16"
regions =["fd", "m1", "m2"]
channels =["ch02", "ch13"]
directory ="/home/pi/incoming/goes/goes16/{region:short|lower}/fc/{time:%Y-%m-%d}"
filename ="GOES16_{region:short}_FC_{time:%Y%m%dT%H%M%SZ}"
format ="jpg"
json =false[handler.remap.ch02]
path ="/usr/share/goestools/wxstar/wxstar_goes16_ch02_curve.png"[handler.lut]
path ="/usr/share/goestools/wxstar/wxstar_goes16_lut.png"[[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_0_countries_lakes.json"[[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_1_states_provinces_lakes.json"# GOES-16 ABI RGB-enhanced[[handler]]
type="image"
origin ="goes16"
regions =["fd", "m1", "m2"]
channels =["ch07", "ch08", "ch09", "ch13", "ch14", "ch15"]
directory ="/home/pi/incoming/goes/goes16/{region:short|lower}/{channel:short|lower}_enhanced/{time:%Y-%m-%d}"
filename ="GOES16_{region:short}_{channel:short}_enhanced_{time:%Y%m%dT%H%M%SZ}"
format ="jpg"
json =false## The following gradients are rough approximations of the ## McIDAS RGB enhancements used by NOAA/NESDIS/STAR on their site..#### For more info:#### https://www.star.nesdis.noaa.gov/GOES/GOES16_FullDisk.php ## http://cimss.ssec.wisc.edu/goes/visit/water_vapor_enhancement.html## http://cimss.ssec.wisc.edu/goes/visit/enhanced_v_enhancements.html## Shortwave IR (Channel 7)[handler.gradient.ch07]
points =[{ units = 400, color ="#000000"},
{ units = 250, color ="#b9b9b9"},
{ units = 249.999, color ="#00ffff"},
{ units = 240, color ="#000080"},
{ units = 230, color ="#00ff00"},
{ units = 220, color ="#ffff00"},
{ units = 210, color ="#ff0000"},
{ units = 200, color ="#000000"},
{ units = 190, color ="#ffffff"}]## Water Vapor (Channels 8 and 9)[handler.gradient.ch08]
points =[{ units = 276, color ="#000000"},
{ units = 275.9, color ="#ff0000"},
{ units = 258, color ="#ffff00"},
{ units = 250, color ="#000070"},
{ units = 233, color ="#ffffff"},
{ units = 195, color ="#408020"},
{ units = 178, color ="#00ffff"}][handler.gradient.ch09]
points =[{ units = 276, color ="#000000"},
{ units = 275.9, color ="#ff0000"},
{ units = 258, color ="#ffff00"},
{ units = 250, color ="#000070"},
{ units = 233, color ="#ffffff"},
{ units = 195, color ="#408020"},
{ units = 178, color ="#00ffff"}]## Longwave IR (Channels 13, 14, and 15)[handler.gradient.ch13]
points =[{ units = 333, color ="#000000"},
{ units = 238, color ="#b9b9b9"},
{ units = 237.999, color ="#00ffff"},
{ units = 228, color ="#000080"},
{ units = 218, color ="#00ff00"},
{ units = 208, color ="#ffff00"},
{ units = 198, color ="#ff0000"},
{ units = 188, color ="#000000"},
{ units = 178, color ="#ffffff"}][handler.gradient.ch14]
points =[{ units = 333, color ="#000000"},
{ units = 238, color ="#b9b9b9"},
{ units = 237.999, color ="#00ffff"},
{ units = 228, color ="#000080"},
{ units = 218, color ="#00ff00"},
{ units = 208, color ="#ffff00"},
{ units = 198, color ="#ff0000"},
{ units = 188, color ="#000000"},
{ units = 178, color ="#ffffff"}][handler.gradient.ch15]
points =[{ units = 333, color ="#000000"},
{ units = 238, color ="#b9b9b9"},
{ units = 237.999, color ="#00ffff"},
{ units = 228, color ="#000080"},
{ units = 218, color ="#00ff00"},
{ units = 208, color ="#ffff00"},
{ units = 198, color ="#ff0000"},
{ units = 188, color ="#000000"},
{ units = 178, color ="#ffffff"}][[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_0_countries_lakes.json"[[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_1_states_provinces_lakes.json"# GOES-17 ABI false color.[[handler]]
type="image"
origin ="goes17"
regions =["fd", "m1", "m2"]
channels =["ch02", "ch13"]
directory ="/home/pi/incoming/goes/goes17/{region:short|lower}/fc/{time:%Y-%m-%d}"
filename ="GOES17_{region:short}_FC_{time:%Y%m%dT%H%M%SZ}"
format ="jpg"
json =false# This reuses the GOES-16 contrast curve assuming it is identical[handler.remap.ch02]
path ="/usr/share/goestools/wxstar/wxstar_goes16_ch02_curve.png"# This reuses the GOES-16 LUT assuming it is identical[handler.lut]
path ="/usr/share/goestools/wxstar/wxstar_goes16_lut.png"[[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_0_countries_lakes.json"[[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_1_states_provinces_lakes.json"# Images relayed from Himawari-8.[[handler]]
type="image"
origin ="himawari8"
directory ="/home/pi/incoming/goes/himawari8/{region:short|lower}/{time:%Y-%m-%d}"
filename ="Himawari8_{region:short}_{channel:short}_{time:%Y%m%dT%H%M%SZ}"
format ="jpg"
json =false[[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_0_countries_lakes.json"[[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_1_states_provinces_lakes.json"# NWS text (weather reports).[[handler]]
type="text"
origin ="nws"
directory ="/home/pi/incoming/goes/nws/{time:%Y-%m-%d}"
filename ="{time:%Y%m%dT%H%M%SZ}_{awips:nnn}{awips:xxx}"
json =false# NWS images.[[handler]]
type="image"
origin ="nws"
directory ="/home/pi/incoming/goes/nws/{time:%Y-%m-%d}"
filename ="{time:%Y%m%dT%H%M%SZ}_{filename}"
format ="png"
json =false# Miscellaneous text.[[handler]]
type="text"
origin ="other"
directory ="/home/pi/incoming/goes/text/{time:%Y-%m-%d}"
filename ="{time:%Y%m%dT%H%M%SZ}_{filename}"
json =false# Store relayed GOES-15 full disks[[handler]]
type="image"
origin ="goes15"
regions =["fd"]
directory ="/home/pi/incoming/goes/goes15/{region:short|lower}/{time:%Y-%m-%d}"
filename ="GOES15_{region:short}_{channel:short}_{time:%Y%m%dT%H%M%SZ}"
crop =[-2374, 2371, -1357, 1347 ]
format ="jpg"
json =false[[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_0_countries_lakes.json"[[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_1_states_provinces_lakes.json"# Store relayed GOES-15 northern hemisphere region[[handler]]
type="image"
origin ="goes15"
regions =["nh"]
directory ="/home/pi/incoming/goes/goes15/{region:short|lower}/{time:%Y-%m-%d}"
filename ="GOES15_{region:short}_{channel:short}_{time:%Y%m%dT%H%M%SZ}"
crop =[-1864, 1447, -1357, -3]
format ="jpg"
json =false[[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_0_countries_lakes.json"[[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_1_states_provinces_lakes.json"# Store relayed GOES-15 southern hemisphere region[[handler]]
type="image"
origin ="goes15"
regions =["sh"]
directory ="/home/pi/incoming/goes/goes15/{region:short|lower}/{time:%Y-%m-%d}"
filename ="GOES15_{region:short}_{channel:short}_{time:%Y%m%dT%H%M%SZ}"
crop =[-1864, 896, -19, 1043 ]
format ="jpg"
json =false[[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_0_countries_lakes.json"[[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_1_states_provinces_lakes.json"# Store relayed GOES-15 US region[[handler]]
type="image"
origin ="goes15"
regions =["us"]
directory ="/home/pi/incoming/goes/goes15/{region:short|lower}/{time:%Y-%m-%d}"
filename ="GOES15_{region:short}_{channel:short}_{time:%Y%m%dT%H%M%SZ}"
crop =[-1312, 1542, -1327, -345]
format ="jpg"
json =false[[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_0_countries_lakes.json"[[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_1_states_provinces_lakes.json"# Store relayed GOES-15 special regions# No crop specified because it is expected to move around[[handler]]
type="image"
origin ="goes15"
regions =["si00", "si01", "si02", "si03", "si04"]
directory ="/home/pi/incoming/goes/goes15/{region:short|lower}/{time:%Y-%m-%d}"
filename ="GOES15_{region:short}_{channel:short}_{time:%Y%m%dT%H%M%SZ}"
format ="jpg"
json =false[[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_0_countries_lakes.json"[[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_1_states_provinces_lakes.json"# The following handler takes the same crop from the FD, NH, and US# products to get more frequent imagery of a smaller area on the# northern hemisphere. The crop region is a combination of the NH and# US crop regions.[[handler]]
type="image"
origin ="goes15"
regions =["fd", "nh", "us"]
crop =[-1312, 1447, -1327, -345]
directory ="/home/pi/incoming/goes/goes15/combine-north/{time:%Y-%m-%d}"
filename ="GOES15_{channel:short}_{time:%Y%m%dT%H%M%SZ}_{region:short}"
format ="jpg"
json =false[[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_0_countries_lakes.json"[[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_1_states_provinces_lakes.json"# The following handler takes the same crop from the FD and SH# products to get more frequent imagery of a smaller area on the# southern hemisphere.[[handler]]
type="image"
origin ="goes15"
regions =["fd", "sh"]
crop =[-1864, 896, -19, 1043 ]
directory ="/home/pi/incoming/goes/goes15/combine-south/{time:%Y-%m-%d}"
filename ="GOES15_{channel:short}_{time:%Y%m%dT%H%M%SZ}_{region:short}"
format ="jpg"
json =false[[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_0_countries_lakes.json"[[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_1_states_provinces_lakes.json"## Store all original GOES-16 products.[[handler]]
type="image"
origin ="goes16"
directory ="/home/pi/incoming/goes/goes16/{region:short|lower}/{channel:short|lower}/{time:%Y-%m-%d}"
filename ="GOES16_{region:short}_{channel:short}_{time:%Y%m%dT%H%M%SZ}"
format ="jpg"
json =false[[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_0_countries_lakes.json"[[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_1_states_provinces_lakes.json"# Store all original GOES-17 products.[[handler]]
type="image"
origin ="goes17"
directory ="/home/pi/incoming/goes/goes17/{region:short|lower}/{channel:short|lower}/{time:%Y-%m-%d}"
filename ="GOES17_{region:short}_{channel:short}_{time:%Y%m%dT%H%M%SZ}"
format ="jpg"
json =false[[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_0_countries_lakes.json"[[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_1_states_provinces_lakes.json"# GOES-16 ABI false color.[[handler]]
type="image"
origin ="goes16"
regions =["fd", "m1", "m2"]
channels =["ch02", "ch13"]
directory ="/home/pi/incoming/goes/goes16/{region:short|lower}/fc/{time:%Y-%m-%d}"
filename ="GOES16_{region:short}_FC_{time:%Y%m%dT%H%M%SZ}"
format ="jpg"
json =false[handler.remap.ch02]
path ="/usr/share/goestools/wxstar/wxstar_goes16_ch02_curve.png"[handler.lut]
path ="/usr/share/goestools/wxstar/wxstar_goes16_lut.png"[[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_0_countries_lakes.json"[[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_1_states_provinces_lakes.json"# GOES-16 ABI RGB-enhanced[[handler]]
type="image"
origin ="goes16"
regions =["fd", "m1", "m2"]
channels =["ch07", "ch08", "ch09", "ch13", "ch14", "ch15"]
directory ="/home/pi/incoming/goes/goes16/{region:short|lower}/{channel:short|lower}_enhanced/{time:%Y-%m-%d}"
filename ="GOES16_{region:short}_{channel:short}_enhanced_{time:%Y%m%dT%H%M%SZ}"
format ="jpg"
json =false## The following gradients are rough approximations of the ## McIDAS RGB enhancements used by NOAA/NESDIS/STAR on their site..#### For more info:#### https://www.star.nesdis.noaa.gov/GOES/GOES16_FullDisk.php ## http://cimss.ssec.wisc.edu/goes/visit/water_vapor_enhancement.html## http://cimss.ssec.wisc.edu/goes/visit/enhanced_v_enhancements.html## Shortwave IR (Channel 7)[handler.gradient.ch07]
points =[{ units = 400, color ="#000000"},
{ units = 250, color ="#b9b9b9"},
{ units = 249.999, color ="#00ffff"},
{ units = 240, color ="#000080"},
{ units = 230, color ="#00ff00"},
{ units = 220, color ="#ffff00"},
{ units = 210, color ="#ff0000"},
{ units = 200, color ="#000000"},
{ units = 190, color ="#ffffff"}]## Water Vapor (Channels 8 and 9)[handler.gradient.ch08]
points =[{ units = 276, color ="#000000"},
{ units = 275.9, color ="#ff0000"},
{ units = 258, color ="#ffff00"},
{ units = 250, color ="#000070"},
{ units = 233, color ="#ffffff"},
{ units = 195, color ="#408020"},
{ units = 178, color ="#00ffff"}][handler.gradient.ch09]
points =[{ units = 276, color ="#000000"},
{ units = 275.9, color ="#ff0000"},
{ units = 258, color ="#ffff00"},
{ units = 250, color ="#000070"},
{ units = 233, color ="#ffffff"},
{ units = 195, color ="#408020"},
{ units = 178, color ="#00ffff"}]## Longwave IR (Channels 13, 14, and 15)[handler.gradient.ch13]
points =[{ units = 333, color ="#000000"},
{ units = 238, color ="#b9b9b9"},
{ units = 237.999, color ="#00ffff"},
{ units = 228, color ="#000080"},
{ units = 218, color ="#00ff00"},
{ units = 208, color ="#ffff00"},
{ units = 198, color ="#ff0000"},
{ units = 188, color ="#000000"},
{ units = 178, color ="#ffffff"}][handler.gradient.ch14]
points =[{ units = 333, color ="#000000"},
{ units = 238, color ="#b9b9b9"},
{ units = 237.999, color ="#00ffff"},
{ units = 228, color ="#000080"},
{ units = 218, color ="#00ff00"},
{ units = 208, color ="#ffff00"},
{ units = 198, color ="#ff0000"},
{ units = 188, color ="#000000"},
{ units = 178, color ="#ffffff"}][handler.gradient.ch15]
points =[{ units = 333, color ="#000000"},
{ units = 238, color ="#b9b9b9"},
{ units = 237.999, color ="#00ffff"},
{ units = 228, color ="#000080"},
{ units = 218, color ="#00ff00"},
{ units = 208, color ="#ffff00"},
{ units = 198, color ="#ff0000"},
{ units = 188, color ="#000000"},
{ units = 178, color ="#ffffff"}][[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_0_countries_lakes.json"[[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_1_states_provinces_lakes.json"# GOES-17 ABI false color.[[handler]]
type="image"
origin ="goes17"
regions =["fd", "m1", "m2"]
channels =["ch02", "ch13"]
directory ="/home/pi/incoming/goes/goes17/{region:short|lower}/fc/{time:%Y-%m-%d}"
filename ="GOES17_{region:short}_FC_{time:%Y%m%dT%H%M%SZ}"
format ="jpg"
json =false# This reuses the GOES-16 contrast curve assuming it is identical[handler.remap.ch02]
path ="/usr/share/goestools/wxstar/wxstar_goes16_ch02_curve.png"# This reuses the GOES-16 LUT assuming it is identical[handler.lut]
path ="/usr/share/goestools/wxstar/wxstar_goes16_lut.png"[[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_0_countries_lakes.json"[[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_1_states_provinces_lakes.json"# Images relayed from Himawari-8.[[handler]]
type="image"
origin ="himawari8"
directory ="/home/pi/incoming/goes/himawari8/{region:short|lower}/{time:%Y-%m-%d}"
filename ="Himawari8_{region:short}_{channel:short}_{time:%Y%m%dT%H%M%SZ}"
format ="jpg"
json =false[[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_0_countries_lakes.json"[[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_1_states_provinces_lakes.json"# NWS text (weather reports).[[handler]]
type="text"
origin ="nws"
directory ="/home/pi/incoming/goes/nws/{time:%Y-%m-%d}"
filename ="{time:%Y%m%dT%H%M%SZ}_{awips:nnn}{awips:xxx}"
json =false# NWS images.[[handler]]
type="image"
origin ="nws"
directory ="/home/pi/incoming/goes/nws/{time:%Y-%m-%d}"
filename ="{time:%Y%m%dT%H%M%SZ}_{filename}"
format ="png"
json =false# Miscellaneous text.[[handler]]
type="text"
origin ="other"
directory ="/home/pi/incoming/goes/text/{time:%Y-%m-%d}"
filename ="{time:%Y%m%dT%H%M%SZ}_{filename}"
json =false# Store relayed GOES-15 full disks[[handler]]
type="image"
origin ="goes15"
regions =["fd"]
directory ="/home/pi/incoming/goes/goes15/{region:short|lower}/{time:%Y-%m-%d}"
filename ="GOES15_{region:short}_{channel:short}_{time:%Y%m%dT%H%M%SZ}"
crop =[-2374, 2371, -1357, 1347 ]
format ="jpg"
json =false[[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_0_countries_lakes.json"[[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_1_states_provinces_lakes.json"# Store relayed GOES-15 northern hemisphere region[[handler]]
type="image"
origin ="goes15"
regions =["nh"]
directory ="/home/pi/incoming/goes/goes15/{region:short|lower}/{time:%Y-%m-%d}"
filename ="GOES15_{region:short}_{channel:short}_{time:%Y%m%dT%H%M%SZ}"
crop =[-1864, 1447, -1357, -3]
format ="jpg"
json =false[[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_0_countries_lakes.json"[[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_1_states_provinces_lakes.json"# Store relayed GOES-15 southern hemisphere region[[handler]]
type="image"
origin ="goes15"
regions =["sh"]
directory ="/home/pi/incoming/goes/goes15/{region:short|lower}/{time:%Y-%m-%d}"
filename ="GOES15_{region:short}_{channel:short}_{time:%Y%m%dT%H%M%SZ}"
crop =[-1864, 896, -19, 1043 ]
format ="jpg"
json =false[[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_0_countries_lakes.json"[[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_1_states_provinces_lakes.json"# Store relayed GOES-15 US region[[handler]]
type="image"
origin ="goes15"
regions =["us"]
directory ="/home/pi/incoming/goes/goes15/{region:short|lower}/{time:%Y-%m-%d}"
filename ="GOES15_{region:short}_{channel:short}_{time:%Y%m%dT%H%M%SZ}"
crop =[-1312, 1542, -1327, -345]
format ="jpg"
json =false[[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_0_countries_lakes.json"[[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_1_states_provinces_lakes.json"# Store relayed GOES-15 special regions# No crop specified because it is expected to move around[[handler]]
type="image"
origin ="goes15"
regions =["si00", "si01", "si02", "si03", "si04"]
directory ="/home/pi/incoming/goes/goes15/{region:short|lower}/{time:%Y-%m-%d}"
filename ="GOES15_{region:short}_{channel:short}_{time:%Y%m%dT%H%M%SZ}"
format ="jpg"
json =false[[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_0_countries_lakes.json"[[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_1_states_provinces_lakes.json"# The following handler takes the same crop from the FD, NH, and US# products to get more frequent imagery of a smaller area on the# northern hemisphere. The crop region is a combination of the NH and# US crop regions.[[handler]]
type="image"
origin ="goes15"
regions =["fd", "nh", "us"]
crop =[-1312, 1447, -1327, -345]
directory ="/home/pi/incoming/goes/goes15/combine-north/{time:%Y-%m-%d}"
filename ="GOES15_{channel:short}_{time:%Y%m%dT%H%M%SZ}_{region:short}"
format ="jpg"
json =false[[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_0_countries_lakes.json"[[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_1_states_provinces_lakes.json"# The following handler takes the same crop from the FD and SH# products to get more frequent imagery of a smaller area on the# southern hemisphere.[[handler]]
type="image"
origin ="goes15"
regions =["fd", "sh"]
crop =[-1864, 896, -19, 1043 ]
directory ="/home/pi/incoming/goes/goes15/combine-south/{time:%Y-%m-%d}"
filename ="GOES15_{channel:short}_{time:%Y%m%dT%H%M%SZ}_{region:short}"
format ="jpg"
json =false[[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_0_countries_lakes.json"[[handler.map]]
path ="/usr/share/goestools/ne/ne_50m_admin_1_states_provinces_lakes.json"
server.py
#!/usr/bin/python
importpycurlimportsocketimportjsonimporttimeudp_ip="127.0.0.1"udp_port=8125next_update=time.time()+3goesStats={"packets_ok":0,"frequency":0,"packets_dropped":0,"gain":0,"reed_solomon_errors":0,"omega":0,"viterbi_errors":0}goes_json=json.dumps(goesStats)sock=socket.socket(socket.AF_INET,# Internet
socket.SOCK_DGRAM)# UDP
sock.bind((udp_ip,udp_port))whileTrue:data,addr=sock.recvfrom(1024)values=data.split("\n")if("packets_ok"invalues[0]):tmp=values[0].split(":")tmp2=tmp[1].split("|")goesStats["packets_ok"]=goesStats["packets_ok"]+int(tmp2[0])if("frequency"invalues[1]):tmp=values[1].split(":")tmp2=tmp[1].split("|")goesStats["frequency"]=tmp2[0]if("packets_dropped"invalues[1]):tmp=values[1].split(":")tmp2=tmp[1].split("|")goesStats["packets_dropped"]=goesStats["packets_dropped"]+int(tmp2[0])if("gain"invalues[2]):tmp=values[2].split(":")tmp2=tmp[1].split("|")goesStats["gain"]=tmp2[0]if("reed_solomon_errors"invalues[2]):tmp=values[2].split(":")tmp2=tmp[1].split("|")goesStats["reed_solomon_errors"]=tmp2[0]if("omega"invalues[3]):tmp=values[3].split(":")tmp2=tmp[1].split("|")goesStats["omega"]=tmp2[0]if("viterbi_errors"invalues[3]):tmp=values[3].split(":")tmp2=tmp[1].split("|")goesStats["viterbi_errors"]=tmp2[0]goes_json=json.dumps(goesStats)if(time.time()>=next_update):next_update=time.time()+3#client.write_points([goes_json])
influxstr="packets_ok value="+str(goesStats["packets_ok"])+"\nfrequency value="+goesStats["frequency"]+"\npackets_dropped value="+str(goesStats["packets_dropped"])+"\ngain value="+goesStats["gain"]+"\nreed_solomon_errors v
alue="+goesStats["reed_solomon_errors"]+"\nomega value="+goesStats["omega"]+"\nviterbi_errors value="+goesStats["viterb
i_errors"]#print(influxstr)
try:crl=pycurl.Curl()crl.setopt(crl.URL,'http://{ip}:8086/write?db=GOES_STATS')crl.setopt(crl.POSTFIELDS,influxstr)crl.perform()crl.close()goesStats["packets_ok"]=0goesStats["packets_dropped"]=0except:print("failed upload")