{"id":22990131,"url":"https://github.com/stas-dovgodko/openhab-proxy-pattern","last_synced_at":"2025-04-02T12:17:40.634Z","repository":{"id":57315405,"uuid":"446162774","full_name":"stas-dovgodko/openhab-proxy-pattern","owner":"stas-dovgodko","description":null,"archived":false,"fork":false,"pushed_at":"2023-07-27T10:15:36.000Z","size":11,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-04-29T21:11:49.755Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stas-dovgodko.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-01-09T17:53:41.000Z","updated_at":"2023-02-24T08:58:44.000Z","dependencies_parsed_at":"2024-09-24T15:12:23.838Z","dependency_job_id":"054d05df-a004-47cb-b957-260c2bf97b04","html_url":"https://github.com/stas-dovgodko/openhab-proxy-pattern","commit_stats":{"total_commits":11,"total_committers":2,"mean_commits":5.5,"dds":"0.18181818181818177","last_synced_commit":"cb4c019c375ac42ee35da4fb2b7e4775d73a8e7c"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stas-dovgodko%2Fopenhab-proxy-pattern","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stas-dovgodko%2Fopenhab-proxy-pattern/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stas-dovgodko%2Fopenhab-proxy-pattern/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stas-dovgodko%2Fopenhab-proxy-pattern/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stas-dovgodko","download_url":"https://codeload.github.com/stas-dovgodko/openhab-proxy-pattern/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246811317,"owners_count":20837753,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-15T04:32:12.734Z","updated_at":"2025-04-02T12:17:40.608Z","avatar_url":"https://github.com/stas-dovgodko.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"JS wrapper to implement common used Proxy Item pattern\r\n\r\n[Pattern explanation](https://community.openhab.org/t/design-pattern-proxy-item/15991)\r\n\r\n# Usage examples\r\n\r\n```js\r\nlet proxy = require('openhab-proxy-pattern');\r\n\r\n/*\r\nproxy.bind(proxy_item_name, hardware_item_name).update([callback]).forward([callback]);\r\n*/\r\n\r\n// one direction proxy\r\nproxy.bind('Equipment_WF_OutTemperature', 'SmartMAC_D105_1_T2').update();\r\n\r\n// bi-directional proxy\r\nproxy.bind(\"GF_Toilet_MirrorLight\", \"Shelly_25R_3_1Output\")\r\n    .forward()\r\n    .update();\r\n\r\n// proxy with custom values\r\nproxy.bind('Equipment_ElectricityInverterBattery_Voltage', 'PZEM_1_Voltage')\r\n    .update(function(value) {\r\n\r\n        if (typeof value == 'string') {\r\n            const v = parseInt(value) / 100;\r\n            return `${v} V`;\r\n        } else {\r\n            return undefined;\r\n        }\r\n    });\r\n\r\n// wide-options proxy\r\nconst v = function(value) {\r\n    if (typeof value == 'string') {\r\n        const v = parseInt(value);\r\n        return `${v} V`;\r\n    } else return undefined;\r\n};\r\n\r\n['A', 'B', 'C'].forEach(function(phase) {\r\n    proxy.bind(`Equipment_ElectricityHomeV${phase}`, `Shelly_EM3_2_${phase}Voltage`, 15)\r\n      .update(v, 15); // 15 seconds gap between updates. For too-fast hardware\r\n});\r\n```\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstas-dovgodko%2Fopenhab-proxy-pattern","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstas-dovgodko%2Fopenhab-proxy-pattern","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstas-dovgodko%2Fopenhab-proxy-pattern/lists"}