anchor.diff:  
   -behaviour(ranch_protocol).
   
  +-include("em_records.hrl").
  +
   %% API
   -export([start_link/4]).
   -export([init/4]).
  
positive.code: % (echo -n -e "imei:123456789012345,help me,1201011201,,F,120100.000,A,6000.0000,N,13000.0000,E,0.00,;";) | nc -v localhost 5001
  parse(Data) when is_binary(Data) ->
    [Imei, Alarm, LocalDateTime, _, _Status, TimeUtc, Validity, Latitude, LatitudeType, Longitude, LongitudeType, Speed, _Course| _] = binary:split(Data, [<<",">>], [global]),
    UtcTime = parse_date_time(LocalDateTime, TimeUtc),
    {LongitudeDegrees, LatitudeDegrees} = parse_coordinates({{Longitude, LongitudeType}, {Latitude, LatitudeType}}),
    Message = #{
      <<"deviceTime">> => UtcTime,
      <<"latitude">> => LatitudeDegrees,
      <<"longitude">> => LongitudeDegrees,
      <<"speed">> => parse_speed(Speed),
      <<"course">> => 0,
      <<"valid">> =>parse_validity(Validity),
      <<"alarm">> => Alarm
    },
    {parse_imei(Imei), Message}.
  
  parse_imei(ImeiData) when is_binary(ImeiData) ->
    [_, Imei|_] = binary:split(ImeiData, [<<":">>], [global]),
  
negative.code: parse_course(Course) ->
    list_to_float(binary_to_list(Course)).
  
  parse_valid(Validity) when is_binary(Validity) ->
    binary_to_atom(Validity, utf8).
  
  test() ->
  