[{"id":"70ed5fd9.1965e","type":"debug","z":"7eb27ef8.b499a","name":"tcpdump debug","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":280,"y":380,"wires":[]},{"id":"b6b12204.511ea","type":"switch","z":"7eb27ef8.b499a","name":"Check message type","property":"payload","propertyType":"msg","rules":[{"t":"cont","v":"{\"stat\":","vt":"str"},{"t":"cont","v":"{\"rxpk\":","vt":"str"},{"t":"cont","v":"{\"txpk\":","vt":"str"},{"t":"cont","v":"{\"txpk_ack\":","vt":"str"}],"checkall":"false","repair":false,"outputs":4,"x":300,"y":280,"wires":[["b9fec3e6.6484a"],["81f4e59c.f411d8"],["334fc1d9.4d0ade"],["c8129112.95828"]]},{"id":"81f4e59c.f411d8","type":"function","z":"7eb27ef8.b499a","name":"Get rxpk json","func":"var from_idx = msg.payload.indexOf(\"rxpk\") - 2;\nvar to_idx = msg.payload.indexOf(\"}]}\") + 3;\nvar jsonstr = msg.payload.substring(from_idx, to_idx);\nvar newmsg = {payload: jsonstr};\nreturn newmsg;","outputs":1,"noerr":0,"x":510,"y":260,"wires":[["d2e347d.cff36b8"]]},{"id":"d2e347d.cff36b8","type":"debug","z":"7eb27ef8.b499a","name":"Type debug","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":750,"y":260,"wires":[]},{"id":"334fc1d9.4d0ade","type":"function","z":"7eb27ef8.b499a","name":"Get txpk json","func":"var from_idx = msg.payload.indexOf(\"txpk\") - 2;\nvar to_idx = msg.payload.indexOf(\"}}\") + 2;\nvar jsonstr = msg.payload.substring(from_idx, to_idx);\nvar newmsg = {payload: jsonstr};\nreturn newmsg;","outputs":1,"noerr":0,"x":510,"y":300,"wires":[["d2e347d.cff36b8"]]},{"id":"c8129112.95828","type":"function","z":"7eb27ef8.b499a","name":"Get txpk_ack json","func":"var from_idx = msg.payload.indexOf(\"txpk_ack\") - 2;\nvar to_idx = msg.payload.indexOf(\"}}\") + 2;\nvar jsonstr = msg.payload.substring(from_idx, to_idx);\nvar newmsg = {payload: jsonstr};\nreturn newmsg;","outputs":1,"noerr":0,"x":530,"y":340,"wires":[["d2e347d.cff36b8"]]},{"id":"b9fec3e6.6484a","type":"function","z":"7eb27ef8.b499a","name":"Get stat json","func":"var from_idx = msg.payload.indexOf(\"stat\") - 2;\nvar to_idx = msg.payload.indexOf(\"}}\") + 2;\nvar jsonstr = msg.payload.substring(from_idx, to_idx);\nvar newmsg = {payload: jsonstr};\nreturn newmsg;","outputs":1,"noerr":0,"x":510,"y":220,"wires":[["d2e347d.cff36b8"]]},{"id":"3a1adc4e.375694","type":"tcp in","z":"7eb27ef8.b499a","name":"tcpdump","server":"server","host":"","port":"8888","datamode":"stream","datatype":"utf8","newline":"","topic":"","base64":false,"x":80,"y":280,"wires":[["70ed5fd9.1965e","b6b12204.511ea"]]},{"id":"1e0ce4e5.33240b","type":"comment","z":"7eb27ef8.b499a","name":"Capture rxpk, stat, txpk and txpk_ack JSON objects","info":"The flow only captures stat, rxpk, txpk and \ntxpk_ack JSON objects between a gateway and \nLoRaWAN Network server.\n\nMore information, see:\nLoRa/LoRaWAN tutorial 29\nhttps://www.mobilefish.com/developer/lorawan/lorawan_quickguide_tutorial.html\n\nTo make this flow work:\n- Install Node-Red on a Raspberry Pi based\n  LoRaWAN gateway (eg: using RAK831 concentrator)\n- On the Raspberry Pi, execute command:\n  sudo tcpdump -Alqn port 1700 | nc localhost 8888 &","x":230,"y":140,"wires":[]}]