{"_id":"node-red-contrib-questdb","_rev":"29-b3841e39aca211acbe7d0906335236ce","name":"node-red-contrib-questdb","dist-tags":{"latest":"0.6.31"},"versions":{"0.1.0":{"name":"node-red-contrib-questdb","version":"0.1.0","keywords":["node-red","questdb","time-series","database"],"license":"MIT","_id":"node-red-contrib-questdb@0.1.0","maintainers":[{"name":"holgeramort","email":"holgeramort@gmail.com"}],"dist":{"shasum":"2c4910045dd21a1c715e791277f1f57756f3e405","tarball":"https://registry.npmjs.org/node-red-contrib-questdb/-/node-red-contrib-questdb-0.1.0.tgz","fileCount":6,"integrity":"sha512-oRiVvciWTFXwzf3s2mW0UYD+tC0T5psoDYWnacKV7ccVlihNA1X8cAmJ9QQZMgO7Lj0lHHGLv+wuRgqTNP9TpQ==","signatures":[{"sig":"MEQCIF+HQdXVQUDFYCrfn+WcaRyPAIR49MJiNPTYN/KqjiOjAiBS5kzX+cDBGU2DwzqUKh7oCs/uK5OO1GK5+ZJaz1jpMg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43904},"engines":{"node":">=14.0.0"},"scripts":{"publish:dry":"npm publish --dry-run","prepublishOnly":"npm test --if-present"},"_npmUser":{"name":"holgeramort","email":"holgeramort@gmail.com"},"node-red":{"nodes":{"questdb-write":"nodes/write.js","questdb-mapper":"nodes/mapper.js"},"version":">=2.0.0"},"repository":{"url":"","type":"git"},"_npmVersion":"10.9.2","description":"Node-RED nodes for QuestDB time-series database","directories":{},"_nodeVersion":"22.17.0","dependencies":{"@questdb/nodejs-client":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/node-red-contrib-questdb_0.1.0_1767218989646_0.8417635009332909","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"node-red-contrib-questdb","version":"0.2.0","keywords":["node-red","questdb","time-series","database"],"license":"MIT","_id":"node-red-contrib-questdb@0.2.0","maintainers":[{"name":"holgeramort","email":"holgeramort@gmail.com"}],"dist":{"shasum":"512fdbc94e2705b9a461847edc45ba324cc95e93","tarball":"https://registry.npmjs.org/node-red-contrib-questdb/-/node-red-contrib-questdb-0.2.0.tgz","fileCount":8,"integrity":"sha512-ArGFXg92vC5SbRHGyfUaL+kIC6wejL/+gqTTcLLLPFMpL/rKnVl4WW7axDjPonSz9TdPxV85PipmiAPEHkHXXg==","signatures":[{"sig":"MEUCIDS5K42JHZl0h17nY89a/uaumhGnTLSRiqkkMqWKL8fBAiEA8NXItGFrR03WYRMWCwMpJpeWm0fSickF1uPjGHttJ4c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":85752},"engines":{"node":">=14.0.0"},"scripts":{"publish:dry":"npm publish --dry-run","prepublishOnly":"npm test --if-present"},"_npmUser":{"name":"holgeramort","email":"holgeramort@gmail.com"},"node-red":{"nodes":{"questdb-write":"nodes/write.js","questdb-mapper":"nodes/mapper.js"},"version":">=2.0.0"},"repository":{"url":"","type":"git"},"_npmVersion":"10.9.2","description":"Node-RED nodes for QuestDB time-series database","directories":{},"_nodeVersion":"22.17.0","dependencies":{"@questdb/nodejs-client":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/node-red-contrib-questdb_0.2.0_1767219663622_0.5984456794178574","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"node-red-contrib-questdb","version":"0.3.0","keywords":["node-red","questdb","time-series","database"],"license":"MIT","_id":"node-red-contrib-questdb@0.3.0","maintainers":[{"name":"holgeramort","email":"holgeramort@gmail.com"}],"dist":{"shasum":"06fdd5817c0d610b7da13642c07e61b4b7909f1a","tarball":"https://registry.npmjs.org/node-red-contrib-questdb/-/node-red-contrib-questdb-0.3.0.tgz","fileCount":7,"integrity":"sha512-/Dkt8qHSjelyTGdCgqdwQfrM/0c/AzcJnZDr4xn597V25OY5dtHp5yJ/8A+/GVs1qVcvyjqrP5c33LNwimH2vg==","signatures":[{"sig":"MEQCIGZ6Tc43rgQiBwsqwMVxVTgTGeaoTP0nJB51l8cgqCWQAiA1c8KEWvSv7M4he1QcaDTnxxSTmwiD/YJUOI8qTroEjQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":81235},"engines":{"node":">=14.0.0"},"scripts":{"publish:dry":"npm publish --dry-run","prepublishOnly":"npm test --if-present"},"_npmUser":{"name":"holgeramort","email":"holgeramort@gmail.com"},"node-red":{"nodes":{"questdb-write":"nodes/write.js","questdb-mapper":"nodes/mapper.js"},"version":">=2.0.0"},"repository":{"url":"","type":"git"},"_npmVersion":"10.9.2","description":"Node-RED nodes for QuestDB time-series database","directories":{},"_nodeVersion":"22.17.0","dependencies":{"@questdb/nodejs-client":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/node-red-contrib-questdb_0.3.0_1767220389156_0.3745634057545866","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"node-red-contrib-questdb","version":"0.3.1","keywords":["node-red","questdb","time-series","database"],"license":"MIT","_id":"node-red-contrib-questdb@0.3.1","maintainers":[{"name":"holgeramort","email":"holgeramort@gmail.com"}],"dist":{"shasum":"12f4dc59a35362c0bbef264af403893c544c9fc4","tarball":"https://registry.npmjs.org/node-red-contrib-questdb/-/node-red-contrib-questdb-0.3.1.tgz","fileCount":8,"integrity":"sha512-2UUktXssoy7nVuZafqVFgUmlQRWVWjBQ4KDoYiv93yiezdxQ2Dl5tasF6IAeevgDqtUetwh0/GQ5dkvbLkBV+w==","signatures":[{"sig":"MEQCIGZAEauOlmwNUokDleAD0GaI4q9DQscQ/qREYPwb5cg/AiB2WO6S2T9G0HqtJI3pTJgkHMaK/utxekPan7PbjJ9zfA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83885},"engines":{"node":">=14.0.0"},"scripts":{"publish:dry":"npm publish --dry-run","prepublishOnly":"npm test --if-present"},"_npmUser":{"name":"holgeramort","email":"holgeramort@gmail.com"},"node-red":{"nodes":{"questdb-write":"nodes/write.js","questdb-mapper":"nodes/mapper.js"},"version":">=2.0.0"},"repository":{"url":"","type":"git"},"_npmVersion":"10.9.2","description":"Node-RED nodes for QuestDB time-series database","directories":{},"_nodeVersion":"22.17.0","dependencies":{"@questdb/nodejs-client":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/node-red-contrib-questdb_0.3.1_1767220928282_0.3992336110987098","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"node-red-contrib-questdb","version":"0.3.2","keywords":["node-red","questdb","time-series","database"],"license":"MIT","_id":"node-red-contrib-questdb@0.3.2","maintainers":[{"name":"holgeramort","email":"holgeramort@gmail.com"}],"dist":{"shasum":"83e3c75d0b84c152441fc482311f842e5927bfe7","tarball":"https://registry.npmjs.org/node-red-contrib-questdb/-/node-red-contrib-questdb-0.3.2.tgz","fileCount":8,"integrity":"sha512-XRbQ7gyo4nkFALPv0kjIyFJOIYvgF9406jcQrvE+CKBaFGItRf1UZYgEgGS4UHJNvAb6BQo7wqfDK1MilPIiJw==","signatures":[{"sig":"MEQCIEGNfqprxx87IpPw5p5Q6Q00F+HVz+Akk8JbTQxIF7GGAiBXiix/jH7exp4mIkDnIBWdA3hO8hoQXGrMcCLN8Nk0Tg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83885},"engines":{"node":">=14.0.0"},"scripts":{"publish:dry":"npm publish --dry-run","prepublishOnly":"npm test --if-present"},"_npmUser":{"name":"holgeramort","email":"holgeramort@gmail.com"},"node-red":{"nodes":{"questdb-write":"nodes/write.js","questdb-mapper":"nodes/mapper.js"},"version":">=2.0.0"},"repository":{"url":"","type":"git"},"_npmVersion":"10.9.2","description":"Node-RED nodes for QuestDB time-series database","directories":{},"_nodeVersion":"22.17.0","dependencies":{"@questdb/nodejs-client":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/node-red-contrib-questdb_0.3.2_1767221479939_0.09656343487821917","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"node-red-contrib-questdb","version":"0.4.0","keywords":["node-red","questdb","time-series","database","ilp","influx-line-protocol"],"author":{"name":"Holger Amort"},"license":"MIT","_id":"node-red-contrib-questdb@0.4.0","maintainers":[{"name":"holgeramort","email":"holgeramort@gmail.com"}],"homepage":"https://github.com/ErnstHolger/node-red#readme","bugs":{"url":"https://github.com/ErnstHolger/node-red/issues"},"dist":{"shasum":"99c721a64ad7d1c7ef48e93d01517919e7d4578f","tarball":"https://registry.npmjs.org/node-red-contrib-questdb/-/node-red-contrib-questdb-0.4.0.tgz","fileCount":7,"integrity":"sha512-Uc1W/4sxgAhXv4c8YkgFsPvhtURzJLPyK4FPdSalDv+bijtv+TuH1/JCy5wicZgT4fAPNSzhI5NmF7u9yZyd+Q==","signatures":[{"sig":"MEYCIQCJiJTL8UjSLmoHHK5Qb82demdbetwvGxKHAb7/ukAzBgIhAJH82iidxsJqUZf0bHVV1NncSRhKBI0L4agtJ9XHhMK+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":89515},"engines":{"node":">=14.0.0"},"gitHead":"6a3b78a1961d4e4020461655fe3bdc5f7b2eba8c","scripts":{"publish:dry":"npm publish --dry-run","prepublishOnly":"npm test --if-present"},"_npmUser":{"name":"holgeramort","email":"holgeramort@gmail.com"},"node-red":{"nodes":{"questdb-write":"nodes/write.js","questdb-mapper":"nodes/mapper.js"},"version":">=2.0.0"},"repository":{"url":"git+https://github.com/ErnstHolger/node-red.git","type":"git"},"_npmVersion":"10.9.2","description":"Node-RED nodes for QuestDB time-series database","directories":{},"_nodeVersion":"22.17.0","dependencies":{"@questdb/nodejs-client":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/node-red-contrib-questdb_0.4.0_1767221720893_0.659624172813355","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"node-red-contrib-questdb","version":"0.4.1","keywords":["node-red","questdb","time-series","database","ilp","influx-line-protocol"],"author":{"name":"Holger Amort"},"license":"MIT","_id":"node-red-contrib-questdb@0.4.1","maintainers":[{"name":"holgeramort","email":"holgeramort@gmail.com"}],"homepage":"https://github.com/ErnstHolger/node-red#readme","bugs":{"url":"https://github.com/ErnstHolger/node-red/issues"},"dist":{"shasum":"fbd2885bdc66e2146d49842a3b2673a550dff8b6","tarball":"https://registry.npmjs.org/node-red-contrib-questdb/-/node-red-contrib-questdb-0.4.1.tgz","fileCount":7,"integrity":"sha512-d4ep9Hvj5SLEXdUona0Xxm1ELd8jtogHSC9WO56BZWAzkPLbePMnFgtC3bG/XamgQ0bVTMGvmjSV8Qi0CLIZBw==","signatures":[{"sig":"MEQCIGHGEQMNR+Y5GYrIQJOLmbsmEfXcZ6Of6Nb2O0ELbOCGAiBiy2CBmHg28EBFRu0YiUB0epReORJpwNRDUg5WE6cIRQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":89515},"engines":{"node":">=14.0.0"},"gitHead":"9a5858fce976af9bf61d419e67dd58206f6b842c","scripts":{"publish:dry":"npm publish --dry-run","prepublishOnly":"npm test --if-present"},"_npmUser":{"name":"holgeramort","email":"holgeramort@gmail.com"},"node-red":{"nodes":{"questdb-write":"nodes/write.js","questdb-mapper":"nodes/mapper.js"},"version":">=2.0.0"},"repository":{"url":"git+https://github.com/ErnstHolger/node-red.git","type":"git"},"_npmVersion":"10.9.2","description":"Node-RED nodes for QuestDB time-series database","directories":{},"_nodeVersion":"22.17.0","dependencies":{"@questdb/nodejs-client":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/node-red-contrib-questdb_0.4.1_1767221807334_0.1334408694503506","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"node-red-contrib-questdb","version":"0.5.0","keywords":["node-red","questdb","time-series","database","ilp","influx-line-protocol"],"author":{"name":"Holger Amort"},"license":"MIT","_id":"node-red-contrib-questdb@0.5.0","maintainers":[{"name":"holgeramort","email":"holgeramort@gmail.com"}],"homepage":"https://github.com/ErnstHolger/node-red#readme","bugs":{"url":"https://github.com/ErnstHolger/node-red/issues"},"dist":{"shasum":"1c46bfff61e9139980e4ec596d3a47e65f911385","tarball":"https://registry.npmjs.org/node-red-contrib-questdb/-/node-red-contrib-questdb-0.5.0.tgz","fileCount":7,"integrity":"sha512-EyP+g+5hF1pUfwg6Kjx/9zsVXAWaxuWledsq5bk1fyU+x5oqK6lKuWd/iDfg8Lhp80gpfPbiU9jjNXHRhZmNow==","signatures":[{"sig":"MEQCIEytAQI5EpBsdMlyQilDeQk3yIqhl3+1UNQlKIRxPlvbAiAvGjl/LD1LHbSV98rZJgDOzMs8eIh8PkJ9+0dC91D2pA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":87969},"engines":{"node":">=20.0.0"},"gitHead":"f6ca3f61a1e67d8d713ad03044ac947bc609a4cd","scripts":{"publish:dry":"npm publish --dry-run","prepublishOnly":"npm test --if-present"},"_npmUser":{"name":"holgeramort","email":"holgeramort@gmail.com"},"node-red":{"nodes":{"questdb-write":"nodes/write.js","questdb-mapper":"nodes/mapper.js"},"version":">=2.0.0"},"repository":{"url":"git+https://github.com/ErnstHolger/node-red.git","type":"git"},"_npmVersion":"10.9.2","description":"Node-RED nodes for QuestDB time-series database","directories":{},"_nodeVersion":"22.17.0","dependencies":{"@questdb/nodejs-client":"^4.2.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/node-red-contrib-questdb_0.5.0_1767223820534_0.26901218243331604","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"node-red-contrib-questdb","version":"0.5.1","keywords":["node-red","questdb","time-series","database","ilp","influx-line-protocol"],"author":{"name":"Holger Amort"},"license":"MIT","_id":"node-red-contrib-questdb@0.5.1","maintainers":[{"name":"holgeramort","email":"holgeramort@gmail.com"}],"homepage":"https://github.com/ErnstHolger/node-red#readme","bugs":{"url":"https://github.com/ErnstHolger/node-red/issues"},"dist":{"shasum":"a21bc61f6ec6ac5f688708d2b78cb0927f5d5b38","tarball":"https://registry.npmjs.org/node-red-contrib-questdb/-/node-red-contrib-questdb-0.5.1.tgz","fileCount":7,"integrity":"sha512-yPAyJBtVSjGugNRTms7buNhtu1a8wm0zY8cBTDhdtOxzXtO9/dYTb1Tn00eGJfjng8bybcRNw11OvuaHngtZ3A==","signatures":[{"sig":"MEQCIG32c9akmoee7lLKsH6II4x+90j94ZNBR/onCp01VcfkAiAI7zO1A5TSHbPNzTFJySxidr9bKlKcqUkndvtnMBqtkA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":87971},"engines":{"node":">=20.0.0"},"gitHead":"e6ed614eff514e6c348bdd2f0853658c892fecee","scripts":{"publish:dry":"npm publish --dry-run","prepublishOnly":"npm test --if-present"},"_npmUser":{"name":"holgeramort","email":"holgeramort@gmail.com"},"node-red":{"nodes":{"questdb-mapper":"nodes/mapper.js","questdb-writer":"nodes/writer.js"},"version":">=2.0.0"},"repository":{"url":"git+https://github.com/ErnstHolger/node-red.git","type":"git"},"_npmVersion":"10.9.2","description":"Node-RED nodes for QuestDB time-series database","directories":{},"_nodeVersion":"22.17.0","dependencies":{"@questdb/nodejs-client":"^4.2.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/node-red-contrib-questdb_0.5.1_1767285093025_0.7378923618978201","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"node-red-contrib-questdb","version":"0.5.2","keywords":["node-red","questdb","time-series","database","ilp","influx-line-protocol"],"author":{"name":"Holger Amort"},"license":"MIT","_id":"node-red-contrib-questdb@0.5.2","maintainers":[{"name":"holgeramort","email":"holgeramort@gmail.com"}],"homepage":"https://github.com/ErnstHolger/node-red#readme","bugs":{"url":"https://github.com/ErnstHolger/node-red/issues"},"dist":{"shasum":"238eed00a86c90edb8d68a98e588bd2c7d9aa4c4","tarball":"https://registry.npmjs.org/node-red-contrib-questdb/-/node-red-contrib-questdb-0.5.2.tgz","fileCount":7,"integrity":"sha512-6bgTh+VQTOqYvcbtItAnYQwyxYLCDHJ06fv/y/j4wM4OtztjFoM8vlbAOo+ERJOWtWRCuA7RMn/IocVIE1mooQ==","signatures":[{"sig":"MEQCIDzMlo0RBDc+UHZqWrR3jMvDMCvknHvKXbqQpU8eKQQYAiBrK4dPTgIh7spBSuYLAPWOyASaS1COF2diXPZiwK6u7g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":87923},"engines":{"node":">=20.0.0"},"gitHead":"7ebe57b908cb45aa832d35ca88fb6eefbf6e073b","scripts":{"publish:dry":"npm publish --dry-run"},"_npmUser":{"name":"holgeramort","email":"holgeramort@gmail.com"},"node-red":{"nodes":{"questdb-mapper":"nodes/mapper.js","questdb-writer":"nodes/writer.js"},"version":">=2.0.0"},"repository":{"url":"git+https://github.com/ErnstHolger/node-red.git","type":"git"},"_npmVersion":"10.9.2","description":"Node-RED nodes for QuestDB time-series database","directories":{},"_nodeVersion":"22.17.0","dependencies":{"@questdb/nodejs-client":"^4.2.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/node-red-contrib-questdb_0.5.2_1767527417289_0.43517129275591904","host":"s3://npm-registry-packages-npm-production"}},"0.5.3":{"name":"node-red-contrib-questdb","version":"0.5.3","keywords":["node-red","questdb","time-series","database","ilp","influx-line-protocol"],"author":{"name":"Holger Amort"},"license":"MIT","_id":"node-red-contrib-questdb@0.5.3","maintainers":[{"name":"holgeramort","email":"holgeramort@gmail.com"}],"homepage":"https://github.com/ErnstHolger/node-red#readme","bugs":{"url":"https://github.com/ErnstHolger/node-red/issues"},"dist":{"shasum":"e02679df82342c9480393e58a518bcba255f9ebe","tarball":"https://registry.npmjs.org/node-red-contrib-questdb/-/node-red-contrib-questdb-0.5.3.tgz","fileCount":9,"integrity":"sha512-IPD3V2DSPU1xYPyhsL6V7aPux3ieE3P6iMa2ds0qMt6apIB7suh8q3Ie6X4L137CvEraePURZP6X/dtSbOt1Ew==","signatures":[{"sig":"MEUCIGe9YeCpgSZzRVoHUQSm0tjetpj7OdwseX6CVBZioPTOAiEA8raFfJpTILv3t0Kax4dtlWLG7kP5t2FwHyg7XoB+qqI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":93024},"engines":{"node":">=20.0.0"},"gitHead":"e8bee8f8155f0b8a6d29315d7a005d8b6ab4d80e","scripts":{"publish:dry":"npm publish --dry-run"},"_npmUser":{"name":"holgeramort","email":"holgeramort@gmail.com"},"node-red":{"nodes":{"questdb-mapper":"nodes/mapper.js","questdb-writer":"nodes/writer.js","qdb-type-router":"nodes/type-router.js"},"version":">=2.0.0"},"repository":{"url":"git+https://github.com/ErnstHolger/node-red.git","type":"git"},"_npmVersion":"10.9.2","description":"Node-RED nodes for QuestDB time-series database","directories":{},"_nodeVersion":"22.17.0","dependencies":{"@questdb/nodejs-client":"^4.2.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/node-red-contrib-questdb_0.5.3_1767529685887_0.42706510175642265","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"node-red-contrib-questdb","version":"0.6.0","keywords":["node-red","questdb","time-series","database","ilp","influx-line-protocol","iot","industrial","monitoring","telemetry","metrics","sensors","analytics","mqtt","modbus","scada","manufacturing","smart-building","hvac","energy","agriculture","fleet-tracking","telematics","healthcare","vitals","weather","smart-meter","observability","data-ingestion"],"author":{"name":"Holger Amort"},"license":"MIT","_id":"node-red-contrib-questdb@0.6.0","maintainers":[{"name":"holgeramort","email":"holgeramort@gmail.com"}],"homepage":"https://github.com/ErnstHolger/node-red-contrib-questdb#readme","bugs":{"url":"https://github.com/ErnstHolger/node-red-contrib-questdb/issues"},"dist":{"shasum":"e94ace7ef191ba5b446d89a377ea5221b4965907","tarball":"https://registry.npmjs.org/node-red-contrib-questdb/-/node-red-contrib-questdb-0.6.0.tgz","fileCount":10,"integrity":"sha512-m1843Lh2M6MYRM991Dl2TZvyxeVekMNkKBgmTCjsp8+OKD9lwP0MatkatxKCoF7/HGcHlVWhqwVPLMoe3zyPlg==","signatures":[{"sig":"MEUCIEsbczIml0f239Tht+z3/p+pSMK/2d7tmhJne8RzUV1hAiEAqyz6oMkbvhwd5ZD2pvv594ws1F+KZ/MX3N6EEUV8mO0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":125924},"engines":{"node":">=20.0.0"},"gitHead":"c5612d183cdd337d2ebe45bc16999a078c41151c","scripts":{"publish:dry":"npm publish --dry-run"},"_npmUser":{"name":"holgeramort","email":"holgeramort@gmail.com"},"node-red":{"nodes":{"questdb":"nodes/questdb.js","questdb-mapper":"nodes/questdb-mapper.js","questdb-type-router":"nodes/questdb-type-router.js"},"version":">=2.0.0"},"repository":{"url":"git+https://github.com/ErnstHolger/node-red-contrib-questdb.git","type":"git"},"_npmVersion":"10.9.2","description":"Node-RED nodes for writing high-performance time-series data to QuestDB using Influx Line Protocol (ILP). Supports IoT, industrial monitoring, smart buildings, fleet telematics, healthcare, agriculture, and more.","directories":{},"_nodeVersion":"22.17.0","dependencies":{"@questdb/nodejs-client":"^4.2.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/node-red-contrib-questdb_0.6.0_1769836697303_0.5041993518687964","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"node-red-contrib-questdb","version":"0.6.1","keywords":["node-red","questdb","time-series","database","ilp","influx-line-protocol","iot","industrial","monitoring","telemetry","metrics","sensors","analytics","mqtt","modbus","scada","manufacturing","smart-building","hvac","energy","agriculture","fleet-tracking","telematics","healthcare","vitals","weather","smart-meter","observability","data-ingestion"],"author":{"name":"Holger Amort"},"license":"MIT","_id":"node-red-contrib-questdb@0.6.1","maintainers":[{"name":"holgeramort","email":"holgeramort@gmail.com"}],"homepage":"https://github.com/ErnstHolger/node-red-contrib-questdb#readme","bugs":{"url":"https://github.com/ErnstHolger/node-red-contrib-questdb/issues"},"dist":{"shasum":"f2b249dc2dd0a07fc1ab0e17126bc9e4ce987af8","tarball":"https://registry.npmjs.org/node-red-contrib-questdb/-/node-red-contrib-questdb-0.6.1.tgz","fileCount":12,"integrity":"sha512-30oUUiq0WKpi0/DIvtp2qsElCqWmMMyykmk+XjztsSjPQlDDq93ASGI7WjSc7aT4zVV0UzoDzU4mgk9QCbL7KQ==","signatures":[{"sig":"MEUCIQCVBVvcjDUYPXoVhPzVWP/EBp2pGzjTXDJc2Fih90pZkgIgOGBD3Zz/70yGy7Zn39kBjNYB9QqQXpQnnrGrgvhHTdk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":139943},"engines":{"node":">=20.0.0"},"gitHead":"7599805c70f70d9cb4f54d09b9f111c7148e873e","scripts":{"lint":"eslint .","test":"mocha --exit test/**/*_spec.js","format":"prettier --write .","prepare":"husky","coverage":"c8 npm test","lint:fix":"eslint --fix .","test:watch":"mocha --watch test/**/*_spec.js","publish:dry":"npm publish --dry-run","format:check":"prettier --check ."},"_npmUser":{"name":"holgeramort","email":"holgeramort@gmail.com"},"node-red":{"nodes":{"questdb":"nodes/questdb.js","questdb-mapper":"nodes/questdb-mapper.js","questdb-type-router":"nodes/questdb-type-router.js"},"version":">=2.0.0"},"repository":{"url":"git+https://github.com/ErnstHolger/node-red-contrib-questdb.git","type":"git"},"_npmVersion":"10.9.2","description":"Node-RED nodes for writing high-performance time-series data to QuestDB using Influx Line Protocol (ILP). Supports IoT, industrial monitoring, smart buildings, fleet telematics, healthcare, agriculture, and more.","directories":{},"lint-staged":{"*.js":["eslint --fix","prettier --write"],"*.{json,md,html}":["prettier --write"]},"_nodeVersion":"22.17.0","dependencies":{"@questdb/nodejs-client":"^4.2.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^10.1.3","husky":"^9.1.7","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^9.39.2","should":"^13.2.3","globals":"^15.15.0","node-red":"^4.1.4","prettier":"3.8.1","@eslint/js":"^9.39.2","lint-staged":"^15.5.2","eslint-config-prettier":"^10.1.8","node-red-node-test-helper":"^0.3.6"},"_npmOperationalInternal":{"tmp":"tmp/node-red-contrib-questdb_0.6.1_1770403957678_0.9594848055414402","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"node-red-contrib-questdb","version":"0.6.2","keywords":["node-red","questdb","time-series","database","ilp","influx-line-protocol","iot","industrial","monitoring","telemetry","metrics","sensors","analytics","mqtt","modbus","scada","manufacturing","smart-building","hvac","energy","agriculture","fleet-tracking","telematics","healthcare","vitals","weather","smart-meter","observability","data-ingestion"],"author":{"name":"Holger Amort"},"license":"MIT","_id":"node-red-contrib-questdb@0.6.2","maintainers":[{"name":"holgeramort","email":"holgeramort@gmail.com"}],"homepage":"https://github.com/ErnstHolger/node-red-contrib-questdb#readme","bugs":{"url":"https://github.com/ErnstHolger/node-red-contrib-questdb/issues"},"dist":{"shasum":"03caafb07feb79e24a4a1a8517cc302effef6237","tarball":"https://registry.npmjs.org/node-red-contrib-questdb/-/node-red-contrib-questdb-0.6.2.tgz","fileCount":12,"integrity":"sha512-jQVmrRuNeSKZlMOTLdIG81mqS6KAusvxBrFYLJ3AWMCMgr6cFXsrrYqAE/xhmQdCmEVeS8lptdAJSv2eOJMzKA==","signatures":[{"sig":"MEQCICt0Lr/Paf+vJqud5K3WtPZpFUqQQFjMAAOhiiKW5hi1AiAx0gMgnUJm1rK7ev6oQWoBJnL93QtW36PbYe0llA9mgg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":140701},"engines":{"node":">=20.0.0"},"gitHead":"41760551e5ca22c616a1df6952d5e2749c0b0a4a","scripts":{"lint":"eslint .","test":"mocha --exit test/**/*_spec.js","format":"prettier --write .","prepare":"husky","coverage":"c8 npm test","lint:fix":"eslint --fix .","test:watch":"mocha --watch test/**/*_spec.js","publish:dry":"npm publish --dry-run","format:check":"prettier --check ."},"_npmUser":{"name":"holgeramort","email":"holgeramort@gmail.com"},"node-red":{"nodes":{"questdb":"nodes/questdb.js","questdb-mapper":"nodes/questdb-mapper.js","questdb-type-router":"nodes/questdb-type-router.js"},"version":">=2.0.0"},"repository":{"url":"git+https://github.com/ErnstHolger/node-red-contrib-questdb.git","type":"git"},"_npmVersion":"10.9.2","description":"Node-RED nodes for writing high-performance time-series data to QuestDB using Influx Line Protocol (ILP). Supports IoT, industrial monitoring, smart buildings, fleet telematics, healthcare, agriculture, and more.","directories":{},"lint-staged":{"*.js":["eslint --fix","prettier --write"],"*.{json,md,html}":["prettier --write"]},"_nodeVersion":"22.17.0","dependencies":{"@questdb/nodejs-client":"^4.2.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^10.1.3","husky":"^9.1.7","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^9.39.2","should":"^13.2.3","globals":"^15.15.0","node-red":"^4.1.4","prettier":"3.8.1","@eslint/js":"^9.39.2","lint-staged":"^15.5.2","eslint-config-prettier":"^10.1.8","node-red-node-test-helper":"^0.3.6"},"_npmOperationalInternal":{"tmp":"tmp/node-red-contrib-questdb_0.6.2_1770572251909_0.009528949258877484","host":"s3://npm-registry-packages-npm-production"}},"0.6.3":{"name":"node-red-contrib-questdb","version":"0.6.3","keywords":["node-red","questdb","time-series","database","ilp","influx-line-protocol","iot","industrial","monitoring","telemetry","metrics","sensors","analytics","mqtt","modbus","scada","manufacturing","smart-building","hvac","energy","agriculture","fleet-tracking","telematics","healthcare","vitals","weather","smart-meter","observability","data-ingestion"],"author":{"name":"Holger Amort"},"license":"MIT","_id":"node-red-contrib-questdb@0.6.3","maintainers":[{"name":"holgeramort","email":"holgeramort@gmail.com"}],"homepage":"https://github.com/ErnstHolger/node-red-contrib-questdb#readme","bugs":{"url":"https://github.com/ErnstHolger/node-red-contrib-questdb/issues"},"dist":{"shasum":"d1d732e1c29dd2672a361470b9e53829d101fbc4","tarball":"https://registry.npmjs.org/node-red-contrib-questdb/-/node-red-contrib-questdb-0.6.3.tgz","fileCount":12,"integrity":"sha512-9fPMWxTaHExYxKJOMfMvZERokrXPUSJMXjpiMj8KikCs8mnIfJOxRKyqk0KsCl4LVyQH2BMf8aN8PtFQ6dutOA==","signatures":[{"sig":"MEUCIDerFaiIb41JWEt6UjFM912Wh8pyIIYVwUn7oyj4XSjxAiEA1GI8tBKAJX8AsV0vqqH2/OJoRDeJtrhaF3kwn6RaJXA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":141543},"engines":{"node":">=20.0.0"},"gitHead":"0631e5b74e704ddf1e20da8235b18da50e85de0c","scripts":{"lint":"eslint .","test":"mocha --exit test/**/*_spec.js","format":"prettier --write .","prepare":"husky","coverage":"c8 npm test","lint:fix":"eslint --fix .","test:watch":"mocha --watch test/**/*_spec.js","publish:dry":"npm publish --dry-run","format:check":"prettier --check ."},"_npmUser":{"name":"holgeramort","email":"holgeramort@gmail.com"},"node-red":{"nodes":{"questdb":"nodes/questdb.js","questdb-mapper":"nodes/questdb-mapper.js","questdb-type-router":"nodes/questdb-type-router.js"},"version":">=2.0.0"},"repository":{"url":"git+https://github.com/ErnstHolger/node-red-contrib-questdb.git","type":"git"},"_npmVersion":"10.9.2","description":"Node-RED nodes for writing high-performance time-series data to QuestDB using Influx Line Protocol (ILP). Supports IoT, industrial monitoring, smart buildings, fleet telematics, healthcare, agriculture, and more.","directories":{},"lint-staged":{"*.js":["eslint --fix","prettier --write"],"*.{json,md,html}":["prettier --write"]},"_nodeVersion":"22.17.0","dependencies":{"@questdb/nodejs-client":"^4.2.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^10.1.3","husky":"^9.1.7","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^9.39.2","should":"^13.2.3","globals":"^15.15.0","node-red":"^4.1.4","prettier":"3.8.1","@eslint/js":"^9.39.2","lint-staged":"^15.5.2","eslint-config-prettier":"^10.1.8","node-red-node-test-helper":"^0.3.6"},"_npmOperationalInternal":{"tmp":"tmp/node-red-contrib-questdb_0.6.3_1770572680244_0.20316244057060273","host":"s3://npm-registry-packages-npm-production"}},"0.6.4":{"name":"node-red-contrib-questdb","version":"0.6.4","keywords":["node-red","questdb","time-series","database","ilp","influx-line-protocol","iot","industrial","monitoring","telemetry","metrics","sensors","analytics","mqtt","modbus","scada","manufacturing","smart-building","hvac","energy","agriculture","fleet-tracking","telematics","healthcare","vitals","weather","smart-meter","observability","data-ingestion"],"author":{"name":"Holger Amort"},"license":"MIT","_id":"node-red-contrib-questdb@0.6.4","maintainers":[{"name":"holgeramort","email":"holgeramort@gmail.com"}],"homepage":"https://github.com/ErnstHolger/node-red-contrib-questdb#readme","bugs":{"url":"https://github.com/ErnstHolger/node-red-contrib-questdb/issues"},"dist":{"shasum":"6f098e9974e90283c78e5e5ad41bffc7478bbd99","tarball":"https://registry.npmjs.org/node-red-contrib-questdb/-/node-red-contrib-questdb-0.6.4.tgz","fileCount":12,"integrity":"sha512-8/bepr/QUdB0C+oJapp1ytq4hQgzLK9+HV5njDW9NZDsfEy4k8YBK1HA+5LWkENgxBIT9GbZc4vHuh2uFClozg==","signatures":[{"sig":"MEYCIQDIG9KqfqnM7PDROPrFLh4o6OjywT3TK3eavbLx7SjsFAIhANgQ+TXCTVPAXDm031WoE0ybQOYSN/iA2F/xMHkRAJPL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":141665},"engines":{"node":">=20.0.0"},"gitHead":"c6941431a447a91c87558de0b5209cfbf073de9e","scripts":{"lint":"eslint .","test":"mocha --exit test/**/*_spec.js","format":"prettier --write .","prepare":"husky","coverage":"c8 npm test","lint:fix":"eslint --fix .","test:watch":"mocha --watch test/**/*_spec.js","publish:dry":"npm publish --dry-run","format:check":"prettier --check ."},"_npmUser":{"name":"holgeramort","email":"holgeramort@gmail.com"},"node-red":{"nodes":{"questdb":"nodes/questdb.js","questdb-mapper":"nodes/questdb-mapper.js","questdb-type-router":"nodes/questdb-type-router.js"},"version":">=2.0.0"},"repository":{"url":"git+https://github.com/ErnstHolger/node-red-contrib-questdb.git","type":"git"},"_npmVersion":"10.9.2","description":"Node-RED nodes for writing high-performance time-series data to QuestDB using Influx Line Protocol (ILP). Supports IoT, industrial monitoring, smart buildings, fleet telematics, healthcare, agriculture, and more.","directories":{},"lint-staged":{"*.js":["eslint --fix","prettier --write"],"*.{json,md,html}":["prettier --write"]},"_nodeVersion":"22.17.0","dependencies":{"@questdb/nodejs-client":"^4.2.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^10.1.3","husky":"^9.1.7","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^9.39.2","should":"^13.2.3","globals":"^15.15.0","node-red":"^4.1.4","prettier":"3.8.1","@eslint/js":"^9.39.2","lint-staged":"^15.5.2","eslint-config-prettier":"^10.1.8","node-red-node-test-helper":"^0.3.6"},"_npmOperationalInternal":{"tmp":"tmp/node-red-contrib-questdb_0.6.4_1770572793605_0.06616085160101948","host":"s3://npm-registry-packages-npm-production"}},"0.6.6":{"name":"node-red-contrib-questdb","version":"0.6.6","keywords":["node-red","questdb","time-series","database","ilp","influx-line-protocol","iot","industrial","monitoring","telemetry","metrics","sensors","analytics","mqtt","modbus","scada","manufacturing","smart-building","hvac","energy","agriculture","fleet-tracking","telematics","healthcare","vitals","weather","smart-meter","observability","data-ingestion"],"author":{"name":"Holger Amort"},"license":"MIT","_id":"node-red-contrib-questdb@0.6.6","maintainers":[{"name":"holgeramort","email":"holgeramort@gmail.com"}],"homepage":"https://github.com/ErnstHolger/node-red-contrib-questdb#readme","bugs":{"url":"https://github.com/ErnstHolger/node-red-contrib-questdb/issues"},"dist":{"shasum":"a3599c4c8d54413b40fc81d3ba98b93e02c34293","tarball":"https://registry.npmjs.org/node-red-contrib-questdb/-/node-red-contrib-questdb-0.6.6.tgz","fileCount":12,"integrity":"sha512-mX4vt3IOri7mSObdbdGua1aVCxaaKZojGvINmErkVaeDi1fh8xZLjmS3warcLxfA54l9FhHeH80zNxqQMt6OeQ==","signatures":[{"sig":"MEUCIBj7vnYkB2EmuRrGNnBM8bcqjrTXpudOa9KSgujeaaAoAiEAky0Xy9RxiukGm0C9MYb+NLy5hT8MpILggJ2awDicSog=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":142413},"engines":{"node":">=20.0.0"},"gitHead":"517856e61a4143b3369105f98c4522de1f882855","scripts":{"lint":"eslint .","test":"mocha --exit test/**/*_spec.js","format":"prettier --write .","prepare":"husky","coverage":"c8 npm test","lint:fix":"eslint --fix .","test:watch":"mocha --watch test/**/*_spec.js","publish:dry":"npm publish --dry-run","format:check":"prettier --check ."},"_npmUser":{"name":"holgeramort","email":"holgeramort@gmail.com"},"node-red":{"nodes":{"questdb":"nodes/questdb.js","questdb-mapper":"nodes/questdb-mapper.js","questdb-type-router":"nodes/questdb-type-router.js"},"version":">=2.0.0"},"repository":{"url":"git+https://github.com/ErnstHolger/node-red-contrib-questdb.git","type":"git"},"_npmVersion":"10.9.2","description":"Node-RED nodes for writing high-performance time-series data to QuestDB using Influx Line Protocol (ILP). Supports IoT, industrial monitoring, smart buildings, fleet telematics, healthcare, agriculture, and more.","directories":{},"lint-staged":{"*.js":["eslint --fix","prettier --write"],"*.{json,md,html}":["prettier --write"]},"_nodeVersion":"22.17.0","dependencies":{"@questdb/nodejs-client":"^4.2.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^10.1.3","husky":"^9.1.7","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^9.39.2","should":"^13.2.3","globals":"^15.15.0","node-red":"^4.1.4","prettier":"3.8.1","@eslint/js":"^9.39.2","lint-staged":"^15.5.2","eslint-config-prettier":"^10.1.8","node-red-node-test-helper":"^0.3.6"},"_npmOperationalInternal":{"tmp":"tmp/node-red-contrib-questdb_0.6.6_1770573377091_0.659884644775655","host":"s3://npm-registry-packages-npm-production"}},"0.6.8":{"name":"node-red-contrib-questdb","version":"0.6.8","keywords":["node-red","questdb","time-series","database","ilp","influx-line-protocol","iot","industrial","monitoring","telemetry","metrics","sensors","analytics","mqtt","modbus","scada","manufacturing","smart-building","hvac","energy","agriculture","fleet-tracking","telematics","healthcare","vitals","weather","smart-meter","observability","data-ingestion"],"author":{"name":"Holger Amort"},"license":"MIT","_id":"node-red-contrib-questdb@0.6.8","maintainers":[{"name":"holgeramort","email":"holgeramort@gmail.com"}],"homepage":"https://github.com/ErnstHolger/node-red-contrib-questdb#readme","bugs":{"url":"https://github.com/ErnstHolger/node-red-contrib-questdb/issues"},"dist":{"shasum":"d8b862b60ce759071e080fdbb4d1eb34fc4d7960","tarball":"https://registry.npmjs.org/node-red-contrib-questdb/-/node-red-contrib-questdb-0.6.8.tgz","fileCount":12,"integrity":"sha512-KG/nq7pbmjXP7ifaUQNYfj5exIfZkS4gb1MdXQD2iQuLwtxtenuXC5JEznt2W1sqhfH1nICd78vm9fK8HMmJfg==","signatures":[{"sig":"MEQCIBe1Gs05E4KBfBbKfe2eGosohEO0ndJybQ2SJjEbRKxeAiAX8iYnCRlj2ZVsX/NvQT8gyqycd7X8ybj0LcZSpR2/qQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":145195},"engines":{"node":">=20.0.0"},"gitHead":"2e634baf6ca474ac453fa2a83031bbf9f2794462","scripts":{"lint":"eslint .","test":"mocha --exit test/**/*_spec.js","format":"prettier --write .","prepare":"husky","coverage":"c8 npm test","lint:fix":"eslint --fix .","test:watch":"mocha --watch test/**/*_spec.js","publish:dry":"npm publish --dry-run","format:check":"prettier --check ."},"_npmUser":{"name":"holgeramort","email":"holgeramort@gmail.com"},"node-red":{"nodes":{"questdb":"nodes/questdb.js","questdb-mapper":"nodes/questdb-mapper.js","questdb-type-router":"nodes/questdb-type-router.js"},"version":">=2.0.0"},"repository":{"url":"git+https://github.com/ErnstHolger/node-red-contrib-questdb.git","type":"git"},"_npmVersion":"10.9.2","description":"Node-RED nodes for writing high-performance time-series data to QuestDB using Influx Line Protocol (ILP). Supports IoT, industrial monitoring, smart buildings, fleet telematics, healthcare, agriculture, and more.","directories":{},"lint-staged":{"*.js":["eslint --fix","prettier --write"],"*.{json,md,html}":["prettier --write"]},"_nodeVersion":"22.17.0","dependencies":{"@questdb/nodejs-client":"^4.2.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^10.1.3","husky":"^9.1.7","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^9.39.2","should":"^13.2.3","globals":"^15.15.0","node-red":"^4.1.4","prettier":"3.8.1","@eslint/js":"^9.39.2","lint-staged":"^15.5.2","eslint-config-prettier":"^10.1.8","node-red-node-test-helper":"^0.3.6"},"_npmOperationalInternal":{"tmp":"tmp/node-red-contrib-questdb_0.6.8_1771432431401_0.24000371405247112","host":"s3://npm-registry-packages-npm-production"}},"0.6.9":{"name":"node-red-contrib-questdb","version":"0.6.9","keywords":["node-red","questdb","time-series","database","ilp","influx-line-protocol","iot","industrial","monitoring","telemetry","metrics","sensors","analytics","mqtt","modbus","scada","manufacturing","smart-building","hvac","energy","agriculture","fleet-tracking","telematics","healthcare","vitals","weather","smart-meter","observability","data-ingestion"],"author":{"name":"Holger Amort"},"license":"MIT","_id":"node-red-contrib-questdb@0.6.9","maintainers":[{"name":"holgeramort","email":"holgeramort@gmail.com"}],"homepage":"https://github.com/ErnstHolger/node-red-contrib-questdb#readme","bugs":{"url":"https://github.com/ErnstHolger/node-red-contrib-questdb/issues"},"dist":{"shasum":"6db5429458b3d0e82399fa6ffc37f62db2e171f1","tarball":"https://registry.npmjs.org/node-red-contrib-questdb/-/node-red-contrib-questdb-0.6.9.tgz","fileCount":12,"integrity":"sha512-/7Nmcx0ETFnuOBrcA+i2UA5aWZq+dZj4fRE11Nd+2W7QjR0NaiFNPEBNIXa8aT2jZA4sPioan2nt8YyfH4j33g==","signatures":[{"sig":"MEYCIQDHVlgAeYfoi31fCij4gNkCrPfobEvCVYzrP5KTXNaGeAIhAK2RwcRswyCyDWslDWedv7wRJHUh48WeRwOg3ZUFB1C4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":142989},"engines":{"node":">=20.0.0"},"gitHead":"4923f55e6ab048a29760f84802592986fdcd0dbf","scripts":{"lint":"eslint .","test":"mocha --exit test/**/*_spec.js","format":"prettier --write .","prepare":"husky","coverage":"c8 npm test","lint:fix":"eslint --fix .","test:watch":"mocha --watch test/**/*_spec.js","publish:dry":"npm publish --dry-run","format:check":"prettier --check ."},"_npmUser":{"name":"holgeramort","email":"holgeramort@gmail.com"},"node-red":{"nodes":{"questdb":"nodes/questdb.js","questdb-mapper":"nodes/questdb-mapper.js","questdb-type-router":"nodes/questdb-type-router.js"},"version":">=2.0.0"},"repository":{"url":"git+https://github.com/ErnstHolger/node-red-contrib-questdb.git","type":"git"},"_npmVersion":"10.9.2","description":"Node-RED nodes for writing high-performance time-series data to QuestDB using Influx Line Protocol (ILP). Supports IoT, industrial monitoring, smart buildings, fleet telematics, healthcare, agriculture, and more.","directories":{},"lint-staged":{"*.js":["eslint --fix","prettier --write"],"*.{json,md,html}":["prettier --write"]},"_nodeVersion":"22.17.0","dependencies":{"@questdb/nodejs-client":"^4.2.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^10.1.3","husky":"^9.1.7","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^9.39.2","should":"^13.2.3","globals":"^15.15.0","node-red":"^4.1.4","prettier":"3.8.1","@eslint/js":"^9.39.2","lint-staged":"^15.5.2","eslint-config-prettier":"^10.1.8","node-red-node-test-helper":"^0.3.6"},"_npmOperationalInternal":{"tmp":"tmp/node-red-contrib-questdb_0.6.9_1771527133367_0.3311514685971526","host":"s3://npm-registry-packages-npm-production"}},"0.6.22":{"name":"node-red-contrib-questdb","version":"0.6.22","keywords":["node-red","questdb","time-series","database","ilp","influx-line-protocol","iot","industrial","monitoring","telemetry","metrics","sensors","analytics","mqtt","modbus","scada","manufacturing","smart-building","hvac","energy","agriculture","fleet-tracking","telematics","healthcare","vitals","weather","smart-meter","observability","data-ingestion"],"author":{"name":"Holger Amort"},"license":"MIT","_id":"node-red-contrib-questdb@0.6.22","maintainers":[{"name":"holgeramort","email":"holgeramort@gmail.com"}],"homepage":"https://github.com/ErnstHolger/node-red-contrib-questdb#readme","bugs":{"url":"https://github.com/ErnstHolger/node-red-contrib-questdb/issues"},"dist":{"shasum":"98e24f87284f283a911cc7cc4376dc29d02186a0","tarball":"https://registry.npmjs.org/node-red-contrib-questdb/-/node-red-contrib-questdb-0.6.22.tgz","fileCount":17,"integrity":"sha512-cxwEWdK3NaWD2qSUYZWP2OF5i28Qla/xnGFXEVPToHajsPGmuLVju2FsCt6rLgSVl0Bb55kGQ5zZwGLkiWp1sw==","signatures":[{"sig":"MEYCIQCm5baV7fz9xmlsu2HgHwIXQOFa2iti7fOmCyM/rybHwwIhALIR4IIuR4BT/zFAtaenxvo76+ZKiV/o6CNwWvbMHAoj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":200133},"engines":{"node":">=20.0.0"},"gitHead":"4923f55e6ab048a29760f84802592986fdcd0dbf","scripts":{"lint":"eslint .","test":"mocha --exit test/**/*_spec.js","format":"prettier --write .","prepare":"husky","coverage":"c8 npm test","lint:fix":"eslint --fix .","test:watch":"mocha --watch test/**/*_spec.js","publish:dry":"npm publish --dry-run","format:check":"prettier --check ."},"_npmUser":{"name":"holgeramort","email":"holgeramort@gmail.com"},"node-red":{"nodes":{"questdb":"nodes/questdb.js","questdb-value":"nodes/questdb-value.js","questdb-mapper":"nodes/questdb-mapper.js","questdb-flatten":"nodes/questdb-flatten.js","questdb-type-router":"nodes/questdb-type-router.js"},"version":">=2.0.0"},"repository":{"url":"git+https://github.com/ErnstHolger/node-red-contrib-questdb.git","type":"git"},"_npmVersion":"10.9.2","description":"Node-RED nodes for writing high-performance time-series data to QuestDB using Influx Line Protocol (ILP). Supports IoT, industrial monitoring, smart buildings, fleet telematics, healthcare, agriculture, and more.","directories":{},"lint-staged":{"*.js":["eslint --fix","prettier --write"],"*.{json,md,html}":["prettier --write"]},"_nodeVersion":"22.17.0","dependencies":{"@questdb/nodejs-client":"^4.2.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^10.1.3","husky":"^9.1.7","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^9.39.2","should":"^13.2.3","globals":"^15.15.0","node-red":"^4.1.4","prettier":"3.8.1","@eslint/js":"^9.39.2","lint-staged":"^15.5.2","eslint-config-prettier":"^10.1.8","node-red-node-test-helper":"^0.3.6"},"_npmOperationalInternal":{"tmp":"tmp/node-red-contrib-questdb_0.6.22_1773515463637_0.0906108107664938","host":"s3://npm-registry-packages-npm-production"}},"0.6.23":{"name":"node-red-contrib-questdb","version":"0.6.23","keywords":["node-red","questdb","time-series","database","ilp","influx-line-protocol","iot","industrial","monitoring","telemetry","metrics","sensors","analytics","mqtt","modbus","scada","manufacturing","smart-building","hvac","energy","agriculture","fleet-tracking","telematics","healthcare","vitals","weather","smart-meter","observability","data-ingestion"],"author":{"name":"Holger Amort"},"license":"MIT","_id":"node-red-contrib-questdb@0.6.23","maintainers":[{"name":"holgeramort","email":"holgeramort@gmail.com"}],"homepage":"https://github.com/ErnstHolger/node-red-contrib-questdb#readme","bugs":{"url":"https://github.com/ErnstHolger/node-red-contrib-questdb/issues"},"dist":{"shasum":"c3df982dd3c5d12b58282184d4ac5dfa88ef3c9f","tarball":"https://registry.npmjs.org/node-red-contrib-questdb/-/node-red-contrib-questdb-0.6.23.tgz","fileCount":17,"integrity":"sha512-HAAfiq3c+b8J1CgbWxjFYOuFsbsRjEwGyeKzYiKAwVqoYs7dauTnVaQzcN1RfovSox4X1HKw0plI00KhNTcUjg==","signatures":[{"sig":"MEUCIQDd0offJ84FMU5kGJEXngCIWswF7VLrG2Vz3I91e+YS0wIgBSUApsPuC4vd9bIn5ieK9PZQU9jBNsxvERrBbW4EKVc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":204472},"engines":{"node":">=20.0.0"},"gitHead":"09a0642e423a060462efbb7f3d6a0fc4ea5c5d73","scripts":{"lint":"eslint .","test":"mocha --exit test/**/*_spec.js","format":"prettier --write .","prepare":"husky","coverage":"c8 npm test","lint:fix":"eslint --fix .","test:watch":"mocha --watch test/**/*_spec.js","publish:dry":"npm publish --dry-run","format:check":"prettier --check ."},"_npmUser":{"name":"holgeramort","email":"holgeramort@gmail.com"},"node-red":{"nodes":{"questdb":"nodes/questdb.js","questdb-value":"nodes/questdb-value.js","questdb-mapper":"nodes/questdb-mapper.js","questdb-flatten":"nodes/questdb-flatten.js","questdb-type-router":"nodes/questdb-type-router.js"},"version":">=2.0.0"},"repository":{"url":"git+https://github.com/ErnstHolger/node-red-contrib-questdb.git","type":"git"},"_npmVersion":"10.9.2","description":"Node-RED nodes for writing high-performance time-series data to QuestDB using Influx Line Protocol (ILP). Supports IoT, industrial monitoring, smart buildings, fleet telematics, healthcare, agriculture, and more.","directories":{},"lint-staged":{"*.js":["eslint --fix","prettier --write"],"*.{json,md,html}":["prettier --write"]},"_nodeVersion":"22.17.0","dependencies":{"@questdb/nodejs-client":"^4.2.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^10.1.3","husky":"^9.1.7","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^9.39.2","should":"^13.2.3","globals":"^15.15.0","node-red":"^4.1.4","prettier":"3.8.1","@eslint/js":"^9.39.2","lint-staged":"^15.5.2","eslint-config-prettier":"^10.1.8","node-red-node-test-helper":"^0.3.6"},"_npmOperationalInternal":{"tmp":"tmp/node-red-contrib-questdb_0.6.23_1773517177489_0.9866257925632687","host":"s3://npm-registry-packages-npm-production"}},"0.6.24":{"name":"node-red-contrib-questdb","version":"0.6.24","keywords":["node-red","questdb","time-series","database","ilp","influx-line-protocol","iot","industrial","monitoring","telemetry","metrics","sensors","analytics","mqtt","modbus","scada","manufacturing","smart-building","hvac","energy","agriculture","fleet-tracking","telematics","healthcare","vitals","weather","smart-meter","observability","data-ingestion"],"author":{"name":"Holger Amort"},"license":"MIT","_id":"node-red-contrib-questdb@0.6.24","maintainers":[{"name":"holgeramort","email":"holgeramort@gmail.com"}],"homepage":"https://github.com/ErnstHolger/node-red-contrib-questdb#readme","bugs":{"url":"https://github.com/ErnstHolger/node-red-contrib-questdb/issues"},"dist":{"shasum":"791a248794a5bb46aedca4cc5b5882d54d9fa22e","tarball":"https://registry.npmjs.org/node-red-contrib-questdb/-/node-red-contrib-questdb-0.6.24.tgz","fileCount":17,"integrity":"sha512-Fx1xPxvIACmSwB++WuJUe8mIyWY8TBrAA6NQcQHjZPy4qOOzT46jYdGcJvNV+uwrIewcs0/NR8bWxkAZtBe/cg==","signatures":[{"sig":"MEUCIQCavPjpmCy7lcloTFfPuPecDHIldnQ9O/UFNcSHxfR/SgIgN3TrhdbrVhxIIbapg/JeEhtW1a29jnUezfNqCXvgicA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":203873},"engines":{"node":">=20.0.0"},"gitHead":"a1af6df3f6c4a9d2943d9de2356d368f0bba2aac","scripts":{"lint":"eslint .","test":"mocha --exit test/**/*_spec.js","format":"prettier --write .","prepare":"husky","coverage":"c8 npm test","lint:fix":"eslint --fix .","test:watch":"mocha --watch test/**/*_spec.js","publish:dry":"npm publish --dry-run","format:check":"prettier --check ."},"_npmUser":{"name":"holgeramort","email":"holgeramort@gmail.com"},"node-red":{"nodes":{"questdb":"nodes/questdb.js","questdb-value":"nodes/questdb-value.js","questdb-mapper":"nodes/questdb-mapper.js","questdb-flatten":"nodes/questdb-flatten.js","questdb-type-router":"nodes/questdb-type-router.js"},"version":">=2.0.0"},"repository":{"url":"git+https://github.com/ErnstHolger/node-red-contrib-questdb.git","type":"git"},"_npmVersion":"10.9.2","description":"Node-RED nodes for writing high-performance time-series data to QuestDB using Influx Line Protocol (ILP). Supports IoT, industrial monitoring, smart buildings, fleet telematics, healthcare, agriculture, and more.","directories":{},"lint-staged":{"*.js":["eslint --fix","prettier --write"],"*.{json,md,html}":["prettier --write"]},"_nodeVersion":"22.17.0","dependencies":{"@questdb/nodejs-client":"^4.2.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^10.1.3","husky":"^9.1.7","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^9.39.2","should":"^13.2.3","globals":"^15.15.0","node-red":"^4.1.4","prettier":"3.8.1","@eslint/js":"^9.39.2","lint-staged":"^15.5.2","eslint-config-prettier":"^10.1.8","node-red-node-test-helper":"^0.3.6"},"_npmOperationalInternal":{"tmp":"tmp/node-red-contrib-questdb_0.6.24_1773517490441_0.18723412512401771","host":"s3://npm-registry-packages-npm-production"}},"0.6.25":{"name":"node-red-contrib-questdb","version":"0.6.25","keywords":["node-red","questdb","time-series","database","ilp","influx-line-protocol","iot","industrial","monitoring","telemetry","metrics","sensors","analytics","mqtt","modbus","scada","manufacturing","smart-building","hvac","energy","agriculture","fleet-tracking","telematics","healthcare","vitals","weather","smart-meter","observability","data-ingestion"],"author":{"name":"Holger Amort"},"license":"MIT","_id":"node-red-contrib-questdb@0.6.25","maintainers":[{"name":"holgeramort","email":"holgeramort@gmail.com"}],"homepage":"https://github.com/ErnstHolger/node-red-contrib-questdb#readme","bugs":{"url":"https://github.com/ErnstHolger/node-red-contrib-questdb/issues"},"dist":{"shasum":"98ff8ac80bd3ca04de3a90a48b3549fc1e5b9663","tarball":"https://registry.npmjs.org/node-red-contrib-questdb/-/node-red-contrib-questdb-0.6.25.tgz","fileCount":17,"integrity":"sha512-q/H5f5ijUi1Cgvux2GsJ5WHZb+QmvQpG9wp69zPKXGu8j1Pef7kre8A6ZXdKqI4lo+AlcwuOwK2Sp9X5gLJwmw==","signatures":[{"sig":"MEUCIQCCmeBVqc/MuA2GzhqXJcTjgYqtFRk09KbeysfSUPHQYQIgYLvscqwxi1Gl9oPPE2on9b5VIU7zk4x9h7GpvGc8KiY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":204438},"engines":{"node":">=20.0.0"},"gitHead":"e392f9367edce34bc76f59fb5c4959e3ce70183e","scripts":{"lint":"eslint .","test":"mocha --exit test/**/*_spec.js","format":"prettier --write .","prepare":"husky","coverage":"c8 npm test","lint:fix":"eslint --fix .","test:watch":"mocha --watch test/**/*_spec.js","publish:dry":"npm publish --dry-run","format:check":"prettier --check ."},"_npmUser":{"name":"holgeramort","email":"holgeramort@gmail.com"},"node-red":{"nodes":{"questdb":"nodes/questdb.js","questdb-value":"nodes/questdb-value.js","questdb-mapper":"nodes/questdb-mapper.js","questdb-flatten":"nodes/questdb-flatten.js","questdb-type-router":"nodes/questdb-type-router.js"},"version":">=2.0.0"},"repository":{"url":"git+https://github.com/ErnstHolger/node-red-contrib-questdb.git","type":"git"},"_npmVersion":"10.9.2","description":"Node-RED nodes for writing high-performance time-series data to QuestDB using Influx Line Protocol (ILP). Supports IoT, industrial monitoring, smart buildings, fleet telematics, healthcare, agriculture, and more.","directories":{},"lint-staged":{"*.js":["eslint --fix","prettier --write"],"*.{json,md,html}":["prettier --write"]},"_nodeVersion":"22.17.0","dependencies":{"@questdb/nodejs-client":"^4.2.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^10.1.3","husky":"^9.1.7","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^9.39.2","should":"^13.2.3","globals":"^15.15.0","node-red":"^4.1.4","prettier":"3.8.1","@eslint/js":"^9.39.2","lint-staged":"^15.5.2","eslint-config-prettier":"^10.1.8","node-red-node-test-helper":"^0.3.6"},"_npmOperationalInternal":{"tmp":"tmp/node-red-contrib-questdb_0.6.25_1773517870825_0.5980691062473502","host":"s3://npm-registry-packages-npm-production"}},"0.6.26":{"name":"node-red-contrib-questdb","version":"0.6.26","keywords":["node-red","questdb","time-series","database","ilp","influx-line-protocol","iot","industrial","monitoring","telemetry","metrics","sensors","analytics","mqtt","modbus","scada","manufacturing","smart-building","hvac","energy","agriculture","fleet-tracking","telematics","healthcare","vitals","weather","smart-meter","observability","data-ingestion"],"author":{"name":"Holger Amort"},"license":"MIT","_id":"node-red-contrib-questdb@0.6.26","maintainers":[{"name":"holgeramort","email":"holgeramort@gmail.com"}],"homepage":"https://github.com/ErnstHolger/node-red-contrib-questdb#readme","bugs":{"url":"https://github.com/ErnstHolger/node-red-contrib-questdb/issues"},"dist":{"shasum":"587ded61ee8d32ae505dc9cf21c946261b3cd5ca","tarball":"https://registry.npmjs.org/node-red-contrib-questdb/-/node-red-contrib-questdb-0.6.26.tgz","fileCount":17,"integrity":"sha512-h/3A9pPZ8fSjhYDokupf5057oowdu9M19x6DG2YP0FyLJDrcWSi97uK490r6rLxHMGZ0MdbZcL10a7NDfOk5jA==","signatures":[{"sig":"MEUCIQD+xB5QHpzsdY0zdiruBlfQFd4hQkpN6xJtyG5mZJdoOQIgCC0Cy8oV3r+v60Ekk2mZoFj3whKVolbvsBR8qK61aWw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":204569},"engines":{"node":">=20.0.0"},"gitHead":"869cb66b68115dea0911bf5416d6a0070a375127","scripts":{"lint":"eslint .","test":"mocha --exit test/**/*_spec.js","format":"prettier --write .","prepare":"husky","coverage":"c8 npm test","lint:fix":"eslint --fix .","test:watch":"mocha --watch test/**/*_spec.js","publish:dry":"npm publish --dry-run","format:check":"prettier --check ."},"_npmUser":{"name":"holgeramort","email":"holgeramort@gmail.com"},"node-red":{"nodes":{"questdb":"nodes/questdb.js","questdb-value":"nodes/questdb-value.js","questdb-mapper":"nodes/questdb-mapper.js","questdb-flatten":"nodes/questdb-flatten.js","questdb-type-router":"nodes/questdb-type-router.js"},"version":">=2.0.0"},"repository":{"url":"git+https://github.com/ErnstHolger/node-red-contrib-questdb.git","type":"git"},"_npmVersion":"10.9.2","description":"Node-RED nodes for writing high-performance time-series data to QuestDB using Influx Line Protocol (ILP). Supports IoT, industrial monitoring, smart buildings, fleet telematics, healthcare, agriculture, and more.","directories":{},"lint-staged":{"*.js":["eslint --fix","prettier --write"],"*.{json,md,html}":["prettier --write"]},"_nodeVersion":"22.17.0","dependencies":{"@questdb/nodejs-client":"^4.2.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^10.1.3","husky":"^9.1.7","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^9.39.2","should":"^13.2.3","globals":"^15.15.0","node-red":"^4.1.4","prettier":"3.8.1","@eslint/js":"^9.39.2","lint-staged":"^15.5.2","eslint-config-prettier":"^10.1.8","node-red-node-test-helper":"^0.3.6"},"_npmOperationalInternal":{"tmp":"tmp/node-red-contrib-questdb_0.6.26_1773518830839_0.1829742637249574","host":"s3://npm-registry-packages-npm-production"}},"0.6.27":{"name":"node-red-contrib-questdb","version":"0.6.27","keywords":["node-red","questdb","time-series","database","ilp","influx-line-protocol","iot","industrial","monitoring","telemetry","metrics","sensors","analytics","mqtt","modbus","scada","manufacturing","smart-building","hvac","energy","agriculture","fleet-tracking","telematics","healthcare","vitals","weather","smart-meter","observability","data-ingestion"],"author":{"name":"Holger Amort"},"license":"MIT","_id":"node-red-contrib-questdb@0.6.27","maintainers":[{"name":"holgeramort","email":"holgeramort@gmail.com"}],"homepage":"https://github.com/ErnstHolger/node-red-contrib-questdb#readme","bugs":{"url":"https://github.com/ErnstHolger/node-red-contrib-questdb/issues"},"dist":{"shasum":"0dfb4e4ae0fb0f12766a5b6bd78bd33992458ed0","tarball":"https://registry.npmjs.org/node-red-contrib-questdb/-/node-red-contrib-questdb-0.6.27.tgz","fileCount":17,"integrity":"sha512-SQbX00lAJ8hYgT2F1e4RuqDbop3jTWqem8eJvBiLGT2pAgLDtXkwoFDUa7KRnIbxm1/qDGnRs0v8pScIVGIC1A==","signatures":[{"sig":"MEUCIQCeJZT4f3JQUjtHGMCefcvIQglc9tvdpslnzJbcX+x5SgIgBvl2I09FFWsspCCn4Twj4tpHYeasOnMHh6kAt+LZdy0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":204569},"engines":{"node":">=20.0.0"},"gitHead":"869cb66b68115dea0911bf5416d6a0070a375127","scripts":{"lint":"eslint .","test":"mocha --exit test/**/*_spec.js","format":"prettier --write .","prepare":"husky","coverage":"c8 npm test","lint:fix":"eslint --fix .","test:watch":"mocha --watch test/**/*_spec.js","publish:dry":"npm publish --dry-run","format:check":"prettier --check ."},"_npmUser":{"name":"holgeramort","email":"holgeramort@gmail.com"},"node-red":{"nodes":{"questdb":"nodes/questdb.js","questdb-value":"nodes/questdb-value.js","questdb-mapper":"nodes/questdb-mapper.js","questdb-flatten":"nodes/questdb-flatten.js","questdb-type-router":"nodes/questdb-type-router.js"},"version":">=2.0.0"},"repository":{"url":"git+https://github.com/ErnstHolger/node-red-contrib-questdb.git","type":"git"},"_npmVersion":"10.9.2","description":"Node-RED nodes for writing high-performance time-series data to QuestDB using Influx Line Protocol (ILP). Supports IoT, industrial monitoring, smart buildings, fleet telematics, healthcare, agriculture, and more.","directories":{},"lint-staged":{"*.js":["eslint --fix","prettier --write"],"*.{json,md,html}":["prettier --write"]},"_nodeVersion":"22.17.0","dependencies":{"@questdb/nodejs-client":"^4.2.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^10.1.3","husky":"^9.1.7","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^9.39.2","should":"^13.2.3","globals":"^15.15.0","node-red":"^4.1.4","prettier":"3.8.1","@eslint/js":"^9.39.2","lint-staged":"^15.5.2","eslint-config-prettier":"^10.1.8","node-red-node-test-helper":"^0.3.6"},"_npmOperationalInternal":{"tmp":"tmp/node-red-contrib-questdb_0.6.27_1773528783256_0.7626549724108067","host":"s3://npm-registry-packages-npm-production"}},"0.6.28":{"name":"node-red-contrib-questdb","version":"0.6.28","keywords":["node-red","questdb","time-series","database","ilp","influx-line-protocol","iot","industrial","monitoring","telemetry","metrics","sensors","analytics","mqtt","modbus","scada","manufacturing","smart-building","hvac","energy","agriculture","fleet-tracking","telematics","healthcare","vitals","weather","smart-meter","observability","data-ingestion"],"author":{"name":"Holger Amort"},"license":"MIT","_id":"node-red-contrib-questdb@0.6.28","maintainers":[{"name":"holgeramort","email":"holgeramort@gmail.com"}],"homepage":"https://github.com/ErnstHolger/node-red-contrib-questdb#readme","bugs":{"url":"https://github.com/ErnstHolger/node-red-contrib-questdb/issues"},"dist":{"shasum":"20e0dccba095302fd65c27a436d2fa4f9011fdb5","tarball":"https://registry.npmjs.org/node-red-contrib-questdb/-/node-red-contrib-questdb-0.6.28.tgz","fileCount":17,"integrity":"sha512-BRTJjnJf7hl8MH0SmcPMVDV9iU3oYOla4suJ6UH9vy0qW0srPVRSZ/IKfOFz5Uzo5Ck7Up0TTTMBKnQaT2NZXA==","signatures":[{"sig":"MEYCIQDuD0bnM+jg+e+V4a6WCwIBPbmqZv+ZeeEjPJrvNTiISQIhAJWt9Kx9LQObFWillgDx6fNWo8f2khsaz7fEd01yQtxu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":204569},"engines":{"node":">=20.0.0"},"gitHead":"869cb66b68115dea0911bf5416d6a0070a375127","scripts":{"lint":"eslint .","test":"mocha --exit test/**/*_spec.js","format":"prettier --write .","prepare":"husky","coverage":"c8 npm test","lint:fix":"eslint --fix .","test:watch":"mocha --watch test/**/*_spec.js","publish:dry":"npm publish --dry-run","format:check":"prettier --check ."},"_npmUser":{"name":"holgeramort","email":"holgeramort@gmail.com"},"node-red":{"nodes":{"questdb":"nodes/questdb.js","questdb-value":"nodes/questdb-value.js","questdb-mapper":"nodes/questdb-mapper.js","questdb-flatten":"nodes/questdb-flatten.js","questdb-type-router":"nodes/questdb-type-router.js"},"version":">=2.0.0"},"repository":{"url":"git+https://github.com/ErnstHolger/node-red-contrib-questdb.git","type":"git"},"_npmVersion":"10.9.2","description":"Node-RED nodes for writing high-performance time-series data to QuestDB using Influx Line Protocol (ILP). Supports IoT, industrial monitoring, smart buildings, fleet telematics, healthcare, agriculture, and more.","directories":{},"lint-staged":{"*.js":["eslint --fix","prettier --write"],"*.{json,md,html}":["prettier --write"]},"_nodeVersion":"22.17.0","dependencies":{"@questdb/nodejs-client":"^4.2.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^10.1.3","husky":"^9.1.7","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^9.39.2","should":"^13.2.3","globals":"^15.15.0","node-red":"^4.1.4","prettier":"3.8.1","@eslint/js":"^9.39.2","lint-staged":"^15.5.2","eslint-config-prettier":"^10.1.8","node-red-node-test-helper":"^0.3.6"},"_npmOperationalInternal":{"tmp":"tmp/node-red-contrib-questdb_0.6.28_1773528802335_0.4928694940445406","host":"s3://npm-registry-packages-npm-production"}},"0.6.29":{"name":"node-red-contrib-questdb","version":"0.6.29","keywords":["node-red","questdb","time-series","database","ilp","influx-line-protocol","iot","industrial","monitoring","telemetry","metrics","sensors","analytics","mqtt","modbus","scada","manufacturing","smart-building","hvac","energy","agriculture","fleet-tracking","telematics","healthcare","vitals","weather","smart-meter","observability","data-ingestion"],"author":{"name":"Holger Amort"},"license":"MIT","_id":"node-red-contrib-questdb@0.6.29","maintainers":[{"name":"holgeramort","email":"holgeramort@gmail.com"}],"homepage":"https://github.com/ErnstHolger/node-red-contrib-questdb#readme","bugs":{"url":"https://github.com/ErnstHolger/node-red-contrib-questdb/issues"},"dist":{"shasum":"c3ea15c7adf66ed4a80ea3f916f73657ac068e9a","tarball":"https://registry.npmjs.org/node-red-contrib-questdb/-/node-red-contrib-questdb-0.6.29.tgz","fileCount":17,"integrity":"sha512-3QHa5+xYaPAFBUWvTWlDmDGDqahqCfbMr6613icBmI4nqbKn795preQzh9qUwF714Cql04gFIyrcxdLbTD+NAA==","signatures":[{"sig":"MEUCIEkbtCgTYVJxNhSwg3NieNok54gqs1sATezF7WFliHcQAiEA0TF+zv0RpxhoiAvN0zDhccjfSOtdUpdXj/B0dL4M43E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":204689},"engines":{"node":">=20.0.0"},"gitHead":"869cb66b68115dea0911bf5416d6a0070a375127","scripts":{"lint":"eslint .","test":"mocha --exit test/**/*_spec.js","format":"prettier --write .","prepare":"husky","coverage":"c8 npm test","lint:fix":"eslint --fix .","test:watch":"mocha --watch test/**/*_spec.js","publish:dry":"npm publish --dry-run","format:check":"prettier --check ."},"_npmUser":{"name":"holgeramort","email":"holgeramort@gmail.com"},"node-red":{"nodes":{"questdb":"nodes/questdb.js","questdb-value":"nodes/questdb-value.js","questdb-mapper":"nodes/questdb-mapper.js","questdb-flatten":"nodes/questdb-flatten.js","questdb-type-router":"nodes/questdb-type-router.js"},"version":">=2.0.0"},"repository":{"url":"git+https://github.com/ErnstHolger/node-red-contrib-questdb.git","type":"git"},"_npmVersion":"10.9.2","description":"Node-RED nodes for writing high-performance time-series data to QuestDB using Influx Line Protocol (ILP). Supports IoT, industrial monitoring, smart buildings, fleet telematics, healthcare, agriculture, and more.","directories":{},"lint-staged":{"*.js":["eslint --fix","prettier --write"],"*.{json,md,html}":["prettier --write"]},"_nodeVersion":"22.17.0","dependencies":{"@questdb/nodejs-client":"^4.2.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^10.1.3","husky":"^9.1.7","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^9.39.2","should":"^13.2.3","globals":"^15.15.0","node-red":"^4.1.4","prettier":"3.8.1","@eslint/js":"^9.39.2","lint-staged":"^15.5.2","eslint-config-prettier":"^10.1.8","node-red-node-test-helper":"^0.3.6"},"_npmOperationalInternal":{"tmp":"tmp/node-red-contrib-questdb_0.6.29_1773529228244_0.33820861297125737","host":"s3://npm-registry-packages-npm-production"}},"0.6.30":{"name":"node-red-contrib-questdb","version":"0.6.30","keywords":["node-red","questdb","time-series","database","ilp","influx-line-protocol","iot","industrial","monitoring","telemetry","metrics","sensors","analytics","mqtt","modbus","scada","manufacturing","smart-building","hvac","energy","agriculture","fleet-tracking","telematics","healthcare","vitals","weather","smart-meter","observability","data-ingestion"],"author":{"name":"Holger Amort"},"license":"MIT","_id":"node-red-contrib-questdb@0.6.30","maintainers":[{"name":"holgeramort","email":"holgeramort@gmail.com"}],"homepage":"https://github.com/ErnstHolger/node-red-contrib-questdb#readme","bugs":{"url":"https://github.com/ErnstHolger/node-red-contrib-questdb/issues"},"dist":{"shasum":"8170138ef594299a058e36d2c048df914cd804b8","tarball":"https://registry.npmjs.org/node-red-contrib-questdb/-/node-red-contrib-questdb-0.6.30.tgz","fileCount":17,"integrity":"sha512-BZgvvWgPwrkBdiYVCk9yeDMWTigN75H/D61/bycWT+9x/WMPYahsyLA3RAcoSSA+WpbC0gCVt4jQA1s5N0rrdw==","signatures":[{"sig":"MEUCIQDxkeZTB7RICztgut/n8Q4V+5GsH+2jGSIs0TfqBNMNSgIgZC7RcOgLoiZSZccwWeXMfA9jpFBboSZtLQ39dQWSsmc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":205168},"engines":{"node":">=20.0.0"},"gitHead":"869cb66b68115dea0911bf5416d6a0070a375127","scripts":{"lint":"eslint .","test":"mocha --exit test/**/*_spec.js","format":"prettier --write .","prepare":"husky","coverage":"c8 npm test","lint:fix":"eslint --fix .","test:watch":"mocha --watch test/**/*_spec.js","publish:dry":"npm publish --dry-run","format:check":"prettier --check ."},"_npmUser":{"name":"holgeramort","email":"holgeramort@gmail.com"},"node-red":{"nodes":{"questdb":"nodes/questdb.js","questdb-value":"nodes/questdb-value.js","questdb-mapper":"nodes/questdb-mapper.js","questdb-flatten":"nodes/questdb-flatten.js","questdb-type-router":"nodes/questdb-type-router.js"},"version":">=2.0.0"},"repository":{"url":"git+https://github.com/ErnstHolger/node-red-contrib-questdb.git","type":"git"},"_npmVersion":"10.9.2","description":"Node-RED nodes for writing high-performance time-series data to QuestDB using Influx Line Protocol (ILP). Supports IoT, industrial monitoring, smart buildings, fleet telematics, healthcare, agriculture, and more.","directories":{},"lint-staged":{"*.js":["eslint --fix","prettier --write"],"*.{json,md,html}":["prettier --write"]},"_nodeVersion":"22.17.0","dependencies":{"@questdb/nodejs-client":"^4.2.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^10.1.3","husky":"^9.1.7","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^9.39.2","should":"^13.2.3","globals":"^15.15.0","node-red":"^4.1.4","prettier":"3.8.1","@eslint/js":"^9.39.2","lint-staged":"^15.5.2","eslint-config-prettier":"^10.1.8","node-red-node-test-helper":"^0.3.6"},"_npmOperationalInternal":{"tmp":"tmp/node-red-contrib-questdb_0.6.30_1773529722383_0.2303877868659685","host":"s3://npm-registry-packages-npm-production"}},"0.6.31":{"name":"node-red-contrib-questdb","version":"0.6.31","description":"Node-RED nodes for writing high-performance time-series data to QuestDB using Influx Line Protocol (ILP). Supports IoT, industrial monitoring, smart buildings, fleet telematics, healthcare, agriculture, and more.","author":{"name":"Holger Amort"},"keywords":["node-red","questdb","time-series","database","ilp","influx-line-protocol","iot","industrial","monitoring","telemetry","metrics","sensors","analytics","mqtt","modbus","scada","manufacturing","smart-building","hvac","energy","agriculture","fleet-tracking","telematics","healthcare","vitals","weather","smart-meter","observability","data-ingestion"],"license":"MIT","homepage":"https://github.com/ErnstHolger/node-red-contrib-questdb#readme","bugs":{"url":"https://github.com/ErnstHolger/node-red-contrib-questdb/issues"},"repository":{"type":"git","url":"git+https://github.com/ErnstHolger/node-red-contrib-questdb.git"},"node-red":{"version":">=2.0.0","nodes":{"questdb":"nodes/questdb.js","questdb-mapper":"nodes/questdb-mapper.js","questdb-type-router":"nodes/questdb-type-router.js","questdb-flatten":"nodes/questdb-flatten.js","questdb-value":"nodes/questdb-value.js"}},"engines":{"node":">=20.0.0"},"scripts":{"test":"mocha --exit test/**/*_spec.js","test:watch":"mocha --watch test/**/*_spec.js","coverage":"c8 npm test","lint":"eslint .","lint:fix":"eslint --fix .","format":"prettier --write .","format:check":"prettier --check .","prepare":"husky","publish:dry":"npm publish --dry-run"},"lint-staged":{"*.js":["eslint --fix","prettier --write"],"*.{json,md,html}":["prettier --write"]},"dependencies":{"@questdb/nodejs-client":"^4.2.0"},"devDependencies":{"@eslint/js":"^9.39.2","c8":"^10.1.3","eslint":"^9.39.2","eslint-config-prettier":"^10.1.8","globals":"^15.15.0","husky":"^9.1.7","lint-staged":"^15.5.2","mocha":"^11.7.5","node-red":"^4.1.4","node-red-node-test-helper":"^0.3.6","prettier":"3.8.1","should":"^13.2.3","sinon":"^21.0.1"},"_id":"node-red-contrib-questdb@0.6.31","gitHead":"84990367e861408bcbf9b70fb60477facddf28d6","_nodeVersion":"22.17.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-+emK3807AOfmV2S9x0eLKOVaBd0sMwY71oECYdsaFMBpVpRiI43aDl7dZGq1rrwpYWsGBnl1nkGVSJHeHg0qbg==","shasum":"18f83d49c89f42522c4690d349324ca46598731c","tarball":"https://registry.npmjs.org/node-red-contrib-questdb/-/node-red-contrib-questdb-0.6.31.tgz","fileCount":17,"unpackedSize":205168,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDYzJgWLfJ8NTtyQ27vT63D/iIaf0rzbCzIOj7KysdynAiEAzTQq5RIKnnKuJLjZA5cIhwNmCUyOLNPV3hlQESQKIaU="}]},"_npmUser":{"name":"holgeramort","email":"holgeramort@gmail.com"},"directories":{},"maintainers":[{"name":"holgeramort","email":"holgeramort@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/node-red-contrib-questdb_0.6.31_1773684989431_0.3614749445533454"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-31T22:09:49.644Z","modified":"2026-03-16T18:16:29.736Z","0.1.0":"2025-12-31T22:09:49.784Z","0.2.0":"2025-12-31T22:21:03.787Z","0.3.0":"2025-12-31T22:33:09.301Z","0.3.1":"2025-12-31T22:42:08.439Z","0.3.2":"2025-12-31T22:51:20.092Z","0.4.0":"2025-12-31T22:55:21.046Z","0.4.1":"2025-12-31T22:56:47.481Z","0.5.0":"2025-12-31T23:30:20.712Z","0.5.1":"2026-01-01T16:31:33.169Z","0.5.2":"2026-01-04T11:50:17.431Z","0.5.3":"2026-01-04T12:28:06.041Z","0.6.0":"2026-01-31T05:18:17.470Z","0.6.1":"2026-02-06T18:52:37.823Z","0.6.2":"2026-02-08T17:37:32.080Z","0.6.3":"2026-02-08T17:44:40.397Z","0.6.4":"2026-02-08T17:46:33.763Z","0.6.6":"2026-02-08T17:56:17.232Z","0.6.8":"2026-02-18T16:33:51.542Z","0.6.9":"2026-02-19T18:52:13.525Z","0.6.22":"2026-03-14T19:11:03.819Z","0.6.23":"2026-03-14T19:39:37.637Z","0.6.24":"2026-03-14T19:44:50.596Z","0.6.25":"2026-03-14T19:51:10.955Z","0.6.26":"2026-03-14T20:07:11.005Z","0.6.27":"2026-03-14T22:53:03.426Z","0.6.28":"2026-03-14T22:53:22.476Z","0.6.29":"2026-03-14T23:00:28.400Z","0.6.30":"2026-03-14T23:08:42.541Z","0.6.31":"2026-03-16T18:16:29.636Z"},"bugs":{"url":"https://github.com/ErnstHolger/node-red-contrib-questdb/issues"},"author":{"name":"Holger Amort"},"license":"MIT","homepage":"https://github.com/ErnstHolger/node-red-contrib-questdb#readme","keywords":["node-red","questdb","time-series","database","ilp","influx-line-protocol","iot","industrial","monitoring","telemetry","metrics","sensors","analytics","mqtt","modbus","scada","manufacturing","smart-building","hvac","energy","agriculture","fleet-tracking","telematics","healthcare","vitals","weather","smart-meter","observability","data-ingestion"],"repository":{"type":"git","url":"git+https://github.com/ErnstHolger/node-red-contrib-questdb.git"},"description":"Node-RED nodes for writing high-performance time-series data to QuestDB using Influx Line Protocol (ILP). Supports IoT, industrial monitoring, smart buildings, fleet telematics, healthcare, agriculture, and more.","maintainers":[{"name":"holgeramort","email":"holgeramort@gmail.com"}],"readme":"# node-red-contrib-questdb\r\n\r\nNode-RED nodes for writing data to [QuestDB](https://questdb.io/) time-series database using the Influx Line Protocol (ILP).\r\n\r\n## Features\r\n\r\n- **High-performance writes** using QuestDB's native ILP protocol\r\n- **Connection pooling** with automatic reconnection\r\n- **Multiple protocols**: HTTP, HTTPS, TCP, TCPS\r\n- **Authentication**: Basic auth and Bearer token support\r\n- **TLS/SSL**: Full TLS support with certificate verification options\r\n- **Flexible data mapping**: Map message fields to QuestDB columns\r\n- **Type support**: Symbols, floats, integers, longs, booleans, strings, timestamps, arrays, and decimals\r\n- **Auto-flush**: Configurable automatic flushing by row count or time interval\r\n- **Examples included**: Ready-to-use flow examples\r\n\r\n## Installation\r\n\r\n### Via Node-RED Palette Manager\r\n\r\n1. Open Node-RED\r\n2. Go to **Menu** > **Manage palette** > **Install**\r\n3. Search for `node-red-contrib-questdb`\r\n4. Click **Install**\r\n\r\n### Via npm\r\n\r\n```bash\r\ncd ~/.node-red\r\nnpm install node-red-contrib-questdb\r\n```\r\n\r\nThen restart Node-RED.\r\n\r\n## Nodes\r\n\r\n### QuestDB Write\r\n\r\nWrites data to QuestDB using the ILP protocol.\r\n\r\n#### Configuration\r\n\r\n**Connection Settings:**\r\n- **Protocol**: HTTP (default), HTTPS, TCP, or TCPS\r\n- **Host**: QuestDB server hostname or IP\r\n- **Port**: 9000 (HTTP) or 9009 (TCP)\r\n\r\n**Security Settings:**\r\n- **Enable Auth**: Toggle authentication\r\n- **Auth Type**: Username/Password or Bearer Token\r\n- **TLS Verify**: Verify server certificate (for HTTPS/TCPS)\r\n\r\n**Advanced Settings:**\r\n- **Auto Flush**: Enable automatic flushing\r\n- **Flush Rows**: Number of rows before auto-flush (default: 75000)\r\n- **Flush Interval**: Time interval for auto-flush in ms (default: 1000)\r\n- **Request Timeout**: HTTP request timeout in ms\r\n- **Buffer Size**: Initial and maximum buffer sizes\r\n\r\n#### Input Message Format\r\n\r\n```javascript\r\nmsg.topic = \"table_name\";\r\nmsg.payload = {\r\n    symbols: {\r\n        tag_name: \"sensor1\",      // Indexed string columns\r\n        location: \"warehouse\"\r\n    },\r\n    columns: {\r\n        temperature: 23.5,        // Auto-detected as float\r\n        humidity: 65,             // Auto-detected as float\r\n        status: \"active\",         // String column\r\n        alert: true               // Boolean column\r\n    },\r\n    timestamp: Date.now()         // Optional: milliseconds or Date object\r\n};\r\n```\r\n\r\n#### Explicit Type Specification\r\n\r\nFor precise control over column types:\r\n\r\n```javascript\r\nmsg.payload = {\r\n    symbols: { device: \"sensor1\" },\r\n    columns: {\r\n        value: { value: 123456789, type: \"long\" },\r\n        price: { value: \"123.456789\", type: \"decimal\" },\r\n        readings: { value: [1.1, 2.2, 3.3], type: \"array\", elementType: \"double\" }\r\n    },\r\n    timestamp: Date.now()\r\n};\r\n```\r\n\r\n**Supported Types:**\r\n- `int` / `integer` - 32-bit signed integer\r\n- `long` - 64-bit signed integer\r\n- `float` - 32-bit floating point\r\n- `double` - 64-bit floating point\r\n- `decimal` - Arbitrary precision decimal\r\n- `string` - Text value\r\n- `boolean` - true/false\r\n- `timestamp` - Date/time value\r\n- `array` - Array with auto-detected element type\r\n- `array_double` - Array of doubles\r\n- `array_long` - Array of longs\r\n- `array_string` - Array of strings\r\n\r\n### QuestDB Mapper\r\n\r\nMaps incoming message fields to QuestDB ILP structure. Useful for transforming data from various sources.\r\n\r\n#### Configuration\r\n\r\n- **Table Name**: Target table (or use `msg.topic`)\r\n- **Timestamp Field**: Path to timestamp field in message\r\n- **Symbol Mappings**: Map source fields to QuestDB symbols\r\n- **Column Mappings**: Map source fields to columns with type conversion\r\n\r\n#### Example\r\n\r\nInput message:\r\n```javascript\r\n{\r\n    topic: \"sensors\",\r\n    payload: {\r\n        device: \"sensor1\",\r\n        temp: 23.5,\r\n        readings: [1.1, 2.2, 3.3],\r\n        ts: 1699999999000\r\n    }\r\n}\r\n```\r\n\r\nWith mappings:\r\n- Symbol: `payload.device` → `device_id`\r\n- Column: `payload.temp` → `temperature` (double)\r\n- Column: `payload.readings` → `values` (array_double)\r\n- Timestamp: `payload.ts`\r\n\r\nOutput:\r\n```javascript\r\n{\r\n    topic: \"sensors\",\r\n    payload: {\r\n        symbols: { device_id: \"sensor1\" },\r\n        columns: {\r\n            temperature: { value: 23.5, type: \"double\" },\r\n            values: { value: [1.1, 2.2, 3.3], type: \"array\", elementType: \"double\" }\r\n        },\r\n        timestamp: 1699999999000\r\n    }\r\n}\r\n```\r\n\r\n## Examples\r\n\r\nThe package includes ready-to-use examples. After installation:\r\n\r\n1. Open Node-RED\r\n2. Go to **Menu** > **Import**\r\n3. Select **Examples** > **node-red-contrib-questdb**\r\n\r\n---\r\n\r\n## Comprehensive Use Case Examples\r\n\r\n### 1. Industrial IoT - Manufacturing Line Monitoring\r\n\r\nMonitor production line equipment with high-frequency sensor data:\r\n\r\n```javascript\r\n// Function node: Production Line Sensor Data\r\nmsg.topic = \"production_line\";\r\nmsg.payload = {\r\n    symbols: {\r\n        factory_id: \"PLANT_001\",\r\n        line_id: \"LINE_A3\",\r\n        machine_id: \"CNC_MILL_007\",\r\n        shift: \"day\"\r\n    },\r\n    columns: {\r\n        // Machine status\r\n        spindle_speed_rpm: { value: 12500, type: \"int\" },\r\n        feed_rate_mmpm: 450.5,\r\n        tool_wear_percent: 23.7,\r\n\r\n        // Vibration analysis (100 samples at 10kHz)\r\n        vibration_x: {\r\n            value: Array.from({length: 100}, () => (Math.random() - 0.5) * 2),\r\n            type: \"array\",\r\n            elementType: \"double\"\r\n        },\r\n        vibration_y: {\r\n            value: Array.from({length: 100}, () => (Math.random() - 0.5) * 2),\r\n            type: \"array\",\r\n            elementType: \"double\"\r\n        },\r\n        vibration_z: {\r\n            value: Array.from({length: 100}, () => (Math.random() - 0.5) * 2),\r\n            type: \"array\",\r\n            elementType: \"double\"\r\n        },\r\n\r\n        // Thermal monitoring\r\n        motor_temp_c: 67.3,\r\n        coolant_temp_c: 22.1,\r\n        ambient_temp_c: 24.5,\r\n\r\n        // Power consumption\r\n        power_kw: 15.7,\r\n        current_amps: { value: 42.3, type: \"double\" },\r\n\r\n        // Production metrics\r\n        parts_produced: { value: 1247, type: \"long\" },\r\n        cycle_time_ms: { value: 45230, type: \"long\" },\r\n        oee_percent: 87.3,\r\n\r\n        // Quality metrics\r\n        defect_count: { value: 3, type: \"int\" },\r\n        in_tolerance: true\r\n    },\r\n    timestamp: Date.now()\r\n};\r\nreturn msg;\r\n```\r\n\r\n**Querying in QuestDB:**\r\n```sql\r\n-- Real-time machine status\r\nSELECT * FROM production_line\r\nWHERE machine_id = 'CNC_MILL_007'\r\nORDER BY timestamp DESC LIMIT 1;\r\n\r\n-- Hourly OEE trend\r\nSELECT\r\n    timestamp,\r\n    avg(oee_percent) as avg_oee,\r\n    sum(parts_produced) as total_parts,\r\n    sum(defect_count) as total_defects\r\nFROM production_line\r\nWHERE factory_id = 'PLANT_001'\r\nSAMPLE BY 1h;\r\n\r\n-- Vibration anomaly detection\r\nSELECT timestamp, machine_id,\r\n    array_avg(vibration_x) as avg_vib_x,\r\n    array_max(vibration_x) as max_vib_x\r\nFROM production_line\r\nWHERE array_max(vibration_x) > 1.5\r\nORDER BY timestamp DESC;\r\n```\r\n\r\n---\r\n\r\n### 2. Smart Building - HVAC and Energy Management\r\n\r\nMonitor building climate control and energy consumption:\r\n\r\n```javascript\r\n// Function node: Building Management System Data\r\nmsg.topic = \"building_hvac\";\r\nmsg.payload = {\r\n    symbols: {\r\n        building_id: \"HQ_TOWER_1\",\r\n        floor: \"F15\",\r\n        zone: \"ZONE_A\",\r\n        hvac_unit: \"AHU_15A\"\r\n    },\r\n    columns: {\r\n        // Temperature readings\r\n        supply_air_temp_c: 14.2,\r\n        return_air_temp_c: 23.8,\r\n        zone_temp_c: 22.1,\r\n        setpoint_temp_c: 22.0,\r\n        outdoor_temp_c: 31.5,\r\n\r\n        // Humidity\r\n        zone_humidity_percent: 45.3,\r\n        setpoint_humidity_percent: 45.0,\r\n\r\n        // Airflow\r\n        supply_airflow_cfm: { value: 2500, type: \"int\" },\r\n        damper_position_percent: 75.0,\r\n        filter_pressure_drop_pa: 125.3,\r\n\r\n        // Energy\r\n        cooling_load_kw: 45.7,\r\n        heating_load_kw: 0.0,\r\n        fan_power_kw: 3.2,\r\n\r\n        // Equipment status\r\n        compressor_running: true,\r\n        economizer_active: false,\r\n        maintenance_due: false,\r\n\r\n        // Occupancy (from sensors)\r\n        occupancy_count: { value: 47, type: \"int\" },\r\n        co2_ppm: { value: 650, type: \"int\" },\r\n\r\n        // Comfort index (calculated)\r\n        pmv_index: 0.2,  // Predicted Mean Vote (-3 to +3)\r\n        ppd_percent: 6.1  // Predicted Percentage Dissatisfied\r\n    },\r\n    timestamp: Date.now()\r\n};\r\nreturn msg;\r\n```\r\n\r\n**Energy Dashboard Queries:**\r\n```sql\r\n-- Daily energy consumption by floor\r\nSELECT\r\n    floor,\r\n    sum(cooling_load_kw + heating_load_kw + fan_power_kw) as total_energy_kwh\r\nFROM building_hvac\r\nWHERE building_id = 'HQ_TOWER_1'\r\n    AND timestamp > dateadd('d', -1, now())\r\nSAMPLE BY 1d;\r\n\r\n-- Comfort tracking\r\nSELECT\r\n    timestamp,\r\n    zone,\r\n    zone_temp_c,\r\n    zone_humidity_percent,\r\n    pmv_index,\r\n    occupancy_count\r\nFROM building_hvac\r\nWHERE building_id = 'HQ_TOWER_1'\r\nSAMPLE BY 15m;\r\n```\r\n\r\n---\r\n\r\n### 3. Financial Trading - Market Data Capture\r\n\r\nCapture real-time market data and trading signals:\r\n\r\n```javascript\r\n// Function node: Market Data Feed\r\nconst ticker = msg.payload.ticker || \"AAPL\";\r\nconst bid = 185.23 + (Math.random() - 0.5) * 0.1;\r\nconst ask = bid + 0.01;\r\n\r\nmsg.topic = \"market_data\";\r\nmsg.payload = {\r\n    symbols: {\r\n        exchange: \"NASDAQ\",\r\n        ticker: ticker,\r\n        asset_class: \"equity\"\r\n    },\r\n    columns: {\r\n        // Price data (use decimal for financial precision)\r\n        bid_price: { value: bid.toFixed(4), type: \"decimal\" },\r\n        ask_price: { value: ask.toFixed(4), type: \"decimal\" },\r\n        mid_price: { value: ((bid + ask) / 2).toFixed(4), type: \"decimal\" },\r\n        spread_bps: { value: ((ask - bid) / bid * 10000).toFixed(2), type: \"decimal\" },\r\n\r\n        // Volume\r\n        bid_size: { value: Math.floor(Math.random() * 1000) * 100, type: \"long\" },\r\n        ask_size: { value: Math.floor(Math.random() * 1000) * 100, type: \"long\" },\r\n\r\n        // Trade data\r\n        last_price: { value: (bid + Math.random() * (ask - bid)).toFixed(4), type: \"decimal\" },\r\n        last_size: { value: Math.floor(Math.random() * 500) * 100, type: \"long\" },\r\n        volume_today: { value: Math.floor(Math.random() * 10000000), type: \"long\" },\r\n        vwap: { value: (185.15 + Math.random() * 0.2).toFixed(4), type: \"decimal\" },\r\n\r\n        // Market microstructure\r\n        trade_count: { value: Math.floor(Math.random() * 100), type: \"int\" },\r\n        quote_count: { value: Math.floor(Math.random() * 500), type: \"int\" },\r\n\r\n        // Greeks (for options)\r\n        implied_vol: 0.235,\r\n\r\n        // Flags\r\n        halted: false,\r\n        auction_mode: false\r\n    },\r\n    timestamp: Date.now()\r\n};\r\nreturn msg;\r\n```\r\n\r\n**Trading Analytics:**\r\n```sql\r\n-- VWAP calculation\r\nSELECT\r\n    ticker,\r\n    sum(last_price * last_size) / sum(last_size) as vwap,\r\n    sum(volume_today) as total_volume\r\nFROM market_data\r\nWHERE timestamp > dateadd('h', -1, now())\r\nGROUP BY ticker;\r\n\r\n-- Spread analysis\r\nSELECT\r\n    timestamp,\r\n    ticker,\r\n    spread_bps,\r\n    bid_size,\r\n    ask_size\r\nFROM market_data\r\nWHERE ticker = 'AAPL'\r\nSAMPLE BY 1s;\r\n```\r\n\r\n---\r\n\r\n### 4. Weather Station Network\r\n\r\nCollect meteorological data from distributed weather stations:\r\n\r\n```javascript\r\n// Function node: Weather Station Data\r\nmsg.topic = \"weather_stations\";\r\nmsg.payload = {\r\n    symbols: {\r\n        station_id: \"WS_\" + String(Math.floor(Math.random() * 100)).padStart(3, \"0\"),\r\n        region: \"pacific_northwest\",\r\n        elevation_class: \"lowland\",\r\n        station_type: \"automated\"\r\n    },\r\n    columns: {\r\n        // Temperature\r\n        air_temp_c: 18.3 + (Math.random() - 0.5) * 5,\r\n        feels_like_c: 16.8 + (Math.random() - 0.5) * 5,\r\n        dew_point_c: 12.1 + (Math.random() - 0.5) * 3,\r\n        ground_temp_c: 15.2 + (Math.random() - 0.5) * 2,\r\n\r\n        // Humidity & Pressure\r\n        relative_humidity_percent: 65 + Math.random() * 20,\r\n        pressure_hpa: { value: (1013.25 + (Math.random() - 0.5) * 20).toFixed(2), type: \"decimal\" },\r\n        pressure_trend: { value: (Math.random() - 0.5) * 2, type: \"double\" },\r\n\r\n        // Wind\r\n        wind_speed_ms: Math.random() * 10,\r\n        wind_gust_ms: Math.random() * 15,\r\n        wind_direction_deg: { value: Math.floor(Math.random() * 360), type: \"int\" },\r\n\r\n        // Precipitation\r\n        rain_mm: Math.random() * 2,\r\n        rain_rate_mmh: Math.random() * 10,\r\n        rain_24h_mm: { value: (Math.random() * 20).toFixed(1), type: \"decimal\" },\r\n\r\n        // Solar\r\n        solar_radiation_wm2: Math.random() * 800,\r\n        uv_index: { value: Math.floor(Math.random() * 11), type: \"int\" },\r\n\r\n        // Visibility\r\n        visibility_km: 10 + Math.random() * 40,\r\n        cloud_base_m: { value: Math.floor(1000 + Math.random() * 2000), type: \"int\" },\r\n\r\n        // Air Quality\r\n        pm25_ugm3: Math.random() * 50,\r\n        pm10_ugm3: Math.random() * 100,\r\n        aqi: { value: Math.floor(Math.random() * 150), type: \"int\" },\r\n\r\n        // Battery & Status\r\n        battery_voltage: 12.4 + Math.random() * 0.4,\r\n        solar_charging: true,\r\n        sensor_status: \"OK\"\r\n    },\r\n    timestamp: Date.now()\r\n};\r\nreturn msg;\r\n```\r\n\r\n**Weather Analysis Queries:**\r\n```sql\r\n-- Regional temperature map\r\nSELECT DISTINCT ON (station_id)\r\n    station_id,\r\n    air_temp_c,\r\n    relative_humidity_percent,\r\n    wind_speed_ms\r\nFROM weather_stations\r\nWHERE region = 'pacific_northwest'\r\nORDER BY station_id, timestamp DESC;\r\n\r\n-- Precipitation totals by region\r\nSELECT\r\n    region,\r\n    sum(rain_mm) as total_rain_mm,\r\n    max(rain_rate_mmh) as max_rain_rate\r\nFROM weather_stations\r\nWHERE timestamp > dateadd('h', -24, now())\r\nSAMPLE BY 1h;\r\n```\r\n\r\n---\r\n\r\n### 5. Fleet Tracking and Telematics\r\n\r\nMonitor vehicle fleet with GPS and diagnostics:\r\n\r\n```javascript\r\n// Function node: Vehicle Telematics\r\nconst vehicleId = \"VH_\" + String(Math.floor(Math.random() * 50) + 1).padStart(3, \"0\");\r\nconst baseLat = 37.7749 + (Math.random() - 0.5) * 0.1;\r\nconst baseLon = -122.4194 + (Math.random() - 0.5) * 0.1;\r\n\r\nmsg.topic = \"fleet_telematics\";\r\nmsg.payload = {\r\n    symbols: {\r\n        vehicle_id: vehicleId,\r\n        fleet_id: \"DELIVERY_WEST\",\r\n        vehicle_type: \"van\",\r\n        driver_id: \"DRV_\" + String(Math.floor(Math.random() * 20) + 1).padStart(3, \"0\")\r\n    },\r\n    columns: {\r\n        // GPS Position (high precision)\r\n        latitude: { value: baseLat.toFixed(7), type: \"decimal\" },\r\n        longitude: { value: baseLon.toFixed(7), type: \"decimal\" },\r\n        altitude_m: { value: Math.floor(Math.random() * 100), type: \"int\" },\r\n        gps_accuracy_m: 3.5,\r\n        heading_deg: { value: Math.floor(Math.random() * 360), type: \"int\" },\r\n\r\n        // Speed & Motion\r\n        speed_kmh: Math.floor(Math.random() * 80),\r\n        acceleration_ms2: (Math.random() - 0.5) * 3,\r\n        odometer_km: { value: 45678 + Math.floor(Math.random() * 100), type: \"long\" },\r\n\r\n        // Engine Diagnostics (OBD-II)\r\n        engine_rpm: { value: Math.floor(1000 + Math.random() * 3000), type: \"int\" },\r\n        engine_load_percent: Math.random() * 100,\r\n        coolant_temp_c: 85 + Math.random() * 15,\r\n        intake_temp_c: 25 + Math.random() * 20,\r\n        throttle_position_percent: Math.random() * 100,\r\n\r\n        // Fuel\r\n        fuel_level_percent: 45 + Math.random() * 30,\r\n        fuel_rate_lph: 8 + Math.random() * 12,\r\n        fuel_economy_kpl: { value: (12 + Math.random() * 4).toFixed(2), type: \"decimal\" },\r\n\r\n        // Battery & Electrical\r\n        battery_voltage: 13.8 + Math.random() * 0.5,\r\n        alternator_voltage: 14.2 + Math.random() * 0.3,\r\n\r\n        // DTC Codes (Diagnostic Trouble Codes)\r\n        dtc_count: { value: Math.floor(Math.random() * 3), type: \"int\" },\r\n        check_engine_light: Math.random() > 0.95,\r\n\r\n        // Trip Data\r\n        trip_distance_km: { value: (Math.random() * 50).toFixed(2), type: \"decimal\" },\r\n        idle_time_sec: { value: Math.floor(Math.random() * 300), type: \"int\" },\r\n\r\n        // Safety Events\r\n        harsh_braking: Math.random() > 0.9,\r\n        harsh_acceleration: Math.random() > 0.92,\r\n        harsh_cornering: Math.random() > 0.95,\r\n\r\n        // Cargo (for delivery vehicles)\r\n        cargo_door_open: false,\r\n        cargo_temp_c: 4.2 + Math.random() * 2,\r\n        deliveries_completed: { value: Math.floor(Math.random() * 15), type: \"int\" }\r\n    },\r\n    timestamp: Date.now()\r\n};\r\nreturn msg;\r\n```\r\n\r\n**Fleet Management Queries:**\r\n```sql\r\n-- Current fleet positions\r\nSELECT DISTINCT ON (vehicle_id)\r\n    vehicle_id,\r\n    driver_id,\r\n    latitude,\r\n    longitude,\r\n    speed_kmh,\r\n    fuel_level_percent\r\nFROM fleet_telematics\r\nWHERE fleet_id = 'DELIVERY_WEST'\r\nORDER BY vehicle_id, timestamp DESC;\r\n\r\n-- Driver safety scores\r\nSELECT\r\n    driver_id,\r\n    count(*) as total_events,\r\n    sum(case when harsh_braking then 1 else 0 end) as harsh_brakes,\r\n    sum(case when harsh_acceleration then 1 else 0 end) as harsh_accel,\r\n    sum(case when harsh_cornering then 1 else 0 end) as harsh_corners\r\nFROM fleet_telematics\r\nWHERE timestamp > dateadd('d', -7, now())\r\nGROUP BY driver_id\r\nORDER BY total_events DESC;\r\n\r\n-- Fuel efficiency by vehicle\r\nSELECT\r\n    vehicle_id,\r\n    avg(fuel_economy_kpl) as avg_fuel_economy,\r\n    sum(trip_distance_km) as total_distance\r\nFROM fleet_telematics\r\nWHERE timestamp > dateadd('d', -30, now())\r\nGROUP BY vehicle_id;\r\n```\r\n\r\n---\r\n\r\n### 6. Healthcare - Patient Monitoring\r\n\r\nCollect vital signs from patient monitoring devices:\r\n\r\n```javascript\r\n// Function node: Patient Vitals\r\nmsg.topic = \"patient_vitals\";\r\nmsg.payload = {\r\n    symbols: {\r\n        patient_id: \"PT_\" + String(Math.floor(Math.random() * 100) + 1).padStart(4, \"0\"),\r\n        ward: \"ICU_A\",\r\n        bed: \"BED_\" + String(Math.floor(Math.random() * 20) + 1).padStart(2, \"0\"),\r\n        device_type: \"bedside_monitor\"\r\n    },\r\n    columns: {\r\n        // Heart\r\n        heart_rate_bpm: { value: Math.floor(60 + Math.random() * 40), type: \"int\" },\r\n        heart_rate_variability_ms: Math.floor(20 + Math.random() * 30),\r\n\r\n        // ECG Waveform (250Hz sampling, 1 second)\r\n        ecg_waveform: {\r\n            value: Array.from({length: 250}, () => Math.sin(Math.random() * Math.PI * 2) * 0.5 + Math.random() * 0.1),\r\n            type: \"array\",\r\n            elementType: \"double\"\r\n        },\r\n\r\n        // Blood Pressure\r\n        systolic_mmhg: { value: Math.floor(110 + Math.random() * 30), type: \"int\" },\r\n        diastolic_mmhg: { value: Math.floor(70 + Math.random() * 20), type: \"int\" },\r\n        map_mmhg: { value: Math.floor(80 + Math.random() * 20), type: \"int\" },  // Mean Arterial Pressure\r\n\r\n        // Respiratory\r\n        respiratory_rate: { value: Math.floor(12 + Math.random() * 8), type: \"int\" },\r\n        spo2_percent: { value: (95 + Math.random() * 4).toFixed(1), type: \"decimal\" },\r\n        etco2_mmhg: { value: Math.floor(35 + Math.random() * 10), type: \"int\" },\r\n\r\n        // Respiratory waveform\r\n        pleth_waveform: {\r\n            value: Array.from({length: 100}, (_, i) => Math.sin(i * 0.1) * 50 + 100),\r\n            type: \"array\",\r\n            elementType: \"double\"\r\n        },\r\n\r\n        // Temperature\r\n        body_temp_c: { value: (36.5 + Math.random() * 1.5).toFixed(1), type: \"decimal\" },\r\n        skin_temp_c: { value: (32 + Math.random() * 2).toFixed(1), type: \"decimal\" },\r\n\r\n        // Consciousness\r\n        gcs_score: { value: Math.floor(13 + Math.random() * 3), type: \"int\" },  // Glasgow Coma Scale\r\n\r\n        // Pain (if conscious)\r\n        pain_score: { value: Math.floor(Math.random() * 5), type: \"int\" },\r\n\r\n        // IV Fluids\r\n        iv_rate_mlh: { value: Math.floor(50 + Math.random() * 100), type: \"int\" },\r\n        iv_total_ml: { value: Math.floor(500 + Math.random() * 1500), type: \"int\" },\r\n\r\n        // Alarms\r\n        alarm_active: Math.random() > 0.9,\r\n        alarm_priority: Math.random() > 0.95 ? \"high\" : \"low\"\r\n    },\r\n    timestamp: Date.now()\r\n};\r\nreturn msg;\r\n```\r\n\r\n**Clinical Queries:**\r\n```sql\r\n-- Current patient status\r\nSELECT DISTINCT ON (patient_id)\r\n    patient_id,\r\n    ward,\r\n    bed,\r\n    heart_rate_bpm,\r\n    systolic_mmhg,\r\n    diastolic_mmhg,\r\n    spo2_percent,\r\n    body_temp_c,\r\n    alarm_active\r\nFROM patient_vitals\r\nWHERE ward = 'ICU_A'\r\nORDER BY patient_id, timestamp DESC;\r\n\r\n-- Vital trends for specific patient\r\nSELECT\r\n    timestamp,\r\n    heart_rate_bpm,\r\n    systolic_mmhg,\r\n    spo2_percent,\r\n    respiratory_rate\r\nFROM patient_vitals\r\nWHERE patient_id = 'PT_0042'\r\nORDER BY timestamp DESC\r\nLIMIT 100;\r\n```\r\n\r\n---\r\n\r\n### 7. Agriculture - Smart Farming\r\n\r\nMonitor crop conditions and irrigation systems:\r\n\r\n```javascript\r\n// Function node: Agricultural Sensors\r\nmsg.topic = \"farm_sensors\";\r\nmsg.payload = {\r\n    symbols: {\r\n        farm_id: \"FARM_VALLEY_01\",\r\n        field_id: \"FIELD_A3\",\r\n        crop_type: \"corn\",\r\n        sensor_node: \"NODE_\" + String(Math.floor(Math.random() * 50) + 1).padStart(3, \"0\")\r\n    },\r\n    columns: {\r\n        // Soil Sensors (multiple depths)\r\n        soil_moisture_10cm: Math.random() * 100,\r\n        soil_moisture_30cm: Math.random() * 100,\r\n        soil_moisture_60cm: Math.random() * 100,\r\n        soil_temp_10cm: 18 + Math.random() * 8,\r\n        soil_temp_30cm: 16 + Math.random() * 4,\r\n\r\n        // Soil Chemistry\r\n        soil_ph: { value: (6.0 + Math.random() * 1.5).toFixed(2), type: \"decimal\" },\r\n        soil_ec_dsm: { value: (1.0 + Math.random() * 2.0).toFixed(2), type: \"decimal\" },  // Electrical Conductivity\r\n        nitrogen_ppm: { value: Math.floor(20 + Math.random() * 40), type: \"int\" },\r\n        phosphorus_ppm: { value: Math.floor(10 + Math.random() * 30), type: \"int\" },\r\n        potassium_ppm: { value: Math.floor(100 + Math.random() * 100), type: \"int\" },\r\n\r\n        // Weather at field level\r\n        air_temp_c: 22 + (Math.random() - 0.5) * 10,\r\n        humidity_percent: 50 + Math.random() * 30,\r\n        wind_speed_ms: Math.random() * 8,\r\n        solar_radiation_wm2: Math.random() * 1000,\r\n        leaf_wetness_percent: Math.random() * 100,\r\n\r\n        // Crop Health (from imaging)\r\n        ndvi: { value: (0.3 + Math.random() * 0.5).toFixed(3), type: \"decimal\" },  // Vegetation Index\r\n        chlorophyll_index: { value: (40 + Math.random() * 20).toFixed(1), type: \"decimal\" },\r\n        canopy_temp_c: 20 + Math.random() * 10,\r\n\r\n        // Growth Stage\r\n        plant_height_cm: { value: Math.floor(50 + Math.random() * 150), type: \"int\" },\r\n        growth_stage: \"V12\",  // Vegetative stage 12\r\n        days_since_planting: { value: 65, type: \"int\" },\r\n\r\n        // Irrigation\r\n        irrigation_active: Math.random() > 0.7,\r\n        water_applied_mm: { value: (Math.random() * 5).toFixed(1), type: \"decimal\" },\r\n        irrigation_efficiency: 0.85 + Math.random() * 0.1,\r\n\r\n        // Pest Pressure\r\n        pest_trap_count: { value: Math.floor(Math.random() * 20), type: \"int\" },\r\n        disease_risk_index: Math.random() * 100,\r\n\r\n        // Battery\r\n        battery_percent: 70 + Math.random() * 30,\r\n        solar_panel_watts: Math.random() * 5\r\n    },\r\n    timestamp: Date.now()\r\n};\r\nreturn msg;\r\n```\r\n\r\n**Farm Analytics:**\r\n```sql\r\n-- Field irrigation needs\r\nSELECT\r\n    field_id,\r\n    avg(soil_moisture_30cm) as avg_moisture,\r\n    avg(ndvi) as avg_ndvi,\r\n    max(canopy_temp_c) as max_canopy_temp\r\nFROM farm_sensors\r\nWHERE farm_id = 'FARM_VALLEY_01'\r\n    AND timestamp > dateadd('h', -24, now())\r\nGROUP BY field_id\r\nHAVING avg_moisture < 40;\r\n\r\n-- Growth tracking\r\nSELECT\r\n    timestamp,\r\n    avg(plant_height_cm) as avg_height,\r\n    avg(ndvi) as avg_ndvi,\r\n    avg(chlorophyll_index) as avg_chlorophyll\r\nFROM farm_sensors\r\nWHERE field_id = 'FIELD_A3'\r\nSAMPLE BY 1d;\r\n```\r\n\r\n---\r\n\r\n### 8. Energy Grid - Smart Meter Data\r\n\r\nCollect data from smart meters and grid equipment:\r\n\r\n```javascript\r\n// Function node: Smart Meter Reading\r\nmsg.topic = \"smart_meters\";\r\nmsg.payload = {\r\n    symbols: {\r\n        meter_id: \"MTR_\" + String(Math.floor(Math.random() * 10000) + 1).padStart(6, \"0\"),\r\n        utility: \"PACIFIC_POWER\",\r\n        meter_type: \"residential\",\r\n        tariff_plan: \"time_of_use\",\r\n        feeder: \"FDR_\" + String(Math.floor(Math.random() * 50) + 1).padStart(3, \"0\")\r\n    },\r\n    columns: {\r\n        // Energy Consumption\r\n        active_energy_kwh: { value: (15234.567 + Math.random() * 10).toFixed(3), type: \"decimal\" },\r\n        reactive_energy_kvarh: { value: (1234.567 + Math.random() * 5).toFixed(3), type: \"decimal\" },\r\n\r\n        // Power\r\n        active_power_kw: { value: (Math.random() * 15).toFixed(3), type: \"decimal\" },\r\n        reactive_power_kvar: { value: (Math.random() * 3).toFixed(3), type: \"decimal\" },\r\n        apparent_power_kva: { value: (Math.random() * 16).toFixed(3), type: \"decimal\" },\r\n        power_factor: { value: (0.85 + Math.random() * 0.15).toFixed(3), type: \"decimal\" },\r\n\r\n        // Voltage (per phase)\r\n        voltage_l1: { value: (230 + (Math.random() - 0.5) * 10).toFixed(1), type: \"decimal\" },\r\n        voltage_l2: { value: (230 + (Math.random() - 0.5) * 10).toFixed(1), type: \"decimal\" },\r\n        voltage_l3: { value: (230 + (Math.random() - 0.5) * 10).toFixed(1), type: \"decimal\" },\r\n\r\n        // Current (per phase)\r\n        current_l1: { value: (Math.random() * 30).toFixed(2), type: \"decimal\" },\r\n        current_l2: { value: (Math.random() * 30).toFixed(2), type: \"decimal\" },\r\n        current_l3: { value: (Math.random() * 30).toFixed(2), type: \"decimal\" },\r\n\r\n        // Frequency\r\n        frequency_hz: { value: (50 + (Math.random() - 0.5) * 0.1).toFixed(3), type: \"decimal\" },\r\n\r\n        // Harmonics (THD - Total Harmonic Distortion)\r\n        thd_voltage_percent: Math.random() * 5,\r\n        thd_current_percent: Math.random() * 15,\r\n\r\n        // Power Quality Events\r\n        sag_count: { value: Math.floor(Math.random() * 3), type: \"int\" },\r\n        swell_count: { value: Math.floor(Math.random() * 2), type: \"int\" },\r\n        outage_duration_sec: { value: 0, type: \"int\" },\r\n\r\n        // Tamper Detection\r\n        cover_opened: false,\r\n        magnetic_tamper: false,\r\n        reverse_energy_flow: Math.random() > 0.95,\r\n\r\n        // Communication\r\n        signal_strength_dbm: { value: Math.floor(-90 + Math.random() * 40), type: \"int\" },\r\n        last_comm_success: true\r\n    },\r\n    timestamp: Date.now()\r\n};\r\nreturn msg;\r\n```\r\n\r\n---\r\n\r\n### 9. Network Infrastructure - Server Monitoring\r\n\r\nMonitor servers and network equipment:\r\n\r\n```javascript\r\n// Function node: Server Metrics\r\nconst hostname = \"srv-\" + [\"web\", \"db\", \"app\", \"cache\"][Math.floor(Math.random() * 4)]\r\n                 + \"-\" + String(Math.floor(Math.random() * 10) + 1).padStart(2, \"0\");\r\n\r\nmsg.topic = \"server_metrics\";\r\nmsg.payload = {\r\n    symbols: {\r\n        hostname: hostname,\r\n        datacenter: \"DC_WEST_1\",\r\n        rack: \"RACK_\" + String(Math.floor(Math.random() * 20) + 1).padStart(2, \"0\"),\r\n        environment: \"production\",\r\n        service: hostname.split(\"-\")[1]\r\n    },\r\n    columns: {\r\n        // CPU\r\n        cpu_usage_percent: Math.random() * 100,\r\n        cpu_user_percent: Math.random() * 60,\r\n        cpu_system_percent: Math.random() * 30,\r\n        cpu_iowait_percent: Math.random() * 20,\r\n        cpu_cores_used: { value: Math.floor(Math.random() * 32), type: \"int\" },\r\n        load_1m: Math.random() * 10,\r\n        load_5m: Math.random() * 8,\r\n        load_15m: Math.random() * 6,\r\n\r\n        // Memory\r\n        memory_total_gb: { value: 128, type: \"int\" },\r\n        memory_used_gb: { value: (Math.random() * 100).toFixed(2), type: \"decimal\" },\r\n        memory_cached_gb: { value: (Math.random() * 30).toFixed(2), type: \"decimal\" },\r\n        memory_buffers_gb: { value: (Math.random() * 10).toFixed(2), type: \"decimal\" },\r\n        swap_used_mb: { value: Math.floor(Math.random() * 1000), type: \"int\" },\r\n\r\n        // Disk\r\n        disk_read_mbps: Math.random() * 500,\r\n        disk_write_mbps: Math.random() * 300,\r\n        disk_iops: { value: Math.floor(Math.random() * 10000), type: \"int\" },\r\n        disk_latency_ms: Math.random() * 10,\r\n        disk_used_percent: 30 + Math.random() * 50,\r\n\r\n        // Network\r\n        network_rx_mbps: Math.random() * 1000,\r\n        network_tx_mbps: Math.random() * 800,\r\n        network_packets_rx: { value: Math.floor(Math.random() * 100000), type: \"long\" },\r\n        network_packets_tx: { value: Math.floor(Math.random() * 80000), type: \"long\" },\r\n        network_errors: { value: Math.floor(Math.random() * 10), type: \"int\" },\r\n        tcp_connections: { value: Math.floor(Math.random() * 5000), type: \"int\" },\r\n\r\n        // Process\r\n        process_count: { value: Math.floor(200 + Math.random() * 300), type: \"int\" },\r\n        thread_count: { value: Math.floor(500 + Math.random() * 1000), type: \"int\" },\r\n        zombie_count: { value: Math.floor(Math.random() * 3), type: \"int\" },\r\n\r\n        // File Descriptors\r\n        fd_used: { value: Math.floor(Math.random() * 10000), type: \"int\" },\r\n        fd_max: { value: 65535, type: \"int\" },\r\n\r\n        // Temperature\r\n        cpu_temp_c: { value: Math.floor(45 + Math.random() * 30), type: \"int\" },\r\n\r\n        // Uptime\r\n        uptime_seconds: { value: Math.floor(Math.random() * 10000000), type: \"long\" }\r\n    },\r\n    timestamp: Date.now()\r\n};\r\nreturn msg;\r\n```\r\n\r\n**Infrastructure Queries:**\r\n```sql\r\n-- Resource utilization dashboard\r\nSELECT\r\n    hostname,\r\n    service,\r\n    cpu_usage_percent,\r\n    memory_used_gb * 100 / memory_total_gb as memory_percent,\r\n    disk_used_percent,\r\n    network_rx_mbps + network_tx_mbps as network_total_mbps\r\nFROM server_metrics\r\nWHERE environment = 'production'\r\nORDER BY timestamp DESC\r\nLIMIT 100;\r\n\r\n-- Service health aggregation\r\nSELECT\r\n    service,\r\n    count(DISTINCT hostname) as host_count,\r\n    avg(cpu_usage_percent) as avg_cpu,\r\n    avg(memory_used_gb) as avg_memory_gb,\r\n    sum(network_errors) as total_errors\r\nFROM server_metrics\r\nWHERE timestamp > dateadd('m', -5, now())\r\nGROUP BY service;\r\n```\r\n\r\n---\r\n\r\n### 10. E-commerce - Real-time Analytics\r\n\r\nTrack user behavior and transactions:\r\n\r\n```javascript\r\n// Function node: E-commerce Events\r\nconst eventTypes = [\"page_view\", \"add_to_cart\", \"purchase\", \"search\", \"wishlist\"];\r\nconst eventType = eventTypes[Math.floor(Math.random() * eventTypes.length)];\r\n\r\nmsg.topic = \"ecommerce_events\";\r\nmsg.payload = {\r\n    symbols: {\r\n        event_type: eventType,\r\n        session_id: \"SES_\" + Math.random().toString(36).substring(2, 15),\r\n        user_id: Math.random() > 0.3 ? \"USR_\" + String(Math.floor(Math.random() * 10000)).padStart(6, \"0\") : \"anonymous\",\r\n        device_type: [\"desktop\", \"mobile\", \"tablet\"][Math.floor(Math.random() * 3)],\r\n        country: [\"US\", \"UK\", \"DE\", \"FR\", \"JP\"][Math.floor(Math.random() * 5)],\r\n        channel: [\"organic\", \"paid\", \"email\", \"social\", \"direct\"][Math.floor(Math.random() * 5)]\r\n    },\r\n    columns: {\r\n        // Page/Product Info\r\n        page_url: \"/products/category/item-\" + Math.floor(Math.random() * 1000),\r\n        product_id: \"PROD_\" + String(Math.floor(Math.random() * 5000)).padStart(5, \"0\"),\r\n        category: [\"electronics\", \"clothing\", \"home\", \"sports\"][Math.floor(Math.random() * 4)],\r\n\r\n        // Pricing (decimal for accuracy)\r\n        product_price: { value: (Math.random() * 500 + 10).toFixed(2), type: \"decimal\" },\r\n        discount_percent: { value: Math.floor(Math.random() * 30), type: \"int\" },\r\n        cart_value: { value: (Math.random() * 1000).toFixed(2), type: \"decimal\" },\r\n\r\n        // Quantities\r\n        quantity: { value: Math.floor(Math.random() * 5) + 1, type: \"int\" },\r\n        cart_items: { value: Math.floor(Math.random() * 10), type: \"int\" },\r\n\r\n        // Transaction (for purchase events)\r\n        order_id: eventType === \"purchase\" ? \"ORD_\" + Date.now() : null,\r\n        payment_method: eventType === \"purchase\" ? [\"card\", \"paypal\", \"apple_pay\"][Math.floor(Math.random() * 3)] : null,\r\n\r\n        // User Behavior\r\n        time_on_page_sec: { value: Math.floor(Math.random() * 300), type: \"int\" },\r\n        scroll_depth_percent: Math.floor(Math.random() * 100),\r\n        click_count: { value: Math.floor(Math.random() * 20), type: \"int\" },\r\n\r\n        // Search (for search events)\r\n        search_query: eventType === \"search\" ? [\"shoes\", \"laptop\", \"jacket\", \"headphones\"][Math.floor(Math.random() * 4)] : null,\r\n        search_results_count: eventType === \"search\" ? { value: Math.floor(Math.random() * 500), type: \"int\" } : null,\r\n\r\n        // Technical\r\n        page_load_ms: { value: Math.floor(500 + Math.random() * 2000), type: \"int\" },\r\n        browser: [\"Chrome\", \"Firefox\", \"Safari\", \"Edge\"][Math.floor(Math.random() * 4)],\r\n\r\n        // Attribution\r\n        referrer: [\"google\", \"facebook\", \"direct\", \"email\"][Math.floor(Math.random() * 4)],\r\n        campaign_id: Math.random() > 0.5 ? \"CAMP_\" + Math.floor(Math.random() * 100) : null\r\n    },\r\n    timestamp: Date.now()\r\n};\r\nreturn msg;\r\n```\r\n\r\n**E-commerce Analytics:**\r\n```sql\r\n-- Real-time conversion funnel\r\nSELECT\r\n    event_type,\r\n    count(*) as event_count,\r\n    count(DISTINCT session_id) as unique_sessions\r\nFROM ecommerce_events\r\nWHERE timestamp > dateadd('h', -1, now())\r\nGROUP BY event_type;\r\n\r\n-- Revenue by channel\r\nSELECT\r\n    channel,\r\n    country,\r\n    sum(cart_value) as total_revenue,\r\n    count(*) as purchase_count\r\nFROM ecommerce_events\r\nWHERE event_type = 'purchase'\r\n    AND timestamp > dateadd('d', -1, now())\r\nGROUP BY channel, country\r\nORDER BY total_revenue DESC;\r\n```\r\n\r\n---\r\n\r\n## Data Type Reference\r\n\r\n| JavaScript Value | Auto-Detection | Explicit Type |\r\n|-----------------|----------------|---------------|\r\n| `42` | float | `{ value: 42, type: \"int\" }` |\r\n| `42.5` | float | `{ value: 42.5, type: \"double\" }` |\r\n| `9876543210` | float | `{ value: 9876543210, type: \"long\" }` |\r\n| `\"123.45\"` | string | `{ value: \"123.45\", type: \"decimal\" }` |\r\n| `\"hello\"` | string | `{ value: \"hello\", type: \"string\" }` |\r\n| `true` | boolean | `{ value: true, type: \"boolean\" }` |\r\n| `[1.1, 2.2]` | array (double) | `{ value: [...], type: \"array\", elementType: \"double\" }` |\r\n| `Date.now()` | timestamp | `{ value: Date.now(), type: \"timestamp\" }` |\r\n\r\n---\r\n\r\n## Best Practices\r\n\r\n### Symbol Selection\r\nUse symbols (tags) for columns that will be frequently filtered:\r\n- Device/sensor identifiers\r\n- Geographic regions\r\n- Service names\r\n- Environment (prod/dev/staging)\r\n\r\nSymbols are indexed and provide fast filtering performance.\r\n\r\n### Timestamp Handling\r\n- Use `Date.now()` for millisecond precision\r\n- Omit timestamp to use QuestDB server time\r\n- ISO strings are auto-converted: `\"2024-01-15T10:30:00Z\"`\r\n\r\n### Array Columns\r\nIdeal for:\r\n- High-frequency sensor samples\r\n- FFT/spectral data\r\n- Batch readings from single collection window\r\n\r\n### Decimal Type\r\nUse for financial data requiring exact precision:\r\n```javascript\r\nprice: { value: \"123.456789\", type: \"decimal\" }\r\n```\r\n\r\n### Performance Tips\r\n1. Batch related data into single rows when possible\r\n2. Use appropriate flush intervals for your write pattern\r\n3. Leverage symbols for frequently queried dimensions\r\n4. Use arrays for high-frequency sampled data\r\n\r\n## QuestDB Setup\r\n\r\n### Using Docker\r\n\r\n```bash\r\ndocker run -p 9000:9000 -p 9009:9009 questdb/questdb\r\n```\r\n\r\n### Connection String Format\r\n\r\nThe node uses QuestDB's connection string format internally:\r\n\r\n```\r\nhttp::addr=localhost:9000;auto_flush_rows=75000;auto_flush_interval=1000;\r\n```\r\n\r\n## Compatibility\r\n\r\n- **Node-RED**: >= 2.0.0\r\n- **Node.js**: >= 14.0.0\r\n- **QuestDB**: >= 6.0 (recommended: latest)\r\n\r\n## Troubleshooting\r\n\r\n### Connection Issues\r\n\r\n1. Verify QuestDB is running: `curl http://localhost:9000`\r\n2. Check firewall settings for ports 9000/9009\r\n3. For HTTPS/TCPS, ensure certificates are properly configured\r\n\r\n### Data Not Appearing\r\n\r\n1. Check the node status indicator (green = connected)\r\n2. Verify table creation in QuestDB console\r\n3. Enable debug output to see write confirmations\r\n\r\n### Performance Tips\r\n\r\n1. Use symbols for frequently queried columns (they're indexed)\r\n2. Batch writes when possible using arrays\r\n3. Adjust auto-flush settings based on your write patterns\r\n\r\n## License\r\n\r\nMIT\r\n\r\n## Author\r\n\r\n**Holger Amort**\r\n\r\n## Links\r\n\r\n- [QuestDB Documentation](https://questdb.io/docs/)\r\n- [QuestDB Node.js Client](https://github.com/questdb/nodejs-questdb-client)\r\n- [GitHub Repository](https://github.com/ErnstHolger/node-red)\r\n- [Report Issues](https://github.com/ErnstHolger/node-red/issues)\r\n","readmeFilename":"README.md"}