Difference between revisions of "AIS"

From wiki.opennauticalchart.org
Jump to: navigation, search
(AIS-catcher sites)
(Replaced content with " == AIS decoders ==")
 
(46 intermediate revisions by the same user not shown)
Line 1: Line 1:
== AIS sources ==
 
=== build your own receiver ===
 
* https://www.aiscatcher.org/howto
 
 
=== webSDR ===
 
Many stations allow AIS tuning, see [https://rx-tx.info/map-sdr-points?freq_of=&freq_to=&bands=1031&country=All&title=&qth=&url= Map of SDR Receivers].
 
On Windows, [https://vac.muzychenko.net/en/ virtual audio cable] and [https://support.marinetraffic.com/en/articles/9552953-aismon AISmon] works well.
 
* Bremerhaven, DE http://dl1bir.spdns.de:8073/#freq=161975000,mod=wfm,sql=-150
 
* Vlissingen, NL http://sdrpa3bbl.duckdns.org:1500/#freq=161975000,mod=wfm,sql=-150
 
* London, GB http://maritime.nkpa.co.uk:8073/#freq=161975000,mod=wfm,sql=-150
 
<code>
 
!AIVDM,1,1,,,8vjHWT@0Gh0TN1N>vCC0Qi0lnPAL`GFigwl?wnSwe7wvlOwwsAwwnSGmwvh0,0*57
 
{"class":"AIS","device":"stdin","type":8,"repeat":3,"mmsi":992356241,"scaled":true,"dac":1,"fid":31,"lat":51.4643,"lon":0.3112,"accuracy":false,"timestamp":"26T12:02Z","wspeed":14,"wgust":16,"wdir":105,"wgustdir":360,"humidity":74,"airtemp":13.9,"dewpoint":9.3,"pressure":1015,"pressuretend":"N/A","visgreater":false,"visibility":12.7,"waterlevel":30.0,"leveltrend":"N/A","cspeed":25.5,"cdir":360,"cspeed2":25.5,"cdir2":360,"cdepth2":31,"cspeed3":25.5,"cdir3":360,"cdepth3":31,"waveheight":25.5,"waveperiod":63,"wavedir":360,"swellheight":25.5,"swellperiod":63,"swelldir":360,"seastate":13,"watertemp":50.1,"preciptype":"N/A","salinity":51.0,"ice":"N/A"}
 
 
!AIVDM,1,1,,,8vjHWR00Gh05I1NBtkC0gwvlFR06EuOwgrVWwnSwe7wvlOwwsAwwnSGmwvh0,0*09
 
{"class":"AIS","device":"stdin","type":8,"repeat":3,"mmsi":992356232,"scaled":true,"dac":1,"fid":31,"lat":51.4982,"lon":0.0460,"accuracy":false,"timestamp":"26T12:02Z","wspeed":127,"wgust":127,"wdir":360,"wgustdir":360,"humidity":101,"airtemp":-102.4,"dewpoint":50.1,"pressure":1310,"pressuretend":"N/A","visgreater":false,"visibility":12.7,"waterlevel":3.3,"leveltrend":"N/A","cspeed":25.5,"cdir":360,"cspeed2":25.5,"cdir2":360,"cdepth2":31,"cspeed3":25.5,"cdir3":360,"cdepth3":31,"waveheight":25.5,"waveperiod":63,"wavedir":360,"swellheight":25.5,"swellperiod":63,"swelldir":360,"seastate":13,"watertemp":50.1,"preciptype":"N/A","salinity":51.0,"ice":"N/A"}
 
 
!AIVDM,1,1,,,8vjHWQ00GwwJlAN>g;C0gwvlFR06EuOwgquOwnSwe7wvlOwwsAwwnSGmwvh0,0*7F
 
{"class":"AIS","device":"stdin","type":8,"repeat":3,"mmsi":992356228,"scaled":true,"dac":1,"fid":31,"lat":51.4623,"lon":-0.3173,"accuracy":false,"timestamp":"26T12:02Z","wspeed":127,"wgust":127,"wdir":360,"wgustdir":360,"humidity":101,"airtemp":-102.4,"dewpoint":50.1,"pressure":1310,"pressuretend":"N/A","visgreater":false,"visibility":12.7,"waterlevel":0.0,"leveltrend":"N/A","cspeed":25.5,"cdir":360,"cspeed2":25.5,"cdir2":360,"cdepth2":31,"cspeed3":25.5,"cdir3":360,"cdepth3":31,"waveheight":25.5,"waveperiod":63,"wavedir":360,"swellheight":25.5,"swellperiod":63,"swelldir":360,"seastate":13,"watertemp":50.1,"preciptype":"N/A","salinity":51.0,"ice":"N/A"}
 
 
!AIVDM,1,1,,,8vjHWPh0Gh0f1aN<:SC0wwvlFR06EuOwgreGwnSwe7wvlOwwsAwwnSGmwvh0,0*13
 
{"class":"AIS","device":"stdin","type":8,"repeat":3,"mmsi":992356227,"scaled":true,"dac":1,"fid":31,"lat":51.4403,"lon":0.3927,"accuracy":false,"timestamp":"26T12:03Z","wspeed":127,"wgust":127,"wdir":360,"wgustdir":360,"humidity":101,"airtemp":-102.4,"dewpoint":50.1,"pressure":1310,"pressuretend":"N/A","visgreater":false,"visibility":12.7,"waterlevel":3.9,"leveltrend":"N/A","cspeed":25.5,"cdir":360,"cspeed2":25.5,"cdir2":360,"cdepth2":31,"cspeed3":25.5,"cdir3":360,"cdepth3":31,"waveheight":25.5,"waveperiod":63,"wavedir":360,"swellheight":25.5,"swellperiod":63,"swelldir":360,"seastate":13,"watertemp":50.1,"preciptype":"N/A","salinity":51.0,"ice":"N/A"}
 
</code>
 
* Edinburgh, GB https://websdr2.scotlandchat.co.uk/#freq=161975000,mod=wfm,sql=-150
 
<code>
 
!AIVDM,2,1,7,A,8>jHE700Gwr7HIVSwS;JPwtqFPC3b2o;gwl>0Dt1R9@1`b0PSb0>:gB;wvv00000,0*77
 
!AIVDM,2,2,7,A,001,0*20
 
{"class":"AIS","device":"stdin","type":8,"repeat":0,"mmsi":992351516,"scaled":true,"dac":1,"fid":31,"lat":56.0127,"lon":-3.2138,"accuracy":false,"timestamp":"25T13:42Z","wspeed":7,"wgust":127,"wdir":114,"wgustdir":360,"humidity":58,"airtemp":15.2,"dewpoint":-50.1,"pressure":1028,"pressuretend":"N/A","visgreater":false,"visibility":12.7,"waterlevel":30.0,"leveltrend":"N/A","cspeed":0.0,"cdir":335,"cspeed2":0.1,"cdir2":273,"cdepth2":5,"cspeed3":0.0,"cdir3":209,"cdepth3":10,"waveheight":0.2,"waveperiod":2,"wavedir":117,"swellheight":0.0,"swellperiod":28,"swelldir":171,"seastate":13,"watertemp":13.9,"preciptype":"N/A","salinity":51.0,"ice":"N/A"}
 
</code>
 
* Malaga, ES  http://ea7cl.duckdns.org:8073/#freq=161975000,mod=wfm,sql=-150
 
* Kalamata, GR http://sv3smg.ddns.net:8073/#freq=162025000,mod=wfm,sql=-150
 
* Mangalia, RO http://yo4cil.home.ro:8073/#freq=161975000,mod=wfm,sql=-150
 
* Sydney, AUS http://meryl.ddns.net:8073/#freq=161975000,mod=wfm,sql=-150
 
*
 
* ...
 
 
=== NMEA ===
 
AIShub used to offer a NMEA stream of all connected stations as a benefit for their contributors. From mid 2024 on, this service retired.
 
* <strike>https://www.aishub.net</strike>
 
 
==== Norway ====
 
Stream is filtered. Missing message types: 4/...
 
* https://www.kystverket.no/en/sea-transport-and-ports/ais/access-to-ais-data/
 
** tcp://153.44.253.27:5631
 
 
==== Florida ====
 
Reception area is limited.
 
* http://ssia-ais.erau.edu/
 
** tcp://ssia-ais.erau.edu:4000
 
 
==== AIS-catcher sites ====
 
* https://kx1t.com/ais
 
** <code>curl -s https://kx1t.com/ais/api/sse |grep 'data:' | awk '{print $2}'</code>
 
* https://mgoorman.nl
 
* http://anz-ais.ddns.net:8100
 
* https://www.aiscatcher.org/wageningen/
 
* ...
 
 
=== API ===
 
* https://www.aishub.net
 
* https://aisstream.io
 
** <code>wscat -c wss://stream.aisstream.io/v0/stream -w 300 -x '{"APIKey": "***", "BoundingBoxes": [[[-180, -90],[180, 90]]], "FilterMessageTypes":["SafetyBroadcastMessage","LongRangeAisBroadcastMessage","BinaryBroadcastMessage","GroupAssignmentCommand"]}'</code>
 
 
=== Historic ===
 
* ...
 
  
 
== AIS decoders ==
 
== AIS decoders ==
=== Ais Decoder ===
 
* https://arundaleais.github.io/docs/ais/ais_decoder.html (WIN)
 
 
=== gpsdecode ===
 
* https://gpsd.gitlab.io/gpsd/gpsdecode.html
 
* <code>nc 153.44.253.27 5631 | gpsdecode | grep '"type":8'</code>
 
<pre>
 
{"class":"AIS","device":"stdin","type":8,"repeat":0,"mmsi":257057800,"scaled":true,
 
"dac":200,"fid":10,"vin":"00000000","length":215,"beam":60,"shiptype":8440,"shiptype_text":"Illegal ship type value.",
 
"hazard":5,"hazard_text":"Unknown","draught":0,"loaded":0,"loaded_text":"N/A (default)",
 
"speed_q":false,"course_q":false,"heading_q":false}
 
</pre>
 
<pre>
 
{"class":"AIS","device":"stdin","type":8,"repeat":0,"mmsi":215349000,"scaled":true,"dac":1,"fid":27,"linkage":90,"sender":0,"rtype":5,"rtype_text":"Ship route plan","start":"00-00T24:60Z","duration":262143,"waypoints":[{"lon":7.107972,"lat":62.844255},{"lon":7.112132,"lat":62.848032}]}
 
</pre>
 
<pre>
 
{"class":"AIS","device":"stdin","type":8,"repeat":0,"mmsi":215349000,"scaled":true,"dac":1,"fid":29,"linkage":90,"text":"LESSREMMAN - ELNES (VIA RORVIK; OUTSIDE) CAPT YURI"}
 
</pre>
 
* <code>nc ssia-ais.erau.edu 4000 | gpsdecode | grep -e '"type":8' -e '"type":27'</code>
 
<pre>
 
{"class":"AIS","device":"stdin","type":27,"repeat":0,"mmsi":368429323,"scaled":true,"status":"Not defined","accuracy":true,"lon":-81.0,"lat":29.2,"speed":0,"course":511,"raim":true,"gnss":false}
 
</pre>
 
<pre>
 
{"class":"AIS","device":"stdin","type":8,"repeat":0,"mmsi":369493715,"scaled":true,"dac":366,"fid":56,"data":"256:a83746ce99bb9edbd3eebb88bb7dcecba01df41d94f9397136c0c97eb4af8d69"}
 
</pre>
 
<pre>
 
{"class":"AIS","device":"stdin","type":8,"repeat":0,"mmsi":369493715,"scaled":true,"dac":366,"fid":57,"data":"512:bf68e50cc47b8ae14771ed1a0c075bfb60f82bb9ffec80211e4aad32b4edac38b33a6b4280f403d0dff4069a452f9cd51dfc44285226e53d7f337377f15829d6"}
 
</pre>
 
==== missing/problems ====
 
* Text Telegram does not decode!
 
<pre>
 
{"class":"AIS","device":"stdin","type":6,"repeat":0,"mmsi":538007497,"scaled":true,"seqno":1,"dest_mmsi":212848000,"retransmit":false,"dac":1,"fid":0,"data":"96:8040494e05054d48120d612e"}
 
</pre>
 
* also valid, 'Illegal ship type' decoded! see https://unece.org/fileadmin/DAM/trans/doc/2013/sc3wp3/ECE-TRANS-SC3-WP3-2013-05e.pdf
 
<pre>
 
{"class":"AIS","device":"stdin","type":8,"repeat":0,"mmsi":257303700,"scaled":true,"dac":200,"fid":10,"vin":"00000000","length":114,"beam":36,"shiptype":8450,"shiptype_text":"Illegal ship type value.","hazard":5,"hazard_text":"Unknown","draught":150,"loaded":0,"loaded_text":"N/A (default)","speed_q":false,"course_q":false,"heading_q":false}
 
</pre>
 
* does not decode!
 
<pre>
 
{"class":"AIS","device":"stdin","type":8,"repeat":0,"mmsi":257605000,"scaled":true,"dac":265,"fid":1,"data":"512:02017cf22f19aa2bc00f83af410ade2bc2dffbf6bff7822bc50fd3bbbffee02bc00f9874c049812bc140019c3ffd542bc0a017a6fee9842bc0787ea28bd27600"}
 
</pre>
 
 
=== Maritec online AIS decoder ===
 
* https://www.maritec.co.za/aisvdmvdodecoding
 
 
=== pyais ===
 
* https://github.com/M0r13n/pyais
 
* <code>pipx install pyais</code>
 
* <code>pipx ensurepath</code>
 
* <code>nc 153.44.253.27 5631 | ais-decode --json | grep '"msg_type": 8'</code>
 
<pre>
 
{"msg_type": 8, "repeat": 0, "mmsi": 257057800,
 
"dac": 200, "fid": 10, "vin": "00000000", "length": 21.5, "beam": 6.0, "shiptype": 8440,
 
"hazard": 5, "draught": 0.0, "loaded": 0,
 
"speed_q": false, "course_q": false, "heading_q": false}
 
</pre>
 
<pre>
 
{"msg_type": 8, "repeat": 0, "mmsi": 215349000, "dac": 1, "fid": 27,
 
"data": "FwFAGPP//3ggjnij9kTwQREIR+t9QIGPWI/RpYEAV0kfnN4B/oNCP0lbA/56ZH7oMAfMqQkAPXgPnOUSBujgIEAnJCF1QEOc0Uhdt0CLKQCQxYXBGjYZIXqkAkLbgkK4VwS3FHSHEE4JngLpEMz8"}
 
</pre>
 
<pre>
 
{"msg_type": 8, "repeat": 0, "mmsi": 215349000, "dac": 1, "fid": 29, "data": "FwUw4VOC2BYVIQEyChYkGAdIlCnI"}
 
</pre>
 
 
=== aisdecode ===
 
* https://github.com/madpsy/aisdecode/
 
* <code>./aisdecode-linux-amd64 -log-all-decodes decoded</code>
 
 
=== AIS-catcher ===
 
* input: https://docs.aiscatcher.org/configuration/input/tcp/
 
* output: https://docs.aiscatcher.org/configuration/output/console/
 
* web view: https://docs.aiscatcher.org/configuration/output/web-viewer/
 
* <code>AIS-catcher -t txt://153.44.253.27:5631 -o 5 -N 8101 GEOJSON false MESSAGE true REALTIME false</code>
 

Latest revision as of 07:56, 12 October 2025

AIS decoders