Changes to the web interface
Web index.html:
- Input field "APRS-IS status" and "Current RX Frequency" are now
"readonly".
- These fields are not intended for input. They show status. User now
sees that he cannot enter anything.
- Upon request, frequency resolution is now 100 Hz. This was the only
point for implementing this feature.
But have in mind that this equpment is not such frequency stable at
all.
Web index.html and taskWebserver.cpp:
- New function jsonLineFromDouble now displays lora_freq_rx_curr with
decimal point (instead of my previous hack int(*= 1000))
aprs-is login:
aprs-is servers answers on login with i.e.
# logresp DL9SAU-T1 unverified, server T2EISBERG
This answer was not intuitive and I checked the word " verified" for
successful login.
In other aprs-is client software, I read they parsed "logresp" as answer
from aprs-is servers.
=> My change
+ if (s.indexOf(" logresp") == -1) { aprsis_status = "Error:
Login denied: " + s; aprsis_status.trim(); goto on_err; }
+ if (s.indexOf(" verified") == -1) { aprsis_status = "Notice:
server responsed not verified: " + s; aprsis_status.trim();
An other response of a server is:
user DL9SAU-TEST pass -1 scripttest 0.1
# Invalid username format
We'll send Login denied here, with that message-
[Reason for deny is: len(SSID) is max 2 by definition of the
aprs-is-authors.]
If password is wrong, we stay connected.
Notice message in aprsis_staus shows in the web-interface what went
wrong.
<inputname="lora_freq"id="lora_freq"type="number"min="144.000"max="928.000"step="0.001"title="LoRa center frequency between 433.001 and 928.000">
</div>
<divclass="grid-container halves">
<div>
<labelfor="txPower">dBm</label>
<inputname="txPower" id="txPower"type="number"min="0"max="23"title="LoRa TX Power. Range 0 to 23dBm">
<labelfor="lora_freq">Main Frequency [MHz]</label>
<inputname="lora_freq"id="lora_freq"type="number"min="144.0000"max="928.0000"step="0.0001"title="LoRa center frequency between 144.0001 and 928.0000. I.e. 433.775">
</div>
<div>
<labelfor="lora_speed">Speed</label>
@ -71,11 +67,42 @@
<optionvalue="210">BW 125khz CR 4:7 SF 12 (209bps)</option>
<optionvalue="180">BW 125khz CR 4:8 SF 12 (183bps)</option>
<optionvalue="610">BW 125khz CR 4:8 SF 10 (610bps)</option>
<optionvalue="1200">BW 125khz CR 4:5 SF 9 (PL,UA, 1200bps)</option>
<optionvalue="1200">BW 125khz CR 4:5 SF 9 (1200bps)</option>
<optionvalue="6000">BW 125khz CR 4:5 SF 7 (BBS, 6000bps)</option>
<optionvalue="21000">BW 500khz CR 4:5 SF 7 (BBS, 21000bps)</option>
<inputname="lora_tx_en"id="lora_tx_en"type="checkbox"value="1"title="Allow TX on LoRa. Disable this if you like to prevent TX under all circumstances (i.e. if your tracker is behind an rx-amplifier)">
</div>
<div>
<labelfor="txPower">TX power [dBm]</label>
<inputname="txPower"id="txPower"type="number"min="0"max="23"title="LoRa TX Power. Range 0 to 23dBm">
</div>
<div>
<labelfor="lora_cradapt">Automatic CodeRate adaption on TX</label>
<inputname="lora_cradapt"id="lora_cradapt"type="checkbox"value="1"title="Enable automatic CR adaption. Use this only if you are not a WIDE1 or WIDE2 digi. Still testing, if it behaves good to our network. Currently works only for SF12 modes, because for SF 10 and lower the code for programming CR+SF+BW-combination has not been written yet">
</div>
</div>
<divclass="grid-container halves">
<div>
<labelfor="lora_rssi2p">Add SNR and RSSI to path</label>
<selectid="lora_rssi2p"name="lora_rssi2p">
<optionvalue="0">off</option>
<optionvalue="1">To RF during digipeating</option>
<optionvalue="2">To KISS</option>
<optionvalue="4">To APRSIS</option>
<optionvalue="3">To RF and KISS</option>
<optionvalue="5">To RF and APRSIS</option>
<optionvalue="6">To KISS and APRSIS</option>
<optionvalue="7">To RF and KISS and APRSIS</option>
</select>
</div>
<div>
<labelfor="snraprsis">SNR/RSSI-encoding on kiss: compatible to APRS-IS?</label>
<inputname="snraprsis"id="snraprsis"type="checkbox"value=1title="Add snr+rssi at last digipeater, without digipeated flag. Use this for APRSIS connections. If you have connected a digipeater software to kiss, this option has to be switched off">
</div>
</div>
<divclass="grid-container full">
<h5class="u-full-width">Station Settings</h5>
@ -83,11 +110,11 @@
<divclass="grid-container quarters">
<div>
<labelfor="aprs_callsign">Callsign and SSID</label>
<inputclass="u-full-width"type="text"minlength="3" name="aprs_callsign"placeholder="NOCALL-1"id="aprs_callsign"title="your callsign with SSID">
<inputclass="u-full-width"type="text"minlength="3"maxlength="9"name="aprs_callsign"placeholder="NOCALL-1"id="aprs_callsign"title="your callsign with SSID">
</div>
<div>
<labelfor="aprs_relay_path">Relay Path</label>
<inputclass="u-full-width"type="text"minlength="0"name="aprs_relay_path"id="aprs_relay_path"title="APRS path, use the shortest as possible, ECHO or WIDE1-1">
<inputclass="u-full-width"type="text"minlength="0"name="aprs_relay_path"id="aprs_relay_path"title="APRS path, use the shortest as possible, ECHO or WIDE1-1. Only value '1' enables dest-path-digi-notation (like DL9SAU>APRS-1:..) instead of Path ..,WIDE1-1:..">
</div>
<div>
<labelfor="aprs_s_table">Symbol Table</label>
@ -95,20 +122,24 @@
</div>
<div>
<labelfor="aprs_symbol">Symbol</label>
<inputclass="u-full-width"type="text"minlength="1"maxlength="1"name="aprs_symbol"id="aprs_symbol"title="select an icon, for example: [ - jogger, Y - jacht, > - car, b - bike">
<inputclass="u-full-width"type="text"minlength="1"maxlength="1"name="aprs_symbol"id="aprs_symbol"title="select an icon, for example: [ - jogger, Y - jacht, > - car, b - bike">
</div>
<div>
<labelfor="aprs_alt">Show Altitude</label>
<inputname="aprs_alt"id="aprs_alt"type="checkbox"value="1"title=" show altitude as frame part">
</div>
</div>
<div>
<labelfor="show_cmt">Show Comment</label>
<inputname="show_cmt"id="show_cmt"type="checkbox"value="1"title=" show comment text">
</div>
</div>
<div>
<labelfor="aprs_comment">Comment</label>
<inputclass="u-full-width"type="text"minlength="0"maxlength="64"name="aprs_comment"id="aprs_comment"title=" personal comment">
<inputname="aprs_comm_rt"id="aprs_comm_rt"type="checkbox"value="1"title="If enabled, comment text is sent only every tenth's transmission. Saves airtime.">
</div>
<div>
<labelfor="aprs_batt">Show Battery</label>
<inputname="aprs_batt"id="aprs_batt"type="checkbox"value="1"title=" show battery voltage after personal comment">
<inputname="sb_turn_slope"id="sb_turn_slope"type="number"min="5"max="255"title="Smart beaconing turn slope. Use 7 for pedestrian, 11 for low/mid speed and 26 for high speed. Recommended value: 26">
</div>
<div>
<labelfor="sb_turn_time">Turn Time [seconds]</label>
<inputname="sb_turn_time"id="sb_turn_time"type="number"min="5",title="Smart beaconing turn time. Wait at least this amount of seconds for next beacon. Recommended value: 30">
</div>
</div>
<divclass="grid-container quarters">
<div>
<labelfor="gps_enabled">GPS enabled</label>
<inputname="gps_enabled"id="gps_enabled"type="checkbox"value="1"title="enable or disable GPS">
</div>
</div>
<div>
<labelfor="kiss_myloc_ok">Accept own positions via KISS</label>
<inputname="kiss_myloc_ok"id="kiss_myloc_ok"type="checkbox"value="1"title="If set to true, we'll stop sending own position beacons if we heard a position from our call via kiss. Uncheck this, if you like to filter out those positions and keep sending it by this device.">
</div>
<div>
<labelfor="gps_sleep_ok">Allow GPS sleep while own positions received via KISS</label>
<inputname="gps_sleep_ok"id="gps_sleep_ok"type="checkbox"value="1"title="If we have a kiss client like aprsdroid, or a digipeater software, which sends own positions (with same call as ours), we pause sending own positions (neither fixed nor smart beaconing). Uncheck, if you have a display attached and still like to see your current GPS position. This option is only honored if configuration 'Accept own positions via KISS' enabled. Why? If your filter out own positions from and this device sends on it's own, it needs gps running ;)">
</div>
</div>
<divclass="grid-container full">
<h6class="u-full-width">Additional settings for secondary frequency:<br/>EXPERIMANTAL - USE WITH CARE!</h6>
</div>
<divclass="grid-container halves">
<div>
<labelfor="lora_freq_x">Secondary Frequency [MHz]</label>
(for cross-repeating or listening transmissions from igates)</label>
<inputname="lora_freq_x"id="lora_freq_x"type="number"min="0.0000"max="928.0000"step="0.0001"title="LoRa center frequency - must be different from main frequency and between 433.0001 and 928.0000 or 0 if not needed. I.e. 433.900">
</div>
<div>
<labelfor="txPower_x">TX power on secondary frequency [dBm]</label>
<inputname="txPower_x"id="txPower_x"type="number"min="0"max="23"title="LoRa TX Power on secondary frequency. Range 0 to 23dBm">
</div>
</div>
<divclass="grid-container halves">
<div>
<labelfor="lora_speed_x">Speed on secondary frequency</label>
<selectid="lora_speed_x"name="lora_speed_x">
<optionvalue="1200">BW 125khz CR 4:7 SF 9 (Fast Standard. default; use high speeds on the secondary frequency)</option>
<optionvalue="439">BW 31.25khz CR 4:5 SF 9 (300bps)</option>
<optionvalue="1367">BW 31.25khz CR 4:5 SF 7 (1200bps)</option>
<optionvalue="300">BW 125khz CR 4:5 SF 12 (default, 300bps)</option>
<optionvalue="240">BW 125khz CR 4:6 SF 12 (244bps)</option>
<optionvalue="210">BW 125khz CR 4:7 SF 12 (209bps)</option>
<optionvalue="180">BW 125khz CR 4:8 SF 12 (183bps)</option>
<optionvalue="610">BW 125khz CR 4:8 SF 10 (610bps)</option>
<optionvalue="6000">BW 125khz CR 4:5 SF 7 (BBS, 6000bps)</option>
<optionvalue="21000">BW 500khz CR 4:5 SF 7 (BBS, 21000bps)</option>
</select>
</div>
</div>
<divclass="grid-container halves">
<div>
<labelfor="rx_qrg">RX on frequencies</label>
(Only honored, if we are NOT configured as WIDE1 or WIDE2 digi. If set to both frequencies: Ratio depends on how many packets are received on each qrg in a 10min window; we stay 20s on one qrg.)
<selectid="rx_qrg"name="rx_qrg">
<optionvalue="1">RX on main frequency</option>
<optionvalue="2">RX on secondary frequency</option>
<inputname="aprsis_en"id="aprsis_en"type="checkbox"value="1"title="If we are configured as WIFI client, connet to the APRS-IS net">
</div>
<div>
<labelfor="aprsis_srv_h">Server Name</label>
<inputtype="text"name="aprsis_srv_h"id="aprsis_srv_h"title="Server name or IP Address. I.e. euro.aprs2.net">
</div>
<div>
<labelfor="aprsis_srv_p">TCP Port</label>
<inputtype="number"name="aprsis_srv_p"id="aprsis_srv_p"min="1"max="65535"title="TCP Port, i.e. 14580">
</div>
<div>
<labelfor="aprsis_fltr">Filter (optional)</label>
<inputtype="text"name="aprsis_fltr"id="aprsis_fltr"title="Request server-site filter (may be left empty). See http://www.aprs-is.net/javAPRSFilter.aspx"placeholder="may be left blank">
<inputtype="text"name="aprsis_call"id="aprsis_call"minlength="3"maxlength="9"title="Use this callsign for the APRS-IS connection. If not configured, your default callsign is used."placeholder="may be left blank">
</div>
<div>
<labelfor="aprsis_pw">Password (required)</label>
<inputtype="password"name="aprsis_pw"id="aprsis_pw"title="Your password for the APRS-IS connection.">
</div>
<div>
<labelfor="aprsis_2rf">Allow traffic from inet to rf</label>
<inputname="aprsis_2rf"id="aprsis_2rf"type="checkbox"value="1"title="Gate APRS-IS traffic to rf (will be encoded in 3rd-party format)">
This is the RadioHead Packet Radio library for embedded microprocessors. It provides a complete object-oriented library for sending and receiving packetized messages via a variety of common data radios and other transports on a range of embedded microprocessors.
The version of the package that this documentation refers to can be downloaded from http://www.airspayce.com/mikem/arduino/RadioHead/RadioHead-1.119.zip You can find the latest version of the documentation at http://www.airspayce.com/mikem/arduino/RadioHead
You can also find online help and discussion at http://groups.google.com/group/radiohead-arduino Please use that group for all questions and discussions on this topic. Do not contact the author directly, unless it is to discuss commercial licensing. Before asking a question or reporting a bug, please read
Caution: Developing this type of software and using data radios successfully is challenging and requires a substantial knowledge base in software and radio and data transmission technologies and theory. It may not be an appropriate project for beginners. If you are a beginner, you will need to spend some time gaining knowledge in these areas first.