iobroker.ds18b20
Version:
This is an ioBroker-Adapter to integrate DS18B20 1-wire temperature sensors.
95 lines (81 loc) • 23.5 kB
JavaScript
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var import_fs = __toESM(require("fs"));
var import_os = __toESM(require("os"));
var import_path = __toESM(require("path"));
const SYSTEMD_SERVICE_NAME = "iobroker-ds18b20-remote.service";
const files = {
'common.js': 'InVzZSBzdHJpY3QiOwp2YXIgX19jcmVhdGUgPSBPYmplY3QuY3JlYXRlOwp2YXIgX19kZWZQcm9wID0gT2JqZWN0LmRlZmluZVByb3BlcnR5Owp2YXIgX19nZXRPd25Qcm9wRGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7CnZhciBfX2dldE93blByb3BOYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzOwp2YXIgX19nZXRQcm90b09mID0gT2JqZWN0LmdldFByb3RvdHlwZU9mOwp2YXIgX19oYXNPd25Qcm9wID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTsKdmFyIF9fZXhwb3J0ID0gKHRhcmdldCwgYWxsKSA9PiB7CiAgZm9yICh2YXIgbmFtZSBpbiBhbGwpCiAgICBfX2RlZlByb3AodGFyZ2V0LCBuYW1lLCB7IGdldDogYWxsW25hbWVdLCBlbnVtZXJhYmxlOiB0cnVlIH0pOwp9Owp2YXIgX19jb3B5UHJvcHMgPSAodG8sIGZyb20sIGV4Y2VwdCwgZGVzYykgPT4gewogIGlmIChmcm9tICYmIHR5cGVvZiBmcm9tID09PSAib2JqZWN0IiB8fCB0eXBlb2YgZnJvbSA9PT0gImZ1bmN0aW9uIikgewogICAgZm9yIChsZXQga2V5IG9mIF9fZ2V0T3duUHJvcE5hbWVzKGZyb20pKQogICAgICBpZiAoIV9faGFzT3duUHJvcC5jYWxsKHRvLCBrZXkpICYmIGtleSAhPT0gZXhjZXB0KQogICAgICAgIF9fZGVmUHJvcCh0bywga2V5LCB7IGdldDogKCkgPT4gZnJvbVtrZXldLCBlbnVtZXJhYmxlOiAhKGRlc2MgPSBfX2dldE93blByb3BEZXNjKGZyb20sIGtleSkpIHx8IGRlc2MuZW51bWVyYWJsZSB9KTsKICB9CiAgcmV0dXJuIHRvOwp9Owp2YXIgX190b0VTTSA9IChtb2QsIGlzTm9kZU1vZGUsIHRhcmdldCkgPT4gKHRhcmdldCA9IG1vZCAhPSBudWxsID8gX19jcmVhdGUoX19nZXRQcm90b09mKG1vZCkpIDoge30sIF9fY29weVByb3BzKAogIC8vIElmIHRoZSBpbXBvcnRlciBpcyBpbiBub2RlIGNvbXBhdGliaWxpdHkgbW9kZSBvciB0aGlzIGlzIG5vdCBhbiBFU00KICAvLyBmaWxlIHRoYXQgaGFzIGJlZW4gY29udmVydGVkIHRvIGEgQ29tbW9uSlMgZmlsZSB1c2luZyBhIEJhYmVsLQogIC8vIGNvbXBhdGlibGUgdHJhbnNmb3JtIChpLmUuICJfX2VzTW9kdWxlIiBoYXMgbm90IGJlZW4gc2V0KSwgdGhlbiBzZXQKICAvLyAiZGVmYXVsdCIgdG8gdGhlIENvbW1vbkpTICJtb2R1bGUuZXhwb3J0cyIgZm9yIG5vZGUgY29tcGF0aWJpbGl0eS4KICBpc05vZGVNb2RlIHx8ICFtb2QgfHwgIW1vZC5fX2VzTW9kdWxlID8gX19kZWZQcm9wKHRhcmdldCwgImRlZmF1bHQiLCB7IHZhbHVlOiBtb2QsIGVudW1lcmFibGU6IHRydWUgfSkgOiB0YXJnZXQsCiAgbW9kCikpOwp2YXIgX190b0NvbW1vbkpTID0gKG1vZCkgPT4gX19jb3B5UHJvcHMoX19kZWZQcm9wKHt9LCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSksIG1vZCk7CnZhciBjb21tb25fZXhwb3J0cyA9IHt9OwpfX2V4cG9ydChjb21tb25fZXhwb3J0cywgewogIFJFTU9URV9QUk9UT0NPTF9WRVJTSU9OOiAoKSA9PiBSRU1PVEVfUFJPVE9DT0xfVkVSU0lPTiwKICBkZWNyeXB0OiAoKSA9PiBkZWNyeXB0LAogIGVuY3J5cHQ6ICgpID0+IGVuY3J5cHQKfSk7Cm1vZHVsZS5leHBvcnRzID0gX190b0NvbW1vbkpTKGNvbW1vbl9leHBvcnRzKTsKdmFyIGltcG9ydF9ub2RlX2NyeXB0byA9IF9fdG9FU00ocmVxdWlyZSgibm9kZTpjcnlwdG8iKSk7CmNvbnN0IFJFTU9URV9QUk9UT0NPTF9WRVJTSU9OID0gMzsKY29uc3QgSVZfTEVOR1RIID0gMTY7CmZ1bmN0aW9uIGVuY3J5cHQodGV4dCwga2V5KSB7CiAgY29uc3QgaXYgPSBpbXBvcnRfbm9kZV9jcnlwdG8uZGVmYXVsdC5yYW5kb21CeXRlcyhJVl9MRU5HVEgpOwogIGNvbnN0IGNpcGhlciA9IGltcG9ydF9ub2RlX2NyeXB0by5kZWZhdWx0LmNyZWF0ZUNpcGhlcml2KCJhZXMtMjU2LWNiYyIsIGtleSwgaXYpOwogIGxldCBlbmNyeXB0ZWQgPSBjaXBoZXIudXBkYXRlKHRleHQpOwogIGVuY3J5cHRlZCA9IEJ1ZmZlci5jb25jYXQoW2VuY3J5cHRlZCwgY2lwaGVyLmZpbmFsKCldKTsKICByZXR1cm4gaXYudG9TdHJpbmcoImhleCIpICsgIjoiICsgZW5jcnlwdGVkLnRvU3RyaW5nKCJoZXgiKTsKfQpmdW5jdGlvbiBkZWNyeXB0KHRleHQsIGtleSkgewogIGNvbnN0IHRleHRQYXJ0cyA9IHRleHQuc3BsaXQoIjoiKTsKICBjb25zdCBpdiA9IEJ1ZmZlci5mcm9tKHRleHRQYXJ0cy5zaGlmdCgpLCAiaGV4Iik7CiAgY29uc3QgZW5jcnlwdGVkVGV4dCA9IEJ1ZmZlci5mcm9tKHRleHRQYXJ0cy5qb2luKCI6IiksICJoZXgiKTsKICBjb25zdCBkZWNpcGhlciA9IGltcG9ydF9ub2RlX2NyeXB0by5kZWZhdWx0LmNyZWF0ZURlY2lwaGVyaXYoImFlcy0yNTYtY2JjIiwga2V5LCBpdik7CiAgbGV0IGRlY3J5cHRlZCA9IGRlY2lwaGVyLnVwZGF0ZShlbmNyeXB0ZWRUZXh0KTsKICBkZWNyeXB0ZWQgPSBCdWZmZXIuY29uY2F0KFtkZWNyeXB0ZWQsIGRlY2lwaGVyLmZpbmFsKCldKTsKICByZXR1cm4gZGVjcnlwdGVkLnRvU3RyaW5nKCk7Cn0KLy8gQW5ub3RhdGUgdGhlIENvbW1vbkpTIGV4cG9ydCBuYW1lcyBmb3IgRVNNIGltcG9ydCBpbiBub2RlOgowICYmIChtb2R1bGUuZXhwb3J0cyA9IHsKICBSRU1PVEVfUFJPVE9DT0xfVkVSU0lPTiwKICBkZWNyeXB0LAogIGVuY3J5cHQKfSk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWNvbW1vbi5qcy5tYXAK',
'ds18b20-remote-client.js': 'InVzZSBzdHJpY3QiOwp2YXIgX19jcmVhdGUgPSBPYmplY3QuY3JlYXRlOwp2YXIgX19kZWZQcm9wID0gT2JqZWN0LmRlZmluZVByb3BlcnR5Owp2YXIgX19nZXRPd25Qcm9wRGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7CnZhciBfX2dldE93blByb3BOYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzOwp2YXIgX19nZXRQcm90b09mID0gT2JqZWN0LmdldFByb3RvdHlwZU9mOwp2YXIgX19oYXNPd25Qcm9wID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTsKdmFyIF9fY29weVByb3BzID0gKHRvLCBmcm9tLCBleGNlcHQsIGRlc2MpID0+IHsKICBpZiAoZnJvbSAmJiB0eXBlb2YgZnJvbSA9PT0gIm9iamVjdCIgfHwgdHlwZW9mIGZyb20gPT09ICJmdW5jdGlvbiIpIHsKICAgIGZvciAobGV0IGtleSBvZiBfX2dldE93blByb3BOYW1lcyhmcm9tKSkKICAgICAgaWYgKCFfX2hhc093blByb3AuY2FsbCh0bywga2V5KSAmJiBrZXkgIT09IGV4Y2VwdCkKICAgICAgICBfX2RlZlByb3AodG8sIGtleSwgeyBnZXQ6ICgpID0+IGZyb21ba2V5XSwgZW51bWVyYWJsZTogIShkZXNjID0gX19nZXRPd25Qcm9wRGVzYyhmcm9tLCBrZXkpKSB8fCBkZXNjLmVudW1lcmFibGUgfSk7CiAgfQogIHJldHVybiB0bzsKfTsKdmFyIF9fdG9FU00gPSAobW9kLCBpc05vZGVNb2RlLCB0YXJnZXQpID0+ICh0YXJnZXQgPSBtb2QgIT0gbnVsbCA/IF9fY3JlYXRlKF9fZ2V0UHJvdG9PZihtb2QpKSA6IHt9LCBfX2NvcHlQcm9wcygKICAvLyBJZiB0aGUgaW1wb3J0ZXIgaXMgaW4gbm9kZSBjb21wYXRpYmlsaXR5IG1vZGUgb3IgdGhpcyBpcyBub3QgYW4gRVNNCiAgLy8gZmlsZSB0aGF0IGhhcyBiZWVuIGNvbnZlcnRlZCB0byBhIENvbW1vbkpTIGZpbGUgdXNpbmcgYSBCYWJlbC0KICAvLyBjb21wYXRpYmxlIHRyYW5zZm9ybSAoaS5lLiAiX19lc01vZHVsZSIgaGFzIG5vdCBiZWVuIHNldCksIHRoZW4gc2V0CiAgLy8gImRlZmF1bHQiIHRvIHRoZSBDb21tb25KUyAibW9kdWxlLmV4cG9ydHMiIGZvciBub2RlIGNvbXBhdGliaWxpdHkuCiAgaXNOb2RlTW9kZSB8fCAhbW9kIHx8ICFtb2QuX19lc01vZHVsZSA/IF9fZGVmUHJvcCh0YXJnZXQsICJkZWZhdWx0IiwgeyB2YWx1ZTogbW9kLCBlbnVtZXJhYmxlOiB0cnVlIH0pIDogdGFyZ2V0LAogIG1vZAopKTsKdmFyIGltcG9ydF91dGlsID0gcmVxdWlyZSgidXRpbCIpOwp2YXIgaW1wb3J0X25ldCA9IHJlcXVpcmUoIm5ldCIpOwp2YXIgaW1wb3J0X2ZzID0gX190b0VTTShyZXF1aXJlKCJmcyIpKTsKdmFyIGltcG9ydF9vcyA9IF9fdG9FU00ocmVxdWlyZSgib3MiKSk7CnZhciBpbXBvcnRfbG9nZ2VyID0gcmVxdWlyZSgiLi9sb2dnZXIiKTsKdmFyIGltcG9ydF9jb21tb24gPSByZXF1aXJlKCIuL2NvbW1vbiIpOwpjb25zdCByZWFkRGlyID0gKDAsIGltcG9ydF91dGlsLnByb21pc2lmeSkoaW1wb3J0X2ZzLmRlZmF1bHQucmVhZGRpcik7CmNvbnN0IHJlYWRGaWxlID0gKDAsIGltcG9ydF91dGlsLnByb21pc2lmeSkoaW1wb3J0X2ZzLmRlZmF1bHQucmVhZEZpbGUpOwpjb25zdCBFTlZfS0VZUyA9IFsKICAiQURBUFRFUl9IT1NUIiwKICAiQURBUFRFUl9LRVkiLAogICJBREFQVEVSX1BPUlQiLAogICJERUJVRyIsCiAgIlNZU1RFTV9JRCIsCiAgIlcxX0RFVklDRVNfUEFUSCIKXTsKY2xhc3MgRHMxOGIyMFJlbW90ZSB7CiAgY29uc3RydWN0b3IoKSB7CiAgICAvKioKICAgICAqIFRpbWVvdXQgdG8gdHJpZ2dlciBzb2NrZXQgcmVjb25uZWN0cy4KICAgICAqLwogICAgdGhpcy5yZWNvbm5lY3RUaW1lb3V0ID0gbnVsbDsKICAgIC8qKgogICAgICogRmxhZyBpZiBkczE4YjIwLXJlbW90ZSBzaG91bGQgZXhpdC4KICAgICAqIElmIGB0cnVlYCBhIHJlY29ubmVjdCB3b24ndCBiZSBwb3NzaWJsZS4KICAgICAqLwogICAgdGhpcy5zaG91bGRFeGl0ID0gZmFsc2U7CiAgICAvKioKICAgICAqIFN0cmluZyBvZiB0aGUgcmVjZWl2ZWQgZGF0YS4KICAgICAqIEFsbCByZWNlaXZlZCBkYXRhIGNodW5rcyB3aWxsIGJlIGFwcGVuZGVkIHRvIHRoaXMgdW50aWwgd2UgZ290IGBcbmAuCiAgICAgKiBPbiBgXG5gIGRhdGEgYmVmb3JlIGl0IHdpbGwgYmUgcHJvY2Vzc2VkLgogICAgICovCiAgICB0aGlzLnJlY3ZEYXRhID0gIiI7CiAgICB0aGlzLmNvbm5lY3QgPSB0aGlzLmNvbm5lY3QuYmluZCh0aGlzKTsKICAgIHRoaXMuZXhpdCA9IHRoaXMuZXhpdC5iaW5kKHRoaXMpOwogICAgdGhpcy5vbkNsb3NlID0gdGhpcy5vbkNsb3NlLmJpbmQodGhpcyk7CiAgICB0aGlzLm9uRGF0YSA9IHRoaXMub25EYXRhLmJpbmQodGhpcyk7CiAgICB0aGlzLm9uRXJyb3IgPSB0aGlzLm9uRXJyb3IuYmluZCh0aGlzKTsKICAgIHRoaXMub25Db25uZWN0ID0gdGhpcy5vbkNvbm5lY3QuYmluZCh0aGlzKTsKICAgIHRoaXMubG9nID0gbmV3IGltcG9ydF9sb2dnZXIuTG9nZ2VyKCk7CiAgICB0aGlzLmxvZy5sb2coIi0gaW9Ccm9rZXIuZHMxOGIyMCByZW1vdGUgY2xpZW50IC0iKTsKICAgIHRoaXMucmVhZERvdEVudigpOwogICAgaWYgKHByb2Nlc3MuZW52LlNZU1RFTV9JRCkgewogICAgICB0aGlzLnN5c3RlbUlkID0gcHJvY2Vzcy5lbnYuU1lTVEVNX0lELnRyaW0oKTsKICAgIH0gZWxzZSB7CiAgICAgIHRoaXMuc3lzdGVtSWQgPSBpbXBvcnRfb3MuZGVmYXVsdC5ob3N0bmFtZSgpOwogICAgICB0aGlzLmxvZy53YXJuKGBVc2luZyB0aGUgaG9zdG5hbWUgJHt0aGlzLnN5c3RlbUlkfSBhcyBzeXN0ZW0gSUQuIFBsZWFzZSBzZXQgU1lTVEVNX0lEIHRvIGEgdW5pcXVlIHZhbHVlLmApOwogICAgfQogICAgdGhpcy5sb2cuZGVidWcoYHN5c3RlbUlkYCwgdGhpcy5zeXN0ZW1JZCk7CiAgICBpZiAocHJvY2Vzcy5lbnYuQURBUFRFUl9QT1JUKSB7CiAgICAgIHRyeSB7CiAgICAgICAgdGhpcy5hZGFwdGVyUG9ydCA9IHBhcnNlSW50KHByb2Nlc3MuZW52LkFEQVBURVJfUE9SVCwgMTApOwogICAgICB9IGNhdGNoIChlcnIpIHsKICAgICAgICB0aGlzLmxvZy5lcnJvcihgSW52YWxpZCBBREFQVEVSX1BPUlQhYCwgZXJyKTsKICAgICAgICBwcm9jZXNzLmV4aXQoMSk7CiAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgIHRoaXMuYWRhcHRlclBvcnQgPSAxODIwOwogICAgfQogICAgdGhpcy5sb2cuZGVidWcoYGFkYXB0ZXJQb3J0YCwgdGhpcy5hZGFwdGVyUG9ydCk7CiAgICB0aGlzLmFkYXB0ZXJIb3N0ID0gKHByb2Nlc3MuZW52LkFEQVBURVJfSE9TVCA/PyAiIikudHJpbSgpOwogICAgaWYgKHRoaXMuYWRhcHRlckhvc3QubGVuZ3RoIDw9IDApIHsKICAgICAgdGhpcy5sb2cuZXJyb3IoYE5vIEFEQVBURVJfSE9TVCBnaXZlbiFgKTsKICAgICAgcHJvY2Vzcy5leGl0KDEpOwogICAgfQogICAgdGhpcy5sb2cuZGVidWcoYGFkYXB0ZXJIb3N0YCwgdGhpcy5hZGFwdGVySG9zdCk7CiAgICB0aGlzLmFkYXB0ZXJLZXkgPSBCdWZmZXIuZnJvbShwcm9jZXNzLmVudi5BREFQVEVSX0tFWSA/PyAiIiwgImhleCIpOwogICAgaWYgKHRoaXMuYWRhcHRlcktleS5sZW5ndGggIT09IDMyKSB7CiAgICAgIHRoaXMubG9nLmVycm9yKGBBREFQVEVSX0tFWSBpcyBubyB2YWxpZCBrZXkhYCk7CiAgICAgIHByb2Nlc3MuZXhpdCgxKTsKICAgIH0KICAgIHRoaXMubG9nLmRlYnVnKGBhZGFwdGVyS2V5YCwgdGhpcy5hZGFwdGVyS2V5KTsKICAgIHRoaXMudzFEZXZpY2VzUGF0aCA9IHByb2Nlc3MuZW52LlcxX0RFVklDRVNfUEFUSCA/PyAiL3N5cy9idXMvdzEvZGV2aWNlcyI7CiAgICBpZiAoIWltcG9ydF9mcy5kZWZhdWx0LmV4aXN0c1N5bmModGhpcy53MURldmljZXNQYXRoKSkgewogICAgICB0aGlzLmxvZy5lcnJvcihgVGhlIDEtd2lyZSBkZXZpY2VzIHBhdGggJHt0aGlzLncxRGV2aWNlc1BhdGh9IGRvZXMgbm90IGV4aXN0IWApOwogICAgICBwcm9jZXNzLmV4aXQoMSk7CiAgICB9CiAgICB0aGlzLmxvZy5kZWJ1ZyhgdzFEZXZpY2VzUGF0aGAsIHRoaXMudzFEZXZpY2VzUGF0aCk7CiAgICBwcm9jZXNzLm9uKCJTSUdJTlQiLCB0aGlzLmV4aXQpOwogICAgcHJvY2Vzcy5vbigiU0lHVEVSTSIsIHRoaXMuZXhpdCk7CiAgICB0aGlzLnNvY2tldCA9IG5ldyBpbXBvcnRfbmV0LlNvY2tldCgpOwogICAgdGhpcy5zb2NrZXQub24oImNsb3NlIiwgdGhpcy5vbkNsb3NlKTsKICAgIHRoaXMuc29ja2V0Lm9uKCJkYXRhIiwgdGhpcy5vbkRhdGEpOwogICAgdGhpcy5zb2NrZXQub24oImVycm9yIiwgdGhpcy5vbkVycm9yKTsKICAgIHRoaXMuc29ja2V0Lm9uKCJjb25uZWN0IiwgdGhpcy5vbkNvbm5lY3QpOwogICAgdGhpcy5jb25uZWN0KCk7CiAgfQogIC8qKgogICAqIFRyeSB0byBjb25uZWN0IHRvIHRoZSBhZGFwdGVyLgogICAqLwogIGNvbm5lY3QoKSB7CiAgICBpZiAodGhpcy5yZWNvbm5lY3RUaW1lb3V0KSB7CiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnJlY29ubmVjdFRpbWVvdXQpOwogICAgICB0aGlzLnJlY29ubmVjdFRpbWVvdXQgPSBudWxsOwogICAgfQogICAgaWYgKHRoaXMuc2hvdWxkRXhpdCkgewogICAgICByZXR1cm47CiAgICB9CiAgICB0aGlzLmxvZy5pbmZvKGBDb25uZWN0aW5nIHRvICR7dGhpcy5hZGFwdGVySG9zdH06JHt0aGlzLmFkYXB0ZXJQb3J0fSAuLi5gKTsKICAgIHRoaXMuc29ja2V0LmNvbm5lY3QoewogICAgICBob3N0OiB0aGlzLmFkYXB0ZXJIb3N0LAogICAgICBwb3J0OiB0aGlzLmFkYXB0ZXJQb3J0CiAgICB9KTsKICB9CiAgLyoqCiAgICogSGFuZGxlIGVzdGFibGlzaGVkIGNvbm5lY3Rpb24uCiAgICovCiAgb25Db25uZWN0KCkgewogICAgdGhpcy5sb2cuaW5mbyhgQ29ubmVjdGVkIHdpdGggYWRhcHRlcmApOwogICAgaWYgKHRoaXMucmVjb25uZWN0VGltZW91dCkgewogICAgICBjbGVhclRpbWVvdXQodGhpcy5yZWNvbm5lY3RUaW1lb3V0KTsKICAgIH0KICAgIHRoaXMucmVjb25uZWN0VGltZW91dCA9IG51bGw7CiAgfQogIC8qKgogICAqIEhhbmRsZSBpbmNvbWluZyBkYXRhIGNodW5rcy4KICAgKiBAcGFyYW0gZGF0YSBBIGRhdGEgY2h1bmsuCiAgICovCiAgb25EYXRhKGRhdGEpIHsKICAgIHRoaXMucmVjdkRhdGEgKz0gZGF0YS50b1N0cmluZygpOwogICAgbGV0IGlkeCA9IHRoaXMucmVjdkRhdGEuaW5kZXhPZigiXG4iKTsKICAgIHdoaWxlIChpZHggPiAwKSB7CiAgICAgIGNvbnN0IHJhdyA9IHRoaXMucmVjdkRhdGEuc2xpY2UoMCwgaWR4KTsKICAgICAgdGhpcy5yZWN2RGF0YSA9IHRoaXMucmVjdkRhdGEuc2xpY2UoaWR4ICsgMSk7CiAgICAgIHZvaWQgdGhpcy5oYW5kbGVTb2NrZXREYXRhKHJhdyk7CiAgICAgIGlkeCA9IHRoaXMucmVjdkRhdGEuaW5kZXhPZigiXG4iKTsKICAgIH0KICB9CiAgLyoqCiAgICogSGFuZGxlIGEgbWVzc2FnZSBmcm9tIHRoZSBhZGFwdGVyLgogICAqIEBwYXJhbSByYXcgVGhlIHJhdyAoZW5jb2RlZCkgbWVzc2FnZSBmcm9tIHRoZSBhZGFwdGVyLgogICAqLwogIGFzeW5jIGhhbmRsZVNvY2tldERhdGEocmF3KSB7CiAgICBsZXQgZGF0YTsKICAgIHRyeSB7CiAgICAgIGNvbnN0IGRhdGFTdHIgPSAoMCwgaW1wb3J0X2NvbW1vbi5kZWNyeXB0KShyYXcsIHRoaXMuYWRhcHRlcktleSk7CiAgICAgIGRhdGEgPSBKU09OLnBhcnNlKGRhdGFTdHIpOwogICAgfSBjYXRjaCAoZXJyKSB7CiAgICAgIHRoaXMubG9nLndhcm4oYERlY3J5cHQgb2YgZGF0YSBmYWlsZWQhICR7ZXJyfWApOwogICAgICB0aGlzLnNvY2tldC5lbmQoKTsKICAgICAgcmV0dXJuOwogICAgfQogICAgdGhpcy5sb2cuZGVidWcoIm1lc3NhZ2UgZnJvbSBhZGFwdGVyOiIsIGRhdGEpOwogICAgc3dpdGNoIChkYXRhLmNtZCkgewogICAgICBjYXNlICJjbGllbnRJbmZvIjoKICAgICAgICBpZiAoZGF0YS5wcm90b2NvbFZlcnNpb24gIT09IGltcG9ydF9jb21tb24uUkVNT1RFX1BST1RPQ09MX1ZFUlNJT04pIHsKICAgICAgICAgIHRoaXMubG9nLndhcm4oYFByb3RvY29sIHZlcnNpb24gJHtkYXRhLnByb3RvY29sVmVyc2lvbn0gZnJvbSB0aGUgYWRhcHRlciBkb2VzIG5vdCBtYXRjaCB0aGUgcmVtb3RlIGNsaWVudCBwcm90b2NvbCB2ZXJzaW9uICR7aW1wb3J0X2NvbW1vbi5SRU1PVEVfUFJPVE9DT0xfVkVSU0lPTn0hIFBsZWFzZSByZWluc3RhbGwgdGhlIHJlbW90ZSBjbGllbnQuYCk7CiAgICAgICAgfQogICAgICAgIHRoaXMubG9nLmluZm8oIlNlbmRpbmcgY2xpZW50IGluZm8gdG8gdGhlIGFkYXB0ZXIiKTsKICAgICAgICBhd2FpdCB0aGlzLnNlbmQoewogICAgICAgICAgY21kOiAiY2xpZW50SW5mbyIsCiAgICAgICAgICBwcm90b2NvbFZlcnNpb246IGltcG9ydF9jb21tb24uUkVNT1RFX1BST1RPQ09MX1ZFUlNJT04sCiAgICAgICAgICBzeXN0ZW1JZDogdGhpcy5zeXN0ZW1JZAogICAgICAgIH0pOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlICJyZWFkIjogewogICAgICAgIGlmICghZGF0YS5hZGRyZXNzKSB7CiAgICAgICAgICB0aGlzLmxvZy53YXJuKGBHb3QgcmVhZCBjb21tYW5kIHdpdGhvdXQgYWRkcmVzcyBmcm9tIGFkYXB0ZXIhYCk7CiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGxldCByYXcyOwogICAgICAgIHRyeSB7CiAgICAgICAgICByYXcyID0gYXdhaXQgcmVhZEZpbGUoYCR7dGhpcy53MURldmljZXNQYXRofS8ke2RhdGEuYWRkcmVzc30vdzFfc2xhdmVgLCAidXRmOCIpOwogICAgICAgICAgdGhpcy5sb2cuZGVidWcoYFJlYWQgZnJvbSBmaWxlICR7dGhpcy53MURldmljZXNQYXRofS8ke2RhdGEuYWRkcmVzc30vdzFfc2xhdmU6YCwgcmF3KTsKICAgICAgICB9IGNhdGNoIChlcnIpIHsKICAgICAgICAgIHRoaXMubG9nLndhcm4oYFJlYWQgZnJvbSBmaWxlICR7dGhpcy53MURldmljZXNQYXRofS8ke2RhdGEuYWRkcmVzc30vdzFfc2xhdmUgZmFpbGVkISAke2Vycn1gKTsKICAgICAgICAgIHRoaXMubG9nLmRlYnVnKGVycik7CiAgICAgICAgICByYXcyID0gIiI7CiAgICAgICAgfQogICAgICAgIGF3YWl0IHRoaXMuc2VuZCh7CiAgICAgICAgICBjbWQ6ICJyZWFkIiwKICAgICAgICAgIGFkZHJlc3M6IGRhdGEuYWRkcmVzcywKICAgICAgICAgIHRzOiBkYXRhLnRzLAogICAgICAgICAgcmF3OiByYXcyCiAgICAgICAgfSk7CiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgICAgY2FzZSAic2VhcmNoIjoKICAgICAgICB0cnkgewogICAgICAgICAgY29uc3QgZmlsZXMgPSBhd2FpdCByZWFkRGlyKHRoaXMudzFEZXZpY2VzUGF0aCk7CiAgICAgICAgICBjb25zdCBwcm9tcyA9IFtdOwogICAgICAgICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7CiAgICAgICAgICAgIGlmICgvXncxX2J1c19tYXN0ZXJcZCskLy5leGVjKGZpbGUpKSB7CiAgICAgICAgICAgICAgdGhpcy5sb2cuZGVidWcoYHJlYWRpbmcgJHt0aGlzLncxRGV2aWNlc1BhdGh9LyR7ZmlsZX0vdzFfbWFzdGVyX3NsYXZlc2ApOwogICAgICAgICAgICAgIHByb21zLnB1c2gocmVhZEZpbGUoYCR7dGhpcy53MURldmljZXNQYXRofS8ke2ZpbGV9L3cxX21hc3Rlcl9zbGF2ZXNgLCAidXRmOCIpKTsKICAgICAgICAgICAgfSBlbHNlIGlmIChmaWxlID09PSAidzFfbWFzdGVyX3NsYXZlcyIpIHsKICAgICAgICAgICAgICB0aGlzLmxvZy5kZWJ1ZyhgcmVhZGluZyAke3RoaXMudzFEZXZpY2VzUGF0aH0vdzFfbWFzdGVyX3NsYXZlc2ApOwogICAgICAgICAgICAgIHByb21zLnB1c2gocmVhZEZpbGUoYCR7dGhpcy53MURldmljZXNQYXRofS93MV9tYXN0ZXJfc2xhdmVzYCwgInV0ZjgiKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGNvbnN0IGFkZHJlc3NlcyA9IChhd2FpdCBQcm9taXNlLmFsbChwcm9tcykpLnJlZHVjZSgoYWNjLCBjdXIpID0+IHsKICAgICAgICAgICAgYWNjLnB1c2goLi4uY3VyLnRyaW0oKS5zcGxpdCgiXG4iKSk7CiAgICAgICAgICAgIHJldHVybiBhY2M7CiAgICAgICAgICB9LCBbXSk7CiAgICAgICAgICBhd2FpdCB0aGlzLnNlbmQoewogICAgICAgICAgICBjbWQ6ICJzZWFyY2giLAogICAgICAgICAgICB0czogZGF0YS50cywKICAgICAgICAgICAgc3lzdGVtSWQ6IGRhdGEuc3lzdGVtSWQsCiAgICAgICAgICAgIGFkZHJlc3NlcwogICAgICAgICAgfSk7CiAgICAgICAgfSBjYXRjaCAoZXJyKSB7CiAgICAgICAgICB0aGlzLmxvZy53YXJuKGBTZWFyY2hpbmcgZm9yIHNlbnNvcnMgZmFpbGVkISAke2Vycn1gKTsKICAgICAgICAgIHRoaXMubG9nLmRlYnVnKGVycik7CiAgICAgICAgfQogICAgICAgIGJyZWFrOwogICAgICBkZWZhdWx0OgogICAgICAgIHRoaXMubG9nLndhcm4oYFVua25vd24gY29tbWFuZCBmcm9tIGFkYXB0ZXJgKTsKICAgIH0KICB9CiAgLyoqCiAgICogSGFuZGxlciBmb3Igc29ja2V0IGVycm9ycy4KICAgKiBFYWNoIGVycm9yIHdpbGwgdHJpZ2dlciBhIHNvY2tldCBkaXNjb25uZWN0IGFuZCByZWNvbm5lY3QuCiAgICogQHBhcmFtIGVyciBUaGUgZXJyb3IuCiAgICovCiAgb25FcnJvcihlcnIpIHsKICAgIHRoaXMubG9nLndhcm4oYFNvY2tldCBlcnJvcjpgLCBlcnIudG9TdHJpbmcoKSk7CiAgICB0aGlzLmxvZy5kZWJ1ZyhlcnIpOwogICAgdGhpcy5zb2NrZXQuZW5kKCk7CiAgICB0aGlzLnJlY29ubmVjdCgpOwogIH0KICAvKioKICAgKiBIYW5kbGVyIGZvciBzb2NrZXQgY2xvc2UgZXZlbnRzLgogICAqLwogIG9uQ2xvc2UoKSB7CiAgICB0aGlzLmxvZy5pbmZvKCJTb2NrZXQgY2xvc2VkIik7CiAgICB0aGlzLnJlY29ubmVjdCgpOwogIH0KICAvKioKICAgKiBJbml0IGEgcmVjb25uZWN0IGFmdGVyIDMwIHNlY29uZHMuCiAgICovCiAgcmVjb25uZWN0KCkgewogICAgaWYgKCF0aGlzLnJlY29ubmVjdFRpbWVvdXQgJiYgIXRoaXMuc2hvdWxkRXhpdCkgewogICAgICB0aGlzLmxvZy5pbmZvKGBSZWNvbm5lY3QgaW4gMzAgc2Vjb25kc2ApOwogICAgICB0aGlzLnJlY29ubmVjdFRpbWVvdXQgPSBzZXRUaW1lb3V0KHRoaXMuY29ubmVjdCwgM2U0KTsKICAgIH0KICB9CiAgLyoqCiAgICogU2VuZCBzb21lIGRhdGEgdG8gdGhlIGFkYXB0ZXIuCiAgICogVGhlIGRhdGEgd2lsbCBiZSBzdHJpbmdpZmllZCBhbmQgZW5jcnlwdGVkIGJlZm9yZSBzZW5kaW5nLgogICAqIEBwYXJhbSBkYXRhIFRoZSBkYXRhIG9iamVjdCB0byBzZW5kLgogICAqLwogIGFzeW5jIHNlbmQoZGF0YSkgewogICAgdGhpcy5sb2cuZGVidWcoInNlbmQgdG8gYWRhcHRlcjoiLCBkYXRhKTsKICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CiAgICAgIHRoaXMuc29ja2V0LndyaXRlKCgwLCBpbXBvcnRfY29tbW9uLmVuY3J5cHQpKEpTT04uc3RyaW5naWZ5KGRhdGEpLCB0aGlzLmFkYXB0ZXJLZXkpICsgIlxuIiwgKGVycikgPT4gewogICAgICAgIGlmIChlcnIpIHsKICAgICAgICAgIHJlamVjdChlcnIpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICByZXNvbHZlKCk7CiAgICAgICAgfQogICAgICB9KTsKICAgIH0pOwogIH0KICAvKioKICAgKiBSZWFkIGVudiB2YXJzIGZyb20gYSAuZW52IGZpbGUgaW4gdGhlIGN1cnJlbnQgd29ya2luZyBkaXIgaWYgZXhpc3RzLgogICAqLwogIHJlYWREb3RFbnYoKSB7CiAgICBpZiAoIWltcG9ydF9mcy5kZWZhdWx0LmV4aXN0c1N5bmMoIi5lbnYiKSkKICAgICAgcmV0dXJuOwogICAgbGV0IGRhdGE7CiAgICB0cnkgewogICAgICBkYXRhID0gaW1wb3J0X2ZzLmRlZmF1bHQucmVhZEZpbGVTeW5jKCIuZW52IiwgInV0Zi04Iikuc3BsaXQoIlxuIikubWFwKChsKSA9PiBsLnRyaW0oKSk7CiAgICB9IGNhdGNoIChlcnIpIHsKICAgICAgdGhpcy5sb2cuZGVidWcoImNhbid0IHJlYWQgLmVudiBmaWxlIiwgZXJyKTsKICAgICAgcmV0dXJuOwogICAgfQogICAgZm9yIChjb25zdCBsaW5lIG9mIGRhdGEpIHsKICAgICAgaWYgKCFsaW5lIHx8IGxpbmUuc3RhcnRzV2l0aCgiIyIpKQogICAgICAgIGNvbnRpbnVlOwogICAgICBjb25zdCBpZHggPSBsaW5lLmluZGV4T2YoIj0iKTsKICAgICAgaWYgKGlkeCA8PSAwKQogICAgICAgIGNvbnRpbnVlOwogICAgICBjb25zdCBrZXkgPSBsaW5lLnNsaWNlKDAsIGlkeCkudHJpbSgpOwogICAgICBjb25zdCB2YWwgPSBsaW5lLnNsaWNlKGlkeCArIDEpLnRyaW0oKS5yZXBsYWNlKC8oXiJ8IiQpL2csICIiKTsKICAgICAgaWYgKEVOVl9LRVlTLmluY2x1ZGVzKGtleSkpIHsKICAgICAgICBpZiAocHJvY2Vzcy5lbnZba2V5XSkKICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIHByb2Nlc3MuZW52W2tleV0gPSB2YWw7CiAgICAgICAgdGhpcy5sb2cuZGVidWcoYHJlYWQgJHtrZXl9PSR7dmFsfSBmcm9tIC5lbnYgZmlsZWApOwogICAgICB9CiAgICB9CiAgfQogIC8qKgogICAqIEhhbmRsZXIgcHJvY2VzcyBleGl0LgogICAqIFRoaXMgd2lsbCBzdG9wIGFsbCB0aW1lb3V0cyBhbmQgY2xvc2UgdGhlIHNvY2tldCBjb25uZWN0aW9uLgogICAqLwogIGV4aXQoKSB7CiAgICB0aGlzLnNob3VsZEV4aXQgPSB0cnVlOwogICAgaWYgKHRoaXMucmVjb25uZWN0VGltZW91dCkgewogICAgICBjbGVhclRpbWVvdXQodGhpcy5yZWNvbm5lY3RUaW1lb3V0KTsKICAgIH0KICAgIHRoaXMuc29ja2V0LmVuZCgpOwogIH0KfQpuZXcgRHMxOGIyMFJlbW90ZSgpOwovLyMgc291cmNlTWFwcGluZ1VSTD1kczE4YjIwLXJlbW90ZS1jbGllbnQuanMubWFwCg==',
'logger.js': 'InVzZSBzdHJpY3QiOwp2YXIgX19kZWZQcm9wID0gT2JqZWN0LmRlZmluZVByb3BlcnR5Owp2YXIgX19nZXRPd25Qcm9wRGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7CnZhciBfX2dldE93blByb3BOYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzOwp2YXIgX19oYXNPd25Qcm9wID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTsKdmFyIF9fZXhwb3J0ID0gKHRhcmdldCwgYWxsKSA9PiB7CiAgZm9yICh2YXIgbmFtZSBpbiBhbGwpCiAgICBfX2RlZlByb3AodGFyZ2V0LCBuYW1lLCB7IGdldDogYWxsW25hbWVdLCBlbnVtZXJhYmxlOiB0cnVlIH0pOwp9Owp2YXIgX19jb3B5UHJvcHMgPSAodG8sIGZyb20sIGV4Y2VwdCwgZGVzYykgPT4gewogIGlmIChmcm9tICYmIHR5cGVvZiBmcm9tID09PSAib2JqZWN0IiB8fCB0eXBlb2YgZnJvbSA9PT0gImZ1bmN0aW9uIikgewogICAgZm9yIChsZXQga2V5IG9mIF9fZ2V0T3duUHJvcE5hbWVzKGZyb20pKQogICAgICBpZiAoIV9faGFzT3duUHJvcC5jYWxsKHRvLCBrZXkpICYmIGtleSAhPT0gZXhjZXB0KQogICAgICAgIF9fZGVmUHJvcCh0bywga2V5LCB7IGdldDogKCkgPT4gZnJvbVtrZXldLCBlbnVtZXJhYmxlOiAhKGRlc2MgPSBfX2dldE93blByb3BEZXNjKGZyb20sIGtleSkpIHx8IGRlc2MuZW51bWVyYWJsZSB9KTsKICB9CiAgcmV0dXJuIHRvOwp9Owp2YXIgX190b0NvbW1vbkpTID0gKG1vZCkgPT4gX19jb3B5UHJvcHMoX19kZWZQcm9wKHt9LCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSksIG1vZCk7CnZhciBsb2dnZXJfZXhwb3J0cyA9IHt9OwpfX2V4cG9ydChsb2dnZXJfZXhwb3J0cywgewogIExvZ2dlcjogKCkgPT4gTG9nZ2VyCn0pOwptb2R1bGUuZXhwb3J0cyA9IF9fdG9Db21tb25KUyhsb2dnZXJfZXhwb3J0cyk7CmNsYXNzIExvZ2dlciB7CiAgLyoqCiAgICogTG9nIGEgbWVzc2FnZS4KICAgKiBAcGFyYW0gYXJncyBUaGluZ3MgdG8gbG9nLgogICAqLwogIGxvZyguLi5hcmdzKSB7CiAgICBjb25zb2xlLmxvZyguLi5hcmdzKTsKICB9CiAgLyoqCiAgICogTG9nIGEgbWVzc2FnZSBwcmVwZW5kZWQgd2l0aCBgW0RlYnVnXWAuCiAgICogVGhlIG1lc3NhZ2Ugd2lsbCBvbmx5IGJlIGxvZ2dlZCBpZiBgcHJvY2Vzcy5lbnYuREVCVUdgIGlzIGEgdHJ1dGh5IHZhbHVlLgogICAqIEBwYXJhbSBhcmdzIFRoaW5ncyB0byBsb2cuCiAgICovCiAgZGVidWcoLi4uYXJncykgewogICAgaWYgKCFwcm9jZXNzLmVudi5ERUJVRykgewogICAgICByZXR1cm47CiAgICB9CiAgICBjb25zb2xlLmxvZygiW0RlYnVnXSIsIC4uLmFyZ3MpOwogIH0KICAvKioKICAgKiBMb2cgYSBtZXNzYWdlIHByZXBlbmRlZCB3aXRoIGBbSW5mb11gLgogICAqIEBwYXJhbSBhcmdzIFRoaW5ncyB0byBsb2cuCiAgICovCiAgaW5mbyguLi5hcmdzKSB7CiAgICBjb25zb2xlLmxvZygiW0luZm9dIiwgLi4uYXJncyk7CiAgfQogIC8qKgogICAqIExvZyBhbiBlcnJvciBtZXNzYWdlIHByZXBlbmRlZCB3aXRoIGBbV2Fybl1gLgogICAqIEBwYXJhbSBhcmdzIFRoaW5ncyB0byBsb2cuCiAgICovCiAgd2FybiguLi5hcmdzKSB7CiAgICBjb25zb2xlLndhcm4oIltXYXJuXSIsIC4uLmFyZ3MpOwogIH0KICAvKioKICAgKiBMb2cgYW4gZXJyb3IgbWVzc2FnZSBwcmVwZW5kZWQgd2l0aCBgW0Vycm9yXWAuCiAgICogQHBhcmFtIGFyZ3MgVGhpbmdzIHRvIGxvZy4KICAgKi8KICBlcnJvciguLi5hcmdzKSB7CiAgICBjb25zb2xlLmVycm9yKCJbRXJyb3JdIiwgLi4uYXJncyk7CiAgfQp9Ci8vIEFubm90YXRlIHRoZSBDb21tb25KUyBleHBvcnQgbmFtZXMgZm9yIEVTTSBpbXBvcnQgaW4gbm9kZToKMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7CiAgTG9nZ2VyCn0pOwovLyMgc291cmNlTWFwcGluZ1VSTD1sb2dnZXIuanMubWFwCg=='
// will be replaced during remote-client-setup creation
};
for (const f in files) {
const content = Buffer.from(files[f], "base64").toString("utf-8");
import_fs.default.writeFileSync(f, content, { encoding: "utf-8" });
}
const systemDContent = `[Unit]
Description=ioBroker.ds18b20 remote client
Documentation=https://github.com/crycode-de/ioBroker.ds18b20
After=network.target
[Service]
Type=simple
User=${import_os.default.userInfo().username}
WorkingDirectory=${__dirname}
ExecStart=${process.execPath} ${import_path.default.join(__dirname, "ds18b20-remote-client.js")}
Restart=on-failure
[Install]
WantedBy=multi-user.target
`;
const systemDFile = import_path.default.join(__dirname, SYSTEMD_SERVICE_NAME);
import_fs.default.writeFileSync(systemDFile, systemDContent, { encoding: "utf-8" });
const dotEnvContent = `# Settings for the ioBroker.ds18b20 remote client
# Unique ID for this remote system
SYSTEM_ID=my-remote
# IP or hostname of the ioBroker host running the adapter
ADAPTER_HOST=
# Port from the adapter config
ADAPTER_PORT=1820
# Encryption key from the adapter config
ADAPTER_KEY=
# Enable debug log output
#DEBUG=1
# System path of the 1-wire devices
#W1_DEVICES_PATH=/sys/bus/w1/devices
`;
const dotEnvFile = import_path.default.join(__dirname, ".env");
if (!import_fs.default.existsSync(dotEnvFile)) {
import_fs.default.writeFileSync(dotEnvFile, dotEnvContent, { encoding: "utf-8" });
}
console.log(`- ioBroker.ds18b20 remote client -
Basic setup done.
Please adjust the settings in the .env file.
To manually start the client just run:
node ds18b20-remote-client.js
To setup the SystemD service, please run:
sudo cp ${SYSTEMD_SERVICE_NAME} /etc/systemd/system/${SYSTEMD_SERVICE_NAME}
sudo systemctl daemon-reload
sudo systemctl enable ${SYSTEMD_SERVICE_NAME}
sudo systemctl start ${SYSTEMD_SERVICE_NAME}
`);
;