{"id":32164531,"url":"https://github.com/sblabreu/ex_senml","last_synced_at":"2026-02-21T03:03:14.059Z","repository":{"id":62429434,"uuid":"190811767","full_name":"sblabreu/ex_senml","owner":"sblabreu","description":"SenML toolset","archived":false,"fork":false,"pushed_at":"2019-06-08T09:51:16.000Z","size":14,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-02-20T08:47:36.516Z","etag":null,"topics":["rfc8428","senml"],"latest_commit_sha":null,"homepage":null,"language":"Elixir","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sblabreu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-06-07T21:38:19.000Z","updated_at":"2022-09-12T00:22:52.000Z","dependencies_parsed_at":"2022-11-01T20:03:20.139Z","dependency_job_id":null,"html_url":"https://github.com/sblabreu/ex_senml","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/sblabreu/ex_senml","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sblabreu%2Fex_senml","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sblabreu%2Fex_senml/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sblabreu%2Fex_senml/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sblabreu%2Fex_senml/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sblabreu","download_url":"https://codeload.github.com/sblabreu/ex_senml/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sblabreu%2Fex_senml/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29672273,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-21T00:11:43.526Z","status":"online","status_checked_at":"2026-02-21T02:00:07.432Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["rfc8428","senml"],"created_at":"2025-10-21T14:47:09.676Z","updated_at":"2026-02-21T03:03:14.054Z","avatar_url":"https://github.com/sblabreu.png","language":"Elixir","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ExSenml\n\nToolset to Normalize SenML and other conversion promises  \n\n  SenML is an open ietf standard that defines a format for representing simple sensor\n   measurements and device parameters in Sensor Measurement Lists (SenML)\n  You can find the spec: https://tools.ietf.org/html/rfc8428\n  Becoming more and more used within the IoT Domain, as common used standard for Constrained Application Protocol (CoAP)\n  LwM2M 1.0 (https://tools.ietf.org/html/draft-ietf-core-senml) and LwM2M 1.0 uses the actual RFC.\n\n  Also adding support for https://tools.ietf.org/html/draft-keranen-core-senml-data-ct-01 \n\n  ## Features\n\n    * (Basic) Normalized format for SenML Records (chapter 4.6 Resolve Records), A SenML Record is referred to as \"resolved\" if it does not contain\n      any base value.\n    * (TODO) Support Conversion between diferent representations defined in JavaScript Object Notation (JSON), \n      Concise Binary Object Representation (CBOR), eXtensible Markup Language (XML), and Efficient XML Interchange (EXI), \n      which share the common SenML data model. \n\n  ## Example \n\n    iex(1)\u003e senml_payload_rsv_rec_1 = [%{u: \"lon\", v: 24.30621},%{u: \"lat\", v: 60.07965}]\n    [%{u: \"lon\", v: 24.30621}, %{u: \"lat\", v: 60.07965}]\n    iex(2)\u003e ExSenml.validate_and_resolve(senml_payload_rsv_rec_1,\"1234\")\n    {:ok,\n    [\n      %{n: \"1234\", t: 1559984152, u: \"lat\", v: 60.07965},\n      %{n: \"1234\", t: 1559984152, u: \"lon\", v: 24.30621}\n    ]}\n\n  ## TODO \n\n  - [x] Basic record normalization\n  - [ ] Validate \"n\" fields caracters\n  - [ ] Convert Beetween formats\n  - [ ] Improve Documentation [https://hexdocs.pm/ex_senml](https://hexdocs.pm/ex_senml).\n  - [ ] Make the world adopt SenML\n\n## Installation\n\nIf [available in Hex](https://hex.pm/docs/publish), the package can be installed\nby adding `ex_senml` to your list of dependencies in `mix.exs`:\n\n```elixir\ndef deps do\n  [\n    {:ex_senml, \"~\u003e 0.0.0\"}\n  ]\nend\n```\n\nDocumentation can be generated with [ExDoc](https://github.com/elixir-lang/ex_doc)\nand published on [HexDocs](https://hexdocs.pm). Once published, the docs can\nbe found at [https://hexdocs.pm/ex_senml](https://hexdocs.pm/ex_senml).\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsblabreu%2Fex_senml","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsblabreu%2Fex_senml","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsblabreu%2Fex_senml/lists"}