[{"id":"10fe1b2e9cb3feb2","type":"decode","z":"23dbb1ee.bc2e8e","name":"decode Protobuf","protofile":"a0d4288141f6a629","protoType":"ServiceEnvelope","x":295.5,"y":285,"wires":[["d3e396cf4f0a9608","d08865b41a69d85d","6f592d47b6a2eac4"]]},{"id":"40c9ee66fe7a34cb","type":"function","z":"23dbb1ee.bc2e8e","name":"function get the message as string from TEXT_MESSAGE_APP","func":"msg.payload = msg.payload.packet.decoded.payload;\n\nlet bufferObj = Buffer.from(msg.payload, \"base64\");\nlet decodedString = bufferObj.toString(\"utf8\");\nmsg.payload = decodedString;\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":410.5,"y":450,"wires":[["553374591214eaca"]]},{"id":"553374591214eaca","type":"debug","z":"23dbb1ee.bc2e8e","name":"text message out","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":762.5,"y":449,"wires":[]},{"id":"c6afbb9f1665b162","type":"debug","z":"23dbb1ee.bc2e8e","name":"channelId","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":785.5,"y":257,"wires":[]},{"id":"607ef387d5701985","type":"debug","z":"23dbb1ee.bc2e8e","name":"gatewayId","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":792.5,"y":293,"wires":[]},{"id":"d3e396cf4f0a9608","type":"debug","z":"23dbb1ee.bc2e8e","name":"entire payload","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":296.5,"y":247,"wires":[]},{"id":"2339b328bb9bb1d8","type":"comment","z":"23dbb1ee.bc2e8e","name":"Decode all cleartext text and position messages sent by Meshtastic devices into JSON without relying on JSON conversion on the device.","info":"","x":515.5,"y":214,"wires":[]},{"id":"408d796d997bb832","type":"function","z":"23dbb1ee.bc2e8e","name":"function get the nested payload as base64","func":"msg.payload = msg.payload.packet.decoded.payload;\n\nlet bufferObj = Buffer.from(msg.payload, \"base64\");\n//let decodedString = bufferObj.toString(\"hex\");\nmsg.payload = bufferObj;\nmsg.topic=\"\";\n//if you don't zero out the protubufTopic it will try to\n//decode it as part of the mqtt service envelope instead\n//of two-stage decoding\nmsg.protobufType=null;\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":349,"y":552,"wires":[["9435a3c605efedb4","1ed6f96c8214d7b3"]]},{"id":"61995c9f8e8266b3","type":"debug","z":"23dbb1ee.bc2e8e","name":"portnum","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":784.5,"y":330,"wires":[]},{"id":"9435a3c605efedb4","type":"debug","z":"23dbb1ee.bc2e8e","name":"nested payload","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":281.5,"y":603,"wires":[]},{"id":"b832775d386f7ac9","type":"mqtt in","z":"23dbb1ee.bc2e8e","name":"","topic":"msh/+/c/#","qos":"2","datatype":"buffer","broker":"37cadac381653b1e","nl":false,"rap":true,"rh":0,"inputs":0,"x":117.5,"y":286,"wires":[["10fe1b2e9cb3feb2"]]},{"id":"d08865b41a69d85d","type":"switch","z":"23dbb1ee.bc2e8e","name":"switch manual decoding nested message based on portum","property":"payload.packet.decoded.portnum","propertyType":"msg","rules":[{"t":"eq","v":"TEXT_MESSAGE_APP","vt":"str"},{"t":"eq","v":"POSITION_APP","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":281.5,"y":505,"wires":[["40c9ee66fe7a34cb"],["408d796d997bb832"]]},{"id":"8abb1bb458af2c4f","type":"change","z":"23dbb1ee.bc2e8e","name":"","rules":[{"t":"set","p":"gatewayId","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1021.5,"y":288,"wires":[[]]},{"id":"1ced0be28eeef0d3","type":"change","z":"23dbb1ee.bc2e8e","name":"","rules":[{"t":"set","p":"latitude","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1026.5,"y":407,"wires":[[]]},{"id":"313fd3cfe6d91850","type":"change","z":"23dbb1ee.bc2e8e","name":"","rules":[{"t":"set","p":"longitude","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1036.5,"y":450,"wires":[["d02e53cdfb565da6"]]},{"id":"33dd43e3c05f826c","type":"geofence","z":"23dbb1ee.bc2e8e","name":"geofence","mode":"circle","inside":"true","rad":69174.91569647488,"points":[],"centre":{"latitude":40.16287050252407,"longitude":-86.60385131835938},"floor":"","ceiling":"","worldmap":true,"outputs":2,"x":1202.5,"y":595,"wires":[[],["4d01eb8f1b31f039"]]},{"id":"d02e53cdfb565da6","type":"function","z":"23dbb1ee.bc2e8e","name":"trigger function to send a mapping point","func":"let lat = parseFloat(flow.get(\"latitude\"));\nlet lon = parseFloat(flow.get(\"longitude\"));\nlat=lat * 0.0000001;\nlon=lon * 0.0000001;\nlet name = flow.get(\"from\")\n\nmsg={\"payload\":{\"name\":name,\n \"lat\":lat,\n  \"lon\":lon,\n   \"action\":\"send\",\n   \"icon\": \"car\",\n   \"label\":name\n   }}\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1181.5,"y":520,"wires":[["33dd43e3c05f826c","4d01eb8f1b31f039"]]},{"id":"4d01eb8f1b31f039","type":"worldmap","z":"23dbb1ee.bc2e8e","name":"","lat":"40","lon":"-86","zoom":"7","layer":"OSMG","cluster":"","maxage":"","usermenu":"show","layers":"show","panit":"false","panlock":"false","zoomlock":"false","hiderightclick":"false","coords":"none","showgrid":"false","showruler":"false","allowFileDrop":"false","path":"/worldmap","overlist":"DR,CO,RA,DN,HM","maplist":"OSMG,OSMC,EsriC,EsriS,EsriT,EsriDG,UKOS","mapname":"","mapurl":"","mapopt":"","mapwms":false,"x":1206.5,"y":675,"wires":[]},{"id":"1ed6f96c8214d7b3","type":"decode","z":"23dbb1ee.bc2e8e","name":"decode Position Protobuf","protofile":"dbab6472b07929a0","protoType":"Position","x":667.5,"y":548,"wires":[["db1933ba36503bd9","dad9f487318f21d9"]]},{"id":"db1933ba36503bd9","type":"debug","z":"23dbb1ee.bc2e8e","name":"Position decoded","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":673.5,"y":607,"wires":[]},{"id":"dad9f487318f21d9","type":"function","z":"23dbb1ee.bc2e8e","name":"Split","func":"var lat = { payload: msg.payload.latitudeI };\nvar lon = { payload: msg.payload.longitudeI };\nvar alt = { payload: msg.payload.altitude };\nvar tm = { payload: msg.payload.time };\n\nreturn [lat,lon,alt,tm];","outputs":4,"noerr":0,"initialize":"","finalize":"","libs":[],"x":875.5,"y":549,"wires":[["1ced0be28eeef0d3","8bb97f802662976c"],["313fd3cfe6d91850","c8e135f3e542bb1b"],["602fb2020680280c"],["ed424ae3d45dd2ac"]]},{"id":"8bb97f802662976c","type":"debug","z":"23dbb1ee.bc2e8e","name":"lat","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1017.5,"y":583,"wires":[]},{"id":"c8e135f3e542bb1b","type":"debug","z":"23dbb1ee.bc2e8e","name":"lon","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1018.5,"y":618,"wires":[]},{"id":"602fb2020680280c","type":"debug","z":"23dbb1ee.bc2e8e","name":"alt","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1017.5,"y":654,"wires":[]},{"id":"ed424ae3d45dd2ac","type":"debug","z":"23dbb1ee.bc2e8e","name":"time","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1018.5,"y":688,"wires":[]},{"id":"6f592d47b6a2eac4","type":"function","z":"23dbb1ee.bc2e8e","name":"Split Decoded 1","func":"var channelId = { payload: msg.payload.channelId};\nvar gatewayId = { payload: msg.payload.gatewayId};\nvar portnum = { payload: msg.payload.packet.decoded.portnum};\nvar fr= {payload: \"!\" + msg.payload.packet.from.toString(16)};\nvar to = {payload:\"!\"+ msg.payload.packet.to.toString(16)};\n\nreturn [channelId, gatewayId, portnum, fr, to ];","outputs":5,"noerr":0,"initialize":"","finalize":"","libs":[],"x":577.5,"y":294,"wires":[["c6afbb9f1665b162"],["607ef387d5701985","8abb1bb458af2c4f"],["61995c9f8e8266b3"],["fd881fac22422773","a389f9875da672ec"],["cf066ad415df30ae"]]},{"id":"fd881fac22422773","type":"debug","z":"23dbb1ee.bc2e8e","name":"from","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":772.5,"y":365,"wires":[]},{"id":"cf066ad415df30ae","type":"debug","z":"23dbb1ee.bc2e8e","name":"to","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":771.5,"y":399,"wires":[]},{"id":"a389f9875da672ec","type":"change","z":"23dbb1ee.bc2e8e","name":"set flow.from","rules":[{"t":"set","p":"from","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1012.5,"y":364,"wires":[[]]},{"id":"a0d4288141f6a629","type":"protobuf-file","protopath":"E:\\Meshtastic-protobufs-master\\mqtt.proto","watchFile":true,"keepCase":false},{"id":"37cadac381653b1e","type":"mqtt-broker","name":"","broker":"192.168.2.45","port":"1883","clientid":"","autoConnect":true,"usetls":false,"protocolVersion":"4","keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","birthMsg":{},"closeTopic":"","closeQos":"0","closePayload":"","closeMsg":{},"willTopic":"","willQos":"0","willPayload":"","willMsg":{},"userProps":"","sessionExpiry":""},{"id":"dbab6472b07929a0","type":"protobuf-file","protopath":"E:\\Meshtastic-protobufs-master\\mesh.proto","watchFile":true,"keepCase":false}]