Difference between revisions of "AIS"

From wiki.opennauticalchart.org
Jump to: navigation, search
(webSDR)
Line 33: Line 33:
  
 
=== NMEA ===
 
=== NMEA ===
* <strike>https://www.aishub.net</strike> stopped NMEA stream mid 2024
+
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 ====
 
==== Norway ====
 
Stream is filtered. Missing message types: 4/...
 
Stream is filtered. Missing message types: 4/...
Line 44: Line 46:
 
** tcp://ssia-ais.erau.edu:4000
 
** tcp://ssia-ais.erau.edu:4000
  
=== API ===
+
==== AIS-catcher sites ====
* 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>
+
 
* https://kx1t.com/ais
 
* https://kx1t.com/ais
 
** <code>curl -s https://kx1t.com/ais/api/sse |grep 'data:' | awk '{print $2}'</code>
 
** <code>curl -s https://kx1t.com/ais/api/sse |grep 'data:' | awk '{print $2}'</code>
Line 55: Line 54:
 
* https://big-g.co.uk/ais/
 
* https://big-g.co.uk/ais/
 
* ...
 
* ...
 +
 +
=== 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 ===
 
=== Historic ===
 
* ...
 
* ...
  
=== AIS decoders ===
+
== AIS decoders ==
==== Ais Decoder ====
+
=== Ais Decoder ===
 
* https://arundaleais.github.io/docs/ais/ais_decoder.html (WIN)
 
* https://arundaleais.github.io/docs/ais/ais_decoder.html (WIN)
  
==== gpsdecode ====
+
=== gpsdecode ===
 
* https://gpsd.gitlab.io/gpsd/gpsdecode.html
 
* https://gpsd.gitlab.io/gpsd/gpsdecode.html
 
* <code>nc 153.44.253.27 5631 | gpsdecode | grep '"type":8'</code>
 
* <code>nc 153.44.253.27 5631 | gpsdecode | grep '"type":8'</code>
Line 86: Line 90:
 
</pre>
 
</pre>
  
==== pyais ====
+
=== pyais ===
 
* https://github.com/M0r13n/pyais
 
* https://github.com/M0r13n/pyais
 
* <code>pipx install pyais</code>
 
* <code>pipx install pyais</code>
Line 105: Line 109:
 
</pre>
 
</pre>
  
==== aisdecode ====
+
=== aisdecode ===
 
* https://github.com/madpsy/aisdecode/
 
* https://github.com/madpsy/aisdecode/
 
* <code>./aisdecode-linux-amd64 -log-all-decodes decoded</code>
 
* <code>./aisdecode-linux-amd64 -log-all-decodes decoded</code>
  
==== AIS-catcher ====
+
=== AIS-catcher ===
 
* input: https://docs.aiscatcher.org/configuration/input/tcp/
 
* input: https://docs.aiscatcher.org/configuration/input/tcp/
 
* output: https://docs.aiscatcher.org/configuration/output/console/
 
* output: https://docs.aiscatcher.org/configuration/output/console/
 
* web view: https://docs.aiscatcher.org/configuration/output/web-viewer/
 
* 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>
 
* <code>AIS-catcher -t txt://153.44.253.27:5631 -o 5 -N 8101 GEOJSON false MESSAGE true REALTIME false</code>

Revision as of 08:15, 27 September 2025

AIS sources

webSDR

Many stations allow AIS tuning, see Map of SDR Receivers. On Windows, virtual audio cable and AISmon works well.

!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"}

!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"}

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.

Norway

Stream is filtered. Missing message types: 4/...

Florida

Reception area is limited.

AIS-catcher sites

API

  • https://www.aishub.net
  • https://aisstream.io
    • wscat -c wss://stream.aisstream.io/v0/stream -w 300 -x '{"APIKey": "***", "BoundingBoxes": [[[-180, -90],[180, 90]]], "FilterMessageTypes":["SafetyBroadcastMessage","LongRangeAisBroadcastMessage","BinaryBroadcastMessage","GroupAssignmentCommand"]}'

Historic

  • ...

AIS decoders

Ais Decoder

gpsdecode

{"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}
{"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}]}
{"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"}
  • nc ssia-ais.erau.edu 4000 | gpsdecode | -e grep '"type":8' -e grep '"type":27'
{"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}
{"class":"AIS","device":"stdin","type":8,"repeat":0,"mmsi":369493715,"scaled":true,"dac":366,"fid":56,"data":"256:a83746ce99bb9edbd3eebb88bb7dcecba01df41d94f9397136c0c97eb4af8d69"}

pyais

{"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}
{"msg_type": 8, "repeat": 0, "mmsi": 215349000, "dac": 1, "fid": 27, 
"data": "FwFAGPP//3ggjnij9kTwQREIR+t9QIGPWI/RpYEAV0kfnN4B/oNCP0lbA/56ZH7oMAfMqQkAPXgPnOUSBujgIEAnJCF1QEOc0Uhdt0CLKQCQxYXBGjYZIXqkAkLbgkK4VwS3FHSHEE4JngLpEMz8"}
{"msg_type": 8, "repeat": 0, "mmsi": 215349000, "dac": 1, "fid": 29, "data": "FwUw4VOC2BYVIQEyChYkGAdIlCnI"}

aisdecode

AIS-catcher