{"id":16954,"date":"2026-03-15T21:39:01","date_gmt":"2026-03-16T03:39:01","guid":{"rendered":"https:\/\/cmolnar.com\/?page_id=16954"},"modified":"2026-03-15T21:39:02","modified_gmt":"2026-03-16T03:39:02","slug":"tempest-weather-to-aprs-weather-string","status":"publish","type":"page","link":"https:\/\/cmolnar.com\/?page_id=16954","title":{"rendered":"Tempest Weather to APRS Weather String"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">The Tempest weather uses an API on Weatherfunnel that can be accessed to create an APRS string. You will need to have the appropriate access token from weather funnel.  A quick Google search will show you how to get that. Must have a Weatherfunnel (Tempest) account.  There is some documentation as well on the Weatherfunnel API that may be worth reading.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/weatherflow.github.io\/Tempest\/api\">https:\/\/weatherflow.github.io\/Tempest\/api<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Anyways, a quick and dirty PHP commend line script to output the proper weather APRS string.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\/\/the ######### in the following line must be your weather station ID. The xxxxxxxxxxxxxxxxxxx in the next line is your access token.\n\n$json_string = 'https:\/\/swd.weatherflow.com\/swd\/rest\/observations\/station\/########?token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';\n\n$jsondata = file_get_contents($json_string);\n$result = json_decode($jsondata, true);\n\/\/Un-Comment the next line if you want to see all of the values returned.\n\/\/print_r($result);\n$tempf=round((($result&#91;'obs']&#91;0]&#91;'air_temperature'])*1.8)+32);\n$wind_speed=round($result&#91;'obs']&#91;0]&#91;'wind_avg']*2.237);\n$wind_gust=round($result&#91;'obs']&#91;0]&#91;'wind_gust']*2.237);\n\/\/Make sure you change the Latitude\/Longitude Degrees in the first part of the echo line.\n\/\/\necho \"_3941.42N\/10446.43W_\".$result&#91;'obs']&#91;0]&#91;'wind_direction'].\"\/\".$wind_speed.\"G\".$wind_gust.\"T\".$tempf.\"P\".$result&#91;'obs']&#91;0]&#91;'precip'].\"h\".$resul\nt&#91;'obs']&#91;0]&#91;'relative_humidity'].\"b\".$result&#91;'obs']&#91;0]&#91;'barometric_pressure'].\"\\n\";\n?><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">My cron statement to generate a weather file for bpq32 is:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">*\/5 * * * * \/usr\/bin\/php \/usr\/local\/bpq32\/weatherdecode.php > \/usr\/local\/bpq32\/current.txt<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">And then in bpq32.cfg find the WXFileName and set to:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">WXFileName=\/usr\/local\/bpq32\/current.txt<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">You will need to restart the BPQ32 in order for any changes to take effect.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The Tempest weather uses an API on Weatherfunnel that can be accessed to create an APRS string. You will need to have the appropriate access token from weather funnel. A quick Google search will show you how to get that. Must have a Weatherfunnel (Tempest) account. There is some documentation as well on the Weatherfunnel [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"ocean_post_layout":"","ocean_both_sidebars_style":"","ocean_both_sidebars_content_width":0,"ocean_both_sidebars_sidebars_width":0,"ocean_sidebar":"","ocean_second_sidebar":"","ocean_disable_margins":"enable","ocean_add_body_class":"","ocean_shortcode_before_top_bar":"","ocean_shortcode_after_top_bar":"","ocean_shortcode_before_header":"","ocean_shortcode_after_header":"","ocean_has_shortcode":"","ocean_shortcode_after_title":"","ocean_shortcode_before_footer_widgets":"","ocean_shortcode_after_footer_widgets":"","ocean_shortcode_before_footer_bottom":"","ocean_shortcode_after_footer_bottom":"","ocean_display_top_bar":"default","ocean_display_header":"default","ocean_header_style":"","ocean_center_header_left_menu":"","ocean_custom_header_template":"","ocean_custom_logo":0,"ocean_custom_retina_logo":0,"ocean_custom_logo_max_width":0,"ocean_custom_logo_tablet_max_width":0,"ocean_custom_logo_mobile_max_width":0,"ocean_custom_logo_max_height":0,"ocean_custom_logo_tablet_max_height":0,"ocean_custom_logo_mobile_max_height":0,"ocean_header_custom_menu":"","ocean_menu_typo_font_family":"","ocean_menu_typo_font_subset":"","ocean_menu_typo_font_size":0,"ocean_menu_typo_font_size_tablet":0,"ocean_menu_typo_font_size_mobile":0,"ocean_menu_typo_font_size_unit":"px","ocean_menu_typo_font_weight":"","ocean_menu_typo_font_weight_tablet":"","ocean_menu_typo_font_weight_mobile":"","ocean_menu_typo_transform":"","ocean_menu_typo_transform_tablet":"","ocean_menu_typo_transform_mobile":"","ocean_menu_typo_line_height":0,"ocean_menu_typo_line_height_tablet":0,"ocean_menu_typo_line_height_mobile":0,"ocean_menu_typo_line_height_unit":"","ocean_menu_typo_spacing":0,"ocean_menu_typo_spacing_tablet":0,"ocean_menu_typo_spacing_mobile":0,"ocean_menu_typo_spacing_unit":"","ocean_menu_link_color":"","ocean_menu_link_color_hover":"","ocean_menu_link_color_active":"","ocean_menu_link_background":"","ocean_menu_link_hover_background":"","ocean_menu_link_active_background":"","ocean_menu_social_links_bg":"","ocean_menu_social_hover_links_bg":"","ocean_menu_social_links_color":"","ocean_menu_social_hover_links_color":"","ocean_disable_title":"default","ocean_disable_heading":"default","ocean_post_title":"","ocean_post_subheading":"","ocean_post_title_style":"","ocean_post_title_background_color":"","ocean_post_title_background":0,"ocean_post_title_bg_image_position":"","ocean_post_title_bg_image_attachment":"","ocean_post_title_bg_image_repeat":"","ocean_post_title_bg_image_size":"","ocean_post_title_height":0,"ocean_post_title_bg_overlay":0.5,"ocean_post_title_bg_overlay_color":"","ocean_disable_breadcrumbs":"default","ocean_breadcrumbs_color":"","ocean_breadcrumbs_separator_color":"","ocean_breadcrumbs_links_color":"","ocean_breadcrumbs_links_hover_color":"","ocean_display_footer_widgets":"default","ocean_display_footer_bottom":"default","ocean_custom_footer_template":"","ofc_meta_disable_footer_callout":"","ofc_meta_callout_button_url":"","ofc_meta_callout_button_txt":"","ofc_meta_callout_text":"","ofc_enable_fullscreen":"disable","ofc_fullscreen_speed":0,"ofc_fullscreen_nav":"enable","ofc_fullscreen_nav_pos":"right","ofc_fullscreen_nav_color":"","ofc_fullscreen_nav_tooltip_color":"","ofc_fullscreen_responsive":0,"osp_disable_panel":"default","osh_disable_topbar_sticky":"default","osh_disable_header_sticky":"default","osh_sticky_header_style":"default","osh_sticky_header_effect":"","osh_custom_sticky_logo":0,"osh_custom_retina_sticky_logo":0,"osh_custom_sticky_logo_height":0,"osh_background_color":"","osh_links_color":"","osh_links_hover_color":"","osh_links_active_color":"","osh_links_bg_color":"","osh_links_hover_bg_color":"","osh_links_active_bg_color":"","osh_menu_social_links_color":"","osh_menu_social_hover_links_color":"","footnotes":""},"class_list":["post-16954","page","type-page","status-publish","hentry","entry"],"_links":{"self":[{"href":"https:\/\/cmolnar.com\/index.php?rest_route=\/wp\/v2\/pages\/16954","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cmolnar.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/cmolnar.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/cmolnar.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cmolnar.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=16954"}],"version-history":[{"count":1,"href":"https:\/\/cmolnar.com\/index.php?rest_route=\/wp\/v2\/pages\/16954\/revisions"}],"predecessor-version":[{"id":16957,"href":"https:\/\/cmolnar.com\/index.php?rest_route=\/wp\/v2\/pages\/16954\/revisions\/16957"}],"wp:attachment":[{"href":"https:\/\/cmolnar.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=16954"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}