table of contents - signal ksignalk.org/specification/1.0.4/doc/signalk.pdf · position –...

185
1.1 1.2 1.2.1 1.2.2 1.3 1.3.1 1.3.2 1.3.3 1.3.4 1.4 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.6 1.5 1.6 1.7 1.8 1.9 Table of Contents Signal K Specification Getting Started Using SK Developing with SK Data Model Full and Delta Models Multiple Values Metadata Sources API URLs and Ports REST API Streaming WebSocket API Subscription Protocol Discovery & Connection Establishment Notifications How Can I Help? Appendix A: Keys Reference (Vessel) Appendix B: Keys Reference (Others) Appendix C: Changelog Appendix D: Versioning 1

Upload: others

Post on 25-Jul-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

1.1

1.2

1.2.1

1.2.2

1.3

1.3.1

1.3.2

1.3.3

1.3.4

1.4

1.4.1

1.4.2

1.4.3

1.4.4

1.4.5

1.4.6

1.5

1.6

1.7

1.8

1.9

TableofContentsSignalKSpecification

GettingStarted

UsingSK

DevelopingwithSK

DataModel

FullandDeltaModels

MultipleValues

Metadata

Sources

API

URLsandPorts

RESTAPI

StreamingWebSocketAPI

SubscriptionProtocol

Discovery&ConnectionEstablishment

Notifications

HowCanIHelp?

AppendixA:KeysReference(Vessel)

AppendixB:KeysReference(Others)

AppendixC:Changelog

AppendixD:Versioning

1

Page 2: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

IntroductionThisisthedocumentationfortheSignalKSpecification1.0.4version,whichisavailableinthefollowingformats;

html(thisdocument)1.0.4pdfepubmobi

WhatisSignalK?

SignalKisamodernandopendataformatformarineuse.ItisanInternetfriendlystandardbuiltoncommonwebtechnologies,suchasJSONandWebSockets.SignalKisFreeandOpenSourcesoftware.ThisdocumentislicensedundertheCreativeCommonsCC-BY-SAlicense.AllSignalKsourcecodeislicensedundertheApacheLicense,Version2.0.SignalKisdevelopedintheopenwithhelpfromthemarinecommunity.Yourideasandfeedbackarevaluableandwelcome.

SignalKisdesignedtoworkinharmonywithaboat’sexistingnavigationequipmentwhichmayuseNMEA0183,NMEA2000orproprietarydataprotocols,convertingandenhancingthisinformationintoamodern“webfriendly”formatwhichcanbeshared,processedanddisplayedonthelatestwebapps,mobiledevicesandcloudservers.AtypicalNMEAbasedinstallationconsistsofanNMEAtoSignalKgatewayandanoptionalSignalKserver.ThegatewaytranslatesNMEAdataintoSignalKformatandtheservercanhostadditionalfunctionslikelogging,cloudintegrationanddataanalysis.

SignalKSpecification

2

Page 3: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

OnemajoradvantageofSignalKistheabilitytorepresentdatafromheterogeneoussources.InadditiontotraditionalNMEAsources,datafromgenericsensorsaswellasmodernSignalKenabledsensorscanbefusedintoasingledatamodelandasingleprotocolforaccessingthedata.AnothertypicalconfigurationisaSignalKserverwithadaptersandconvertersforthedifferentsources.

SignalKSpecification

3

Page 4: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

SignalKDataModel(A.K.A.TheSchema)

TheSignalKDataModelorschemadefinesauniversalmodelformarinerelatedinformationanditisspecifiedasaJSONschema.SeetheSignalKDataModelsectionfordetails.

Intraditionalmarinestandardstherearemanytightlydefinedmessages,eachwithaspecificpurpose,butthereisnodatamodeltorelatethem.Furthermore,anydevicewhichneedstodecodethosemessagesmusthaveacopyofthedatadictionaryinordertodoso.BydefiningadatamodelinJSONwecanmakethemessaginglayersimplerandeasilyextensible.Wedefineconsistentunitsandmetadataforeachdatapointinthemodel.Thismeansthataspecificdatapoint(e.g.COG)willalwaysbefoundatapredictableaddress.

ItalsomeansthatadisplaydevicesuchasachartplotterimplementingSignalKdoesnotneedtoknowaboutthedatamodelbeforehand.ItcanquerythecentralSignalKserverontheboattogetalltheinformationitneedstodisplayanydatapoint.Thismetadatamayincludeinformationsuchastheunitofmeasure,minimumandmaximumpermissiblevalues,alarmthresholdsandlocalizeddisplaynameforeverydatapointinthemodel.

SignalKMessageFormat

SignalKSpecification

4

Page 5: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

SignalKdefinesmethodsforcombiningarbitrarydatafromtheDataModelintovalidmessages.ThesemessagesareinUTF-8JSONformat.

Ratherthandefinehundredsofspecificmessages,SignalKhasafewcommonmessageformatswhichcancontainanycombinationofdatafromtheDataModel.Thismeansthatthereisnoneedtodefinenewmessagesforeverynewdatapointorcommandwhichneedstobesupported,ratherthemessageformatremainsthesameandonlythedatatransmittedneedstochange.Itmeansthatanydevicecanreadanymessageandadevicecanintroduceanewdatapointwhichcanbeunderstoodbyexistingdeviceswithouttheneedforfirmwareupgrades.

SignalKTransportLayer

SignalKdoesnotdefinethetransportorwireprotocol.SignalKmessagesareJSONtextandcanbesentoveralmostanyphysicaltransportlayer.However,theSignalKstandarddoesprovideguidanceonhowtoestablishaninitialconnection,handlenegotiation,subscription,anddisconnectionforagiventransport(e.g.TCP/IPorserial).

WherepossibleSignalKuseswellestablishedstandardslikeHTTPS,REST,andWebSockets.However,theseshouldnotbeinterpretedasrequireddependenciesofSignalK.Itisentirelypossibleandpermissibletoimplementtheprotocoloveranytransportthatyourimplementationrequires.

Thegoalistotrytoestablishsensibleconventionsforeachtransportinordertomakedevelopmentandinterconnectionmorepredictable.

SignalKImplementations

TheSignalKprojecthasOpenSourcereferenceserverimplementationsinNodeandJava.TherearealsoseveralwebappsprovidedbytheprojectwhichcanbeinstalleddirectlyintheNodeandJavaserversordownloadedfromSignalKGitHub.TherearealsocommercialSignalKapplicationsandsolutions,includingmobileappsavailableontheAppleAppandAndroidPlayStores,aswellashardwareproductslikeiKommunicate.

SignalKSpecification

5

Page 6: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

GettingStartedUsingSignalKYoucanstartusingSignalKby

connectingtothedemoserverontheInternetwithanywebbrowserinstallingeithertheNodeorJavaserveronanycomputergettingsomehardwareforyourboat,suchasaRaspberryPi,suitableUSBadaptersforyourboat’snetwork(NMEA0183,NMEA2000orrollyourownwithI2Csensors)andinstallingtheNodeorJavaserverpurchasingacommercialSignalKgatewaysuchasaniKommunicatebyDigitalYachtinstallingOpenPlotter,whichincludesaSignalKserver

Onceyouhaveaserverrunning(oryoustartbyusingthedemoserver)youcaninstallsomeSignalKsupportingmobileappssuchas

WilhelmSKbyScottBender(iOS)NMEARemotebyZapfware(iOS)OceanIX(Android)

UsingSK

6

Page 7: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

GettingStartedinDevelopingwithSignalKExampleHTML5ApplicationsSignalKJavaScriptClientiKommunicateDeveloper’sGuide

DevelopingwithSK

7

Page 8: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

SignalKDataModel

Formats

SignalKdefinestwodataformats—fullanddelta—forrepresentingandtransmittingdata.AllSignalKdataistransmittedasUTF-8JSON.

FullFormat

ThefullformatisconceptuallythesimplestrepresentationofdatainSignalK.ItcontainsallofthedatafromaSignalKnode,whichinthecaseofaSignalKservercouldmemanyhundredsofdatapoints.

{

"version":"1.0.0",

"self":"urn:mrn:signalk:uuid:705f5f1a-efaf-44aa-9cb8-a0fd6305567c",

"vessels":{

"urn:mrn:signalk:uuid:705f5f1a-efaf-44aa-9cb8-a0fd6305567c":{

"navigation":{

"speedOverGround":{

"value":4.32693662,

"$source":"ttyUSB0.GP",

"sentence":"RMC",

"timestamp":"2017-05-16T05:15:50.007Z"

},

"position":{

"value":{

"altitude":0.0,

"latitude":37.81479,

"longitude":-122.44880152

},

"$source":"ttyUSB0.GP",

"sentence":"RMC",

"timestamp":"2017-05-16T05:15:50.007Z"

},

"headingMagnetic":{

"value":5.55014702,

"$source":"ttyUSB0.II",

"sentence":"HDM",

"timestamp":"2017-05-16T05:15:54.006Z"

}

},

"name":"Motu",

"uuid":"urn:mrn:signalk:uuid:705f5f1a-efaf-44aa-9cb8-a0fd6305567c"

}

},

"sources":{

"ttyUSB0":{

"label":"ttyUSB0",

"type":"NMEA0183",

"GP":{

"talker":"GP",

"sentences":{

"RMC":"2017-04-03T06:14:04.451Z"

}

},

"II":{

"talker":"II",

"sentences":{

"HDM":"2017-05-16T05:15:54.006Z"

}

FullandDeltaModels

8

Page 9: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

}

}

}

}

Thereareseveraltoplevelattributesorkeyswhicharealwayspresentandotherswhichareoptional.TheversionkeyspecifieswhichversionoftheSignalKspecificationisbeingusedandmustalwayspresentinafullSignalKmodel.Alsoalwayspresentinthefullmodelistheselfkey.Thevalueofselfisthekeywithinthevesselsobjectwhichisthelocalboat.Effectively,itisapointerintothevesselsobject.

Belowthevesselsobjectisalistofvessels,identifiedbytheirMMSInumberoragenerateduniqueID.TheremaybemanyvesselsifdatahasbeenreceivedfromAISorothersources.Theformatforeachvessel’sdatausesthesamestandardSignalKstructurebutmaynothavethesamecontent;likelyyouwillnothaveasmuchdataaboutothervesselsasyouhaveaboutyourown.

Atthesamelevelasvesselsissources.Thiscontainsalistofsourcesthedatawasobtainedfrom.Eachdataobjectwithinavesselmayhavea$sourcekeywhichpointtoasourcewithinsources.SeveraldataobjectsmayreferencethesamesourcesinceasingleNMEAsentenceorPGNmaymaptomultiplekeysinSignalK.

Alternativelythesourcedatamaybeembeddeddirectlyinplaceofthe$sourcebyusingthesourcekey:

{

"vessels":{

"urn:mrn:signalk:uuid:705f5f1a-efaf-44aa-9cb8-a0fd6305567c":{

"navigation":{

"position":{

"value":{

"altitude":0.0,

"latitude":37.81479,

"longitude":-122.44880152

},

"source":{

"label":"ttyUSB0",

"type":"NMEA0183",

"talker":"GP",

"sentence":"PRMC"

},

"timestamp":"2017-05-16T05:15:50.007Z"

}

}

}

}

}

Formoreinformationonsources,seethesourcessection.

DataobjectsinSignalKareorganizedhierarchically,forexampledatarelatedtonavigationsuchasposition,speedthroughwaterandheadingareallorganizedunderanavigationsub-topicwithinthevesselobject.Eachdataobjecthasavaluepropertywhichholdstheactualvalueforthatspecifickey.Thevaluepropertymaycontainanumber,astringoranotherobject.SignalKkeysthatareobjectvaluedareobjectvaluedbecausethevaluesdon‘thavemuchsemanticmeaningindividually.Forexampleposition–latitudedoesn‘thavemuchmeaningwithoutanassociatedlongitude.Therefore,these(andaltitude)aregroupedtogetherinasinglenavigation.positionkey.

ThevaluesarealwaysSIunits,andalwaysthesameunitsforthesamekey.Therefore,speedOverGroundisalwaysmeterspersecond,neverknots,km/hr,ormiles/hr.Thismeansyouneverhavetosendunitswithdata,theunitsarespecificforakey,anddefinedinthedataschema.AsimplifiedversionoftheJSONschemawiththeunitsisavailableinKeysReferenceinAppendixA.Theunitsarealsoalwaysspecifiedinthevalues’metadatawhichisavailableviatheRESTAPIinthemeta.unitsproperty.Besidestheunitsproperty,metaprovidesalotofotherusefulinformationforconsumersofthedata.

FullandDeltaModels

9

Page 10: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Finally,eachdataobjectalsohasatimestamppropertywhichrepresentsthetimethatthevaluewasmeasured.TimestampsareinISO8601format–specificallytheRFC3339extensionformat,whichisslightlymorestrictthantheISOspecification.Forinstance,itrequiresfourdigityearsandspecifiesthatTisusedasaseparatorbetweenthedataandtimeportionsofthetimestamp.

Theorderingofkeysisalsonotimportant,theycanoccurinanyorder.Infact,ifyouaredesigningadevicewhichconsumesSignalKdata,itisimportanttorememberthattheJSONstandarddoesnotguaranteetheorderofpropertiesinanobject.YouMUSTNOTrelyonthedatayoureceivetoalwaysbeinthesameorderwithinaSignalKmessage.

ThefullformatismostusefulforgettingtheinitialstateofaSignalKsystem,forexamplewhenadisplaydevicefirstconnectstothenetworkorforrefreshingadevice‘sstatewhenitlosesanetworkconnection.

HoweversendingthefulldatamodeliswastefulofbothbandwidthandCPU,especiallywhenthereisalargeamountofavailabledata,ortheconsumingdeviceisonlyinterestedinasmallportionofit.Inthemajorityofcases,itispreferabletoonlyexchangesmall,specificportionsofthedata.

DeltaFormat

Byfar,themostcommonlyproducedSignalKformatisthedeltaformat.Conceptually,thedeltaisanupdatetoanexistingSignalKdatamodel.AdeviceconsumingdeltascouldeitherbuildupaviewoftheSignalKfulltreebyconsumingandcombiningdeltasoritcouldrequestfromaSignalKserverthecurrentfulltreemodelandapplydeltastothatastheyarereceived.ItisalsoentirelypossibleforadevicetoremainessentiallystatelessandtreatSignalKdeltasasindependentpacketsofdata,muchthesamewayasitwouldhandleNMEAsentencesorPGNs.

Anexampledeltamessageispresentedbelow.

{

"context":"vessels.urn:mrn:imo:mmsi:234567890",

"updates":[

{

"source":{

"label":"N2000-01",

"type":"NMEA2000",

"src":"017",

"pgn":127488

},

"timestamp":"2010-01-07T07:18:44Z",

"values":[

{

"path":"propulsion.0.revolutions",

"value":16.341667

},

{

"path":"propulsion.0.boostPressure",

"value":45500

}

]

}

]

}

Thetoplevelofadeltamessagecontainsanupdatespropertyandanoptionalcontextproperty.

{

"context":"vessels.urn:mrn:imo:mmsi:234567890",

"updates":[...]

}

FullandDeltaModels

10

Page 11: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

TheoptionalcontextpropertyrootstheupdatestoaparticularlocationintheSignalKtree.Ifcontextismissingitisassumedthatthedataisrelatedtotheselfcontext.Theselfcontextisthevesselobjectwhichtheselfpropertyofthefullmodelpointsto.

Contextisapathfromtherootofthefulltreetothecontainerobject,whichforvesselrelateddatamustrefertoavesseldirectlyundervessels.Thedelimiterinthecontextpathis.(period).Inthiscasethecontextisvessels.urn:mrn:imo:mmsi:234567890.Allsubsequentdataisrelativetothatlocation.

TheupdatespropertyholdsaJSONarrayofupdateobjects,eachofwhichmayhaveasourceproperty,atimestamppropertyandanarrayofvaluescontainingoneormorevalueobjects.

{

"source":{

"label":"N2000-01",

"type":"NMEA2000",

"src":"115",

"pgn":128267

},

"timestamp":"2014-08-15T16:00:00.081Z",

"values":[

{

"path":"navigation.courseOverGroundTrue",

"value":2.971

},

{

"path":"navigation.speedOverGround",

"value":3.85

}

]

}

Anupdatehasasinglesourcevalueanditappliestoeachofthevaluesitems.Incaseswheredatacanonlycomefromasinglesource,suchasanNMEA0183talkerconnectedtoaserialport,thenthesourcemaybeomitted.However,ifthedeltaisbeingpassedonbyaSignalKserverormultiplexerthensourcemustbefilledinbytheserversothatdownstreamconsumerscandiscernwheretheupdatecomesfrom.

IncaseswhereaSignalKproducerdoesnothaveaccesstoarealtimeclockorGPStimethentimestampshouldbeomitted.ElementsintheSignalKprocessingchain-suchasaserverreceivingdatafromaproducer-shouldfillintimestampifitismissingintheincomingdeltamessage.

Eachvalueitemisthensimplyapairofpathandvalue.Thepathmustbealeafpath:itmustbeapathtoaleaftheofthefullmodel.AleafiswheretheactualvalueoftheSignalKpropertyisandwheretimestamp,$sourceandvaluespropertiesareinthefullmodel.Thevalueisoftenascalar-asinglenumericvalue,asintheexampleabove-butitcanalsobeanobject.Forexampleanavigation.positionvaluewouldbeanobjectlike{"latitude":-41.2936935424,"longitude":173.2470855712}.

Therearesomestaticpropertiesinthefullmodelthatlackthesupportformultiplevaluesandmetadatasuchassourceandtimestamp.Anexampleisavessel‘sname,directlyunderthevessel‘sroot.Thisstaticdatamayappearinthedeltastream,forexamplewhenreceivedinAIStransmission.Inthiscasethevalueshouldbethesubtreeofthefullmodel,startingfromthevessel'sroot,withjusttherelevantparts,andthepathmustbeempty,indicatingthatthevalueshouldbemergedtothefullmodelmountedwherethedelta‘scontextpropertypoints:

{

"context":"vessels.urn:mrn:imo:mmsi:234567890",

"updates":[

{

"source":{...},

"timestamp":"2014-08-15T19:02:31.507Z",

"values":[

{

FullandDeltaModels

11

Page 12: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

"path":"",

"value":{

"name":"WRANGO"

}

}

]

}

]

}

DataQualityDatatransmittedinSignalKformatisassumedtobecorrectedforknownsensorinaccuraciessuchaswindangleoffsetduetomisalignmentofamastheadunitonthemast,butthereisnoguaranteethatdataisaccurate,orwithincertainbounds.Differentsourceswillhavedifferentdataqualityandnormalvigilanceisalwaysrequired.

MissingorInvalidDataAsensororgateway/servermaywanttosendamessageindicatingknowninvaliddataorthefactthatthesensorisfunctioningbutcannotprovidedata,forexamplewhenadepthsensorhasnobottomfix.InthiscasethevaluemustbeJSONnullinthedeltamessageandtheservermustreturnthevalueasaJSONnullintheRESTAPI.

MessageIntegrityManymessagingsystemsspecifychecksumsorotherformsofmessageintegritychecking.SignalKassumesareliabletransportwillguaranteeavalidmessage.ThisistrueofTCP/IPandsomeothertransportsbutnotalwaysthecase.Forothertransports(e.g.RS-232serial)aspecificextendeddataformatwillapply,whichissuitedtothattransport.Henceatthemessagelevelnochecksumorothertestsneedtobemade.

Encoding/DecodingTheJSONmessageformatissupportedacrossmostprogrammingenvironmentsandcanbehandledwithanyconvenientlibrary.

Onmicro-controllerswithlimitedRAMitmaybenecessarytoreadandwriteSignalKdatausingastreamingprocessratherthanreadingtheentiremessageintoRAMbeforeprocessing.ThereisanimplementationofSignalKJSONstreamingonanArduinoMega(4KRAM)intherelatedFreeboardproject.

FullandDeltaModels

12

Page 13: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

MultipleValuesforaKeyTherearetwousecasesformultiplevaluesforasingledatapoint

Multipleinstancesofacommondevice-e.g.twoenginesormultiplebatteries.Multipledevicesprovidingduplicatedata-multiplevaluesforthesameSignalKkeyfromdifferentsensors.Thisisfairlycommonasmostboatshavemultiplesensorscapableofgeneratingthesamedata(butnotnecessarilythesamevalue).Forexample,courseoverground(COG)maycomefrombothacompassandGPSoraboatmaybeequippedwithmultipledepthsounders.

MultipleInstancesofaCommonDevice

SomepartsoftheSignalKschemaaredeviceoriented.

Forexample,manyboatshavemultiplebatteries.Howevereachbatteryhasmultiple,commonquantitieslikevoltage,currentandtemperature.Inthiscase,itmakesmoresenseforthesevaluestobeorganizedbyinstance.Therefore,intheSignalKmodel,eachbatterybankisit’sowninstance:forexampleelectrical.batteries.starterandelectrical.batteries.house.Thenbeneaththatprefixtherearethevariouspropertiesforeachbattery.

ThisorganisationallowsauserinterfacetoorganisetheindividualreadingsinmeaningfulgroupsandallowsconsumerstoqueryallthevaluesrelatedtothatpieceofequipmentviatheRESTAPI.Furthermore,thisstructuremaintainstheprimaryrequirementthatagivendatavaluehaveafixedanduniqueURI,butgivesflexibilityinthestructureandcomplexitiesofdata.

Thesamedevicecentricorganisationisusedwithinthepropulsionsubschema,tosupportthecommonusecaseoftwoenginesviapropulsion.portandpropulsion.starboard.

Thevaluesstarter,house,portandstarboardareexamplesandnotspecifiedintheschema.YouarefreetouseapplicationspecificvalueswithintheregexpspecifiedintheJSONschema.

MultipleDevicesProvidingDuplicateData

Itisquitepossibleforakeyvaluetocomefrommorethanonedevice.ManymoderndeviceshaveabuiltinGPSreceiverandasaresultonanygivenboattheremaybeseveralsourcesofposition,speedoverground,andheading.Multipledepthsoundersarealsocommon,ofteninstalledtoportandstarboardonmonohullsailboatsorineachhullofacatamaran.

Giventhatthevalidityofthesevarioussourcesofdatamaychangeinacontext-specificway,SignalKprovidesamechanismforthesevaluestobegroupedtogethersothattheconsumerofthedatamaychoosewhichvalue(orvalues)todisplay .

Whendealingwithmultiplesourcesofdata,itbecomesimportanttoknowwherethedataiscomingfrom.SignalKprovidesamechanismforthatintheformofthesourcestoplevelobjectandreferencesintothatobjectviathe$sourceproperty.Seesourcesfordetailedinformationonthestructureofthesourcesobjectandhowitisreferencedbythe$sourceproperty.

ThefirstsourceofaparticulardatapointbecomesthedefaultsourceforthatdataandanormalSignalKobjectiscreated.

{

"self":"urn:mrn:signalk:uuid:c0d79334-4e25-4245-8892-54e8ccc8021d",

"version":"0.9.0",

"vessels":{

"urn:mrn:signalk:uuid:c0d79334-4e25-4245-8892-54e8ccc8021d":{

"uuid":"urn:mrn:signalk:uuid:c0d79334-4e25-4245-8892-54e8ccc8021d",

"navigation":{

"courseOverGroundTrue":{

"value":3.61562407843144,

"$source":"ttyUSB0.GP",

1

MultipleValues

13

Page 14: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

"timestamp":"2017-04-03T06:14:04.451Z"

}

}

}

}

}

Ithascomefromdevicesources.ttyUSB0.GP,wherefurtherdetailscanbefound.

Ifanothervaluewithdifferentsourcearrives,theSignalKserverwilladdthevaluesattributewithvaluesfromboththefirstandsecondsources.Theinitialsource‘sdatawillcontinuetopopulatethevaluepropertyinthekey.

{

"self":"urn:mrn:signalk:uuid:c0d79334-4e25-4245-8892-54e8ccc8021d",

"version":"0.9.0",

"vessels":{

"urn:mrn:signalk:uuid:c0d79334-4e25-4245-8892-54e8ccc8021d":{

"uuid":"urn:mrn:signalk:uuid:c0d79334-4e25-4245-8892-54e8ccc8021d",

"navigation":{

"courseOverGroundTrue":{

"value":3.615624078431440,

"$source":"ttyUSB0.GP",

"timestamp":"2017-04-03T06:14:04.451Z",

"values":{

"ttyUSB0.GP.RMC":{

"value":3.615624078431440,

"timestamp":"2017-04-03T06:14:04.451Z"

},

"n2k.ikommunicate.128267":{

"value":3.615624078431453,

"timestamp":"2017-04-03T06:14:04.451Z"

}

}

}

}

}

},

"sources":{

"ttyUSB0":{

"GP":{

"sentences":{

"RMC":"2017-04-03T06:14:04.451Z"

}

}

},

"ikommunicate":{

"2":{

"n2k":{

"src":"2",

"pgns":{

"128267":"2017-04-03T06:14:05.221Z"

}

}

}

}

}

}

MultipleValuesinDeltaMessages

Whenaclientsubscribestonavigation.courseOverGroundTrue,theyreceiveallthevaluesheld.Theupdatemessagedoesnotincludethevaluespath,thecaseabovelookslike:

{

MultipleValues

14

Page 15: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

"context":"vessels.urn:mrn:signalk:uuid:c0d79334-4e25-4245-8892-54e8ccc8021d",

"updates":[

{

"source":{

"label":"GPS-1",

"type":"NMEA0183",

"talker":"GP",

"sentence":"RMC"

},

"timestamp":"2017-04-03T06:14:04.451Z",

"values":[

{

"path":"navigation.courseOverGroundTrue",

"value":3.615624078431440

}

]

},

{

"source":{

"label":"actisense",

"type":"NMEA2000",

"src":"115",

"pgn":128267

},

"timestamp":"2017-04-03T06:14:04.451Z",

"values":[

{

"path":"navigation.courseOverGroundTrue",

"value":3.615624078431453

}

]

}

]

}

Individualupdatescanbedistinguishedbytheirsource.

Ifaclientwantsonlythevaluesofaspecificsourceitshouldsubscribetoapaththatincludesthefullpathundervaluesincludingthesourcereferencekeyofthesource.Thesourcereferenceshouldbeenclosedinsquarebrackets:navigation.courseOverGroundTrue.values[n2k./dev/ikommunicate.128267].TheclientcanretrievetherelevantdataviaRESTAPI.

Note:Theexactformatoftheupdatemessageisaffectedbythesubscriptionpolicy.Apolicyofinstantwillresultinchangesbeingsentimmediately,sotypicallyoneiteminvaluesperupdate.Apolicyoffixedwillresultinperiodicupdateswhichmaycontainmanyitemsinvalues.

Theupdateallowsgroupingvaluesbysource.

[1]Specifyingpreferredsourcesisstillanunder-developmentenhancementtotheNodeserver.

MultipleValues

15

Page 16: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

MetadataAkeypartofSignalKistheabilityfordataconsumerssuchasappsorMFDstoautomaticallyconfigurethemselvesbasedonsettingsretrievedfromtheserver.ThemetadatacomponentofSignalKfacilitatesthisthroughanoptionalmetaobjectattachedtoeachkeyintheSignalKdatamodel.

Rationale

Inanenvironmentwherevariouscriticalpiecesofinformationaredisplayedinmultiplelocationsitbecomesquitedifficulttoensurethatallofthesedevicesusethesamescaleandreactthesamewaytochangesinthedata.Thisisespeciallytrueinanenvironmentwherethesedevicesarenottiedtotheboat.AcrewmembermaybringapersonaltabletwiththemfortheirtacticianroleduringaWednesdayeveningraceoraharborpilotmaybringalaptoponboardloadedwithlocalcharts.Ifthesedevicescanloadcriticalconfigurationdatafromacentralserverontheboat,thissavestimeandpreventscostlyorevendisastrousmistakesfromoccurringduetomisconfigureddevices.

MetadataforaDataValue

Themetaobjectexistsatthesamelevelasvalueand$sourceineachkeyintheSignalKdatamodel.

{

"displayName":"PortTachometer",

"longName":"Engine2Tachometer(x60forRPM)",

"shortName":"Revs",

"description":"RevolutionsinHZ,measuredviatheWterminalonthealternator",

"gaugeType":"analog",

"units":"Hz",

"timeout":1,

"alertMethod":["visual"],

"warnMethod":["visual"],

"alarmMethod":["sound","visual"],

"emergencyMethod":["sound","visual"],

"zones":[

{"upper":50,"state":"alarm","message":"Stoppedorveryslow"},

{"lower":50,"upper":300,"state":"normal"},

{"lower":300,"upper":350,"state":"warn","message":"Approachingmaximum"},

{"lower":350,"state":"alarm","message":"Exceedingmaximum"}

]

}

Intheexamplemetaobjectabove,adefinitionisprovidedforananalogRPMgaugefortheportengine.Itprovidesafewdifferentoptionsfortheconsumertousetodisplaythenameofthemeasurementandexplicitlycallsouttheunitofmeasure.ItalsospecifiesarecommendeddisplayformatviagaugeType.

Thetimeoutpropertytellstheconsumerhowoftenitshouldexpecttowaitbeforeanewvaluearrives–oriftheconsumerispollingfordata,howlongitshouldwaitbeforerequestinganewvalue.Thisvalueisspecifiedinseconds,soforahighspeedGPSsensoritmay0.1oreven0.05.ThealertMethod,warnMethod,alarmMethodandemergencyMethodpropertiestelltheconsumerhowitshouldrespondtoanabnormaldatacondition.Presentlythevaluesforthesepropertiesaresoundandvisualandthemethodisspecifiedasanarraycontainingoneorbothoftheseoptions.Itisuptotheconsumertodecidehowtoconveythesealerts.

Thelastpropertyinthemetaobjectisthezonesarray.Thisprovidesaseriesofhintstotheconsumerwhichcanbeusedtoproperlysetarangeonadisplaygaugeandalsocolorsectorsofthegaugetoindicatenominalordangerousoperatingconditions.Italsotellstheconsumerwhichstatethedataisinforagivenrange.Combinedwiththealertmethodproperties,allSignalK

Metadata

16

Page 17: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

consumerscanreactthesamewaytoagivenstate.

ItisalsopossibleforaSignalKservertousethisinformationtomonitoranydatawhichhasametaobjectandraiseagenericalarmevent.SeethesectiononAlarmHandlingformore.

ImplicitMetadata

AllkeysintheSignalKspecificationmusthaveunitsandadescription.IfaclientrequeststhemetapropertyforavalidSignalKkeyviatheHTTPRESTinterface,theservermustreturntheunitsanddescription,evenifnovaluehaseverbeengeneratedforthatkey.

//GET/signalk/v1/api/vessels/self/environment/depth/belowKeel/meta

{

"units":"m",

"description":"Depthbelowkeel"

}

Seekeyswithmetadata.json

DefaultConfiguration

SignalKdoesnotprovideadefaultsetofmetadata,itisuptotheownerortheirinstallertoconfiguretheirSignalKenvironmentappropriatelyfortheirvessel.However,bycentralizingthisconfigurationtheywillonlyneedtodoitonetimeandanyfutureconsumerswillautomaticallyusethisconfiguration.

AlarmManagement

Analarmwatchissetbysettingthemeta.zonesarrayappropriately.Abackgroundprocessontheserverchecksforalarmconditionsonanyattributewithameta.zonesarray.Ifthekeysvalueiswithinazonetheserversetsanalarmkeysimilartovessels.self.notifications.[original_key_suffix],e.g.analarmsetonvessels.self.navigation.courseOverGroundTruewillbecomevessels.self.notifications.navigation.courseOverGroundTrue.

Theobjectfoundatthiskeyshouldcontainthefollowing:

{

"message":"anytext",

"state":"[normal|alert|warn|alarm|emergency]"

}

OtherBenefitsWhilenotstrictlypartoftheSignalKspecification,metadataconfigurationcouldbesharedbetweenboatsorevenprovidedbymanufacturersofproductionboatsorbycomponentsupplierssuchasengineorrefrigeratormanufacturers.Also,anydevicewhichimplementsSignalKshouldprovideabaselinemetadataconfiguration.Asthisstandardbecomesmorewidespread,lessindividualconfigurationwillneedtobeperformed.

Metadata

17

Page 18: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Metadata

18

Page 19: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

SignalKDataSourcesSignalKprovidesamethodtoidentifythespecificdeviceand—ifavailable—theNMEAsentenceorPGNwhichgeneratedaparticularvalue.Thisishandledintwoways.ThefirstiswithapointertoadeviceinthesourcessectionoftheSignalKdatamodel.WhenviewingafullSignalKdatamodel,thisisthemethodyouwillsee.EverySignalKdataobjectwillhavea$sourceproperty(notethedollarsignsigilwhichindicatesthevalueisapointer)whichcontainsadotseparatedpathtoanobjectrelativetothetop-levelsourcessection.WhenreceivingSignalKdataviadeltas,youmayalsoseesourcesreferencedthisway.However,allcurrentimplementationsofSignalKprovidesourcedatadirectlyembeddedinthedeltamessage.Thisisdoneusingthesourcepropertyofthedeltamessage.

PointerMethod

Anexampleofthepointermethodisshownbelow.

{

"version":"1.0.0",

"self":"vessels.urn:mrn:signalk:uuid:705f5f1a-efaf-44aa-9cb8-a0fd6305567c",

"vessels":{

"urn:mrn:signalk:uuid:705f5f1a-efaf-44aa-9cb8-a0fd6305567c":{

"uuid":"urn:mrn:signalk:uuid:705f5f1a-efaf-44aa-9cb8-a0fd6305567c",

"navigation":{

"speedOverGround":{

"value":4.32693662,

"$source":"ttyUSB0.GP",

"sentence":"RMC",

"timestamp":"2017-05-16T05:15:50.007Z"

}

}

}

},

"sources":{

"ttyUSB0":{

"label":"ttyUSB0",

"type":"NMEA0183",

"GP":{

"talker":"GP",

"sentences":{

"RMC":"2017-04-03T06:14:04.451Z"

}

}

}

}

}

ThisisafullSignalKmodelwithasingledatasourceandasingledataobject.Thenavigation.speedOverGroundobjectreferencesthettyUSB0.GPdeviceviathevalueofthe$sourceproperty.Inadditionto$source,thesentencepropertyisalsoincludedwhichidentifiesthespecificNMEA0183sentencerecievedfromthedatasourcewhichwasconvertedtoSignalK.

WithinthesourcessectiondevicesareconventionallyorganizedbythephysicalconnectiontotheSignalKdeviceandanidentifierforthespecificsourcedevice.Inthecaseabove,thefirstlevelofthehierarchyistheUNIXdeviceidentifierforaUSBserialportandthesecondlevelistheNMEA0183talkerIDofthepaddlewheelsensor.

DirectInclusionMethod

Thismethodisonlyimplementedindeltamessages.Anexampledeltawithaninlinesourceisshownbelow.

Sources

19

Page 20: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

{

"updates":[

{

"source":{

"label":"ttyUSB0",

"type":"NMEA2000",

"pgn":127251,

"src":"204"

},

"timestamp":"2017-04-15T20:38:26.709Z",

"values":[

{

"path":"navigation.rateOfTurn",

"value":-0.000412469

}

]

}

],

"context":"vessels.urn:mrn:imo:mmsi:338184312"

}

ThisparticularsourceisanNMEA2000devicesoithasthepgnandsrcproperties,butNMEA0183orothersourcetypesaresimilarlysupported.AnNMEA0183sourcewouldbestructuredlikethis:

{

"label":"NMEA0183-0",

"type":"NMEA0183",

"sentence":"RMC",

"talker":"GP"

}

Afinalexampleusinganon-NMEAsource,inthiscaseanI²Csensor.

{

"type":"I2C",

"label":"I²CBus#0",

"src":"14"

}

Here,srcistheaddressofthedeviceontheI²Cbus.

SourcesGroup

ASignalKdevicecapableofgeneratingafulldatamodelwillhaveatoplevel(i.e.atthesamelevelasvessels,versionandself)groupcalledsources.ThisgroupprovidesdetailedinformationabouteachnetworkbusconnectedtotheSignalKgatewayorserver.Sourcesareorganizedhierarchically,followingabus-source-typestructure.

Anexampleofmultiplesourcesisshownbelow.

{

"vhf":{

"label":"AISReceiver",

"type":"VHF",

"112334556":{

"ais":{

"aisType":15

}

},

"394299113":{

"ais":{

Sources

20

Page 21: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

"aisType":15

}

}

},

"ttyUSB0":{

"label":"NMEA0183",

"type":"NMEA0183",

"II":{

"talker":"II",

"sentences":{

"VHW":"2018-04-16T01:34:03.881Z"

}

}

},

"ttyUSB1":{

"label":"NMEA2000",

"type":"NMEA2000",

"3":{

"1":{},

"2":{},

"n2k":{

"src":"3",

"pgns":{

"126992":"2017-04-15T18:44:59.006Z"

}

}

}

}

}

YoumaynoticetwooddlinesintheNMEA2000source"3":"1":{}and"2":{}'.TheseareplaceholdersforNMEA2000"instance"values.TheseareheretoprovideavalidschemaforcertainNMEA2000PGNsrelatingtotemperature.BecausetemperaturepathsinthecurrentversioofSignalKdonothavetheinstanceinline,consumersmustlookattheinstancepartofthe$sourceorsourcepropertytodeterminewhichspecificsensorprovidedthedata.

Sources

21

Page 22: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

URLsandPortsWhileSignalKisatransport-agnisticprotocol,therearecertainconventionsthathavebeenestablishedforuseontheWebandbyclientsandserversusingHTTPandWebSockets.

Ports

TheSignalKHTTPandWebSocketservicesSHOULDbefoundontheusualHTTP/Sports(80or443).TheservicesSHOULDbefoundonthesameport,butmaybeconfiguredforindependentportsandMAYbeconfiguredforportsotherthanHTTP/S.

ASignalKserverMAYofferSignalKoverTCPorUDP,theseservicesSHOULDbeonport8375 .

IfanalternateportisneededitSHOULDbeanarbitraryhighportintherange49152–65535 .

URLPrefixTheSignalKapplicationsstartfromthe/signalkroot.Thisprovidessomeprotectionagainstnamecollisionswithotherapplicationsonthesameserver.ThereforetheSignalKentrypointwillalwaysbefoundbyloadinghttp(s)://«host»:«port»/signalk.

[1]ThishasnotbeenregisteredwithIANAyet.ItistheASCIIdecimalcodeforSK.[2]ThisistheprivateusesectionofIPportsspecifiedasreservedbyIANA.

1

2

URLsandPorts

22

Page 23: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

RESTAPISignalKproducersMAYimplementanHTTPAPIwhichconsumerscanusetoself-configure,pollforSignalKdataormakeconfigurationchanges.Asspecifiedintheprevioussection,allURLsforinteractingwithSignalKarerootedat/signalk.

GET/signalk

MakingaGETrequestto/signalkreturnsaJSONobjectwhichspecifiestheavailableSignalKendpointsandsomeinformationabouttheserver.Alsoseeversioningfordetailsaboutversionstrings.

{

"endpoints":{

"v1":{

"version":"1.0.0-alpha1",

"signalk-http":"http://localhost:3000/signalk/v1/api/",

"signalk-ws":"ws://localhost:3000/signalk/v1/stream"

},

"v3":{

"version":"3.0.0",

"signalk-http":"http://localhost/signalk/v3/api/",

"signalk-ws":"ws://localhost/signalk/v3/stream",

"signalk-tcp":"tcp://localhost:8367"

}

},

"server":{

"id":"signalk-server-node",

"version":"0.1.33"

}

}

Thisresponseisdefinedbythediscovery.jsonschema.Inthisexample,theserversupportstwoversionsofthespecification:1.alpha1and3.0.Foreachversion,theserverindicateswhichtransportprotocolsitsupportsandtheURLthatcanbeusedtoaccessthatprotocol‘sendpoint.Clientsshoulduseoneofthesepublishedendpointsbasedontheprotocolversiontheywishtouse.

TheservermustonlyreturnvalidURLsandshoulduseIANAstandardprotocolnamessuchashttp.However,aservermaysupportunofficialprotocolsandmayreturnadditionalprotocolnames;forexample,theresponseaboveindicatestheserversupportsasignalk-tcpstreamoverTCPatonport8367.

AservermayreturnrelativeURIsthattheclientmustresolveagainstthebaseoftheoriginalrequest.

Aservermayreturninformationaboutitselfintheserverproperty.Theidandversionschemeisnotdefinedaspartofthespecificationandthereisnoregistryforidvalues.

/signalk/«version»/api/Notethetrailingslashinthepath

ThebaseURLMUSTprovideaSignalKdocumentthatisvalidaccordingtothefullSignalKschemaspecification.ThecontentsSHOULDbeallthecurrentvaluesofthedataitemstheserverknowsintheSignalKfullformatasspecifiedinFullandDeltaModels.

/signalk/«version»/api/*

RESTAPI

23

Page 24: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

TheSignalKdataSHOULDbeavailableviatheRESTAPI.Forexample,GET/signalk/v1/api/vesselsshouldreturnallofthedataunderthevesselscontainerinJSONformat.Likewise,GET/signalk/v1/api/vessels/urn:mrn:signalk:uuid:c0d79334-4e25-4245-8892-54e8ccc8021dshouldreturndataforonespecificvessel.Inotherwords,thefullSignalKdatamodelSHOULDbetraversablebyanyclientmakingGETrequeststoanarbitrarydepth.

RESTAPI

24

Page 25: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

StreamingWebSocketAPI:/signalk/«version»/streamInitiatesaWebSocketconnectionthatwillstartstreamingtheserver’supdatesasSignalKdeltamessages.Youcanspecifythecontentsofthestreabyusingthesubscribequeryparameter.

ws://hostname/signalk/«version»/stream?subscribe=selfws://hostname/signalk/«version»/stream?subscribe=allws://hostname/signalk/«version»/stream?subscribe=none

Withnoqueryparameterthedefaultisself,whichwillstreamthedatarelatedtotheselfobject.allwillstreamalltheupdatestheserverseesandnonewillstreamonlytheheartbeat,untiltheclientissuessubscribemessagesintheWebSocketstream.

IfaserverdoesnotsupportsomestreamingoptionslistedinhereitmustrespondwithHTTPstatuscode501NotImplemented.

SeeSubscriptionProtocolformoredetails.

ConnectionHelloUponconnectiona'hello'messageissentasfollows:

{

"version":"1.1.2",

"timestamp":"2015-04-13T01:13:50.524Z",

"self":"123456789"

}

StreamingWebSocketAPI

25

Page 26: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

SubscriptionProtocol

Introduction

BydefaultaSignalKserverwillprovideanewWebSocketclientwithadeltastreamofthevessels.selfrecord,asupdatesarereceivedfromsources.E.g./signalk/v1/streamwillprovidethefollowingdeltastream,everytimethelogvaluechanges.

{

"context":"vessels.urn:mrn:imo:mmsi:234567890",

"updates":[

{

"source":{

"label":"N2000-01",

"type":"NMEA2000",

"src":"115",

"pgn":128275

},

"values":[

{

"path":"navigation.trip.log",

"value":43374

},

{

"path":"navigation.log",

"value":17404540

}

]

}

]

}

BelowwerefertoWebSockets,butthesameprocessworksinthesamewayoveranytransport.E.g.forarawTCPconnectiontheconnectioncausestheabovemessagetobesent,andsendingthesubscribemessageswillhavethesameeffectasdescribedhere.

Thiscanbealotofmessages,manyyoumaynotneed,especiallyifyourboathasmanysensors,orotherdatasources.Oftenyouwillwanttosubscribetoamuchsmallerrangeofdata.Especiallyforsinglevaluedisplays,itdoesnotmakesensetogettheentiredatastreamwhenonlyasinglevalueiswanted.

Firstyouwillwanttounsubscribefromthecurrentdefault(oryoumayhavealreadyconnectedwithws://hostname/signalk/v1/stream?subscribe=none).TounsubscribeallcreateanunsubscribemessagewithwildcardsandsendthemessageovertheWebSocketconnection:

{

"context":"*",

"unsubscribe":[

{"path":"*"}

]

}

Tosubscribetotherequiredcriteriasendasuitablesubscribemessage:

{

"context":"vessels.self",

"subscribe":[

{

"path":"navigation.speedThroughWater",

SubscriptionProtocol

26

Page 27: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

"period":1000,

"format":"delta",

"policy":"ideal",

"minPeriod":200

},

{

"path":"navigation.logTrip",

"period":10000

}

]

}

path=[path.to.key]isappendedtothecontexttospecifysubsetsofthecontext.Thepathvaluecanusethewildcard*.Awildcardinthemiddleofapath(propulsion/*/oilTemperature)allowsanyvalueforthatpartandawildcardattheend(propulsion/port/*)matchesallpathsbeginningwiththespecifiedprefix.

Thefollowingareoptional,includedaboveonlyforexampleasitusesdefaultsanyway:

period=[millisecs]becomesthetransmissionrate,e.g.everyperiod/1000seconds.Default:1000format=[delta|full]specifiesdeltaorfullformat.Default:deltapolicy=[instant|ideal|fixed].Default:ideal

instantmeanssendallchangesasfastastheyarereceived,butnofasterthanminPeriod.Withthispolicytheclienthasanimmediatecopyofthecurrentstateoftheserver.idealmeansuseinstantpolicy,butifnochangesarereceivedbeforeperiod,thenresendthelastknownvalues.fixedmeanssimplysendthelastknownvalueseveryperiod.

minPeriod=[millisecs]becomesthefastestmessagetransmissionrateallowed,e.g.everyminPeriod/1000seconds.Thisisonlyrelevantforpolicy='instant'toavoidswampingtheclientornetwork.

Youcansubscribetomultipledatakeysmultipletimes,frommultipleappsordevices.Eachappordevicesimplysubscribestothedataitrequires,andtheserverand/orclientimplementationmaycombinesubscriptionstoavoidduplicationasitprefersonaperconnectionbasis.Atthesametimeitisgoodpracticetoopentheminimumconnectionsnecessary,forinstanceoneWebSocketconnectionsharedbetweenaninstrumentpanelwithmanygauges,ratherthenoneWebSocketconnectionpergauge.

MultiplevaluehandlinginsubscriptionsAsubscriptiontoakeyisforalltheupdatestothatkey.Iftherearemultiplesourcesgeneratingdataforthatkeytheclientwillgetalltheirupdates.

Ifaclientwantsonlythevaluesofasinglesourceitshouldsubscribetoapaththatincludesthefullpathundervaluesincludingthesourcereferencekeyofthesource.Thesourcereferenceshouldbeenclosedinsquarebrackets:navigation.speedThroughWater.values[n2kFromFile.43].TheclientcanretrievetherelevantdataviaRESTAPI.SeeMultipleValuesformoreinformation.

Singleuse,orintermittentdata

Whendataisrequiredonceonly,oruponrequestthesubscribe/unsubscribemethodshouldnotbeused.IftheclientishttpcapabletheRESTAPIisagoodchoice,oruseget/list/putmessagesoverWebSocketsorTCP.

UseCasesandProposedSolutions

Localboatindividualinstruments

SubscriptionProtocol

27

Page 28: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Agauge-typedisplayforjustoneorafewdataitemsforthe'self'vesselshouldbeabletospecifythatitonlywantsthoseitemsfortheselfvessel.

ThiscanbeachievedbyadefaultWebSocketconnection/signalk/v1/stream?subcribe=none,thensendingaJSONmessage:

{

"context":"vessels.self",

"subscribe":[

{

"path":"environment.depth.belowTransducer"

},

{"path":"navigation.speedThroughWater"}

]

}

TheJSONformatisalsoviableoverasimpleTCPorserialtransport,andisthereforesupportedastheprimarysubscriptionmethod.

Mapdisplaywithallknownvesselpositions&directions,servedover3Gcellularconnection

{

"context":"vessels.*",

"subscribe":[

{

"path":"navigation.position",

"period":120000,

"policy":"fixed"

},

{

"path":"navigation.courseOverGround",

"period":120000,

"policy":"fixed"

}

]

}

TheresultisadeltamessageoftheSignalKdatawithjustpositionandcourseOverGroundbranchesforallknownvessels,sentevery2minutes(120seconds)evenifnodatahasbeenupdated.

Positionofacertainvessel,immediatelyitchanges,butonceperminuteatmost

{

"context":"vessels.230029970",

"subscribe":[

{

"path":"navigation.position",

"minPeriod":60000,

"policy":"instant"

}

]

}

Theresultwillbedeltapositionmessagesforvessel230029970,broadcastwheneveritchanges,butwithminimumintervalof60seconds.Messagesaredelayedtomeettheminimumintervalwithnewermessagesoverridingthepreviousmessageinthebuffer.

SubscriptionProtocol

28

Page 29: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

SubscriptionProtocol

29

Page 30: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

DiscoveryandConnectionEstablishment

ServiceDiscovery

ASignalKserverSHOULDadvertiseitsservicesusingDNSServiceDiscovery(DNS-SD)viaMulticastDNS(mDNS);alsoknownasBonjour.TheserverMUSTprovideDNSService(SRV)RecordsandText(TXT)RecordsdescribingtheSignalKinterfacesitprovides.Theseserviceidentifiersare:

_http._tcpfortheserver'swebinterface_signalk-http._tcpfortheSignalKRESTAPI_signalk-ws._tcpfortheWebSocketdatastream

IfaserverisprovidingSignalKviasecureversionsofHTTPorWebSocketsthentheyMUSTbeabletoprovidearedirectiontothesecureversionsoftheseprotocols.

IfaSignalKserverisusingDNS-SD,itMUSTprovidethefollowingparameters(key/valuepairs)intheTXTrecordportionoftheDNS-SDadvertisement:

txtversisaUS-ASCIIdecimalnumberidentifyingtheversionoftheDNS-SDrecord.Currently,thisMUSThaveavalueof1rolesspecifieswhichrolestheserveriscapableofproviding.SeeRolesbelowfordetails

TheserverMAYprovidethefollowingvalues:

selfistheuniqueidentifierofthevesselusingtheURNformatspecifiedfortheuuidfieldintheSignalKschema.ItmayalsousetheURNformatspecifiedforthemmsifieldintheSignalKschemaifitexists.swnameisthenameoftheSignalKserversoftware,e.g.signalk-server-nodeswversistheversionoftheSignalKserversoftware

AnexampleDNS-SDrecordsetisshownbelow.

Servicedataforservice'signalk-http'oftype'_signalk-http._tcp'indomain'local'on4.0:

Host10-1-1-40.local(10.1.1.40),

port80,

TXTdata:[

'txtvers=1',

'roles=master,main',

'self=urn:mrn:signalk:uuid:c0d79334-4e25-4245-8892-54e8ccc8021d',

'swname=signalk-server',

'swvers=0.1.23'

]

Servicedataforservice'signalk-ws'oftype'_signalk-ws._tcp'indomain'local'on4.0:

Host10-1-1-40.local(10.1.1.40),

port3000,

TXTdata:[

'txtvers=1',

'roles=master,main',

'self=urn:mrn:signalk:uuid:c0d79334-4e25-4245-8892-54e8ccc8021d',

'swname=signalk-server',

'swvers=0.1.23'

]

TheserecordsareadvertisingaSignalKserverwiththeHTTPRESTAPIonport80andtheWebSocketdatastreamonport

1. TheserveridentifiesashavingthemasterandmainrolesandprovidesaselfidentifierasaUUID.

Discovery&ConnectionEstablishment

30

Page 31: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Roles

Thefourpossiblevaluesforrolesaremaster,slave,main,andaux.Thesearedefinedbelow.

Master

masteristhecanonicalsourceforidentityandconfigurationinformationfortheentirevessel.

Ifthereisonlyonemasteronthevessel,thenitshouldalsoprovidethemainrole.Thecombinationofmasterandmaininformsaclientthatthisserverisactivelyprovidingidentifyinginformation.

MainandAux

Iftherearemorethanonemastersonthevessel,EXACTLYONEservershouldadvertisebothmasterandmain.Allothermastersshouldadvertisemasterandaux.Clientsshouldonlyusethemasterauxserversforidentifyinginformationifthemastermainisnotavailable.

AnyserveridentifyingasmasterMUSTbeabletoprovideataminimumtheuniqueidentifier(self)forthevessel.

Slave

Anyserverprovidingtheslaveroleshouldretrieveidentityandconfigurationinformationfromthemasterserver.SlaveserversMAYprovideconfigurationandidentityinformationforthemselves,butthisidentityMUSTNOTbeconsideredvalidfortheentirevesssel.

MainandAux

Theuseofmainandauxhavenotbeendefinedfortheslaveroleatthistime.

ConnectionEstablishment

UsingtheinformationaboveawebclientorHTTPcapabledevicecandiscoverandconnecttoaSignalKserverusingthefollowingprocess:

QueryforSignalKservicesusingmDNSConnecttothehostandportadvertisedas'signalk-http'viaHTTP(e.g.http://10.1.1.40:80)PerthePorts,UrlsandVersioningsection,makeaGETrequestfor/signalktoretrieveaJSONobjectcontaininganendpointsJSONobjectMakefurtherRESTcallsformorespecificdata,oropenawebsocketconnectiontostartstreamingupdates.

Discovery&ConnectionEstablishment

31

Page 32: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Discovery&ConnectionEstablishment

32

Page 33: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Discovery&ConnectionEstablishment

33

Page 34: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Alarm,Alert,andNotificationHandlingHandlingalarms,alerts,andnotificationsinSignalKisamulti-stageprocess.Alarms,alertsandnotificationsareallhandledthesameway,andareallreferredtoasalarmsbelow.

Weneedaflexiblemodeltodefinealarmconditions,andastandardwaytoannounceandrecordthem.

AlarmProcess

DefinealarmstatesaszonesinthemetaobjectattachedtoanySignalKvalue.See[[MetadataforDataValues]]Ifthevalueiswithinanalarmzoneraisethedefinedalarm.Ifthevaluegoesoutofthezone,removethealarmbysettingitsvaluetonullAlarmsareraisedbyplacinganalarmobjectinthevessels.self.notificationstree

Expectedimplementationbehaviour

Theserver(ordevice)shouldmonitorthecurrentvalueandcompareittothedefinedzones.Ifavalueentersanalarmzone,thenakeyiswrittentovessels.self.notifications..Ifavalueleavesanalarmzone,thenthekeyisremovedfromvessels.self.notifications..Alarmsraisedaremonitoredbyanalarmprocessontheserver,whichtakesappropriateaction,soundingalarms,ordisplayingmessages.Clientsinterestedinalarmscansubcribetothevessels.self.notifications...treeintheusualwayandbeinformedofalarmsinthesamewayasnormalsignalkkeys.Whenanalarmsisremoved,adeltashouldbesenttosubscriberswiththepathandanullvalue.

Example

egIfweexceedouranchoralarmradius:vessels.self.navigation.anchor.currentRadiusentersvessels.self.navigation.anchor.currentRadius.meta.zones[[50,500,"alarm","Dragginganchor!"]],

Thealarmis:vessels.self.notifications.navigation.anchor.currentRadius

Thealarmobjectis

{

"value":{

"method":["sound"],

"state":"alarm",

"message":"Dragginganchor!"

},

"timestamp":"...",

"$source":"..."

}

Theserveralarmmanagerwillseethisnewentryandturnonthealarm.Usingamanagerprocessallowsflexibilityinsituationswheremultiplealarmsaretriggeredandyourvesselisamassofflashingandbeeping.egAsingle'Pause'buttoncangiveyou5-10minutestotakeaction,stoppingannoyingnoise,andremovingpopupmessagesfromscreens.

Sincethevessels.self.notificationstreemirrorstheotherdatainthesignalkmodel,wecanselectivelywatchorreacttospecificbranchesorkeys.Whendisplayingmultiplealarmsascreencanalsosortandfilterthem.

Notifications

34

Page 35: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

OtherAlarms

Abovewehavediscussedmonitoringexistingvaluesandraisingalarms.Thereareotheralarmsthatmustbeconsidered,egMOB,fire,sinkingetc,andmiscalerts"GPSsignallost".etc.

Thevessels.[uuid].notificationstreeisthesameasanyotherSignalkbranch.Keyscanbeaddedandremovedasrequiredintheusualway.Sincethebranchisbeingmonitoredweonlyneedtoaddakeyofanysorttocreateasuitablealarm.

Inthecaseofanemergency,createauniquekey:Thealarmis:vessels.[uuid].notifications.[alarm.key]

Thealarmobjectis

{

"value":{

"method":["visual","sound"],

"state":"emergency",

"message":"ManOverboard!"

},

...

}

Alarmobjectsthathavebeenraisedthiswaymustbeclearedmanually,orbytheprocessthatcreatedthem.Youcanuseanysuitablepath,keepinginmindthecontextofthealarm.

egInthecaseofanalert,createauniquekeybygeneratingapath:Thealarmis:vessels.[uuid].notifications.navigation.gnss

Thealarmobjectis

{

"value":{

"method":["visual"],

"state":"alert",

"message":"GPSsignallost!"

},

...

}

WellKnownNames

Somealarmsareespeciallyimportant,egMOB.Thisisalistofkeysforspecialalarms.

..notifications.mob.*

..notifications.fire.*

..notifications.sinking.*

..notifications.flooding.*

..notifications.collision.*

..notifications.grounding.*

..notifications.listing.*

..notifications.adrift.*

..notifications.piracy.*

..notifications.abandon.*

AnexampletosendanMOBalarmfromanN2Ksource,thegatewaywouldconvertandsendsomethinglike:

{

"context":"vessels.urn:mrn:signalk:uuid:c0d79334-4e25-4245-8892-54e8ccc8021d",

"updates":[

{

Notifications

35

Page 36: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

"source":{...},

"timestamp":"2017-08-15T16:00:05.200Z",

"values":[

{

"path":"notifications.mob",

"value":{

"message":"MOB",

"state":"emergency",

"method":["visual","sound"]

}

}

]

}

]

}

Theresultingfullsignalktreewouldbe:

{

"vessels":{

"urn:mrn:signalk:uuid:c0d79334-4e25-4245-8892-54e8ccc8021d":{

"uuid":"...",

"notifications":{

"mob":{

"value":{

"method":["visual","sound"],

"state":"emergency",

"message":"ManOverboard!"

},

"timestamp":"2017-04-10T08:33:53Z",

"$source":"..."

}

}

}

},

...

}

Toclearthealarmcondition,send:

{

"context":"vessels.urn:mrn:signalk:uuid:c0d79334-4e25-4245-8892-54e8ccc8021d",

"updates":[

{

"source":{...},

"timestamp":"2017-08-15T16:00:05.538Z",

"values":[

{

"path":"notifications.mob",

"value":null

}

]

}

]

}

Multiplecasesofthesamealarm

Shouldmultiplecasesofthesamealarmoccur(egagpslosessignal,thenasecondgpslosessignal)thealarmsarehandledthesameasanyothermultiplevaluesinsignalk.Howeveralarmswilltendtobere-issuedwhenevertheunderlyingdatachanges.

Notifications

36

Page 37: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Theserversalarmmonitoringprocessesareexpectedtobesmartenoughtoknowthattheanchoralarmistriggered,anditsnotnecessarytoraiseasecondcopyofthesamealarm,afterallthereisonlyoneboatdragging!

Thismaybehandleddifferentlyfornotifications.Itmaybeusefultoknowthatyourgps'sareallfailingintermittently,orthat.Hencethehandlingofmultiplecopiesofalarmsisanimplementationissue,andmayvary.

Thekeyshouldbeunique

Ifwehaveanalarmvessels.self.notifications.navigation.anchor.currentRadiusandweattempttowriteanotherhigherinthesametreeatvessels.self.notificationsitmustnotreplaceorremovetheexistingalarm.Sincethemeta.zonesstructureisonlyvalidonsignalkleafvaluesthisoccursnaturallyinmostcircumstances.Butitispossibletosetanalarmvaluearbitrarily(egMOB)andcareshouldbetakeninimplementationsthatkeysdonotoverwriteexistingpaths.

Notifications

37

Page 38: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Thisisaquickstartforany-onethatwouldliketocontribute.Itsroughlyfromtechnicallyunskilledtoskilled,toptobottom.Dontbeafraidtoaskforhelp.EachtaskwillprobablystartwithanewthreadformoredetailsontheGooglegroups(https://groups.google.com/forum/#!forum/signalk).Bepatient,civil,andpersistent:-)

Completelyunskilledatboatelectronics:

Joinhttps://groups.google.com/forum/#!forum/signalk-astheuserbasegrows,sodoesawareness.Tellothers,spreadthewordFlyaSignalKflagfromyourboatIfyouhavespecialskills(egmotors,batteries,navigation,etc)helpusextendtheSignalKprotocolbyidentifyingwhatweneedtocover.AskmanufacturersaboutSignalKsupportAskquestionsaboutwhatyoudontunderstand,andcollatetheanswersforustoputonthewebsite.

Candoowninstalls,handyman,butnotITskilled.

TryaninstallofRaspberryPiandWIFI,documentexactlyhowyoudidit,sootherscanfollow.

Websiteordocumentationskills

Helpusmaintainthewebsite,andimprovethedocuments

Goodcomputerskills,butnotprogramming

Downloadandtrythejavaserver(https://github.com/SignalK/signalk-server-java)andnodeserver(https://github.com/SignalK/signalk-server-node)andthevariousappsandclients.Helptestandidentifyissues,helpimprovedocumentssootherscanfolloweasier.HelpwithUsermanuals!

Systemsengineer

Helpotherusers,helpwithscripts,developandmaintaininstallprocesses,managingourwebsites,etc.Examples:

CreateDebianpackagesoftheSignalKsoftwareforeasyinstallationtoRaspbian

Softwaredeveloper

Downloadandtest/fixourstuff,addimprovements,jointheteamandhelpcode,developsupportinyourownsoftware.

Microprocessors

ImproveourArduinostuff,addyourown,incorporateSignalKintoyourproducts.

HowCanIHelp?

38

Page 39: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/vessels

Description:Awrapperobjectforvesselobjects,eachdescribingvesselsinrange,includingthisvessel.

/vessels/<RegExp>

Title:vessel

Description:ThisregexpatternisusedforvalidationofanMMSIorSignalKUUIDidentifierforthevessel.Examples:urn:mrn:imo:mmsi:230099999urn:mrn:signalk:uuid:c0d79334-4e25-4245-8892-54e8ccc8021d

/vessels/<RegExp>/url

Description:URLbasedidentityofthevessel,ifavailable.

/vessels/<RegExp>/mmsi

Description:MMSInumberofthevessel,ifavailable.

/vessels/<RegExp>/mothershipMmsi

Description:MMSInumberofthemothershipofthisvessel,ifavailable.

/vessels/<RegExp>/uuid

Description:AuniqueSignalKflavouredmaritimeresourceidentifier,assignedbytheserver.

/vessels/<RegExp>/name

Description:Thecommonnameofthevessel

/vessels/<RegExp>/flag

Description:Thecountryofshipregistration,orflagstateofthevessel

/vessels/<RegExp>/port

Description:Thehomeportofthevessel

/vessels/<RegExp>/registrations

AppendixA:KeysReference(Vessel)

39

Page 40: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Description:Thevariousregistrationsofthevessel.

/vessels/<RegExp>/registrations/imo

Description:TheIMOnumberofthevessel.

/vessels/<RegExp>/registrations/national

Description:Thenationalregistrationnumberofthevessel.

/vessels/<RegExp>/registrations/national/<RegExp>

Description:Thisregexpatternisusedforvalidatingtheidentifierfortheregistration

/vessels/<RegExp>/registrations/national/<RegExp>/country

Description:TheISO3166-2countrycode.

/vessels/<RegExp>/registrations/national/<RegExp>/registration

Description:Theregistrationcode

/vessels/<RegExp>/registrations/national/<RegExp>/description

Description:Theregistrationdescription

/vessels/<RegExp>/registrations/local

Description:Alocalorstateregistrationnumberofthevessel.

/vessels/<RegExp>/registrations/local/<RegExp>

Description:Thisregexpatternisusedforvalidatingtheidentifierfortheregistration

/vessels/<RegExp>/registrations/local/<RegExp>/registration

Description:Theregistrationcode

/vessels/<RegExp>/registrations/local/<RegExp>/description

AppendixA:KeysReference(Vessel)

40

Page 41: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Description:Theregistrationdescription

/vessels/<RegExp>/registrations/other

Description:Otherregistrationorpermitsforthevessel.

/vessels/<RegExp>/registrations/other/<RegExp>

Description:Thisregexpatternisusedforvalidatingtheidentifierfortheregistration

/vessels/<RegExp>/registrations/other/<RegExp>/registration

Description:Theregistrationcode

/vessels/<RegExp>/registrations/other/<RegExp>/description

Description:Theregistrationdescription

/vessels/<RegExp>/communication

Title:communication

Description:CommunicationdataincludingRadio,Telephone,E-Mail,etc.

/vessels/<RegExp>/communication/callsignVhf

Description:CallsignforVHFcommunication

/vessels/<RegExp>/communication/callsignHf

Description:CallsignforHFcommunication

/vessels/<RegExp>/communication/phoneNumber

Description:Phonenumberofskipper

/vessels/<RegExp>/communication/emailHf

Description:EmailaddresstobeusedforHFemail(Winmail,Airmail,Sailmail)

AppendixA:KeysReference(Vessel)

41

Page 42: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/vessels/<RegExp>/communication/email

Description:Regularemailfortheskipper

/vessels/<RegExp>/communication/satPhoneNumber

Description:Satellitephonenumberforvessel.

/vessels/<RegExp>/communication/skipperName

Description:Fullnameoftheskipperofthevessel.

/vessels/<RegExp>/communication/crewNames

Description:Arraywiththenamesofthecrew

/vessels/<RegExp>/environment

Title:environment

Description:EnvironmentaldatameasuredlocallyincludingDepth,Wind,Temp,etc.

/vessels/<RegExp>/environment/outside

Description:Environmentalconditionsoutsideofthevessel'shull

/vessels/<RegExp>/environment/outside/temperature

Units:K(Kelvin)

Description:Currentoutsideairtemperature

/vessels/<RegExp>/environment/outside/dewPointTemperature

Units:K(Kelvin)

Description:Currentoutsidedewpointtemperature

/vessels/<RegExp>/environment/outside/apparentWindChillTemperature

Units:K(Kelvin)

Description:Currentoutsideapparentwindchilltemperature

AppendixA:KeysReference(Vessel)

42

Page 43: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/vessels/<RegExp>/environment/outside/theoreticalWindChillTemperature

Units:K(Kelvin)

Description:Currentoutsidetheoreticalwindchilltemperature

/vessels/<RegExp>/environment/outside/heatIndexTemperature

Units:K(Kelvin)

Description:Currentoutsideheatindextemperature

/vessels/<RegExp>/environment/outside/pressure

Units:Pa(Pascal)

Description:Currentoutsideairambientpressure

/vessels/<RegExp>/environment/outside/humidity

Units:ratio(Ratio)

Description:Currentoutsideairrelativehumidity

/vessels/<RegExp>/environment/outside/airDensity

Units:kg/m3(undefined)

Description:Currentoutsideairdensity

/vessels/<RegExp>/environment/outside/illuminance

Units:Lux(undefined)

Description:Currentoutsideambientlightflux.

/vessels/<RegExp>/environment/inside

Description:Environmentalconditionsinsidethevessel'shull

/vessels/<RegExp>/environment/inside/temperature

Units:K(Kelvin)

Description:Currentinsideairtemperature

AppendixA:KeysReference(Vessel)

43

Page 44: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/vessels/<RegExp>/environment/inside/humidity

Units:ratio(Ratio)

Description:Currentinsideairrelativehumidity

/vessels/<RegExp>/environment/inside/engineRoom

Description:Currentengineroomairtemperature

/vessels/<RegExp>/environment/inside/engineRoom/temperature

Units:K(Kelvin)

Description:Temperature

/vessels/<RegExp>/environment/inside/engineRoom/pressure

Units:Pa(Pascal)

Description:Pressureinzone

/vessels/<RegExp>/environment/inside/engineRoom/relativeHumidity

Units:ratio(Ratio)

Description:Relativehumidityinzone

/vessels/<RegExp>/environment/inside/engineRoom/dewPoint

Units:K(Kelvin)

Description:Dewpointinzone

/vessels/<RegExp>/environment/inside/engineRoom/airDensity

Units:kg/m3(undefined)

Description:Airdensityinzone

/vessels/<RegExp>/environment/inside/engineRoom/illuminance

Units:Lux(undefined)

Description:Illuminanceinzone

AppendixA:KeysReference(Vessel)

44

Page 45: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/vessels/<RegExp>/environment/inside/mainCabin

Description:Currentmaincabinairtemperature

/vessels/<RegExp>/environment/inside/mainCabin/temperature

Units:K(Kelvin)

Description:Temperature

/vessels/<RegExp>/environment/inside/mainCabin/pressure

Units:Pa(Pascal)

Description:Pressureinzone

/vessels/<RegExp>/environment/inside/mainCabin/relativeHumidity

Units:ratio(Ratio)

Description:Relativehumidityinzone

/vessels/<RegExp>/environment/inside/mainCabin/dewPoint

Units:K(Kelvin)

Description:Dewpointinzone

/vessels/<RegExp>/environment/inside/mainCabin/airDensity

Units:kg/m3(undefined)

Description:Airdensityinzone

/vessels/<RegExp>/environment/inside/mainCabin/illuminance

Units:Lux(undefined)

Description:Illuminanceinzone

/vessels/<RegExp>/environment/inside/refrigerator

Description:Currentrefrigeratortemperature

/vessels/<RegExp>/environment/inside/refrigerator/temperature

AppendixA:KeysReference(Vessel)

45

Page 46: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Units:K(Kelvin)

Description:Temperature

/vessels/<RegExp>/environment/inside/refrigerator/pressure

Units:Pa(Pascal)

Description:Pressureinzone

/vessels/<RegExp>/environment/inside/refrigerator/relativeHumidity

Units:ratio(Ratio)

Description:Relativehumidityinzone

/vessels/<RegExp>/environment/inside/refrigerator/dewPoint

Units:K(Kelvin)

Description:Dewpointinzone

/vessels/<RegExp>/environment/inside/refrigerator/airDensity

Units:kg/m3(undefined)

Description:Airdensityinzone

/vessels/<RegExp>/environment/inside/refrigerator/illuminance

Units:Lux(undefined)

Description:Illuminanceinzone

/vessels/<RegExp>/environment/inside/freezer

Description:Currentfreezertemperature

/vessels/<RegExp>/environment/inside/freezer/temperature

Units:K(Kelvin)

Description:Temperature

/vessels/<RegExp>/environment/inside/freezer/pressure

AppendixA:KeysReference(Vessel)

46

Page 47: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Units:Pa(Pascal)

Description:Pressureinzone

/vessels/<RegExp>/environment/inside/freezer/relativeHumidity

Units:ratio(Ratio)

Description:Relativehumidityinzone

/vessels/<RegExp>/environment/inside/freezer/dewPoint

Units:K(Kelvin)

Description:Dewpointinzone

/vessels/<RegExp>/environment/inside/freezer/airDensity

Units:kg/m3(undefined)

Description:Airdensityinzone

/vessels/<RegExp>/environment/inside/freezer/illuminance

Units:Lux(undefined)

Description:Illuminanceinzone

/vessels/<RegExp>/environment/inside/heating

Description:Currentheatingtemperature

/vessels/<RegExp>/environment/inside/heating/temperature

Units:K(Kelvin)

Description:Temperature

/vessels/<RegExp>/environment/inside/heating/pressure

Units:Pa(Pascal)

Description:Pressureinzone

/vessels/<RegExp>/environment/inside/heating/relativeHumidity

AppendixA:KeysReference(Vessel)

47

Page 48: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Units:ratio(Ratio)

Description:Relativehumidityinzone

/vessels/<RegExp>/environment/inside/heating/dewPoint

Units:K(Kelvin)

Description:Dewpointinzone

/vessels/<RegExp>/environment/inside/heating/airDensity

Units:kg/m3(undefined)

Description:Airdensityinzone

/vessels/<RegExp>/environment/inside/heating/illuminance

Units:Lux(undefined)

Description:Illuminanceinzone

/vessels/<RegExp>/environment/water

Description:Environmentalconditionsofthewaterthatthevesselissailingin

/vessels/<RegExp>/environment/water/temperature

Units:K(Kelvin)

Description:Currentwatertemperature

/vessels/<RegExp>/environment/water/salinity

Units:ratio(Ratio)

Description:Watersalinity

/vessels/<RegExp>/environment/depth

Title:depth

Description:Depthrelateddata

/vessels/<RegExp>/environment/depth/belowKeel

AppendixA:KeysReference(Vessel)

48

Page 49: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Units:m(Meter)

Description:Depthbelowkeel

/vessels/<RegExp>/environment/depth/belowTransducer

Units:m(Meter)

Description:DepthbelowTransducer

/vessels/<RegExp>/environment/depth/belowSurface

Units:m(Meter)

Description:Depthfromsurface

/vessels/<RegExp>/environment/depth/transducerToKeel

Units:m(Meter)

Description:Depthfromthetransducertothebottomofthekeel

/vessels/<RegExp>/environment/depth/surfaceToTransducer

Units:m(Meter)

Description:Depthtransducerisbelowthewatersurface

/vessels/<RegExp>/environment/current

Title:current

Description:Directionandstrengthofcurrentaffectingthevessel

Objectvaluewithproperties

drift(m/s)setTrue(rad)setMagnetic(rad)

/vessels/<RegExp>/environment/tide

Title:tide

Description:Tidedata

/vessels/<RegExp>/environment/tide/heightHigh

AppendixA:KeysReference(Vessel)

49

Page 50: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Units:m(Meter)

Description:Nexthightideheightrelativetolowestastronomicaltide(LAT/ChartDatum)

/vessels/<RegExp>/environment/tide/heightNow

Units:m(Meter)

Description:Thecurrenttideheightrelativetolowestastronomicaltide(LAT/ChartDatum)

/vessels/<RegExp>/environment/tide/heightLow

Units:m(Meter)

Description:Thenextlowtideheightrelativetolowestastronomicaltide(LAT/ChartDatum)

/vessels/<RegExp>/environment/tide/timeLow

Units:RFC3339(UTC)(undefined)

Description:TimeofthenextlowtideinUTC

/vessels/<RegExp>/environment/tide/timeHigh

Units:RFC3339(UTC)(undefined)

Description:TimeofnexthightideinUTC

/vessels/<RegExp>/environment/heave

Units:m(Meter)

Description:Verticalmovementofthevesselduetowaves

/vessels/<RegExp>/environment/wind

Title:wind

Description:Winddata.

/vessels/<RegExp>/environment/wind/angleApparent

Units:rad(Radian)

Description:Apparentwindangle,negativetoport

AppendixA:KeysReference(Vessel)

50

Page 51: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/vessels/<RegExp>/environment/wind/angleTrueGround

Units:rad(Radian)

Description:Truewindanglebasedonspeedoverground,negativetoport

/vessels/<RegExp>/environment/wind/angleTrueWater

Units:rad(Radian)

Description:Truewindanglebasedonspeedthroughwater,negativetoport

/vessels/<RegExp>/environment/wind/directionChangeAlarm

Units:rad(Radian)

Description:Theanglethewindneedstoshifttoraiseanalarm

/vessels/<RegExp>/environment/wind/directionTrue

Units:rad(Radian)

Description:Thewinddirectionrelativetotruenorth

/vessels/<RegExp>/environment/wind/directionMagnetic

Units:rad(Radian)

Description:Thewinddirectionrelativetomagneticnorth

/vessels/<RegExp>/environment/wind/speedTrue

Units:m/s(Meterspersecond)

Description:Windspeedoverwater(ascalculatedfromspeedApparentandvessel'sspeedthroughwater)

/vessels/<RegExp>/environment/wind/speedOverGround

Units:m/s(Meterspersecond)

Description:Windspeedoverground(ascalculatedfromspeedApparentandvessel'sspeedoverground)

/vessels/<RegExp>/environment/wind/speedApparent

Units:m/s(Meterspersecond)

Description:Apparentwindspeed

AppendixA:KeysReference(Vessel)

51

Page 52: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/vessels/<RegExp>/environment/time

Description:Atimereferenceforthevessel.Allclocksonthevesseldispayinglocaltimeshouldusethetimezoneoffsethere.IfatimezoneRegionissuppliedthetimezonemustalsobesupplied.IftimezoneRegionissuppliedthatshouldbedisplayedbyUIsinpreferencetosimplytimezone.ie12:05(Europe/London)shouldbedisplayedinpreferenceto12:05(UTC+01:00)

Fields:

millis(MillisecondssincetheUNIXepoch(1970-01-0100:00:00))timezoneOffset(OnboardtimezoneoffsetfromUTCinhoursandminutes(-)hhmm.+vemeanseastofGreenwich.ForusebyUIs)timezoneRegion(OnboardtimezoneoffsetaslistedintheIANAtimezonedatabase(tzdatabase))

/vessels/<RegExp>/environment/mode

Description:Modeofthevesselbasedonthecurrentconditions.Canbecombinedwithnavigation.statetocontrolvesselsignalsegswitchtonightmodeforinstrumentationandlights,ormakesoundsignalsforfog.

/vessels/<RegExp>/navigation

Title:navigation

Description:NavigationdataincludingPosition,CoursetonextWPinformation,etc.

/vessels/<RegExp>/navigation/lights

Title:Navigationlights

Description:Currentstateofthevesselsnavigationlights

/vessels/<RegExp>/navigation/courseOverGroundMagnetic

Units:rad(Radian)

Description:Courseoverground(magnetic)

/vessels/<RegExp>/navigation/courseOverGroundTrue

Units:rad(Radian)

Description:Courseoverground(true)

/vessels/<RegExp>/navigation/courseRhumbline

Title:Course

Description:CourseinformationcomputedwithRhumbline

AppendixA:KeysReference(Vessel)

52

Page 53: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/vessels/<RegExp>/navigation/courseRhumbline/crossTrackError

Units:m(Meter)

Description:Thedistancefromthevessel'spresentpositiontotheclosestpointonaline(track)betweenpreviousPointandnextPoint.Anegativenumberindicatesthatthevesseliscurrentlytotheleftofthisline(andthusmuststeerrighttocompensate),apositivenumbermeansthevesselistotherightoftheline(steerlefttocompensate).

/vessels/<RegExp>/navigation/courseRhumbline/bearingTrackTrue

Units:rad(Radian)

Description:ThebearingofalinebetweenpreviousPointandnextPoint,relativetotruenorth.

/vessels/<RegExp>/navigation/courseRhumbline/bearingTrackMagnetic

Units:rad(Radian)

Description:ThebearingofalinebetweenpreviousPointandnextPoint,relativetomagneticnorth.

/vessels/<RegExp>/navigation/courseRhumbline/activeRoute

Description:Datarequiredifsailingtoanactiveroute,definedinresources.

/vessels/<RegExp>/navigation/courseRhumbline/activeRoute/href

Description:Areference(URL)tothepresentlyactiveroute,inresources.

/vessels/<RegExp>/navigation/courseRhumbline/activeRoute/estimatedTimeOfArrival

Description:Theestimatedtimeofarrivalattheendofthecurrentroute

/vessels/<RegExp>/navigation/courseRhumbline/activeRoute/startTime

Description:Thetimethisroutewasactivated

/vessels/<RegExp>/navigation/courseRhumbline/nextPoint

Description:Thepointonearththevessel'spresentlynavigatingtowards

/vessels/<RegExp>/navigation/courseRhumbline/previousPoint

Description:Thepointonearththevessel'spresentlynavigatingfrom

AppendixA:KeysReference(Vessel)

53

Page 54: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Objectvaluewithproperties

typehref

/vessels/<RegExp>/navigation/courseRhumbline/previousPoint/distance

Units:m(Meter)

Description:ThedistanceinmetersbetweenpreviousPointandthevessel'spresentposition

/vessels/<RegExp>/navigation/courseRhumbline/previousPoint/position

Title:position

Description:ThepositionoflastPointintwodimensions

Objectvaluewithproperties

longitude(deg)latitude(deg)altitude(m)

/vessels/<RegExp>/navigation/courseGreatCircle

Title:Course

Description:CourseinformationcomputedwithGreatCircle

/vessels/<RegExp>/navigation/courseGreatCircle/crossTrackError

Units:m(Meter)

Description:Thedistancefromthevessel'spresentpositiontotheclosestpointonaline(track)betweenpreviousPointandnextPoint.Anegativenumberindicatesthatthevesseliscurrentlytotheleftofthisline(andthusmuststeerrighttocompensate),apositivenumbermeansthevesselistotherightoftheline(steerlefttocompensate).

/vessels/<RegExp>/navigation/courseGreatCircle/bearingTrackTrue

Units:rad(Radian)

Description:ThebearingofalinebetweenpreviousPointandnextPoint,relativetotruenorth.

/vessels/<RegExp>/navigation/courseGreatCircle/bearingTrackMagnetic

Units:rad(Radian)

Description:ThebearingofalinebetweenpreviousPointandnextPoint,relativetomagneticnorth.

AppendixA:KeysReference(Vessel)

54

Page 55: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/vessels/<RegExp>/navigation/courseGreatCircle/activeRoute

Description:Datarequiredifsailingtoanactiveroute,definedinresources.

/vessels/<RegExp>/navigation/courseGreatCircle/activeRoute/href

Description:Areference(URL)tothepresentlyactiveroute,inresources.

/vessels/<RegExp>/navigation/courseGreatCircle/activeRoute/estimatedTimeOfArrival

Description:Theestimatedtimeofarrivalattheendofthecurrentroute

/vessels/<RegExp>/navigation/courseGreatCircle/activeRoute/startTime

Description:Thetimethisroutewasactivated

/vessels/<RegExp>/navigation/courseGreatCircle/nextPoint

Description:Thepointonearththevessel'spresentlynavigatingtowards

/vessels/<RegExp>/navigation/courseGreatCircle/previousPoint

Description:Thepointonearththevessel'spresentlynavigatingfrom

Objectvaluewithproperties

typehref

/vessels/<RegExp>/navigation/courseGreatCircle/previousPoint/distance

Units:m(Meter)

Description:ThedistanceinmetersbetweenpreviousPointandthevessel'spresentposition

/vessels/<RegExp>/navigation/courseGreatCircle/previousPoint/position

Title:position

Description:ThepositionoflastPointintwodimensions

Objectvaluewithproperties

longitude(deg)

AppendixA:KeysReference(Vessel)

55

Page 56: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

latitude(deg)altitude(m)

/vessels/<RegExp>/navigation/closestApproach

Description:Calculatedvaluesforothervessels,e.g.fromAIS

Objectvaluewithproperties

distance(m)timeTo(s)

/vessels/<RegExp>/navigation/racing

Description:Specificnavigationaldatarelatedtoyachtracing.

/vessels/<RegExp>/navigation/racing/startLineStb

Title:position

Description:Positionofstarboardstartmark

Objectvaluewithproperties

longitude(deg)latitude(deg)altitude(m)

/vessels/<RegExp>/navigation/racing/startLinePort

Title:position

Description:Positionofstarboardstartmark

Objectvaluewithproperties

longitude(deg)latitude(deg)altitude(m)

/vessels/<RegExp>/navigation/racing/distanceStartline

Units:m(Meter)

Description:Thecurrentdistancetothestartline

/vessels/<RegExp>/navigation/racing/timeToStart

Units:s(Second)

AppendixA:KeysReference(Vessel)

56

Page 57: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Description:Timeleftbeforestart

/vessels/<RegExp>/navigation/racing/timePortDown

Units:s(Second)

Description:Timetoarriveatthestartlineonport,turningdownwind

/vessels/<RegExp>/navigation/racing/timePortUp

Units:s(Second)

Description:Timetoarriveatthestartlineonport,turningupwind

/vessels/<RegExp>/navigation/racing/timeStbdDown

Units:s(Second)

Description:Timetoarriveatthestartlineonstarboard,turningdownwind

/vessels/<RegExp>/navigation/racing/timeStbdUp

Units:s(Second)

Description:Timetoarriveatthestartlineonstarboard,turningupwind

/vessels/<RegExp>/navigation/racing/distanceLayline

Units:m(Meter)

Description:Thecurrentdistancetothelayline

/vessels/<RegExp>/navigation/magneticVariation

Units:rad(Radian)

Description:Themagneticvariation(declination)atthecurrentpositionthatmustbeaddedtothemagneticheadingtoderivethetrueheading.EasterlyvariationsarepositiveandWesterlyvariationsarenegative(inRadians).

/vessels/<RegExp>/navigation/magneticVariationAgeOfService

Units:s(Second)

Description:Secondssincethe1stJan1970thatthevariationcalculationwasmade

AppendixA:KeysReference(Vessel)

57

Page 58: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/vessels/<RegExp>/navigation/destination

Title:destination

Description:Theintendeddestinationofthistrip

/vessels/<RegExp>/navigation/destination/commonName

Description:CommonnameoftheDestination,eg'Fiji',alsousedinaismessages

/vessels/<RegExp>/navigation/destination/eta

Description:Expectedtimeofarrivalatdestinationwaypoint

/vessels/<RegExp>/navigation/destination/waypoint

Description:UUIDofdestinationwaypoint

/vessels/<RegExp>/navigation/gnss

Title:gnss

Description:Globalsatellitenavigationmetainformation

/vessels/<RegExp>/navigation/gnss/type

Description:Fixtype

/vessels/<RegExp>/navigation/gnss/methodQuality

Description:Qualityofthesatellitefix

/vessels/<RegExp>/navigation/gnss/integrity

Description:Integrityofthesatellitefix

/vessels/<RegExp>/navigation/gnss/satellites

Description:Numberofsatellites

/vessels/<RegExp>/navigation/gnss/antennaAltitude

AppendixA:KeysReference(Vessel)

58

Page 59: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Units:m(Meter)

Description:Altitudeofantenna

/vessels/<RegExp>/navigation/gnss/horizontalDilution

Description:HorizontalDilutionofPrecision

/vessels/<RegExp>/navigation/gnss/positionDilution

Description:PositionalDilutionofPrecision

/vessels/<RegExp>/navigation/gnss/geoidalSeparation

Description:DifferencebetweenWGS84earthellipsoidandmeansealevel

/vessels/<RegExp>/navigation/gnss/differentialAge

Units:s(Second)

Description:AgeofDGPSdata

/vessels/<RegExp>/navigation/gnss/differentialReference

Description:IDofDGPSbasestation

/vessels/<RegExp>/navigation/headingMagnetic

Units:rad(Radian)

Description:Currentmagneticheadingofthevessel

/vessels/<RegExp>/navigation/headingTrue

Units:rad(Radian)

Description:Thecurrenttrueheadingofthevessel

/vessels/<RegExp>/navigation/position

Title:position

Description:Thepositionofthevesselin2or3dimensions(WGS84datum)

Objectvaluewithproperties

AppendixA:KeysReference(Vessel)

59

Page 60: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

longitude(deg)latitude(deg)altitude(m)

/vessels/<RegExp>/navigation/attitude

Title:Attitude

Description:Vesselattitude:roll,pitchandyaw

Objectvaluewithproperties

roll(rad)pitch(rad)yaw(rad)

/vessels/<RegExp>/navigation/maneuver

Description:Specialmaneuversuchasregionalpassingarrangement.(fromais)

/vessels/<RegExp>/navigation/rateOfTurn

Units:rad/s(Radianpersecond)

Description:Rateofturn(+veischangetostarboard).IfthevalueisAISRIGHTorLEFT,setto+-0.0206radsandaddwarninginnotifications

/vessels/<RegExp>/navigation/speedOverGround

Units:m/s(Meterspersecond)

Description:Vesselspeedoverground.IfconvertingfromAIS'HIGH'value,setto102.2(Aismaxvalue)andaddwarninginnotifications

/vessels/<RegExp>/navigation/speedThroughWater

Units:m/s(Meterspersecond)

Description:Vesselspeedthroughthewater

/vessels/<RegExp>/navigation/speedThroughWaterTransverse

Units:m/s(Meterspersecond)

Description:Transversespeedthroughthewater(Leeway)

AppendixA:KeysReference(Vessel)

60

Page 61: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/vessels/<RegExp>/navigation/speedThroughWaterLongitudinal

Units:m/s(Meterspersecond)

Description:Longitudinalspeedthroughthewater

/vessels/<RegExp>/navigation/leewayAngle

Units:rad(Radian)

Description:LeewayAnglederivedfromthelongitudinalandtransversespeedsthroughthewater

/vessels/<RegExp>/navigation/log

Units:m(Meter)

Description:Totaldistancetraveled

/vessels/<RegExp>/navigation/trip

Description:Tripdata

/vessels/<RegExp>/navigation/trip/log

Units:m(Meter)

Description:Totaldistancetraveledonthistrip/sincetripreset

/vessels/<RegExp>/navigation/trip/lastReset

Description:Triplogresettime

/vessels/<RegExp>/navigation/state

Title:state

Description:Currentnavigationalstateofthevessel

/vessels/<RegExp>/navigation/anchor

Title:anchor

Description:Theanchordata,foranchorwatchetc

/vessels/<RegExp>/navigation/anchor/maxRadius

AppendixA:KeysReference(Vessel)

61

Page 62: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Units:m(Meter)

Description:Radiusofanchoralarmboundary.Thedistancefromanchortothecenteroftheboat

/vessels/<RegExp>/navigation/anchor/currentRadius

Units:m(Meter)

Description:Currentdistancetoanchor

/vessels/<RegExp>/navigation/anchor/position

Title:position

Description:Theactualanchorpositionofthevesselin3dimensions,probablyanestimateatbest

Objectvaluewithproperties

longitude(deg)latitude(deg)altitude(m)

/vessels/<RegExp>/navigation/datetime

Description:TimeandDatefromtheGNSSPositioningSystem

Fields:

gnssTimeSource(SourceofGNSSDateandTime),enum:

GPSGLONASSGalileoBeidouIRNSSRadioSignalInternetLocalclock

/vessels/<RegExp>/propulsion

Title:propulsion

Description:Enginedata,eachengineidentifiedbyauniquenamei.e.Port_Engine

/vessels/<RegExp>/propulsion/<RegExp>

Description:Thisregexpatternisusedforvalidationoftheidentifierforthepropulsionunit

AppendixA:KeysReference(Vessel)

62

Page 63: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/vessels/<RegExp>/propulsion/<RegExp>/label

Description:Humanreadablelabelforthepropulsionunit

/vessels/<RegExp>/propulsion/<RegExp>/state

Description:Thecurrentstateoftheengine

/vessels/<RegExp>/propulsion/<RegExp>/revolutions

Units:Hz(Hertz)

Description:Enginerevolutions(x60forRPM)

/vessels/<RegExp>/propulsion/<RegExp>/temperature

Units:K(Kelvin)

Description:Enginetemperature

/vessels/<RegExp>/propulsion/<RegExp>/oilTemperature

Units:K(Kelvin)

Description:Oiltemperature

/vessels/<RegExp>/propulsion/<RegExp>/oilPressure

Units:Pa(Pascal)

Description:Oilpressure

/vessels/<RegExp>/propulsion/<RegExp>/alternatorVoltage

Units:V(Volt)

Description:Alternatorvoltage

/vessels/<RegExp>/propulsion/<RegExp>/runTime

Units:s(Second)

Description:Totalrunningtimeforengine(EngineHoursinseconds)

/vessels/<RegExp>/propulsion/<RegExp>/coolantTemperature

AppendixA:KeysReference(Vessel)

63

Page 64: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Units:K(Kelvin)

Description:Coolanttemperature

/vessels/<RegExp>/propulsion/<RegExp>/coolantPressure

Units:Pa(Pascal)

Description:Coolantpressure

/vessels/<RegExp>/propulsion/<RegExp>/boostPressure

Units:Pa(Pascal)

Description:Engineboost(turbo,supercharger)pressure

/vessels/<RegExp>/propulsion/<RegExp>/intakeManifoldTemperature

Units:K(Kelvin)

Description:Intakemanifoldtemperature

/vessels/<RegExp>/propulsion/<RegExp>/engineLoad

Units:ratio(Ratio)

Description:Engineloadratio,0<=ratio<=1,1is100%

/vessels/<RegExp>/propulsion/<RegExp>/engineTorque

Units:ratio(Ratio)

Description:Enginetorqueratio,0<=ratio<=1,1is100%

/vessels/<RegExp>/propulsion/<RegExp>/transmission

Description:Thetransmission(gearbox)ofthenamedengine

/vessels/<RegExp>/propulsion/<RegExp>/transmission/gear

Description:Currentlyselectedgeartheengineisini.e.Forward,Reverse,etc.

/vessels/<RegExp>/propulsion/<RegExp>/transmission/gearRatio

Units:ratio(Ratio)

AppendixA:KeysReference(Vessel)

64

Page 65: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Description:Gearratio,enginerotationsperpropellershaftrotation

/vessels/<RegExp>/propulsion/<RegExp>/transmission/oilTemperature

Units:K(Kelvin)

Description:Oiltemperature

/vessels/<RegExp>/propulsion/<RegExp>/transmission/oilPressure

Units:Pa(Pascal)

Description:Oilpressure

/vessels/<RegExp>/propulsion/<RegExp>/drive

Description:Dataabouttheengine'sdrive.

/vessels/<RegExp>/propulsion/<RegExp>/drive/type

Description:Thetypeofdrivetheboathasi.eOutboard,shaft,jet,etc.

Enumvalues:

saildriveshaftoutboardjetpodother

/vessels/<RegExp>/propulsion/<RegExp>/drive/trimState

Units:ratio(Ratio)

Description:Trim/tiltstate,0<=ratio<=1,1is100%up

/vessels/<RegExp>/propulsion/<RegExp>/drive/thrustAngle

Units:rad(Radian)

Description:Currentthrustangleforsteerabledrives,+veisthrusttoStarboard

/vessels/<RegExp>/propulsion/<RegExp>/drive/propeller

Description:Dataaboutthedrive'spropeller(pitchandslip)

AppendixA:KeysReference(Vessel)

65

Page 66: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/vessels/<RegExp>/propulsion/<RegExp>/fuel

Description:Dataabouttheengine'sFuelSupply

/vessels/<RegExp>/propulsion/<RegExp>/fuel/type

Description:Fueltype

Enumvalues:

dieselpetrolelectriccoal/woodother

/vessels/<RegExp>/propulsion/<RegExp>/fuel/used

Units:m3(Cubicmeter)

Description:Usedfuelsincelastreset.Resettingisatuserdiscretion

/vessels/<RegExp>/propulsion/<RegExp>/fuel/pressure

Units:Pa(Pascal)

Description:Fuelpressure

/vessels/<RegExp>/propulsion/<RegExp>/fuel/rate

Units:m3/s(Cubicmeterpersecond)

Description:Fuelrateofconsumption

/vessels/<RegExp>/propulsion/<RegExp>/fuel/economyRate

Units:m3/s(Cubicmeterpersecond)

Description:Economyfuelrateofconsumption

/vessels/<RegExp>/propulsion/<RegExp>/fuel/averageRate

Units:m3/s(Cubicmeterpersecond)

Description:Averagefuelrateofconsumption

AppendixA:KeysReference(Vessel)

66

Page 67: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/vessels/<RegExp>/propulsion/<RegExp>/exhaustTemperature

Units:K(Kelvin)

Description:Exhausttemperature

/vessels/<RegExp>/electrical

Title:electrical

Description:Electricaldata,eachelectricaldeviceindentifiedbyauniquenamei.e.Battery_1

/vessels/<RegExp>/electrical/batteries

Description:Dataaboutthevessel'sbatteries

/vessels/<RegExp>/electrical/batteries/<RegExp>

Title:Batterykeyedbyinstanceid

Description:Batteries,oneormany,withinthevessel

/vessels/<RegExp>/electrical/batteries/<RegExp>/name

Description:UniqueIDofdevice(houseBattery,alternator,Generator,solar1,inverter,charger,combiner,etc.)

/vessels/<RegExp>/electrical/batteries/<RegExp>/location

Description:Installedlocationofdeviceonvessel

/vessels/<RegExp>/electrical/batteries/<RegExp>/dateInstalled

Units:RFC3339(UTC)(undefined)

Description:Datedevicewasinstalled

/vessels/<RegExp>/electrical/batteries/<RegExp>/manufacturer

Description:[missing]

/vessels/<RegExp>/electrical/batteries/<RegExp>/manufacturer/name

Description:Manufacturer'sname

AppendixA:KeysReference(Vessel)

67

Page 68: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/vessels/<RegExp>/electrical/batteries/<RegExp>/manufacturer/model

Description:Modelorpartnumber

/vessels/<RegExp>/electrical/batteries/<RegExp>/manufacturer/URL

Description:Webreferance/URL

/vessels/<RegExp>/electrical/batteries/<RegExp>/associatedBus

Description:NameofBUSdeviceisassociatedwith

/vessels/<RegExp>/electrical/batteries/<RegExp>/voltage

Units:V(Volt)

Description:Voltagemeasuredatorascloseaspossibletothedevice

/vessels/<RegExp>/electrical/batteries/<RegExp>/voltage/ripple

Units:V(Volt)

Description:DCRipplevoltage

/vessels/<RegExp>/electrical/batteries/<RegExp>/current

Units:A(Ampere)

Description:Currentflowingout(+ve)orin(-ve)tothedevice

/vessels/<RegExp>/electrical/batteries/<RegExp>/temperature

Title:temperature

Units:K(Kelvin)

Description:Temperaturemeasuredwithinoronthedevice

Fields:

warnUpper(Upperoperationaltemperaturelimit),units:K(Kelvin)warnLower(Loweroperationaltemperaturelimit),units:K(Kelvin)faultUpper(Upperfaulttemperaturelimit-devicemaydisable/disconnect),units:K(Kelvin)faultLower(Lowerfaulttemperaturelimit-devicemaydisable/disconnect),units:K(Kelvin)limitDischargeLower(Operationalminimumtemperaturelimitforbatterydischarge),units:K(Kelvin)limitDischargeUpper(Operationalmaximumtemperaturelimitforbatterydischarge),units:K(Kelvin)limitRechargeLower(Operationalminimumtemperaturelimitforbatteryrecharging),units:K(Kelvin)limitRechargeUpper(Operationalmaximumtemperaturelimitforbatteryrecharging),units:K(Kelvin)

AppendixA:KeysReference(Vessel)

68

Page 69: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/vessels/<RegExp>/electrical/batteries/<RegExp>/chemistry

Description:TypeofbatteryFLA,LiFePO4,etc.

/vessels/<RegExp>/electrical/batteries/<RegExp>/capacity

Title:capacity

Description:Dataaboutthebattery'scapacity

/vessels/<RegExp>/electrical/batteries/<RegExp>/capacity/nominal

Units:J(Joule)

Description:Thecapacityofbatteryasspecifiedbythemanufacturer

/vessels/<RegExp>/electrical/batteries/<RegExp>/capacity/actual

Units:J(Joule)

Description:Themeasuredcapacityofbattery.Thismaychangeovertimeandwilllikelydeviatefromthenominalcapacity.

/vessels/<RegExp>/electrical/batteries/<RegExp>/capacity/remaining

Units:J(Joule)

Description:Capacityremaininginbattery

/vessels/<RegExp>/electrical/batteries/<RegExp>/capacity/dischargeLimit

Units:J(Joule)

Description:Minimumcapacitytobeleftinthebatterywhiledischarging

/vessels/<RegExp>/electrical/batteries/<RegExp>/capacity/stateOfCharge

Units:ratio(Ratio)

Description:Stateofcharge,1=100%

/vessels/<RegExp>/electrical/batteries/<RegExp>/capacity/stateOfHealth

Units:ratio(Ratio)

Description:StateofHealth,1=100%

AppendixA:KeysReference(Vessel)

69

Page 70: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/vessels/<RegExp>/electrical/batteries/<RegExp>/capacity/dischargeSinceFull

Units:C(Coulomb)

Description:Cumulativedischargesincebatterywaslastfull

/vessels/<RegExp>/electrical/batteries/<RegExp>/capacity/timeRemaining

Units:s(Second)

Description:Timetodischargetodischargelimitatcurrentrate

/vessels/<RegExp>/electrical/batteries/<RegExp>/lifetimeDischarge

Units:C(Coulomb)

Description:Cumulativechargedischargedfrombatteryoveroperationallifetimeofbattery

/vessels/<RegExp>/electrical/batteries/<RegExp>/lifetimeRecharge

Units:C(Coulomb)

Description:Cumulativechargerechargedintobatteryoveroperationallifetimeofbattery

/vessels/<RegExp>/electrical/inverters

Description:DataabouttheInverterthathasbothDCandACqualities

/vessels/<RegExp>/electrical/inverters/<RegExp>

Title:Inverter

Description:DCtoACinverter,oneormany,withinthevessel

/vessels/<RegExp>/electrical/inverters/<RegExp>/name

Description:UniqueIDofdevice(houseBattery,alternator,Generator,solar1,inverter,charger,combiner,etc.)

/vessels/<RegExp>/electrical/inverters/<RegExp>/location

Description:Installedlocationofdeviceonvessel

/vessels/<RegExp>/electrical/inverters/<RegExp>/dateInstalled

AppendixA:KeysReference(Vessel)

70

Page 71: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Units:RFC3339(UTC)(undefined)

Description:Datedevicewasinstalled

/vessels/<RegExp>/electrical/inverters/<RegExp>/manufacturer

Description:[missing]

/vessels/<RegExp>/electrical/inverters/<RegExp>/manufacturer/name

Description:Manufacturer'sname

/vessels/<RegExp>/electrical/inverters/<RegExp>/manufacturer/model

Description:Modelorpartnumber

/vessels/<RegExp>/electrical/inverters/<RegExp>/manufacturer/URL

Description:Webreferance/URL

/vessels/<RegExp>/electrical/inverters/<RegExp>/dc

Title:DCQualities

Description:DCcommonqualities

/vessels/<RegExp>/electrical/inverters/<RegExp>/dc/associatedBus

Description:NameofBUSdeviceisassociatedwith

/vessels/<RegExp>/electrical/inverters/<RegExp>/dc/voltage

Units:V(Volt)

Description:Voltagemeasuredatorascloseaspossibletothedevice

/vessels/<RegExp>/electrical/inverters/<RegExp>/dc/voltage/ripple

Units:V(Volt)

Description:DCRipplevoltage

/vessels/<RegExp>/electrical/inverters/<RegExp>/dc/current

AppendixA:KeysReference(Vessel)

71

Page 72: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Units:A(Ampere)

Description:Currentflowingout(+ve)orin(-ve)tothedevice

/vessels/<RegExp>/electrical/inverters/<RegExp>/dc/temperature

Title:temperature

Units:K(Kelvin)

Description:Temperaturemeasuredwithinoronthedevice

Fields:

warnUpper(Upperoperationaltemperaturelimit),units:K(Kelvin)warnLower(Loweroperationaltemperaturelimit),units:K(Kelvin)faultUpper(Upperfaulttemperaturelimit-devicemaydisable/disconnect),units:K(Kelvin)faultLower(Lowerfaulttemperaturelimit-devicemaydisable/disconnect),units:K(Kelvin)

/vessels/<RegExp>/electrical/inverters/<RegExp>/ac

Title:ACQualities

Description:ACequipmentcommonqualities

/vessels/<RegExp>/electrical/inverters/<RegExp>/ac/associatedBus

Description:NameofBUSdeviceisassociatedwith

/vessels/<RegExp>/electrical/inverters/<RegExp>/ac/lineNeutralVoltage

Units:V(Volt)

Description:RMSvoltagemeasuredbetweenphaseandneutral

/vessels/<RegExp>/electrical/inverters/<RegExp>/ac/lineLineVoltage

Units:V(Volt)

Description:RMSvoltagemeasuredbetweenphases

/vessels/<RegExp>/electrical/inverters/<RegExp>/ac/current

Units:A(Ampere)

Description:RMScurrent

AppendixA:KeysReference(Vessel)

72

Page 73: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/vessels/<RegExp>/electrical/inverters/<RegExp>/ac/frequency

Units:Hz(Hertz)

Description:ACfrequency.

/vessels/<RegExp>/electrical/inverters/<RegExp>/ac/reactivePower

Units:W(Watt)

Description:Reactivepower

/vessels/<RegExp>/electrical/inverters/<RegExp>/ac/powerFactor

Description:Powerfactor

/vessels/<RegExp>/electrical/inverters/<RegExp>/ac/powerFactorLagging

Description:Lead/lagstatus.

Enumvalues:

leadinglaggingerrornotavailable

/vessels/<RegExp>/electrical/inverters/<RegExp>/ac/realPower

Units:W(Watt)

Description:Realpower.

/vessels/<RegExp>/electrical/inverters/<RegExp>/ac/apparentPower

Units:W(Watt)

Description:Apparentpower.

/vessels/<RegExp>/electrical/inverters/<RegExp>/inverterMode

Description:Modeofinverter

/vessels/<RegExp>/electrical/chargers

Description:DataaboutACsourcedbatterycharger

AppendixA:KeysReference(Vessel)

73

Page 74: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/vessels/<RegExp>/electrical/chargers/<RegExp>

Title:Charger

Description:Batterycharger

/vessels/<RegExp>/electrical/chargers/<RegExp>/name

Description:UniqueIDofdevice(houseBattery,alternator,Generator,solar1,inverter,charger,combiner,etc.)

/vessels/<RegExp>/electrical/chargers/<RegExp>/location

Description:Installedlocationofdeviceonvessel

/vessels/<RegExp>/electrical/chargers/<RegExp>/dateInstalled

Units:RFC3339(UTC)(undefined)

Description:Datedevicewasinstalled

/vessels/<RegExp>/electrical/chargers/<RegExp>/manufacturer

Description:[missing]

/vessels/<RegExp>/electrical/chargers/<RegExp>/manufacturer/name

Description:Manufacturer'sname

/vessels/<RegExp>/electrical/chargers/<RegExp>/manufacturer/model

Description:Modelorpartnumber

/vessels/<RegExp>/electrical/chargers/<RegExp>/manufacturer/URL

Description:Webreferance/URL

/vessels/<RegExp>/electrical/chargers/<RegExp>/associatedBus

Description:NameofBUSdeviceisassociatedwith

/vessels/<RegExp>/electrical/chargers/<RegExp>/voltage

AppendixA:KeysReference(Vessel)

74

Page 75: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Units:V(Volt)

Description:Voltagemeasuredatorascloseaspossibletothedevice

/vessels/<RegExp>/electrical/chargers/<RegExp>/voltage/ripple

Units:V(Volt)

Description:DCRipplevoltage

/vessels/<RegExp>/electrical/chargers/<RegExp>/current

Units:A(Ampere)

Description:Currentflowingout(+ve)orin(-ve)tothedevice

/vessels/<RegExp>/electrical/chargers/<RegExp>/temperature

Title:temperature

Units:K(Kelvin)

Description:Temperaturemeasuredwithinoronthedevice

Fields:

warnUpper(Upperoperationaltemperaturelimit),units:K(Kelvin)warnLower(Loweroperationaltemperaturelimit),units:K(Kelvin)faultUpper(Upperfaulttemperaturelimit-devicemaydisable/disconnect),units:K(Kelvin)faultLower(Lowerfaulttemperaturelimit-devicemaydisable/disconnect),units:K(Kelvin)

/vessels/<RegExp>/electrical/chargers/<RegExp>/chargingAlgorithm

Description:Algorithmbeingusedbythecharger

/vessels/<RegExp>/electrical/chargers/<RegExp>/chargerRole

Description:Howischargingsourceconfigured?Standalone,orinsyncwithanothercharger?

/vessels/<RegExp>/electrical/chargers/<RegExp>/chargingMode

Description:Chargingmodei.e.float,overcharge,etc.

/vessels/<RegExp>/electrical/chargers/<RegExp>/setpointVoltage

Units:V(Volt)

AppendixA:KeysReference(Vessel)

75

Page 76: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Description:Targetregulationvoltage

/vessels/<RegExp>/electrical/chargers/<RegExp>/setpointCurrent

Units:A(Ampere)

Description:Targetcurrentlimit

/vessels/<RegExp>/electrical/alternators

Description:DataaboutanAlternatorchargingdevice

/vessels/<RegExp>/electrical/alternators/<RegExp>

Title:Alternator

Description:Mechanicallydrivenalternator,includesdynamos

/vessels/<RegExp>/electrical/alternators/<RegExp>/name

Description:UniqueIDofdevice(houseBattery,alternator,Generator,solar1,inverter,charger,combiner,etc.)

/vessels/<RegExp>/electrical/alternators/<RegExp>/location

Description:Installedlocationofdeviceonvessel

/vessels/<RegExp>/electrical/alternators/<RegExp>/dateInstalled

Units:RFC3339(UTC)(undefined)

Description:Datedevicewasinstalled

/vessels/<RegExp>/electrical/alternators/<RegExp>/manufacturer

Description:[missing]

/vessels/<RegExp>/electrical/alternators/<RegExp>/manufacturer/name

Description:Manufacturer'sname

/vessels/<RegExp>/electrical/alternators/<RegExp>/manufacturer/model

Description:Modelorpartnumber

AppendixA:KeysReference(Vessel)

76

Page 77: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/vessels/<RegExp>/electrical/alternators/<RegExp>/manufacturer/URL

Description:Webreferance/URL

/vessels/<RegExp>/electrical/alternators/<RegExp>/associatedBus

Description:NameofBUSdeviceisassociatedwith

/vessels/<RegExp>/electrical/alternators/<RegExp>/voltage

Units:V(Volt)

Description:Voltagemeasuredatorascloseaspossibletothedevice

/vessels/<RegExp>/electrical/alternators/<RegExp>/voltage/ripple

Units:V(Volt)

Description:DCRipplevoltage

/vessels/<RegExp>/electrical/alternators/<RegExp>/current

Units:A(Ampere)

Description:Currentflowingout(+ve)orin(-ve)tothedevice

/vessels/<RegExp>/electrical/alternators/<RegExp>/temperature

Title:temperature

Units:K(Kelvin)

Description:Temperaturemeasuredwithinoronthedevice

Fields:

warnUpper(Upperoperationaltemperaturelimit),units:K(Kelvin)warnLower(Loweroperationaltemperaturelimit),units:K(Kelvin)faultUpper(Upperfaulttemperaturelimit-devicemaydisable/disconnect),units:K(Kelvin)faultLower(Lowerfaulttemperaturelimit-devicemaydisable/disconnect),units:K(Kelvin)

/vessels/<RegExp>/electrical/alternators/<RegExp>/chargingAlgorithm

Description:Algorithmbeingusedbythecharger

AppendixA:KeysReference(Vessel)

77

Page 78: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/vessels/<RegExp>/electrical/alternators/<RegExp>/chargerRole

Description:Howischargingsourceconfigured?Standalone,orinsyncwithanothercharger?

/vessels/<RegExp>/electrical/alternators/<RegExp>/chargingMode

Description:Chargingmodei.e.float,overcharge,etc.

/vessels/<RegExp>/electrical/alternators/<RegExp>/setpointVoltage

Units:V(Volt)

Description:Targetregulationvoltage

/vessels/<RegExp>/electrical/alternators/<RegExp>/setpointCurrent

Units:A(Ampere)

Description:Targetcurrentlimit

/vessels/<RegExp>/electrical/alternators/<RegExp>/revolutions

Units:Hz(Hertz)

Description:Alternatorrevolutionspersecond(x60forRPM)

/vessels/<RegExp>/electrical/alternators/<RegExp>/pulleyRatio

Units:ratio(Ratio)

Description:Mechanicalpulleyratioofdrivingsource(UsedtobackcalculateengineRPMs)

/vessels/<RegExp>/electrical/alternators/<RegExp>/fieldDrive

Units:%(undefined)

Description:%(0..100)offieldvoltageapplied

/vessels/<RegExp>/electrical/alternators/<RegExp>/regulatorTemperature

Units:K(Kelvin)

Description:Currenttemperatureofcriticalregulatorcomponents

/vessels/<RegExp>/electrical/solar

AppendixA:KeysReference(Vessel)

78

Page 79: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Description:DataaboutSolarchargingdevice(s)

/vessels/<RegExp>/electrical/solar/<RegExp>

Title:Solar

Description:Photovoltaicchargingdevices

/vessels/<RegExp>/electrical/solar/<RegExp>/name

Description:UniqueIDofdevice(houseBattery,alternator,Generator,solar1,inverter,charger,combiner,etc.)

/vessels/<RegExp>/electrical/solar/<RegExp>/location

Description:Installedlocationofdeviceonvessel

/vessels/<RegExp>/electrical/solar/<RegExp>/dateInstalled

Units:RFC3339(UTC)(undefined)

Description:Datedevicewasinstalled

/vessels/<RegExp>/electrical/solar/<RegExp>/manufacturer

Description:[missing]

/vessels/<RegExp>/electrical/solar/<RegExp>/manufacturer/name

Description:Manufacturer'sname

/vessels/<RegExp>/electrical/solar/<RegExp>/manufacturer/model

Description:Modelorpartnumber

/vessels/<RegExp>/electrical/solar/<RegExp>/manufacturer/URL

Description:Webreferance/URL

/vessels/<RegExp>/electrical/solar/<RegExp>/associatedBus

Description:NameofBUSdeviceisassociatedwith

AppendixA:KeysReference(Vessel)

79

Page 80: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/vessels/<RegExp>/electrical/solar/<RegExp>/voltage

Units:V(Volt)

Description:Voltagemeasuredatorascloseaspossibletothedevice

/vessels/<RegExp>/electrical/solar/<RegExp>/voltage/ripple

Units:V(Volt)

Description:DCRipplevoltage

/vessels/<RegExp>/electrical/solar/<RegExp>/current

Units:A(Ampere)

Description:Currentflowingout(+ve)orin(-ve)tothedevice

/vessels/<RegExp>/electrical/solar/<RegExp>/temperature

Title:temperature

Units:K(Kelvin)

Description:Temperaturemeasuredwithinoronthedevice

Fields:

warnUpper(Upperoperationaltemperaturelimit),units:K(Kelvin)warnLower(Loweroperationaltemperaturelimit),units:K(Kelvin)faultUpper(Upperfaulttemperaturelimit-devicemaydisable/disconnect),units:K(Kelvin)faultLower(Lowerfaulttemperaturelimit-devicemaydisable/disconnect),units:K(Kelvin)

/vessels/<RegExp>/electrical/solar/<RegExp>/chargingAlgorithm

Description:Algorithmbeingusedbythecharger

/vessels/<RegExp>/electrical/solar/<RegExp>/chargerRole

Description:Howischargingsourceconfigured?Standalone,orinsyncwithanothercharger?

/vessels/<RegExp>/electrical/solar/<RegExp>/chargingMode

Description:Chargingmodei.e.float,overcharge,etc.

/vessels/<RegExp>/electrical/solar/<RegExp>/setpointVoltage

AppendixA:KeysReference(Vessel)

80

Page 81: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Units:V(Volt)

Description:Targetregulationvoltage

/vessels/<RegExp>/electrical/solar/<RegExp>/setpointCurrent

Units:A(Ampere)

Description:Targetcurrentlimit

/vessels/<RegExp>/electrical/solar/<RegExp>/controllerMode

Description:Thecurrentstateoftheengine

/vessels/<RegExp>/electrical/solar/<RegExp>/panelVoltage

Units:V(Volt)

Description:VoltagebeingsuppliedfromSolarPanelstocontroller

/vessels/<RegExp>/electrical/solar/<RegExp>/panelCurrent

Units:A(Ampere)

Description:AmperagebeingsuppliedfromSolarPanelstocontroller

/vessels/<RegExp>/electrical/solar/<RegExp>/panelTemperature

Units:K(Kelvin)

Description:Temperatureofpanels

/vessels/<RegExp>/electrical/solar/<RegExp>/load

Description:Stateofloadportoncontroller(ifapplicable)

/vessels/<RegExp>/electrical/solar/<RegExp>/loadCurrent

Units:A(Ampere)

Description:Amperagebeingsuppliedtoloaddirectlyconnectedtocontroller

/vessels/<RegExp>/electrical/ac

Description:ACbuses

AppendixA:KeysReference(Vessel)

81

Page 82: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/vessels/<RegExp>/electrical/ac/<RegExp>

Title:ACBuskeyedbyinstanceid

Description:ACBus,oneormany,withinthevessel

/vessels/<RegExp>/electrical/ac/<RegExp>/name

Description:UniqueIDofdevice(houseBattery,alternator,Generator,solar1,inverter,charger,combiner,etc.)

/vessels/<RegExp>/electrical/ac/<RegExp>/location

Description:Installedlocationofdeviceonvessel

/vessels/<RegExp>/electrical/ac/<RegExp>/dateInstalled

Units:RFC3339(UTC)(undefined)

Description:Datedevicewasinstalled

/vessels/<RegExp>/electrical/ac/<RegExp>/manufacturer

Description:[missing]

/vessels/<RegExp>/electrical/ac/<RegExp>/manufacturer/name

Description:Manufacturer'sname

/vessels/<RegExp>/electrical/ac/<RegExp>/manufacturer/model

Description:Modelorpartnumber

/vessels/<RegExp>/electrical/ac/<RegExp>/manufacturer/URL

Description:Webreferance/URL

/vessels/<RegExp>/electrical/ac/<RegExp>/phase

Description:SingleorA,BorCin3Phasesystems

/vessels/<RegExp>/electrical/ac/<RegExp>/phase/(single)|([A-C])

AppendixA:KeysReference(Vessel)

82

Page 83: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Title:ACQualities

Description:ACequipmentcommonqualities

/vessels/<RegExp>/electrical/ac/<RegExp>/phase/(single)|([A-C])/associatedBus

Description:NameofBUSdeviceisassociatedwith

/vessels/<RegExp>/electrical/ac/<RegExp>/phase/(single)|([A-C])/lineNeutralVoltage

Units:V(Volt)

Description:RMSvoltagemeasuredbetweenphaseandneutral

/vessels/<RegExp>/electrical/ac/<RegExp>/phase/(single)|([A-C])/lineLineVoltage

Units:V(Volt)

Description:RMSvoltagemeasuredbetweenphases

/vessels/<RegExp>/electrical/ac/<RegExp>/phase/(single)|([A-C])/current

Units:A(Ampere)

Description:RMScurrent

/vessels/<RegExp>/electrical/ac/<RegExp>/phase/(single)|([A-C])/frequency

Units:Hz(Hertz)

Description:ACfrequency.

/vessels/<RegExp>/electrical/ac/<RegExp>/phase/(single)|([A-C])/reactivePower

Units:W(Watt)

Description:Reactivepower

/vessels/<RegExp>/electrical/ac/<RegExp>/phase/(single)|([A-C])/powerFactor

Description:Powerfactor

/vessels/<RegExp>/electrical/ac/<RegExp>/phase/(single)|([A-C])/powerFactorLagging

Description:Lead/lagstatus.

AppendixA:KeysReference(Vessel)

83

Page 84: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Enumvalues:

leadinglaggingerrornotavailable

/vessels/<RegExp>/electrical/ac/<RegExp>/phase/(single)|([A-C])/realPower

Units:W(Watt)

Description:Realpower.

/vessels/<RegExp>/electrical/ac/<RegExp>/phase/(single)|([A-C])/apparentPower

Units:W(Watt)

Description:Apparentpower.

/vessels/<RegExp>/notifications

Title:notifications

Description:Notificationscurrentlyraised.Majorcategorieshavewell-definednames,butthetreecanbeextendedbyanyhierarchicalstructure

/vessels/<RegExp>/notifications/mob

Description:Manoverboard

Objectvaluewithproperties

methodstatemessage

/vessels/<RegExp>/notifications/fire

Description:Fireonboard

Objectvaluewithproperties

methodstatemessage

/vessels/<RegExp>/notifications/sinking

AppendixA:KeysReference(Vessel)

84

Page 85: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Description:Vesselissinking

Objectvaluewithproperties

methodstatemessage

/vessels/<RegExp>/notifications/flooding

Description:Vesselisflooding

Objectvaluewithproperties

methodstatemessage

/vessels/<RegExp>/notifications/collision

Description:Incollisionwithanothervesselorobject

Objectvaluewithproperties

methodstatemessage

/vessels/<RegExp>/notifications/grounding

Description:Vesselgrounding

Objectvaluewithproperties

methodstatemessage

/vessels/<RegExp>/notifications/listing

Description:Vesselislisting

Objectvaluewithproperties

methodstatemessage

/vessels/<RegExp>/notifications/adrift

AppendixA:KeysReference(Vessel)

85

Page 86: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Description:Vesselisadrift

Objectvaluewithproperties

methodstatemessage

/vessels/<RegExp>/notifications/piracy

Description:Underattackordangerfrompirates

Objectvaluewithproperties

methodstatemessage

/vessels/<RegExp>/notifications/abandon

Description:Abandonship

Objectvaluewithproperties

methodstatemessage

/vessels/<RegExp>/notifications/<RegExp>

Description:Thisregexpatternisusedforvalidationofthepathofthealarm

/vessels/<RegExp>/steering

Title:steering

Description:Vesselsteeringdataforsteeringcontrols(notAutopilot'NavData')

/vessels/<RegExp>/steering/rudderAngle

Units:rad(Radian)

Description:Currentrudderangle,+veisruddertoStarboard

/vessels/<RegExp>/steering/rudderAngleTarget

Units:rad(Radian)

Description:Theangletheruddershouldmoveto,+veisruddertoStarboard

AppendixA:KeysReference(Vessel)

86

Page 87: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/vessels/<RegExp>/steering/autopilot

Title:autopilot

Description:Autopilotdata

/vessels/<RegExp>/steering/autopilot/state

Description:Autopilotstate

/vessels/<RegExp>/steering/autopilot/mode

Description:Operationalmode

/vessels/<RegExp>/steering/autopilot/target

Title:target

Description:Autopilottarget

/vessels/<RegExp>/steering/autopilot/target/windAngleApparent

Units:rad(Radian)

Description:Targetangletosteer,relativetoApparentwind+port-starboard

/vessels/<RegExp>/steering/autopilot/target/headingTrue

Units:rad(Radian)

Description:Targetheadingforautopilot,relativetoNorth

/vessels/<RegExp>/steering/autopilot/target/headingMagnetic

Units:rad(Radian)

Description:Targetheadingforautopilot,relativetoMagneticNorth

/vessels/<RegExp>/steering/autopilot/deadZone

Units:rad(Radian)

Description:Deadzonetoignoreforruddercorrections

AppendixA:KeysReference(Vessel)

87

Page 88: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/vessels/<RegExp>/steering/autopilot/backlash

Units:rad(Radian)

Description:Slackintherudderdrivemechanism

/vessels/<RegExp>/steering/autopilot/gain

Description:Auto-pilotgain,highernumberequalsmoreruddermovementforagiventurn

/vessels/<RegExp>/steering/autopilot/maxDriveCurrent

Units:A(Ampere)

Description:Maximumcurrenttousetodriveservo

/vessels/<RegExp>/steering/autopilot/maxDriveRate

Units:rad/s(Radianpersecond)

Description:Maximumrudderrotationspeed

/vessels/<RegExp>/steering/autopilot/portLock

Units:rad(Radian)

Description:Positionofservoonportlock

/vessels/<RegExp>/steering/autopilot/starboardLock

Units:rad(Radian)

Description:Positionofservoonstarboardlock

/vessels/<RegExp>/tanks

Title:tanks

Description:Tankdata,eachtankindentifiedbyauniquenamei.e.FreshWater_2

/vessels/<RegExp>/tanks/freshWater

Description:Freshwatertank(drinking)

/vessels/<RegExp>/tanks/freshWater/<RegExp>

AppendixA:KeysReference(Vessel)

88

Page 89: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Description:Tank,oneormany,withinthevessel

/vessels/<RegExp>/tanks/freshWater/<RegExp>/name

Description:Thenameofthetank.Usefulifmultipletanksofacertaintypeareonboard

/vessels/<RegExp>/tanks/freshWater/<RegExp>/type

Description:Thetypeoftank

Enumvalues:

petrolfreshwatergreywaterblackwaterholdinglpgdieselliveWellballastrum

/vessels/<RegExp>/tanks/freshWater/<RegExp>/capacity

Units:m3(Cubicmeter)

Description:Totalcapacity

/vessels/<RegExp>/tanks/freshWater/<RegExp>/currentLevel

Units:ratio(Ratio)

Description:Leveloffluidintank0-100%

/vessels/<RegExp>/tanks/freshWater/<RegExp>/currentVolume

Units:m3(Cubicmeter)

Description:Volumeoffluidintank

/vessels/<RegExp>/tanks/freshWater/<RegExp>/pressure

Units:Pa(Pascal)

Description:Pressureofcontentsintank,especiallyLPG/gas

AppendixA:KeysReference(Vessel)

89

Page 90: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/vessels/<RegExp>/tanks/freshWater/<RegExp>/temperature

Units:K(Kelvin)

Description:Temperatureoftank,especiallycryogenicorLPG/gas

/vessels/<RegExp>/tanks/freshWater/<RegExp>/viscosity

Units:Pa/s(undefined)

Description:Viscosityofthefluid,ifapplicable

/vessels/<RegExp>/tanks/freshWater/<RegExp>/extinguishant

Description:Thepreferredextinguishanttodouseafireinthistank

/vessels/<RegExp>/tanks/wasteWater

Description:Wastewatertank(greywater)

/vessels/<RegExp>/tanks/wasteWater/<RegExp>

Description:Tank,oneormany,withinthevessel

/vessels/<RegExp>/tanks/wasteWater/<RegExp>/name

Description:Thenameofthetank.Usefulifmultipletanksofacertaintypeareonboard

/vessels/<RegExp>/tanks/wasteWater/<RegExp>/type

Description:Thetypeoftank

Enumvalues:

petrolfreshwatergreywaterblackwaterholdinglpgdieselliveWellballastrum

AppendixA:KeysReference(Vessel)

90

Page 91: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/vessels/<RegExp>/tanks/wasteWater/<RegExp>/capacity

Units:m3(Cubicmeter)

Description:Totalcapacity

/vessels/<RegExp>/tanks/wasteWater/<RegExp>/currentLevel

Units:ratio(Ratio)

Description:Leveloffluidintank0-100%

/vessels/<RegExp>/tanks/wasteWater/<RegExp>/currentVolume

Units:m3(Cubicmeter)

Description:Volumeoffluidintank

/vessels/<RegExp>/tanks/wasteWater/<RegExp>/pressure

Units:Pa(Pascal)

Description:Pressureofcontentsintank,especiallyLPG/gas

/vessels/<RegExp>/tanks/wasteWater/<RegExp>/temperature

Units:K(Kelvin)

Description:Temperatureoftank,especiallycryogenicorLPG/gas

/vessels/<RegExp>/tanks/wasteWater/<RegExp>/viscosity

Units:Pa/s(undefined)

Description:Viscosityofthefluid,ifapplicable

/vessels/<RegExp>/tanks/wasteWater/<RegExp>/extinguishant

Description:Thepreferredextinguishanttodouseafireinthistank

/vessels/<RegExp>/tanks/blackWater

Description:Blackwatertank(sewage)

/vessels/<RegExp>/tanks/blackWater/<RegExp>

AppendixA:KeysReference(Vessel)

91

Page 92: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Description:Tank,oneormany,withinthevessel

/vessels/<RegExp>/tanks/blackWater/<RegExp>/name

Description:Thenameofthetank.Usefulifmultipletanksofacertaintypeareonboard

/vessels/<RegExp>/tanks/blackWater/<RegExp>/type

Description:Thetypeoftank

Enumvalues:

petrolfreshwatergreywaterblackwaterholdinglpgdieselliveWellballastrum

/vessels/<RegExp>/tanks/blackWater/<RegExp>/capacity

Units:m3(Cubicmeter)

Description:Totalcapacity

/vessels/<RegExp>/tanks/blackWater/<RegExp>/currentLevel

Units:ratio(Ratio)

Description:Leveloffluidintank0-100%

/vessels/<RegExp>/tanks/blackWater/<RegExp>/currentVolume

Units:m3(Cubicmeter)

Description:Volumeoffluidintank

/vessels/<RegExp>/tanks/blackWater/<RegExp>/pressure

Units:Pa(Pascal)

Description:Pressureofcontentsintank,especiallyLPG/gas

AppendixA:KeysReference(Vessel)

92

Page 93: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/vessels/<RegExp>/tanks/blackWater/<RegExp>/temperature

Units:K(Kelvin)

Description:Temperatureoftank,especiallycryogenicorLPG/gas

/vessels/<RegExp>/tanks/blackWater/<RegExp>/viscosity

Units:Pa/s(undefined)

Description:Viscosityofthefluid,ifapplicable

/vessels/<RegExp>/tanks/blackWater/<RegExp>/extinguishant

Description:Thepreferredextinguishanttodouseafireinthistank

/vessels/<RegExp>/tanks/fuel

Description:Fueltank(petrolordiesel)

/vessels/<RegExp>/tanks/fuel/<RegExp>

Description:Tank,oneormany,withinthevessel

/vessels/<RegExp>/tanks/fuel/<RegExp>/name

Description:Thenameofthetank.Usefulifmultipletanksofacertaintypeareonboard

/vessels/<RegExp>/tanks/fuel/<RegExp>/type

Description:Thetypeoftank

Enumvalues:

petrolfreshwatergreywaterblackwaterholdinglpgdieselliveWellballastrum

AppendixA:KeysReference(Vessel)

93

Page 94: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/vessels/<RegExp>/tanks/fuel/<RegExp>/capacity

Units:m3(Cubicmeter)

Description:Totalcapacity

/vessels/<RegExp>/tanks/fuel/<RegExp>/currentLevel

Units:ratio(Ratio)

Description:Leveloffluidintank0-100%

/vessels/<RegExp>/tanks/fuel/<RegExp>/currentVolume

Units:m3(Cubicmeter)

Description:Volumeoffluidintank

/vessels/<RegExp>/tanks/fuel/<RegExp>/pressure

Units:Pa(Pascal)

Description:Pressureofcontentsintank,especiallyLPG/gas

/vessels/<RegExp>/tanks/fuel/<RegExp>/temperature

Units:K(Kelvin)

Description:Temperatureoftank,especiallycryogenicorLPG/gas

/vessels/<RegExp>/tanks/fuel/<RegExp>/viscosity

Units:Pa/s(undefined)

Description:Viscosityofthefluid,ifapplicable

/vessels/<RegExp>/tanks/fuel/<RegExp>/extinguishant

Description:Thepreferredextinguishanttodouseafireinthistank

/vessels/<RegExp>/tanks/lubrication

Description:Lubricationtank(oilorgrease)

/vessels/<RegExp>/tanks/lubrication/<RegExp>

AppendixA:KeysReference(Vessel)

94

Page 95: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Description:Tank,oneormany,withinthevessel

/vessels/<RegExp>/tanks/lubrication/<RegExp>/name

Description:Thenameofthetank.Usefulifmultipletanksofacertaintypeareonboard

/vessels/<RegExp>/tanks/lubrication/<RegExp>/type

Description:Thetypeoftank

Enumvalues:

petrolfreshwatergreywaterblackwaterholdinglpgdieselliveWellballastrum

/vessels/<RegExp>/tanks/lubrication/<RegExp>/capacity

Units:m3(Cubicmeter)

Description:Totalcapacity

/vessels/<RegExp>/tanks/lubrication/<RegExp>/currentLevel

Units:ratio(Ratio)

Description:Leveloffluidintank0-100%

/vessels/<RegExp>/tanks/lubrication/<RegExp>/currentVolume

Units:m3(Cubicmeter)

Description:Volumeoffluidintank

/vessels/<RegExp>/tanks/lubrication/<RegExp>/pressure

Units:Pa(Pascal)

Description:Pressureofcontentsintank,especiallyLPG/gas

AppendixA:KeysReference(Vessel)

95

Page 96: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/vessels/<RegExp>/tanks/lubrication/<RegExp>/temperature

Units:K(Kelvin)

Description:Temperatureoftank,especiallycryogenicorLPG/gas

/vessels/<RegExp>/tanks/lubrication/<RegExp>/viscosity

Units:Pa/s(undefined)

Description:Viscosityofthefluid,ifapplicable

/vessels/<RegExp>/tanks/lubrication/<RegExp>/extinguishant

Description:Thepreferredextinguishanttodouseafireinthistank

/vessels/<RegExp>/tanks/liveWell

Description:Livetank(fish)

/vessels/<RegExp>/tanks/liveWell/<RegExp>

Description:Tank,oneormany,withinthevessel

/vessels/<RegExp>/tanks/liveWell/<RegExp>/name

Description:Thenameofthetank.Usefulifmultipletanksofacertaintypeareonboard

/vessels/<RegExp>/tanks/liveWell/<RegExp>/type

Description:Thetypeoftank

Enumvalues:

petrolfreshwatergreywaterblackwaterholdinglpgdieselliveWellballastrum

AppendixA:KeysReference(Vessel)

96

Page 97: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/vessels/<RegExp>/tanks/liveWell/<RegExp>/capacity

Units:m3(Cubicmeter)

Description:Totalcapacity

/vessels/<RegExp>/tanks/liveWell/<RegExp>/currentLevel

Units:ratio(Ratio)

Description:Leveloffluidintank0-100%

/vessels/<RegExp>/tanks/liveWell/<RegExp>/currentVolume

Units:m3(Cubicmeter)

Description:Volumeoffluidintank

/vessels/<RegExp>/tanks/liveWell/<RegExp>/pressure

Units:Pa(Pascal)

Description:Pressureofcontentsintank,especiallyLPG/gas

/vessels/<RegExp>/tanks/liveWell/<RegExp>/temperature

Units:K(Kelvin)

Description:Temperatureoftank,especiallycryogenicorLPG/gas

/vessels/<RegExp>/tanks/liveWell/<RegExp>/viscosity

Units:Pa/s(undefined)

Description:Viscosityofthefluid,ifapplicable

/vessels/<RegExp>/tanks/liveWell/<RegExp>/extinguishant

Description:Thepreferredextinguishanttodouseafireinthistank

/vessels/<RegExp>/tanks/gas

Description:Lpg/propaneandothergases

/vessels/<RegExp>/tanks/gas/<RegExp>

AppendixA:KeysReference(Vessel)

97

Page 98: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Description:Tank,oneormany,withinthevessel

/vessels/<RegExp>/tanks/gas/<RegExp>/name

Description:Thenameofthetank.Usefulifmultipletanksofacertaintypeareonboard

/vessels/<RegExp>/tanks/gas/<RegExp>/type

Description:Thetypeoftank

Enumvalues:

petrolfreshwatergreywaterblackwaterholdinglpgdieselliveWellballastrum

/vessels/<RegExp>/tanks/gas/<RegExp>/capacity

Units:m3(Cubicmeter)

Description:Totalcapacity

/vessels/<RegExp>/tanks/gas/<RegExp>/currentLevel

Units:ratio(Ratio)

Description:Leveloffluidintank0-100%

/vessels/<RegExp>/tanks/gas/<RegExp>/currentVolume

Units:m3(Cubicmeter)

Description:Volumeoffluidintank

/vessels/<RegExp>/tanks/gas/<RegExp>/pressure

Units:Pa(Pascal)

Description:Pressureofcontentsintank,especiallyLPG/gas

AppendixA:KeysReference(Vessel)

98

Page 99: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/vessels/<RegExp>/tanks/gas/<RegExp>/temperature

Units:K(Kelvin)

Description:Temperatureoftank,especiallycryogenicorLPG/gas

/vessels/<RegExp>/tanks/gas/<RegExp>/viscosity

Units:Pa/s(undefined)

Description:Viscosityofthefluid,ifapplicable

/vessels/<RegExp>/tanks/gas/<RegExp>/extinguishant

Description:Thepreferredextinguishanttodouseafireinthistank

/vessels/<RegExp>/tanks/ballast

Description:Ballasttanks

/vessels/<RegExp>/tanks/ballast/<RegExp>

Description:Tank,oneormany,withinthevessel

/vessels/<RegExp>/tanks/ballast/<RegExp>/name

Description:Thenameofthetank.Usefulifmultipletanksofacertaintypeareonboard

/vessels/<RegExp>/tanks/ballast/<RegExp>/type

Description:Thetypeoftank

Enumvalues:

petrolfreshwatergreywaterblackwaterholdinglpgdieselliveWellballastrum

AppendixA:KeysReference(Vessel)

99

Page 100: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/vessels/<RegExp>/tanks/ballast/<RegExp>/capacity

Units:m3(Cubicmeter)

Description:Totalcapacity

/vessels/<RegExp>/tanks/ballast/<RegExp>/currentLevel

Units:ratio(Ratio)

Description:Leveloffluidintank0-100%

/vessels/<RegExp>/tanks/ballast/<RegExp>/currentVolume

Units:m3(Cubicmeter)

Description:Volumeoffluidintank

/vessels/<RegExp>/tanks/ballast/<RegExp>/pressure

Units:Pa(Pascal)

Description:Pressureofcontentsintank,especiallyLPG/gas

/vessels/<RegExp>/tanks/ballast/<RegExp>/temperature

Units:K(Kelvin)

Description:Temperatureoftank,especiallycryogenicorLPG/gas

/vessels/<RegExp>/tanks/ballast/<RegExp>/viscosity

Units:Pa/s(undefined)

Description:Viscosityofthefluid,ifapplicable

/vessels/<RegExp>/tanks/ballast/<RegExp>/extinguishant

Description:Thepreferredextinguishanttodouseafireinthistank

/vessels/<RegExp>/design

Title:design

Description:Design/dimensionaldataofthisvessel

AppendixA:KeysReference(Vessel)

100

Page 101: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/vessels/<RegExp>/design/displacement

Units:kg(Kilogram)

Description:Thedisplacementofthevessel

/vessels/<RegExp>/design/aisShipType

Description:Theaisshiptypeseehttp://www.bosunsmate.org/ais/message5.php

Objectvaluewithproperties

idname

/vessels/<RegExp>/design/draft

Title:draft

Description:Thedraftofthevessel

Objectvaluewithproperties

minimum(m)maximum(m)current(m)canoe(m)

/vessels/<RegExp>/design/length

Title:length

Description:Thevariouslengthsofthevessel

Objectvaluewithproperties

overall(m)hull(m)waterline(m)

/vessels/<RegExp>/design/keel

Title:keel

Description:Informationaboutthevessel'skeel

Fields:

type(Thetypeofkeel.),enum:

longfinflare

AppendixA:KeysReference(Vessel)

101

Page 102: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

bulbwingcenterboardkantingliftingdaggerboard

/vessels/<RegExp>/design/keel/angle

Units:rad(Radian)

Description:Anumberindicatingatwhichanglethekeelcurrentlyis(incaseofacantingkeel),negativetoport.

/vessels/<RegExp>/design/keel/lift

Units:ratio(Ratio)

Description:Inthecaseofaliftingkeel,centreboardordaggerboard,thepartofthekeelwhichisextended.0is'allthewayup'and1is'allthewaydown'.0.8wouldbe80%down.

/vessels/<RegExp>/design/beam

Units:m(Meter)

Description:Beamlength

/vessels/<RegExp>/design/airHeight

Units:m(Meter)

Description:Totalheightofthevessel

/vessels/<RegExp>/design/rigging

Title:rigging

Description:Informationaboutthevessel'srigging

Fields:

configuration(Theconfigurationoftherigging)masts(Thenumberofmastsonthevessel.)

/vessels/<RegExp>/sails

Title:sails

Description:Sailsdata

AppendixA:KeysReference(Vessel)

102

Page 103: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/vessels/<RegExp>/sails/inventory

Description:Anobjectcontainingadescriptionofeachsailavailabletothevesselcrew

/vessels/<RegExp>/sails/inventory/<RegExp>

Description:'sail'datatype.

Fields:

name(Anuniqueidentifierbywhichthecrewidentifiesasail)type(Thetypeofsail)material(Thematerialthesailismadefrom(optional))brand(Thebrandofthesail(optional))active(Indicateswetherthissailiscurrentlyinuseornot)area(Thetotalareaofthissailinsquaremeters),units:m2(Squaremeter)minimumWind(Theminimumwindspeedthissailcanbeusedwith),units:m/s(Meterspersecond)maximumWind(Themaximumwindspeedthissailcanbeusedwith),units:m/s(Meterspersecond)

/vessels/<RegExp>/sails/area

Description:Anobjectcontaininginformationaboutthevessels'sails.

/vessels/<RegExp>/sails/area/total

Units:m2(Squaremeter)

Description:Thetotalareaofallsailsonthevessel

/vessels/<RegExp>/sails/area/active

Units:m2(Squaremeter)

Description:Thetotalareaofthesailscurrentlyinuseonthevessel

/vessels/<RegExp>/sensors

Title:sensors

Description:Sensors,theirstate,anddata.

/vessels/<RegExp>/sensors/<RegExp>

Title:sensor

Description:ThisregexpatternisusedforvalidationUUIDidentifierforthesensor

AppendixA:KeysReference(Vessel)

103

Page 104: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/vessels/<RegExp>/sensors/<RegExp>/name

Description:Thecommonnameofthesensor

/vessels/<RegExp>/sensors/<RegExp>/sensorType

Description:Thedatamodeldefinitionofthesensordata.FIXME-needtocreateadefinitionslibofsensordatamodeltypes

/vessels/<RegExp>/sensors/<RegExp>/sensorData

Description:Thedataofthesensordata.FIXME-needtorefthedefinitionsofsensortypes

/vessels/<RegExp>/sensors/<RegExp>/fromBow

Description:Thedistancefromthebowtothesensorlocation

/vessels/<RegExp>/sensors/<RegExp>/fromCenter

Description:Thedistancefromthecenterlinetothesensorlocation,-vetostarboard,+vetoport

/vessels/<RegExp>/performance

Title:performance

Description:PerformanceSailingdataincludingVMG,PolarSpeed,tackangle,etc.

/vessels/<RegExp>/performance/polarSpeed

Units:m/s(Meterspersecond)

Description:Thecurrentpolarspeedbasedoncurrentpolardiagram,WindSpeedTrueandangleTrueWater.

/vessels/<RegExp>/performance/polarSpeedRatio

Units:ratio(Ratio)

Description:Theratioofcurrentspeedthroughwatertothepolarspeed.

/vessels/<RegExp>/performance/velocityMadeGood

Units:m/s(Meterspersecond)

AppendixA:KeysReference(Vessel)

104

Page 105: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Description:Thecurrentvelocitymadegoodderivedfromthespeedthroughwaterandappearantwindangle.Apositivevalueisheadingtoupwind,negativetodownwind.

/vessels/<RegExp>/performance/velocityMadeGoodToWaypoint

Units:m/s(Meterspersecond)

Description:ThecurrentvelocitymadegoodtothenextwaypointderivedfromthespeedOverGround,courseOverGround.

/vessels/<RegExp>/performance/beatAngle

Units:rad(Radian)

Description:ThetruewindbeatangleforthebestvelocitymadegoodbasedoncurrentcurrentpolardiagramandWindSpeedTrue.

/vessels/<RegExp>/performance/beatAngleVelocityMadeGood

Units:m/s(Meterspersecond)

Description:Thevelocitymadegoodforthebeatangle.

/vessels/<RegExp>/performance/beatAngleTargetSpeed

Units:m/s(Meterspersecond)

Description:Thetargetspeedforthebeatangle.

/vessels/<RegExp>/performance/gybeAngle

Units:rad(Radian)

Description:ThetruewindgybeangleforthebestvelocitymadegooddownwindbasedoncurrentpolardiagramandWindSpeedTrue.

/vessels/<RegExp>/performance/gybeAngleVelocityMadeGood

Units:m/s(Meterspersecond)

Description:Thevelocitymadegoodforthegybeangle

/vessels/<RegExp>/performance/gybeAngleTargetSpeed

Units:m/s(Meterspersecond)

Description:Thetargetspeedforthegybeangle.

AppendixA:KeysReference(Vessel)

105

Page 106: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/vessels/<RegExp>/performance/targetAngle

Units:rad(Radian)

Description:ThetruewindgybeorbeatangleforthebestvelocitymadegooddownwindorupwindbasedoncurrentpolardiagramandWindSpeedTrue.

/vessels/<RegExp>/performance/targetSpeed

Units:m/s(Meterspersecond)

Description:Thetargetspeedforthebeatangleorgybeangle,whicheverisapplicable.

/vessels/<RegExp>/performance/leeway

Units:rad(Radian)

Description:Currentleeway

/vessels/<RegExp>/performance/tackMagnetic

Units:rad(Radian)

Description:Magneticheadingonoppositetack.

/vessels/<RegExp>/performance/tackTrue

Units:rad(Radian)

Description:Trueheadingonoppositetack.

AppendixA:KeysReference(Vessel)

106

Page 107: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/self

Description:Thisholdsthecontext(prefix+UUID,MMSIorURLindotnotation)oftheserver'sselfobject.

/aircraft

Description:Awrapperobjectforaircraft,primarilyintendedforSARaircraftinrelationtomarinesearchandrescue.Forclarityaboutseaplanesetc,ifitCANfly,itsanaircraft.

/aircraft/<RegExp>

Title:aircraft

Description:ThisregexpatternisusedforvalidationofanMMSIorSignalKUUIDidentifierfortheaircraft.Examples:urn:mrn:imo:mmsi:111099999urn:mrn:signalk:uuid:c0d79334-4e25-4245-8892-54e8ccc8021d

/aircraft/<RegExp>/url

Description:URLbasedidentityoftheaircraft,ifavailable.

/aircraft/<RegExp>/mmsi

Description:MMSInumberoftheaircraft,ifavailable.

/aircraft/<RegExp>/uuid

Description:AuniqueSignalKflavouredmaritimeresourceidentifier,assignedbytheserver.

/aircraft/<RegExp>/flag

Description:Thecountryofaircraftregistration,orflagstateoftheaircraft

/aircraft/<RegExp>/base

Description:Thehomebaseoftheaircraft

/aircraft/<RegExp>/registrations

Description:Thevariousregistrationsoftheaircraft.

AppendixB:KeysReference(Others)

107

Page 108: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/aircraft/<RegExp>/registrations/imo

Description:TheIMOnumberoftheaircraft.

/aircraft/<RegExp>/registrations/national

Description:Thenationalregistrationnumberoftheaircraft.

/aircraft/<RegExp>/registrations/national/<RegExp>

Description:Thisregexpatternisusedforvalidatingtheidentifierfortheregistration

/aircraft/<RegExp>/registrations/national/<RegExp>/country

Description:TheISO3166-2countrycode.

/aircraft/<RegExp>/registrations/national/<RegExp>/registration

Description:Theregistrationcode

/aircraft/<RegExp>/registrations/national/<RegExp>/description

Description:Theregistrationdescription

/aircraft/<RegExp>/registrations/other

Description:Otherregistrationorpermitsfortheaircraft.

/aircraft/<RegExp>/registrations/other/<RegExp>

Description:Thisregexpatternisusedforvalidatingtheidentifierfortheregistration

/aircraft/<RegExp>/registrations/other/<RegExp>/registration

Description:Theregistrationcode

/aircraft/<RegExp>/registrations/other/<RegExp>/description

Description:Theregistrationdescription

AppendixB:KeysReference(Others)

108

Page 109: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/aircraft/<RegExp>/communication

Title:communication

Description:CommunicationdataincludingRadio,Telephone,E-Mail,etc.

/aircraft/<RegExp>/communication/callsignVhf

Description:CallsignforVHFcommunication

/aircraft/<RegExp>/communication/callsignHf

Description:CallsignforHFcommunication

/aircraft/<RegExp>/communication/phoneNumber

Description:Phonenumberofskipper

/aircraft/<RegExp>/communication/emailHf

Description:EmailaddresstobeusedforHFemail(Winmail,Airmail,Sailmail)

/aircraft/<RegExp>/communication/email

Description:Regularemailfortheskipper

/aircraft/<RegExp>/communication/satPhoneNumber

Description:Satellitephonenumberforvessel.

/aircraft/<RegExp>/communication/skipperName

Description:Fullnameoftheskipperofthevessel.

/aircraft/<RegExp>/communication/crewNames

Description:Arraywiththenamesofthecrew

/aircraft/<RegExp>/environment

Title:environment

AppendixB:KeysReference(Others)

109

Page 110: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Description:EnvironmentaldatameasuredlocallyincludingDepth,Wind,Temp,etc.

/aircraft/<RegExp>/environment/outside

Description:Environmentalconditionsoutsideofthevessel'shull

/aircraft/<RegExp>/environment/outside/temperature

Units:K(Kelvin)

Description:Currentoutsideairtemperature

/aircraft/<RegExp>/environment/outside/dewPointTemperature

Units:K(Kelvin)

Description:Currentoutsidedewpointtemperature

/aircraft/<RegExp>/environment/outside/apparentWindChillTemperature

Units:K(Kelvin)

Description:Currentoutsideapparentwindchilltemperature

/aircraft/<RegExp>/environment/outside/theoreticalWindChillTemperature

Units:K(Kelvin)

Description:Currentoutsidetheoreticalwindchilltemperature

/aircraft/<RegExp>/environment/outside/heatIndexTemperature

Units:K(Kelvin)

Description:Currentoutsideheatindextemperature

/aircraft/<RegExp>/environment/outside/pressure

Units:Pa(Pascal)

Description:Currentoutsideairambientpressure

/aircraft/<RegExp>/environment/outside/humidity

Units:ratio(Ratio)

AppendixB:KeysReference(Others)

110

Page 111: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Description:Currentoutsideairrelativehumidity

/aircraft/<RegExp>/environment/outside/airDensity

Units:kg/m3(undefined)

Description:Currentoutsideairdensity

/aircraft/<RegExp>/environment/outside/illuminance

Units:Lux(undefined)

Description:Currentoutsideambientlightflux.

/aircraft/<RegExp>/environment/inside

Description:Environmentalconditionsinsidethevessel'shull

/aircraft/<RegExp>/environment/inside/temperature

Units:K(Kelvin)

Description:Currentinsideairtemperature

/aircraft/<RegExp>/environment/inside/humidity

Units:ratio(Ratio)

Description:Currentinsideairrelativehumidity

/aircraft/<RegExp>/environment/inside/engineRoom

Description:Currentengineroomairtemperature

/aircraft/<RegExp>/environment/inside/engineRoom/temperature

Units:K(Kelvin)

Description:Temperature

/aircraft/<RegExp>/environment/inside/engineRoom/pressure

Units:Pa(Pascal)

Description:Pressureinzone

AppendixB:KeysReference(Others)

111

Page 112: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/aircraft/<RegExp>/environment/inside/engineRoom/relativeHumidity

Units:ratio(Ratio)

Description:Relativehumidityinzone

/aircraft/<RegExp>/environment/inside/engineRoom/dewPoint

Units:K(Kelvin)

Description:Dewpointinzone

/aircraft/<RegExp>/environment/inside/engineRoom/airDensity

Units:kg/m3(undefined)

Description:Airdensityinzone

/aircraft/<RegExp>/environment/inside/engineRoom/illuminance

Units:Lux(undefined)

Description:Illuminanceinzone

/aircraft/<RegExp>/environment/inside/mainCabin

Description:Currentmaincabinairtemperature

/aircraft/<RegExp>/environment/inside/mainCabin/temperature

Units:K(Kelvin)

Description:Temperature

/aircraft/<RegExp>/environment/inside/mainCabin/pressure

Units:Pa(Pascal)

Description:Pressureinzone

/aircraft/<RegExp>/environment/inside/mainCabin/relativeHumidity

Units:ratio(Ratio)

Description:Relativehumidityinzone

AppendixB:KeysReference(Others)

112

Page 113: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/aircraft/<RegExp>/environment/inside/mainCabin/dewPoint

Units:K(Kelvin)

Description:Dewpointinzone

/aircraft/<RegExp>/environment/inside/mainCabin/airDensity

Units:kg/m3(undefined)

Description:Airdensityinzone

/aircraft/<RegExp>/environment/inside/mainCabin/illuminance

Units:Lux(undefined)

Description:Illuminanceinzone

/aircraft/<RegExp>/environment/inside/refrigerator

Description:Currentrefrigeratortemperature

/aircraft/<RegExp>/environment/inside/refrigerator/temperature

Units:K(Kelvin)

Description:Temperature

/aircraft/<RegExp>/environment/inside/refrigerator/pressure

Units:Pa(Pascal)

Description:Pressureinzone

/aircraft/<RegExp>/environment/inside/refrigerator/relativeHumidity

Units:ratio(Ratio)

Description:Relativehumidityinzone

/aircraft/<RegExp>/environment/inside/refrigerator/dewPoint

Units:K(Kelvin)

Description:Dewpointinzone

AppendixB:KeysReference(Others)

113

Page 114: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/aircraft/<RegExp>/environment/inside/refrigerator/airDensity

Units:kg/m3(undefined)

Description:Airdensityinzone

/aircraft/<RegExp>/environment/inside/refrigerator/illuminance

Units:Lux(undefined)

Description:Illuminanceinzone

/aircraft/<RegExp>/environment/inside/freezer

Description:Currentfreezertemperature

/aircraft/<RegExp>/environment/inside/freezer/temperature

Units:K(Kelvin)

Description:Temperature

/aircraft/<RegExp>/environment/inside/freezer/pressure

Units:Pa(Pascal)

Description:Pressureinzone

/aircraft/<RegExp>/environment/inside/freezer/relativeHumidity

Units:ratio(Ratio)

Description:Relativehumidityinzone

/aircraft/<RegExp>/environment/inside/freezer/dewPoint

Units:K(Kelvin)

Description:Dewpointinzone

/aircraft/<RegExp>/environment/inside/freezer/airDensity

Units:kg/m3(undefined)

Description:Airdensityinzone

AppendixB:KeysReference(Others)

114

Page 115: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/aircraft/<RegExp>/environment/inside/freezer/illuminance

Units:Lux(undefined)

Description:Illuminanceinzone

/aircraft/<RegExp>/environment/inside/heating

Description:Currentheatingtemperature

/aircraft/<RegExp>/environment/inside/heating/temperature

Units:K(Kelvin)

Description:Temperature

/aircraft/<RegExp>/environment/inside/heating/pressure

Units:Pa(Pascal)

Description:Pressureinzone

/aircraft/<RegExp>/environment/inside/heating/relativeHumidity

Units:ratio(Ratio)

Description:Relativehumidityinzone

/aircraft/<RegExp>/environment/inside/heating/dewPoint

Units:K(Kelvin)

Description:Dewpointinzone

/aircraft/<RegExp>/environment/inside/heating/airDensity

Units:kg/m3(undefined)

Description:Airdensityinzone

/aircraft/<RegExp>/environment/inside/heating/illuminance

Units:Lux(undefined)

Description:Illuminanceinzone

AppendixB:KeysReference(Others)

115

Page 116: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/aircraft/<RegExp>/environment/water

Description:Environmentalconditionsofthewaterthatthevesselissailingin

/aircraft/<RegExp>/environment/water/temperature

Units:K(Kelvin)

Description:Currentwatertemperature

/aircraft/<RegExp>/environment/water/salinity

Units:ratio(Ratio)

Description:Watersalinity

/aircraft/<RegExp>/environment/depth

Title:depth

Description:Depthrelateddata

/aircraft/<RegExp>/environment/depth/belowKeel

Units:m(Meter)

Description:Depthbelowkeel

/aircraft/<RegExp>/environment/depth/belowTransducer

Units:m(Meter)

Description:DepthbelowTransducer

/aircraft/<RegExp>/environment/depth/belowSurface

Units:m(Meter)

Description:Depthfromsurface

/aircraft/<RegExp>/environment/depth/transducerToKeel

Units:m(Meter)

Description:Depthfromthetransducertothebottomofthekeel

AppendixB:KeysReference(Others)

116

Page 117: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/aircraft/<RegExp>/environment/depth/surfaceToTransducer

Units:m(Meter)

Description:Depthtransducerisbelowthewatersurface

/aircraft/<RegExp>/environment/current

Title:current

Description:Directionandstrengthofcurrentaffectingthevessel

Objectvaluewithproperties

drift(m/s)setTrue(rad)setMagnetic(rad)

/aircraft/<RegExp>/environment/tide

Title:tide

Description:Tidedata

/aircraft/<RegExp>/environment/tide/heightHigh

Units:m(Meter)

Description:Nexthightideheightrelativetolowestastronomicaltide(LAT/ChartDatum)

/aircraft/<RegExp>/environment/tide/heightNow

Units:m(Meter)

Description:Thecurrenttideheightrelativetolowestastronomicaltide(LAT/ChartDatum)

/aircraft/<RegExp>/environment/tide/heightLow

Units:m(Meter)

Description:Thenextlowtideheightrelativetolowestastronomicaltide(LAT/ChartDatum)

/aircraft/<RegExp>/environment/tide/timeLow

Units:RFC3339(UTC)(undefined)

Description:TimeofthenextlowtideinUTC

AppendixB:KeysReference(Others)

117

Page 118: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/aircraft/<RegExp>/environment/tide/timeHigh

Units:RFC3339(UTC)(undefined)

Description:TimeofnexthightideinUTC

/aircraft/<RegExp>/environment/heave

Units:m(Meter)

Description:Verticalmovementofthevesselduetowaves

/aircraft/<RegExp>/environment/wind

Title:wind

Description:Winddata.

/aircraft/<RegExp>/environment/wind/angleApparent

Units:rad(Radian)

Description:Apparentwindangle,negativetoport

/aircraft/<RegExp>/environment/wind/angleTrueGround

Units:rad(Radian)

Description:Truewindanglebasedonspeedoverground,negativetoport

/aircraft/<RegExp>/environment/wind/angleTrueWater

Units:rad(Radian)

Description:Truewindanglebasedonspeedthroughwater,negativetoport

/aircraft/<RegExp>/environment/wind/directionChangeAlarm

Units:rad(Radian)

Description:Theanglethewindneedstoshifttoraiseanalarm

/aircraft/<RegExp>/environment/wind/directionTrue

Units:rad(Radian)

Description:Thewinddirectionrelativetotruenorth

AppendixB:KeysReference(Others)

118

Page 119: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/aircraft/<RegExp>/environment/wind/directionMagnetic

Units:rad(Radian)

Description:Thewinddirectionrelativetomagneticnorth

/aircraft/<RegExp>/environment/wind/speedTrue

Units:m/s(Meterspersecond)

Description:Windspeedoverwater(ascalculatedfromspeedApparentandvessel'sspeedthroughwater)

/aircraft/<RegExp>/environment/wind/speedOverGround

Units:m/s(Meterspersecond)

Description:Windspeedoverground(ascalculatedfromspeedApparentandvessel'sspeedoverground)

/aircraft/<RegExp>/environment/wind/speedApparent

Units:m/s(Meterspersecond)

Description:Apparentwindspeed

/aircraft/<RegExp>/environment/time

Description:Atimereferenceforthevessel.Allclocksonthevesseldispayinglocaltimeshouldusethetimezoneoffsethere.IfatimezoneRegionissuppliedthetimezonemustalsobesupplied.IftimezoneRegionissuppliedthatshouldbedisplayedbyUIsinpreferencetosimplytimezone.ie12:05(Europe/London)shouldbedisplayedinpreferenceto12:05(UTC+01:00)

Fields:

millis(MillisecondssincetheUNIXepoch(1970-01-0100:00:00))timezoneOffset(OnboardtimezoneoffsetfromUTCinhoursandminutes(-)hhmm.+vemeanseastofGreenwich.ForusebyUIs)timezoneRegion(OnboardtimezoneoffsetaslistedintheIANAtimezonedatabase(tzdatabase))

/aircraft/<RegExp>/environment/mode

Description:Modeofthevesselbasedonthecurrentconditions.Canbecombinedwithnavigation.statetocontrolvesselsignalsegswitchtonightmodeforinstrumentationandlights,ormakesoundsignalsforfog.

/aircraft/<RegExp>/navigation

Title:navigation

Description:NavigationdataincludingPosition,CoursetonextWPinformation,etc.

AppendixB:KeysReference(Others)

119

Page 120: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/aircraft/<RegExp>/navigation/lights

Title:Navigationlights

Description:Currentstateofthevesselsnavigationlights

/aircraft/<RegExp>/navigation/courseOverGroundMagnetic

Units:rad(Radian)

Description:Courseoverground(magnetic)

/aircraft/<RegExp>/navigation/courseOverGroundTrue

Units:rad(Radian)

Description:Courseoverground(true)

/aircraft/<RegExp>/navigation/courseRhumbline

Title:Course

Description:CourseinformationcomputedwithRhumbline

/aircraft/<RegExp>/navigation/courseRhumbline/crossTrackError

Units:m(Meter)

Description:Thedistancefromthevessel'spresentpositiontotheclosestpointonaline(track)betweenpreviousPointandnextPoint.Anegativenumberindicatesthatthevesseliscurrentlytotheleftofthisline(andthusmuststeerrighttocompensate),apositivenumbermeansthevesselistotherightoftheline(steerlefttocompensate).

/aircraft/<RegExp>/navigation/courseRhumbline/bearingTrackTrue

Units:rad(Radian)

Description:ThebearingofalinebetweenpreviousPointandnextPoint,relativetotruenorth.

/aircraft/<RegExp>/navigation/courseRhumbline/bearingTrackMagnetic

Units:rad(Radian)

Description:ThebearingofalinebetweenpreviousPointandnextPoint,relativetomagneticnorth.

/aircraft/<RegExp>/navigation/courseRhumbline/activeRoute

AppendixB:KeysReference(Others)

120

Page 121: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Description:Datarequiredifsailingtoanactiveroute,definedinresources.

/aircraft/<RegExp>/navigation/courseRhumbline/activeRoute/href

Description:Areference(URL)tothepresentlyactiveroute,inresources.

/aircraft/<RegExp>/navigation/courseRhumbline/activeRoute/estimatedTimeOfArrival

Description:Theestimatedtimeofarrivalattheendofthecurrentroute

/aircraft/<RegExp>/navigation/courseRhumbline/activeRoute/startTime

Description:Thetimethisroutewasactivated

/aircraft/<RegExp>/navigation/courseRhumbline/nextPoint

Description:Thepointonearththevessel'spresentlynavigatingtowards

/aircraft/<RegExp>/navigation/courseRhumbline/previousPoint

Description:Thepointonearththevessel'spresentlynavigatingfrom

Objectvaluewithproperties

typehref

/aircraft/<RegExp>/navigation/courseRhumbline/previousPoint/distance

Units:m(Meter)

Description:ThedistanceinmetersbetweenpreviousPointandthevessel'spresentposition

/aircraft/<RegExp>/navigation/courseRhumbline/previousPoint/position

Title:position

Description:ThepositionoflastPointintwodimensions

Objectvaluewithproperties

longitude(deg)latitude(deg)altitude(m)

AppendixB:KeysReference(Others)

121

Page 122: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/aircraft/<RegExp>/navigation/courseGreatCircle

Title:Course

Description:CourseinformationcomputedwithGreatCircle

/aircraft/<RegExp>/navigation/courseGreatCircle/crossTrackError

Units:m(Meter)

Description:Thedistancefromthevessel'spresentpositiontotheclosestpointonaline(track)betweenpreviousPointandnextPoint.Anegativenumberindicatesthatthevesseliscurrentlytotheleftofthisline(andthusmuststeerrighttocompensate),apositivenumbermeansthevesselistotherightoftheline(steerlefttocompensate).

/aircraft/<RegExp>/navigation/courseGreatCircle/bearingTrackTrue

Units:rad(Radian)

Description:ThebearingofalinebetweenpreviousPointandnextPoint,relativetotruenorth.

/aircraft/<RegExp>/navigation/courseGreatCircle/bearingTrackMagnetic

Units:rad(Radian)

Description:ThebearingofalinebetweenpreviousPointandnextPoint,relativetomagneticnorth.

/aircraft/<RegExp>/navigation/courseGreatCircle/activeRoute

Description:Datarequiredifsailingtoanactiveroute,definedinresources.

/aircraft/<RegExp>/navigation/courseGreatCircle/activeRoute/href

Description:Areference(URL)tothepresentlyactiveroute,inresources.

/aircraft/<RegExp>/navigation/courseGreatCircle/activeRoute/estimatedTimeOfArrival

Description:Theestimatedtimeofarrivalattheendofthecurrentroute

/aircraft/<RegExp>/navigation/courseGreatCircle/activeRoute/startTime

Description:Thetimethisroutewasactivated

/aircraft/<RegExp>/navigation/courseGreatCircle/nextPoint

AppendixB:KeysReference(Others)

122

Page 123: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Description:Thepointonearththevessel'spresentlynavigatingtowards

/aircraft/<RegExp>/navigation/courseGreatCircle/previousPoint

Description:Thepointonearththevessel'spresentlynavigatingfrom

Objectvaluewithproperties

typehref

/aircraft/<RegExp>/navigation/courseGreatCircle/previousPoint/distance

Units:m(Meter)

Description:ThedistanceinmetersbetweenpreviousPointandthevessel'spresentposition

/aircraft/<RegExp>/navigation/courseGreatCircle/previousPoint/position

Title:position

Description:ThepositionoflastPointintwodimensions

Objectvaluewithproperties

longitude(deg)latitude(deg)altitude(m)

/aircraft/<RegExp>/navigation/closestApproach

Description:Calculatedvaluesforothervessels,e.g.fromAIS

Objectvaluewithproperties

distance(m)timeTo(s)

/aircraft/<RegExp>/navigation/racing

Description:Specificnavigationaldatarelatedtoyachtracing.

/aircraft/<RegExp>/navigation/racing/startLineStb

Title:position

Description:Positionofstarboardstartmark

Objectvaluewithproperties

AppendixB:KeysReference(Others)

123

Page 124: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

longitude(deg)latitude(deg)altitude(m)

/aircraft/<RegExp>/navigation/racing/startLinePort

Title:position

Description:Positionofstarboardstartmark

Objectvaluewithproperties

longitude(deg)latitude(deg)altitude(m)

/aircraft/<RegExp>/navigation/racing/distanceStartline

Units:m(Meter)

Description:Thecurrentdistancetothestartline

/aircraft/<RegExp>/navigation/racing/timeToStart

Units:s(Second)

Description:Timeleftbeforestart

/aircraft/<RegExp>/navigation/racing/timePortDown

Units:s(Second)

Description:Timetoarriveatthestartlineonport,turningdownwind

/aircraft/<RegExp>/navigation/racing/timePortUp

Units:s(Second)

Description:Timetoarriveatthestartlineonport,turningupwind

/aircraft/<RegExp>/navigation/racing/timeStbdDown

Units:s(Second)

Description:Timetoarriveatthestartlineonstarboard,turningdownwind

/aircraft/<RegExp>/navigation/racing/timeStbdUp

AppendixB:KeysReference(Others)

124

Page 125: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Units:s(Second)

Description:Timetoarriveatthestartlineonstarboard,turningupwind

/aircraft/<RegExp>/navigation/racing/distanceLayline

Units:m(Meter)

Description:Thecurrentdistancetothelayline

/aircraft/<RegExp>/navigation/magneticVariation

Units:rad(Radian)

Description:Themagneticvariation(declination)atthecurrentpositionthatmustbeaddedtothemagneticheadingtoderivethetrueheading.EasterlyvariationsarepositiveandWesterlyvariationsarenegative(inRadians).

/aircraft/<RegExp>/navigation/magneticVariationAgeOfService

Units:s(Second)

Description:Secondssincethe1stJan1970thatthevariationcalculationwasmade

/aircraft/<RegExp>/navigation/destination

Title:destination

Description:Theintendeddestinationofthistrip

/aircraft/<RegExp>/navigation/destination/commonName

Description:CommonnameoftheDestination,eg'Fiji',alsousedinaismessages

/aircraft/<RegExp>/navigation/destination/eta

Description:Expectedtimeofarrivalatdestinationwaypoint

/aircraft/<RegExp>/navigation/destination/waypoint

Description:UUIDofdestinationwaypoint

/aircraft/<RegExp>/navigation/gnss

Title:gnss

AppendixB:KeysReference(Others)

125

Page 126: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Description:Globalsatellitenavigationmetainformation

/aircraft/<RegExp>/navigation/gnss/type

Description:Fixtype

/aircraft/<RegExp>/navigation/gnss/methodQuality

Description:Qualityofthesatellitefix

/aircraft/<RegExp>/navigation/gnss/integrity

Description:Integrityofthesatellitefix

/aircraft/<RegExp>/navigation/gnss/satellites

Description:Numberofsatellites

/aircraft/<RegExp>/navigation/gnss/antennaAltitude

Units:m(Meter)

Description:Altitudeofantenna

/aircraft/<RegExp>/navigation/gnss/horizontalDilution

Description:HorizontalDilutionofPrecision

/aircraft/<RegExp>/navigation/gnss/positionDilution

Description:PositionalDilutionofPrecision

/aircraft/<RegExp>/navigation/gnss/geoidalSeparation

Description:DifferencebetweenWGS84earthellipsoidandmeansealevel

/aircraft/<RegExp>/navigation/gnss/differentialAge

Units:s(Second)

Description:AgeofDGPSdata

AppendixB:KeysReference(Others)

126

Page 127: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/aircraft/<RegExp>/navigation/gnss/differentialReference

Description:IDofDGPSbasestation

/aircraft/<RegExp>/navigation/headingMagnetic

Units:rad(Radian)

Description:Currentmagneticheadingofthevessel

/aircraft/<RegExp>/navigation/headingTrue

Units:rad(Radian)

Description:Thecurrenttrueheadingofthevessel

/aircraft/<RegExp>/navigation/position

Title:position

Description:Thepositionofthevesselin2or3dimensions(WGS84datum)

Objectvaluewithproperties

longitude(deg)latitude(deg)altitude(m)

/aircraft/<RegExp>/navigation/attitude

Title:Attitude

Description:Vesselattitude:roll,pitchandyaw

Objectvaluewithproperties

roll(rad)pitch(rad)yaw(rad)

/aircraft/<RegExp>/navigation/maneuver

Description:Specialmaneuversuchasregionalpassingarrangement.(fromais)

/aircraft/<RegExp>/navigation/rateOfTurn

Units:rad/s(Radianpersecond)

AppendixB:KeysReference(Others)

127

Page 128: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Description:Rateofturn(+veischangetostarboard).IfthevalueisAISRIGHTorLEFT,setto+-0.0206radsandaddwarninginnotifications

/aircraft/<RegExp>/navigation/speedOverGround

Units:m/s(Meterspersecond)

Description:Vesselspeedoverground.IfconvertingfromAIS'HIGH'value,setto102.2(Aismaxvalue)andaddwarninginnotifications

/aircraft/<RegExp>/navigation/speedThroughWater

Units:m/s(Meterspersecond)

Description:Vesselspeedthroughthewater

/aircraft/<RegExp>/navigation/speedThroughWaterTransverse

Units:m/s(Meterspersecond)

Description:Transversespeedthroughthewater(Leeway)

/aircraft/<RegExp>/navigation/speedThroughWaterLongitudinal

Units:m/s(Meterspersecond)

Description:Longitudinalspeedthroughthewater

/aircraft/<RegExp>/navigation/leewayAngle

Units:rad(Radian)

Description:LeewayAnglederivedfromthelongitudinalandtransversespeedsthroughthewater

/aircraft/<RegExp>/navigation/log

Units:m(Meter)

Description:Totaldistancetraveled

/aircraft/<RegExp>/navigation/trip

Description:Tripdata

/aircraft/<RegExp>/navigation/trip/log

AppendixB:KeysReference(Others)

128

Page 129: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Units:m(Meter)

Description:Totaldistancetraveledonthistrip/sincetripreset

/aircraft/<RegExp>/navigation/trip/lastReset

Description:Triplogresettime

/aircraft/<RegExp>/navigation/state

Title:state

Description:Currentnavigationalstateofthevessel

/aircraft/<RegExp>/navigation/anchor

Title:anchor

Description:Theanchordata,foranchorwatchetc

/aircraft/<RegExp>/navigation/anchor/maxRadius

Units:m(Meter)

Description:Radiusofanchoralarmboundary.Thedistancefromanchortothecenteroftheboat

/aircraft/<RegExp>/navigation/anchor/currentRadius

Units:m(Meter)

Description:Currentdistancetoanchor

/aircraft/<RegExp>/navigation/anchor/position

Title:position

Description:Theactualanchorpositionofthevesselin3dimensions,probablyanestimateatbest

Objectvaluewithproperties

longitude(deg)latitude(deg)altitude(m)

/aircraft/<RegExp>/navigation/datetime

Description:TimeandDatefromtheGNSSPositioningSystem

AppendixB:KeysReference(Others)

129

Page 130: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Fields:

gnssTimeSource(SourceofGNSSDateandTime),enum:

GPSGLONASSGalileoBeidouIRNSSRadioSignalInternetLocalclock

/aircraft/<RegExp>/notifications

Title:notifications

Description:Notificationscurrentlyraised.Majorcategorieshavewell-definednames,butthetreecanbeextendedbyanyhierarchicalstructure

/aircraft/<RegExp>/notifications/<RegExp>

Description:Thisregexpatternisusedforvalidationofthepathofthealarm

/aircraft/<RegExp>/design

Title:design

Description:Design/dimensionaldataofthisaircraft

/aircraft/<RegExp>/design/displacement

Units:kg(Kilogram)

Description:Thedisplacementofthevessel

/aircraft/<RegExp>/design/aisShipType

Description:Theaisshiptypeseehttp://www.bosunsmate.org/ais/message5.php

Objectvaluewithproperties

idname

/aircraft/<RegExp>/design/draft

Title:draft

AppendixB:KeysReference(Others)

130

Page 131: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Description:Thedraftofthevessel

Objectvaluewithproperties

minimum(m)maximum(m)current(m)canoe(m)

/aircraft/<RegExp>/design/length

Title:length

Description:Thevariouslengthsofthevessel

Objectvaluewithproperties

overall(m)hull(m)waterline(m)

/aircraft/<RegExp>/design/keel

Title:keel

Description:Informationaboutthevessel'skeel

Fields:

type(Thetypeofkeel.),enum:

longfinflarebulbwingcenterboardkantingliftingdaggerboard

/aircraft/<RegExp>/design/keel/angle

Units:rad(Radian)

Description:Anumberindicatingatwhichanglethekeelcurrentlyis(incaseofacantingkeel),negativetoport.

/aircraft/<RegExp>/design/keel/lift

Units:ratio(Ratio)

AppendixB:KeysReference(Others)

131

Page 132: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Description:Inthecaseofaliftingkeel,centreboardordaggerboard,thepartofthekeelwhichisextended.0is'allthewayup'and1is'allthewaydown'.0.8wouldbe80%down.

/aircraft/<RegExp>/design/beam

Units:m(Meter)

Description:Beamlength

/aircraft/<RegExp>/design/airHeight

Units:m(Meter)

Description:Totalheightofthevessel

/aircraft/<RegExp>/design/rigging

Title:rigging

Description:Informationaboutthevessel'srigging

Fields:

configuration(Theconfigurationoftherigging)masts(Thenumberofmastsonthevessel.)

/aircraft/<RegExp>/sensors

Title:sensors

Description:Sensors,theirstate,anddata.

/aircraft/<RegExp>/sensors/<RegExp>

Title:sensor

Description:ThisregexpatternisusedforvalidationUUIDidentifierforthesensor

/aircraft/<RegExp>/sensors/<RegExp>/name

Description:Thecommonnameofthesensor

/aircraft/<RegExp>/sensors/<RegExp>/sensorType

Description:Thedatamodeldefinitionofthesensordata.FIXME-needtocreateadefinitionslibofsensordatamodeltypes

AppendixB:KeysReference(Others)

132

Page 133: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/aircraft/<RegExp>/sensors/<RegExp>/sensorData

Description:Thedataofthesensordata.FIXME-needtorefthedefinitionsofsensortypes

/aircraft/<RegExp>/sensors/<RegExp>/fromBow

Description:Thedistancefromthebowtothesensorlocation

/aircraft/<RegExp>/sensors/<RegExp>/fromCenter

Description:Thedistancefromthecenterlinetothesensorlocation,-vetostarboard,+vetoport

/aton

Description:AwrapperobjectforAidstoNavigation(aton's)

/aton/<RegExp>

Title:aidtonavigation

Description:ThisregexpatternisusedforvalidationofanMMSIorSignalKUUIDidentifierfortheaidtonavigation.Examples:urn:mrn:imo:mmsi:991099999urn:mrn:signalk:uuid:c0d79334-4e25-4245-8892-54e8ccc8021d

/aton/<RegExp>/url

Description:URLbasedidentityoftheaidtonavigation,ifavailable.

/aton/<RegExp>/mmsi

Description:MMSInumberoftheaidtonavigation,ifavailable.

/aton/<RegExp>/uuid

Description:AuniqueSignalKflavouredmaritimeresourceidentifier,assignedbytheserver.

/aton/<RegExp>/atonType

Description:Theatontype

Objectvaluewithproperties

idname

AppendixB:KeysReference(Others)

133

Page 134: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/aton/<RegExp>/name

Description:Theatonname

/aton/<RegExp>/communication

Title:communication

Description:CommunicationdataincludingRadio,Telephone,E-Mail,etc.

/aton/<RegExp>/communication/callsignVhf

Description:CallsignforVHFcommunication

/aton/<RegExp>/communication/callsignHf

Description:CallsignforHFcommunication

/aton/<RegExp>/communication/phoneNumber

Description:Phonenumberofskipper

/aton/<RegExp>/communication/emailHf

Description:EmailaddresstobeusedforHFemail(Winmail,Airmail,Sailmail)

/aton/<RegExp>/communication/email

Description:Regularemailfortheskipper

/aton/<RegExp>/communication/satPhoneNumber

Description:Satellitephonenumberforvessel.

/aton/<RegExp>/communication/skipperName

Description:Fullnameoftheskipperofthevessel.

/aton/<RegExp>/communication/crewNames

Description:Arraywiththenamesofthecrew

AppendixB:KeysReference(Others)

134

Page 135: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/aton/<RegExp>/environment

Title:environment

Description:EnvironmentaldatameasuredlocallyincludingDepth,Wind,Temp,etc.

/aton/<RegExp>/environment/outside

Description:Environmentalconditionsoutsideofthevessel'shull

/aton/<RegExp>/environment/outside/temperature

Units:K(Kelvin)

Description:Currentoutsideairtemperature

/aton/<RegExp>/environment/outside/dewPointTemperature

Units:K(Kelvin)

Description:Currentoutsidedewpointtemperature

/aton/<RegExp>/environment/outside/apparentWindChillTemperature

Units:K(Kelvin)

Description:Currentoutsideapparentwindchilltemperature

/aton/<RegExp>/environment/outside/theoreticalWindChillTemperature

Units:K(Kelvin)

Description:Currentoutsidetheoreticalwindchilltemperature

/aton/<RegExp>/environment/outside/heatIndexTemperature

Units:K(Kelvin)

Description:Currentoutsideheatindextemperature

/aton/<RegExp>/environment/outside/pressure

Units:Pa(Pascal)

Description:Currentoutsideairambientpressure

AppendixB:KeysReference(Others)

135

Page 136: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/aton/<RegExp>/environment/outside/humidity

Units:ratio(Ratio)

Description:Currentoutsideairrelativehumidity

/aton/<RegExp>/environment/outside/airDensity

Units:kg/m3(undefined)

Description:Currentoutsideairdensity

/aton/<RegExp>/environment/outside/illuminance

Units:Lux(undefined)

Description:Currentoutsideambientlightflux.

/aton/<RegExp>/environment/inside

Description:Environmentalconditionsinsidethevessel'shull

/aton/<RegExp>/environment/inside/temperature

Units:K(Kelvin)

Description:Currentinsideairtemperature

/aton/<RegExp>/environment/inside/humidity

Units:ratio(Ratio)

Description:Currentinsideairrelativehumidity

/aton/<RegExp>/environment/inside/engineRoom

Description:Currentengineroomairtemperature

/aton/<RegExp>/environment/inside/engineRoom/temperature

Units:K(Kelvin)

Description:Temperature

/aton/<RegExp>/environment/inside/engineRoom/pressure

AppendixB:KeysReference(Others)

136

Page 137: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Units:Pa(Pascal)

Description:Pressureinzone

/aton/<RegExp>/environment/inside/engineRoom/relativeHumidity

Units:ratio(Ratio)

Description:Relativehumidityinzone

/aton/<RegExp>/environment/inside/engineRoom/dewPoint

Units:K(Kelvin)

Description:Dewpointinzone

/aton/<RegExp>/environment/inside/engineRoom/airDensity

Units:kg/m3(undefined)

Description:Airdensityinzone

/aton/<RegExp>/environment/inside/engineRoom/illuminance

Units:Lux(undefined)

Description:Illuminanceinzone

/aton/<RegExp>/environment/inside/mainCabin

Description:Currentmaincabinairtemperature

/aton/<RegExp>/environment/inside/mainCabin/temperature

Units:K(Kelvin)

Description:Temperature

/aton/<RegExp>/environment/inside/mainCabin/pressure

Units:Pa(Pascal)

Description:Pressureinzone

/aton/<RegExp>/environment/inside/mainCabin/relativeHumidity

AppendixB:KeysReference(Others)

137

Page 138: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Units:ratio(Ratio)

Description:Relativehumidityinzone

/aton/<RegExp>/environment/inside/mainCabin/dewPoint

Units:K(Kelvin)

Description:Dewpointinzone

/aton/<RegExp>/environment/inside/mainCabin/airDensity

Units:kg/m3(undefined)

Description:Airdensityinzone

/aton/<RegExp>/environment/inside/mainCabin/illuminance

Units:Lux(undefined)

Description:Illuminanceinzone

/aton/<RegExp>/environment/inside/refrigerator

Description:Currentrefrigeratortemperature

/aton/<RegExp>/environment/inside/refrigerator/temperature

Units:K(Kelvin)

Description:Temperature

/aton/<RegExp>/environment/inside/refrigerator/pressure

Units:Pa(Pascal)

Description:Pressureinzone

/aton/<RegExp>/environment/inside/refrigerator/relativeHumidity

Units:ratio(Ratio)

Description:Relativehumidityinzone

/aton/<RegExp>/environment/inside/refrigerator/dewPoint

AppendixB:KeysReference(Others)

138

Page 139: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Units:K(Kelvin)

Description:Dewpointinzone

/aton/<RegExp>/environment/inside/refrigerator/airDensity

Units:kg/m3(undefined)

Description:Airdensityinzone

/aton/<RegExp>/environment/inside/refrigerator/illuminance

Units:Lux(undefined)

Description:Illuminanceinzone

/aton/<RegExp>/environment/inside/freezer

Description:Currentfreezertemperature

/aton/<RegExp>/environment/inside/freezer/temperature

Units:K(Kelvin)

Description:Temperature

/aton/<RegExp>/environment/inside/freezer/pressure

Units:Pa(Pascal)

Description:Pressureinzone

/aton/<RegExp>/environment/inside/freezer/relativeHumidity

Units:ratio(Ratio)

Description:Relativehumidityinzone

/aton/<RegExp>/environment/inside/freezer/dewPoint

Units:K(Kelvin)

Description:Dewpointinzone

/aton/<RegExp>/environment/inside/freezer/airDensity

AppendixB:KeysReference(Others)

139

Page 140: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Units:kg/m3(undefined)

Description:Airdensityinzone

/aton/<RegExp>/environment/inside/freezer/illuminance

Units:Lux(undefined)

Description:Illuminanceinzone

/aton/<RegExp>/environment/inside/heating

Description:Currentheatingtemperature

/aton/<RegExp>/environment/inside/heating/temperature

Units:K(Kelvin)

Description:Temperature

/aton/<RegExp>/environment/inside/heating/pressure

Units:Pa(Pascal)

Description:Pressureinzone

/aton/<RegExp>/environment/inside/heating/relativeHumidity

Units:ratio(Ratio)

Description:Relativehumidityinzone

/aton/<RegExp>/environment/inside/heating/dewPoint

Units:K(Kelvin)

Description:Dewpointinzone

/aton/<RegExp>/environment/inside/heating/airDensity

Units:kg/m3(undefined)

Description:Airdensityinzone

/aton/<RegExp>/environment/inside/heating/illuminance

AppendixB:KeysReference(Others)

140

Page 141: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Units:Lux(undefined)

Description:Illuminanceinzone

/aton/<RegExp>/environment/water

Description:Environmentalconditionsofthewaterthatthevesselissailingin

/aton/<RegExp>/environment/water/temperature

Units:K(Kelvin)

Description:Currentwatertemperature

/aton/<RegExp>/environment/water/salinity

Units:ratio(Ratio)

Description:Watersalinity

/aton/<RegExp>/environment/depth

Title:depth

Description:Depthrelateddata

/aton/<RegExp>/environment/depth/belowKeel

Units:m(Meter)

Description:Depthbelowkeel

/aton/<RegExp>/environment/depth/belowTransducer

Units:m(Meter)

Description:DepthbelowTransducer

/aton/<RegExp>/environment/depth/belowSurface

Units:m(Meter)

Description:Depthfromsurface

/aton/<RegExp>/environment/depth/transducerToKeel

AppendixB:KeysReference(Others)

141

Page 142: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Units:m(Meter)

Description:Depthfromthetransducertothebottomofthekeel

/aton/<RegExp>/environment/depth/surfaceToTransducer

Units:m(Meter)

Description:Depthtransducerisbelowthewatersurface

/aton/<RegExp>/environment/current

Title:current

Description:Directionandstrengthofcurrentaffectingthevessel

Objectvaluewithproperties

drift(m/s)setTrue(rad)setMagnetic(rad)

/aton/<RegExp>/environment/tide

Title:tide

Description:Tidedata

/aton/<RegExp>/environment/tide/heightHigh

Units:m(Meter)

Description:Nexthightideheightrelativetolowestastronomicaltide(LAT/ChartDatum)

/aton/<RegExp>/environment/tide/heightNow

Units:m(Meter)

Description:Thecurrenttideheightrelativetolowestastronomicaltide(LAT/ChartDatum)

/aton/<RegExp>/environment/tide/heightLow

Units:m(Meter)

Description:Thenextlowtideheightrelativetolowestastronomicaltide(LAT/ChartDatum)

/aton/<RegExp>/environment/tide/timeLow

AppendixB:KeysReference(Others)

142

Page 143: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Units:RFC3339(UTC)(undefined)

Description:TimeofthenextlowtideinUTC

/aton/<RegExp>/environment/tide/timeHigh

Units:RFC3339(UTC)(undefined)

Description:TimeofnexthightideinUTC

/aton/<RegExp>/environment/heave

Units:m(Meter)

Description:Verticalmovementofthevesselduetowaves

/aton/<RegExp>/environment/wind

Title:wind

Description:Winddata.

/aton/<RegExp>/environment/wind/angleApparent

Units:rad(Radian)

Description:Apparentwindangle,negativetoport

/aton/<RegExp>/environment/wind/angleTrueGround

Units:rad(Radian)

Description:Truewindanglebasedonspeedoverground,negativetoport

/aton/<RegExp>/environment/wind/angleTrueWater

Units:rad(Radian)

Description:Truewindanglebasedonspeedthroughwater,negativetoport

/aton/<RegExp>/environment/wind/directionChangeAlarm

Units:rad(Radian)

Description:Theanglethewindneedstoshifttoraiseanalarm

AppendixB:KeysReference(Others)

143

Page 144: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/aton/<RegExp>/environment/wind/directionTrue

Units:rad(Radian)

Description:Thewinddirectionrelativetotruenorth

/aton/<RegExp>/environment/wind/directionMagnetic

Units:rad(Radian)

Description:Thewinddirectionrelativetomagneticnorth

/aton/<RegExp>/environment/wind/speedTrue

Units:m/s(Meterspersecond)

Description:Windspeedoverwater(ascalculatedfromspeedApparentandvessel'sspeedthroughwater)

/aton/<RegExp>/environment/wind/speedOverGround

Units:m/s(Meterspersecond)

Description:Windspeedoverground(ascalculatedfromspeedApparentandvessel'sspeedoverground)

/aton/<RegExp>/environment/wind/speedApparent

Units:m/s(Meterspersecond)

Description:Apparentwindspeed

/aton/<RegExp>/environment/time

Description:Atimereferenceforthevessel.Allclocksonthevesseldispayinglocaltimeshouldusethetimezoneoffsethere.IfatimezoneRegionissuppliedthetimezonemustalsobesupplied.IftimezoneRegionissuppliedthatshouldbedisplayedbyUIsinpreferencetosimplytimezone.ie12:05(Europe/London)shouldbedisplayedinpreferenceto12:05(UTC+01:00)

Fields:

millis(MillisecondssincetheUNIXepoch(1970-01-0100:00:00))timezoneOffset(OnboardtimezoneoffsetfromUTCinhoursandminutes(-)hhmm.+vemeanseastofGreenwich.ForusebyUIs)timezoneRegion(OnboardtimezoneoffsetaslistedintheIANAtimezonedatabase(tzdatabase))

/aton/<RegExp>/environment/mode

Description:Modeofthevesselbasedonthecurrentconditions.Canbecombinedwithnavigation.statetocontrolvesselsignalsegswitchtonightmodeforinstrumentationandlights,ormakesoundsignalsforfog.

AppendixB:KeysReference(Others)

144

Page 145: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/aton/<RegExp>/navigation

Title:navigation

Description:NavigationdataincludingPosition,CoursetonextWPinformation,etc.

/aton/<RegExp>/navigation/lights

Title:Navigationlights

Description:Currentstateofthevesselsnavigationlights

/aton/<RegExp>/navigation/courseOverGroundMagnetic

Units:rad(Radian)

Description:Courseoverground(magnetic)

/aton/<RegExp>/navigation/courseOverGroundTrue

Units:rad(Radian)

Description:Courseoverground(true)

/aton/<RegExp>/navigation/courseRhumbline

Title:Course

Description:CourseinformationcomputedwithRhumbline

/aton/<RegExp>/navigation/courseRhumbline/crossTrackError

Units:m(Meter)

Description:Thedistancefromthevessel'spresentpositiontotheclosestpointonaline(track)betweenpreviousPointandnextPoint.Anegativenumberindicatesthatthevesseliscurrentlytotheleftofthisline(andthusmuststeerrighttocompensate),apositivenumbermeansthevesselistotherightoftheline(steerlefttocompensate).

/aton/<RegExp>/navigation/courseRhumbline/bearingTrackTrue

Units:rad(Radian)

Description:ThebearingofalinebetweenpreviousPointandnextPoint,relativetotruenorth.

/aton/<RegExp>/navigation/courseRhumbline/bearingTrackMagnetic

Units:rad(Radian)

AppendixB:KeysReference(Others)

145

Page 146: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Description:ThebearingofalinebetweenpreviousPointandnextPoint,relativetomagneticnorth.

/aton/<RegExp>/navigation/courseRhumbline/activeRoute

Description:Datarequiredifsailingtoanactiveroute,definedinresources.

/aton/<RegExp>/navigation/courseRhumbline/activeRoute/href

Description:Areference(URL)tothepresentlyactiveroute,inresources.

/aton/<RegExp>/navigation/courseRhumbline/activeRoute/estimatedTimeOfArrival

Description:Theestimatedtimeofarrivalattheendofthecurrentroute

/aton/<RegExp>/navigation/courseRhumbline/activeRoute/startTime

Description:Thetimethisroutewasactivated

/aton/<RegExp>/navigation/courseRhumbline/nextPoint

Description:Thepointonearththevessel'spresentlynavigatingtowards

/aton/<RegExp>/navigation/courseRhumbline/previousPoint

Description:Thepointonearththevessel'spresentlynavigatingfrom

Objectvaluewithproperties

typehref

/aton/<RegExp>/navigation/courseRhumbline/previousPoint/distance

Units:m(Meter)

Description:ThedistanceinmetersbetweenpreviousPointandthevessel'spresentposition

/aton/<RegExp>/navigation/courseRhumbline/previousPoint/position

Title:position

Description:ThepositionoflastPointintwodimensions

Objectvaluewithproperties

AppendixB:KeysReference(Others)

146

Page 147: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

longitude(deg)latitude(deg)altitude(m)

/aton/<RegExp>/navigation/courseGreatCircle

Title:Course

Description:CourseinformationcomputedwithGreatCircle

/aton/<RegExp>/navigation/courseGreatCircle/crossTrackError

Units:m(Meter)

Description:Thedistancefromthevessel'spresentpositiontotheclosestpointonaline(track)betweenpreviousPointandnextPoint.Anegativenumberindicatesthatthevesseliscurrentlytotheleftofthisline(andthusmuststeerrighttocompensate),apositivenumbermeansthevesselistotherightoftheline(steerlefttocompensate).

/aton/<RegExp>/navigation/courseGreatCircle/bearingTrackTrue

Units:rad(Radian)

Description:ThebearingofalinebetweenpreviousPointandnextPoint,relativetotruenorth.

/aton/<RegExp>/navigation/courseGreatCircle/bearingTrackMagnetic

Units:rad(Radian)

Description:ThebearingofalinebetweenpreviousPointandnextPoint,relativetomagneticnorth.

/aton/<RegExp>/navigation/courseGreatCircle/activeRoute

Description:Datarequiredifsailingtoanactiveroute,definedinresources.

/aton/<RegExp>/navigation/courseGreatCircle/activeRoute/href

Description:Areference(URL)tothepresentlyactiveroute,inresources.

/aton/<RegExp>/navigation/courseGreatCircle/activeRoute/estimatedTimeOfArrival

Description:Theestimatedtimeofarrivalattheendofthecurrentroute

/aton/<RegExp>/navigation/courseGreatCircle/activeRoute/startTime

AppendixB:KeysReference(Others)

147

Page 148: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Description:Thetimethisroutewasactivated

/aton/<RegExp>/navigation/courseGreatCircle/nextPoint

Description:Thepointonearththevessel'spresentlynavigatingtowards

/aton/<RegExp>/navigation/courseGreatCircle/previousPoint

Description:Thepointonearththevessel'spresentlynavigatingfrom

Objectvaluewithproperties

typehref

/aton/<RegExp>/navigation/courseGreatCircle/previousPoint/distance

Units:m(Meter)

Description:ThedistanceinmetersbetweenpreviousPointandthevessel'spresentposition

/aton/<RegExp>/navigation/courseGreatCircle/previousPoint/position

Title:position

Description:ThepositionoflastPointintwodimensions

Objectvaluewithproperties

longitude(deg)latitude(deg)altitude(m)

/aton/<RegExp>/navigation/closestApproach

Description:Calculatedvaluesforothervessels,e.g.fromAIS

Objectvaluewithproperties

distance(m)timeTo(s)

/aton/<RegExp>/navigation/racing

Description:Specificnavigationaldatarelatedtoyachtracing.

/aton/<RegExp>/navigation/racing/startLineStb

AppendixB:KeysReference(Others)

148

Page 149: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Title:position

Description:Positionofstarboardstartmark

Objectvaluewithproperties

longitude(deg)latitude(deg)altitude(m)

/aton/<RegExp>/navigation/racing/startLinePort

Title:position

Description:Positionofstarboardstartmark

Objectvaluewithproperties

longitude(deg)latitude(deg)altitude(m)

/aton/<RegExp>/navigation/racing/distanceStartline

Units:m(Meter)

Description:Thecurrentdistancetothestartline

/aton/<RegExp>/navigation/racing/timeToStart

Units:s(Second)

Description:Timeleftbeforestart

/aton/<RegExp>/navigation/racing/timePortDown

Units:s(Second)

Description:Timetoarriveatthestartlineonport,turningdownwind

/aton/<RegExp>/navigation/racing/timePortUp

Units:s(Second)

Description:Timetoarriveatthestartlineonport,turningupwind

/aton/<RegExp>/navigation/racing/timeStbdDown

Units:s(Second)

AppendixB:KeysReference(Others)

149

Page 150: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Description:Timetoarriveatthestartlineonstarboard,turningdownwind

/aton/<RegExp>/navigation/racing/timeStbdUp

Units:s(Second)

Description:Timetoarriveatthestartlineonstarboard,turningupwind

/aton/<RegExp>/navigation/racing/distanceLayline

Units:m(Meter)

Description:Thecurrentdistancetothelayline

/aton/<RegExp>/navigation/magneticVariation

Units:rad(Radian)

Description:Themagneticvariation(declination)atthecurrentpositionthatmustbeaddedtothemagneticheadingtoderivethetrueheading.EasterlyvariationsarepositiveandWesterlyvariationsarenegative(inRadians).

/aton/<RegExp>/navigation/magneticVariationAgeOfService

Units:s(Second)

Description:Secondssincethe1stJan1970thatthevariationcalculationwasmade

/aton/<RegExp>/navigation/destination

Title:destination

Description:Theintendeddestinationofthistrip

/aton/<RegExp>/navigation/destination/commonName

Description:CommonnameoftheDestination,eg'Fiji',alsousedinaismessages

/aton/<RegExp>/navigation/destination/eta

Description:Expectedtimeofarrivalatdestinationwaypoint

/aton/<RegExp>/navigation/destination/waypoint

Description:UUIDofdestinationwaypoint

AppendixB:KeysReference(Others)

150

Page 151: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/aton/<RegExp>/navigation/gnss

Title:gnss

Description:Globalsatellitenavigationmetainformation

/aton/<RegExp>/navigation/gnss/type

Description:Fixtype

/aton/<RegExp>/navigation/gnss/methodQuality

Description:Qualityofthesatellitefix

/aton/<RegExp>/navigation/gnss/integrity

Description:Integrityofthesatellitefix

/aton/<RegExp>/navigation/gnss/satellites

Description:Numberofsatellites

/aton/<RegExp>/navigation/gnss/antennaAltitude

Units:m(Meter)

Description:Altitudeofantenna

/aton/<RegExp>/navigation/gnss/horizontalDilution

Description:HorizontalDilutionofPrecision

/aton/<RegExp>/navigation/gnss/positionDilution

Description:PositionalDilutionofPrecision

/aton/<RegExp>/navigation/gnss/geoidalSeparation

Description:DifferencebetweenWGS84earthellipsoidandmeansealevel

/aton/<RegExp>/navigation/gnss/differentialAge

AppendixB:KeysReference(Others)

151

Page 152: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Units:s(Second)

Description:AgeofDGPSdata

/aton/<RegExp>/navigation/gnss/differentialReference

Description:IDofDGPSbasestation

/aton/<RegExp>/navigation/headingMagnetic

Units:rad(Radian)

Description:Currentmagneticheadingofthevessel

/aton/<RegExp>/navigation/headingTrue

Units:rad(Radian)

Description:Thecurrenttrueheadingofthevessel

/aton/<RegExp>/navigation/position

Title:position

Description:Thepositionofthevesselin2or3dimensions(WGS84datum)

Objectvaluewithproperties

longitude(deg)latitude(deg)altitude(m)

/aton/<RegExp>/navigation/attitude

Title:Attitude

Description:Vesselattitude:roll,pitchandyaw

Objectvaluewithproperties

roll(rad)pitch(rad)yaw(rad)

/aton/<RegExp>/navigation/maneuver

Description:Specialmaneuversuchasregionalpassingarrangement.(fromais)

AppendixB:KeysReference(Others)

152

Page 153: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/aton/<RegExp>/navigation/rateOfTurn

Units:rad/s(Radianpersecond)

Description:Rateofturn(+veischangetostarboard).IfthevalueisAISRIGHTorLEFT,setto+-0.0206radsandaddwarninginnotifications

/aton/<RegExp>/navigation/speedOverGround

Units:m/s(Meterspersecond)

Description:Vesselspeedoverground.IfconvertingfromAIS'HIGH'value,setto102.2(Aismaxvalue)andaddwarninginnotifications

/aton/<RegExp>/navigation/speedThroughWater

Units:m/s(Meterspersecond)

Description:Vesselspeedthroughthewater

/aton/<RegExp>/navigation/speedThroughWaterTransverse

Units:m/s(Meterspersecond)

Description:Transversespeedthroughthewater(Leeway)

/aton/<RegExp>/navigation/speedThroughWaterLongitudinal

Units:m/s(Meterspersecond)

Description:Longitudinalspeedthroughthewater

/aton/<RegExp>/navigation/leewayAngle

Units:rad(Radian)

Description:LeewayAnglederivedfromthelongitudinalandtransversespeedsthroughthewater

/aton/<RegExp>/navigation/log

Units:m(Meter)

Description:Totaldistancetraveled

/aton/<RegExp>/navigation/trip

Description:Tripdata

AppendixB:KeysReference(Others)

153

Page 154: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/aton/<RegExp>/navigation/trip/log

Units:m(Meter)

Description:Totaldistancetraveledonthistrip/sincetripreset

/aton/<RegExp>/navigation/trip/lastReset

Description:Triplogresettime

/aton/<RegExp>/navigation/state

Title:state

Description:Currentnavigationalstateofthevessel

/aton/<RegExp>/navigation/anchor

Title:anchor

Description:Theanchordata,foranchorwatchetc

/aton/<RegExp>/navigation/anchor/maxRadius

Units:m(Meter)

Description:Radiusofanchoralarmboundary.Thedistancefromanchortothecenteroftheboat

/aton/<RegExp>/navigation/anchor/currentRadius

Units:m(Meter)

Description:Currentdistancetoanchor

/aton/<RegExp>/navigation/anchor/position

Title:position

Description:Theactualanchorpositionofthevesselin3dimensions,probablyanestimateatbest

Objectvaluewithproperties

longitude(deg)latitude(deg)altitude(m)

AppendixB:KeysReference(Others)

154

Page 155: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/aton/<RegExp>/navigation/datetime

Description:TimeandDatefromtheGNSSPositioningSystem

Fields:

gnssTimeSource(SourceofGNSSDateandTime),enum:

GPSGLONASSGalileoBeidouIRNSSRadioSignalInternetLocalclock

/aton/<RegExp>/notifications

Title:notifications

Description:Notificationscurrentlyraised.Majorcategorieshavewell-definednames,butthetreecanbeextendedbyanyhierarchicalstructure

/aton/<RegExp>/notifications/<RegExp>

Description:Thisregexpatternisusedforvalidationofthepathofthealarm

/aton/<RegExp>/design

Title:design

Description:Design/dimensionaldataofthis

/aton/<RegExp>/design/displacement

Units:kg(Kilogram)

Description:Thedisplacementofthevessel

/aton/<RegExp>/design/aisShipType

Description:Theaisshiptypeseehttp://www.bosunsmate.org/ais/message5.php

Objectvaluewithproperties

idname

AppendixB:KeysReference(Others)

155

Page 156: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/aton/<RegExp>/design/draft

Title:draft

Description:Thedraftofthevessel

Objectvaluewithproperties

minimum(m)maximum(m)current(m)canoe(m)

/aton/<RegExp>/design/length

Title:length

Description:Thevariouslengthsofthevessel

Objectvaluewithproperties

overall(m)hull(m)waterline(m)

/aton/<RegExp>/design/keel

Title:keel

Description:Informationaboutthevessel'skeel

Fields:

type(Thetypeofkeel.),enum:

longfinflarebulbwingcenterboardkantingliftingdaggerboard

/aton/<RegExp>/design/keel/angle

Units:rad(Radian)

Description:Anumberindicatingatwhichanglethekeelcurrentlyis(incaseofacantingkeel),negativetoport.

/aton/<RegExp>/design/keel/lift

AppendixB:KeysReference(Others)

156

Page 157: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Units:ratio(Ratio)

Description:Inthecaseofaliftingkeel,centreboardordaggerboard,thepartofthekeelwhichisextended.0is'allthewayup'and1is'allthewaydown'.0.8wouldbe80%down.

/aton/<RegExp>/design/beam

Units:m(Meter)

Description:Beamlength

/aton/<RegExp>/design/airHeight

Units:m(Meter)

Description:Totalheightofthevessel

/aton/<RegExp>/design/rigging

Title:rigging

Description:Informationaboutthevessel'srigging

Fields:

configuration(Theconfigurationoftherigging)masts(Thenumberofmastsonthevessel.)

/aton/<RegExp>/sensors

Title:sensors

Description:Sensors,theirstate,anddata.

/aton/<RegExp>/sensors/<RegExp>

Title:sensor

Description:ThisregexpatternisusedforvalidationUUIDidentifierforthesensor

/aton/<RegExp>/sensors/<RegExp>/name

Description:Thecommonnameofthesensor

/aton/<RegExp>/sensors/<RegExp>/sensorType

Description:Thedatamodeldefinitionofthesensordata.FIXME-needtocreateadefinitionslibofsensordatamodeltypes

AppendixB:KeysReference(Others)

157

Page 158: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/aton/<RegExp>/sensors/<RegExp>/sensorData

Description:Thedataofthesensordata.FIXME-needtorefthedefinitionsofsensortypes

/aton/<RegExp>/sensors/<RegExp>/fromBow

Description:Thedistancefromthebowtothesensorlocation

/aton/<RegExp>/sensors/<RegExp>/fromCenter

Description:Thedistancefromthecenterlinetothesensorlocation,-vetostarboard,+vetoport

/sar

Description:AwrapperobjectforSearchAndRescue(SAR)MMSI'susiedintransponders.MOB,EPIRBSetc

/sar/<RegExp>

Title:Searchandrescuebeacons

Description:ThisregexpatternisusedforvalidationofanMMSIorSignalKUUIDidentifierfortheaidtonavigation.Examples:urn:mrn:imo:mmsi:972099999urn:mrn:signalk:uuid:c0d79334-4e25-4245-8892-54e8ccc8021d

/sar/<RegExp>/url

Description:URLbasedidentityoftheaidtonavigation,ifavailable.

/sar/<RegExp>/mmsi

Description:MMSInumberoftheaidtonavigation,ifavailable.

/sar/<RegExp>/uuid

Description:AuniqueSignalKflavouredmaritimeresourceidentifier,assignedbytheserver.

/sar/<RegExp>/communication

Title:communication

Description:CommunicationdataincludingRadio,Telephone,E-Mail,etc.

AppendixB:KeysReference(Others)

158

Page 159: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/sar/<RegExp>/communication/callsignVhf

Description:CallsignforVHFcommunication

/sar/<RegExp>/communication/callsignHf

Description:CallsignforHFcommunication

/sar/<RegExp>/communication/phoneNumber

Description:Phonenumberofskipper

/sar/<RegExp>/communication/emailHf

Description:EmailaddresstobeusedforHFemail(Winmail,Airmail,Sailmail)

/sar/<RegExp>/communication/email

Description:Regularemailfortheskipper

/sar/<RegExp>/communication/satPhoneNumber

Description:Satellitephonenumberforvessel.

/sar/<RegExp>/communication/skipperName

Description:Fullnameoftheskipperofthevessel.

/sar/<RegExp>/communication/crewNames

Description:Arraywiththenamesofthecrew

/sar/<RegExp>/navigation

Title:navigation

Description:NavigationdataincludingPosition,CoursetonextWPinformation,etc.

/sar/<RegExp>/navigation/lights

Title:Navigationlights

AppendixB:KeysReference(Others)

159

Page 160: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Description:Currentstateofthevesselsnavigationlights

/sar/<RegExp>/navigation/courseOverGroundMagnetic

Units:rad(Radian)

Description:Courseoverground(magnetic)

/sar/<RegExp>/navigation/courseOverGroundTrue

Units:rad(Radian)

Description:Courseoverground(true)

/sar/<RegExp>/navigation/courseRhumbline

Title:Course

Description:CourseinformationcomputedwithRhumbline

/sar/<RegExp>/navigation/courseRhumbline/crossTrackError

Units:m(Meter)

Description:Thedistancefromthevessel'spresentpositiontotheclosestpointonaline(track)betweenpreviousPointandnextPoint.Anegativenumberindicatesthatthevesseliscurrentlytotheleftofthisline(andthusmuststeerrighttocompensate),apositivenumbermeansthevesselistotherightoftheline(steerlefttocompensate).

/sar/<RegExp>/navigation/courseRhumbline/bearingTrackTrue

Units:rad(Radian)

Description:ThebearingofalinebetweenpreviousPointandnextPoint,relativetotruenorth.

/sar/<RegExp>/navigation/courseRhumbline/bearingTrackMagnetic

Units:rad(Radian)

Description:ThebearingofalinebetweenpreviousPointandnextPoint,relativetomagneticnorth.

/sar/<RegExp>/navigation/courseRhumbline/activeRoute

Description:Datarequiredifsailingtoanactiveroute,definedinresources.

/sar/<RegExp>/navigation/courseRhumbline/activeRoute/href

AppendixB:KeysReference(Others)

160

Page 161: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Description:Areference(URL)tothepresentlyactiveroute,inresources.

/sar/<RegExp>/navigation/courseRhumbline/activeRoute/estimatedTimeOfArrival

Description:Theestimatedtimeofarrivalattheendofthecurrentroute

/sar/<RegExp>/navigation/courseRhumbline/activeRoute/startTime

Description:Thetimethisroutewasactivated

/sar/<RegExp>/navigation/courseRhumbline/nextPoint

Description:Thepointonearththevessel'spresentlynavigatingtowards

/sar/<RegExp>/navigation/courseRhumbline/previousPoint

Description:Thepointonearththevessel'spresentlynavigatingfrom

Objectvaluewithproperties

typehref

/sar/<RegExp>/navigation/courseRhumbline/previousPoint/distance

Units:m(Meter)

Description:ThedistanceinmetersbetweenpreviousPointandthevessel'spresentposition

/sar/<RegExp>/navigation/courseRhumbline/previousPoint/position

Title:position

Description:ThepositionoflastPointintwodimensions

Objectvaluewithproperties

longitude(deg)latitude(deg)altitude(m)

/sar/<RegExp>/navigation/courseGreatCircle

Title:Course

Description:CourseinformationcomputedwithGreatCircle

AppendixB:KeysReference(Others)

161

Page 162: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/sar/<RegExp>/navigation/courseGreatCircle/crossTrackError

Units:m(Meter)

Description:Thedistancefromthevessel'spresentpositiontotheclosestpointonaline(track)betweenpreviousPointandnextPoint.Anegativenumberindicatesthatthevesseliscurrentlytotheleftofthisline(andthusmuststeerrighttocompensate),apositivenumbermeansthevesselistotherightoftheline(steerlefttocompensate).

/sar/<RegExp>/navigation/courseGreatCircle/bearingTrackTrue

Units:rad(Radian)

Description:ThebearingofalinebetweenpreviousPointandnextPoint,relativetotruenorth.

/sar/<RegExp>/navigation/courseGreatCircle/bearingTrackMagnetic

Units:rad(Radian)

Description:ThebearingofalinebetweenpreviousPointandnextPoint,relativetomagneticnorth.

/sar/<RegExp>/navigation/courseGreatCircle/activeRoute

Description:Datarequiredifsailingtoanactiveroute,definedinresources.

/sar/<RegExp>/navigation/courseGreatCircle/activeRoute/href

Description:Areference(URL)tothepresentlyactiveroute,inresources.

/sar/<RegExp>/navigation/courseGreatCircle/activeRoute/estimatedTimeOfArrival

Description:Theestimatedtimeofarrivalattheendofthecurrentroute

/sar/<RegExp>/navigation/courseGreatCircle/activeRoute/startTime

Description:Thetimethisroutewasactivated

/sar/<RegExp>/navigation/courseGreatCircle/nextPoint

Description:Thepointonearththevessel'spresentlynavigatingtowards

/sar/<RegExp>/navigation/courseGreatCircle/previousPoint

Description:Thepointonearththevessel'spresentlynavigatingfrom

AppendixB:KeysReference(Others)

162

Page 163: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Objectvaluewithproperties

typehref

/sar/<RegExp>/navigation/courseGreatCircle/previousPoint/distance

Units:m(Meter)

Description:ThedistanceinmetersbetweenpreviousPointandthevessel'spresentposition

/sar/<RegExp>/navigation/courseGreatCircle/previousPoint/position

Title:position

Description:ThepositionoflastPointintwodimensions

Objectvaluewithproperties

longitude(deg)latitude(deg)altitude(m)

/sar/<RegExp>/navigation/closestApproach

Description:Calculatedvaluesforothervessels,e.g.fromAIS

Objectvaluewithproperties

distance(m)timeTo(s)

/sar/<RegExp>/navigation/racing

Description:Specificnavigationaldatarelatedtoyachtracing.

/sar/<RegExp>/navigation/racing/startLineStb

Title:position

Description:Positionofstarboardstartmark

Objectvaluewithproperties

longitude(deg)latitude(deg)altitude(m)

/sar/<RegExp>/navigation/racing/startLinePort

AppendixB:KeysReference(Others)

163

Page 164: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Title:position

Description:Positionofstarboardstartmark

Objectvaluewithproperties

longitude(deg)latitude(deg)altitude(m)

/sar/<RegExp>/navigation/racing/distanceStartline

Units:m(Meter)

Description:Thecurrentdistancetothestartline

/sar/<RegExp>/navigation/racing/timeToStart

Units:s(Second)

Description:Timeleftbeforestart

/sar/<RegExp>/navigation/racing/timePortDown

Units:s(Second)

Description:Timetoarriveatthestartlineonport,turningdownwind

/sar/<RegExp>/navigation/racing/timePortUp

Units:s(Second)

Description:Timetoarriveatthestartlineonport,turningupwind

/sar/<RegExp>/navigation/racing/timeStbdDown

Units:s(Second)

Description:Timetoarriveatthestartlineonstarboard,turningdownwind

/sar/<RegExp>/navigation/racing/timeStbdUp

Units:s(Second)

Description:Timetoarriveatthestartlineonstarboard,turningupwind

/sar/<RegExp>/navigation/racing/distanceLayline

AppendixB:KeysReference(Others)

164

Page 165: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Units:m(Meter)

Description:Thecurrentdistancetothelayline

/sar/<RegExp>/navigation/magneticVariation

Units:rad(Radian)

Description:Themagneticvariation(declination)atthecurrentpositionthatmustbeaddedtothemagneticheadingtoderivethetrueheading.EasterlyvariationsarepositiveandWesterlyvariationsarenegative(inRadians).

/sar/<RegExp>/navigation/magneticVariationAgeOfService

Units:s(Second)

Description:Secondssincethe1stJan1970thatthevariationcalculationwasmade

/sar/<RegExp>/navigation/destination

Title:destination

Description:Theintendeddestinationofthistrip

/sar/<RegExp>/navigation/destination/commonName

Description:CommonnameoftheDestination,eg'Fiji',alsousedinaismessages

/sar/<RegExp>/navigation/destination/eta

Description:Expectedtimeofarrivalatdestinationwaypoint

/sar/<RegExp>/navigation/destination/waypoint

Description:UUIDofdestinationwaypoint

/sar/<RegExp>/navigation/gnss

Title:gnss

Description:Globalsatellitenavigationmetainformation

/sar/<RegExp>/navigation/gnss/type

Description:Fixtype

AppendixB:KeysReference(Others)

165

Page 166: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/sar/<RegExp>/navigation/gnss/methodQuality

Description:Qualityofthesatellitefix

/sar/<RegExp>/navigation/gnss/integrity

Description:Integrityofthesatellitefix

/sar/<RegExp>/navigation/gnss/satellites

Description:Numberofsatellites

/sar/<RegExp>/navigation/gnss/antennaAltitude

Units:m(Meter)

Description:Altitudeofantenna

/sar/<RegExp>/navigation/gnss/horizontalDilution

Description:HorizontalDilutionofPrecision

/sar/<RegExp>/navigation/gnss/positionDilution

Description:PositionalDilutionofPrecision

/sar/<RegExp>/navigation/gnss/geoidalSeparation

Description:DifferencebetweenWGS84earthellipsoidandmeansealevel

/sar/<RegExp>/navigation/gnss/differentialAge

Units:s(Second)

Description:AgeofDGPSdata

/sar/<RegExp>/navigation/gnss/differentialReference

Description:IDofDGPSbasestation

/sar/<RegExp>/navigation/headingMagnetic

AppendixB:KeysReference(Others)

166

Page 167: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Units:rad(Radian)

Description:Currentmagneticheadingofthevessel

/sar/<RegExp>/navigation/headingTrue

Units:rad(Radian)

Description:Thecurrenttrueheadingofthevessel

/sar/<RegExp>/navigation/position

Title:position

Description:Thepositionofthevesselin2or3dimensions(WGS84datum)

Objectvaluewithproperties

longitude(deg)latitude(deg)altitude(m)

/sar/<RegExp>/navigation/attitude

Title:Attitude

Description:Vesselattitude:roll,pitchandyaw

Objectvaluewithproperties

roll(rad)pitch(rad)yaw(rad)

/sar/<RegExp>/navigation/maneuver

Description:Specialmaneuversuchasregionalpassingarrangement.(fromais)

/sar/<RegExp>/navigation/rateOfTurn

Units:rad/s(Radianpersecond)

Description:Rateofturn(+veischangetostarboard).IfthevalueisAISRIGHTorLEFT,setto+-0.0206radsandaddwarninginnotifications

/sar/<RegExp>/navigation/speedOverGround

Units:m/s(Meterspersecond)

AppendixB:KeysReference(Others)

167

Page 168: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Description:Vesselspeedoverground.IfconvertingfromAIS'HIGH'value,setto102.2(Aismaxvalue)andaddwarninginnotifications

/sar/<RegExp>/navigation/speedThroughWater

Units:m/s(Meterspersecond)

Description:Vesselspeedthroughthewater

/sar/<RegExp>/navigation/speedThroughWaterTransverse

Units:m/s(Meterspersecond)

Description:Transversespeedthroughthewater(Leeway)

/sar/<RegExp>/navigation/speedThroughWaterLongitudinal

Units:m/s(Meterspersecond)

Description:Longitudinalspeedthroughthewater

/sar/<RegExp>/navigation/leewayAngle

Units:rad(Radian)

Description:LeewayAnglederivedfromthelongitudinalandtransversespeedsthroughthewater

/sar/<RegExp>/navigation/log

Units:m(Meter)

Description:Totaldistancetraveled

/sar/<RegExp>/navigation/trip

Description:Tripdata

/sar/<RegExp>/navigation/trip/log

Units:m(Meter)

Description:Totaldistancetraveledonthistrip/sincetripreset

/sar/<RegExp>/navigation/trip/lastReset

AppendixB:KeysReference(Others)

168

Page 169: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Description:Triplogresettime

/sar/<RegExp>/navigation/state

Title:state

Description:Currentnavigationalstateofthevessel

/sar/<RegExp>/navigation/anchor

Title:anchor

Description:Theanchordata,foranchorwatchetc

/sar/<RegExp>/navigation/anchor/maxRadius

Units:m(Meter)

Description:Radiusofanchoralarmboundary.Thedistancefromanchortothecenteroftheboat

/sar/<RegExp>/navigation/anchor/currentRadius

Units:m(Meter)

Description:Currentdistancetoanchor

/sar/<RegExp>/navigation/anchor/position

Title:position

Description:Theactualanchorpositionofthevesselin3dimensions,probablyanestimateatbest

Objectvaluewithproperties

longitude(deg)latitude(deg)altitude(m)

/sar/<RegExp>/navigation/datetime

Description:TimeandDatefromtheGNSSPositioningSystem

Fields:

gnssTimeSource(SourceofGNSSDateandTime),enum:

GPSGLONASSGalileo

AppendixB:KeysReference(Others)

169

Page 170: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

BeidouIRNSSRadioSignalInternetLocalclock

/sar/<RegExp>/notifications

Title:notifications

Description:Notificationscurrentlyraised.Majorcategorieshavewell-definednames,butthetreecanbeextendedbyanyhierarchicalstructure

/sar/<RegExp>/notifications/mob

Description:Manoverboard

Objectvaluewithproperties

methodstatemessage

/sar/<RegExp>/notifications/fire

Description:Fireonboard

Objectvaluewithproperties

methodstatemessage

/sar/<RegExp>/notifications/sinking

Description:Vesselissinking

Objectvaluewithproperties

methodstatemessage

/sar/<RegExp>/notifications/flooding

Description:Vesselisflooding

Objectvaluewithproperties

method

AppendixB:KeysReference(Others)

170

Page 171: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

statemessage

/sar/<RegExp>/notifications/collision

Description:Incollisionwithanothervesselorobject

Objectvaluewithproperties

methodstatemessage

/sar/<RegExp>/notifications/grounding

Description:Vesselgrounding

Objectvaluewithproperties

methodstatemessage

/sar/<RegExp>/notifications/listing

Description:Vesselislisting

Objectvaluewithproperties

methodstatemessage

/sar/<RegExp>/notifications/adrift

Description:Vesselisadrift

Objectvaluewithproperties

methodstatemessage

/sar/<RegExp>/notifications/piracy

Description:Underattackordangerfrompirates

Objectvaluewithproperties

method

AppendixB:KeysReference(Others)

171

Page 172: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

statemessage

/sar/<RegExp>/notifications/abandon

Description:Abandonship

Objectvaluewithproperties

methodstatemessage

/sar/<RegExp>/notifications/<RegExp>

Description:Thisregexpatternisusedforvalidationofthepathofthealarm

/resources

Title:resources

Description:Resourcestoaidinnavigationandoperationofthevesselincludingwaypoints,routes,notes,etc.

/resources/charts

Title:chart

Description:Aholderforcharts,eachnamedwiththeirchartcode

/resources/charts/<RegExp>

Description:Achart

Fields:

name(Chartcommonname)identifier(Chartnumber)description(Adescriptionofthechart)tilemapUrl(AurltothetilemapofthechartforuseinTMSchartplottingapps)region(Regionrelatedtonote.ApointertoaregionUUID.Alternativetogeohash)geohash(Positionrelatedtochart.Alternativetoregion)chartUrl(Aurltothechartfile'sstoragelocation)scale(Thescaleofthechart,thelargernumberfrom1:200000)chartLayers(IfthechartformatisWMS,thelayersenabledforthechart.)bounds(Theboundsofthechart.Anarraycontainingthepositionoftheupperleftcorner,andthelowerrightcorner.Usefulwhenthechartisn'tinherentlygeo-referenced.)chartFormat(Theformatofthechart),enum:

gif

AppendixB:KeysReference(Others)

172

Page 173: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

geotiffkappngjpgkmlwkttopojsongeojsongpxtmswmsS-57S-63svgother

/resources/routes

Title:route

Description:Aholderforroutes,eachnamedwithaUUID

/resources/routes/<RegExp>

Description:Aroute,namedwithaUUID

Fields:

name(Route'scommonname)description(Adescriptionoftheroute)distance(Totaldistancefromstarttoend),units:m(Meter)start(ThewaypointUUIDatthestartoftheroute)end(ThewaypointUUIDattheendoftheroute)feature(AGeoJSONfeatureobjectwhichdescribestheroutebetweenthewaypoints)

type,enum:

Featuregeometry

type,enum:

LineStringcoordinates(Anarrayoftwoormorepositions)

properties(Additionaldataofanytype)id

/resources/notes

Title:notes

AppendixB:KeysReference(Others)

173

Page 174: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

Description:Aholderfornotesaboutregions,eachnamedwithaUUID.Notesmightincludenavigationorcruisinginfo,images,oranything

/resources/notes/<RegExp>

Description:Anoteaboutaregion,namedwithaUUID.Notesmightincludenavigationorcruisinginfo,images,oranything

Fields:

title(Note'scommonname)description(Atextualdescriptionofthenote)region(Regionrelatedtonote.ApointertoaregionUUID.Alternativetopositionorgeohash)geohash(Positionrelatedtonote.Alternativetoregionorposition)mimeType(MIMEtypeofthenote)url(Locationofthenote)

/resources/notes/<RegExp>/position

Title:position

Description:Positionrelatedtonote.Alternativetoregionorgeohash

Objectvaluewithproperties

longitude(deg)latitude(deg)altitude(m)

/resources/regions

Title:region

Description:Aholderforregions,eachnamedwithUUID

/resources/regions/<RegExp>

Description:Aregionofinterest,eachnamedwithaUUID

Fields:

geohash(geohashoftheapproximateboundaryofthisregion)feature(AGeoJSONfeatureobjectwhichdescribestheregionsboundary)

type,enum:

Featuregeometry

properties(Additionaldataofanytype)id

AppendixB:KeysReference(Others)

174

Page 175: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/resources/waypoints

Title:waypoints

Description:Aholderforwaypoints,eachnamedwithaUUID

/resources/waypoints/<RegExp>

Description:Awaypoint,namedwithaUUID

/resources/waypoints/<RegExp>/position

Title:position

Description:Thepositionin3dimensions

Objectvaluewithproperties

longitude(deg)latitude(deg)altitude(m)

/resources/waypoints/<RegExp>/feature

Title:Feature

Description:AGeoJSONfeatureobject

/resources/waypoints/<RegExp>/feature/type

Description:[missing]

Enumvalues:

Feature

/resources/waypoints/<RegExp>/feature/geometry

Title:Point

Description:[missing]

/resources/waypoints/<RegExp>/feature/geometry/type

Description:[missing]

Enumvalues:

Point

AppendixB:KeysReference(Others)

175

Page 176: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

/resources/waypoints/<RegExp>/feature/geometry/coordinates

Description:Asingleposition,inx,yorder(Lon,Lat)

/resources/waypoints/<RegExp>/feature/properties

Description:Additionaldataofanytype

/resources/waypoints/<RegExp>/feature/id

Description:[missing]

/version

Description:VersionoftheschemaandAPIsthatthisdataisusinginCanonicalformati.e.V1.0.0.

AppendixB:KeysReference(Others)

176

Page 177: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

ChangeLog

v1.0.4(2018/04/2212:55+00:00)

#432AddDocumentationforSources(@timmathews)#458Putdescriptivesourcepropertieswheretheybelong(@timmathews)#451WIP:docs:addnotescoveringnamingconventionsforpullrequests(@bkp7)#449Removedspacesfromfilenames.(@bkp7)#433Convertdocstouseverifiedjsonsamples(@bkp7)#448ModifydescriptionofMagneticVariation(@bkp7)#438fix:invalidelectricalschema(@bkp7)#419fix:modifypackage.jsontomakeitcrossplatformcompatible.(@bkp7)#422refactor:improveusabilityofjsonvalidationtests(@bkp7)#429chore:usenodeltsversion(@tkurki)#424polish:improvementstodocumentation:versioning.md(@bkp7)#421UpdateTravisteststouselatestnode-jsv8.x.xrelease(@bkp7)#415Additionalunitswithcorrections(@bkp7)#414Addthesamplestotestscripts(@bkp7)

v1.0.3(2018/01/0819:40+00:00)

#416fix:makeselfrelativetorootinfull(@tkurki)#413Fixed:buginmessagestests(@bkp7)#412fixnpminstallfailingonwindowsplatforms(@bkp7)

v1.0.0(2018/01/0108:58+00:00)

#396Rootrelativeself(@tkurki)#358Documentationandschemafixes(@rob42)#403Fixtypoinconnection.md(@gilesvangruisen)

v0.0.1-12(2017/11/0419:48+00:00)

#315Objectvaluedpropertiesundervalueinfullmodel(@tkurki)#395feature:specifyWGS84forcoordinates(@tkurki)#392spec:removesparseformat(@tkurki)#393feature:specifyWGS84forcoordinates(@tkurki)#372Improve,removelogicerrorinpropslipdescription(@joabakk)#366AddCPAandTCPA(@joabakk)#390feature:Addserverinformationtodiscovery(@tkurki)#385Feature:make/selfrequired(@tkurki)

v0.0.1-11(2017/10/1718:46+00:00)

#388feature:addschemaapitogetshipandatontypenamesfromtheid(@sbender9)#386fix:betteraisShipTypeandatonType(@sbender9)

v0.0.1-9(2017/10/0714:29+00:00)

#383fix:don'tcreateundefinedmetaproperties(@tkurki)

AppendixC:Changelog

177

Page 178: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

v0.0.1-7(2017/09/2717:42+00:00)

#332feature:addmetadatahandlingtojslib(@tkurki)#382feature:includeenumsinkeyswithmetadata(@tkurki)#381Addoutsideairdensity(@joabakk)

v0.0.1-6(2017/08/0920:02+00:00)

#368TranspiledistributednpmmoduletoES2015(@tkurki)

v0.0.1-5(2017/08/0919:24+00:00)

#375AddAlternatorandSolardevices,createchargerQualitiies+cleanups(@thomasonw)

v0.0.1-4(2017/08/0917:16+00:00)

#374AddcommonValueFieldstonotifications(@sbender9)#369Minorfixes(@parsley72)#365AddintakeManifoldTemperaturetopropulsionschema(@anajavi)#364Changefromschemas/versiontoversion/schemas(@rob42)#361Fixdescriptiontyposinperformance(@joabakk)#355[WIP]Convertjsonidfromhttps://signalk.github.io/specification/schemas…(@rob42)#357Splitgitbookdockeyslist(@tkurki)#353Fixedtyposandtextformatting(@aplathan)#342Rewritemultiplesources/valuesdocumentation(@tkurki)

v0.0.1-3(2017/04/1904:41+00:00)

#350AddpagespecifyingversioninginSignalK(@rob42)#337Aisadditions(@rob42)#351Addnoteondataaccuracy(@rob42)#349fix:fixdollarsourcereferencesinfulltree(@tkurki)#347Multiplevaluesubscriptionsdocumentation(@tkurki)#344AddedSARaircraft,updatesteststohandleaircraft,addvessel.mmsi…(@rob42)#346Tanks(@rob42)

v0.0.1-1(2017/03/1916:07+00:00)

#348Addnotethatmeta.unitsMUSTbereturnedforvalidkeys(@rob42)#345Addedtrip.log,andtrip.lastReset(@rob42)#340Addslackbadge(@bkp7)#336Patternforversion(@bkp7)#328AddedtimezoneRegiontoenvironment.time(@bkp7)#321Fixnotificationsschema(@bkp7)#335Addedilluminance(@rob42)#325Improvementstothechartmodel(@emilecantin)#319Addchangeloggeneration(@tkurki)#327UpdatedSchemasothatdate-timemustbeinUTC(@bkp7)#324DefinetimestampasJSONSchemadate-time(@bkp7)#320Fixschemafilestobevalidagainsthttp://json-schema.org/draft-04/schema#(@bkp7)#299Generatedocumentationforobjecttypesfromlocalfiles(@joux3)#312Specifyvesselcontextandleafpathfordelta(@tkurki)

AppendixC:Changelog

178

Page 179: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

#313Itemizecourseproperties(@tkurki)

v0.0.1-0(2016/12/2719:54+00:00)

#309ImproveToplevelsignalkoverview(@sumps)#272Updatemultiplevaluesdocumentation(@tkurki)#301AddsupportfordollarpathinFullSignalK(@tkurki)#306RemovedrefererencetoBoundaryLayer(@sumps)#283AddTransverseWaterSpeedandLeewayAngle(@sumps)#300ExpandontheDiscoverySection(@timmathews)#290MakeprocessSchemaFilesproducekeyswithmetadata.json(@tkurki)#284Steeringgroupinlinewithautopilotcommunication(@joabakk)#278Validatemissingschemareferences&fixmissingreferences(@joux3)#270Usewildcardcontextinexample,mentionwildcard(@tkurki)#265AddChangelog(@tkurki)#274Resolverelativereferencesinthesamefile(@joux3)#269RFC0004:ReplaceJsonPathwithwildcardinsubscriptionpaths(@tkurki)#225Adddefaultsoverlay(@timmathews)#257Reorganizedsteeringgroup,addedtest(@joabakk)#266Cleanupofsourcesschema(@thomasonw)#260Clarifygitbook-docs/README.md(@timmathews)#261Cleanups(@thomasonw)#255GitbookDocumentationmvp(@tkurki)#245MaketankcapacitynumberValue(@tkurki)#238SourcehandlingforNMEAandnon-NMEAsources(@tkurki)#232Addedmissingmessagetypes(@rob42)#233Addedchartscale,andsomenewchartstypes(@rob42)#230Addedexamples,andtidieddescriptions(@rob42)#231adddescriptiontoenumvalues(@sailoog)#228Includeenumsinkeyswithmetadata.json(@tkurki)#221AddGC/RLdistinction(@tkurki)#223ConsistentUseofJSON-schemadraft04Format(@timmathews)#222TankSendersonlyprovidetanklevelvalue(@sumps)#211Alternativeproposalfor"course"objectinnavigation(@fabdrol)#217Reorganisetemperaturesabit(@tkurki)#202Addgeneral&n2kspecificinfotosources(@tkurki)#193Addedracingparameters(@joabakk)#204Renamedrefridgerationtorefrigerator(@joabakk)#201Fixkeyswithmetadata(@tkurki)#200AddedStateofHealthtoBatteries(@sumps)#185Reorganiseelectrical:removeac/dcdistinction,branchesforequipmenttypes(@tkurki)#186Temp,humidity,pressurereorganisation(@tkurki)#195Refactortanks(@tkurki)#194Unitcleanupandaddedpropslipdependancies(@tkurki)#190Improvedescriptions(@joabakk)#182ReplacemaxRevolutionswithzonesusage(@tkurki)#175Addedagnostictargetspeedandtargetangle(@joabakk)#176RemovelegacyAlarmobjectsfromEnvironmentTree(@sumps)#165Addengineload&torque(@tkurki)#118Multiplevalues(take2)(@tkurki)#161Convertzoneinmetatoanobject(@rob42)

AppendixC:Changelog

179

Page 180: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

#162Renamealarmsbranchtonotifications(@rob42)#142Masterwaypointsref(@rob42)#160Removealarmuuidfrompathasitsnotneeded.(@rob42)#159Updatevessel.json(@joabakk)#152Improvealarms-addalertandemergency(@rob42)#120Improvepropulsion(@tkurki)#119Reworkelectricaldc:batteries(@tkurki)#151UseSPDXabbreviationofthelicense(@tkurki)#148Addschemaandtestsforendpointdiscovery(@jboynes)#149Removeunneededreferencestolodash(@jboynes)#145Addedregistrationstructure(@rob42)#139Addedlightstonavigation(@rob42)#143Addenv.mode-take2-Addsource/timestampandtest(@rob42)#141Addedenvironment.mode(@rob42)#140AddedIMO,flag,port,andregnumber(@rob42)#136AdddatetimewithsourceinformationtotheSignalKmodel(@tkurki)#137Masteraddsystime(@rob42)#132Expressairpressurechangerateasarate(@jboynes)#129ReplacelastuseoffloatValuewithnumberValue(@jboynes)#128RemovedCallsignDsc(@sumps)#121AddHeavetoenvironment.json(@sumps)#117AdditionalGNSSfieldadded(@sumps)#114Changeallunitsto(derived)SIunits(fixissue#30)(@keesverruijt)#113Implementmyownsuggestioninissue#112(@keesverruijt)#110Identities,taketwo(@fabdrol)#109AddNMEA0183sentenceandtalkertosource(@tkurki)#107Fixschemareferencesandaddallsubschemasforvalidation(@tkurki)#105Housekeeping:cleanupofallschemas(@fabdrol)#103Relocatecurrentfromnavigationtoenvironment(@timmathews)#101SplitangleTrue(@tkurki)#87Improvevalidation(@tkurki)#88Changepgntypetonumber(@tkurki)#81Formatthedesigngroup(@MariusVolkhart)#78Formatthepropulsiongroup(@MariusVolkhart)#79Formattheelectrical_dcgroup(@MariusVolkhart)#77Formattheresourcesgroup(@MariusVolkhart)#80Formatthenavigationgroup(@MariusVolkhart)#82Formatthealarmsgroup(@MariusVolkhart)#83AddedanUUIDpropertytovessel.json(@fabdrol)#75Formatallenumstothesamestyle(@MariusVolkhart)#70Formatvessel.json(@MariusVolkhart)#54PullofrestructuredELECTRICALJSONschema(@thomasonw)#52Electrical,AC(@timmathews)#64Messageschemas(@rob42)#51Grouprollpitchandyaw(@timmathews)#65Updatestothe"design"group,inordertoaccommodatevesselswithavariablekeelorcenterboardandsomeotherchanges(@fabdrol)#67Separategroupforsails(@fabdrol)#55LabelsforSignalKdataitems(@tkurki)#63Morelenientdeltaschema(@tkurki)#62Changesubschemaloading(@tkurki)

AppendixC:Changelog

180

Page 181: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

#61Addedn2kMappings(@tkurki)#59Addedperformancegrouptovessel.json(@zapfware)#57DefinespecificationforPerformancedata(@zapfware)#58Addwaypoint.distanceActual,correctunitsforlog&logTrip(@zapfware)#50Fixpropulsionandsensorsandsomecleanup(@rob42)#44Reorganizecurrentgroup(@timmathews)#43AddssourceandtimestamptoactiveRoute(@timmathews)#42Renamenavigation.currentRoute(@timmathews)#34Updatelayout(@timmathews)#29Deltaschema&validation(@tkurki)#31StandardizeformattinginschemaJSONfiles(@timmathews)#27Changesrelatedton2kintegration(@tkurki)#26Movesource/timestampsoitonlyoccursonleafnodes(@rob42)#24Indentwith4spaces(@tkurki)#23Windangle&direction(@tkurki)#21Addedsensors,designdata,andanchordata(@rob42)#17AddeddefinitionforGNSSobject(@fabdrol)#15Resources-addheadersetc(@rob42)#14Trytoaddheaders(@rob42)#12Addsignalkheadertodocsunpage(@rob42)#11ReplaceexperimentalJavaScriptcalls(@timmathews)#9Resources(@rob42)#5Addedalarmsgroup(@rob42)#6Addedbasicprinciples(@rob42)#4Fixtodocson.js(@timmathews)#3Separatedschemas(@fabdrol)#1AddedinstructionsforpublishingspectoGHPages(@timmathews)

AppendixC:Changelog

181

Page 182: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

VersioninginSignalKspecificationOurversioningisbasedonhttp://snowplowanalytics.com/blog/2014/05/13/introducing-schemaver-for-semantic-versioning-of-schemas/

Mostofthisdocumentisreproducedfromthere.

Whenversioningadataschema,weareconcernedwiththebackwards-compatibilitybetweenthenewschemaandexistingdatarepresentedinearlierversionsoftheschema.ThisisthefundamentalbuildingblockofSchemaVer,andexplainsthedivergencefromSemanticVersioning.

HeresasimpleformulaforourSchemaVer:

GivenaversionnumberMODEL.REVISION.ADDITION-SUFFIX,incrementthe:

MODEL-whenyoumakeabreakingschemachangewhichwillpreventinteractionwithanyhistoricaldataREVISION-whenyoumakeaschemachangewhichmaypreventinteractionwithsomehistoricaldataADDITION-whenyoumakeaschemachangethatiscompatiblewithallhistoricaldataSUFFIX-optional-denotesspecialversionsoractivedevelopmentegalpha-1,SNAPSHOT

ThefirstreleasedversionofSignalKwillbe1.0.0.

Thecurrentdevelopmentversionwillthenmovetobe1.0.1-SNAPSHOTThenextreleasecandidatemightthenbe1.0.1-alpha-1Thecurrentdevelopmentversionwillthenmovetobe1.0.2-SNAPSHOT

SNAPSHOTdenotesaversionunderactivechange.IfyoudependontheSNAPSHOTversiontheneverytimeyoubuildyourprojectitwillhavechangedwithwhat-everwascommittedsincelasttimeyouchecked.

Let’smakeSchemaVermoreconcretewithsomeexamplesusingsome(truncatedandcontrived)SignalKSchemas,inreverseorder:

AdditionWehaveanexistingJSONSchema,let’scallthis1.0.0:

{

"type":"object",

"$schema":"http://json-schema.org/draft-04/schema#",

"id":"https://signalk.org/demospecification/1.0.0/schemas/groups/communication.json#",

"description":"Schemadescribingthecommunicationchild-objectofaVessel.",

"title":"communication",

"properties":{

"dscAddress":{

"type":"string",

"description":"MMSICallsignforVHFcommunication"

}

},

"required":["dscAddress"],

"additionalProperties":false

}

Nowwewanttoaddanadditionalfieldtoourschema:

{

"type":"object",

"$schema":"http://json-schema.org/draft-04/schema#",

AppendixD:Versioning

182

Page 183: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

"id":"https://signalk.org/demospecification/1.0.1/schemas/groups/communication.json#",

"description":"Schemadescribingthecommunicationchild-objectofaVessel.",

"title":"communication",

"properties":{

"dscAddress":{

"type":"string",

"description":"MMSICallsignforVHFcommunication"

},

"phoneNumber":{

"type":"string",

"description":"Phonenumberofskipper",

"example":"+64xxxxxx"

}

},

"required":["dscAddress"],

"additionalProperties":false

}

BecauseournewphoneNumberfieldisnotarequiredfield,andbecauseversion1.0.0hadadditionalPropertiessettofalse,weknowthatallhistoricaldatawillworkwiththisnewschema,ie.anyjsonwhichvalidatesagainst1.0.0willalsobevalidagainst1.0.1.

ThereforewearelookingatanADDITION,andsowebumptheschemaversionto1.0.1.

RevisionLet’snowmakeourJSONSchemasupportadditionalProperties-thisconstitutesanotherADDITION,sowearenowon1.0.2:

{

"type":"object",

"$schema":"http://json-schema.org/draft-04/schema#",

"id":"https://signalk.org/demospecification/1.0.2/schemas/groups/communication.json#",

"description":"Schemadescribingthecommunicationchild-objectofaVessel.",

"title":"communication",

"properties":{

"dscAddress":{

"type":"string",

"description":"MMSICallsignforVHFcommunication"

},

"phoneNumber":{

"type":"string",

"description":"Phonenumberofskipper",

"example":"+64xxxxxx"

}

},

"required":["dscAddress"],

"additionalProperties":true

}

Afterawhile,weaddanewfield,callsignHf:

{

"type":"object",

"$schema":"http://json-schema.org/draft-04/schema#",

"id":"https://signalk.org/demospecification/1.1.0/schemas/groups/communication.json#",

"description":"Schemadescribingthecommunicationchild-objectofaVessel.",

"title":"communication",

"properties":{

"dscAddress":{

"type":"string",

"description":"MMSICallsignforVHFcommunication"

},

"phoneNumber":{

AppendixD:Versioning

183

Page 184: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

"type":"string",

"description":"Phonenumberofskipper",

"example":"+64xxxxxx"

},

"callsignHf":{

"type":"string",

"description":"CallsignforHFcommunication",

"example":"ZL3RTH"

}

},

"required":["dscAddress"],

"additionalProperties":true

}

Willthisnewschemavalidateallhistoricaldata?Unfortunatelywecan’tbecertain,becausetherecouldbehistoricalJSONswheretheanalystaddedtheirowncallsignHffieldwhichwasnotastring.

SoweareeffectivelymakingaREVISIONtothedataschema-sowebumptheversionto1.1.0(resettingADDITIONto0).

ModelOhdear-wehavejustrealizedthatnotevery-onehasDSC!ItshouldhavebeenaVHFcallsign.HereisournewJSONSchema:

{

"type":"object",

"$schema":"http://json-schema.org/draft-04/schema#",

"id":"https://signalk.org/demospecification/2.0.0/schemas/groups/communication.json#",

"description":"Schemadescribingthecommunicationchild-objectofaVessel.",

"title":"communication",

"properties":{

"callsignVhf":{

"type":"string",

"description":"CallsignforVHFcommunication",

"example":"ZL1234"

},

"phoneNumber":{

"type":"string",

"description":"Phonenumberofskipper",

"example":"+64xxxxxx"

},

"callsignHf":{

"type":"string",

"description":"CallsignforHFcommunication",

"example":"ZL3RTH"

}

},

"required":["callsignVhf"],

"additionalProperties":false

}

WehavechangedourMODEL-becausewecanhavenoreasonableexpectationthatanyofthehistoricaldatacaninteractwiththisschema.Thatmeansournewversionis2.0.0

Notethatwealsodecidedtousethis“reboot”oftheMODELtochangeadditionalPropertiesbacktofalse,because(aswehavelearnt)itwillhelpustoavoidunnecessaryREVISIONsinthefuture.

Note:https://signalk.org/demospecification/...isnotreal,itisjustusedhereforillustration.Therealschemasarelocatedat:https://signalk.org/specification/...

Supplementaryrules

AppendixD:Versioning

184

Page 185: Table of Contents - Signal Ksignalk.org/specification/1.0.4/doc/signalk.pdf · position – latitude doesn‘t have much meaning without an associated longitude. Therefore, these

InSignalKwehaveafewvariationsfromSchemaVer:

Weusedots(.)toseparatetheversionparts,nothyphens(-s)asinSchemaVerWeuseasuffixtodenotein-progressorspecialreleases,ascommonlyseeninMaven

AppendixD:Versioning

185