Skip to content

Instantly share code, notes, and snippets.

@djdunc
Created January 3, 2023 18:19
Show Gist options
  • Save djdunc/5df6a2cb70fba2b4457971b567f9560a to your computer and use it in GitHub Desktop.
Save djdunc/5df6a2cb70fba2b4457971b567f9560a to your computer and use it in GitHub Desktop.
TTN-GW-console-parser.ipynb
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"provenance": [],
"authorship_tag": "ABX9TyOQWQwrgXOlf9mYtH+DkrhJ",
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/djdunc/5df6a2cb70fba2b4457971b567f9560a/ttn-gw-console-parser.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "DEN_ngnohTWz",
"outputId": "2f37ee16-a67c-480c-866e-b99c8341d68b"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"number of records = 2000\n",
"number of dev_addr called = 953\n",
"unique devices = 332\n"
]
}
],
"source": [
"# snippet to process console log file from TTN v3 GW console output\n",
"# counts the number of unique device addresses in the log file\n",
"\n",
"import json\n",
"\n",
"with open('celab-orbit_live_data_1672749450480.json') as user_file:\n",
" file_contents = user_file.read()\n",
"\n",
"parsed_json = json.loads(file_contents)\n",
"\n",
"dev_addr = []\n",
"unique_dev_addr = []\n",
"\n",
"print(\"number of records = \", len(parsed_json))\n",
"#print(parsed_json[0][\"data\"][\"message\"][\"payload\"][\"m_hdr\"])\n",
"\n",
"for x in range(len(parsed_json)):\n",
" if parsed_json[x][\"name\"] == \"gs.up.receive\":\n",
" msg_type = parsed_json[x][\"data\"][\"message\"][\"payload\"][\"m_hdr\"]\n",
" if len(msg_type) != 0:\n",
" dev_addr.append(parsed_json[x][\"data\"][\"message\"][\"payload\"][\"mac_payload\"][\"f_hdr\"][\"dev_addr\"])\n",
"\n",
"\n",
"print(\"number of dev_addr called =\", len(dev_addr))\n",
"\n",
"unique_dev_addr = set(dev_addr)\n",
"print(\"unique devices = \", len(unique_dev_addr))"
]
},
{
"cell_type": "code",
"source": [
"from collections import Counter\n",
"\n",
"new_vals = Counter(dev_addr).most_common()\n",
"new_vals = new_vals[:25:1] #this shows first 25 records and sorts the list in descending order (-1 for ascending)\n",
"\n",
"for a, b in new_vals:\n",
" print(a, b)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "61MG92pZzDE4",
"outputId": "81b0515c-d902-45fd-a363-0edc5b65d855"
},
"execution_count": 66,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"0052EDB4 48\n",
"015E0D22 29\n",
"01E7888D 20\n",
"0176AA6A 18\n",
"017CFB5E 17\n",
"00B7E2A8 17\n",
"019F9325 16\n",
"01AEFFA0 15\n",
"00C0B412 15\n",
"011606E8 15\n",
"00A78288 14\n",
"317B77E3 14\n",
"260BA71F 13\n",
"011A687C 12\n",
"003331B1 12\n",
"01C37F1B 11\n",
"01D52615 11\n",
"01796B4D 10\n",
"00531C67 10\n",
"01B63B0F 10\n",
"01763FED 10\n",
"011806A6 10\n",
"01521E0F 9\n",
"0126E6D5 9\n",
"002F1C93 9\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"import numpy as np\n",
"\n",
"values, counts = np.unique(dev_addr, return_counts=True)\n",
"print(values)\n",
"print(counts)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "xHtkgJfIvq06",
"outputId": "45b3ec15-318a-4686-e4d1-c5770b81e7bb"
},
"execution_count": 61,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"['000238B7' '00030568' '0005AE05' '0007B55B' '000B8FEB' '000E680B'\n",
" '00118354' '0014D26C' '001D1680' '0026F74F' '002710E0' '002867D5'\n",
" '0029C05D' '002A8ED7' '002CC5FE' '002F1C93' '003331B1' '0037523C'\n",
" '003B5F89' '003FA8F0' '0044EDFC' '0045AF90' '00487435' '004CCB89'\n",
" '004FA6B3' '0052EDB2' '0052EDB4' '00531C67' '00547FF5' '0062AFC1'\n",
" '00676900' '00683082' '007F98D3' '00801110' '0083D295' '0084AB82'\n",
" '0087772F' '0088674A' '008D877F' '00939D88' '0094CD9F' '009A0D8F'\n",
" '009D67AB' '009F86D4' '00A5073E' '00A78288' '00A78C7A' '00ADA3CF'\n",
" '00B7E2A8' '00B8C750' '00C0B412' '00C62EB1' '00C8DE25' '00CB3145'\n",
" '00CBFE51' '00CE40C8' '00CF9440' '00D26BFD' '00D40BA6' '00E3945C'\n",
" '00EC1F10' '00EC9439' '00FB04AA' '00FDE98A' '0100DA30' '0108DA30'\n",
" '010C12B4' '010F4005' '0110A942' '0112F75A' '011606E8' '011716F9'\n",
" '011806A6' '0118A865' '0118ED06' '0118F3A9' '011A687C' '011CC13A'\n",
" '011D5C7C' '012132B5' '01215C5D' '0121B952' '0126CC42' '0126E6D5'\n",
" '012707A4' '01274977' '012C7910' '01308B0C' '0132FDF2' '0133D31E'\n",
" '013F1C93' '013F7B63' '0141A788' '01424443' '0148F836' '014CF4EB'\n",
" '0151DA59' '01521E0F' '01592DF6' '015E0D22' '015E14CF' '0160DF54'\n",
" '0166C148' '016C2953' '016DFAC5' '0174BCC3' '01763FED' '0176AA6A'\n",
" '01796B4D' '017CFB5E' '0180D2C9' '01851035' '018D6B35' '01907772'\n",
" '0192A9DE' '0193E724' '0197B3F5' '0197BBF5' '019F9325' '01A2D74C'\n",
" '01A6C01D' '01A7FBB9' '01AEFFA0' '01B63B0F' '01B6E6F4' '01C0F285'\n",
" '01C37F1B' '01C4A538' '01C7CFBF' '01CA1207' '01CCEF2F' '01D52615'\n",
" '01DA7212' '01E1793D' '01E2872A' '01E6AA6A' '01E74B50' '01E7888D'\n",
" '01E7BF05' '01F965D1' '01FF9F00' '02006C7C' '02023841' '02026BAF'\n",
" '02026BB8' '02026BBB' '02026BBC' '02026BBE' '02026BBF' '02026BC7'\n",
" '02026BD3' '02026C2E' '02026DDE' '02026DE5' '02026DE7' '02026DF1'\n",
" '02028594' '020285B4' '0202869B' '0202B718' '0202C36B' '02083BF8'\n",
" '0222861E' '0232B696' '0240207B' '02523BA6' '04327C02' '04328670'\n",
" '04A0B868' '04A0C18F' '0602C632' '071FFA0C' '07670C7C' '09274977'\n",
" '09E6FFA0' '0C149BA6' '0CC73745' '0E1FFA0C' '10003022' '1000342F'\n",
" '109C76AB' '10A9C6B0' '12026B8F' '1204D88E' '15081018' '20226BAB'\n",
" '206705DA' '20E0F724' '21B1F724' '21D4B429' '24126E8E' '2420E541'\n",
" '2428E6AB' '2441822C' '250376A0' '25324AD1' '26049C20' '2604A9E8'\n",
" '260812B5' '26082853' '26083615' '26083C1A' '2608414D' '26085283'\n",
" '2608566A' '26086A65' '26087C0A' '2608850D' '26088E1C' '26088FC9'\n",
" '26089405' '2608A9F3' '2608BA27' '2608C70C' '2608D48B' '2608DFFA'\n",
" '2608F4C8' '26092D1A' '260B1C3D' '260B213F' '260B2F20' '260B9AED'\n",
" '260BA71F' '260BAB1F' '260BAB79' '260BCF4B' '260BD0C1' '260BF75B'\n",
" '2688252B' '26A9BE05' '26C88BB3' '27007C6D' '2700BBD1' '2700E5D0'\n",
" '2700E5D1' '27015717' '27015723' '2701574F' '27015769' '270157D4'\n",
" '2F800D4E' '2F988609' '301AF883' '302710E0' '3040F77E' '3044EDFC'\n",
" '3046F77E' '3064302A' '3071D925' '3079D125' '30A16F6F' '3165F148'\n",
" '317B77E3' '317BF7E0' '31BF2311' '3218F3A9' '3354496E' '3374EDFC'\n",
" '342E77B3' '349474A7' '35DCD483' '36833FA7' '372FFA9C' '402A8AFF'\n",
" '402F1C93' '403541EF' '405167AB' '42026C84' '4362BA30' '48000860'\n",
" '48000864' '48000872' '48000879' '517B77E3' '52023C8A' '52526BBB'\n",
" '52537CC2' '52565437' '5278C3A9' '544C4DCE' '5AE14667' '605D761F'\n",
" '6060E975' '60E6149E' '617B7743' '61F7BBF5' '61F9FC2F' '6A0C3030'\n",
" '7038F43E' '706867B6' '7375D118' '75500002' '7564A43A' '76522CB0'\n",
" '8064D89E' '8098856D' '80AA008C' '80C8B412' '8142EDB4' '81DE8522'\n",
" '8A8AEDDE' '8C2B81C1' '8D3B3CA2' '90883022' '9202806C' '9271793D'\n",
" '959CCB9E' '9632E72A' '978A8B5C' '9D3A4A1B' 'A202CBAB' 'A4EDE0FF'\n",
" 'A72243B3' 'AA887F8B' 'B17B7EE3' 'C042ACF1' 'C098CD9F' 'C0AB8C7A'\n",
" 'C0CBAF86' 'C0CEF8B7' 'C1AEFFA0' 'C1D8C13A' 'C205C9DF' 'C6743B6B'\n",
" 'CA86ADE5' 'E17F77E7' 'E1A925D7' 'E65BFE6F' 'F0B9DD25' 'F6144202'\n",
" 'F8607A30' 'FC78394D']\n",
"[ 9 3 3 1 2 1 1 3 1 2 1 3 9 1 1 9 12 1 7 1 8 1 1 3\n",
" 1 1 48 10 2 1 2 7 2 5 2 1 1 1 8 1 6 4 8 3 1 14 8 7\n",
" 17 1 15 8 4 1 1 1 1 1 4 2 3 3 5 1 9 1 1 1 6 1 15 1\n",
" 10 1 1 7 12 7 1 4 1 1 1 9 1 2 2 2 8 1 1 1 1 6 5 1\n",
" 2 9 1 29 1 9 8 1 3 5 10 18 10 17 8 1 1 1 2 6 1 6 16 1\n",
" 1 6 15 10 1 1 11 1 2 1 3 11 2 3 1 1 1 20 2 1 1 1 1 1\n",
" 1 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1\n",
" 1 1 1 6 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1\n",
" 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 4 1 2 1 1 6 1 2\n",
" 1 1 4 8 3 1 13 1 2 1 3 1 1 1 1 1 3 1 1 1 2 2 2 2\n",
" 1 1 1 2 9 1 1 1 1 6 1 1 14 1 1 1 1 1 1 1 1 1 1 1\n",
" 1 1 1 1 1 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1\n",
" 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1\n",
" 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]\n"
]
}
]
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment