1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
|
syntax = "proto2";
package org.traccar.protobuf.starlink;
// StarLink Message
message StarLink_Message {
optional uint32 FID = 1; // Unit factory serial
optional string IMEI = 2; // IMEI
optional uint32 UID = 3; // Unit serial
optional uint32 AckRef = 4; // Ack reference number
repeated mMessage Message = 5;
}
// Message body
message mMessage {
optional uint64 ReferenceNumber = 100;
optional uint32 ReferenceNumberDiff = 101;
optional uint32 MessageType = 102;
optional mWakeUp WakeUp = 1;
optional mConfirmation Confirmation = 2;
optional mParamResponse ParamResponse = 3;
optional mEventReport EventReport = 6;
optional mGeoZone GeoZone = 10;
optional mOutputs Outputs = 12;
optional mEventConfig EventConfig = 14;
optional mInputs Inputs = 16;
optional mInputConfig InputConfig = 17;
optional mSpeedLimit SpeedLimit = 27;
optional mUnitIDChanged UnitIDChanged = 29;
optional mGenDeviceMsg GenericDeviceMsg= 30;
optional mGenDeviceFW GenericDeviceFW = 35;
optional mReadIButton ReadIButton = 42;
optional mGetPattern GetPattern = 43;
optional mMultiParam MultiParameter = 45;
optional mTempConfig TempConfig = 52;
optional mDeviceList DeviceList = 56;
optional mTeachRemote TeachRemote = 58;
optional mAuthenticate Authenticate = 95;
optional mEventReport CurrentLocation = 96;
optional mConfigServer ConfigServer = 98;
}
// Wake-Up event
message mWakeUp {
required string UnitVersion = 1;
required string ProtocolVersion = 2;
}
// Confirmation message
message mConfirmation {
// standard response
required uint32 ResultCode = 1;
optional uint32 ReferenceNumber = 2; // confirmation by reference number
optional uint32 MessageType = 3; // confirmation by message type
// parameter ack (response to command #4)
optional uint32 ParameterAck = 4;
// multi-parameter ack (response to command #46)
optional uint32 ParametersChanged = 5;
optional uint32 ParametersFailed = 6;
repeated uint32 ParameterFailedList = 9;
// modify list of allowed drivers (response to command #50)
optional uint32 CodesInList = 7;
optional uint32 EmptySlots = 8;
}
// Parameter response
message mParamResponse {
required uint32 ParameterNumber = 1;
required string Value = 2;
}
// Event report
message mEventReport {
optional uint32 EID = 1; // https://sweb.erm.co.il/protocol/?i=D12
optional string EDESC = 2; // https://sweb.erm.co.il/protocol/?i=D13
optional uint32 EDT = 3; // https://sweb.erm.co.il/protocol/?i=D27 (seconds since 1/1/2000)
optional sint32 EDT_Diff = 4; // seconds since previous message's EDT
optional uint32 NXT = 5; // https://sweb.erm.co.il/protocol/?i=D111
optional uint32 NXTS = 81; // https://sweb.erm.co.il/protocol/?i=D178
optional string ExtraData = 254;
optional uint32 PDT = 6; // https://sweb.erm.co.il/protocol/?i=D35 (seconds since 1/1/2000)
optional sint32 PDT_Diff = 7; // seconds since previous message's PDT
optional sint32 LAT = 8; // https://sweb.erm.co.il/protocol/?i=D49 (multiplied by 1000000)
optional sint32 LAT_Diff = 9; // difference between previous latitude (add this value to previous value)
optional sint32 LONG = 10; // https://sweb.erm.co.il/protocol/?i=D57 (multiplied by 1000000)
optional sint32 LONG_Diff = 11; // difference between previous longitude (add this value to previous value)
optional sint32 ALT = 12; // https://sweb.erm.co.il/protocol/?i=D69 (multiplied by 10)
optional sint32 ALT_Diff = 13; // difference between previous altitude (add this value to previous value)
optional uint32 SPD = 14; // https://sweb.erm.co.il/protocol/?i=D61 (multiplied by 10, in knots)
optional uint32 SPDK = 15; // https://sweb.erm.co.il/protocol/?i=D62
optional uint32 HEAD = 16; // https://sweb.erm.co.il/protocol/?i=D63
optional uint32 HDOP = 17; // https://sweb.erm.co.il/protocol/?i=D71 (multiplied by 10)
optional uint32 VDOP = 18; // https://sweb.erm.co.il/protocol/?i=D72 (multiplied by 10)
optional uint32 PDOP = 19; // https://sweb.erm.co.il/protocol/?i=D70 (multiplied by 10)
optional uint32 SAT = 20; // https://sweb.erm.co.il/protocol/?i=D73
optional uint32 SATN = 21; // https://sweb.erm.co.il/protocol/?i=D99
optional uint32 SATU = 22; // https://sweb.erm.co.il/protocol/?i=D74
optional uint32 GSS = 23; // https://sweb.erm.co.il/protocol/?i=D98
optional uint32 GSSN = 24; // https://sweb.erm.co.il/protocol/?i=D100
optional uint32 FIX = 25; // https://sweb.erm.co.il/protocol/?i=D75
optional uint32 LOCA = 26; // https://sweb.erm.co.il/protocol/?i=D126
optional uint32 LOCS = 79; // https://sweb.erm.co.il/protocol/?i=D167
optional uint32 ODO = 27; // https://sweb.erm.co.il/protocol/?i=D14
optional sint32 ODO_Diff = 28; // difference between previous odometer (add this value to previous value)
optional uint32 ODOD = 29; // https://sweb.erm.co.il/protocol/?i=D15 (multiplied by 1000)
optional sint32 ODOD_Diff = 30; // difference between previous odometer (add this value to previous value)
optional uint32 CID = 31; // https://sweb.erm.co.il/protocol/?i=D5
optional uint32 LAC = 32; // https://sweb.erm.co.il/protocol/?i=D4
optional uint32 CSS = 33; // https://sweb.erm.co.il/protocol/?i=D89
optional sint32 CSS_Diff = 34; // difference between previous rx power (add this value to previous value)
optional uint32 CTA = 35; // https://sweb.erm.co.il/protocol/?i=D95
optional uint32 CCN = 36; // https://sweb.erm.co.il/protocol/?i=D89
optional bool JAM = 37; // https://sweb.erm.co.il/protocol/?i=D66
optional uint32 NC = 38; // https://sweb.erm.co.il/protocol/?i=D94
optional uint32 NM = 39; // https://sweb.erm.co.il/protocol/?i=D125
optional uint32 NT = 76; // https://sweb.erm.co.il/protocol/?i=D153
optional uint32 CU = 77; // https://sweb.erm.co.il/protocol/?i=D154
optional uint32 VIN = 40; // https://sweb.erm.co.il/protocol/?i=D64 (multiplied by 100)
optional sint32 VIN_Diff = 41; // difference between previous VIN (add this value to previous value)
optional uint32 VBAT = 42; // https://sweb.erm.co.il/protocol/?i=D65 (multiplied by 100)
optional sint32 VBAT_Diff = 43; // difference between previous VBAT (add this value to previous value)
optional uint32 V3 = 44; // https://sweb.erm.co.il/protocol/?i=D92 (multiplied by 100)
optional sint32 V3_Diff = 45; // difference between previous V3 (add this value to previous value)
optional uint32 V4 = 46; // https://sweb.erm.co.il/protocol/?i=D93 (multiplied by 100)
optional sint32 V4_Diff = 47; // difference between previous V4 (add this value to previous value)
optional uint32 BATH = 48;
optional uint32 BATC = 49;
optional uint32 STRT = 50; // (multiplied by 100)
optional sint32 TVI = 51; // https://sweb.erm.co.il/protocol/?i=D110 (multiplied by 10)
optional uint32 Inputs = 52; // b0 = IN1/INC, b1 = IN2/IND, b2 = IN3/INE, b3 = IN4/INF
optional uint32 DInputs = 53; // b0 = DI1, b1 = DI2, b2 = DI3, b3 = DI4, b4 = DI5, b5 = DI6, b6 = DI7, b7 = DI8
optional uint32 IgnitionEngine = 54; // b0 = IGN, b1 = ENG, b2 = DRV
optional uint32 Outputs = 55; // b0 = OUT1/OUTA, b1 = OUT2/OUTB, b2 = OUT3/OUTC, b3 = OUT4/OUTD, b4 = OUT5, b5 = OUT6, b6 = OUT7, b7 = OUT8
optional string USER = 56; // https://sweb.erm.co.il/protocol/?i=D97
optional string EDV1 = 57; // https://sweb.erm.co.il/protocol/?i=D179
optional string EDV2 = 58; // https://sweb.erm.co.il/protocol/?i=D180
optional string EDV3 = 59; // https://sweb.erm.co.il/protocol/?i=D181
optional string EDV4 = 60; // https://sweb.erm.co.il/protocol/?i=D182
optional sint32 CV1 = 61; // https://sweb.erm.co.il/protocol/?i=D121
optional sint32 CV2 = 62; // https://sweb.erm.co.il/protocol/?i=D122
optional sint32 CV3 = 63; // https://sweb.erm.co.il/protocol/?i=D123
optional sint32 CV4 = 64; // https://sweb.erm.co.il/protocol/?i=D124
optional sint32 CV5 = 82; // https://sweb.erm.co.il/protocol/?i=D174
optional sint32 CV6 = 83; // https://sweb.erm.co.il/protocol/?i=D175
optional sint32 CV7 = 84; // https://sweb.erm.co.il/protocol/?i=D176
optional sint32 CV8 = 85; // https://sweb.erm.co.il/protocol/?i=D177
optional sint32 CV9 = 86; // https://sweb.erm.co.il/protocol/?i=D188
optional sint32 CV10 = 87; // https://sweb.erm.co.il/protocol/?i=D189
optional sint32 CV11 = 88; // https://sweb.erm.co.il/protocol/?i=D190
optional sint32 CV12 = 89; // https://sweb.erm.co.il/protocol/?i=D191
optional bool IARM = 65; // https://sweb.erm.co.il/protocol/?i=D7
optional string DID = 66; // https://sweb.erm.co.il/protocol/?i=D101
optional string DAL = 67; // https://sweb.erm.co.il/protocol/?i=D76
optional uint32 DEST = 68; // https://sweb.erm.co.il/protocol/?i=D8
optional bool OVM = 73; // https://sweb.erm.co.il/protocol/?i=D150
optional uint32 CFL = 69; // https://sweb.erm.co.il/protocol/?i=D26
optional uint32 CFL2 = 80; // https://sweb.erm.co.il/protocol/?i=D26
optional uint32 RPM = 70; // https://sweb.erm.co.il/protocol/?i=D144
optional uint32 DUR = 71; // https://sweb.erm.co.il/protocol/?i=D145
optional uint32 TDUR = 72; // https://sweb.erm.co.il/protocol/?i=D146
optional uint32 IDL = 74; // https://sweb.erm.co.il/protocol/?i=D151
optional uint32 STP = 75; // https://sweb.erm.co.il/protocol/?i=D152
repeated mEventReport_TDx TDx = 78; // https://sweb.erm.co.il/protocol/?i=D168
}
// Sensor data
message mEventReport_TDx {
required uint32 SensorNumber = 1; // Sensor #
optional string SensorID = 3; // TIx (binary)
optional sint32 Temperature = 4; // TVx (multiplied by 10)
optional uint32 Temperature_State = 2; // TSx
optional uint32 Humidity = 5; // THx (multiplied by 10)
optional uint32 Humidity_State = 6;
optional uint32 RSSI = 7;
optional uint32 RSSI_State = 8;
optional uint32 Voltage = 9; // mV (multiplied by 1000)
optional uint32 Voltage_State = 10;
optional uint32 Light = 11; // percent
optional uint32 Light_State = 12;
optional uint32 MagnetSwitch = 13;
optional uint32 MagnetSwitch_State = 14;
optional uint32 Accident = 15;
optional uint32 Button = 16;
optional uint32 Movement = 17;
}
// Geozone reqsponse
message mGeoZone {
required uint32 ZoneNumber = 1;
repeated mLatLong Point = 2; // single point for radius geozone, multiple points for polygon
optional uint32 Radius = 3;
}
// Outputs response
message mOutputs {
required uint32 OutputBitmask = 1;
}
// Event configuration response
message mEventConfig {
required uint32 EventID = 1;
required uint32 Configuration = 2; // bitmask
}
// Inputs response
message mInputs {
required uint32 InputBitmask = 1;
}
// Inputs configuration
message mInputConfig {
required uint32 InputID = 1;
required uint32 DebounceLow = 2;
required uint32 DebounceHigh = 3;
}
// Speed limit configuration
message mSpeedLimit {
required uint32 Number = 1;
required bool Active = 2;
optional uint32 MinSpeed = 3; // when using speed limit with minimum speed
optional uint32 MaxSpeed = 4; // when using speed limit with maximum speed
required uint32 Duration = 5;
required bool ReportDuration = 6;
optional bool StartAndEnd = 7;
optional bool AutoTrack = 8;
optional bool OutputPattern = 9;
optional uint32 Step = 10;
}
// Unit ID changed
message mUnitIDChanged {
required uint32 FID = 1;
required string IMEI = 2;
required sint32 PreviousSetting = 3;
required sint32 NewSetting = 4;
}
// Generic device message
message mGenDeviceMsg {
required uint32 DeviceID = 1;
required uint32 DataType = 2;
optional string Data = 3;
}
// Generic device FW update
message mGenDeviceFW {
optional uint32 BlockRequest = 1;
optional uint32 Status = 2;
optional uint32 MaxBlocks = 3;
}
// Configuration server message
message mConfigServer {
required bool Success = 1;
}
// Read iButton
message mReadIButton {
required string iButtonID = 1;
optional string Data = 2;
}
// Read pattern configuration
message mGetPattern {
required uint32 PatternID = 1;
required string Pattern = 2;
}
// Multiple parameters response
message mMultiParam {
repeated uint32 ParameterNumbers = 1;
repeated string Values = 2;
}
// Temperature sensor configuration
message mTempConfig {
required uint32 SensorCount = 1;
repeated string SensorID = 2;
}
// Device list
message mDeviceList {
repeated uint32 DeviceID = 1;
repeated uint32 Version = 2;
}
// Teach remote
message mTeachRemote {
required uint32 RuleID = 1;
optional uint32 RemoteID = 2;
}
// Authentication message
message mAuthenticate {
required uint32 Version = 1;
optional string Token = 2;
optional uint32 Key = 3;
optional uint32 Step = 4;
optional string Digest = 5;
}
// Point (Lat / Long)
message mLatLong {
required sint32 Latitude = 1;
required sint32 Longitude = 2;
}
|