en-US/about_APRSMessenger.help.txt
TOPIC
about_APRSMessenger SHORT DESCRIPTION Sends messages via APRS. LONG DESCRIPTION The APRSMessenger module can send messages, bulletins, group bulletins, and announcements to APRS users, by using the APRS-IS network. APRS Limitations Any type of APRS message is limited to 67 characters in length. Should you attempt to use anything longer, this cmdlet will fail. In addition, no type of message may include the pipe character ('|') nor the tilde ('~'), while messages also cannot include an opening curly brace ('{'). This is due to limitations of the APRS specification itself. Connecting to APRS-IS All of the Send-* cmdlets require an APRS-IS server name to be specified. This is an APRS Tier 2 Network server, defaulting to rotate.aprs2.net, which is any one of their servers; however, best practice is to use the server that's closest to you. Select one from the following list: - rotate.aprs2.net (anywhere) - noam.aprs2.net (North America) - soam.aprs2.net (South America) - euro.aprs2.net (Europe and Africa) - asia.aprs2.net (Asia) - aunz.aprs2.net (Australia, New Zealand, and Oceania) Port 14580 is used by default, but that can be overridden with the -Port parameter. This module handles authentication internally, though the cmdlet `Get-APRSISPasscode` is provided for your convenience. If you do not specify a server or port, the APRS packet will be printed to the screen. This might be useful if you want to transmit it via some other means, such as through a locally-attached radio/TNC or an app like Direwolf. The following examples do not include a -Server or -Port parameter for clarity. Pretend that they're there. If you'd like to do this in practice, you can use the $PSDefaultParameterValues automatic variable. $PSDefaultParameterValues.Add('Send-APRSAnnouncement:Server','euro.aprs2.net') $PSDefaultParameterValues.Add('Send-APRSBulletin:Server', 'euro.aprs2.net') $PSDefaultParameterValues.Add('Send-APRSGroupBulletin:Server','euro.aprs2.net') $PSDefaultParameterValues.Add('Send-APRSMessage:Server', 'euro.aprs2.net') However, note that doing so will send **all** cmdlet output to APRS-IS. If this bothers you, use `-WhatIf`. Message Types The types of messages you can send are as follows: MESSAGES Short messages can be sent to other APRS users by using the Send-APRSMessage cmdlet. For example, if your friend's call sign were FR1END, and you were in North America, you would use the following cmdlet: PS> Send-APRSMessage -From N0CALL -To FR1END -Message "Hey, how's it going?" ACKNOWLEDGEMENTS AND REJECTIONS Optionally, APRS messages may request acknowledgement from the recipient. While APRSMessenger cannot receive acknowledgements (or any data, really), it can ask the recipient to respond. This assumes that the recipient's radio supports and is configured to send acknowledgements or rejection notices, and it assumes that your own radio (not PowerShell) can listen for them. You will need to make up a message identifier for this to work. It can be any five characters supported by APRS. You should stick to numbers and letters. PS> Send-APRSMessage -From N0CALL -To FR1END ` -Message "Are you there? It's important." -Acknowledgement 420 Check your radio, and if all works as intended, you will receive a message `ack420` if the message was acknowledged, or `rej420` if not. For more information, consult the APRS specification. ANNOUNCEMENTS APRS announcements are messages sent to any radio that can pick them up. They are tagged with an identifier that receiving radios may (or may not) use to filter them. To send an APRS announcement to anyone who might be listening for one: PS> Send-APRSAnnouncement -From GR8CLUB -AnnouncementID 'R' -Message ` "We will be providing communications for the road race on Sunday." GENERAL BULLETINS General bulletins are generally transmitted a few times an hour for a few hours, and typically contain time sensitive information (such as weather status). To send an APRS bulletin to anyone who might be listening for one: PS> Send-APRSBulletin -From GR8CLUB -BulletinID 2 -Message ` "Road race volunteers, listen to bulletins with group name RACE." Or, PS> Send-APRSBulletin -From GR8CLUB-13 -BulletinID 1 -Message ` "Rain in the forecast later. Should not affect road race." GROUP BULLETINS Group bulletins are targered toward a specific group. Receiving radios may choose to filter some or all. To send an APRS bulletin to a certain group who might be listening for one: PS> Send-APRSGroupBulletin -From GR8CLUB -BulletinID 2 -GroupName "RACE" ` -Message "Road race traffic net on 146.55 MHz simplex. W1DNS doing emcomm." PS> Send-APRSGroupBulletin -From GR8CLUB-13 -BulletinID 1 -GroupName "WX" ` -Message "There will be a SKYWARN net on the repeater tonight at 8:00 PM." WHEN TO USE ANNOUNCEMENTS OR BULLETINS As you've seen, there are multiple ways to broadcast data to multiple APRS users, and differentiating them can be difficult. In addition, how bulletins and announcements are handled by recipients' radios can never be guaranteed. In an attempt to clarify things, the APRS specification says this about general bulletins: "General bulletins are generally transmitted a few times an hour for a few hours, and typically contain time sensitive information (such as weather status)." About announcements: "Announcements are similar to general bulletins[…]. Announcements are transmitted much less frequently than bulletins (but perhaps for several days), and although possibly timely in nature they are usually not time-critical. "Announcements are typically made for situations leading up to an event, in contrast to bulletins which are typically used within the event. "Users should be alerted on arrival of a new bulletin or announcement." And, about group bulletins: "A receiving station can specify a list of bulletin groups of interest. The list is defined internally by the user at the receiving station. If a group is selected from the list, the station will only copy bulletins for that group, plus any general bulletins. If the list is empty, all bulletins are received and generate alerts." Sources: APRS 1.01 Specification, pp. 73-74 If you're still not sure after reading all that, you should try sending bulletins, group bulletins, or announcements over your local area, and see how your radio and other peoples' radios handle them. Example: Putting It All Together Here is an example where you could use APRS messaging to manage a club's weather station. Let's assume that a hypothetical Get-WeatherStationData cmdlet returns all of your collected weather data at any given moment, and the following script runs once per minute. For brevity, I am omitting APRS-IS connection data. --------------------------------------------------------------------------- #Requires -Module MyCoolWeatherStationModule $wxdata = (Get-MyCoolWeatherStation).Data $now = (Get-Date) # Send W1DNS an alert if the battery needs to be replaced. If ($wxdata.BatteryVoltage -lt 11 -and $now.Minute -eq 0) { Send-APRSMessage -From "GR8CLUB-13" -To "W1DNS" -Message ` "Please replace the battery in the weather station $($wxdata.Name)." } # Report if there's been a lightning strike detected. If ($wxdata.LightningStrikes -gt 0) { Send-APRSGroupBulletin -From "GR8CLUB-13" -AnnouncementID "L" -Message ` "A lightning strike was detected. Information: {0}" ` -f $wxdata.LightningStrikes[0] Clear-RecordedLightningStrikes } # Broadcast a weather report at thirty past the hour. If ($now.Minute -eq 30) { $Message = ( "Weather report: {0}° and {1}, {2}`" of rain, wind {3} MPH from {4}." -f $wxdata.Temperature, $wxdata.Conditions, $wxdata.RainfallPastHour, $wxdata.WindSpeed, $wxdata.WindDirection ) Send-APRSGroupBulletin -From "GR8CLUB-13" -AnnouncementID 'W' ` -Message $Message } # At midnight and noon, broadcast announcements for a club's weekly SKYWARN # net. On Sundays, send out a bulletin announcing tonight's net. If ($now.Hour % 12 -eq 0 -and $now.Minute -eq 0) { If ($now.DayOfWeek -ne "Sunday") { Send-APRSAnnouncement -From "GR8CLUB-13" -AnnouncementID "S" ` -Message "There will be a SKYWARN net on GR8CLUB's repeater " + "Sunday at 8:00 PM." } Else { Send-APRSBulletin -From "GR8CLUB-13" -BulletinID 1 -Message ` "The SKYWARN net is on GR8CLUB's repeater tonight at 8:00 PM." } } NOTE You must be a licensed amateur radio operator ("ham") in order to use this app. If you would like to get licensed, check out HamStudy.org, the ARRL, or your country's amateur radio organization -- or find a local club! Misuse of the APRS Tier 2 Network server may lead to you being rate-limited or banned from using this service. In that case, you'll need to figure out how to send your packets via RF. So, please don't abuse the network and make me regret writing this. SEE ALSO This project was created by Colin Cogle, W1DNS. However, if reporting APRS weather data is more your thing, check out my other project: https://github.com/rhymeswithmogul/aprs-weather-submit You can find the APRS 1.01 specification here: http://www.aprs.org/doc/APRS101.PDF KEYWORDS APRS, APRS-IS, ham radio, amateur radio, emergency communications, emcomm |