OpenCollar Chirpstack Uplink to InfluxDB
This is an example flow to save the decoded LoRaWAN payloads from OpenCollar sensors coming from Chirpstack to an InfluxDB. It also includes an example to post the incoming GPS points onto the Worldmap UI.
[{"id":"3782bad2.c55a06","type":"tab","label":"Chirpstack Uplink - Influx","disabled":false,"info":""},{"id":"3df0705c.3b30d","type":"tab","label":"Device Status","disabled":false,"info":""},{"id":"3a0cc9cd.c3a336","type":"tab","label":"Device Settings","disabled":false,"info":""},{"id":"65ef8841.77c9b8","type":"tab","label":"GPS","disabled":false,"info":""},{"id":"80f9ae4e.b1ea9","type":"tab","label":"Chirpstack Downlink","disabled":false,"info":""},{"id":"befa85f8.1c9048","type":"tab","label":"Date Time Header","disabled":false,"info":""},{"id":"431e803c.eeca5","type":"tab","label":"PI Monitoring","disabled":false,"info":""},{"id":"f3e95926.91ba48","type":"mqtt-broker","z":"","name":"Chirpstack","broker":"localhost","port":"1883","clientid":"","usetls":false,"compatmode":false,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"63062e32.105d8","type":"influxdb","z":"","hostname":"127.0.0.1","port":"8086","protocol":"http","database":"chirpstack","name":"","usetls":false,"tls":""},{"id":"995908e6.128808","type":"ui_group","z":"","name":"Device","tab":"f17a80bd.56401","order":1,"disp":true,"width":"6","collapse":false},{"id":"368002f4.1520be","type":"ui_group","z":"","name":"Status","tab":"f17a80bd.56401","order":2,"disp":true,"width":"6","collapse":true},{"id":"f17a80bd.56401","type":"ui_tab","z":"","name":"Device Status","icon":"dashboard","order":2,"disabled":false,"hidden":false},{"id":"da786df7.25b7c","type":"ui_group","z":"","name":"Device","tab":"93cdf517.e87618","order":1,"disp":true,"width":"6","collapse":false},{"id":"103ad82.1d15028","type":"ui_group","z":"","name":"Payload","tab":"93cdf517.e87618","order":4,"disp":true,"width":"6","collapse":true},{"id":"b45ffede.94462","type":"ui_group","z":"","name":"Set Settings","tab":"93cdf517.e87618","order":3,"disp":true,"width":"6","collapse":true},{"id":"830c0558.d558c8","type":"ui_group","z":"","name":"Device Settings","tab":"93cdf517.e87618","order":2,"disp":true,"width":"6","collapse":true},{"id":"93cdf517.e87618","type":"ui_tab","z":"","name":"Settings","icon":"dashboard","order":5,"disabled":false,"hidden":false},{"id":"fe8b6129.f0b8d","type":"ui_group","z":"","name":"GPS","tab":"f95c78be.033988","order":2,"disp":true,"width":"6","collapse":false},{"id":"59290151.09a4","type":"ui_group","z":"","name":"Device","tab":"f95c78be.033988","order":1,"disp":true,"width":"6","collapse":false},{"id":"f95c78be.033988","type":"ui_tab","z":"","name":"GPS","icon":"dashboard","order":3,"disabled":false,"hidden":false},{"id":"6cbac061.124d8","type":"ui_base","theme":{"name":"theme-light","lightTheme":{"default":"#0094CE","baseColor":"#0094CE","baseFont":"-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif","edited":true,"reset":false},"darkTheme":{"default":"#097479","baseColor":"#097479","baseFont":"-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif","edited":false},"customTheme":{"name":"Untitled Theme 1","default":"#4B7930","baseColor":"#4B7930","baseFont":"-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif"},"themeState":{"base-color":{"default":"#0094CE","value":"#0094CE","edited":false},"page-titlebar-backgroundColor":{"value":"#0094CE","edited":false},"page-backgroundColor":{"value":"#fafafa","edited":false},"page-sidebar-backgroundColor":{"value":"#ffffff","edited":false},"group-textColor":{"value":"#1bbfff","edited":false},"group-borderColor":{"value":"#ffffff","edited":false},"group-backgroundColor":{"value":"#ffffff","edited":false},"widget-textColor":{"value":"#111111","edited":false},"widget-backgroundColor":{"value":"#0094ce","edited":false},"widget-borderColor":{"value":"#ffffff","edited":false},"base-font":{"value":"-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif"}},"angularTheme":{"primary":"indigo","accents":"blue","warn":"red","background":"grey"}},"site":{"name":"Smart Parks - OpenCollar","hideToolbar":"false","allowSwipe":"false","lockMenu":"false","allowTempTheme":"true","dateFormat":"DD/MM/YYYY","sizes":{"sx":48,"sy":48,"gx":6,"gy":6,"cx":6,"cy":6,"px":0,"py":0}}},{"id":"412fe6ee.a97828","type":"ui_group","z":"","name":"Downlinks","tab":"5f08ef21.6653e","order":2,"disp":true,"width":"6","collapse":true},{"id":"d15f0f1c.ba804","type":"ui_group","z":"","name":"Device","tab":"5f08ef21.6653e","order":1,"disp":true,"width":"6","collapse":false},{"id":"5f08ef21.6653e","type":"ui_tab","z":"","name":"Downlinks","icon":"dashboard","order":4,"disabled":false,"hidden":false},{"id":"54019f73.373b1","type":"ui_group","z":"","name":"Status","tab":"","order":1,"disp":true,"width":"6","collapse":true},{"id":"1dac2c4a.c55ea4","type":"ui_group","z":"","name":"GPS Status","tab":"f17a80bd.56401","order":3,"disp":true,"width":"6","collapse":true},{"id":"2e1407dd.d20e48","type":"ui_group","z":"","name":"History","tab":"f17a80bd.56401","order":6,"disp":true,"width":"6","collapse":true},{"id":"f9910386.13dc6","type":"ui_group","z":"","name":"hidden_group","tab":"8fd2c0e8.d5d07","order":1,"disp":false,"width":"6","collapse":false},{"id":"8fd2c0e8.d5d07","type":"ui_tab","z":"","name":"Zooland Sys","icon":"home","order":1,"disabled":false,"hidden":false},{"id":"57d907e3.e13e08","type":"ui_group","z":"","name":"Status","tab":"","order":2,"disp":true,"width":"6","collapse":true},{"id":"d600d109.b8998","type":"ui_group","z":"","name":"Col1","tab":"15f9e61e.48686a","order":1,"disp":false,"width":"6"},{"id":"f82859f8.de6088","type":"ui_group","z":"","name":"Actions","tab":"15f9e61e.48686a","order":4,"disp":true,"width":"6"},{"id":"907f2b7d.1eea18","type":"ui_group","z":"","name":"Col2","tab":"15f9e61e.48686a","order":2,"disp":false,"width":"6"},{"id":"8b29f1c7.7244a","type":"ui_group","z":"","name":"Col3","tab":"15f9e61e.48686a","order":3,"disp":false,"width":"6"},{"id":"15f9e61e.48686a","type":"ui_tab","z":"","name":"RPi Control","icon":"dashboard","order":6},{"id":"a521521b.35bb4","type":"ui_group","z":"","name":"History","tab":"f95c78be.033988","order":4,"disp":true,"width":"6","collapse":true},{"id":"9adf494e.5e2698","type":"ui_group","z":"","name":"Motion","tab":"f17a80bd.56401","order":4,"disp":true,"width":"6","collapse":true},{"id":"cab10c77.fc4ce","type":"ui_group","z":"","name":"System","tab":"f17a80bd.56401","order":5,"disp":true,"width":"6","collapse":true},{"id":"70f10480.a015ec","type":"ui_group","z":"","name":"Map control","tab":"f95c78be.033988","order":5,"disp":true,"width":"6","collapse":true},{"id":"c0a7ddad.6179e","type":"ui_group","z":"","name":"GPS logs","tab":"f95c78be.033988","order":6,"disp":true,"width":"6","collapse":true},{"id":"122b419b.3bbade","type":"ui_group","z":"","name":"Last Location","tab":"f95c78be.033988","order":3,"disp":true,"width":"6","collapse":true},{"id":"b9a2eafb.d93318","type":"mqtt in","z":"3782bad2.c55a06","name":"Uplink Events","topic":"application/1/device/+/rx","qos":"2","datatype":"json","broker":"f3e95926.91ba48","x":210,"y":140,"wires":[["31e0c4f8.24c37c"]]},{"id":"31e0c4f8.24c37c","type":"json","z":"3782bad2.c55a06","name":"Convert ObjectJSON","property":"payload.objectJSON","action":"","pretty":false,"x":440,"y":140,"wires":[["74c043f9.8f936c","81b457c8.60cbf8"]]},{"id":"74c043f9.8f936c","type":"function","z":"3782bad2.c55a06","name":"Prepare payload messages","func":"//function to store EUI as hex string\nlet encoded = msg.payload.devEUI;\nhexEUI = Buffer.from(encoded, \"base64\").toString(\"hex\");\n\n// First object will be written in fields,\n// second one in tags\n\nif(msg.payload.fPort == 1)\n{\n //Message structure for port 1 messages\n msg.payload = [{\n name: msg.payload.deviceName,\n eui: hexEUI,\n alt: msg.payload.objectJSON.alt,\n epe: msg.payload.objectJSON.epe,\n hdop: msg.payload.objectJSON.hdop,\n lat: msg.payload.objectJSON.lat,\n lon: msg.payload.objectJSON.lon,\n lux: msg.payload.objectJSON.lux,\n motion: msg.payload.objectJSON.motion,\n port: msg.payload.fPort,\n satellites: msg.payload.objectJSON.satellites,\n snr: msg.payload.objectJSON.snr,\n time_to_fix: msg.payload.objectJSON.time_to_fix\n },\n { \n devId: msg.payload.deviceName\n }]\n}\nelse if(msg.payload.fPort == 12)\n{\n //Message structure for port 1 messages\n msg.payload = [{\n name: msg.payload.deviceName,\n eui: hexEUI,\n battery: msg.payload.objectJSON.battery,\n battery_low: msg.payload.objectJSON.battery_low,\n port: msg.payload.fPort,\n resetCause: msg.payload.objectJSON.resetCause,\n accelerometer_error: msg.payload.objectJSON.system_functions_errors.accelerometer_error,\n gps_fix_error: msg.payload.objectJSON.system_functions_errors.gps_fix_error,\n gps_periodic_error: msg.payload.objectJSON.system_functions_errors.gps_periodic_error,\n gps_triggered_error: msg.payload.objectJSON.system_functions_errors.gps_triggered_error,\n gps_on_time_total: msg.payload.objectJSON.gps_on_time_total,\n //humidity_error: msg.payload.objectJSON.system_functions_errors.humidity_error,\n charging_status: msg.payload.objectJSON.system_functions_errors.charging_status,\n //pressure_error: msg.payload.objectJSON.system_functions_errors.charging_error,\n //temperature_error: msg.payload.objectJSON.system_functions_errors.temperature_error,\n temperature: msg.payload.objectJSON.temperature,\n accelx: msg.payload.objectJSON.accelx,\n accely: msg.payload.objectJSON.accely,\n accelz: msg.payload.objectJSON.accelz,\n //lat: msg.payload.objectJSON.lat,\n //lon: msg.payload.objectJSON.lon,\n //time_to_fix: msg.payload.objectJSON.time_to_fix,\n gps_resend: msg.payload.objectJSON.gps_resend\n },\n { \n devId: msg.payload.deviceName\n }]\n}\nelse if(msg.payload.fPort == 2)\n{\n //Message structure for port 2 messages\n msg.payload = [{\n battery: msg.payload.objectJSON.battery,\n battery_low: msg.payload.objectJSON.battery_low,\n port: msg.payload.fPort,\n resetCause: msg.payload.objectJSON.resetCause,\n accelerometer_error: msg.payload.objectJSON.system_functions_errors.accelerometer_error,\n gps_fix_error: msg.payload.objectJSON.system_functions_errors.gps_fix_error,\n gps_periodic_error: msg.payload.objectJSON.system_functions_errors.gps_periodic_error,\n gps_triggered_error: msg.payload.objectJSON.system_functions_errors.gps_triggered_error,\n humidity_error: msg.payload.objectJSON.system_functions_errors.humidity_error,\n light_error: msg.payload.objectJSON.system_functions_errors.light_error,\n pressure_error: msg.payload.objectJSON.system_functions_errors.pressure_error,\n temperature_error: msg.payload.objectJSON.system_functions_errors.temperature_error,\n temperature: msg.payload.objectJSON.temperature,\n vbus: msg.payload.objectJSON.vbus\n },\n { \n devId: msg.payload.deviceName\n }]\n}\nelse if(msg.payload.fPort == 3)\n{\n //Message structure for port 3 messages\n msg.payload = [{\n name: msg.payload.deviceName,\n eui: hexEUI,\n port: msg.payload.fPort,\n //gps_settings\n\tgps_min_ehpe:\t\t\tmsg.payload.objectJSON.gps_min_ehpe,\n\td3_fix: \tmsg.payload.objectJSON.gps_settings.d3_fix,\n hot_fix: \tmsg.payload.objectJSON.gps_settings.hot_fix,\n fail_backoff: msg.payload.objectJSON.gps_settings.fail_backoff,\n fully_resolved: msg.payload.objectJSON.gps_settings.fully_resolved,\n gps_charge_min: \t\tmsg.payload.objectJSON.gps_charge_min,\n gps_fail_retry:\t\t\tmsg.payload.objectJSON.gps_fail_retry,\n\tgps_min_fix_time:\t\tmsg.payload.objectJSON.gps_min_fix_time,\n\t//system_functions:\n\tgps_hot_fix:\t\t\tmsg.payload.objectJSON.system_functions.gps_hot_fix,\n\tgps_periodic:\t\t\tmsg.payload.objectJSON.system_functions.gps_periodic,\n\tgps_triggered: \t\t\tmsg.payload.objectJSON.system_functions.gps_triggered,\n\tlight_enabled: \t\t\tmsg.payload.objectJSON.system_functions.light_enabled,\n\tcharging_enabled: \t\tmsg.payload.objectJSON.system_functions.charging_enabled,\n\thumidity_enabled: \t\tmsg.payload.objectJSON.system_functions.humidity_enabled,\n\ttemperature_enabled: \tmsg.payload.objectJSON.system_functions.temperature_enabled,\n\taccelerometer_enabled:\tmsg.payload.objectJSON.system_functions.accelerometer_enabled,\n\tgps_hot_fix_retry:\t\tmsg.payload.objectJSON.gps_hot_fix_retry,\n\tsystem_charge_max:\t\tmsg.payload.objectJSON.system_charge_max,\n\tsystem_charge_min: \t\tmsg.payload.objectJSON.system_charge_min,\n\tgps_cold_fix_retry: \tmsg.payload.objectJSON.gps_cold_fix_retry,\n\tgps_hot_fix_timeout: \tmsg.payload.objectJSON.gps_hot_fix_timeout,\n\tgps_cold_fix_timeout: \tmsg.payload.objectJSON.gps_cold_fix_timeout,\n\t//lorawan_datarate_adr: \n\tadr: \t\t\t\t\tmsg.payload.objectJSON.lorawan_datarate_adr.adr,\n\tdatarate: \t\t\t\tmsg.payload.objectJSON.lorawan_datarate_adr.datarate,\n\tconfirmed_uplink:\t\tmsg.payload.objectJSON.lorawan_datarate_adr.confirmed_uplink,\n\tgps_periodic_interval: \tmsg.payload.objectJSON.gps_periodic_interval,\n\tgps_triggered_duration: msg.payload.objectJSON.gps_triggered_duration,\n\tgps_triggered_interval: msg.payload.objectJSON.gps_triggered_interval,\n\tsystem_status_interval: msg.payload.objectJSON.system_status_interval,\n\tgps_triggered_threshold:msg.payload.objectJSON.gps_triggered_threshold,\n\tsystem_input_charge_min:msg.payload.objectJSON.system_input_charge_min, \n\tsystem_voltage_interval:msg.payload.objectJSON.system_voltage_interval\n },\n { \n devId: msg.payload.deviceName\n }]\n}\nelse if(msg.payload.fPort == 11)\n{\n //For this port message we have to read 5 different locations, \n //each one with its own timestamp, format it and sent it into Influxdb node. \n //Influxdb enables us to write several points at once,\n //as seen on node-red documentation website \n // https://flows.nodered.org/node/node-red-contrib-influxdb) \n\n // If msg.payload is an array of arrays, it will be written as a series of points containing fields and tags.\n\n //That means that we need 5 arrays, each will contain two objects. \n // First object will contain value fields that we would like to write (lat and lon in this case), \n // second object will contain dev id as usual.\n // We also need time value in first object because each lat and lon pair has different timestamps.\n // Injected epoch timestamp needs to be 19 digits in order to work with Grafana.\n\n // Below code creates functionality that is described above:\n\n \n // Locations actualy contains a string not an js object so we need to parse it first.\n var parsed_locations = JSON.parse(msg.payload.objectJSON.locations)\n \n var device_id = msg.payload.deviceName\n \n var parsed_port = msg.payload.fPort\n \n //clear up payload, we will get our data from payload_fields\n msg.payload = []\n \n //iterate through payload_fields, there should be only 5 packets, but we can make this universal\n for (i = 0; i < parsed_locations.length; i++)\n {\n \n // Make sure that time is correct length so that grafana accepts it\n var epoch_number = parsed_locations[i].time\n var epoch_length = epoch_number.toString().length\n var power_of_ten = 19 - epoch_length\n var correct_grafana_epoch = epoch_number * Math.pow(10, power_of_ten)\n\n //fill up packet that we will push into our msg.payload object\n var lat_lon_packet = [{\n name: msg.payload.deviceName,\n eui: hexEUI,\n port: parsed_port,\n lat: parsed_locations[i].lat,\n lon: parsed_locations[i].lon,\n time: correct_grafana_epoch\n },\n {\n devId: msg.payload.deviceName\n }]\n \n msg.payload.push(lat_lon_packet)\n }\n}\nreturn msg;","outputs":1,"noerr":0,"x":720,"y":140,"wires":[["219bb6ca.548ada"]]},{"id":"219bb6ca.548ada","type":"function","z":"3782bad2.c55a06","name":"Drop bad gps","func":"if(msg.payload.fPort == 11)\n{\n for (i = 0; i < msg.payload.length; i++)\n {\n if(msg.payload[i].lat === 0 || msg.payload[i].lon === 0)\n {\n delete msg.payload[i].lat;\n delete msg.payload[i].lon;\n }\n }\n}\nelse\n{\n if(msg.payload[0].lat === 0 || msg.payload[0].lon === 0 || msg.payload[0].time_to_fix === 0|| msg.payload[0].epe === 0 )\n {\n delete msg.payload[0].lat;\n delete msg.payload[0].lon;\n delete msg.payload[0].time_to_fix;\n }\n}\nreturn msg;","outputs":1,"noerr":0,"x":980,"y":140,"wires":[["53ef6a1.c513694","f4c79f81.3e055","d559fd68.90d65","9682b96e.a31428"]]},{"id":"2765b808.5a6eb8","type":"comment","z":"3782bad2.c55a06","name":"This flow subscribes to the OpenCollar mqtt stream of Chirpstack and stores them into an Influx database","info":"","x":500,"y":100,"wires":[]},{"id":"806dcb44.ecbbb8","type":"comment","z":"3782bad2.c55a06","name":"Change the application #ID to the one that is used for OpenCollar sensors","info":"","x":400,"y":200,"wires":[]},{"id":"9682b96e.a31428","type":"debug","z":"3782bad2.c55a06","name":"Uplink to Chirpstack","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":1200,"y":200,"wires":[]},{"id":"81b457c8.60cbf8","type":"debug","z":"3782bad2.c55a06","name":"RAW Uplink JSON","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":690,"y":240,"wires":[]},{"id":"ce3baed.1fc155","type":"comment","z":"3782bad2.c55a06","name":"This part will show all vallid incomming GPS tracks on the /wordmap UI","info":"","x":1350,"y":340,"wires":[]},{"id":"53ef6a1.c513694","type":"influxdb out","z":"3782bad2.c55a06","influxdb":"63062e32.105d8","name":"Chirpstack","measurement":"datapackets","precision":"","retentionPolicy":"","x":1170,"y":140,"wires":[]},{"id":"d559fd68.90d65","type":"worldmap","z":"3782bad2.c55a06","name":"Trackers","lat":"52.11109","lon":"5.13236","zoom":"","layer":"OSM grey","cluster":"","maxage":"","usermenu":"show","layers":"show","panit":"false","panlock":"false","zoomlock":"false","hiderightclick":"false","coords":"deg","showgrid":"false","path":"/worldmap","x":1160,"y":420,"wires":[]},{"id":"f4c79f81.3e055","type":"worldmap-tracks","z":"3782bad2.c55a06","name":"Tracks","depth":"100","layer":"separate","x":1150,"y":380,"wires":[["d559fd68.90d65"]]},{"id":"78459f80.06b84","type":"comment","z":"3df0705c.3b30d","name":"Get the list of sensors in the Influx Database","info":"","x":310,"y":80,"wires":[]},{"id":"72c09bf8.8cc0c4","type":"function","z":"3df0705c.3b30d","name":"Device Name List","func":"msg.query = \"SHOW TAG VALUES WITH KEY = devId;\";\nreturn msg;","outputs":1,"noerr":0,"x":410,"y":120,"wires":[["aa875940.5a29c8"]]},{"id":"aa875940.5a29c8","type":"influxdb in","z":"3df0705c.3b30d","influxdb":"63062e32.105d8","name":"Chirpstack","query":"","rawOutput":false,"precision":"","retentionPolicy":"","x":710,"y":120,"wires":[["d3d1b217.5867a","b515d798.d0eac8"]]},{"id":"d3d1b217.5867a","type":"change","z":"3df0705c.3b30d","name":"Options","rules":[{"t":"set","p":"options","pt":"msg","to":"$.payload.value[]","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":880,"y":120,"wires":[["1b63c0fc.33c8af","7d3939a7.21bab8"]]},{"id":"b515d798.d0eac8","type":"debug","z":"3df0705c.3b30d","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":890,"y":180,"wires":[]},{"id":"1b63c0fc.33c8af","type":"ui_dropdown","z":"3df0705c.3b30d","name":"Device list","label":"","tooltip":"Select device by name","place":"Select device","group":"995908e6.128808","order":1,"width":0,"height":0,"passthru":false,"multiple":false,"options":[],"payload":"","topic":"","x":1190,"y":120,"wires":[["d5089966.cf9d78","8022b650.a662b8"]]},{"id":"7d3939a7.21bab8","type":"debug","z":"3df0705c.3b30d","name":"Options","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":1180,"y":180,"wires":[]},{"id":"d5089966.cf9d78","type":"debug","z":"3df0705c.3b30d","name":"Device dropdown","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":1400,"y":120,"wires":[]},{"id":"8022b650.a662b8","type":"change","z":"3df0705c.3b30d","name":"","rules":[{"t":"set","p":"deviceName","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1420,"y":180,"wires":[["9ec99d15.87b6e"]]},{"id":"5a98e220.0b364c","type":"function","z":"3df0705c.3b30d","name":"Device Status","func":"var devName = flow.get(\"deviceName\");\nmsg.query = \"select * from datapackets where devId = '\"+ devName +\"' AND battery > 0 AND port = 12 ORDER BY time ASC;\";\nreturn msg;","outputs":1,"noerr":0,"x":460,"y":520,"wires":[["76aa0158.a9c6b","1f448421.0c342c"]]},{"id":"76aa0158.a9c6b","type":"influxdb in","z":"3df0705c.3b30d","influxdb":"63062e32.105d8","name":"Chirpstack","query":"","rawOutput":false,"precision":"","retentionPolicy":"","x":770,"y":520,"wires":[["ad3fa4e.b74a158","910fba70.aacf68","9e210694.f822b8","e77c3eb7.bb185","24f5e7cd.ae42e8"]]},{"id":"ad3fa4e.b74a158","type":"split","z":"3df0705c.3b30d","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"payload","x":950,"y":520,"wires":[["fbf114c7.39d968","22654297.35e4de","ec77f66b.db21f8"]]},{"id":"92b847dd.f04d98","type":"change","z":"3df0705c.3b30d","name":"Battery","rules":[{"t":"move","p":"payload.battery","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1260,"y":680,"wires":[["4565f717.a8e3b8"]]},{"id":"fbf114c7.39d968","type":"change","z":"3df0705c.3b30d","name":"accelx","rules":[{"t":"move","p":"payload.accelx","pt":"msg","to":"payload","tot":"msg"},{"t":"set","p":"topic","pt":"msg","to":"x","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1250,"y":520,"wires":[["50b0baad.1852c4"]]},{"id":"22654297.35e4de","type":"change","z":"3df0705c.3b30d","name":"accely","rules":[{"t":"move","p":"payload.accely","pt":"msg","to":"payload","tot":"msg"},{"t":"set","p":"topic","pt":"msg","to":"y","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1250,"y":560,"wires":[["50b0baad.1852c4"]]},{"id":"ec77f66b.db21f8","type":"change","z":"3df0705c.3b30d","name":"accelz","rules":[{"t":"move","p":"payload.accelz","pt":"msg","to":"payload","tot":"msg"},{"t":"set","p":"topic","pt":"msg","to":"z","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1250,"y":600,"wires":[["50b0baad.1852c4"]]},{"id":"4565f717.a8e3b8","type":"ui_gauge","z":"3df0705c.3b30d","name":"Battery Level","group":"368002f4.1520be","order":6,"width":0,"height":0,"gtype":"gage","title":"Battery_level","label":"Volt","format":"{{value/1000}}","min":0,"max":"5000","colors":["#ff0000","#e6e600","#00ff00"],"seg1":"2000","seg2":"3000","x":1530,"y":680,"wires":[]},{"id":"910fba70.aacf68","type":"ui_table","z":"3df0705c.3b30d","group":"2e1407dd.d20e48","name":"Status history","order":1,"width":"6","height":"11","columns":[{"field":"time","title":"time","width":"60%","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"gps_fix_error","title":"GPS fix error","width":"","align":"center","formatter":"tickCross","formatterParams":{"target":"_blank"}},{"field":"gps_periodic_error","title":"GPS periodic fix error","width":"","align":"center","formatter":"tickCross","formatterParams":{"target":"_blank"}}],"outputs":0,"cts":false,"x":1540,"y":380,"wires":[]},{"id":"9e210694.f822b8","type":"debug","z":"3df0705c.3b30d","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":970,"y":660,"wires":[]},{"id":"786c00ef.0d0b7","type":"ui_button","z":"3df0705c.3b30d","name":"","group":"368002f4.1520be","order":1,"width":0,"height":0,"passthru":false,"label":"Get Device status","tooltip":"","color":"","bgcolor":"","icon":"","payload":"","payloadType":"str","topic":"","x":230,"y":520,"wires":[["5a98e220.0b364c"]]},{"id":"3359bfaa.f63c1","type":"comment","z":"3df0705c.3b30d","name":"A flow to get a list of device status reports (port 12)","info":"","x":330,"y":460,"wires":[]},{"id":"270368d9.46e0a8","type":"ui_ui_control","z":"3df0705c.3b30d","name":"","events":"all","x":200,"y":120,"wires":[["72c09bf8.8cc0c4"]]},{"id":"9ec99d15.87b6e","type":"function","z":"3df0705c.3b30d","name":"Get device EUI from Device Name","func":"var devName = flow.get(\"deviceName\");\n//msg.query = \"SELECT DISTINCT(eui) FROM datapackets WHERE \\\"name\\\" = 'wisent-tracker-test-1';\";\nmsg.query = \"SELECT DISTINCT(eui) FROM datapackets WHERE \\\"name\\\" = '\"+ devName +\"' LIMIT 1\";\nreturn msg;","outputs":1,"noerr":0,"x":280,"y":280,"wires":[["3e75eb10.400e14","74bc5e48.e6f0b"]]},{"id":"3e75eb10.400e14","type":"influxdb in","z":"3df0705c.3b30d","influxdb":"63062e32.105d8","name":"Chirpstack","query":"","rawOutput":false,"precision":"","retentionPolicy":"","x":710,"y":280,"wires":[["6ee44b9d.41f754","95adeef8.447f8"]]},{"id":"6ee44b9d.41f754","type":"debug","z":"3df0705c.3b30d","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":930,"y":320,"wires":[]},{"id":"74bc5e48.e6f0b","type":"debug","z":"3df0705c.3b30d","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"query","targetType":"msg","x":710,"y":320,"wires":[]},{"id":"9afcd101.ae96f","type":"ui_text","z":"3df0705c.3b30d","group":"995908e6.128808","order":2,"width":0,"height":0,"name":"","label":"Device EUI","format":"{{msg.EUI}}","layout":"row-spread","x":1190,"y":280,"wires":[]},{"id":"95adeef8.447f8","type":"change","z":"3df0705c.3b30d","name":"Options","rules":[{"t":"set","p":"EUI","pt":"msg","to":"$.payload.distinct","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":920,"y":280,"wires":[["9afcd101.ae96f","7da2d13e.840e6"]]},{"id":"1f448421.0c342c","type":"debug","z":"3df0705c.3b30d","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"query","targetType":"msg","x":630,"y":560,"wires":[]},{"id":"fde6fcee.21bf9","type":"comment","z":"3df0705c.3b30d","name":"A flow to query and get the device EUI that belongs to the device name","info":"","x":390,"y":240,"wires":[]},{"id":"7da2d13e.840e6","type":"change","z":"3df0705c.3b30d","name":"","rules":[{"t":"set","p":"EUI","pt":"flow","to":"EUI","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1190,"y":320,"wires":[[]]},{"id":"277ec74f.4dd678","type":"change","z":"3df0705c.3b30d","name":"Clear table","rules":[{"t":"set","p":"payload","pt":"msg","to":"[]","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":630,"y":740,"wires":[["910fba70.aacf68"]]},{"id":"4d85542f.65591c","type":"change","z":"3df0705c.3b30d","name":"Battery External","rules":[{"t":"move","p":"payload.battery_low","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1280,"y":720,"wires":[["2c89ca8d.b84f36"]]},{"id":"2c89ca8d.b84f36","type":"ui_gauge","z":"3df0705c.3b30d","name":"Power Source","group":"368002f4.1520be","order":7,"width":0,"height":0,"gtype":"gage","title":"Power Source","label":"Volt","format":"{{value/1000}}","min":0,"max":"30000","colors":["#ff0000","#e6e600","#00ff00"],"seg1":"11000","seg2":"12000","x":1540,"y":720,"wires":[]},{"id":"e7f59f0e.0a6ca","type":"change","z":"3df0705c.3b30d","name":"Clear flows","rules":[{"t":"delete","p":"EUI","pt":"flow"},{"t":"delete","p":"deviceEUI","pt":"flow"},{"t":"delete","p":"deviceName","pt":"flow"}],"action":"","property":"","from":"","to":"","reg":false,"x":630,"y":820,"wires":[[]]},{"id":"36811ffc.c3ded","type":"change","z":"3df0705c.3b30d","name":"Clear Device EUI","rules":[{"t":"set","p":"payload","pt":"msg","to":"","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":650,"y":860,"wires":[["9afcd101.ae96f"]]},{"id":"5a424517.13185c","type":"ui_ui_control","z":"3df0705c.3b30d","name":"","events":"all","x":200,"y":780,"wires":[["277ec74f.4dd678","e7f59f0e.0a6ca","36811ffc.c3ded","739a003f.3f3f4","de03117.2b3bcf"]]},{"id":"739a003f.3f3f4","type":"change","z":"3df0705c.3b30d","name":"Clear graph","rules":[{"t":"set","p":"payload","pt":"msg","to":"[]","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":630,"y":780,"wires":[["4565f717.a8e3b8","2c89ca8d.b84f36","1105716f.18f64f","bed77c97.3a6f9","ee16af6a.04193","50b0baad.1852c4","993dae75.ffe3f","e0b218c9.9a5ea8"]]},{"id":"12249406.b8b37c","type":"comment","z":"3a0cc9cd.c3a336","name":"Get the list of sensors in the Influx Database","info":"","x":290,"y":100,"wires":[]},{"id":"675e45ce.076a0c","type":"function","z":"3a0cc9cd.c3a336","name":"Device List","func":"msg.query = \"SHOW TAG VALUES WITH KEY = devId;\";\nreturn msg;","outputs":1,"noerr":0,"x":370,"y":140,"wires":[["ff9f0f5.f63d3f"]]},{"id":"ff9f0f5.f63d3f","type":"influxdb in","z":"3a0cc9cd.c3a336","influxdb":"63062e32.105d8","name":"Chirpstack","query":"","rawOutput":false,"precision":"","retentionPolicy":"","x":690,"y":140,"wires":[["27adad6.b83c952","f4fc0ff3.094a1"]]},{"id":"27adad6.b83c952","type":"change","z":"3a0cc9cd.c3a336","name":"Options","rules":[{"t":"set","p":"options","pt":"msg","to":"$.payload.value[]","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":860,"y":140,"wires":[["57f78143.8a66b","22adab04.2a3a94"]]},{"id":"f4fc0ff3.094a1","type":"debug","z":"3a0cc9cd.c3a336","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":870,"y":200,"wires":[]},{"id":"57f78143.8a66b","type":"ui_dropdown","z":"3a0cc9cd.c3a336","name":"Device list","label":"","tooltip":"","place":"Select device","group":"da786df7.25b7c","order":1,"width":0,"height":0,"passthru":false,"multiple":false,"options":[{"label":"","value":"","type":"str"}],"payload":"","topic":"","x":1170,"y":140,"wires":[["aa9bc7bf.d912e8","a6a8905d.96c91"]]},{"id":"22adab04.2a3a94","type":"debug","z":"3a0cc9cd.c3a336","name":"Options","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":1160,"y":200,"wires":[]},{"id":"aa9bc7bf.d912e8","type":"debug","z":"3a0cc9cd.c3a336","name":"Device dropdown","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":1380,"y":140,"wires":[]},{"id":"a6a8905d.96c91","type":"change","z":"3a0cc9cd.c3a336","name":"","rules":[{"t":"set","p":"deviceName","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1400,"y":200,"wires":[["e743eda4.a030c"]]},{"id":"72db98fe.5eb6b8","type":"ui_text","z":"3a0cc9cd.c3a336","group":"103ad82.1d15028","order":3,"width":"6","height":"10","name":"Downlink Payload","label":"","format":"{{msg.payload | json}}","layout":"row-left","x":930,"y":520,"wires":[]},{"id":"5ba58120.5221b","type":"ui_form","z":"3a0cc9cd.c3a336","name":"","label":"","group":"b45ffede.94462","order":3,"width":0,"height":0,"options":[{"label":"system_status_interval","value":"system_status_interval","type":"number","required":true,"rows":null},{"label":"system_functions.gps_hot_fix","value":"gps_hot_fix","type":"number","required":true,"rows":null},{"label":"system_functions.gps_periodic","value":"gps_periodic","type":"number","required":true,"rows":null},{"label":"system_functions.gps_triggered","value":"gps_triggered","type":"number","required":true,"rows":null},{"label":"system_functions.accelerometer_enabled","value":"accelerometer_enabled","type":"number","required":true,"rows":null},{"label":"system_functions.light_enabled","value":"light_enabled","type":"number","required":true,"rows":null},{"label":"system_functions.temperature_enabled","value":"temperature_enabled","type":"number","required":true,"rows":null},{"label":"system_functions.humidity_enabled","value":"humidity_enabled","type":"number","required":true,"rows":null},{"label":"system_functions.charging_enabled","value":"charging_enabled","type":"number","required":true,"rows":null},{"label":"lorawan_datarate_adr.datarate","value":"datarate","type":"number","required":true,"rows":null},{"label":"lorawan_datarate_adr.confirmed_uplink","value":"confirmed_uplink","type":"number","required":true,"rows":null},{"label":"lorawan_datarate_adr.adr","value":"adr","type":"number","required":true,"rows":null},{"label":"gps_periodic_interval","value":"gps_periodic_interval","type":"number","required":true,"rows":null},{"label":"gps_triggered_interval","value":"gps_triggered_interval","type":"number","required":true,"rows":null},{"label":"gps_triggered_threshold","value":"gps_triggered_threshold","type":"number","required":true,"rows":null},{"label":"gps_triggered_duration","value":"gps_triggered_duration","type":"number","required":true,"rows":null},{"label":"gps_cold_fix_timeout","value":"gps_cold_fix_timeout","type":"number","required":true,"rows":null},{"label":"gps_hot_fix_timeout","value":"gps_hot_fix_timeout","type":"number","required":true,"rows":null},{"label":"gps_min_fix_time","value":"gps_min_fix_time","type":"number","required":true,"rows":null},{"label":"gps_min_ehpe","value":"gps_min_ehpe","type":"number","required":true,"rows":null},{"label":"gps_hot_fix_retry","value":"gps_hot_fix_retry","type":"number","required":true,"rows":null},{"label":"gps_cold_fix_retry","value":"gps_cold_fix_retry","type":"number","required":true,"rows":null},{"label":"gps_fail_retry","value":"gps_fail_retry","type":"number","required":true,"rows":null},{"label":"gps_settings.d3_fix","value":"d3_fix","type":"number","required":true,"rows":null},{"label":"gps_settings.fail_backoff","value":"fail_backoff","type":"number","required":true,"rows":null},{"label":"gps_settings.hot_fix","value":"hot_fix","type":"number","required":true,"rows":null},{"label":"gps_settings.fully_resolved","value":"fully_resolved","type":"number","required":true,"rows":null},{"label":"system_voltage_interval","value":"system_voltage_interval","type":"number","required":true,"rows":null},{"label":"gps_charge_min","value":"gps_charge_min","type":"number","required":true,"rows":null},{"label":"system_charge_min","value":"system_charge_min","type":"number","required":true,"rows":null},{"label":"system_charge_max","value":"system_charge_max","type":"number","required":true,"rows":null},{"label":"system_input_charge_min","value":"system_input_charge_min","type":"number","required":true,"rows":null}],"formValue":{"system_status_interval":"","gps_hot_fix":"","gps_periodic":"","gps_triggered":"","accelerometer_enabled":"","light_enabled":"","temperature_enabled":"","humidity_enabled":"","charging_enabled":"","datarate":"","confirmed_uplink":"","adr":"","gps_periodic_interval":"","gps_triggered_interval":"","gps_triggered_threshold":"","gps_triggered_duration":"","gps_cold_fix_timeout":"","gps_hot_fix_timeout":"","gps_min_fix_time":"","gps_min_ehpe":"","gps_hot_fix_retry":"","gps_cold_fix_retry":"","gps_fail_retry":"","d3_fix":"","fail_backoff":"","hot_fix":"","fully_resolved":"","system_voltage_interval":"","gps_charge_min":"","system_charge_min":"","system_charge_max":"","system_input_charge_min":""},"payload":"","submit":"submit","cancel":"cancel","topic":"","x":170,"y":460,"wires":[["b5aa8539.f36658"]]},{"id":"b5aa8539.f36658","type":"function","z":"3a0cc9cd.c3a336","name":"Encoder Settings","func":"data = {}\ndata['system_status_interval'] = msg.payload.system_status_interval\n\nsystem_functions = {}\nsystem_functions['gps_periodic'] = msg.payload.gps_periodic\nsystem_functions['gps_triggered'] = msg.payload.gps_triggered\nsystem_functions['gps_hot_fix'] = msg.payload.gps_hot_fix\nsystem_functions['accelerometer_enabled'] = msg.payload.accelerometer_enabled\nsystem_functions['light_enabled'] = msg.payload.light_enabled\nsystem_functions['temperature_enabled'] = msg.payload.temperature_enabled\nsystem_functions['humidity_enabled'] = msg.payload.humidity_enabled\nsystem_functions['charging_enabled'] = msg.payload.charging_enabled\ndata['system_functions'] = system_functions\n\nlorawan_datarate_adr = {}\nlorawan_datarate_adr[\"datarate\"]= msg.payload.datarate\nlorawan_datarate_adr[\"confirmed_uplink\"]= msg.payload.confirmed_uplink\nlorawan_datarate_adr[\"adr\"]= msg.payload.adr\ndata['lorawan_datarate_adr'] = lorawan_datarate_adr\n\ndata['gps_periodic_interval'] = msg.payload.gps_periodic_interval\ndata['gps_triggered_interval'] = msg.payload.gps_triggered_interval\ndata['gps_triggered_threshold'] = msg.payload.gps_triggered_threshold\ndata['gps_triggered_duration'] = msg.payload.gps_triggered_duration\ndata['gps_cold_fix_timeout'] = msg.payload.gps_cold_fix_timeout\ndata['gps_hot_fix_timeout'] = msg.payload.gps_hot_fix_timeout\ndata['gps_min_fix_time'] = msg.payload.gps_min_fix_time\ndata['gps_min_ehpe'] = msg.payload.gps_min_ehpe\ndata['gps_hot_fix_retry'] = msg.payload.gps_hot_fix_retry\ndata['gps_cold_fix_retry'] = msg.payload.gps_cold_fix_retry\ndata['gps_fail_retry'] = msg.payload.gps_fail_retry\n\ngps_settings = {}\ngps_settings['d3_fix'] = msg.payload.d3_fix\ngps_settings['fail_backoff'] = msg.payload.fail_backoff\ngps_settings['hot_fix'] = msg.payload.hot_fix\ngps_settings['fully_resolved'] = msg.payload.fully_resolved\n\ndata['gps_settings'] = gps_settings\ndata['system_voltage_interval'] = msg.payload.system_voltage_interval\ndata['gps_charge_min'] = msg.payload.gps_charge_min\ndata['system_charge_min'] = msg.payload.system_charge_min\ndata['system_charge_max'] = msg.payload.system_charge_max\ndata['system_input_charge_min'] = msg.payload.system_input_charge_min\n\nmsg.payload = data\nreturn msg;","outputs":1,"noerr":0,"x":370,"y":460,"wires":[["553e0b77.0db2e4"]]},{"id":"553e0b77.0db2e4","type":"function","z":"3a0cc9cd.c3a336","name":"Downlink composer","func":"eui = flow.get(\"EUI\")\nmsg.payload = {\n \"confirmed\": true,\n \"fPort\": 3,\n \"object\": msg.payload\n }\nmsg.topic = \"application/1/device/\"+ eui +\"/tx\";\nreturn msg;","outputs":1,"noerr":0,"x":650,"y":460,"wires":[["44a5cb49.1dc4e4","72db98fe.5eb6b8","7853c040.d7f29"]]},{"id":"44a5cb49.1dc4e4","type":"debug","z":"3a0cc9cd.c3a336","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":910,"y":560,"wires":[]},{"id":"1cde041b.6ebbec","type":"function","z":"3a0cc9cd.c3a336","name":"Intitial setttings","func":"msg.payload =\n{\n \"system_status_interval\": 30,\n //\"system_functions\":\n \"gps_hot_fix\": 1,\n\t \"gps_periodic\": 1,\n\t \"gps_triggered\": 1,\n \"accelerometer_enabled\": 1,\n \"light_enabled\": 0,\n \"temperature_enabled\": 1,\n \"humidity_enabled\": 1,\n \"charging_enabled\": 1,\n //\"lorawan_datarate_adr\":\n \"datarate\": 2,\n \"confirmed_uplink\": 0,\n \"adr\": 0,\n \"gps_periodic_interval\": 15,\n \"gps_triggered_interval\": 3,\n \"gps_triggered_threshold\": 10,\n \"gps_triggered_duration\": 10,\n \"gps_cold_fix_timeout\": 200,\n \"gps_hot_fix_timeout\": 60,\n \"gps_min_fix_time\": 5,\n \"gps_min_ehpe\": 50,\n \"gps_hot_fix_retry\": 5,\n \"gps_cold_fix_retry\": 2,\n \"gps_fail_retry\": 0,\n //\"gps_settings\":\n \"d3_fix\": 1,\n \"fail_backoff\": 0,\n \"hot_fix\": 1,\n \"fully_resolved\": 0,\n \"system_voltage_interval\": 30,\n \"gps_charge_min\": 3000,\n \"system_charge_min\": 3900,\n \"system_charge_max\": 4100,\n \"system_input_charge_min\": 10000\n}\nreturn msg;","outputs":1,"noerr":0,"x":460,"y":640,"wires":[["5ba58120.5221b"]]},{"id":"7853c040.d7f29","type":"mqtt out","z":"3a0cc9cd.c3a336","name":"Downlink","topic":"","qos":"2","retain":"false","broker":"f3e95926.91ba48","x":900,"y":460,"wires":[]},{"id":"cf0be157.3d22c","type":"ui_button","z":"3a0cc9cd.c3a336","d":true,"name":"","group":"b45ffede.94462","order":1,"width":0,"height":0,"passthru":false,"label":"Load latest settings","tooltip":"","color":"","bgcolor":"","icon":"","payload":"latestsettings","payloadType":"flow","topic":"","x":210,"y":600,"wires":[["5ba58120.5221b"]]},{"id":"cca010f8.2434e","type":"ui_button","z":"3a0cc9cd.c3a336","name":"","group":"b45ffede.94462","order":2,"width":0,"height":0,"passthru":false,"label":"Load standard settings","tooltip":"","color":"","bgcolor":"","icon":"","payload":"","payloadType":"str","topic":"","x":220,"y":640,"wires":[["1cde041b.6ebbec"]]},{"id":"7f6c9efa.0f70d","type":"ui_ui_control","z":"3a0cc9cd.c3a336","name":"","events":"all","x":180,"y":140,"wires":[["675e45ce.076a0c"]]},{"id":"3e117d1c.7d4452","type":"comment","z":"3a0cc9cd.c3a336","name":"This flow subscribes to the OpenCollar mqtt stream of Chirpstack to send Downlinks","info":"","x":410,"y":420,"wires":[]},{"id":"7a8a7c78.74f3c4","type":"function","z":"3a0cc9cd.c3a336","name":"Device Settings","func":"var devName = flow.get(\"deviceName\");\nmsg.query = \"SELECT * FROM datapackets WHERE \\\"name\\\" = '\"+ devName +\"' AND port = 3 LIMIT 1;\";\nreturn msg;","outputs":1,"noerr":0,"x":460,"y":780,"wires":[["2c0d6685.76a98a"]]},{"id":"14d676a1.85d4b9","type":"inject","z":"3a0cc9cd.c3a336","name":"Get current settings from Database","topic":"","payload":"","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":260,"y":820,"wires":[["7a8a7c78.74f3c4"]]},{"id":"2c0d6685.76a98a","type":"influxdb in","z":"3a0cc9cd.c3a336","influxdb":"63062e32.105d8","name":"Chirpstack","query":"","rawOutput":false,"precision":"","retentionPolicy":"","x":690,"y":780,"wires":[["a5135dba.56dea","28b2b7b1.5c2648","2c441b44.9f2b04","32223b5a.9ab0c4"]]},{"id":"55e3fedb.1c013","type":"ui_button","z":"3a0cc9cd.c3a336","name":"","group":"830c0558.d558c8","order":1,"width":0,"height":0,"passthru":false,"label":"Get currect settings","tooltip":"","color":"","bgcolor":"","icon":"","payload":"","payloadType":"str","topic":"","x":210,"y":780,"wires":[["7a8a7c78.74f3c4"]]},{"id":"a5135dba.56dea","type":"debug","z":"3a0cc9cd.c3a336","name":"device settings","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":920,"y":820,"wires":[]},{"id":"28b2b7b1.5c2648","type":"change","z":"3a0cc9cd.c3a336","name":"","rules":[{"t":"set","p":"latestsettings","pt":"flow","to":"payload.0","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":940,"y":860,"wires":[[]]},{"id":"2c441b44.9f2b04","type":"ui_text","z":"3a0cc9cd.c3a336","d":true,"group":"830c0558.d558c8","order":2,"width":"6","height":"10","name":"Current settings","label":"","format":"{{msg.payload | json}}","layout":"row-left","x":920,"y":780,"wires":[]},{"id":"1944563c.4cad1a","type":"comment","z":"3a0cc9cd.c3a336","name":"This flow queries the latest known device settings from the Influx Database","info":"","x":380,"y":740,"wires":[]},{"id":"e743eda4.a030c","type":"function","z":"3a0cc9cd.c3a336","name":"Get device EUI from Device Name","func":"var devName = flow.get(\"deviceName\");\n//msg.query = \"SELECT DISTINCT(eui) FROM datapackets WHERE \\\"name\\\" = 'wisent-tracker-test-1';\";\nmsg.query = \"SELECT DISTINCT(eui) FROM datapackets WHERE \\\"name\\\" = '\"+ devName +\"' LIMIT 1\";\nreturn msg;","outputs":1,"noerr":0,"x":260,"y":280,"wires":[["bdbd9287.b6eeb","8b09938e.d5fba"]]},{"id":"bdbd9287.b6eeb","type":"influxdb in","z":"3a0cc9cd.c3a336","influxdb":"63062e32.105d8","name":"Chirpstack","query":"","rawOutput":false,"precision":"","retentionPolicy":"","x":690,"y":280,"wires":[["19890b7.cbecef5","1a515056.95215"]]},{"id":"19890b7.cbecef5","type":"debug","z":"3a0cc9cd.c3a336","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":910,"y":320,"wires":[]},{"id":"8b09938e.d5fba","type":"debug","z":"3a0cc9cd.c3a336","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"query","targetType":"msg","x":690,"y":320,"wires":[]},{"id":"bb8f62e4.ce1d3","type":"ui_text","z":"3a0cc9cd.c3a336","group":"da786df7.25b7c","order":2,"width":0,"height":0,"name":"","label":"Device EUI","format":"{{msg.EUI}}","layout":"row-spread","x":1170,"y":280,"wires":[]},{"id":"1a515056.95215","type":"change","z":"3a0cc9cd.c3a336","name":"Options","rules":[{"t":"set","p":"EUI","pt":"msg","to":"$.payload.distinct","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":900,"y":280,"wires":[["bb8f62e4.ce1d3","10c6983d.373648"]]},{"id":"14b4316b.bff22f","type":"comment","z":"3a0cc9cd.c3a336","name":"A flow to query and get the device EUI that belongs to the device name","info":"","x":370,"y":240,"wires":[]},{"id":"10c6983d.373648","type":"change","z":"3a0cc9cd.c3a336","name":"","rules":[{"t":"set","p":"EUI","pt":"flow","to":"EUI","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1170,"y":320,"wires":[[]]},{"id":"efdecfd7.68eaa","type":"change","z":"3a0cc9cd.c3a336","name":"Clear form","rules":[{"t":"set","p":"payload","pt":"msg","to":"[]","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":430,"y":920,"wires":[["5ba58120.5221b"]]},{"id":"d7803c51.58a7d","type":"change","z":"3a0cc9cd.c3a336","name":"Clear flows","rules":[{"t":"delete","p":"EUI","pt":"flow"},{"t":"delete","p":"deviceEUI","pt":"flow"},{"t":"delete","p":"deviceName","pt":"flow"}],"action":"","property":"","from":"","to":"","reg":false,"x":430,"y":960,"wires":[[]]},{"id":"f467ff98.7db8","type":"change","z":"3a0cc9cd.c3a336","name":"Clear Device EUI","rules":[{"t":"set","p":"payload","pt":"msg","to":"","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":450,"y":1000,"wires":[["bb8f62e4.ce1d3"]]},{"id":"2b47e812.152c38","type":"ui_ui_control","z":"3a0cc9cd.c3a336","name":"","events":"all","x":180,"y":920,"wires":[["efdecfd7.68eaa","d7803c51.58a7d","f467ff98.7db8","2510abf5.3c9714","d2a789ba.0ef368","a1061ead.c187f"]]},{"id":"2510abf5.3c9714","type":"change","z":"3a0cc9cd.c3a336","name":"Clear Payload field","rules":[{"t":"set","p":"payload","pt":"msg","to":"no settings have been send yet","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":450,"y":1040,"wires":[["72db98fe.5eb6b8"]]},{"id":"d2a789ba.0ef368","type":"change","z":"3a0cc9cd.c3a336","name":"Clear Current settings","rules":[{"t":"set","p":"payload","pt":"msg","to":"Please get currnet settings","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":460,"y":1080,"wires":[["2c441b44.9f2b04"]]},{"id":"a1061ead.c187f","type":"change","z":"3a0cc9cd.c3a336","name":"","rules":[{"t":"delete","p":"latestsettings","pt":"flow"}],"action":"","property":"","from":"","to":"","reg":false,"x":470,"y":1120,"wires":[[]]},{"id":"55211c4d.ac4424","type":"comment","z":"3a0cc9cd.c3a336","name":"NOTE: You need to change the Downlink MQTT topic to your OpenCollar application ID#","info":"","x":1140,"y":420,"wires":[]},{"id":"34d7712a.0fda0e","type":"influxdb in","z":"65ef8841.77c9b8","influxdb":"63062e32.105d8","name":"Chirpstack","query":"","rawOutput":false,"precision":"","retentionPolicy":"","x":650,"y":480,"wires":[["17d545b5.a4808a","6cb84fb4.1672d","1d0285b6.4d316a","55dc167b.914bb8","92292c42.f0dd8"]]},{"id":"17d545b5.a4808a","type":"debug","z":"65ef8841.77c9b8","name":"Influx Query","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":910,"y":640,"wires":[]},{"id":"c36ef9c1.164ab8","type":"function","z":"65ef8841.77c9b8","name":"GPS port 1","func":"var devName = flow.get(\"deviceName\");\nmsg.query = \"select * from datapackets where devId = '\"+ devName +\"' AND lat > 0 AND port = 1 ORDER BY time ASC;\";\nreturn msg;","outputs":1,"noerr":0,"x":370,"y":480,"wires":[["34d7712a.0fda0e","283d98ce.dfdd18"]]},{"id":"76177945.e34738","type":"worldmap","z":"65ef8841.77c9b8","name":"worldmap","lat":"52.11109","lon":"5.13236","zoom":"","layer":"OSM grey","cluster":"","maxage":"","usermenu":"show","layers":"show","panit":"false","panlock":"false","zoomlock":"false","hiderightclick":"false","coords":"none","showgrid":"false","path":"/worldmap","x":1060,"y":560,"wires":[]},{"id":"6cb84fb4.1672d","type":"split","z":"65ef8841.77c9b8","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"payload","x":890,"y":480,"wires":[["1427261d.fc141a","76177945.e34738","755a401c.14d1b","2fff9102.75ca8e"]]},{"id":"1427261d.fc141a","type":"debug","z":"65ef8841.77c9b8","name":"split","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":1050,"y":480,"wires":[]},{"id":"755a401c.14d1b","type":"worldmap-tracks","z":"65ef8841.77c9b8","name":"Tracks","depth":"100","layer":"single","x":1050,"y":520,"wires":[["76177945.e34738","2c287508.62094a"]]},{"id":"b2edbfa7.6ee44","type":"function","z":"65ef8841.77c9b8","name":"GPS port 11","func":"var devName = flow.get(\"deviceName\");\nmsg.query = \"select * from datapackets where devId = '\"+ devName +\"' AND lat > 0 AND port = 11 ORDER BY time ASC;\";\nreturn msg;","outputs":1,"noerr":0,"x":370,"y":520,"wires":[["34d7712a.0fda0e","283d98ce.dfdd18"]]},{"id":"1d0285b6.4d316a","type":"ui_table","z":"65ef8841.77c9b8","group":"a521521b.35bb4","name":"GPS Table","order":1,"width":"6","height":"5","columns":[{"field":"time","title":"time","width":"60%","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"lat","title":"lat","width":"","align":"center","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"lon","title":"lon","width":"","align":"center","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"epe","title":"epe","width":"","align":"center","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"time_to_fix","title":"TTF","width":"","align":"center","formatter":"plaintext","formatterParams":{"target":"_blank"}}],"outputs":0,"cts":false,"x":1390,"y":780,"wires":[]},{"id":"2c287508.62094a","type":"ui_worldmap","z":"65ef8841.77c9b8","group":"fe8b6129.f0b8d","order":6,"width":"6","height":"10","name":"","lat":"52.11109","lon":"5.13236","zoom":"","layer":"OSM","cluster":"","maxage":"","usermenu":"show","layers":"show","panit":"false","panlock":"false","zoomlock":"false","hiderightclick":"true","coords":"none","showgrid":"false","path":"/GPSdashboard","x":1400,"y":720,"wires":[]},{"id":"699dacb2.04eb84","type":"ui_button","z":"65ef8841.77c9b8","name":"","group":"fe8b6129.f0b8d","order":1,"width":0,"height":0,"passthru":false,"label":"Get GPS Tracks","tooltip":"","color":"","bgcolor":"","icon":"","payload":"","payloadType":"str","topic":"","x":160,"y":480,"wires":[["c36ef9c1.164ab8","32aeeeb6.d02822","2178a0c5.2284f","63eae00f.f3ca"]]},{"id":"c6b08f06.44385","type":"ui_button","z":"65ef8841.77c9b8","name":"","group":"c0a7ddad.6179e","order":1,"width":0,"height":0,"passthru":false,"label":"Get GPS Log","tooltip":"","color":"","bgcolor":"","icon":"","payload":"","payloadType":"str","topic":"","x":150,"y":520,"wires":[["b2edbfa7.6ee44"]]},{"id":"2fff9102.75ca8e","type":"change","z":"65ef8841.77c9b8","name":"Icon","rules":[{"t":"set","p":"payload.icon","pt":"msg","to":"fa-car","tot":"str"},{"t":"set","p":"payload.iconColor","pt":"msg","to":"blue","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1050,"y":440,"wires":[["e718af13.430f6"]]},{"id":"60c62313.b1cd4c","type":"function","z":"65ef8841.77c9b8","name":"GPS port 1","func":"var deviceEUI = flow.get('deviceEUI');\nmsg.query = \"select * from datapackets where devId = '\"+ deviceEUI +\"' AND lat > 0 AND port = 1 ORDER BY time ASC;\";\nreturn msg;","outputs":1,"noerr":0,"x":370,"y":640,"wires":[["283d98ce.dfdd18","34d7712a.0fda0e"]]},{"id":"283d98ce.dfdd18","type":"debug","z":"65ef8841.77c9b8","name":"dropdown query","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"query","targetType":"msg","x":660,"y":640,"wires":[]},{"id":"3a68c2e5.ec51ce","type":"ui_button","z":"65ef8841.77c9b8","d":true,"name":"","group":"fe8b6129.f0b8d","order":2,"width":0,"height":0,"passthru":false,"label":"Get GPS Tracks","tooltip":"","color":"","bgcolor":"","icon":"","payload":"","payloadType":"str","topic":"","x":160,"y":640,"wires":[["60c62313.b1cd4c"]]},{"id":"53f71883.f09ff8","type":"ui_button","z":"65ef8841.77c9b8","name":"","group":"70f10480.a015ec","order":2,"width":0,"height":0,"passthru":false,"label":"Clear map & table","tooltip":"","color":"","bgcolor":"","icon":"","payload":"","payloadType":"str","topic":"","x":170,"y":720,"wires":[["63eae00f.f3ca","1f59f0d7.34532f"]]},{"id":"179afc70.5466a4","type":"debug","z":"65ef8841.77c9b8","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":550,"y":740,"wires":[]},{"id":"63eae00f.f3ca","type":"function","z":"65ef8841.77c9b8","name":"Clear map","func":"msg.payload = {command:{clear:\"Tracks\"}, command:{clear:\"Positions\"}};\nreturn msg;","outputs":1,"noerr":0,"x":370,"y":720,"wires":[["179afc70.5466a4","2c287508.62094a"]]},{"id":"1f59f0d7.34532f","type":"function","z":"65ef8841.77c9b8","name":"Clear table","func":"msg.payload = []\nreturn msg;","outputs":1,"noerr":0,"x":370,"y":780,"wires":[["1d0285b6.4d316a"]]},{"id":"a974bdab.e5b19","type":"comment","z":"65ef8841.77c9b8","name":"Get the list of sensors in the Influx Database","info":"","x":230,"y":60,"wires":[]},{"id":"b065d40c.e11eb8","type":"function","z":"65ef8841.77c9b8","name":"Device Name List","func":"msg.query = \"SHOW TAG VALUES WITH KEY = devId;\";\nreturn msg;","outputs":1,"noerr":0,"x":330,"y":100,"wires":[["1e008e0f.05d582"]]},{"id":"1e008e0f.05d582","type":"influxdb in","z":"65ef8841.77c9b8","influxdb":"63062e32.105d8","name":"Chirpstack","query":"","rawOutput":false,"precision":"","retentionPolicy":"","x":630,"y":100,"wires":[["83c6f85b.c423d8","b2bd5c5f.440c3"]]},{"id":"83c6f85b.c423d8","type":"change","z":"65ef8841.77c9b8","name":"Options","rules":[{"t":"set","p":"options","pt":"msg","to":"$.payload.value[]","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":800,"y":100,"wires":[["f4b5238b.a8891","6e0df850.9d3b78"]]},{"id":"b2bd5c5f.440c3","type":"debug","z":"65ef8841.77c9b8","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":810,"y":160,"wires":[]},{"id":"f4b5238b.a8891","type":"ui_dropdown","z":"65ef8841.77c9b8","name":"Device list","label":"","tooltip":"","place":"Select device","group":"59290151.09a4","order":1,"width":0,"height":0,"passthru":false,"multiple":false,"options":[{"label":"","value":"","type":"str"}],"payload":"","topic":"","x":1110,"y":100,"wires":[["bc0b523.e486bb","ab43cb9d.722448"]]},{"id":"6e0df850.9d3b78","type":"debug","z":"65ef8841.77c9b8","name":"Options","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":1100,"y":160,"wires":[]},{"id":"bc0b523.e486bb","type":"debug","z":"65ef8841.77c9b8","name":"Device dropdown","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":1320,"y":100,"wires":[]},{"id":"ab43cb9d.722448","type":"change","z":"65ef8841.77c9b8","name":"","rules":[{"t":"set","p":"deviceName","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1340,"y":160,"wires":[["3cd2b539.66651a"]]},{"id":"3cd2b539.66651a","type":"function","z":"65ef8841.77c9b8","name":"Get device EUI from Device Name","func":"var devName = flow.get(\"deviceName\");\n//msg.query = \"SELECT DISTINCT(eui) FROM datapackets WHERE \\\"name\\\" = 'wisent-tracker-test-1';\";\nmsg.query = \"SELECT DISTINCT(eui) FROM datapackets WHERE \\\"name\\\" = '\"+ devName +\"' LIMIT 1\";\nreturn msg;","outputs":1,"noerr":0,"x":200,"y":240,"wires":[["c4cb54a6.eff828","fb3a784.9eb0388"]]},{"id":"c4cb54a6.eff828","type":"influxdb in","z":"65ef8841.77c9b8","influxdb":"63062e32.105d8","name":"Chirpstack","query":"","rawOutput":false,"precision":"","retentionPolicy":"","x":630,"y":240,"wires":[["aafa5e6.61c0da","4fc753ec.e8983c"]]},{"id":"aafa5e6.61c0da","type":"debug","z":"65ef8841.77c9b8","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":850,"y":280,"wires":[]},{"id":"fb3a784.9eb0388","type":"debug","z":"65ef8841.77c9b8","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"query","targetType":"msg","x":330,"y":280,"wires":[]},{"id":"b6688767.32a688","type":"ui_text","z":"65ef8841.77c9b8","group":"59290151.09a4","order":2,"width":0,"height":0,"name":"","label":"Device EUI","format":"{{msg.EUI}}","layout":"row-spread","x":1110,"y":240,"wires":[]},{"id":"4fc753ec.e8983c","type":"change","z":"65ef8841.77c9b8","name":"Options","rules":[{"t":"set","p":"EUI","pt":"msg","to":"$.payload.distinct","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":840,"y":240,"wires":[["b6688767.32a688","8ac660fa.3f54f"]]},{"id":"ca78229b.997f2","type":"comment","z":"65ef8841.77c9b8","name":"A flow to query and get the device EUI that belongs to the device name","info":"","x":310,"y":200,"wires":[]},{"id":"3c5b34d3.c82f0c","type":"ui_ui_control","z":"65ef8841.77c9b8","name":"","events":"all","x":120,"y":100,"wires":[["b065d40c.e11eb8"]]},{"id":"8ac660fa.3f54f","type":"change","z":"65ef8841.77c9b8","name":"","rules":[{"t":"set","p":"EUI","pt":"flow","to":"EUI","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1110,"y":280,"wires":[[]]},{"id":"8162da70.7e4778","type":"change","z":"65ef8841.77c9b8","name":"Clear flows","rules":[{"t":"delete","p":"EUI","pt":"flow"},{"t":"delete","p":"deviceEUI","pt":"flow"},{"t":"delete","p":"deviceName","pt":"flow"}],"action":"","property":"","from":"","to":"","reg":false,"x":390,"y":880,"wires":[[]]},{"id":"da11a5a3.9023d8","type":"change","z":"65ef8841.77c9b8","name":"Clear Device EUI","rules":[{"t":"set","p":"payload","pt":"msg","to":"","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":410,"y":920,"wires":[["b6688767.32a688"]]},{"id":"a0acb9f8.1f2aa8","type":"ui_ui_control","z":"65ef8841.77c9b8","name":"","events":"all","x":140,"y":840,"wires":[["12fe23f4.d2eccc","da11a5a3.9023d8","8162da70.7e4778","9f09aced.d0281","63eae00f.f3ca"]]},{"id":"80958ff4.d0c81","type":"comment","z":"65ef8841.77c9b8","name":"This flow is to query the latest GPS tracks and present them in the UI","info":"","x":320,"y":420,"wires":[]},{"id":"4f70327e.e4173c","type":"mqtt out","z":"80f9ae4e.b1ea9","name":"Downlink","topic":"","qos":"2","retain":"false","broker":"f3e95926.91ba48","x":1040,"y":540,"wires":[]},{"id":"2f2edf6a.8f64c","type":"debug","z":"80f9ae4e.b1ea9","name":"Downlink","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":1040,"y":660,"wires":[]},{"id":"5f1e407f.221c5","type":"ui_button","z":"80f9ae4e.b1ea9","name":"","group":"412fe6ee.a97828","order":3,"width":0,"height":0,"passthru":false,"label":"Request Settings","tooltip":"Request currunt device settings","color":"","bgcolor":"","icon":"","payload":"{\"confirmed\":true,\"fPort\":99,\"data\":\"qg==\"}","payloadType":"json","topic":"application/7/device/009f13a36948e5ab/tx","x":270,"y":500,"wires":[["5fed40b9.48ab9"]]},{"id":"a0fffda1.fdb57","type":"ui_text","z":"80f9ae4e.b1ea9","group":"412fe6ee.a97828","order":1,"width":0,"height":0,"name":"","label":"Downlink","format":"{{msg.payload}}","layout":"row-spread","x":1040,"y":600,"wires":[]},{"id":"2478fbb8.0dfa64","type":"ui_button","z":"80f9ae4e.b1ea9","name":"","group":"412fe6ee.a97828","order":2,"width":0,"height":0,"passthru":false,"label":"Reset Device","tooltip":"Request device reset","color":"","bgcolor":"","icon":"","payload":"{\"confirmed\":true,\"fPort\":99,\"data\":\"qw==\"}","payloadType":"json","topic":"application/7/device/009f13a36948e5ab/tx","x":250,"y":460,"wires":[["5fed40b9.48ab9"]]},{"id":"1705ef27.ee5101","type":"ui_button","z":"80f9ae4e.b1ea9","name":"","group":"412fe6ee.a97828","order":4,"width":0,"height":0,"passthru":false,"label":"LoRaWAN Rejoin","tooltip":"Request LoRaWAN Rejoin","color":"","bgcolor":"","icon":"","payload":"{\"confirmed\":true,\"fPort\":99,\"data\":\"3g==\"}","payloadType":"json","topic":"application/7/device/009f13a36948e5ab/tx","x":270,"y":540,"wires":[["5fed40b9.48ab9"]]},{"id":"5f5f28d8.e4ecb8","type":"debug","z":"80f9ae4e.b1ea9","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":970,"y":760,"wires":[]},{"id":"dfdb392f.23da98","type":"debug","z":"80f9ae4e.b1ea9","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":990,"y":860,"wires":[]},{"id":"ceea919.c90287","type":"function","z":"80f9ae4e.b1ea9","name":"Downlink composer","func":"msg.payload = {\n \"confirmed\": false,\n \"fPort\": 3,\n \"object\": msg.payload\n }\nmsg.topic = \"application/1/device/009f13a36948e5ab/tx\"\nreturn msg;","outputs":1,"noerr":0,"x":770,"y":760,"wires":[["5f5f28d8.e4ecb8","dfdb392f.23da98"]]},{"id":"6fc3657a.7d763c","type":"inject","z":"80f9ae4e.b1ea9","name":"","topic":"","payload":"","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":230,"y":760,"wires":[["62ac8e03.a03b4"]]},{"id":"62ac8e03.a03b4","type":"function","z":"80f9ae4e.b1ea9","name":"Encoder Settings","func":"data = {}\ndata['system_status_interval'] = 3\n\nsystem_functions = {}\nsystem_functions['accelerometer_enabled'] = 0\nsystem_functions['light_enabled'] = 0\nsystem_functions['temperature_enabled'] = 0\nsystem_functions['humidity_enabled'] = 0\nsystem_functions['charging_enabled'] = 1\ndata['system_functions'] = system_functions\n\nlorawan_datarate_adr = {}\nlorawan_datarate_adr[\"datarate\"]=3\nlorawan_datarate_adr[\"confirmed_uplink\"]=0\nlorawan_datarate_adr[\"adr\"]=0\ndata['lorawan_datarate_adr'] = lorawan_datarate_adr\n\ndata['gps_periodic_interval'] =1\ndata['gps_triggered_interval'] =1\ndata['gps_triggered_threshold'] =10\ndata['gps_triggered_duration'] =10\ndata['gps_cold_fix_timeout'] =200\ndata['gps_hot_fix_timeout'] =60\ndata['gps_min_fix_time'] =5\ndata['gps_min_ehpe'] =50\ndata['gps_hot_fix_retry'] = 5\ndata['gps_cold_fix_retry'] =2\ndata['gps_fail_retry'] =0\n\ngps_settings = {}\ngps_settings['d3_fix'] = 1\ngps_settings['fail_backoff'] = 0\ngps_settings['hot_fix'] = 1\ngps_settings['fully_resolved'] = 0\n\ndata['gps_settings'] = gps_settings\ndata['system_voltage_interval'] =1\ndata['gps_charge_min'] =0\ndata['system_charge_min'] =3450\ndata['system_charge_max'] =4000\ndata['system_input_charge_min'] =10000\n\nmsg.payload = data\nreturn msg;","outputs":1,"noerr":0,"x":510,"y":760,"wires":[["2da02642.71f6fa","ceea919.c90287"]]},{"id":"2da02642.71f6fa","type":"debug","z":"80f9ae4e.b1ea9","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":750,"y":860,"wires":[]},{"id":"7130091.380baf8","type":"inject","z":"80f9ae4e.b1ea9","name":"JSON Settings","topic":"","payload":"{\"system_status_interval\":3,\"system_functions\":{\"accelerometer_enabled\":0,\"light_enabled\":0,\"temperature_enabled\":0,\"humidity_enabled\":0,\"charging_enabled\":1},\"lorawan_datarate_adr\":{\"datarate\":3,\"confirmed_uplink\":0,\"adr\":0},\"gps_periodic_interval\":1,\"gps_triggered_interval\":1,\"gps_triggered_threshold\":10,\"gps_triggered_duration\":10,\"gps_cold_fix_timeout\":200,\"gps_hot_fix_timeout\":60,\"gps_min_fix_time\":5,\"gps_min_ehpe\":50,\"gps_hot_fix_retry\":5,\"gps_cold_fix_retry\":2,\"gps_fail_retry\":0,\"gps_settings\":{\"d3_fix\":1,\"fail_backoff\":0,\"hot_fix\":1,\"fully_resolved\":0},\"system_voltage_interval\":1,\"gps_charge_min\":0,\"system_charge_min\":3450,\"system_charge_max\":4000,\"system_input_charge_min\":10000}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":260,"y":820,"wires":[[]]},{"id":"bd2fb52f.7bdd88","type":"comment","z":"80f9ae4e.b1ea9","name":"Get the list of sensors in the Influx Database","info":"","x":350,"y":100,"wires":[]},{"id":"9440345d.657968","type":"function","z":"80f9ae4e.b1ea9","name":"Device List","func":"msg.query = \"SHOW TAG VALUES WITH KEY = devId;\";\nreturn msg;","outputs":1,"noerr":0,"x":430,"y":140,"wires":[["85667158.8e63"]]},{"id":"85667158.8e63","type":"influxdb in","z":"80f9ae4e.b1ea9","influxdb":"63062e32.105d8","name":"Chirpstack","query":"","rawOutput":false,"precision":"","retentionPolicy":"","x":750,"y":140,"wires":[["38afd653.da87ea","bcab8403.085038"]]},{"id":"38afd653.da87ea","type":"change","z":"80f9ae4e.b1ea9","name":"Options","rules":[{"t":"set","p":"options","pt":"msg","to":"$.payload.value[]","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":920,"y":140,"wires":[["67ba19c8.145958","d4b4921f.761"]]},{"id":"bcab8403.085038","type":"debug","z":"80f9ae4e.b1ea9","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":930,"y":200,"wires":[]},{"id":"67ba19c8.145958","type":"ui_dropdown","z":"80f9ae4e.b1ea9","name":"Device list","label":"","tooltip":"","place":"Select device","group":"d15f0f1c.ba804","order":1,"width":0,"height":0,"passthru":false,"multiple":false,"options":[{"label":"","value":"","type":"str"}],"payload":"","topic":"","x":1230,"y":140,"wires":[["11ad3146.36191f","dab2d23f.7b75"]]},{"id":"d4b4921f.761","type":"debug","z":"80f9ae4e.b1ea9","name":"Options","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":1220,"y":200,"wires":[]},{"id":"11ad3146.36191f","type":"debug","z":"80f9ae4e.b1ea9","name":"Device dropdown","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":1440,"y":140,"wires":[]},{"id":"dab2d23f.7b75","type":"change","z":"80f9ae4e.b1ea9","name":"","rules":[{"t":"set","p":"deviceName","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1460,"y":200,"wires":[["b9a858c4.821fa8"]]},{"id":"87e19c9a.74531","type":"ui_button","z":"80f9ae4e.b1ea9","name":"","group":"412fe6ee.a97828","order":5,"width":0,"height":0,"passthru":false,"label":"Request GPS log","tooltip":"Request GPS log","color":"","bgcolor":"","icon":"","payload":"{\"confirmed\":true,\"fPort\":99,\"data\":\"EQ==\"}","payloadType":"json","topic":"application/7/device/009f13a36948e5ab/tx","x":270,"y":580,"wires":[["5fed40b9.48ab9"]]},{"id":"845891b2.938aa","type":"ui_button","z":"80f9ae4e.b1ea9","name":"","group":"412fe6ee.a97828","order":6,"width":0,"height":0,"passthru":false,"label":"Clear GPS log","tooltip":"Clear GPS log","color":"","bgcolor":"","icon":"","payload":"{\"confirmed\":true,\"fPort\":99,\"data\":\"8Q==\"}","payloadType":"json","topic":"","x":260,"y":620,"wires":[["5fed40b9.48ab9"]]},{"id":"5fed40b9.48ab9","type":"function","z":"80f9ae4e.b1ea9","name":"Set device EUI in downlink topic","func":"var eui = flow.get(\"EUI\");\nmsg.topic = \"application/1/device/\"+ eui +\"/tx\";\nreturn msg;","outputs":1,"noerr":0,"x":570,"y":540,"wires":[["2f2edf6a.8f64c","4f70327e.e4173c","a0fffda1.fdb57"]]},{"id":"b9a858c4.821fa8","type":"function","z":"80f9ae4e.b1ea9","name":"Get device EUI from Device Name","func":"var devName = flow.get(\"deviceName\");\n//msg.query = \"SELECT DISTINCT(eui) FROM datapackets WHERE \\\"name\\\" = 'wisent-tracker-test-1';\";\nmsg.query = \"SELECT DISTINCT(eui) FROM datapackets WHERE \\\"name\\\" = '\"+ devName +\"' LIMIT 1\";\nreturn msg;","outputs":1,"noerr":0,"x":320,"y":300,"wires":[["ed061416.99f8a8","6a85f94d.69b198"]]},{"id":"ed061416.99f8a8","type":"influxdb in","z":"80f9ae4e.b1ea9","influxdb":"63062e32.105d8","name":"Chirpstack","query":"","rawOutput":false,"precision":"","retentionPolicy":"","x":750,"y":300,"wires":[["21e990eb.6e031","769d68a2.1b2048"]]},{"id":"21e990eb.6e031","type":"debug","z":"80f9ae4e.b1ea9","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":970,"y":340,"wires":[]},{"id":"6a85f94d.69b198","type":"debug","z":"80f9ae4e.b1ea9","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"query","targetType":"msg","x":750,"y":340,"wires":[]},{"id":"4cd05c10.2b4fa4","type":"ui_text","z":"80f9ae4e.b1ea9","group":"d15f0f1c.ba804","order":2,"width":0,"height":0,"name":"","label":"Device EUI","format":"{{msg.EUI}}","layout":"row-spread","x":1230,"y":300,"wires":[]},{"id":"769d68a2.1b2048","type":"change","z":"80f9ae4e.b1ea9","name":"Options","rules":[{"t":"set","p":"EUI","pt":"msg","to":"$.payload.distinct","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":960,"y":300,"wires":[["4cd05c10.2b4fa4","5242e514.e65a4c"]]},{"id":"aec3af29.6e49c","type":"comment","z":"80f9ae4e.b1ea9","name":"A flow to query and get the device EUI that belongs to the device name","info":"","x":430,"y":260,"wires":[]},{"id":"5242e514.e65a4c","type":"change","z":"80f9ae4e.b1ea9","name":"","rules":[{"t":"set","p":"EUI","pt":"flow","to":"EUI","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1230,"y":340,"wires":[[]]},{"id":"aefdbaa5.4a1fd8","type":"change","z":"80f9ae4e.b1ea9","name":"Clear form","rules":[{"t":"set","p":"payload","pt":"msg","to":"[]","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":490,"y":900,"wires":[[]]},{"id":"385a7ff.7186c8","type":"change","z":"80f9ae4e.b1ea9","name":"Clear flows","rules":[{"t":"delete","p":"EUI","pt":"flow"},{"t":"delete","p":"deviceEUI","pt":"flow"},{"t":"delete","p":"deviceName","pt":"flow"}],"action":"","property":"","from":"","to":"","reg":false,"x":490,"y":940,"wires":[[]]},{"id":"930c8e7d.567ea","type":"change","z":"80f9ae4e.b1ea9","name":"Clear Device EUI","rules":[{"t":"set","p":"payload","pt":"msg","to":"","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":510,"y":980,"wires":[["4cd05c10.2b4fa4"]]},{"id":"bc7cb37.918dd5","type":"ui_ui_control","z":"80f9ae4e.b1ea9","name":"","events":"all","x":240,"y":900,"wires":[["aefdbaa5.4a1fd8","385a7ff.7186c8","930c8e7d.567ea","ba7cd445.b53df8","f247ca88.06d238","d5616b3a.df4248"]]},{"id":"ba7cd445.b53df8","type":"change","z":"80f9ae4e.b1ea9","name":"Clear Downlink field","rules":[{"t":"set","p":"payload","pt":"msg","to":"no settings have been send yet","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":510,"y":1020,"wires":[["a0fffda1.fdb57"]]},{"id":"f247ca88.06d238","type":"change","z":"80f9ae4e.b1ea9","name":"Clear Current settings","rules":[{"t":"set","p":"payload","pt":"msg","to":"Please get currnet settings","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":520,"y":1060,"wires":[[]]},{"id":"d5616b3a.df4248","type":"change","z":"80f9ae4e.b1ea9","name":"","rules":[{"t":"delete","p":"latestsettings","pt":"flow"}],"action":"","property":"","from":"","to":"","reg":false,"x":530,"y":1100,"wires":[[]]},{"id":"9fba8571.98b448","type":"ui_ui_control","z":"80f9ae4e.b1ea9","name":"","events":"all","x":240,"y":140,"wires":[["9440345d.657968"]]},{"id":"f45b3d7d.0d91b","type":"comment","z":"80f9ae4e.b1ea9","name":"A flow to create UI buttons for sending setting to the device via Chirpstack","info":"","x":440,"y":420,"wires":[]},{"id":"ea899b02.e5a3e8","type":"comment","z":"80f9ae4e.b1ea9","name":"NOTE: You need to change the Downlink MQTT topic to your OpenCollar application ID#","info":"","x":1280,"y":500,"wires":[]},{"id":"32aeeeb6.d02822","type":"function","z":"65ef8841.77c9b8","name":"Add local map","func":"msg.payload = { command : { map : {\n \"name\": \"Smart Parks\",\n \"url\": \"http://192.168.31.100/public/tiles/{z}/{x}/{y}.png\", // we will serve the tiles from this node locally.\n \"opt\": {\n \"layers\": \"smartparks\", // specifies a layer in your map file\n \"format\": \"image/png\",\n \"transparent\": true,\n \"attribution\": \"© Smart Parks\"\n }\n}}}\nreturn msg;","outputs":1,"noerr":0,"x":360,"y":1020,"wires":[["76177945.e34738","2c287508.62094a"]]},{"id":"d4f7ef7d.049bb","type":"comment","z":"65ef8841.77c9b8","name":"Add local map server","info":"","x":180,"y":980,"wires":[]},{"id":"9f09aced.d0281","type":"change","z":"65ef8841.77c9b8","name":"Clear table","rules":[{"t":"set","p":"payload","pt":"msg","to":"[]","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":390,"y":840,"wires":[["1d0285b6.4d316a"]]},{"id":"aba26caa.4e328","type":"ui_button","z":"65ef8841.77c9b8","name":"","group":"70f10480.a015ec","order":1,"width":0,"height":0,"passthru":false,"label":"Load Offline maps","tooltip":"","color":"","bgcolor":"","icon":"","payload":"","payloadType":"str","topic":"","x":170,"y":1020,"wires":[["32aeeeb6.d02822"]]},{"id":"1105716f.18f64f","type":"ui_gauge","z":"3df0705c.3b30d","name":"Temperature","group":"368002f4.1520be","order":8,"width":0,"height":0,"gtype":"gage","title":"Temperature","label":"C","format":"{{value}}","min":0,"max":"50","colors":["#00b500","#e6e600","#ca3838"],"seg1":"10","seg2":"30","x":1530,"y":780,"wires":[]},{"id":"e4aed49c.4757b8","type":"change","z":"3df0705c.3b30d","name":"Temperature","rules":[{"t":"move","p":"payload.temperature","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1270,"y":780,"wires":[["1105716f.18f64f"]]},{"id":"bed77c97.3a6f9","type":"ui_gauge","z":"3df0705c.3b30d","name":"GPS Periodic Error","group":"1dac2c4a.c55ea4","order":3,"width":0,"height":0,"gtype":"wave","title":"GPS Periodic Error","label":"","format":"{{value}}","min":0,"max":"1","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","x":1550,"y":820,"wires":[]},{"id":"489ecc26.85f3a4","type":"change","z":"3df0705c.3b30d","name":"gps_periodic_error","rules":[{"t":"move","p":"payload.gps_periodic_error","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1290,"y":820,"wires":[["bed77c97.3a6f9"]]},{"id":"127159c9.5eb336","type":"change","z":"3df0705c.3b30d","name":"gps_triggered_error","rules":[{"t":"move","p":"payload.gps_triggered_error","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1290,"y":860,"wires":[["ee16af6a.04193"]]},{"id":"ee16af6a.04193","type":"ui_gauge","z":"3df0705c.3b30d","name":"GPS Triggered Error","group":"1dac2c4a.c55ea4","order":4,"width":0,"height":0,"gtype":"wave","title":"GPS Triggered Error","label":"","format":"{{value}}","min":0,"max":"1","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","x":1560,"y":860,"wires":[]},{"id":"572e1c43.849a34","type":"ui_template","z":"befa85f8.1c9048","group":"f9910386.13dc6","name":"Clock Toolbar","order":2,"width":"0","height":"0","format":"<script id=\"titleScript\" type=\"text/javascript\">\n\n$(function() {\n if($('.md-toolbar-tools').length != 0){\n loadClock();\n }else setTimeout(loadClock, 500)\n});\n\nfunction loadClock(){\n $('#clock').remove();\n var toolbar = $('.md-toolbar-tools');\n \n var div = $('<div/>');\n var p = $('<p/ id=\"clock\">');\n \n div.append(p);\n div[0].style.margin = '5px 5px 5px auto';\n toolbar.append(div);\n\n function displayTitle(lh) {\n p.text(lh); \n }\n \n function upTime() {\n var d = new Date();\n p.text(d.toLocaleString());\n }\n\n if(document.clockInterval){ \n clearInterval(document.clockInterval);\n document.clockInterval = null;\n }\n \n document.clockInterval = setInterval(upTime,1000);\n}\n\n</script>","storeOutMessages":false,"fwdInMessages":false,"resendOnRefresh":false,"templateScope":"global","x":220,"y":120,"wires":[[]]},{"id":"8798d43e.9331d8","type":"comment","z":"befa85f8.1c9048","name":"Add date/time to dashboard header","info":"","x":280,"y":80,"wires":[]},{"id":"32223b5a.9ab0c4","type":"change","z":"3a0cc9cd.c3a336","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.0","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":920,"y":900,"wires":[["5ba58120.5221b"]]},{"id":"e77c3eb7.bb185","type":"function","z":"3df0705c.3b30d","name":"convert time string to timestamp","func":"msg.payload.timeParsed = Date.parse(msg.payload[msg.payload.length-1].time)\nreturn msg;","outputs":1,"noerr":0,"x":1020,"y":1140,"wires":[["ba827906.b23288","8c865250.5c1a8","adacfc62.07ef5"]]},{"id":"ba827906.b23288","type":"moment","z":"3df0705c.3b30d","name":"Full","topic":"","input":"payload.timeParsed","inputType":"msg","inTz":"Europe/Amsterdam","adjAmount":0,"adjType":"days","adjDir":"add","format":"(\"dddd, MMMM Do YYYY, h:mm:ss a\")","locale":"EU/UK","output":"payload","outputType":"msg","outTz":"Europe/Amsterdam","x":1260,"y":1140,"wires":[[]]},{"id":"11f02e99.0a9fc1","type":"comment","z":"3df0705c.3b30d","name":"Format and display timestamp of data","info":"https://momentjs.com/docs/#/displaying/format/","x":1040,"y":1100,"wires":[]},{"id":"8c865250.5c1a8","type":"moment","z":"3df0705c.3b30d","name":"timeAgo","topic":"","input":"payload.timeParsed","inputType":"msg","inTz":"Europe/Amsterdam","adjAmount":0,"adjType":"days","adjDir":"add","format":"timeAgo","locale":"EU/UK","output":"payload","outputType":"msg","outTz":"Europe/Amsterdam","x":1270,"y":1180,"wires":[["83625b45.0e6948"]]},{"id":"adacfc62.07ef5","type":"moment","z":"3df0705c.3b30d","name":"jsDate","topic":"","input":"payload.timeParsed","inputType":"msg","inTz":"Europe/Amsterdam","adjAmount":0,"adjType":"days","adjDir":"add","format":"jsDate","locale":"EU/UK","output":"payload","outputType":"msg","outTz":"Europe/Amsterdam","x":1260,"y":1220,"wires":[["c40a2243.13d"]]},{"id":"83625b45.0e6948","type":"ui_text","z":"3df0705c.3b30d","group":"368002f4.1520be","order":4,"width":0,"height":0,"name":"Last seen (Ago)","label":"","format":"{{msg.payload}}","layout":"row-left","x":1540,"y":1180,"wires":[]},{"id":"55dc167b.914bb8","type":"function","z":"65ef8841.77c9b8","name":"convert time string to timestamp","func":"msg.payload.timeParsed = Date.parse(msg.payload[msg.payload.length-1].time)\nreturn msg;","outputs":1,"noerr":0,"x":920,"y":1040,"wires":[["7cf5b96a.c4f178","229cca18.484646","f0ff575d.3b16d8"]]},{"id":"7cf5b96a.c4f178","type":"moment","z":"65ef8841.77c9b8","name":"Full","topic":"","input":"payload.timeParsed","inputType":"msg","inTz":"Europe/Amsterdam","adjAmount":0,"adjType":"days","adjDir":"add","format":"(\"dddd, MMMM Do YYYY, h:mm:ss a\")","locale":"EU/UK","output":"payload","outputType":"msg","outTz":"Europe/Amsterdam","x":1160,"y":1040,"wires":[[]]},{"id":"229cca18.484646","type":"moment","z":"65ef8841.77c9b8","name":"timeAgo","topic":"","input":"payload.timeParsed","inputType":"msg","inTz":"Europe/Amsterdam","adjAmount":0,"adjType":"days","adjDir":"add","format":"timeAgo","locale":"EU/UK","output":"payload","outputType":"msg","outTz":"Europe/Amsterdam","x":1170,"y":1080,"wires":[["3c01b5dd.88817a"]]},{"id":"f0ff575d.3b16d8","type":"moment","z":"65ef8841.77c9b8","name":"jsDate","topic":"","input":"payload.timeParsed","inputType":"msg","inTz":"Europe/Amsterdam","adjAmount":0,"adjType":"days","adjDir":"add","format":"jsDate","locale":"EU/UK","output":"payload","outputType":"msg","outTz":"Europe/Amsterdam","x":1160,"y":1120,"wires":[["9b58701e.5bde1"]]},{"id":"3c01b5dd.88817a","type":"ui_text","z":"65ef8841.77c9b8","group":"fe8b6129.f0b8d","order":4,"width":0,"height":0,"name":"Ago","label":"","format":"{{msg.payload}}","layout":"row-left","x":1410,"y":1080,"wires":[]},{"id":"9f1344a8.3c6d58","type":"comment","z":"65ef8841.77c9b8","name":"Format and display timestamp of data","info":"https://momentjs.com/docs/#/displaying/format/","x":940,"y":1000,"wires":[]},{"id":"9b58701e.5bde1","type":"ui_text","z":"65ef8841.77c9b8","group":"fe8b6129.f0b8d","order":5,"width":0,"height":0,"name":"Day","label":"","format":"{{ msg.payload | date:'fullDate' }}","layout":"row-left","x":1410,"y":1120,"wires":[]},{"id":"c40a2243.13d","type":"ui_text","z":"3df0705c.3b30d","group":"368002f4.1520be","order":3,"width":0,"height":0,"name":"Last seen (Day)","label":"","format":"{{ msg.payload | date:'fullDate' }}","layout":"row-left","x":1540,"y":1220,"wires":[]},{"id":"de03117.2b3bcf","type":"change","z":"3df0705c.3b30d","name":"Clear Tekst","rules":[{"t":"set","p":"payload","pt":"msg","to":"","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":630,"y":900,"wires":[["83625b45.0e6948","c40a2243.13d","1828da13.ab4ca6","89a7af8d.bdeb5"]]},{"id":"12fe23f4.d2eccc","type":"change","z":"65ef8841.77c9b8","name":"Clear Last Seen","rules":[{"t":"set","p":"payload","pt":"msg","to":"","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":400,"y":960,"wires":[["3c01b5dd.88817a","9b58701e.5bde1"]]},{"id":"4b920fab.391c2","type":"ui_gauge","z":"431e803c.eeca5","name":"","group":"d600d109.b8998","order":2,"width":0,"height":0,"gtype":"gage","title":"CPU Temperature","label":"C","format":"{{value}}","min":0,"max":"100","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","x":1030,"y":140,"wires":[]},{"id":"ee61c560.25a618","type":"exec","z":"431e803c.eeca5","command":"vcgencmd measure_temp","addpay":false,"append":"","useSpawn":"","timer":"","name":"RPi Temp.","x":670,"y":140,"wires":[["2bbea2b9.e8958e"],[],[]]},{"id":"99557679.b48768","type":"inject","z":"431e803c.eeca5","name":"","topic":"","payload":"","payloadType":"date","repeat":"10","crontab":"","once":false,"x":464.5,"y":148.25,"wires":[["ee61c560.25a618","1db81804.429c18","2bf85048.fe655"]]},{"id":"2bbea2b9.e8958e","type":"function","z":"431e803c.eeca5","name":"","func":"str = msg.payload\nmsg.payload = str.substring(5,9);\nreturn msg;","outputs":1,"noerr":0,"x":850,"y":140,"wires":[["4b920fab.391c2","12556170.b86bbf"]]},{"id":"9e37b25a.1a481","type":"ui_button","z":"431e803c.eeca5","name":"","group":"f82859f8.de6088","order":2,"width":0,"height":0,"passthru":false,"label":"Reboot","tooltip":"","color":"","bgcolor":"","icon":"","payload":"","payloadType":"str","topic":"","x":440,"y":520,"wires":[["1c026953.fa4437"]]},{"id":"1c026953.fa4437","type":"exec","z":"431e803c.eeca5","command":"sudo reboot","addpay":false,"append":"","useSpawn":"","timer":"","name":"Reboot","x":658,"y":520,"wires":[[],[],[]]},{"id":"abed0e54.053b7","type":"ui_button","z":"431e803c.eeca5","name":"","group":"f82859f8.de6088","order":3,"width":0,"height":0,"label":"Shutdown","color":"","bgcolor":"red","icon":"","payload":"","payloadType":"str","topic":"","x":448.5,"y":564.25,"wires":[["e5d5d74.5665f28"]]},{"id":"e5d5d74.5665f28","type":"exec","z":"431e803c.eeca5","command":"sudo shutdown -h now","addpay":false,"append":"","useSpawn":"","timer":"","name":"Shutdown","x":669.5,"y":582.25,"wires":[[],[],[]]},{"id":"12556170.b86bbf","type":"ui_chart","z":"431e803c.eeca5","name":"","group":"d600d109.b8998","order":3,"width":0,"height":0,"label":"","chartType":"line","legend":"false","xformat":"HH:mm:ss","interpolate":"linear","nodata":"","ymin":"","ymax":"","removeOlder":"24","removeOlderPoints":"","removeOlderUnit":"3600","cutout":0,"outputs":2,"x":1030,"y":180,"wires":[[],[]]},{"id":"1db81804.429c18","type":"exec","z":"431e803c.eeca5","command":"top -d 0.5 -b -n2 | grep \"Cpu(s)\"|tail -n 1 | awk '{print $2 + $4}'","addpay":false,"append":"","useSpawn":"","timer":"","name":"CPU Load","x":670,"y":220,"wires":[["d4b045c6.0b7cf8"],[],[]]},{"id":"2bf85048.fe655","type":"exec","z":"431e803c.eeca5","command":"free | grep Mem | awk '{print 100*($3/$7)}'","addpay":false,"append":"","useSpawn":"","timer":"","name":"Free Memory","x":670,"y":300,"wires":[["f841de2.896bd2"],[],[]]},{"id":"d4b045c6.0b7cf8","type":"ui_gauge","z":"431e803c.eeca5","name":"","group":"d600d109.b8998","order":1,"width":0,"height":0,"gtype":"gage","title":"Processor","label":"CPU","format":"{{value}}","min":0,"max":"100","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","x":1030,"y":220,"wires":[]},{"id":"f841de2.896bd2","type":"ui_gauge","z":"431e803c.eeca5","name":"","group":"907f2b7d.1eea18","order":1,"width":0,"height":0,"gtype":"gage","title":"Memory","label":"RAM","format":"{{value | number:1}} %","min":0,"max":"100","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","x":1030,"y":300,"wires":[]},{"id":"c7147838.798688","type":"exec","z":"431e803c.eeca5","command":"df -h","addpay":false,"append":"","useSpawn":"","timer":"","name":"Disk Usage","x":670,"y":380,"wires":[["a73e7b89.e01ef8"],[],[]]},{"id":"a4e99cd9.4e515","type":"ui_gauge","z":"431e803c.eeca5","name":"","group":"8b29f1c7.7244a","order":1,"width":0,"height":0,"gtype":"gage","title":"Disk","label":"Usage","format":"{{value}}","min":0,"max":"100","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","x":1030,"y":380,"wires":[]},{"id":"a73e7b89.e01ef8","type":"function","z":"431e803c.eeca5","name":"","func":"var re = /([0-9]{2})%/\nvar idx = msg.payload.search(re);\nvar str = msg.payload;\nif (idx >=0) {\n str = msg.payload.substring(idx, idx + 2);\n}\nmsg.payload = str;\nreturn msg;","outputs":1,"noerr":0,"x":850,"y":380,"wires":[["a4e99cd9.4e515"]]},{"id":"78f8bef6.e5b8","type":"inject","z":"431e803c.eeca5","name":"","topic":"","payload":"","payloadType":"date","repeat":"60","crontab":"","once":false,"onceDelay":"","x":470,"y":380,"wires":[["c7147838.798688"]]},{"id":"2178a0c5.2284f","type":"change","z":"65ef8841.77c9b8","name":"Show Smart Parks layer","rules":[{"t":"set","p":"payload","pt":"msg","to":"{ \"command\": { \"layer\":\"Smart Parks\" }}","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":1050,"y":920,"wires":[["2c287508.62094a","76177945.e34738"]]},{"id":"e718af13.430f6","type":"change","z":"65ef8841.77c9b8","name":"","rules":[{"t":"set","p":"payload.layer","pt":"msg","to":"Positions","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1260,"y":440,"wires":[["2c287508.62094a"]]},{"id":"dc4b0dbe.7bfb7","type":"change","z":"3df0705c.3b30d","name":"gps_resend","rules":[{"t":"move","p":"payload.gps_resend","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1270,"y":900,"wires":[["993dae75.ffe3f"]]},{"id":"50b0baad.1852c4","type":"ui_chart","z":"3df0705c.3b30d","d":true,"name":"Accelerometer","group":"9adf494e.5e2698","order":1,"width":0,"height":0,"label":"Accelerometer","chartType":"line","legend":"true","xformat":"HH:mm:ss","interpolate":"step","nodata":"","dot":false,"ymin":"","ymax":"","removeOlder":"1","removeOlderPoints":"","removeOlderUnit":"3600","cutout":0,"useOneColor":false,"useUTC":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"useOldStyle":false,"outputs":1,"x":1540,"y":600,"wires":[[]]},{"id":"24f5e7cd.ae42e8","type":"function","z":"3df0705c.3b30d","name":"Last payload received","func":"msg.payload = msg.payload[msg.payload.length-1]\nreturn msg;","outputs":1,"noerr":0,"x":1000,"y":620,"wires":[["92b847dd.f04d98","4d85542f.65591c","e4aed49c.4757b8","489ecc26.85f3a4","127159c9.5eb336","dc4b0dbe.7bfb7","8adcb297.5a00d","c3ecfcd4.e753d","8242ddca.49f1b"]]},{"id":"8adcb297.5a00d","type":"change","z":"3df0705c.3b30d","name":"gps_on_time_total","rules":[{"t":"move","p":"payload.gps_on_time_total","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1290,"y":940,"wires":[["e0b218c9.9a5ea8"]]},{"id":"c3ecfcd4.e753d","type":"change","z":"3df0705c.3b30d","name":"resetCause","rules":[{"t":"move","p":"payload.resetCause","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1270,"y":980,"wires":[["1828da13.ab4ca6"]]},{"id":"8242ddca.49f1b","type":"change","z":"3df0705c.3b30d","name":"charging_status","rules":[{"t":"move","p":"payload.charging_status","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1280,"y":1020,"wires":[["89a7af8d.bdeb5"]]},{"id":"993dae75.ffe3f","type":"ui_text","z":"3df0705c.3b30d","group":"1dac2c4a.c55ea4","order":2,"width":0,"height":0,"name":"GPS resend","label":"GPS resend:","format":"{{msg.payload}}","layout":"row-left","x":1530,"y":900,"wires":[]},{"id":"e0b218c9.9a5ea8","type":"ui_text","z":"3df0705c.3b30d","group":"1dac2c4a.c55ea4","order":1,"width":0,"height":0,"name":"GPS On time","label":"GPS On time:","format":"{{msg.payload}} Sec","layout":"row-left","x":1530,"y":940,"wires":[]},{"id":"bb8658d1.29e7a8","type":"ui_text","z":"3df0705c.3b30d","group":"368002f4.1520be","order":2,"width":0,"height":0,"name":"Last seen","label":"Last seen:","format":"","layout":"row-left","x":1520,"y":1140,"wires":[]},{"id":"1828da13.ab4ca6","type":"ui_text","z":"3df0705c.3b30d","group":"cab10c77.fc4ce","order":1,"width":0,"height":0,"name":"Reset cause","label":"Reset cause:","format":"{{msg.payload}}","layout":"row-left","x":1530,"y":980,"wires":[]},{"id":"89a7af8d.bdeb5","type":"ui_text","z":"3df0705c.3b30d","group":"cab10c77.fc4ce","order":1,"width":0,"height":0,"name":"Charging status","label":"Charging status:","format":"{{msg.payload}}","layout":"row-left","x":1540,"y":1020,"wires":[]},{"id":"71039851.17fe68","type":"ui_text","z":"65ef8841.77c9b8","group":"fe8b6129.f0b8d","order":3,"width":0,"height":0,"name":"Last seen","label":"Last seen:","format":"{{msg.payload}}","layout":"row-left","x":1420,"y":1040,"wires":[]},{"id":"92292c42.f0dd8","type":"function","z":"65ef8841.77c9b8","name":"Last payload received","func":"msg.payload = msg.payload[msg.payload.length-1]\nreturn msg;","outputs":1,"noerr":0,"x":900,"y":1180,"wires":[["ddbbcdd.c21b63","5b696b3d.0b02e4","973b81ec.cb05c","776e4414.77c3bc","f1ea28d7.084a38","8b605242.61f55","44587365.0253dc","250ddf4e.10aa1","5b39152.1d13fec"]]},{"id":"ddbbcdd.c21b63","type":"change","z":"65ef8841.77c9b8","name":"epe","rules":[{"t":"move","p":"payload.epe","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1150,"y":1420,"wires":[["f3912c4.f9ec4d"]]},{"id":"5b696b3d.0b02e4","type":"change","z":"65ef8841.77c9b8","name":"alt","rules":[{"t":"move","p":"payload.alt","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1150,"y":1180,"wires":[["a0bd9ef8.817b7"]]},{"id":"250ddf4e.10aa1","type":"change","z":"65ef8841.77c9b8","name":"hdop","rules":[{"t":"move","p":"payload.hdop","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1150,"y":1460,"wires":[["9ee9e138.2bc0f"]]},{"id":"973b81ec.cb05c","type":"change","z":"65ef8841.77c9b8","name":"lat","rules":[{"t":"move","p":"payload.lat","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1150,"y":1220,"wires":[["18353b99.6b2314"]]},{"id":"776e4414.77c3bc","type":"change","z":"65ef8841.77c9b8","name":"lon","rules":[{"t":"move","p":"payload.lon","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1150,"y":1260,"wires":[["7c6013a6.e180fc"]]},{"id":"f1ea28d7.084a38","type":"change","z":"65ef8841.77c9b8","name":"motion","rules":[{"t":"move","p":"payload.motion","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1150,"y":1300,"wires":[["63e5c60f.fdd238"]]},{"id":"8b605242.61f55","type":"change","z":"65ef8841.77c9b8","name":"satellites","rules":[{"t":"move","p":"payload.satellites","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1160,"y":1340,"wires":[["670812f1.b488ec"]]},{"id":"5b39152.1d13fec","type":"change","z":"65ef8841.77c9b8","name":"snr","rules":[{"t":"move","p":"payload.snr","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1150,"y":1500,"wires":[["c8624842.b141c8"]]},{"id":"44587365.0253dc","type":"change","z":"65ef8841.77c9b8","name":"time_to_fix","rules":[{"t":"move","p":"payload.time_to_fix","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1170,"y":1380,"wires":[["a35a41e.a6af6c"]]},{"id":"a0bd9ef8.817b7","type":"ui_text","z":"65ef8841.77c9b8","group":"122b419b.3bbade","order":0,"width":0,"height":0,"name":"alt","label":"alt","format":"{{msg.payload}}","layout":"row-left","x":1410,"y":1180,"wires":[]},{"id":"18353b99.6b2314","type":"ui_text","z":"65ef8841.77c9b8","group":"122b419b.3bbade","order":0,"width":0,"height":0,"name":"lat","label":"lat","format":"{{msg.payload}}","layout":"row-left","x":1410,"y":1220,"wires":[]},{"id":"7c6013a6.e180fc","type":"ui_text","z":"65ef8841.77c9b8","group":"122b419b.3bbade","order":0,"width":0,"height":0,"name":"lon","label":"lon","format":"{{msg.payload}}","layout":"row-left","x":1410,"y":1260,"wires":[]},{"id":"63e5c60f.fdd238","type":"ui_text","z":"65ef8841.77c9b8","group":"122b419b.3bbade","order":0,"width":0,"height":0,"name":"motion","label":"motion","format":"{{msg.payload}}","layout":"row-left","x":1410,"y":1300,"wires":[]},{"id":"670812f1.b488ec","type":"ui_text","z":"65ef8841.77c9b8","group":"122b419b.3bbade","order":0,"width":0,"height":0,"name":"satellites","label":"satellites","format":"{{msg.payload}}","layout":"row-left","x":1420,"y":1340,"wires":[]},{"id":"a35a41e.a6af6c","type":"ui_text","z":"65ef8841.77c9b8","group":"122b419b.3bbade","order":0,"width":0,"height":0,"name":"time to fix","label":"time to fix","format":"{{msg.payload}}","layout":"row-left","x":1420,"y":1380,"wires":[]},{"id":"f3912c4.f9ec4d","type":"ui_text","z":"65ef8841.77c9b8","group":"122b419b.3bbade","order":0,"width":0,"height":0,"name":"epe","label":"epe","format":"{{msg.payload}}","layout":"row-left","x":1410,"y":1420,"wires":[]},{"id":"9ee9e138.2bc0f","type":"ui_text","z":"65ef8841.77c9b8","group":"122b419b.3bbade","order":0,"width":0,"height":0,"name":"hdop","label":"hdop","format":"{{msg.payload}}","layout":"row-left","x":1410,"y":1460,"wires":[]},{"id":"c8624842.b141c8","type":"ui_text","z":"65ef8841.77c9b8","group":"122b419b.3bbade","order":0,"width":0,"height":0,"name":"snr","label":"snr","format":"{{msg.payload}}","layout":"row-left","x":1410,"y":1500,"wires":[]}]