~/Projects/confbook
git clone https://code.lsong.org/confbook
Commit
- Commit
- d57dc73aef93dcd0175659bf8a331b8997acc709
- Author
- Lsong <[email protected]>
- Date
- 2022-10-11 14:01:22 +0800 +0800
- Diffstat
README.md | 4 acme/README.md | 7 android/README.md | 15 android/adb-apk-install.sh | 4 aria2/README.md | 9 awtrix/README.md | 4 centos/README.md | 13 centos/disable-selinux.sh | 3 clash/README.md | 13 clash/dnsmasq-clash.conf | 2 cron/README.md | 3 dnsmasq/README.md | 5 dnsmasq/conf.available/clash.conf | 3 docker/README.md | 14 docker/scripts/install.sh | 7 emqx/README.md | 4 frp/README.md | 2 git/README.md | 29 grafana/README.md | 15 grafana/torque/.gitignore | 1 grafana/torque/LICENSE | 201 ++ grafana/torque/README.md | 24 grafana/torque/flow-torque.json | 1510 +++++++++++++++++++++ grafana/torque/grafana-torque.json | 2216 +++++++++++++++++++++++++++++++ grafana/torque/telegraf-torque.conf | 42
update
diff --git a/README.md b/README.md index 2dd3d98dbdc7ab2846d386df55a7a067cadc2545..36437d1987ac44659fa2fbfcb8a30cc7fc3b3daa 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# dotfiles +# confbook > my dotfiles @@ -7,7 +7,7 @@ ## Install ```bash -curl -s https://raw.githubusercontent.com/song940/dotfiles/master/install.sh | bash +curl -s https://raw.githubusercontent.com/song940/confbook/master/install.sh | bash ``` ```sh diff --git a/acme/README.md b/acme/README.md new file mode 100644 index 0000000000000000000000000000000000000000..25279cef2f10b87eebc12d46d18af53a483752ae --- /dev/null +++ b/acme/README.md @@ -0,0 +1,7 @@ +## acme.sh + +A pure Unix shell script implementing ACME client protocol + +https://github.com/acmesh-official/acme.sh + +https://letsencrypt.org diff --git a/android/README.md b/android/README.md new file mode 100644 index 0000000000000000000000000000000000000000..d2bc0d43cce63fe6ca2d8525dcaa4b235b43ba07 --- /dev/null +++ b/android/README.md @@ -0,0 +1,15 @@ +## Android + ++ F-Droid ++ Openvpn for Android ++ Termux ++ Xposed ++ Island + +Install `android-platform-tools` + +```sh +apt install android-tools +pkg install android-tools +apk add android-tools +``` diff --git a/android/adb-apk-install.sh b/android/adb-apk-install.sh index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..8ff13f87bc382e4b0aaf2f04d6108a446d25c117 100755 --- a/android/adb-apk-install.sh +++ b/android/adb-apk-install.sh @@ -0,0 +1,4 @@ + +apk=$1 +# adb shell pm install $apk +adb install $apk diff --git a/aria2/README.md b/aria2/README.md new file mode 100644 index 0000000000000000000000000000000000000000..0844230d12d929af7b4165b24da9134617dcade1 --- /dev/null +++ b/aria2/README.md @@ -0,0 +1,9 @@ +## Aria2 + +> aria2 is a lightweight multi-protocol & multi-source, cross platform download utility operated in command-line. It supports HTTP/HTTPS, FTP, SFTP, BitTorrent and Metalink. + +https://aria2.github.io +https://github.com/aria2/aria2 + +Web: +http://ariang.mayswind.net/latest diff --git a/awtrix/README.md b/awtrix/README.md index d7544476a8663f7df4202438fc23614ccc384b77..df1c102f132f704ed9ced35eaa66c002f4e11b47 100644 --- a/awtrix/README.md +++ b/awtrix/README.md @@ -1,3 +1,7 @@ +## Awtrix +Firmware: +// todo: +Controller Server: https://blueforcer.de/awtrix/stable/awtrix.jar diff --git a/centos/README.md b/centos/README.md index 7ee0c57124f3bda9cae63d5efd9c40e5e329e1a5..1d26fbfad0d33db578bfc9814db0f60708bee7ac 100644 --- a/centos/README.md +++ b/centos/README.md @@ -1,12 +1,23 @@ +## CentOS +### Network: +``` + + setenforce 0 -/etc/selinux/config +setenforce 0 +# set `SELINUX=disabled` in /etc/selinux/config + SELINUX=disabled + +### Firewall configuration +```sh firewall-cmd --list-ports firewall-cmd --permanent --add-port=200-300/tcp firewall-cmd --reload +``` diff --git a/centos/disable-selinux.sh b/centos/disable-selinux.sh new file mode 100755 index 0000000000000000000000000000000000000000..d63d9504bcf149fc95bf3bae4fc07272d97c07ae --- /dev/null +++ b/centos/disable-selinux.sh @@ -0,0 +1,3 @@ + +setenforce 0 +sed -i 's/enforcing/disabled/g' /etc/selinux/config diff --git a/clash/README.md b/clash/README.md index 08406283e6036ae04b68839952ff4694856d34ab..9c3a5f7d9734cbabe6bdb10992c0d0742463253d 100644 --- a/clash/README.md +++ b/clash/README.md @@ -7,7 +7,7 @@ ### Docs https://lancellc.gitbook.io/clash -### install +### Install https://github.com/Dreamacro/clash/releases/tag/premium https://github.com/Dreamacro/clash/releases/download/v0.16.0/clash-darwin-amd64-v0.16.0.gz @@ -17,3 +17,14 @@ ```sh setcap cap_net_bind_service,cap_net_admin+ep /usr/local/bin/clash ``` + +### OpenWRT + +1. Download [Clash Premium]() from github.com +2. `gunzip -c ` to /usr/local/bin +3. copy config files to /etc/clash, make sure mode is *fakeip* in config file. +4. start up clash using `/usr/local/bin/clash -d /etc/clash`, 首次启动会下载 mmdb 数据库文件,It'll take a moment,同时观察一下端口情况是否 *port in used* 。 +5. copy startup script to init.d/clash, `service clash start` and `update-rc.d clash enable` +6. clash dns listen 1035, dnsmasq `server=/127.0.0.1#1035/` and no-cache, restart dnsmasq +7. Set forwarding from `reject` to `allow` in OpenWRT's *Firewall Zone Settings* . +8. Reboot the Router. diff --git a/clash/dnsmasq-clash.conf b/clash/dnsmasq-clash.conf new file mode 100644 index 0000000000000000000000000000000000000000..d52d84372db9f263d209b6f74598500194ea7ea2 --- /dev/null +++ b/clash/dnsmasq-clash.conf @@ -0,0 +1,2 @@ + +server=127.0.0.1#1053 diff --git a/cron/README.md b/cron/README.md new file mode 100644 index 0000000000000000000000000000000000000000..7c30ca549553727c9f6af37a2cba38ad8bf056ac --- /dev/null +++ b/cron/README.md @@ -0,0 +1,3 @@ +## Crontab + +https://crontab.guru diff --git a/dnsmasq/README.md b/dnsmasq/README.md index 64ac27a0343686dcebe9a034fc3cd3ebe6c40782..0ede525aa06605829e35b55f2c82cec11e36fdf9 100644 --- a/dnsmasq/README.md +++ b/dnsmasq/README.md @@ -1 +1,4 @@ -## dnsmasq.conf +## Dnsmasq + ++ DNS ++ DHCP diff --git a/dnsmasq/conf.available/clash.conf b/dnsmasq/conf.available/clash.conf old mode 100644 new mode 120000 index d52d84372db9f263d209b6f74598500194ea7ea2..3feff650ce22bab0f42288c5a25f5394cc4b47a9 --- a/dnsmasq/conf.available/clash.conf +++ b/dnsmasq/conf.available/clash.conf @@ -1,2 +1 @@ - -server=127.0.0.1#1053 +../../clash/dnsmasq-clash.conf \ No newline at end of file diff --git a/docker/README.md b/docker/README.md index 66cfdd89a3284639c1ea8dbaff06194b87c6b666..79b09a534b377c5b468b9dad6eac639a4a83c0a6 100644 --- a/docker/README.md +++ b/docker/README.md @@ -1,20 +1,30 @@ + + ## Install Docker +``` ./install-docker.sh +``` +./install-docker.sh -## Install Docker Compose + +## Install Docker Compose + curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose +Cannot start service db: cgroups: cgroup mountpoint does not exist: unknown +https://github.com/docker/for-linux/issues/219#issuecomment-375160449 +``` Cannot start service db: cgroups: cgroup mountpoint does not exist: unknown https://github.com/docker/for-linux/issues/219#issuecomment-375160449 -``` +```sh sudo mkdir /sys/fs/cgroup/systemd sudo mount -t cgroup -o none,name=systemd cgroup /sys/fs/cgroup/systemd ``` diff --git a/docker/scripts/install.sh b/docker/scripts/install.sh index 752703148af51524b8a93a4aa9e2ce4dd8c6d9d1..a2fb30a2230f576d66be652a8028f7444e7980ba 100755 --- a/docker/scripts/install.sh +++ b/docker/scripts/install.sh @@ -1,8 +1,9 @@ #!/usr/bin/env sh -apt install iptables -y +v="20.10.9" -# curl -sL https://download.docker.com/linux/static/stable/x86_64/docker-19.03.9.tgz | tar -xzvf - -C /usr/local + -curl -sL https://download.docker.com/linux/static/stable/x86_64/docker-20.10.9.tgz | tar -xzvf - -C /usr/local +apt install iptables -y +curl -sL https://download.docker.com/linux/static/stable/x86_64/docker-${v}.tgz | tar -xzvf - -C /usr/local ln -s /usr/local/docker/* /usr/local/bin ln -s /root/confbook/docker /etc/ diff --git a/emqx/README.md b/emqx/README.md index 910996d71b842c3630e145a694a1300cbbb18794..323d6fc8b3a3889cb16976c439cb825e12c2858e 100644 --- a/emqx/README.md +++ b/emqx/README.md @@ -1,3 +1,7 @@ + +## EMQX + +### Password configuration ```sh docker exec -it mqtt-emqx-1 ./bin/emqx_ctl admins passwd admin password diff --git a/frp/README.md b/frp/README.md index b0e317c6b24cca0d57e114642295452632f7e762..ac04022ef85edb36aa701ec6f313bb816ca36cfe 100644 --- a/frp/README.md +++ b/frp/README.md @@ -1,3 +1,3 @@ - +## FRP https://github.com/fatedier/frp/releases/download/v0.23.1/frp_0.23.1_linux_amd64.tar.gz diff --git a/git/README.md b/git/README.md new file mode 100644 index 0000000000000000000000000000000000000000..83030f59a2a8d0115518bc7fe277906c96c1f7fd --- /dev/null +++ b/git/README.md @@ -0,0 +1,29 @@ +## Git + +https://git-scm.com + +### Install + +```sh +# macOS +brew install git +# Linux +apt install git +yum install git +apk add git +# Termux +pkg install git +``` + +### Setup + +```sh +git config --global user.name "yourname" +git config --global user.email "[email protected]" +``` + +or + +```sh +ln -s /root/confbook/git/config ~/.gitconfig +``` diff --git a/grafana/README.md b/grafana/README.md index e43a97364ddb86c05504fa4f6cdd9b1bc52b4d24..b8b147f72e1d5eec2c89aec325ccd11621a290e8 100644 --- a/grafana/README.md +++ b/grafana/README.md @@ -1,10 +1,12 @@ # Grafana +Setup datasource from Grafana Settings + https://grafana.com/grafana/dashboards/928 https://grafana.com/grafana/dashboards/5063-nginx/ -# Clash Tracing Dashboard +## Clash Tracing Dashboard An example of a clash tracing exporter API. @@ -18,8 +20,19 @@ 1. modify `.env` and start (`docker-compose up -d`) 2. setup Grafana (add datasource) +## Torque-Grafana-Dashboard + +> Grafana Dashboard for Torque App Stats (Android, ODBII) - plot, pivot and display your +> Using seanauff's wonderful Node Red endpoint to push the data from Torque -> Node Red -> MQTT and into Influx/Grafana # Grafana + + +![Example](torque/images/Torque0.png) +![Example](torque/images/Torque1.png) +![Example](torque/images/Torque2.png) + +https://github.com/seanauff/node-red-torque ``` grafana-cli plugins install grafana-worldmap-panel diff --git a/grafana/torque/.gitignore b/grafana/torque/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..187d3623f5f41df2a34ac700a8556bf39c6a9f08 --- /dev/null +++ b/grafana/torque/.gitignore @@ -0,0 +1 @@ +/images diff --git a/grafana/torque/LICENSE b/grafana/torque/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..261eeb9e9f8b2b4b0d119366dda99c6fd7d35c64 --- /dev/null +++ b/grafana/torque/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/grafana/torque/README.md b/grafana/torque/README.md new file mode 100644 index 0000000000000000000000000000000000000000..d1d0632da719b0e1754ad1660cf55485c5c81c5a --- /dev/null +++ b/grafana/torque/README.md @@ -0,0 +1,24 @@ +# Torque-Grafana-Dashboard +Grafana Dashboard for Torque App Stats (Android, ODBII) - plot, pivot and display your + +Using seanauff's wonderful Node Red endpoint to push the data from Torque -> Node Red -> MQTT and into Influx/Grafana + +https://github.com/seanauff/node-red-torque + +![Example](images/Torque0.png) +![Example](images/Torque1.png) +![Example](images/Torque2.png) + + +# Requires; + +1. Torque Pro App for Android: https://play.google.com/store/apps/details?id=org.prowl.torque&hl=en_US + 1. ODBII Bluetooth connector (Amazon should have one for <$10) +1. Node Red: https://github.com/node-red +1. Node-Red-Torque: https://github.com/seanauff/node-red-torque +1. MQTT (Personally using Mosquitto) https://mosquitto.org/ +1. Telegraf (Using MQTT Collector) https://www.influxdata.com/time-series-platform/telegraf/ +1. InfluxDB https://www.influxdata.com/ +1. Grafana https://grafana.com/ + 1. World Map Plugin for Grafana https://grafana.com/grafana/plugins/grafana-worldmap-panel/installation + 1. Pie Chart Plugin for Grafana https://grafana.com/grafana/plugins/grafana-piechart-panel diff --git a/grafana/torque/flow-torque.json b/grafana/torque/flow-torque.json new file mode 100644 index 0000000000000000000000000000000000000000..c4ba591c4bcb3e00da4bf97711c5ff2f07eab965 --- /dev/null +++ b/grafana/torque/flow-torque.json @@ -0,0 +1,1510 @@ +[ + { + "id": "1051da59.797066", + "type": "tab", + "label": "Torque", + "disabled": false, + "info": "" + }, + { + "id": "6d632dc8.c3b994", + "type": "http in", + "z": "1051da59.797066", + "name": "", + "url": "/upload", + "method": "get", + "upload": true, + "swaggerDoc": "", + "x": 130, + "y": 60, + "wires": [ + [ + "cf272a44.fc08b" + ] + ] + }, + { + "id": "d3c7f0f6.360e", + "type": "http response", + "z": "1051da59.797066", + "name": "http response OK!", + "statusCode": "200", + "headers": { + "OK!": "" + }, + "x": 510, + "y": 40, + "wires": [] + }, + { + "id": "8b6d2f73.79c94", + "type": "json", + "z": "1051da59.797066", + "name": "", + "property": "payload", + "action": "obj", + "pretty": false, + "x": 410, + "y": 160, + "wires": [ + [ + "ad29e8dd.74e438", + "d70fbc90.23d5c" + ] + ] + }, + { + "id": "ad29e8dd.74e438", + "type": "change", + "z": "1051da59.797066", + "name": "", + "rules": [ + { + "t": "set", + "p": "topic", + "pt": "msg", + "to": "torque/raw", + "tot": "str" + } + ], + "action": "", + "property": "", + "from": "", + "to": "", + "reg": false, + "x": 770, + "y": 160, + "wires": [ + [] + ] + }, + { + "id": "b043ff20.449ac8", + "type": "debug", + "z": "1051da59.797066", + "name": "", + "active": true, + "tosidebar": false, + "console": false, + "tostatus": false, + "complete": "payload", + "targetType": "msg", + "x": 750, + "y": 80, + "wires": [] + }, + { + "id": "ffec7c10.fa3d6", + "type": "mqtt out", + "z": "1051da59.797066", + "name": "", + "topic": "", + "qos": "", + "retain": "", + "broker": "56a849d2.194a68", + "x": 1570, + "y": 160, + "wires": [] + }, + { + "id": "52b74919.1194b8", + "type": "function", + "z": "1051da59.797066", + "name": "str2num", + "func": "msg.payload.time = parseInt(msg.payload.time);\nmsg.payload.MAFR = parseFloat(msg.payload.MAFR);\nmsg.payload.throttlePosManifold = parseFloat(msg.payload.throttlePosManifold);\n//msg.payload.airStatus = parseFloat(msg.payload.airStatus);\nmsg.payload.fuelTrimBank1Sensor1 = parseFloat(msg.payload.fuelTrimBank1Sensor1);\nmsg.payload.fuelTrimBank1Sensor2 = parseFloat(msg.payload.fuelTrimBank1Sensor2);\nmsg.payload.fuelTrimBank1Sensor3 = parseFloat(msg.payload.fuelTrimBank1Sensor3);\nmsg.payload.fuelTrimBank1Sensor4 = parseFloat(msg.payload.fuelTrimBank1Sensor4);\nmsg.payload.fuelTrimBank2Sensor1 = parseFloat(msg.payload.fuelTrimBank2Sensor1);\nmsg.payload.fuelTrimBank2Sensor2 = parseFloat(msg.payload.fuelTrimBank2Sensor2);\nmsg.payload.fuelTrimBank2Sensor3 = parseFloat(msg.payload.fuelTrimBank2Sensor3);\nmsg.payload.fuelTrimBank2Sensor4 = parseFloat(msg.payload.fuelTrimBank2Sensor4);\nmsg.payload.runTime = parseFloat(msg.payload.runTime);\nmsg.payload.distTraveledWithCELLit = parseFloat(msg.payload.distTraveledWithCELLit);\nmsg.payload.fuelRailPressureManifoldVacuumRelative = parseFloat(msg.payload.fuelRailPressureManifoldVacuumRelative);\nmsg.payload.fuelRailPressure = parseFloat(msg.payload.fuelRailPressure);\nmsg.payload.O2SensorEquivalenceRatio1 = parseFloat(msg.payload.O2SensorEquivalenceRatio1);\nmsg.payload.O2SensorEquivalenceRatio2 = parseFloat(msg.payload.O2SensorEquivalenceRatio2);\nmsg.payload.O2SensorEquivalenceRatio3 = parseFloat(msg.payload.O2SensorEquivalenceRatio3);\nmsg.payload.O2SensorEquivalenceRatio4 = parseFloat(msg.payload.O2SensorEquivalenceRatio4);\nmsg.payload.O2SensorEquivalenceRatio5 = parseFloat(msg.payload.O2SensorEquivalenceRatio5);\nmsg.payload.O2SensorEquivalenceRatio6 = parseFloat(msg.payload.O2SensorEquivalenceRatio6);\nmsg.payload.O2SensorEquivalenceRatio7 = parseFloat(msg.payload.O2SensorEquivalenceRatio7);\nmsg.payload.O2SensorEquivalenceRatio8 = parseFloat(msg.payload.O2SensorEquivalenceRatio8);\nmsg.payload.EGRCommanded = parseFloat(msg.payload.EGRCommanded);\nmsg.payload.EGRError = parseFloat(msg.payload.EGRError);\nmsg.payload.fuelLevelFromECU = parseFloat(msg.payload.fuelLevelFromECU);\n//msg.payload.fuelStatus = parseFloat(msg.payload.fuelStatus);\nmsg.payload.distTraveledSinceCodesCleared = parseFloat(msg.payload.distTraveledSinceCodesCleared);\nmsg.payload.evapSysVaporPressure = parseFloat(msg.payload.evapSysVaporPressure);\nmsg.payload.barometerVehicle = parseFloat(msg.payload.barometerVehicle);\nmsg.payload.O2SensorEquivalenceRatioAlternate1 = parseFloat(msg.payload.O2SensorEquivalenceRatioAlternate1);\nmsg.payload.catalystTempBank1Sensor1 = parseFloat(msg.payload.catalystTempBank1Sensor1);\nmsg.payload.catalystTempBank2Sensor1 = parseFloat(msg.payload.catalystTempBank2Sensor1);\nmsg.payload.catalystTempBank1Sensor2 = parseFloat(msg.payload.catalystTempBank1Sensor2);\nmsg.payload.catalystTempBank2Sensor2 = parseFloat(msg.payload.catalystTempBank2Sensor2);\nmsg.payload.engineLoad = parseFloat(msg.payload.engineLoad);\nmsg.payload.voltageControlModule = parseFloat(msg.payload.voltageControlModule);\nmsg.payload.engineLoadAbsolute = parseFloat(msg.payload.engineLoadAbsolute);\nmsg.payload.commandedEquivalenceRatioLambda = parseFloat(msg.payload.commandedEquivalenceRatioLambda);\nmsg.payload.throttlePositionRelative = parseFloat(msg.payload.throttlePositionRelative);\nmsg.payload.ambientAirTemp = parseFloat(msg.payload.ambientAirTemp);\nmsg.payload.throttlePositionAbsoluteB = parseFloat(msg.payload.throttlePositionAbsoluteB);\nmsg.payload.acceleratorPedalPositionD = parseFloat(msg.payload.acceleratorPedalPositionD);\nmsg.payload.acceleratorPedalPositionE = parseFloat(msg.payload.acceleratorPedalPositionE);\nmsg.payload.acceleratorPedalPositionF = parseFloat(msg.payload.acceleratorPedalPositionF);\nmsg.payload.engineCoolantTemp = parseFloat(msg.payload.engineCoolantTemp);\nmsg.payload.acceleratorPedalPositionRelative = parseFloat(msg.payload.acceleratorPedalPositionRelative);\nmsg.payload.ethanolFuelPercent = parseFloat(msg.payload.ethanolFuelPercent);\nmsg.payload.relativeAcceleratorPedalPosition = parseFloat(msg.payload.relativeAcceleratorPedalPosition);\nmsg.payload.hybridBatteryCharge = parseFloat(msg.payload.hybridBatteryCharge);\nmsg.payload.engineOilTemp = parseFloat(msg.payload.engineOilTemp);\nmsg.payload.fuelTrimShortTermbank1 = parseFloat(msg.payload.fuelTrimShortTermbank1);\nmsg.payload.torqueDemanded = parseFloat(msg.payload.torqueDemanded);\nmsg.payload.torqueActual = parseFloat(msg.payload.torqueActual);\nmsg.payload.torqueReference = parseFloat(msg.payload.torqueReference);\nmsg.payload.fuelTrimLongTermBank1 = parseFloat(msg.payload.fuelTrimLongTermBank1);\nmsg.payload.turboPressureControl = parseFloat(msg.payload.turboPressureControl);\nmsg.payload.exhaustPressure = parseFloat(msg.payload.exhaustPressure);\nmsg.payload.chargeAirCoolerTemp = parseFloat(msg.payload.chargeAirCoolerTemp);\nmsg.payload.exhaustGasTempBank1Sensor1 = parseFloat(msg.payload.exhaustGasTempBank1Sensor1);\nmsg.payload.exhaustGasTempBank2Sensor1 = parseFloat(msg.payload.exhaustGasTempBank2Sensor1);\nmsg.payload.DPFPressure = parseFloat(msg.payload.DPFPressure);\nmsg.payload.DPFTemp = parseFloat(msg.payload.DPFTemp);\nmsg.payload.fuelTrimShortTermBank2 = parseFloat(msg.payload.fuelTrimShortTermBank2);\nmsg.payload.NOxPreSCR = parseFloat(msg.payload.NOxPreSCR);\nmsg.payload.fuelTrimLongTermBank2 = parseFloat(msg.payload.fuelTrimLongTermBank2);\nmsg.payload.fuelPressure = parseFloat(msg.payload.fuelPressure);\nmsg.payload.intakeManifoldPressure = parseFloat(msg.payload.intakeManifoldPressure);\nmsg.payload.transmissionTempMethod2 = parseFloat(msg.payload.transmissionTempMethod2);\nmsg.payload.engineRPM = parseFloat(msg.payload.engineRPM);\nmsg.payload.speedOBD = parseFloat(msg.payload.speedOBD);\nmsg.payload.timingAdvance = parseFloat(msg.payload.timingAdvance);\nmsg.payload.intakeAirTemp = parseFloat(msg.payload.intakeAirTemp);\nmsg.payload.transmissionTempMethod1 = parseFloat(msg.payload.transmissionTempMethod1);\nmsg.payload.GPSSpeed = parseFloat(msg.payload.GPSSpeed);\nmsg.payload.GPSLongitude = parseFloat(msg.payload.GPSLongitude);\nmsg.payload.GPSLatitude = parseFloat(msg.payload.GPSLatitude);\nmsg.payload.GPSBearing1 = parseFloat(msg.payload.GPSBearing1);\nmsg.payload.GPSAltitude = parseFloat(msg.payload.GPSAltitude);\nmsg.payload.MPGInstant = parseFloat(msg.payload.MPGInstant);\nmsg.payload.turboBoostandVac = parseFloat(msg.payload.turboBoostandVac);\nmsg.payload.KPLInstant = parseFloat(msg.payload.KPLInstant);\nmsg.payload.tripDistance = parseFloat(msg.payload.tripDistance);\nmsg.payload.MPGtripAvg = parseFloat(msg.payload.MPGtripAvg);\nmsg.payload.KPLtripAvg = parseFloat(msg.payload.KPLtripAvg);\nmsg.payload.LP100KMInstant = parseFloat(msg.payload.LP100KMInstant);\nmsg.payload.LP100KMtripAvg = parseFloat(msg.payload.LP100KMtripAvg);\nmsg.payload.tripDistanceVehicleProfile = parseFloat(msg.payload.tripDistanceVehicleProfile);\nmsg.payload.O2VoltsBank1Sensor1 = parseFloat(msg.payload.O2VoltsBank1Sensor1);\nmsg.payload.O2VoltsBank1Sensor2 = parseFloat(msg.payload.O2VoltsBank1Sensor2);\nmsg.payload.O2VoltsBank1Sensor3 = parseFloat(msg.payload.O2VoltsBank1Sensor3);\nmsg.payload.O2VoltsBank1Sensor4 = parseFloat(msg.payload.O2VoltsBank1Sensor4);\nmsg.payload.O2VoltsBank2Sensor1 = parseFloat(msg.payload.O2VoltsBank2Sensor1);\nmsg.payload.O2VoltsBank2Sensor2 = parseFloat(msg.payload.O2VoltsBank2Sensor2);\nmsg.payload.O2VoltsBank2Sensor3 = parseFloat(msg.payload.O2VoltsBank2Sensor3);\nmsg.payload.O2VoltsBank2Sensor4 = parseFloat(msg.payload.O2VoltsBank2Sensor4);\nmsg.payload.accelerationX = parseFloat(msg.payload.accelerationX);\nmsg.payload.accelerationY = parseFloat(msg.payload.accelerationY);\nmsg.payload.accelerationZ = parseFloat(msg.payload.accelerationZ);\nmsg.payload.accelerationTot = parseFloat(msg.payload.accelerationTot);\nmsg.payload.torqueCalculated = parseFloat(msg.payload.torqueCalculated);\nmsg.payload.horsepowerWheels = parseFloat(msg.payload.horsepowerWheels);\nmsg.payload.timerFrom0to60mph = parseFloat(msg.payload.timerFrom0to60mph);\nmsg.payload.timerFrom0to100kph = parseFloat(msg.payload.timerFrom0to100kph);\nmsg.payload.timerQuarterMile = parseFloat(msg.payload.timerQuarterMile);\nmsg.payload.timerEighthMile = parseFloat(msg.payload.timerEighthMile);\nmsg.payload.GPSvsOBDSpeedDiff = parseFloat(msg.payload.GPSvsOBDSpeedDiff);\nmsg.payload.voltageOBDAdapter = parseFloat(msg.payload.voltageOBDAdapter);\nmsg.payload.GPSAccuracy = parseFloat(msg.payload.GPSAccuracy);\nmsg.payload.GPSSatellites = parseFloat(msg.payload.GPSSatellites);\nmsg.payload.GPSBearing2 = parseFloat(msg.payload.GPSBearing2);\nmsg.payload.O2VoltsWideRangeSensor1 = parseFloat(msg.payload.O2VoltsWideRangeSensor1);\nmsg.payload.O2VoltsWideRangeSensor2 = parseFloat(msg.payload.O2VoltsWideRangeSensor2);\nmsg.payload.O2VoltsWideRangeSensor3 = parseFloat(msg.payload.O2VoltsWideRangeSensor3);\nmsg.payload.O2VoltsWideRangeSensor4 = parseFloat(msg.payload.O2VoltsWideRangeSensor4);\nmsg.payload.O2VoltsWideRangeSensor5 = parseFloat(msg.payload.O2VoltsWideRangeSensor5);\nmsg.payload.O2VoltsWideRangeSensor6 = parseFloat(msg.payload.O2VoltsWideRangeSensor6);\nmsg.payload.O2VoltsWideRangeSensor7 = parseFloat(msg.payload.O2VoltsWideRangeSensor7);\nmsg.payload.O2VoltsWideRangeSensor8 = parseFloat(msg.payload.O2VoltsWideRangeSensor8);\nmsg.payload.airFuelRatioMeasured = parseFloat(msg.payload.airFuelRatioMeasured);\nmsg.payload.tiltX = parseFloat(msg.payload.tiltX);\nmsg.payload.tiltY = parseFloat(msg.payload.tiltY);\nmsg.payload.tiltZ = parseFloat(msg.payload.tiltZ);\nmsg.payload.airFuelRatioCommanded = parseFloat(msg.payload.airFuelRatioCommanded);\nmsg.payload.timerFrom0to200kph = parseFloat(msg.payload.timerFrom0to200kph);\nmsg.payload.CO2Instant = parseFloat(msg.payload.CO2Instant);\nmsg.payload.CO2Avg = parseFloat(msg.payload.CO2Avg);\nmsg.payload.fuelFlowRatePerMin = parseFloat(msg.payload.fuelFlowRatePerMin);\nmsg.payload.fuelCostTrip = parseFloat(msg.payload.fuelCostTrip);\nmsg.payload.fuelFlowRatePerHour = parseFloat(msg.payload.fuelFlowRatePerHour);\nmsg.payload.timerFrom60to120mph = parseFloat(msg.payload.timerFrom60to120mph);\nmsg.payload.timerFrom60to80mph = parseFloat(msg.payload.timerFrom60to80mph);\nmsg.payload.timerFrom40to60mph = parseFloat(msg.payload.timerFrom40to60mph);\nmsg.payload.timerFrom80to100mph = parseFloat(msg.payload.timerFrom80to100mph);\nmsg.payload.tripSpeedAvgWhileMoving = parseFloat(msg.payload.tripSpeedAvgWhileMoving);\nmsg.payload.timerFrom100to0kph = parseFloat(msg.payload.timerFrom100to0kph);\nmsg.payload.timerFrom60to0mph = parseFloat(msg.payload.timerFrom60to0mph);\nmsg.payload.timerSinceJourneyStart = parseFloat(msg.payload.timerSinceJourneyStart);\nmsg.payload.timerStationary = parseFloat(msg.payload.timerStationary);\nmsg.payload.timerMoving = parseFloat(msg.payload.timerMoving);\nmsg.payload.volumetricEfficiencyCalculated = parseFloat(msg.payload.volumetricEfficiencyCalculated);\nmsg.payload.distanceToEmptyCalculated = parseFloat(msg.payload.distanceToEmptyCalculated);\nmsg.payload.fuelRemainingCalculated = parseFloat(msg.payload.fuelRemainingCalculated);\nmsg.payload.costPerMileInstant = parseFloat(msg.payload.costPerMileInstant);\nmsg.payload.costPerMileTrip = parseFloat(msg.payload.costPerMileTrip);\nmsg.payload.barometerAndroid = parseFloat(msg.payload.barometerAndroid);\nmsg.payload.fuelUsedTrip = parseFloat(msg.payload.fuelUsedTrip);\nmsg.payload.tripSpeedAvg = parseFloat(msg.payload.tripSpeedAvg);\nmsg.payload.enginekWWheels = parseFloat(msg.payload.enginekWWheels);\nmsg.payload.timerFrom80to120kph = parseFloat(msg.payload.timerFrom80to120kph);\nmsg.payload.timerFrom60to130mph = parseFloat(msg.payload.timerFrom60to130mph);\nmsg.payload.timerFrom0to30mph = parseFloat(msg.payload.timerFrom0to30mph);\nmsg.payload.exhaustGasTempBank1Sensor2 = parseFloat(msg.payload.exhaustGasTempBank1Sensor2);\nmsg.payload.exhaustGasTempBank1Sensor3 = parseFloat(msg.payload.exhaustGasTempBank1Sensor3);\nmsg.payload.exhaustGasTempBank1Sensor4 = parseFloat(msg.payload.exhaustGasTempBank1Sensor4);\nmsg.payload.exhaustGasTempBank2Sensor2 = parseFloat(msg.payload.exhaustGasTempBank2Sensor2);\nmsg.payload.exhaustGasTempBank2Sensor3 = parseFloat(msg.payload.exhaustGasTempBank2Sensor3);\nmsg.payload.exhaustGasTempBank2Sensor4 = parseFloat(msg.payload.exhaustGasTempBank2Sensor4);\nmsg.payload.NOxPostSCR = parseFloat(msg.payload.NOxPostSCR);\nmsg.payload.drivingPercentCity = parseFloat(msg.payload.drivingPercentCity);\nmsg.payload.drivingPercentHighway = parseFloat(msg.payload.drivingPercentHighway);\nmsg.payload.drivingPercentIdle = parseFloat(msg.payload.drivingPercentIdle);\nmsg.payload.batteryLevelAndroid = parseFloat(msg.payload.batteryLevelAndroid);\nmsg.payload.MPGLongTermAvg = parseFloat(msg.payload.MPGLongTermAvg);\nmsg.payload.KPLLongTermAvg = parseFloat(msg.payload.KPLLongTermAvg);\nmsg.payload.LP100KMLongTermAvg = parseFloat(msg.payload.LP100KMLongTermAvg);\nreturn msg;", + "outputs": 1, + "noerr": 0, + "x": 940, + "y": 260, + "wires": [ + [ + "f8b64b5e.e7ce" + ] + ] + }, + { + "id": "3c83039.65050fc", + "type": "debug", + "z": "1051da59.797066", + "name": "", + "active": true, + "tosidebar": true, + "console": false, + "tostatus": false, + "complete": "payload", + "targetType": "msg", + "x": 1470, + "y": 300, + "wires": [] + }, + { + "id": "84b76083.62f398", + "type": "inject", + "z": "1051da59.797066", + "name": "testdata", + "topic": "", + "payload": "{\"eml\":\"torquetest\",\"v\":\"8\",\"session\":\"1559309451755\",\"id\":\"282d443464cf7afc0051c57afba43006\",\"time\":\"1559313070844\",\"kff1005\":[\"-71.089996\",\"-71.089996\"],\"kff1006\":[\"42.362714\",\"42.362714\"],\"kff1001\":[\"0.0\",\"0.0\"],\"kff1007\":\"0.0\",\"k47\":\"24.313726\",\"kff1223\":\"0.01545088\",\"kff1220\":\"-0.022440217\",\"kff1221\":\"8.1349094E-4\",\"kff1222\":\"0.91485566\",\"kff124d\":\"14.08\",\"k46\":\"27.0\",\"kff129a\":\"79.0\",\"kff1272\":\"0.0\",\"kff1270\":\"1012.35156\",\"k33\":\"104.0\",\"k3c\":\"28.699997\",\"k3d\":\"28.699997\",\"k44\":\"1.0\",\"k2c\":\"0.0\",\"k2d\":\"0.0\",\"k5\":\"29.0\",\"k4\":\"0.0\",\"k43\":\"0.0\",\"kc\":\"0.0\",\"k32\":\"-34.25\",\"k2f\":\"100.0\",\"k22\":\"100.625\",\"kff1239\":\"51.456\",\"kff1010\":\"-100.840087890625\",\"kff123b\":\"0.0\",\"kff123a\":\"2.0\",\"kff1237\":\"0.0\",\"kf\":\"40.0\",\"kb\":\"104.0\",\"k10\":\"0.0\",\"kff1201\":\"512.0\",\"k45\":\"5.882353\",\"k1f\":\"0.0\",\"kd\":\"0.0\",\"k11\":\"18.431374\",\"ke\":\"10.0\",\"kff1205\":\"0.0\",\"kff1202\":\"0.0\",\"k42\":\"12.109\",\"kff1238\":\"12.4\"}", + "payloadType": "json", + "repeat": "", + "crontab": "", + "once": false, + "onceDelay": 0.1, + "x": 190, + "y": 300, + "wires": [ + [ + "8b6d2f73.79c94" + ] + ] + }, + { + "id": "19625f35.0e6039", + "type": "moment", + "z": "1051da59.797066", + "name": "", + "topic": "", + "input": "payload.session", + "inputType": "msg", + "inTz": "ETC/GMT", + "adjAmount": 0, + "adjType": "days", + "adjDir": "add", + "format": "LLL", + "locale": "POSIX", + "output": "payload.session", + "outputType": "msg", + "outTz": "America/New_York", + "x": 1280, + "y": 260, + "wires": [ + [ + "3c87de8f.38df52", + "3c83039.65050fc" + ] + ] + }, + { + "id": "d70fbc90.23d5c", + "type": "change", + "z": "1051da59.797066", + "name": "Rename PIDs", + "rules": [ + { + "t": "move", + "p": "payload.k10", + "pt": "msg", + "to": "payload.MAFR", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k11", + "pt": "msg", + "to": "payload.throttlePosManifold", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k12", + "pt": "msg", + "to": "payload.airStatus", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k14", + "pt": "msg", + "to": "payload.fuelTrimBank1Sensor1", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k15", + "pt": "msg", + "to": "payload.fuelTrimBank1Sensor2", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k16", + "pt": "msg", + "to": "payload.fuelTrimBank1Sensor3", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k17", + "pt": "msg", + "to": "payload.fuelTrimBank1Sensor4", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k18", + "pt": "msg", + "to": "payload.fuelTrimBank2Sensor1", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k19", + "pt": "msg", + "to": "payload.fuelTrimBank2Sensor2", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k1a", + "pt": "msg", + "to": "payload.fuelTrimBank2Sensor3", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k1b", + "pt": "msg", + "to": "payload.fuelTrimBank2Sensor4", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k1f", + "pt": "msg", + "to": "payload.runTime", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k21", + "pt": "msg", + "to": "payload.distTraveledWithCELLit", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k22", + "pt": "msg", + "to": "payload.fuelRailPressureManifoldVacuumRelative", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k23", + "pt": "msg", + "to": "payload.fuelRailPressure", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k24", + "pt": "msg", + "to": "payload.O2SensorEquivalenceRatio1", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k25", + "pt": "msg", + "to": "payload.O2SensorEquivalenceRatio2", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k26", + "pt": "msg", + "to": "payload.O2SensorEquivalenceRatio3", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k27", + "pt": "msg", + "to": "payload.O2SensorEquivalenceRatio4", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k28", + "pt": "msg", + "to": "payload.O2SensorEquivalenceRatio5", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k29", + "pt": "msg", + "to": "payload.O2SensorEquivalenceRatio6", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k2a", + "pt": "msg", + "to": "payload.O2SensorEquivalenceRatio7", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k2b", + "pt": "msg", + "to": "payload.O2SensorEquivalenceRatio8", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k2c", + "pt": "msg", + "to": "payload.EGRCommanded", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k2d", + "pt": "msg", + "to": "payload.EGRError", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k2f", + "pt": "msg", + "to": "payload.fuelLevelFromECU", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k3", + "pt": "msg", + "to": "payload.fuelStatus", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k31", + "pt": "msg", + "to": "payload.distTraveledSinceCodesCleared", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k32", + "pt": "msg", + "to": "payload.evapSysVaporPressure", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k33", + "pt": "msg", + "to": "payload.barometerVehicle", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k34", + "pt": "msg", + "to": "payload.O2SensorEquivalenceRatioAlternate1", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k3c", + "pt": "msg", + "to": "payload.catalystTempBank1Sensor1", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k3d", + "pt": "msg", + "to": "payload.catalystTempBank2Sensor1", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k3e", + "pt": "msg", + "to": "payload.catalystTempBank1Sensor2", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k3f", + "pt": "msg", + "to": "payload.catalystTempBank2Sensor2", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k4", + "pt": "msg", + "to": "payload.engineLoad", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k42", + "pt": "msg", + "to": "payload.voltageControlModule", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k43", + "pt": "msg", + "to": "payload.engineLoadAbsolute", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k44", + "pt": "msg", + "to": "payload.commandedEquivalenceRatioLambda", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k45", + "pt": "msg", + "to": "payload.throttlePositionRelative", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k46", + "pt": "msg", + "to": "payload.ambientAirTemp", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k47", + "pt": "msg", + "to": "payload.throttlePositionAbsoluteB", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k49", + "pt": "msg", + "to": "payload.acceleratorPedalPositionD", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k4a", + "pt": "msg", + "to": "payload.acceleratorPedalPositionE", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k4b", + "pt": "msg", + "to": "payload.acceleratorPedalPositionF", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k5", + "pt": "msg", + "to": "payload.engineCoolantTemp", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k5a", + "pt": "msg", + "to": "payload.acceleratorPedalPositionRelative", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k52", + "pt": "msg", + "to": "payload.ethanolFuelPercent", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k5a", + "pt": "msg", + "to": "payload.relativeAcceleratorPedalPosition", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k5b", + "pt": "msg", + "to": "payload.hybridBatteryCharge", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k5c", + "pt": "msg", + "to": "payload.engineOilTemp", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k6", + "pt": "msg", + "to": "payload.fuelTrimShortTermbank1", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k61", + "pt": "msg", + "to": "payload.torqueDemanded", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k62", + "pt": "msg", + "to": "payload.torqueActual", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k63", + "pt": "msg", + "to": "payload.torqueReference", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k7", + "pt": "msg", + "to": "payload.fuelTrimLongTermBank1", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k70", + "pt": "msg", + "to": "payload.turboPressureControl", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k73", + "pt": "msg", + "to": "payload.exhaustPressure", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k77", + "pt": "msg", + "to": "payload.chargeAirCoolerTemp", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k78", + "pt": "msg", + "to": "payload.exhaustGasTempBank1Sensor1", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k79", + "pt": "msg", + "to": "payload.exhaustGasTempBank2Sensor1", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k7a", + "pt": "msg", + "to": "payload.DPFPressure", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k7c", + "pt": "msg", + "to": "payload.DPFTemp", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k8", + "pt": "msg", + "to": "payload.fuelTrimShortTermBank2", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k83", + "pt": "msg", + "to": "payload.NOxPreSCR", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k9", + "pt": "msg", + "to": "payload.fuelTrimLongTermBank2", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.ka", + "pt": "msg", + "to": "payload.fuelPressure", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kb", + "pt": "msg", + "to": "payload.intakeManifoldPressure", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kb4", + "pt": "msg", + "to": "payload.transmissionTempMethod2", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kc", + "pt": "msg", + "to": "payload.engineRPM", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kd", + "pt": "msg", + "to": "payload.speedOBD", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.ke", + "pt": "msg", + "to": "payload.timingAdvance", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kf", + "pt": "msg", + "to": "payload.intakeAirTemp", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kfe1805", + "pt": "msg", + "to": "payload.transmissionTempMethod1", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1001", + "pt": "msg", + "to": "payload.GPSSpeed", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1005", + "pt": "msg", + "to": "payload.GPSLongitude", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1006", + "pt": "msg", + "to": "payload.GPSLatitude", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1007", + "pt": "msg", + "to": "payload.GPSBearing1", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1010", + "pt": "msg", + "to": "payload.GPSAltitude", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1201", + "pt": "msg", + "to": "payload.MPGInstant", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1202", + "pt": "msg", + "to": "payload.turboBoostandVac", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1203", + "pt": "msg", + "to": "payload.KPLInstant", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1204", + "pt": "msg", + "to": "payload.tripDistance", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1205", + "pt": "msg", + "to": "payload.MPGtripAvg", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1206", + "pt": "msg", + "to": "payload.KPLtripAvg", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1207", + "pt": "msg", + "to": "payload.LP100KMInstant", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1208", + "pt": "msg", + "to": "payload.LP100KMtripAvg", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff120c", + "pt": "msg", + "to": "payload.tripDistanceVehicleProfile", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1214", + "pt": "msg", + "to": "payload.O2VoltsBank1Sensor1", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1215", + "pt": "msg", + "to": "payload.O2VoltsBank1Sensor2", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1216", + "pt": "msg", + "to": "payload.O2VoltsBank1Sensor3", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1217", + "pt": "msg", + "to": "payload.O2VoltsBank1Sensor4", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1218", + "pt": "msg", + "to": "payload.O2VoltsBank2Sensor1", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1219", + "pt": "msg", + "to": "payload.O2VoltsBank2Sensor2", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff121a", + "pt": "msg", + "to": "payload.O2VoltsBank2Sensor3", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff121b", + "pt": "msg", + "to": "payload.O2VoltsBank2Sensor4", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1220", + "pt": "msg", + "to": "payload.accelerationX", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1221", + "pt": "msg", + "to": "payload.accelerationY", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1222", + "pt": "msg", + "to": "payload.accelerationZ", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1223", + "pt": "msg", + "to": "payload.accelerationTot", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1225", + "pt": "msg", + "to": "payload.torqueCalculated", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1226", + "pt": "msg", + "to": "payload.horsepowerWheels", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff122d", + "pt": "msg", + "to": "payload.timerFrom0to60mph", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff122e", + "pt": "msg", + "to": "payload.timerFrom0to100kph", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff122f", + "pt": "msg", + "to": "payload.timerQuarterMile", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1230", + "pt": "msg", + "to": "payload.timerEighthMile", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1237", + "pt": "msg", + "to": "payload.GPSvsOBDSpeedDiff", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1238", + "pt": "msg", + "to": "payload.voltageOBDAdapter", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1239", + "pt": "msg", + "to": "payload.GPSAccuracy", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff123a", + "pt": "msg", + "to": "payload.GPSSatellites", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff123b", + "pt": "msg", + "to": "payload.GPSBearing2", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1240", + "pt": "msg", + "to": "payload.O2VoltsWideRangeSensor1", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1241", + "pt": "msg", + "to": "payload.O2VoltsWideRangeSensor2", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1242", + "pt": "msg", + "to": "payload.O2VoltsWideRangeSensor3", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1243", + "pt": "msg", + "to": "payload.O2VoltsWideRangeSensor4", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1244", + "pt": "msg", + "to": "payload.O2VoltsWideRangeSensor5", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1245", + "pt": "msg", + "to": "payload.O2VoltsWideRangeSensor6", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1246", + "pt": "msg", + "to": "payload.O2VoltsWideRangeSensor7", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1247", + "pt": "msg", + "to": "payload.O2VoltsWideRangeSensor8", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1249", + "pt": "msg", + "to": "payload.airFuelRatioMeasured", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff124a", + "pt": "msg", + "to": "payload.tiltX", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff124b", + "pt": "msg", + "to": "payload.tiltY", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff124c", + "pt": "msg", + "to": "payload.tiltZ", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff124d", + "pt": "msg", + "to": "payload.airFuelRatioCommanded", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff124f", + "pt": "msg", + "to": "payload.timerFrom0to200kph", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1257", + "pt": "msg", + "to": "payload.CO2Instant", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1258", + "pt": "msg", + "to": "payload.CO2Avg", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff125a", + "pt": "msg", + "to": "payload.fuelFlowRatePerMin", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff125c", + "pt": "msg", + "to": "payload.fuelCostTrip", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff125d", + "pt": "msg", + "to": "payload.fuelFlowRatePerHour", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff125e", + "pt": "msg", + "to": "payload.timerFrom60to120mph", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff125f", + "pt": "msg", + "to": "payload.timerFrom60to80mph", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1260", + "pt": "msg", + "to": "payload.timerFrom40to60mph", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1261", + "pt": "msg", + "to": "payload.timerFrom80to100mph", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1263", + "pt": "msg", + "to": "payload.tripSpeedAvgWhileMoving", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1264", + "pt": "msg", + "to": "payload.timerFrom100to0kph", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1265", + "pt": "msg", + "to": "payload.timerFrom60to0mph", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1266", + "pt": "msg", + "to": "payload.timerSinceJourneyStart", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1267", + "pt": "msg", + "to": "payload.timerStationary", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1268", + "pt": "msg", + "to": "payload.timerMoving", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1269", + "pt": "msg", + "to": "payload.volumetricEfficiencyCalculated", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff126a", + "pt": "msg", + "to": "payload.distanceToEmptyCalculated", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff126b", + "pt": "msg", + "to": "payload.fuelRemainingCalculated", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff126d", + "pt": "msg", + "to": "payload.costPerMileInstant", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff126e", + "pt": "msg", + "to": "payload.costPerMileTrip", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1270", + "pt": "msg", + "to": "payload.barometerAndroid", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1271", + "pt": "msg", + "to": "payload.fuelUsedTrip", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1272", + "pt": "msg", + "to": "payload.tripSpeedAvg", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1273", + "pt": "msg", + "to": "payload.enginekWWheels", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1275", + "pt": "msg", + "to": "payload.timerFrom80to120kph", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1276", + "pt": "msg", + "to": "payload.timerFrom60to130mph", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff1277", + "pt": "msg", + "to": "payload.timerFrom0to30mph", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k1282", + "pt": "msg", + "to": "payload.exhaustGasTempBank1Sensor2", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k1283", + "pt": "msg", + "to": "payload.exhaustGasTempBank1Sensor3", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k1284", + "pt": "msg", + "to": "payload.exhaustGasTempBank1Sensor4", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k1286", + "pt": "msg", + "to": "payload.exhaustGasTempBank2Sensor2", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k1287", + "pt": "msg", + "to": "payload.exhaustGasTempBank2Sensor3", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k1288", + "pt": "msg", + "to": "payload.exhaustGasTempBank2Sensor4", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k128a", + "pt": "msg", + "to": "payload.NOxPostSCR", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k1296", + "pt": "msg", + "to": "payload.drivingPercentCity", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k1297", + "pt": "msg", + "to": "payload.drivingPercentHighway", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.k1298", + "pt": "msg", + "to": "payload.drivingPercentIdle", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff129a", + "pt": "msg", + "to": "payload.batteryLevelAndroid", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff5201", + "pt": "msg", + "to": "payload.MPGLongTermAvg", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff5202", + "pt": "msg", + "to": "payload.KPLLongTermAvg", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.kff5203", + "pt": "msg", + "to": "payload.LP100KMLongTermAvg", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.v", + "pt": "msg", + "to": "payload.appVersion", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.id", + "pt": "msg", + "to": "payload.appID_MD5", + "tot": "msg" + }, + { + "t": "move", + "p": "payload.eml", + "pt": "msg", + "to": "payload.appID_userEntered", + "tot": "msg" + } + ], + "action": "", + "property": "", + "from": "", + "to": "", + "reg": false, + "x": 580, + "y": 260, + "wires": [ + [ + "861b3377.410e3" + ] + ] + }, + { + "id": "3c87de8f.38df52", + "type": "change", + "z": "1051da59.797066", + "name": "", + "rules": [ + { + "t": "set", + "p": "topic", + "pt": "msg", + "to": "torque/formatted", + "tot": "str" + } + ], + "action": "", + "property": "", + "from": "", + "to": "", + "reg": false, + "x": 1470, + "y": 260, + "wires": [ + [ + "ffec7c10.fa3d6" + ] + ] + }, + { + "id": "f8b64b5e.e7ce", + "type": "function", + "z": "1051da59.797066", + "name": "remove nulls", + "func": "//Object.keys(msg.payload).forEach((k) => (!msg.payload[k] && msg.payload[k] !== undefined) && delete msg.payload[k]);\n\n\nfor (var propName in msg.payload)\n{ \n if (msg.payload[propName] === null || msg.payload[propName] === undefined || (isNaN(msg.payload[propName] && typeof msg.payload[propName] !== 'string')))\n {\n delete msg.payload[propName];\n }\n}\nreturn msg;", + "outputs": 1, + "noerr": 0, + "x": 1090, + "y": 260, + "wires": [ + [ + "19625f35.0e6039" + ] + ] + }, + { + "id": "cf272a44.fc08b", + "type": "delay", + "z": "1051da59.797066", + "name": "", + "pauseType": "rate", + "timeout": "5", + "timeoutUnits": "seconds", + "rate": "1", + "nbRateUnits": "1", + "rateUnits": "second", + "randomFirst": "1", + "randomLast": "5", + "randomUnits": "seconds", + "drop": true, + "x": 190, + "y": 100, + "wires": [ + [ + "d3c7f0f6.360e", + "b043ff20.449ac8", + "8b6d2f73.79c94" + ] + ] + }, + { + "id": "861b3377.410e3", + "type": "function", + "z": "1051da59.797066", + "name": "set default ID", + "func": "if (msg.payload.appID_userEntered === undefined)\n{\n msg.payload.appID_userEntered = 'liteVersion'; \n}\nreturn msg;", + "outputs": 1, + "noerr": 0, + "x": 780, + "y": 260, + "wires": [ + [ + "52b74919.1194b8" + ] + ] + }, + { + "id": "56a849d2.194a68", + "type": "mqtt-broker", + "z": "", + "name": "Mosquitto", + "broker": "host", + "port": "port", + "tls": "9f91046e.e850e8", + "clientid": "node-red", + "usetls": false, + "compatmode": true, + "keepalive": "60", + "cleansession": true, + "birthTopic": "", + "birthQos": "0", + "birthPayload": "", + "closeTopic": "", + "closeQos": "0", + "closePayload": "", + "willTopic": "", + "willQos": "0", + "willPayload": "" + }, + { + "id": "9f91046e.e850e8", + "type": "tls-config", + "z": "", + "name": "", + "cert": "", + "key": "", + "ca": "", + "certname": "", + "keyname": "", + "caname": "", + "servername": "", + "verifyservercert": true + } + ] diff --git a/grafana/torque/grafana-torque.json b/grafana/torque/grafana-torque.json new file mode 100644 index 0000000000000000000000000000000000000000..98a130d5c1a01d9115e90fbd2b447b84c6add989 --- /dev/null +++ b/grafana/torque/grafana-torque.json @@ -0,0 +1,2216 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "gnetId": null, + "graphTooltip": 0, + "id": 22, + "links": [], + "panels": [ + { + "cacheTimeout": null, + "colorBackground": false, + "colorPostfix": true, + "colorPrefix": false, + "colorValue": true, + "colors": [ + "#d44a3a", + "rgba(237, 129, 40, 0.89)", + "#299c46" + ], + "datasource": null, + "decimals": 0, + "format": "none", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 5, + "w": 3, + "x": 0, + "y": 0 + }, + "id": 15, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "options": {}, + "pluginVersion": "6.4.3", + "postfix": " MPG", + "postfixFontSize": "80%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": true, + "ymax": null, + "ymin": null + }, + "tableColumn": "", + "targets": [ + { + "groupBy": [], + "measurement": "/^$Car$/", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "table", + "select": [ + [ + { + "params": [ + "MPGLongTermAvg" + ], + "type": "field" + } + ] + ], + "tags": [] + } + ], + "thresholds": "20,30", + "timeFrom": null, + "timeShift": null, + "title": "Average MPG", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "avg" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorPostfix": true, + "colorPrefix": false, + "colorValue": true, + "colors": [ + "#d44a3a", + "rgba(237, 129, 40, 0.89)", + "#299c46" + ], + "datasource": null, + "decimals": 0, + "format": "none", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 5, + "w": 3, + "x": 3, + "y": 0 + }, + "id": 22, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "options": {}, + "postfix": " MPG", + "postfixFontSize": "80%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": true, + "ymax": null, + "ymin": null + }, + "tableColumn": "", + "targets": [ + { + "groupBy": [ + { + "params": [ + "$__interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "/^$Car$/", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "MPGtripAvg" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [] + } + ], + "thresholds": "20,30", + "timeFrom": null, + "timeShift": null, + "title": "MPG Trip Avg", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "avg" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorPostfix": true, + "colorPrefix": false, + "colorValue": true, + "colors": [ + "#d44a3a", + "rgba(237, 129, 40, 0.89)", + "#299c46" + ], + "datasource": null, + "decimals": 0, + "format": "none", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 5, + "w": 3, + "x": 6, + "y": 0 + }, + "id": 13, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "options": {}, + "postfix": " MPH", + "postfixFontSize": "80%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": true, + "ymax": null, + "ymin": null + }, + "tableColumn": "", + "targets": [ + { + "groupBy": [ + { + "params": [ + "$__interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "/^$Car$/", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "GPSSpeed" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [] + } + ], + "thresholds": "35,60", + "timeFrom": null, + "timeShift": null, + "title": "Average Speed", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "avg" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorPostfix": true, + "colorPrefix": false, + "colorValue": true, + "colors": [ + "#d44a3a", + "rgba(237, 129, 40, 0.89)", + "#299c46" + ], + "datasource": null, + "decimals": 0, + "format": "none", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 5, + "w": 3, + "x": 9, + "y": 0 + }, + "id": 14, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "options": {}, + "postfix": " Miles", + "postfixFontSize": "80%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": true, + "ymax": null, + "ymin": null + }, + "tableColumn": "", + "targets": [ + { + "groupBy": [ + { + "params": [ + "$__interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "/^$Car$/", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "tripDistance" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [] + } + ], + "thresholds": "35,60", + "timeFrom": null, + "timeShift": null, + "title": "Average Trip Distance", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "avg" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorPostfix": true, + "colorPrefix": false, + "colorValue": true, + "colors": [ + "#299c46", + "rgba(237, 129, 40, 0.89)", + "#d44a3a" + ], + "datasource": null, + "decimals": 0, + "format": "s", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 5, + "w": 3, + "x": 12, + "y": 0 + }, + "id": 24, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "options": {}, + "postfix": "", + "postfixFontSize": "80%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": true, + "ymax": null, + "ymin": null + }, + "tableColumn": "", + "targets": [ + { + "groupBy": [ + { + "params": [ + "$__interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "/^$Car$/", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "runTime" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [] + } + ], + "thresholds": "35,60", + "timeFrom": null, + "timeShift": null, + "title": "Last Trip Time", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "current" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorPostfix": true, + "colorPrefix": false, + "colorValue": true, + "colors": [ + "#299c46", + "rgba(237, 129, 40, 0.89)", + "#d44a3a" + ], + "datasource": null, + "decimals": 0, + "format": "none", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 5, + "w": 3, + "x": 15, + "y": 0 + }, + "id": 12, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "options": {}, + "postfix": " Fixed", + "postfixFontSize": "80%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": true, + "ymax": null, + "ymin": null + }, + "tableColumn": "", + "targets": [ + { + "groupBy": [ + { + "params": [ + "$__interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "/^$Car$/", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "GPSSatellites" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [] + } + ], + "thresholds": "0,10,20,30", + "timeFrom": null, + "timeShift": null, + "title": "GPS Satellites", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "avg" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorPostfix": true, + "colorPrefix": false, + "colorValue": true, + "colors": [ + "#299c46", + "rgba(237, 129, 40, 0.89)", + "#d44a3a" + ], + "datasource": null, + "format": "none", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 5, + "w": 3, + "x": 18, + "y": 0 + }, + "id": 11, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "options": {}, + "postfix": " Meters", + "postfixFontSize": "80%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": true, + "ymax": null, + "ymin": null + }, + "tableColumn": "", + "targets": [ + { + "groupBy": [ + { + "params": [ + "$__interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "/^$Car$/", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "GPSAccuracy" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [] + } + ], + "thresholds": "0,25,50", + "timeFrom": null, + "timeShift": null, + "title": "GPS Accuracy", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "avg" + }, + { + "cacheTimeout": null, + "datasource": null, + "gridPos": { + "h": 5, + "w": 3, + "x": 21, + "y": 0 + }, + "id": 16, + "links": [], + "options": { + "fieldOptions": { + "calcs": [ + "lastNotNull" + ], + "defaults": { + "decimals": 0, + "mappings": [ + { + "id": 0, + "op": "=", + "text": "N/A", + "type": 1, + "value": "null" + } + ], + "max": 100, + "min": 0, + "nullValueMode": "connected", + "thresholds": [ + { + "color": "#d44a3a", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 50 + }, + { + "color": "#299c46", + "value": 75 + } + ], + "unit": "none" + }, + "override": {}, + "values": false + }, + "orientation": "horizontal", + "showThresholdLabels": false, + "showThresholdMarkers": true + }, + "pluginVersion": "6.4.3", + "targets": [ + { + "groupBy": [ + { + "params": [ + "$__interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "/^$Car$/", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "batteryLevelAndroid" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [] + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Phone Charge", + "type": "gauge" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 5 + }, + "id": 25, + "interval": "", + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Speed (GPS)", + "color": "#C4162A", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "$col", + "groupBy": [ + { + "params": [ + "$__interval" + ], + "type": "time" + }, + { + "params": [ + "none" + ], + "type": "fill" + } + ], + "measurement": "/^$Car$/", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "throttlePositionRelative" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [ + "Throtlle Position" + ], + "type": "alias" + } + ] + ], + "tags": [] + }, + { + "alias": "$col", + "groupBy": [ + { + "params": [ + "$__interval" + ], + "type": "time" + }, + { + "params": [ + "none" + ], + "type": "fill" + } + ], + "measurement": "/^$Car$/", + "orderByTime": "ASC", + "policy": "default", + "refId": "B", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "GPSSpeed" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [ + "Speed (GPS)" + ], + "type": "alias" + } + ] + ], + "tags": [] + }, + { + "alias": "$col", + "groupBy": [ + { + "params": [ + "$__interval" + ], + "type": "time" + }, + { + "params": [ + "none" + ], + "type": "fill" + } + ], + "measurement": "/^$Car$/", + "orderByTime": "ASC", + "policy": "default", + "refId": "C", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "MPGInstant" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [ + "MPG" + ], + "type": "alias" + } + ] + ], + "tags": [] + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "MPG v Speed", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 12 + }, + "id": 23, + "interval": "", + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Engine Load", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "$col", + "groupBy": [ + { + "params": [ + "$__interval" + ], + "type": "time" + }, + { + "params": [ + "previous" + ], + "type": "fill" + } + ], + "measurement": "/^$Car$/", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "engineLoad" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [ + "Engine Load" + ], + "type": "alias" + } + ] + ], + "tags": [] + }, + { + "alias": "$col", + "groupBy": [ + { + "params": [ + "$__interval" + ], + "type": "time" + }, + { + "params": [ + "previous" + ], + "type": "fill" + } + ], + "measurement": "/^$Car$/", + "orderByTime": "ASC", + "policy": "default", + "refId": "B", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "MPGInstant" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [ + "MPG" + ], + "type": "alias" + } + ] + ], + "tags": [] + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Load vs MPG", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "breakPoint": "50%", + "cacheTimeout": null, + "combine": { + "label": "Others", + "threshold": 0 + }, + "datasource": "telegraf", + "decimals": 2, + "fontSize": "120%", + "format": "short", + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 19 + }, + "id": 2, + "interval": null, + "legend": { + "header": "", + "percentage": true, + "show": true, + "values": true + }, + "legendType": "On graph", + "links": [], + "maxDataPoints": 3, + "nullPointMode": "connected", + "options": {}, + "pieType": "pie", + "pluginVersion": "6.4.3", + "strokeWidth": "3", + "targets": [ + { + "alias": "$col", + "groupBy": [ + { + "params": [ + "$__interval" + ], + "type": "time" + }, + { + "params": [ + "previous" + ], + "type": "fill" + } + ], + "measurement": "/^$Car$/", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "timerStationary" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [ + "/60" + ], + "type": "math" + }, + { + "params": [ + "Stopped" + ], + "type": "alias" + } + ] + ], + "tags": [] + }, + { + "alias": "$col", + "groupBy": [ + { + "params": [ + "$__interval" + ], + "type": "time" + }, + { + "params": [ + "previous" + ], + "type": "fill" + } + ], + "measurement": "/^$Car$/", + "orderByTime": "ASC", + "policy": "default", + "refId": "B", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "timerMoving" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [ + "/60" + ], + "type": "math" + }, + { + "params": [ + "Moving" + ], + "type": "alias" + } + ] + ], + "tags": [] + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Cummulative Minutes", + "type": "grafana-piechart-panel", + "valueName": "avg" + }, + { + "circleMaxSize": "2", + "circleMinSize": "1", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "#FA6400", + "#FFF899", + "#F2CC0C", + "rgba(50, 172, 45, 0.97)" + ], + "datasource": null, + "decimals": 0, + "esMetric": "Count", + "gridPos": { + "h": 18, + "w": 12, + "x": 12, + "y": 19 + }, + "hideEmpty": false, + "hideZero": false, + "id": 8, + "initialZoom": "10", + "locationData": "table", + "mapCenter": "custom", + "mapCenterLatitude": "39.13", + "mapCenterLongitude": "-84.63", + "maxDataPoints": 1, + "mouseWheelZoom": false, + "options": {}, + "showLegend": true, + "stickyLabels": false, + "tableQueryOptions": { + "geohashField": "geohash", + "labelField": "", + "latitudeField": "Lat", + "longitudeField": "Long", + "metricField": "Altitude", + "queryType": "coordinates" + }, + "targets": [ + { + "groupBy": [], + "measurement": "/^$Car$/", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "table", + "select": [ + [ + { + "params": [ + "GPSLatitude" + ], + "type": "field" + }, + { + "params": [ + "Lat" + ], + "type": "alias" + } + ], + [ + { + "params": [ + "GPSLongitude" + ], + "type": "field" + }, + { + "params": [ + "Long" + ], + "type": "alias" + } + ], + [ + { + "params": [ + "speedOBD" + ], + "type": "field" + }, + { + "params": [ + "MPH" + ], + "type": "alias" + } + ] + ], + "tags": [] + } + ], + "thresholds": "0,35,55,60", + "timeFrom": null, + "timeShift": null, + "title": "Average Speed", + "type": "grafana-worldmap-panel", + "unitPlural": "MPH", + "unitSingle": "", + "unitSingular": "MPH", + "valueName": "avg" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 28 + }, + "id": 21, + "interval": "", + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "$col", + "groupBy": [ + { + "params": [ + "$__interval" + ], + "type": "time" + }, + { + "params": [ + "0" + ], + "type": "fill" + } + ], + "measurement": "/^$Car$/", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "CO2Instant" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [ + "CO2" + ], + "type": "alias" + } + ] + ], + "tags": [] + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "CO2", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fill": 1, + "fillGradient": 4, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 37 + }, + "id": 18, + "interval": "", + "legend": { + "alignAsTable": true, + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "% Charged", + "color": "#C4162A" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "$col", + "groupBy": [ + { + "params": [ + "$__interval" + ], + "type": "time" + }, + { + "params": [ + "previous" + ], + "type": "fill" + } + ], + "measurement": "/^$Car$/", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "batteryLevelAndroid" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [ + "% Charged" + ], + "type": "alias" + } + ] + ], + "tags": [] + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Phone Battery Level", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "percent", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "circleMaxSize": "3", + "circleMinSize": 2, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "#FA6400", + "#FFF899", + "#F2CC0C", + "rgba(50, 172, 45, 0.97)" + ], + "datasource": null, + "decimals": 0, + "esMetric": "Count", + "gridPos": { + "h": 18, + "w": 12, + "x": 12, + "y": 37 + }, + "hideEmpty": false, + "hideZero": false, + "id": 4, + "initialZoom": "10", + "locationData": "table", + "mapCenter": "custom", + "mapCenterLatitude": "39.13", + "mapCenterLongitude": "-84.63", + "maxDataPoints": 1, + "mouseWheelZoom": false, + "options": {}, + "showLegend": true, + "stickyLabels": false, + "tableQueryOptions": { + "geohashField": "geohash", + "labelField": "", + "latitudeField": "Lat", + "longitudeField": "Long", + "metricField": "Altitude", + "queryType": "coordinates" + }, + "targets": [ + { + "groupBy": [], + "measurement": "Buick", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "table", + "select": [ + [ + { + "params": [ + "GPSLatitude" + ], + "type": "field" + }, + { + "params": [ + "Lat" + ], + "type": "alias" + } + ], + [ + { + "params": [ + "GPSLongitude" + ], + "type": "field" + }, + { + "params": [ + "Long" + ], + "type": "alias" + } + ], + [ + { + "params": [ + "GPSAltitude" + ], + "type": "field" + }, + { + "params": [ + "Altitude" + ], + "type": "alias" + } + ] + ], + "tags": [] + } + ], + "thresholds": "0,500,100,1000", + "timeFrom": null, + "timeShift": null, + "title": "Altitude", + "type": "grafana-worldmap-panel", + "unitPlural": "feet", + "unitSingle": "", + "unitSingular": "feet", + "valueName": "avg" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fill": 1, + "fillGradient": 4, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 46 + }, + "id": 19, + "interval": "", + "legend": { + "alignAsTable": true, + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "% Charged", + "color": "#C4162A" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "$col", + "groupBy": [ + { + "params": [ + "$__interval" + ], + "type": "time" + }, + { + "params": [ + "previous" + ], + "type": "fill" + } + ], + "measurement": "/^$Car$/", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "GPSSatellites" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [ + "Sat Locks" + ], + "type": "alias" + } + ] + ], + "tags": [] + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "GPS Satellites", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "circleMaxSize": "3", + "circleMinSize": 2, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "#FA6400", + "#FADE2A", + "#37872D" + ], + "datasource": null, + "decimals": 0, + "esMetric": "Count", + "gridPos": { + "h": 25, + "w": 24, + "x": 0, + "y": 55 + }, + "hideEmpty": false, + "hideZero": false, + "id": 26, + "initialZoom": "10", + "locationData": "table", + "mapCenter": "custom", + "mapCenterLatitude": "39.13", + "mapCenterLongitude": "-84.63", + "maxDataPoints": 1, + "mouseWheelZoom": false, + "options": {}, + "showLegend": true, + "stickyLabels": false, + "tableQueryOptions": { + "geohashField": "geohash", + "labelField": "", + "latitudeField": "Lat", + "longitudeField": "Long", + "metricField": "Altitude", + "queryType": "coordinates" + }, + "targets": [ + { + "groupBy": [], + "measurement": "/^$Car$/", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "table", + "select": [ + [ + { + "params": [ + "GPSLatitude" + ], + "type": "field" + }, + { + "params": [ + "Lat" + ], + "type": "alias" + } + ], + [ + { + "params": [ + "GPSLongitude" + ], + "type": "field" + }, + { + "params": [ + "Long" + ], + "type": "alias" + } + ], + [ + { + "params": [ + "MPGInstant" + ], + "type": "field" + }, + { + "params": [ + "Altitude" + ], + "type": "alias" + } + ] + ], + "tags": [] + } + ], + "thresholds": "10,20,30", + "timeFrom": null, + "timeShift": null, + "title": "MPG", + "type": "grafana-worldmap-panel", + "unitPlural": "M/PG", + "unitSingle": "", + "unitSingular": "M/PG", + "valueName": "avg" + } + ], + "refresh": false, + "schemaVersion": 20, + "style": "dark", + "tags": [ + "torque", + "car" + ], + "templating": { + "list": [ + { + "current": { + "text": "Buick", + "value": "Buick" + }, + "hide": 0, + "label": "Car", + "name": "Car", + "options": [ + { + "text": "Buick", + "value": "Buick" + } + ], + "query": "Buick", + "skipUrlSync": false, + "type": "textbox" + } + ] + }, + "time": { + "from": "now-24h", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ] + }, + "timezone": "", + "title": "Torque", + "uid": "2UyC4kRRz", + "version": 31 +} diff --git a/grafana/torque/telegraf-torque.conf b/grafana/torque/telegraf-torque.conf new file mode 100644 index 0000000000000000000000000000000000000000..4788151e65508578d273aa4380df85f4bcbb1bfc --- /dev/null +++ b/grafana/torque/telegraf-torque.conf @@ -0,0 +1,42 @@ +# # Read metrics from MQTT topic(s) with json formatting + [[inputs.mqtt_consumer]] +# ## MQTT broker URLs to be used. The format should be scheme://host:port, +# ## schema can be tcp, ssl, or ws. + servers = ["tcp://<host>:<port>"] +# +# ## MQTT QoS, must be 0, 1, or 2 + qos = 0 +# ## Connection timeout for initial connection in seconds + connection_timeout = "30s" +# +# ## Topics to subscribe to + topics = ["torque/formatted"] +# +# # if true, messages that can't be delivered while the subscriber is offline +# # will be delivered when it comes back (such as on service restart). +# # NOTE: if true, client_id MUST be set +# persistent_session = false +# # If empty, a random client ID will be generated. +# client_id = "telegraf" +# +# ## username and password to connect MQTT server. +# # username = "telegraf" +# # password = "metricsmetricsmetricsmetrics" +# +# ## Optional TLS Config +# # tls_ca = "/etc/telegraf/ca.pem" +# # tls_cert = "/etc/telegraf/cert.pem" +# # tls_key = "/etc/telegraf/key.pem" +# ## Use TLS but skip chain & host verification +# # insecure_skip_verify = false +# +# ## Data format to consume. +# ## Each data format has its own unique set of configuration options, read +# ## more about them here: +# ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_INPUT.md + data_format = "json" + json_time_key = "time" + json_time_format = "unix_ms" + json_name_key = "appID_userEntered" + json_string_fields = ["session","appVersion","appID_MD5"] + tag_keys = ["session","appVersion","appID_MD5"]