[{"docs":"https://github.com/bpaauwe/udi-dsc-it100-poly/README.md","longPoll":"60","executable":"dsc-it100.py","readme":"null","status":"active","oauth":"null","url":"https://github.com/BME-nodeservers/udi-dsc-it100-poly","name":"DSC-IT100","language":"python3","developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":"0","profile_version":"1.0.0","logLevel":"INFO","ts_added":"1650328178","shortPoll":"5","author":"Bob Paauwe","version":"2.0.1","persist_folder":"null","discover":false,"prem":true,"customParams":"{\n\t\"IP Address\": \"\",\n\t\"Port\": \"\"\n}","nsdata":"null","desc":"Control and status for DSC alarm via IT-100","polisy":true,"changelog":"2.0.1","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"9b331f62-bd58-49cd-bc03-4fa0bfc6f5fc","isPerpetual":true,"version":"2.0.1","branch":"pg3-master","url":"https://github.com/BME-nodeservers/udi-dsc-it100-poly"}],"branch":"pg3-master","eisy":false,"uuid":"07b85d5a-773c-4e62-985a-f0304e5684e7","ts_updated":"1674853953","from_store":"Local"},{"docs":"https://github.com/BME-nodeservers/docs/blob/master/udi-roku-poly.md","longPoll":"600","executable":"roku.py","readme":"# Roku media devices\n\nThe node server will automatically start, scan your network for Roku\ndevices, and then add a node to the ISY for each Roku found.  This process\ncan take 10-15 seconds.\n\nOnce running, it will poll each device at the shortPoll interval to \ndetermine what application is running on that device.  This keeps the\ndevice status in the ISY up-to-date.  The node server will also re-scan\nthe network every longPoll interval looking for new devices and for \nchanges in the applications installed on each device. \n\nThe ROKU firmware has a bug where it fails to update it's reported IP address\nif the IP address changes while it is running (I.E. set via dhcp). When this \nhappens, the node server will attempt to connect using this wrong IP address\nand fail.  Re-booting the Roku device resolves the issue.\n\n### Node substitution variables\n * sys.node.[address].ST   - Roku device status (True (active), False inactive)\n * sys.node.[address].GV1  - Current running application name\n * sys.node.[address].GV2  - Current running application ID\n\n\n### Node Settings\nThe settings for this node are:\n\n#### Short Poll\n   * How often to poll each device for status (default 5 seconds)\n#### Long Poll\n   * How often to scan the network for device changes (default 60 seconds)\n","status":"active","name":"Roku","language":"python3","developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":"0","profile_version":"1.0.0","logLevel":"DEBUG","ts_added":"1669919703","shortPoll":"5","author":"Bob Paauwe","version":"2.0.2","discover":false,"prem":true,"desc":"Control Roku media devices.","authorize":false,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"day","price":0,"recurring":"30","edition":"Free","id":"6a33be0c-ea84-43ab-b166-5f5645bbcd87","isTrial":true,"version":"2.0.3","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/beta/udi-roku-poly.zip"},{"price":10,"edition":"Standard","id":"547e0150-450b-40c2-9080-65f72323efad","isPerpetual":true,"version":"2.0.3","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/beta/udi-roku-poly.zip"}],"uuid":"5f841577-ba3d-4e02-bc71-444254cda22f","ts_updated":"1670027935","from_store":"Production"},{"docs":"https://github.com/UniversalDevicesInc/udi-poly-template-python","longPoll":"240","executable":"template-poly.py","status":"active","url":"https://github.com/UniversalDevicesInc/udi-poly-template-python","name":"PythonTemplate","language":"python3","developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":"0","profile_version":"3.0.0","logLevel":"DEBUG","ts_added":"1646866335","shortPoll":"120","author":"Bob Paauwe","version":"1.0.0","discover":"0","nsdata":"{\n  \"user\": \"\",\n  \"password\": \"my secret password\",\n  \"type\": \"TheType\",\n  \"host\": \"host_or_IP\",\n  \"port\": \"port_number\"\n}","desc":"A possible template for developing new node servers for PG3.  See also Example1, Example2, Example3, and Example4 for other example node servers.   This template tries to demonstrate many features, not all of them will be applicable for your node server.","authorize":"0","install":"install.sh","purchaseOptions":[{"price":0,"isPerpetual":true}],"branch":"master","uuid":"22b12d3c-547b-4dba-9804-97fd823566fc","ts_updated":"1646866538"},{"docs":"https://github.com/sjpbailey/udi-aqualinkd-pool-controller-V3/blob/main/README.md","longPoll":"600","executable":"nodejs-pool.py","status":"active","name":"AqualinkD","language":"python3","devUser":"admin","isyAccess":false,"developer":"sjpbailey@comcast.net","ip_added":"98.41.236.33","version_na":"null","nsInfoPoll":"0","profile_version":"1.0.0","logLevel":"INFO","ts_added":"1710379344","shortPoll":"60","author":"Bailey","discover":false,"prem":true,"customParams":"{\n\t\"api_url\": \"http://localhost:100\"\n}","desc":"AqualinkD for testing with one customer to a RPi he configured that replaces the Web API with a Local API","polisy":true,"license":"https://github.com/sjpbailey/udi-aqualinkd-pool-controller-V3/blob/main/LICENSE","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"8b721136-3094-4e7c-8570-dba2f6259278","isPerpetual":true,"version":"1.0.0","branch":"main","url":"https://github.com/sjpbailey/udi-aqualinkd-pool-controller-V3"}],"eisy":true,"uuid":"3bc515dd-c03e-429f-964d-54c8b26d17ef","devMode":false,"ts_updated":"1711216984","from_store":"Beta"},{"docs":"http://github.com/BME-nodeservers/docs/blob/master/udi-davis_v2-poly.md","longPoll":"600","executable":"davis.py","readme":"# Davis Weatherlink V2 polyglot\n\n(c) 2023 Robert Paauwe\n\nThis node server is intended to support [Davis Weather Stations](http://www.davisinstruments.com/).  It uses the Davis API version 2 to access your station(s) data.  To use this you must have a WeatherLink account.  [API documentation](https://weatherlink.github.io/v2-api/). \n\nIn order to access a station via the WeatherLink v2 API the station must meet one of the following criteria:\n<ol>\n<li>You own the station under your WeatherLink account.\n<li>You don’t own the station but it was shared to your WeatherLink account. If the station was shared as a Basic level share then the share must have been made by the station owner.\n<li>You don’t own the station but it is a publicly visible station on WeatherLink.com and you purchased a Pro or Pro+ upgrade and applied it to that station to give yourself increased access to the station’s data.\n</ol>\n\n<b>NOTE that this is different from the Davis Weather 2.x.x  node server which uses the older WeatherLink API version 1 which only supports a couple of different station types.</b>","status":"active","name":"Davis_V2","language":"python3","devUser":"null","isyAccess":false,"developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","version_na":"null","nsInfoPoll":"0","profile_version":"1.0.0","logLevel":"INFO","ts_added":"1693426268","shortPoll":"60","author":"Bob Paauwe","discover":false,"prem":true,"customParams":"{\n\"API Token\": \"\",\n\"API Secret\": \"\",\n\"Units\": \"us\"\n}","desc":"Node server for Davis weather stations using the WeatherLink v2 API ","polisy":true,"license":"http://github.com/BME-nodeservers/docs/blob/master/LICENSE","changelog":"3.0.2 - 10/03/2023 - bug fixes\n3.0.0 - 08/30/2023 -- Initial beta release","authorize":false,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"day","price":0,"recurring":45,"edition":"Standard","id":"f17c2ed7-5d0d-4732-9d44-d60c4aafb0a3","isTrial":true,"version":"3.0.2","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/beta/udi-davis_v2-poly.zip"},{"price":25,"edition":"Standard","id":"b6c1e150-fc4c-4ccb-b2d9-d6e9ad9e3f06","isPerpetual":true,"version":"3.0.2","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/beta/udi-davis_v2-poly.zip"}],"eisy":true,"devPath":"null","uuid":"20a20bc9-eba8-4a04-9cca-ebb0005f6118","devMode":false,"ts_updated":"1696349193","from_store":"Local"},{"docs":"https://github.com/n2uns/Audrino_Mqtt/blob/Audrino_Mqtt/README.md","longPoll":"600","executable":"main.py","status":"active","name":"Arduino_Mqtt","language":"python3","isyAccess":false,"developer":"kevin@kevin-graff.com","ip_added":"207.66.79.48","version_na":"null","nsInfoPoll":"0","profile_version":"1.0.2","logLevel":"INFO","ts_added":"1696974600","shortPoll":"60","author":"Kevin Graff","discover":false,"prem":true,"customParams":"   {\n      \"mqtt_server\": \"192.168.18.185\",\n      \"mqtt_port\": 1884,\n      \"mqtt_user\": \"admin\",\n      \"mqtt_password\": \"password\",\n      \"mqtt_topic\": \"yourdevice\"\n    }","desc":"to add an Arduino project to your Polisy or Eisy was tested and developed with PG3x and on a Polisy","polisy":true,"license":"https://github.com/n2uns/Audrino_Mqtt/blob/Audrino_Mqtt/LICENSE","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"944a34db-fa56-48c8-b99e-c61886055512","isPerpetual":true,"version":"1.0.2","branch":"","url":"https://github.com/n2uns/Audrino_Mqtt"}],"eisy":true,"uuid":"314d47b8-996f-487b-9db4-0bf494087d44","devMode":false,"ts_updated":"1696975323","from_store":"Local"},{"docs":"https://github.com/UniversalDevicesInc/udi-example1-poly/blob/master/README.md","longPoll":"600","executable":"count.py","readme":"","status":"active","oauth":"","url":"https://github.com/UniversalDevicesInc/udi-example1-poly","devd":"null","name":"Example-1","language":"python3","developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":"0","profile_version":"1.0.0","logLevel":"DEBUG","ts_added":"1640720076","shortPoll":"60","author":"Bob paauwe","version":"1.0.1","persist_folder":"null","discover":true,"prem":true,"customParams":"{}","nsdata":"{key: This is a key of some sort, secret: 595959595}","desc":"Example node server that simply increments a count. This is demonstrating how to create a simple node server that doesn't have a controller node and creates only a device node.","polisy":true,"license":"https://github.com/UniversalDevicesInc/udi-example1-poly/blob/master/LICENSE","changelog":"","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"f09b6f33-1ed2-4f9c-9b44-0220c1a0c631","isPerpetual":true,"version":"1.0.1","branch":"master","url":"https://github.com/UniversalDevicesInc/udi-example1-poly"}],"branch":"master","eisy":true,"uuid":"40a30560-ae75-4f08-9656-0820b663a9ee","ts_updated":"1684708208"},{"docs":"https://github.com/firstone/av-remote-poly/blob/main/README.md","longPoll":"60","executable":"polyremote.py","status":"active","devd":"null","name":"AVRemote","language":"python3","devUser":"null","isyAccess":false,"developer":"firstone@erissoft.com","ip_added":"100.37.48.27","nsInfoPoll":"0","profile_version":"1.0.3","logLevel":"DEBUG","ts_added":"1675118546","shortPoll":"15","author":"FirstOne","discover":false,"fileUpload":false,"prem":true,"desc":"Universal A/V remote control. Supported: nVidia Shield, LG TV, Tivo, Denon AVR, Onkyo AVR, ESP8266 IR, Chromecast.","polisy":true,"license":"https://github.com/firstone/av-remote-poly/blob/main/LICENSE","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"7f69748f-32f3-4d22-a12a-be7b1adaf4ca","isPerpetual":true,"version":"2.0.18","branch":"dev","url":"https://github.com/firstone/av-remote-poly.git"}],"eisy":true,"devPath":"null","uuid":"da84bb07-3e3e-481b-8473-39fb8116bfbe","devMode":false,"ts_updated":"1753029510","from_store":"Local"},{"docs":"https://github.com/UniversalDevicesInc-PG3/Virtual/blob/master/README.md","longPoll":"30","executable":"udi-Virtual-pg3.py","status":"active","name":"Virtual","language":"python3","isyAccess":true,"developer":"stephenearljenkins@me.com","ip_added":"104.28.103.65","version_na":"null","nsInfoPoll":"0","profile_version":"3.1.26","logLevel":"INFO","ts_added":"1715444251","shortPoll":"3","author":"headrom","persist_folder":"/usr/home/admin/polyglot/nodeservers/udi-Virtual.pg3","discover":true,"fileUpload":true,"prem":true,"desc":"Create Virtual Devices for use in scenes and programs","polisy":true,"license":"https://github.com/UniversalDevicesInc-PG3/Virtual/blob/master/LICENSE","changelog":"VERSION = \"3.1.26\"\n\"\"\"\n3.1.26\nDONE add timeout to ratgdo requests and sse client to prevent hanging\nDONE chg DFOF to DOF for Toggle & onDelay\n\n3.1.25\nDONE add onOnly device\nDONE update generic project files\nDONE Controller comments, refactor checkParams\nDONE change hints for temperature devices\nDONE testing added\n\n3.1.24\nDONE configuration based optional overide initial default\n\n3.1.23\nDONE add onDelay, offDelay, toggle switch, update documentation\nDONE magic number scrub\n\n3.1.22\nDONE generic/dimmer static/dynamic behaviour\n\n","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"671a0b64-3de5-434d-a20e-350e38ee5a37","isPerpetual":true,"version":"3.1.26","branch":"master","url":"https://github.com/UniversalDevicesInc-PG3/Virtual.git"}],"eisy":true,"uuid":"fe657645-685f-4977-9d45-03545771ae17","devMode":false,"ts_updated":"1766533905","from_store":"Production"},{"longPoll":"600","docs":"https://github.com/Goose66/NSDocs/blob/main/tasmota-pg3.md","executable":"main.py","readme":"A Node Server for Polyglot v3 (PG3) that communicates with Tasmota devices on the local network over MQTT to allow IoX to access and control the devices.\n\nClick \"More Info\" below for installation instructions and release notes.","status":"active","name":"Tasmota-Alpha","language":"python3","developer":"kingwrandy@gmail.com","ip_added":"75.131.193.229","nsInfoPoll":"0","profile_version":"3.0.0","logLevel":"INFO","ts_added":"1696596165","shortPoll":"60","author":"W. Randy King (Goose66)","discover":true,"prem":true,"desc":"Allows IoX to access to and control of Martin Jerry and other Tasmota switches and modules.","polisy":true,"license":"https://github.com/Goose66/NSDocs/blob/main/LICENSE.md","changelog":"3.0.1 - Initial Release (2023-10-10)\n- Supports:\n    * Martin Jerry (MJ) MJ-S01 Switch\n    * MJ Plug V by MJ (Plug-in  Module)\n    * MJ US-SD-TC01 (Dimmer)\n    * MJ US-FC-01 (Fan Controller)\n    * MJ US-SS01 Switch\n    * MJ US-SS02 Swtich (Humidity Switch)\n    * Shelly 1 (Switch Module)","authorize":false,"purchaseOptions":[{"price":0,"edition":"Free","id":"04a3da87-39a1-45c9-8cc2-e67caa1e355e","isPerpetual":true,"version":"0.0.3","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/beta/tasmota-pg3-0.0.3.zip"}],"install":"install.sh","eisy":true,"uuid":"0ed822e2-3abc-4b2a-a543-71c22d9d4cbd","ts_updated":"1696596165","from_store":"Beta"},{"docs":"http://www.bobsplace.com","longPoll":"600","executable":"atest.py","readme":"ATest is a node server designed to test the various purchase options and test the overall look and feel of the new node server info screen.\n\nList of node values\nST - node server status\nGV1 - Something to do with state\nGV2 - Another node value\nCLITEMP - temperature of the thing\n\nThis is some random readme type text, bla, bla, bla","status":"active","oauth":"null","url":"https://pg3store.isy.io/v2/nodeservers/local/udi-atest-poly.zip","devd":"null","name":"ATest","language":"python3","devUser":"null","isyAccess":false,"developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","version_na":"1.0.0","nsInfoPoll":"0","profile_version":"1.0.0","logLevel":"CRITICAL","ts_added":"1655310000","shortPoll":"60","author":"Robert Paauwe","version":"1.0.0","persist_folder":"null","discover":false,"prem":true,"customParams":"null","nsdata":"null","desc":"we don''t need a description\n\nBut just in case, this is a node server being used to test out the various new purchase options. It is not a real node server so please don't attempt to buy it!","polisy":true,"license":"http://www.bobsplace.com","changelog":"2.0.0   6/1/2022\n - added feature 1\n - added feature 2\n - increase price\n1.0.0  5/20/2022\n - Initial release","authorize":false,"install":"install.sh","purchaseOptions":[{"isSubscription":true,"recurringPeriod":"month","price":"12.00","recurring":1,"edition":"Standard","id":"d894ce19-f586-4431-8d10-da9c1896bd20","version":"1.0.0","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/local/udi-atest-poly.zip"},{"price":"$199","edition":"Standard","id":"e5c916a9-6d63-4a49-b9cd-abe0ce0dd066","isPerpetual":true,"version":"1.0.0","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/local/udi-atest-poly.zip"}],"branch":"master","eisy":true,"devPath":"null","uuid":"270cc44e-0ef0-4b20-8ada-237c888e5c4e","devMode":false,"ts_updated":"1714000701","from_store":"Local"},{"docs":"https://github.com/AZTurtle/GoveeNS","longPoll":"600","executable":"govee.py","status":"active","name":"GoveeNS","language":"python3","devUser":"null","isyAccess":false,"developer":"jamesbennett@azturtle.com","ip_added":"70.176.155.96","version_na":"null","nsInfoPoll":"0","profile_version":"0.1.2","logLevel":"CRITICAL","ts_added":"1692249242","shortPoll":"60","author":"AZTurtle","discover":false,"fileUpload":false,"prem":true,"customParams":"{\"API Key\":\"\"}","desc":"A node server for integration with Govee devices","polisy":false,"license":"https://raw.githubusercontent.com/UniversalDevicesInc/pg3-python-interface/master/LICENSE","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"c92127b6-8e59-4fd6-9648-4bc14a00e1ae","isPerpetual":true,"version":"0.1.2","branch":"master","url":"https://github.com/AZTurtle/GoveeNS"}],"eisy":true,"devPath":"null","uuid":"a8f3084f-169c-4042-9317-e97955c1f3ae","devMode":false,"ts_updated":"1746923174","from_store":"Local"},{"docs":"https://github.com/BME-nodeservers/docs/udi-roomba-poly.md","longPoll":"60","executable":"roomba-poly.py","readme":"","status":"active","oauth":"null","url":"https://github.com/BME-nodeservers/udi-roomba-poly","name":"Roomba","language":"python3","developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":"0","profile_version":"1.0.0","logLevel":"INFO","ts_added":"1646691356","shortPoll":"5","author":"Bob Paauwe","version":"2.0.2","persist_folder":"null","discover":true,"prem":true,"customParams":"","nsdata":"","desc":"Roomba node server for Polyglot v3.  Provides status and control of one or more Roomba devices.","changelog":"","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"isPerpetual":true}],"branch":"master","uuid":"4e9ec7a1-1d79-4a17-9c66-172df4733ed5","ts_updated":"1650479063"},{"longPoll":"120","docs":"https://github.com/ve7gel/Docs/blob/main/Dyson/README.md","executable":"dyson-poly.py","readme":"I only have a TP07 DysonPureCool so haven't tested it with any other models.  There\nis currently no support for any heat models.  If you are interested in adding support and are willing to test, PM me on \nthe UDI Forum (@glarsen). \n\nThis nodeserver uses the libdyson Python library by Xiaonan Shen. \n\nWARNING:  Dyson could change their API at any time \nrendering this nodeserver inoperable.  I can offer no assurances that this can be fixed.\n\nDyson PH02 PureHumidifyCool support is basic.  Humidity settings are not yet implemented.\nVersion 5.0.0 is in BETA.  Please report any issues on the forum.\n\nConfiguration will require downloading https://github.com/shenxn/libdyson/blob/main/get_devices.py from libdyson, and \nthen running it \"python3 get_devices.py\".  Supply your account email address and password, then enter the token that you\nreceive at the email address registered on your account.  The program will the supply the credential.  Copy and save it.\nYou can do this by \"ssh\"ing to your Polisy or Eisy.  The libdyson library then is cloned from github into your admin\ndirectory.  Change into the library directory and run the command above.\n\nYou will likely need to be logged out of your phone app, or any other web sites for this to work, otherwise you will most\nlikely get and \"Authorization Error\". Once you have the credential, you can then log back in to the app.","status":"active","name":"DysonFan","language":"python3","devUser":"admin","isyAccess":false,"developer":"gordon@the-larsens.ca","ip_added":"24.68.224.87","nsInfoPoll":"0","profile_version":"5.0.0","logLevel":"INFO","ts_added":"1763245354","shortPoll":"30","author":"Gordon Larsen","discover":false,"fileUpload":false,"prem":true,"customParams":"{\n          \"Host\": \"\",\n          \"Serial\": \"\",\n          \"Credential\": \"\",\n          \"Type\": \"\",\n          \"Units\": \"C\"\n        }","desc":"UDI Poly for Dyson TP/PH series fans","polisy":true,"license":"https://github.com/ve7gel/Docs/blob/main/LICENSE.md","changelog":"###Version History:\n5.0.0 Beta November 10, 2025\n- modify code to only use drivers actually available with specific models\n- convert VOC and NOC display values to more meaningful ratings (as described by the Dyson App) instead of raw numbers\n- significant changes to profiles, which will have impact on the way the status/commands work in IoX programs.\n\n4.2.0 October 31, 2025\n- update profiles for eisy/udm specifics\n\n4.0.2 March 20, 2023\n- update requirements for latest udi_interface\n\n4.0.1 January 25, 2023\n- move version info from server.json\n\n4.0.0 January 19, 2023\n- release - add support for PureCoolHumidity series 358, 358E, 358K.  Thanks to UDI Forum member jwagner10 for his assistance in testing the code on the 358k\n\n3.3.1, 3.3.2 April 29, 2022\n- add BETA support for TP02 (model 475)\n\n3.2.1 April 21, 2022\n- add some config error trapping and messages at startup\n\n3.2.0 March 10, 2022\n- change uom for ppm to ug/m3 to display ppm correctly in UI\n- add humidity settings for PH02\n\n3.1.5, 3.1.6 February 28, 2022\n- bug fixes for PH02\n\n3.1.4 February 28, 2022\n- fix fan status display. Change how auto mode and fan speed display in UI\n\n3.1.2, 3.1.3 February 26, 2022\n- added basic support for PureCoolHumidify\n- fixed F/C units display\n\n3.1.1 February 24, 2022\n- working on support for PureCoolHumidify\n\n3.1.0 February 21, 2022\n- add support for oscillation angle control\n\n3.0.6 February 16, 2022\n- code formatting and fix won't install from store\n\n3.0.5 January 15, 2022\n- add support for continuous monitoring enable/disable\n\n3.0.4 January 12, 2022\n- Minor code changes to fix first startup after configuration\n\n3.0.3 January 12, 2022\n- Update profile to correct units for particulates, VOCs and NOx\n\n3.0.2 January 11, 2022\n- Add support for airflow direction control\n\n3.0.1 January 11, 2022\n- Add support for F or C temperature display.  Library seems to always report temperature in degress Kelvin,\n  so conversion should always be same regardless of model or country.\n- Add support for switching power off and on\n\n3.0.0 January 10, 2022\n- Initial release for PG3","authorize":false,"purchaseOptions":[{"recurringPeriod":"day","price":0,"recurring":14,"edition":"Free","id":"338d2797-62e5-4cb8-943d-af9cf623f637","isTrial":true,"version":"5.0.0","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/beta/udi-poly-dysonfan-5-0-0.zip"}],"install":"install.sh","eisy":true,"uuid":"3847bb4a-cda5-4992-bc3b-9327efba8512","devMode":false,"ts_updated":"1763245354","from_store":"Beta"},{"docs":"POLYGLOT_CONFIG.md","longPoll":"600","executable":"wc.py","status":"active","name":"WebControl8","language":"python3","devUser":"admin","isyAccess":false,"developer":"oztronix@comcast.net","ip_added":"76.20.55.237","version_na":"null","nsInfoPoll":"0","profile_version":"1.0.21","logLevel":"INFO","ts_added":"1731505124","shortPoll":"10","author":"TJF1960","discover":false,"fileUpload":false,"prem":true,"desc":"This plugin should work with all WebControl 8 firmware versions","polisy":true,"license":"LICENSE","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"8e221b7b-2347-4899-820b-68638913c928","isPerpetual":true,"version":"1.0.21","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/beta/webcontrol8.zip"}],"eisy":true,"uuid":"936f1ef3-a3fe-493b-921a-cd85ca49facc","devMode":false,"ts_updated":"1777224958","from_store":"Beta"},{"docs":"https://goose66.github.io/nsdocs/nestsdm-pg3.html","longPoll":"600","executable":"main.py","readme":"A Plugin for Polyglot v3 (PG3x) that interfaces with the Google SDM API to allow IoX to access and control Nest thermostats, doorbells, and cameras.\n\nClick \"More Info\" below for installation instructions and release notes.","status":"active","oauth":"{\n  \"name\": \"UD Nest SDM Plugin\",\n  \"client_id\": \"979240727326-br8jhduhm30bthhur165n4dtlioi4g2r.apps.googleusercontent.com\",\n  \"client_secret\": \"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\",\n  \"auth_endpoint\": \"https://nestservices.google.com/partnerconnections/b9f3a547-a728-4b5a-90eb-900cdb479379/auth\",\n  \"token_endpoint\": \"https://www.googleapis.com/oauth2/v4/token\",\n  \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n  \"scope\": \"https://www.googleapis.com/auth/sdm.service https://www.googleapis.com/auth/pubsub\",\n  \"addRedirect\": true,\n  \"parameters\": {\n    \"access_type\": \"offline\",\n    \"prompt\": \"consent\"\n  }\n}","name":"NestSDM","language":"python3","devUser":"admin","isyAccess":false,"developer":"kingwrandy@gmail.com","ip_added":"75.131.193.229","version_na":"null","nsInfoPoll":"0","profile_version":"3.0.0","logLevel":"DEBUG","ts_added":"1708053967","shortPoll":"60","author":"W. Randy King (Goose66)","discover":true,"fileUpload":false,"prem":true,"customParams":"{\n  \"projectid\": \"<Device Access Project ID>\",\n  \"gcpprojectid\": \"<Google Cloud Project ID>\",\n  \"oauthclientid\": \"<OAuth Client ID>\",\n  \"oauthclientsecret\": \"<OAuth Client Secret>\",\n  \"oauthendpoint\": \"<OAuth Authorization Endpoint>\"\n}","desc":"Allows IoX to access and control Nest devices through the Google SDM API.","polisy":true,"license":"https://goose66.github.io/nsdocs/license.html","changelog":"0.2.5 - Ready for UD Device Access Project (2024-08-07)\n- implement support for UD's Google Device Access project\n- added node hierarchy with structure at the top\n- added both state values and commands for motion/person/sound detection for all cameras\n\n0.1.4 - Multiple fixes (2024-04-25)\n- implemented a thread-safe and load-order safe OAuth module\n- added better node name generation from room and device type\n- deletes the events subscrition on plugin stop\n- fixed clearing \"Fan Only\" HCS when fan timer turns off\n- changed each node individually updating its own state on create to single updateAll on next shortpoll\n- fixed error from non-\"updateable\" events from legacy Nest devices\n\n0.1.3 - Beta Testing Release (2024-04-07)\n- Added configuration parameters for custom OAuth configuration for user Sandbox Device Access projects\n- Implemented new udi_interface OAuth module\n- improved error reporting and notifications, especially around OAuth configuration and authentication\n\n0.0.2 - Testing Release (2024-03-19)\n- changeover to UD's production Device Access project\n- add fixes and new features\n\n0.0.1 - Initial Release (2024-01-14)\n","authorize":true,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"9de2abe2-9c50-4968-886d-81a967a4593b","isPerpetual":true,"version":"0.2.5","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/beta/nestsdm-pg3-0.2.5.zip"}],"eisy":true,"uuid":"f955d4f4-07be-4747-bfd4-2692fd79de9b","devMode":false,"ts_updated":"1723207370","from_store":"Beta"},{"longPoll":"30","docs":"https://github.com/UniversalDevicesInc-PG3/udi-sonos-poly/blob/master/README.md","executable":"sonos-poly.py","status":"active","name":"Sonos","language":"python3","devUser":"admin","isyAccess":false,"developer":"bpaauwe@bobsplace.com","ip_added":"73.66.118.128","nsInfoPoll":"0","profile_version":"1.0.0","logLevel":"INFO","ts_added":"1767646228","shortPoll":"5","author":"Bob Paauwe","discover":true,"fileUpload":false,"prem":true,"desc":"Plug-in for Sonos speakers.  Provides status and control for the individual speakers.","polisy":true,"license":"https://github.com/UniversalDevicesInc-PG3/udi-sonos-poly/blob/master/LICENSE","changelog":"3.1.0 - 01/05/2026\n  - Add support for speaker join/unjoin \n  - Allow specifying which speakers to create nodes for\n\n3.0.2 - 12/08/2023\n  - Fix status updates\n  - Add controller node as parent to all speaker nodes\n  - Add ability to add speakers manually via custom parameters\n  - Add ability to scan additional subnets for speakers.","authorize":false,"purchaseOptions":[{"price":0,"edition":"Free","id":"76ce1981-cc50-4154-bf81-4b56e1ac6409","isPerpetual":true,"version":"3.1.0","branch":"test","url":"https://github.com/UniversalDevicesInc-PG3/udi-sonos-poly"}],"install":"install.sh","eisy":true,"uuid":"21ea3064-d31a-4481-9d96-6c88f24a291c","devMode":false,"ts_updated":"1767646228","from_store":"Beta"},{"docs":"https://github.com/UniversalDevicesInc/udi-example2-poly/blob/master/README.md","longPoll":"600","executable":"count.py","readme":"","status":"active","oauth":"","url":"https://github.com/UniversalDevicesInc/udi-example2-poly","name":"Example-2","language":"python3","developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":"0","profile_version":"1.0.0","logLevel":"DEBUG","ts_added":"1640727035","shortPoll":"60","author":"Bob Paauwe","version":"1.0.0","discover":"","prem":true,"customParams":"","nsdata":"null","desc":"Example node server that simply increments a count. This is demonstrating how to create a simple node server that has only a controller node.","changelog":"","authorize":"","install":"install.sh","purchaseOptions":[{"price":0,"isPerpetual":true}],"branch":"master","uuid":"06829051-1c63-4ee2-a70e-a34b7fbf275c","ts_updated":"1646853899"},{"docs":"https://github.com/Panda88CO/udi-yolink/blob/main/README.md","longPoll":"3600","executable":"udi-YoLink.py","readme":"# udi-yolink\n    Suppport for YoLink devices \n    \n## Yolink Node server\n    Enables yoLink (https://shop.yosmart.com/) devices to be controlled using the ISY\n    Current list of devices supported is as follows:\n    \n    ''THSensor'', ''Thermostat''\n    \n    Code uses MQTT communications\n    ###SHORT POLL sends a heart beat to the ISY - defauls is 60 sec - It will also chech if data was updated since last update - this can happen when a command has a very slow reply from the cloud - the server uses separate threads from sending commands and receiving results \n    \n    ###LONG POLL check the online state of the devices (If a device goes off-line it will not be detected until this is called - for battery operated devices it may take even longer as data appear to be cached in the cloud - battery devices are not querried as part of the LONG POLL) \n    A device will redetected once it is back on-line. \n    Default is 3600 (1 hour).  \n\n    Note if set too often it will affect battery consumption (especially the Manipulator) - if more than 2 hours - token will expire (but a new one should be obtained)\n\n\n## Code\n    Code uses V2 of the yolink API - PAC/UAC authendication - currrently this API only supports a single home (even if APP supports more)\n\n    Coded in Python 3 - MIT license \n\n## Installation\n    Credentials needs to be added to configuration in YoLink node server under PG3.  In YoLink app goto Settings->Account->Advanced Settings -> User Access Credentials and copy UAID and SecretKey (alternaltive path in app is Profile->Advanced Settings -> User Access Credentials )\n    It is possible to get credentials for each home that is defined but the nodes server can only handle one of them currently \n\n    Enter both UAID and SecretKey under configuration in the node in PG#''s browser page (scroll down if you do not see the fields to enter) - then restart - some times it seems to require 2 restarts to fully get all devices synchronized (I have looked but cannot find pattern)\n    Sometimes a reboot of the ISY is required to make the node server show up correctly.  \n     \n\n## Notes \n    One node server can only handle 1 home - you can get credential for each home in the APP by selecting the home and get credentials - multiple credentials can exist at the same time, but the node server can only handle one\n\n    Remaining delay time shown in ISY is estimated - count down is running on node server - not device\n\n    <SpeakerHub> supports up to 10 Test to Speech messages.  You specify the number of messages desired, and then add the text of the message in TTS<n>.  Restart the node server.  After this a restart of the ISY/PoI is needed to transfer the messages to the UI.  The ISY/PoI only reads the file containg the messages during startup \n\n    In configuraiton TEMP_UNIT can be used to set temperature until to C, F or K\n\n    Schedules are not supported yet (you can use ISY for the same and the YoLink APP can beused to set schedules)  - I did not manage to get API working with schdules yet \n    ","status":"active","oauth":"{\"UAID\":\"\",\"SECRET_KEY\":\"\",\"TEMP_UNIT\":\"C\",\"WATER_UNIT\":\"Liters\"}","name":"YoLinkThermost","language":"python3","devUser":"admin","isyAccess":false,"developer":"christian.olgaard@gmail.com","ip_added":"98.47.168.86","version_na":"null","nsInfoPoll":"0","profile_version":"1.8.9","logLevel":"DEBUG","ts_added":"1772821082","shortPoll":"600","author":"Panda88","discover":false,"fileUpload":false,"prem":true,"customParams":"{\"UAID\":\"\",\"SECRET_KEY\":\"\",\"TEMP_UNIT\":\"C\",\"WATER_UNIT\":\"Liters\"}","desc":"Nodeserver to test Yolink Thermostat","polisy":true,"license":"https://github.com/Panda88CO/udi-yolink/blob/main/LICENSE","changelog":"1.8.0 - test release","authorize":false,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"day","price":0,"recurring":30,"edition":"Free","id":"5e38dc46-051a-452b-99dc-6c6f5ac27d33","isTrial":true,"version":"1.8.9","branch":"AI-test3","url":"https://github.com/Panda88CO/udi-yolink"}],"eisy":true,"uuid":"8fff0b67-9120-4596-afde-437a811daa9f","devMode":false,"ts_updated":"1773012380","from_store":"Local"},{"docs":"http://github.com/BME-nodeservers/udi-lutronra2-poly/blob/master/README.md","longPoll":"900","executable":"st-radiora2.js","readme":"Currently Supported Components\n- Occupancy Sensors\n    - Ceiling\n    - Wall\n- Room Occupancy\n- Dimmer\n- Switch\n- Visor Control Receiver (VCRX)\n- Pico Remotes\n    - 2 Button\n    - 2 Button Raise/Lower\n    - 3 Button\n    - 3 Button Raise/Lower\n    - 4 Button\n- Tabletop Keypad\n    - 5 Button Tabletop\n    - 10 Button Tabletop\n    - 15 Button Tabletop\n- Wall Keypads\n    - 1RLD\n    - 2RLD\n    - 3BD\n    - 3BRL\n    - 3BSRL\n    - 4S\n    - 5BRL\n    - 5BRLIR\n    - 6BRL\n    - 7B\n","status":"active","oauth":"null","devd":"null","name":"ST-RadioRA2","language":"node","devUser":"admin","isyAccess":false,"developer":"bpaauwe@bobsplace.com","ip_added":"73.48.241.215","version_na":"null","nsInfoPoll":"0","profile_version":"1.0.0","logLevel":"INFO","ts_added":"1715874577","shortPoll":"600","author":"Bob paauwe","persist_folder":"null","discover":false,"prem":true,"customParams":"null","nsdata":"null","desc":"Lutron Radio RA2 integration","polisy":true,"license":"http://github.com/BME-nodeservers/docs/blob/master/LICENSE","changelog":"1.0.6 - fix a javascript syntax error in table top controller nodes\n1.0.5 - fix table top controller all on / all off buttons, SeaTouch -> SeeTouch, fix uom in phantom buttons.\n1.0.4 - push profile files automatically, add version number to log output\n1.0.3 - dynamically add devices, fix bug in seatouch 4s keypad\n1.0.2 - device types need to be numeric for switch statement, not strings.\n1.0.1 - move controller add to customtypeddata handler\n1.0.0 - Initial beta release of PG3 version.","authorize":false,"install":"install.sh","purchaseOptions":[{"price":35,"edition":"Standard","id":"69cce066-1ecf-467e-a954-fcc010100f83","isPerpetual":true,"version":"1.0.6","branch":"master","url":"https://github.com/BME-nodeservers/udi-lutronra2-poly.git"},{"recurringPeriod":"day","price":0,"recurring":30,"edition":"Standard","id":"499edc2f-1a0b-42e9-bee6-22931405e2c7","isTrial":true,"version":"1.0.6","branch":"master","url":"https://github.com/BME-nodeservers/udi-lutronra2-poly.git"}],"eisy":true,"devPath":"null","uuid":"d0f8ec38-3545-4bc9-8333-dd68a4558d49","devMode":false,"ts_updated":"1727208699","from_store":"Local"},{"docs":"https://github.com/UniversalDevicesInc-PG3/udi-poly-notification/blob/master/README.md","longPoll":"600","executable":"notification-poly.py","status":"active","devd":"null","name":"Notification","language":"python3","developer":"jimsearle@gmail.com","ip_added":"70.181.79.77","nsInfoPoll":"0","profile_version":"3.4.4","logLevel":"WARNING","ts_added":"1683579380","shortPoll":"60","author":"Jimbo.Automates","version":"3.4.6","discover":false,"prem":true,"customParams":"{\n  \"acknowledge\": \"\"\n}\n","desc":"Notification Node Server for Pushover and Telegram\n","polisy":true,"license":"TBD","authorize":false,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"month","price":0,"recurring":"1","edition":"Standard","id":"74de37ab-1f56-4d97-8da1-041a27581261","isTrial":true,"version":"3.6.0","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/beta/Notification.zip"},{"price":15,"edition":"Standard","id":"94dd0ef7-6d1d-4c34-81bd-dcb87632c130","isPerpetual":true,"version":"3.6.0","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/beta/Notification.zip"},{"price":"0","edition":"Free","id":"fc6894d6-9c10-416c-aa4b-47f2b6c9f1b9","isPerpetual":true,"version":"3.6.0","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/beta/Notification.zip"}],"eisy":true,"uuid":"132e8dd7-e452-41dd-80f1-6a7da660f00b","ts_updated":"1686282273","from_store":"Production"},{"docs":"https://github.com/BME-nodeservers/udi-example4-poly/README.md","longPoll":"600","executable":"count.py","readme":"","status":"active","oauth":"","url":"http://pg3store.isy.io/v2/nodeservers/beta/udi-example4-poly.zip","name":"Example-4","language":"python3","developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":"0","profile_version":"1.0.0","logLevel":"DEBUG","ts_added":"1642623203","shortPoll":"60","author":"Bob Paauwe","version":"1.0.5","persist_folder":"null","discover":false,"prem":true,"customParams":"","nsdata":"Fake Data","desc":"Example node server.  Demonstrate a node server with a controller node, but all parameter processing happens outside of the controller node class.","changelog":"","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"isPerpetual":true}],"branch":"","uuid":"46efeeea-ee80-4aee-9dbf-a46b1f4921d4","ts_updated":"1656105145"},{"longPoll":"60","docs":"https://github.com/UniversalDevicesInc-PG3/holidays-google-poly/blob/master/README.md","executable":"holidays.py","status":"active","oauth":"{\n  \"name\": \"HolidaysGoogle\",\n  \"client_id\": \"995208052347-va0rd29q2n90ljk34m2puss3uuvtn5o7.apps.googleusercontent.com\",\n  \"client_secret\": \"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\",\n  \"auth_endpoint\": \"https://accounts.google.com/o/oauth2/auth\",\n  \"scope\": \"https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcalendar.readonly&access_type=offline&prompt=consent\",\n  \"parameters\": {\n    \"scope\": \"https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcalendar.readonly\",\n    \"access_type\": \"offline\",\n    \"prompt\": \"consent\"\n  },\n  \"token_endpoint\": \"https://oauth2.googleapis.com/token\",\n  \"cloudlink\": true,\n  \"addRedirect\": true\n}","name":"HolidaysGoogle","language":"python3","devUser":"null","isyAccess":false,"developer":"firstone@erissoft.com","ip_added":"100.33.44.96","version_na":"1.0.3","nsInfoPoll":"0","profile_version":"1.0.0","logLevel":"INFO","ts_added":"1709180867","shortPoll":"15","author":"FirstOne","discover":false,"prem":true,"desc":"Holidays for ISY scheduling using Google Calendar","polisy":true,"license":"https://raw.githubusercontent.com/UniversalDevicesInc-PG3/holidays-google-poly/master/LICENSE","authorize":true,"purchaseOptions":[{"price":0,"edition":"Free","id":"2f4c2f29-b42a-46e5-b35d-d3d2f81fd8bc","isPerpetual":true,"version":"3.0.0","branch":"beta","url":"https://github.com/UniversalDevicesInc-PG3/holidays-google-poly"}],"install":"install.sh","eisy":true,"devPath":"null","uuid":"7b465c70-b7ba-4896-9755-cc0073792ee2","devMode":false,"ts_updated":"1709180867","from_store":"Production"},{"docs":"https://forum.universal-devices.com/forum/323-opensprinkler/","longPoll":"30","executable":"initializer.py","readme":"null","status":"active","oauth":"null","url":"https://github.com/JavierRefuerzo/OpenSprinklerNodeServer.git","devd":"null","name":"OpenSprinkler","language":"python3","isyAccess":false,"developer":"javier@universal-devices.com","ip_added":"75.166.45.142","version_na":"2022.07.01","nsInfoPoll":"0","profile_version":"0.0.1","logLevel":"INFO","ts_added":"1642441201","shortPoll":"5","author":"Javier Refuerzo","version":"2022.07.01","persist_folder":"null","discover":false,"prem":true,"customParams":"{\"password\":\"opendoor\",\"url\":\"http://192.168.X.X\",\"manualRunTimeSeconds\":\"480\"}","nsdata":"None","desc":"OpenSprinkler Controller.","polisy":true,"license":"https://github.com/JavierRefuerzo/iTach_IR_Node_Server/blob/main/LICENSE","changelog":"null","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"08207b71-3d0f-4569-8963-c5a2fa869dd4","isPerpetual":true,"version":"2023.1.9","branch":"legacyTest","url":"https://github.com/JavierRefuerzo/OpenSprinklerNodeServer.git"}],"branch":"legacyTest","eisy":true,"uuid":"40a934b9-be88-456a-b9fc-88b75c128dd0","ts_updated":"1693583078"},{"docs":"https://github.com/UniversalDevicesInc/udi-example3-poly/blob/master/README.md","longPoll":"600","executable":"count.py","readme":"","status":"active","oauth":"","url":"https://github.com/UniversalDevicesInc/udi-example3-poly","name":"Example-3","language":"python3","developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":"0","profile_version":"1.0.0","logLevel":"WARNING","ts_added":"1640727052","shortPoll":"60","author":"Bob Paauwe","version":"1.0.1","discover":"","prem":true,"customParams":"\"customParams\": {\n                \"nodes\": 0,\n                \"multiplier\": 1\n        }","nsdata":"null","desc":"Example node server that creates a user specified number of counter child nodes.","changelog":"","authorize":"","install":"install.sh","purchaseOptions":[{"price":0,"isPerpetual":true}],"branch":"master","uuid":"b38db5ce-659a-41cb-b5ce-36fe7defb6fe","ts_updated":"1646852230"},{"longPoll":"600","docs":"https://developer.isy.io","executable":"casambi.py","status":"active","devd":"{\n\"filename\":\"casambi.conf\"\n}","name":"Casambi_oadr","language":"python3","devUser":"admin","isyAccess":true,"developer":"kyriacou92@gmail.com","ip_added":"76.221.133.84","nsInfoPoll":"0","profile_version":"3.0.0","logLevel":"INFO","ts_added":"1708456734","shortPoll":"60","author":"Casambi","discover":false,"prem":true,"customParams":"{\n\"serial port\":\"\"\n}","desc":"Simple OpenADR interface to Casambi''s USB DR.","polisy":false,"license":"https://developer.isy.io","authorize":false,"purchaseOptions":[{"price":0,"edition":"Free","id":"8e9f0fa8-7509-42a0-84b8-faba62db7d7b","isPerpetual":true,"version":"1.0.1","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/beta/casambi.tar.gz"}],"install":"install.sh","eisy":true,"uuid":"4454caef-47da-4977-80d4-4c6f8cc688a8","devMode":false,"ts_updated":"1708456734","from_store":"Beta"},{"docs":"https://housepanel.net","longPoll":"3600","executable":"poly.py","status":"active","name":"Hubitat","language":"python3","developer":"ken@kenw.com","ip_added":"73.15.159.54","nsInfoPoll":"0","profile_version":"1.0.0","logLevel":"WARNING","ts_added":"1684954166","shortPoll":"300","author":"Ken Washington","discover":true,"prem":true,"customParams":"{\n    \"accessToken\":\"\",\n    \"hubEndpt\":\"\",\n    \"restPort\":\"9100\"\n}\n","desc":"Hubitat Node Server","polisy":true,"license":"https://housepanel.net/EULA.html","changelog":"1.09 adds music tiles and aqara presence types\n1.10 fixes a bug in the mode device type","authorize":false,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"month","price":0,"recurring":1,"edition":"Free","id":"ce43f2ad-9d13-4e32-9be0-776f58f94053","isTrial":true,"version":"1.0.10","branch":"","url":"https://housepanel.net/hubitat-1.0.10.zip"},{"price":20,"edition":"Standard","id":"6ccdd72e-143d-4675-9d05-89b356016eaa","isPerpetual":true,"version":"1.0.10","branch":"","url":"https://housepanel.net/hubitat-1.0.10.zip"}],"eisy":true,"uuid":"78e9e472-217d-46f2-84aa-4719d1d522e8","ts_updated":"1688411234","from_store":"Local"},{"docs":"https://github.com/Goose66/NSDocs/blob/main/tasmota-pg3.md","longPoll":"600","executable":"main.py","readme":"A Node Server for Polyglot v3 (PG3) that communicates with Tasmota devices on the local network over MQTT to allow IoX to access and control the devices.\n\nClick \"More Info\" below for installation instructions and release notes.","status":"active","name":"Tasmota-Tester","language":"python3","developer":"kingwrandy@gmail.com","ip_added":"75.131.193.229","nsInfoPoll":"0","profile_version":"3.0.0","logLevel":"INFO","ts_added":"1696596278","shortPoll":"60","author":"W. Randy King (Goose66)","discover":true,"prem":true,"desc":"Allows IoX to access to and control of Martin Jerry and other Tasmota switches and modules.","polisy":true,"license":"https://github.com/Goose66/NSDocs/blob/main/LICENSE.md","changelog":"3.0.1 - Initial Release (2023-10-10)\n- Supports:\n    * Martin Jerry (MJ) MJ-S01 Switch\n    * MJ Plug V by MJ (Plug-in  Module)\n    * MJ US-SD-TC01 (Dimmer)\n    * MJ US-FC-01 (Fan Controller)\n    * MJ US-SS01 Switch\n    * MJ US-SS02 Swtich (Humidity Switch)\n    * Shelly 1 (Switch Module)","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"04a3da87-39a1-45c9-8cc2-e67caa1e355e","isPerpetual":true,"version":"0.0.3","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/beta/tasmota-pg3-0.0.3.zip"}],"eisy":true,"uuid":"0ed822e2-3abc-4b2a-a543-71c22d9d4cbd","ts_updated":"1696596346","from_store":"Beta"},{"docs":"POLYGLOT_CONFIG.md","longPoll":"600","executable":"wc832.py","readme":"# WebControl832 Plugin\n\nThis plugin polls a WebControl8 or WebControl32 device and updates IoX with the following:\n1. Node Server Status\n2. Heartbeat\n3. Server Name\n4. Date and Time\n\n## Custom Parameters\n- ip: Device IP address\n- port: Device port\n- username: Device username\n- password: Device password\n- json_data: JSON single line string\n- familiar_name: The name you want to use for WebControl \n\nThis plugin does not create any nodes other than the controller node and does require the nodes you want created, to be added to the json string. This way the plugin doesn't waste time on nodes you do not need and tie up valuable resources updating nodes you don't need.\n\nJson Single String Key:Value.\nYou can add only nodes you need and name each node whatever you want by forming a unique json single line string.\nLets say you only use 1 Analog Input, and 1 Output and a couple of temp sensors.\nHere is your json string:\n{\"aip1\": \"Whatever name you want\", \"op1\": \"Ouptut Name\", \"ts1\": \"Temp 1 Whatever\", \"ts8\": \"Temp 8 Whatever\"}\n\nHere is the list of available json keys and what they represent:\n\nFor Webcontrol 8:\naip1 to aip3 = Analog Inputs 1 to 3\ncounter = Counter\nfcounter = Frequency Counter\nhs1 = Humidity Sensor\nip1 to ip16 = Input 1 to 8\nop1 to op16 = Outputs 1 to 8\nts1 to ts16 = Temp 1 to 8\nvar1 to var16 = Variable 1 to 8\n\nFor WebControl 32:\naip1 to aip8 = Analog Inputs 1 to 8\ncnt1 to cnt3 = Counter 1 to 3\nhs1 = Humidity Sensor\nip1 to ip16 = Input 1 to 16\nop1 to op16 = Outputs 1 to 16\nts1 to ts16 = Temp 1 to 16\nvar1 to var16 = Variable 1 to 16\n\nAfter updating all parameters, wait 15 seconds or so then stop and restart the plugin. Then your done.\n\nChange Log:\nv1.0.4  Fixed mapped values for OP nodes  02/16/2025\nv1.0.5  Fixed UoM ending subset  02/18/2025\nv1.0.6  Fixed renaming nodes on the fly\n","status":"active","name":"WebControl832","language":"python3","devUser":"admin","isyAccess":false,"developer":"oztronix@comcast.net","ip_added":"108.192.22.118","version_na":"null","nsInfoPoll":"0","profile_version":"1.0.6","logLevel":"CRITICAL","ts_added":"1733155126","shortPoll":"10","author":"TJF1960","persist_folder":"WebControl832","discover":false,"fileUpload":false,"prem":true,"desc":"Alpha testing for WebControl 8 and 32 boards","polisy":true,"license":"LICENSE","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"70eab45c-8070-4342-800e-d0c49be9e477","isPerpetual":true,"version":"1.0.6","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/beta/WebControl832_v1.0.6.zip"}],"eisy":true,"uuid":"8c3e7969-8b70-4b39-b900-8b3e0ac35c77","devMode":false,"ts_updated":"1741534068","from_store":"Beta"},{"docs":"https://github.com/firstone/eisy-ir-poly/blob/main/README.md","longPoll":"60","executable":"eisy_ir.py","discover":false,"status":"active","prem":true,"name":"eISYIR","language":"python3","desc":"Add IR receiver functionality to eISY/Polisy via Flirc IR receiver","developer":"firstone@erissoft.com","authorize":false,"install":"install.sh","ip_added":"100.37.48.27","purchaseOptions":[{"recurringPeriod":"day","price":0,"recurring":30,"edition":"Free","id":"daf78145-0c39-46ec-99ca-291c64fcd02e","isTrial":true,"version":"0.1.10","branch":"main","url":"https://github.com/firstone/eisy-ir-poly"}],"nsInfoPoll":"0","profile_version":"0.1.3","logLevel":"DEBUG","uuid":"10f42418-488b-4740-b6fb-caa2694d14b4","ts_added":"1673834505","shortPoll":"15","ts_updated":"1676604637","author":"FirstOne","from_store":"Local"},{"docs":"https://casambi.com","longPoll":"600","executable":"casambi.py","readme":"null","status":"active","oauth":"null","devd":"{\"filename\": \"casambi.conf\"}","name":"Casambi","language":"python3","devUser":"admin","isyAccess":true,"developer":"kyriacou92@gmail.com","ip_added":"96.246.176.74","version_na":"null","nsInfoPoll":"0","profile_version":"3.2.0","logLevel":"INFO","ts_added":"1770737106","shortPoll":"60","author":"Casambi Oy.","persist_folder":"null","discover":true,"fileUpload":false,"prem":true,"customParams":"{\"serial port\": \"/dev/pg3.casambi\"}","nsdata":"null","desc":"OpenADR interface to Casambi Lighting Controls.","polisy":true,"license":"https://casambi.com","changelog":"Version 1.0.0. - Initial Beta Test\nVerison 1.1.0. - Bug Fixes\nVersion 1.3.0- Testing bug fixes\nVersion 1.4.0 - OpenADR load-shedding (EXTIF opcode 0x47); 13-driver ADR node; OpenADR 2.0b event parsing\nVersion 1.4.1- Added Casambi UI fixes and Banner\nVersion 1.4.2- Fixed Admin Console UI bugs\nVersion 1.4.3- USB Permissions fixes\nVersion 1.4.5- Bug Fixes\n\n1.4.4- Test functionality in Admin Console","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"9e089a24-86b6-4c68-bc38-40e195c39df1","isPerpetual":true,"version":"1.4.0","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/beta/casambiadr26_1.4.0.tar.gz"},{"price":0,"edition":"Free","id":"9d4158b8-c2d3-40e1-80a9-c9414d50f078","isPerpetual":true,"version":"1.4.1","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/beta/casambiadr26_1.4.1.tar.gz"},{"price":0,"edition":"Free","id":"22269604-5785-4249-a586-8df246179ac3","isPerpetual":true,"version":"1.4.2","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/beta/casambiadr26_1.4.2.tar.gz"},{"price":0,"edition":"Free","id":"f3003131-b916-4038-8d3e-dcb7800addb0","isPerpetual":true,"version":"1.4.3","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/beta/casambiadr26_1.4.3.tar.gz"},{"price":0,"edition":"Free","id":"a1a9eddf-1353-4274-9e64-391a66df57e2","isPerpetual":true,"version":"1.4.4","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/beta/casambiadr26_1.4.4.tar.gz"},{"price":0,"edition":"Free","id":"f2e62dc5-9ede-4a58-a508-c57bdaae6227","isPerpetual":true,"version":"1.4.5","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/beta/casambiadr26_1.4.5.tar.gz"}],"eisy":true,"devPath":"null","uuid":"c0379c67-61d3-40d2-9da5-774515000706","devMode":false,"ts_updated":"1776892677","from_store":"Production"},{"docs":"https://github.com/BME-nodeservers/udi-emporia-vue-poly","longPoll":"3600","executable":"vue.py","readme":"Emporia Vue\n\nNode Settings\nThe settings for this node are:\n\nShort Poll   * How often to poll for current energy data (in seconds).  Recommend that this be as large as possible while still providing required trigger response to changes.  So it needs to be just slightly less than the time you expect a device to be active (or inactive) if you want to trigger on it going active or inactive.\n\nLong Poll   * How often to poll for daily and monthly energy data (in seconds). Once an hour is probably good here.\n\nCustom Parameters\n        * username - your emporia VUE account user name\n        * password - your emporia VUE account password\n\nNode substitution variables.  This varies depending on the type of node. There are four types of nodes:\n - Vue main device node\n     * sys.node.[address].ST      (Node sever online)\n     * sys.node.[address].CWP (Instantaneous power in KW)\n     * sys.node.[address].GV1  (hourly power in KWH)\n     * sys.node.[address].GV2  (daily power in KWH)\n     * sys.node.[address].GV3  (monthly power in KWH)\n\n- Vue sensor channel node\n     * sys.node.[address].CWP (Instantaneous power in KW)\n     * sys.node.[address].GV1  (hourly power in KWH)\n     * sys.node.[address].GV2  (daily power in KWH)\n     * sys.node.[address].GV3  (monthly power in KWH)\n\n- Vue EV charger node\n     * sys.node.[address].ST      (Charger state - on/off)\n     * sys.node.[address].CWP (Instantaneous power in KW)\n     * sys.node.[address].GV1  (hourly power in KWH)\n     * sys.node.[address].GV2  (daily power in KWH)\n     * sys.node.[address].GV3  (monthly power in KWH)\n     * sys.node.[address].GV4  (current charge rate in amps)\n     * sys.node.[address].GV5  (maximum charge rate in amps)\n\n- Outlet node\n     * sys.node.[address].ST      (Outlet state - on/off)\n     * sys.node.[address].CWP  (Instantaneous power in KW)\n     * sys.node.[address].GV1  (hourly power in KWH)\n     * sys.node.[address].GV2  (daily power in KWH)\n     * sys.node.[address].GV3  (monthly power in KWH)","status":"active","url":"https://github.com/BME-nodeservers/udi-emporia-vue-poly","name":"VueTest","language":"python3","developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":"0","profile_version":"1.0.0","logLevel":"INFO","ts_added":"1660928582","shortPoll":"10","author":"Bob Paauwe","version":"1.0.22","discover":true,"prem":true,"customParams":"{\n\"Username\": \"\",\n\"Password\":\"\"\n}","desc":"A test version of the Emporia Vue node server.  \n\nAdds support for VUE 2 devices with up to 16 channels\nAdds support for EV Chargers\nAdds support for Outlets","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"c54c0b5d-a4b4-4240-b649-f0581d1444bd","isPerpetual":true,"branch":"beta","version":"1.0.24","url":"https://github.com/BME-nodeservers/udi-emporia-vue-poly"}],"branch":"beta","uuid":"bff5144a-e8e3-46fd-9de0-8e30c48dc44e","ts_updated":"1667083305","from_store":"Beta"},{"longPoll":"600","docs":"https://goose66.github.io/nsdocs/evldsc-pg3.html","executable":"main.py","readme":"A Plugin for Polyglot v3 (PG3x) that interfaces with a DSC PowerSeries alarm panel through EnvisaLink™ EVL-3/4 and DUO™ adapters from EyezOn to access alarm functions and events.\n\nClick \"More Info\" below for installation instructions and release notes.","status":"active","name":"EnvisaLink-DSC","language":"python3","devUser":"admin","isyAccess":false,"developer":"kingwrandy@gmail.com","ip_added":"75.131.193.229","nsInfoPoll":"0","profile_version":"3.1.0","logLevel":"DEBUG","ts_added":"1737683425","shortPoll":"30","author":"W. Randy King (Goose66)","discover":false,"fileUpload":false,"prem":true,"customParams":"{\n        \"hostname\": \"<hostname/IP address>\",\n        \"password\": \"<password>\",\n        \"usercode\": \"<alarm code>\"\n}","desc":"Allows IoX to access alarm functions and events of DSC PowerSeries™ alarm panels via EnvisaLink™ EVL-3/4 and DUO™ adapters from EyezOn.","polisy":true,"license":"https://goose66.github.io/nsdocs/license.html","changelog":"3.1.9 - Ready state fix and updates/fixes (2025-01-23)\n- updated to latest nslib and udi_interface\n- added GPV state (driver) to panel node to track plugin status\n- handle \"Ready - Forced Arming Enabled\" command same as \"Ready\"\n- send DON3 and DOF3 commands for partition arm and disarm, respectively\n- increased password length support to 10 characters (works on EVL4 only)\n- added names to driver list\n\n3.0.8 - Initial Release (2022-03-15)\n- converted envisalink-polyglotv2 to PG3 API\n- refactored code to be more readable and better structured\n- added Toggle Bypass to zone nodes with bypass update functionality\n- added better error handling in API module\n- fixed state updates after Key Alarm (Fire/Auxilary/Police) restoral","authorize":false,"purchaseOptions":[{"recurringPeriod":"month","price":0,"recurring":1,"edition":"Free","id":"5872539c-00bc-4847-95e9-87592b258925","isTrial":true,"version":"3.1.9","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/beta/evldsc-pg3-3.1.9.zip"}],"install":"install.sh","eisy":true,"uuid":"fcfab16a-fe73-4476-a387-ae1a1731f407","devMode":false,"ts_updated":"1737683425","from_store":"Beta"},{"docs":"https://github.com/BME-nodeservers/docs/master/blob/udi-magic-poly.md","longPoll":"300","executable":"magichome.py","readme":"Node Server for MagicHome(tm) compatible smart bulbs and LED strip lighting.\n\nThis should work with any smart bulb or LED strip controller that works with\nthe \"MagicHome\" app on Android and IOS.\n\n# Installation Instructions:\n1. Purchase and install the MagicHome node server.\n2. Wait for it to auto-discover the MagicHome compatible devices on your network.\n3. If it is unable to discover your devices, follow the configuration instructions to add them manually.\n","status":"active","oauth":"null","url":"https://pg3store.isy.io/v2/nodeservers/beta/udi-magic-poly.zip","devd":"null","name":"MagicHome","language":"python3","devUser":"null","isyAccess":false,"developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","version_na":"1.0.3","nsInfoPoll":"0","profile_version":"1.0.0","logLevel":"INFO","ts_added":"1650214230","shortPoll":"30","author":"Bob Paauwe","version":"1.0.3","package":"C:\\fakepath\\udi-magic-poly.zip","persist_folder":"null","discover":true,"fileUpload":false,"prem":true,"customParams":"null","nsdata":"null","desc":"MagicHome Node Server for MagicHome(tm) compatible smart bulbs and LED strip controllers.  This should work with all \"smart\" bulbs that can be controlled by the MagicHome(tm) App.","polisy":true,"license":"https://github.com/BME-nodeservers/docs/master/blob/LICENSE.md","changelog":"null","authorize":false,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"day","price":0,"recurring":"30","edition":"Free","id":"93f4479f-2b93-419a-acf4-d24befffd965","isTrial":true,"version":"1.0.3","branch":"n/a","url":"https://pg3store.isy.io/v2/nodeservers/beta/udi-magic-poly.zip"},{"price":"10","edition":"Standard","id":"6162af92-97d9-4a73-944e-7fe1e95034e5","isPerpetual":true,"version":"1.0.3","branch":"n/a","url":"https://pg3store.isy.io/v2/nodeservers/beta/udi-magic-poly.zip"}],"branch":"n/a","eisy":true,"devPath":"null","uuid":"7b031b27-643b-4678-ae54-cc63c346436b","devMode":false,"ts_updated":"1735670158","from_store":"Local"},{"docs":"https://github.com/ve7gel/Docs/tree/main/RainMachine","longPoll":"60","executable":"rm-poly.py","readme":"# Rainmachine Nodeserver\nTo interface Green Electronics LLC rainmachine irrigation controller to the ISY994\n\nCopyright 2020 Gordon Larsen MIT License\n\n#### Installation\n\nPLEASE NOTE: As of version 3.1.4, this nodeserver is only fully supported on PG3 and ISY on Polisy version 5.4.0 or greater.\nThe profile changes break the 'Status' functions in IF statements for Zones for earlier versions.\n\nThis nodeserver was developed on the rainmachine Mini-8. It should work similarly on other devices, \n    but hasn't been tested.\nSoftware currently fully supports hardware version 2, with API version 4.1 or higher.\nOn hardware version 1, mixer values(rain today and qpf values), rain sensor and freeze protect states are not available.\n \n## Issues\nPlease raise any issues on the UDI forum at \"https://forum.universal-devices.com/forum/170-green-electronics-rainmachine/\".  \nGithub is not watched.\n\n### Node drivers for use in substitution variables\n#### Zones:\n * 'ST', Zone state\n * 'GV3', Zone runtime minutes remaining\n * 'GV4', Zone runtime seconds remaining\n * 'GV5', Is this a master zone?\n * 'GV6', Flow Rate\n\n#### Programs:\n * 'ST', Program status\n * 'GV3', Program nextrun day\n\n#### Precipitation:\n * 'ST',  Rain today\n * 'GV0', Precip forecast for today \n * 'GV1', Precip forecast for tomorrow\n * 'GV2', Precip forecast for day after tomorrow\n\n#### Restrictions:\n * 'ST', Rain Sensor State\n * 'GV0', Rain Delay Remaining\n * 'GV1', Freeze Protect\n * 'GV2', Hourly restrictions?\n * 'GV3', Month restrictions?\n * 'GV4', Weekday restrictions?\n","status":"active","name":"RainMachine","language":"python3","devUser":"admin","isyAccess":false,"developer":"gordon@the-larsens.ca","ip_added":"24.69.150.176","version_na":"null","nsInfoPoll":"0","profile_version":"3.2.1","logLevel":"INFO","ts_added":"1719783840","shortPoll":"30","author":"Gordon Larsen","discover":false,"fileUpload":false,"prem":true,"customParams":"{\"Hostname\": \"\", \"Password\": \"\",  \"Units\": \"metric\", \"Active_Only\": \"False\"}","desc":"Plugin for the Green Electronics RainMachine","polisy":true,"license":"https://github.com/ve7gel/Docs/blob/main/LICENSE.md","changelog":"## Release Notes\n- 3.2.0 04/04/2022\n  - add parameter to provide option to exclude inactive zones from node creation\n- 3.1.8 01/04/2022\n  - catch error that occurs in discover when hostname is missing or invalid.\n- 3.1.7 24/03/2022\n  - minor profile changes\n- 3.1.6 15/03/2022\n  - fix local precipitation display \n- 3.1.5 08/03/2022\n  - add poly.stop() to stop function \n- 3.1.4 04/03/2022\n  - change US units to gpm.  Requires ISY on Polisy 5.4.0 or greater\n  - update requirements for udi_interface 3.0.36\n- 3.1.3 10/02/2022\n  - correction to profile for display of nodeserver status\n- 3.1.2 24/01/2022\n  - update requirements for udi_interface update\n  - unit displays added back to flow rate, now in cfm, pending addition of gpm uom by UDI\n  - code cleanup\n- 3.1.1 18/01/2022\n  - update zone flow rates. us units displays flowrate in gpm, metric in M3/hr\n    units are currently missing from display, working on it.\n- 3.1.0 17/01/2022\n  - add flow rate to zone data.  Currently us units only display with no units of measure as ISY does not have GPM\n  as a valid UOM yet.\n- 3.0 21/10/2021\n  - Update for Polyglot V3\n- 0.5.6 14/04/2021\n    - update list of disallowed zone name characters.  These are stripped from the name when imported from the RM.\n- 0.5.5 18/01/2021\n    - correct an entry in the nls that was preventing controller status from showing in ISY program status fields.\n- 0.5.4 08/12/2020\n    - fix a bug introduced in 0.5.3 where loglevel was not retained across restarts.\n- 0.5.3 07/12/2020\n    - add \"Winter\" mode. Clean up some profile entries\n- 0.5.2 19/062020\n    - update to configuration docs\n- 0.5.1 13/06/2020\n    - update requirements for polyinterface 2.1.0\n- 0.5.0 08/04/2020\n    - trap network error in restrictions update.\n    - add error trapping to recover more gracefully from loss of contact with the Rainmachine\n    - Restructure code to move node functions to separate files. \n- 0.4.0 03/04/2020\n    - move rain sensor, freeze protect, rain delay to new 'Restrictions' node.  Add info for active hourly, weekday, monthly restrictions \n- 0.3.0 014/02/2020\n    - add delay between node adds during discovery\n    - add some support for Master Zone - still needs some testing","authorize":false,"install":"install.sh","purchaseOptions":[{"price":30,"edition":"Standard","id":"e07e9bf8-2ef6-4e50-8aa6-dce9492fdb67","isPerpetual":true,"version":"3.2.2","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/beta/udi-poly-rainmachine.zip"}],"eisy":true,"uuid":"e98d0e41-ff7b-44c7-92d5-e80cc4c39598","devMode":false,"ts_updated":"1719784911","from_store":"Beta"},{"docs":"https://github.com/UniversalDevicesInc-PG3/udi-solaredge-poly","longPoll":"1800","executable":"solaredge-poly.py","readme":"# UDI Polyglot v3 SolarEdge Poly Extended\n\n[![license](https://img.shields.io/github/license/mashape/apistatus.svg)](https://github.com/UniversalDevicesInc/udi-solaredge-poly/blob/master/LICENSE)\n\nThis Poly provides an interface between SolarEdge devices and [Polyglot v3](https://github.com/UniversalDevicesInc/pg3) server.\n\n### Installation instructions\n1. Got to the Polyglot Store and click \"Install\" \n2. After the install completes, go to the dashboard and select SolarEdge details\n3. Enter your API Key in the custom parameters and save changes.\n4. To set an API rate_limit other than 5min, enter a new \"rate_limit\" parameter (in minutes) in the custom parameters and save changes\n\nNodes should now be created on the ISY that represent your site configuration.\n\n### Configuration\n\n#### Short Poll\n *  How often to poll the SolarEdge servers for inverter/battery/power/energy info. Default\n is 60 seconds since the API calls are rate limited. This makes the time \"since last update\" more accurate \n\n#### Long Poll\n * How often to poll for Overview Energy Default is 1800 seconds (30 minutes)\n\n#### api_key\n * Your SolarEdge API key.  Get this by logging into your SolarEdge account.\n\n### Notes\n\nPlease report any problems on the UDI user forum.\n\nThis solaredge version is based on xKing and bpwwer's version. Added are an Energy Node which uses the most recent 15min period to show energy (KWh). Since these readings will always be 15 minutes you can get a more accurate average power (KW) for that period by multiplying the energy figure by 4.\nNote that the API only updates values every 5 minutes so the added \"since last update\" field shows how long ago the last power reading was taken. If you exceed the daily API limit or the solaredge server is overloaded you may see \"since last update\" exceed the rate limit. The EnergyDay node shows todays energy. The Overview node shows the Energy history. It is updated during the long poll interval as most of the fields change very slowly.","status":"active","name":"solaredge_poly","language":"python3","devUser":"null","isyAccess":false,"developer":"ken@sandbergweb.com","ip_added":"38.15.60.130","nsInfoPoll":"60","profile_version":"1.1.8","logLevel":"WARNING","ts_added":"1682620460","shortPoll":"60","author":"photogeek54","discover":false,"fileUpload":false,"prem":true,"desc":"extended solaredge version\nadds more energy nodes and the production overview node.\nAdd rate limiting due to Solaredge 300 API call per day limits\nnodenames may change due to old names too short to uniquely identify some devices like batteries","polisy":true,"license":"https://raw.githubusercontent.com/UniversalDevicesInc/udi-solaredge-poly/master/LICENSE","changelog":"v1.1.0 adds rate limiting\nv1.1.01 removes special characters from site name\nv1.1.02 changes logic slightly for removing special characters from the site name\nv1.1.03 make battery node address more random\nv1.1.04 add more battery telemetry, note that this changes the node names for batteries which could impact your programs.\nv1.1.8 add fix for 2026 API change, /version was deprecated, replace w /sites to check API key","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"f13c7d79-dd0b-41b0-9dcb-aa5da89c2e31","isPerpetual":true,"version":"1.1.8","branch":"Extended-w-2026-API-fix","url":"https://github.com/UniversalDevicesInc-PG3/udi-solaredge-poly"}],"eisy":true,"devPath":"null","uuid":"f671d8a5-02d7-4901-95b0-1adca63d9668","devMode":false,"ts_updated":"1776743331","from_store":"Local"},{"docs":"http://github.com/sejgit/udi-mqtt-pg3x/blob/main/POLYGLOT_CONFIG.md","longPoll":"600","executable":"mqtt-poly.py","readme":"null","status":"active","oauth":"null","devd":"null","name":"MQTT","language":"python3","devUser":"null","isyAccess":false,"developer":"jr@strele.ws","ip_added":"181.128.37.83","version_na":"null","nsInfoPoll":"0","profile_version":"0.50.0","logLevel":"INFO","ts_added":"1690239397","shortPoll":"60","author":"Trilife/Headrom","persist_folder":"null","discover":true,"fileUpload":true,"prem":true,"customParams":"{\"mqtt_server\":\"localhost\",\"mqtt_port\":\"1884\",\"mqtt_user\":\"\",\"mqtt_password\":\"\",\"devfile\":\"/usr/home/admin/YOUR-YAML.yaml\"}\n","nsdata":"null","desc":"MQTT non-production","polisy":true,"license":"http://github.com/sejgit/udi-mqtt-pg3x/blob/main/LICENSE","changelog":"VERSION = '0.50.0'\n\n\"\"\"\n0.50.0\nDONE refactor Controller/Nodes for Pythonic & commenting\nDONE add user defined default status_prefix & cmd_prefix\nDONE add numofnodes\nDONE add MQDroplet device\n\n0.40.3\nDONE: fixed typos in POLYGLOT_CONFIG.md\nSTARTED: Organize device types according to Tasmota, Sensor etc.\nTODO: Reorganize sample devfile for clarity and comments\n\n0.40.2\nDONE README.md clean-up\nDONE POLYGLOT_CONFIG.md clean-up\n0.40.1\nDONE s31 displays in program\n0.40.0\nDONE change numbering to allow for branch management\nDONE raw fix docs & allow int in addition to str\nDONE find topic by topic if no device_id find\nDONE:discover button updates nodes and MQTT subscriptions\nDONE config.md fixes\nDONE status for switch device available in programs\nDONE internal: improve logging for debug\n","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"b1313f7c-a92c-4238-aa2c-c0e49b3f8b6e","isPerpetual":true,"version":"0.50.0","branch":"main","url":"https://github.com/sejgit/udi-mqtt-pg3x"}],"eisy":true,"devPath":"null","uuid":"6016023b-ebfc-4602-90c6-79bdc755aa4b","devMode":false,"ts_updated":"1769992945","from_store":"Beta"},{"docs":"README.md","longPoll":"600","executable":"mediaserver.py","status":"active","name":"Pi5Media","language":"python3","devUser":"admin","isyAccess":false,"developer":"oztronix@comcast.net","ip_added":"98.238.150.144","version_na":"null","nsInfoPoll":"0","profile_version":"1.0.9","logLevel":"INFO","ts_added":"1777243644","shortPoll":"60","author":"TJF1960","persist_folder":"pg3_media_server_monitor_v1.0.8","discover":false,"fileUpload":false,"prem":true,"desc":"dsfdf","polisy":true,"license":"LICENSE","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"7530b56a-cddf-4c93-89b6-7c811a99dd2f","isPerpetual":true,"version":"v1.0.9","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/beta/pg3_media_server_monitor_v1.0.8.zip"}],"eisy":true,"devPath":"/tim/pg3/pg3_media_server_monitor","uuid":"eaeb830f-f42b-4554-8f77-7eded52a8f81","devMode":false,"ts_updated":"1777244569","from_store":"Local"},{"docs":"https://forum.universal-devices.com/forum/324-itach-ir/","longPoll":"600","executable":"initializer.py","readme":"null","status":"active","oauth":"null","url":"https://github.com/JavierRefuerzo/iTach_IR_Node_Server.git","devd":"null","name":"iTach-IR","language":"python3","isyAccess":false,"developer":"javier@universal-devices.com","ip_added":"75.166.45.142","version_na":"2022.08.01","nsInfoPoll":"0","profile_version":"0.0.1","logLevel":"INFO","ts_added":"1642890967","shortPoll":"60","author":"Javier Refuerzo","version":"2022.08.01","persist_folder":"null","discover":false,"prem":true,"customParams":"{\"url\":\"http://192.168.0.70\",\"Example Device\":\"function, code1, hexcode1, code2, hexcode2  \\\"INPUT AUX\\\",\\\"sendir,1:1,1,38000,1,69,341,172,21,21,21,64,21,21,21,21,21,64,21,21,21,64,21,64,21,64,21,21,21,21,21,21,21,64,21,21,21,21,21,21,21,64,21,64,21,64,21,64,21,64,21,21,21,21,21,64,21,21,21,21,21,21,21,21,21,21,21,64,21,64,21,21,21,1603,341,87,21,3652\\\",\\\"0000 006D 0022 0002 0155 00AC 0015 0015 0015 0040 0015 0015 0015 0015 0015 0040 0015 0015 0015 0040 0015 0040 0015 0040 0015 0015 0015 0015 0015 0015 0015 0040 0015 0015 0015 0015 0015 0015 0015 0040 0015 0040 0015 0040 0015 0040 0015 0040 0015 0015 0015 0015 0015 0040 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0040 0015 0015 0015 0643 0155 0057 0015 0E44\\\",,  \\\"INPUT BD/DVD\\\",\\\"sendir,1:1,1,38000,1,69,341,171,21,21,21,64,21,21,21,21,21,64,21,21,21,64,21,64,21,21,21,64,21,21,21,21,21,64,21,21,21,21,21,21,21,21,21,21,21,64,21,64,21,21,21,21,21,21,21,64,21,64,21,64,21,21,21,21,21,64,21,64,21,64,21,21,21,1604,341,87,21,3652\\\",\\\"0000 006D 0022 0002 0155 00AB 0015 0015 0015 0040 0015 0015 0015 0015 0015 0040 0015 0015 0015 0040 0015 0040 0015 0015 0015 0040 0015 0015 0015 0015 0015 0040 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0040 0015 0015 0015 0015 0015 0015 0015 0040 0015 0040 0015 0040 0015 0015 0015 0015 0015 0040 0015 0040 0015 0040 0015 0015 0015 0644 0155 0057 0015 0E44\\\",,  \\\"INPUT CABLE/SAT\\\",\\\"sendir,1:1,1,38000,1,69,341,172,21,21,21,64,21,21,21,21,21,64,21,21,21,64,21,64,21,64,21,21,21,21,21,21,21,64,21,21,21,21,21,21,21,21,21,64,21,64,21,64,21,21,21,21,21,21,21,21,21,64,21,21,21,21,21,21,21,64,21,64,21,64,21,64,21,1604,341,87,21,3652\\\",\\\"0000 006D 0022 0002 0155 00AC 0015 0015 0015 0040 0015 0015 0015 0015 0015 0040 0015 0015 0015 0040 0015 0040 0015 0040 0015 0015 0015 0015 0015 0015 0015 0040 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0040 0015 0040 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0015 0015 0015 0015 0015 0015 0040 0015 0040 0015 0040 0015 0040 0015 0644 0155 0057 0015 0E44\\\",,  \\\"INPUT GAME\\\",\\\"sendir,1:1,1,38000,1,69,341,172,21,21,21,64,21,21,21,21,21,64,21,21,21,64,21,64,21,64,21,21,21,21,21,21,21,64,21,21,21,21,21,21,21,64,21,21,21,64,21,64,21,21,21,21,21,21,21,21,21,21,21,64,21,21,21,21,21,64,21,64,21,64,21,64,21,1604,341,87,21,3652\\\",\\\"0000 006D 0022 0002 0155 00AC 0015 0015 0015 0040 0015 0015 0015 0015 0015 0040 0015 0015 0015 0040 0015 0040 0015 0040 0015 0015 0015 0015 0015 0015 0015 0040 0015 0015 0015 0015 0015 0015 0015 0040 0015 0015 0015 0040 0015 0040 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0015 0015 0015 0015 0040 0015 0040 0015 0040 0015 0040 0015 0644 0155 0057 0015 0E44\\\",,  \\\"INPUT NET\\\",\\\"sendir,1:1,1,38000,1,69,341,172,21,21,21,64,21,21,21,21,21,64,21,21,21,64,21,64,21,21,21,21,21,64,21,21,21,64,21,21,21,21,21,21,21,64,21,64,21,64,21,21,21,21,21,21,21,21,21,64,21,21,21,21,21,21,21,64,21,64,21,64,21,64,21,21,21,1604,341,87,21,3652\\\",\\\"0000 006D 0022 0002 0155 00AC 0015 0015 0015 0040 0015 0015 0015 0015 0015 0040 0015 0015 0015 0040 0015 0040 0015 0015 0015 0015 0015 0040 0015 0015 0015 0040 0015 0015 0015 0015 0015 0015 0015 0040 0015 0040 0015 0040 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0015 0015 0015 0015 0015 0015 0040 0015 0040 0015 0040 0015 0040 0015 0015 0015 0644 0155 0057 0015 0E44\\\",,  \\\"INPUT PC\\\",\\\"sendir,1:1,1,38000,1,69,341,171,21,21,21,64,21,21,21,21,21,64,21,21,21,64,21,64,21,64,21,21,21,21,21,21,21,64,21,21,21,21,21,21,21,21,21,21,21,64,21,64,21,64,21,21,21,21,21,64,21,64,21,64,21,21,21,21,21,21,21,64,21,64,21,21,21,1603,341,87,21,3652\\\",\\\"0000 006D 0022 0002 0155 00AB 0015 0015 0015 0040 0015 0015 0015 0015 0015 0040 0015 0015 0015 0040 0015 0040 0015 0040 0015 0015 0015 0015 0015 0015 0015 0040 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0040 0015 0040 0015 0015 0015 0015 0015 0040 0015 0040 0015 0040 0015 0015 0015 0015 0015 0015 0015 0040 0015 0040 0015 0015 0015 0643 0155 0057 0015 0E44\\\",,  \\\"INPUT PHONO\\\",\\\"sendir,1:1,1,38000,1,69,341,172,21,21,21,64,21,21,21,21,21,64,21,21,21,64,21,64,21,64,21,21,21,21,21,21,21,64,21,21,21,21,21,21,21,21,21,64,21,21,21,64,21,21,21,21,21,21,21,21,21,64,21,21,21,64,21,21,21,64,21,64,21,64,21,64,21,1604,341,87,21,3652\\\",\\\"0000 006D 0022 0002 0155 00AC 0015 0015 0015 0040 0015 0015 0015 0015 0015 0040 0015 0015 0015 0040 0015 0040 0015 0040 0015 0015 0015 0015 0015 0015 0015 0040 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0015 0015 0040 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0015 0015 0040 0015 0015 0015 0040 0015 0040 0015 0040 0015 0040 0015 0644 0155 0057 0015 0E44\\\",,  \\\"INPUT TUNER\\\",\\\"sendir,1:1,1,38000,1,69,341,172,21,21,21,64,21,21,21,21,21,64,21,21,21,64,21,64,21,64,21,21,21,21,21,21,21,64,21,21,21,21,21,21,21,64,21,64,21,21,21,64,21,21,21,21,21,21,21,21,21,21,21,21,21,64,21,21,21,64,21,64,21,64,21,64,21,1604,341,87,21,3652\\\",\\\"0000 006D 0022 0002 0155 00AC 0015 0015 0015 0040 0015 0015 0015 0015 0015 0040 0015 0015 0015 0040 0015 0040 0015 0040 0015 0015 0015 0015 0015 0015 0015 0040 0015 0015 0015 0015 0015 0015 0015 0040 0015 0040 0015 0015 0015 0040 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0015 0015 0040 0015 0040 0015 0040 0015 0040 0015 0644 0155 0057 0015 0E44\\\",,  \\\"INPUT TV/CD\\\",\\\"sendir,1:1,1,38000,1,69,341,172,21,21,21,64,21,21,21,21,21,64,21,21,21,64,21,64,21,64,21,21,21,21,21,21,21,64,21,21,21,21,21,21,21,64,21,21,21,21,21,64,21,21,21,21,21,21,21,21,21,21,21,64,21,64,21,21,21,64,21,64,21,64,21,64,21,1603,341,87,21,3652\\\",\\\"0000 006D 0022 0002 0155 00AC 0015 0015 0015 0040 0015 0015 0015 0015 0015 0040 0015 0015 0015 0040 0015 0040 0015 0040 0015 0015 0015 0015 0015 0015 0015 0040 0015 0015 0015 0015 0015 0015 0015 0040 0015 0015 0015 0015 0015 0040 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0040 0015 0015 0015 0040 0015 0040 0015 0040 0015 0040 0015 0643 0155 0057 0015 0E44\\\",,  \\\"INPUT USB\\\",\\\"sendir,1:1,1,38000,1,69,341,172,21,21,21,64,21,21,21,21,21,64,21,21,21,64,21,64,21,64,21,64,21,21,21,21,21,64,21,21,21,21,21,21,21,21,21,64,21,64,21,64,21,64,21,21,21,21,21,64,21,64,21,21,21,21,21,21,21,21,21,64,21,64,21,21,21,1561,341,87,21,3652\\\",\\\"0000 006D 0022 0002 0155 00AC 0015 0015 0015 0040 0015 0015 0015 0015 0015 0040 0015 0015 0015 0040 0015 0040 0015 0040 0015 0040 0015 0015 0015 0015 0015 0040 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0040 0015 0040 0015 0040 0015 0015 0015 0015 0015 0040 0015 0040 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0040 0015 0015 0015 0619 0155 0057 0015 0E44\\\",,  \\\"MUTE TOGGLE\\\",\\\"sendir,1:1,1,38000,1,69,341,171,21,21,21,64,21,21,21,21,21,64,21,21,21,64,21,64,21,64,21,21,21,21,21,21,21,64,21,21,21,21,21,21,21,64,21,21,21,64,21,21,21,21,21,21,21,21,21,21,21,21,21,64,21,21,21,64,21,64,21,64,21,64,21,64,21,1604,341,87,21,3652\\\",\\\"0000 006D 0022 0002 0155 00AB 0015 0015 0015 0040 0015 0015 0015 0015 0015 0040 0015 0015 0015 0040 0015 0040 0015 0040 0015 0015 0015 0015 0015 0015 0015 0040 0015 0015 0015 0015 0015 0015 0015 0040 0015 0015 0015 0040 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0015 0015 0040 0015 0040 0015 0040 0015 0040 0015 0040 0015 0644 0155 0057 0015 0E44\\\",,  \\\"POWER TOGGLE\\\",\\\"sendir,1:1,1,38000,1,69,341,171,21,21,21,64,21,21,21,21,21,64,21,21,21,64,21,64,21,21,21,64,21,21,21,21,21,64,21,21,21,21,21,21,21,64,21,64,21,21,21,64,21,21,21,21,21,64,21,64,21,21,21,21,21,64,21,21,21,64,21,64,21,21,21,21,21,1603,341,87,21,3652\\\",\\\"0000 006D 0022 0002 0155 00AB 0015 0015 0015 0040 0015 0015 0015 0015 0015 0040 0015 0015 0015 0040 0015 0040 0015 0015 0015 0040 0015 0015 0015 0015 0015 0040 0015 0015 0015 0015 0015 0015 0015 0040 0015 0040 0015 0015 0015 0040 0015 0015 0015 0015 0015 0040 0015 0040 0015 0015 0015 0015 0015 0040 0015 0015 0015 0040 0015 0040 0015 0015 0015 0015 0015 0643 0155 0057 0015 0E44\\\",,  \\\"VOLUME DOWN\\\",\\\"sendir,1:1,1,38000,1,1,341,171,21,21,21,64,21,21,21,21,21,64,21,21,21,64,21,64,21,64,21,21,21,21,21,21,21,64,21,21,21,21,21,21,21,64,21,64,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,64,21,64,21,64,21,64,21,64,21,64,21,1603\\\",\\\"0000 006D 0000 0022 0155 00AB 0015 0015 0015 0040 0015 0015 0015 0015 0015 0040 0015 0015 0015 0040 0015 0040 0015 0040 0015 0015 0015 0015 0015 0015 0015 0040 0015 0015 0015 0015 0015 0015 0015 0040 0015 0040 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0040 0015 0040 0015 0040 0015 0040 0015 0040 0015 0643\\\",,  \\\"VOLUME UP\\\",\\\"sendir,1:1,1,38000,1,1,341,171,21,21,21,64,21,21,21,21,21,64,21,21,21,64,21,64,21,64,21,21,21,21,21,21,21,64,21,21,21,21,21,21,21,21,21,64,21,21,21,21,21,21,21,21,21,21,21,21,21,64,21,21,21,64,21,64,21,64,21,64,21,64,21,64,21,1603\\\",\\\"0000 006D 0000 0022 0155 00AB 0015 0015 0015 0040 0015 0015 0015 0015 0015 0040 0015 0015 0015 0040 0015 0040 0015 0040 0015 0015 0015 0015 0015 0015 0015 0040 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0015 0015 0040 0015 0040 0015 0040 0015 0040 0015 0040 0015 0040 0015 0643\\\",,\"}","nsdata":"None","desc":"iTach IR.","polisy":true,"license":"https://github.com/JavierRefuerzo/iTach_IR_Node_Server/blob/main/LICENSE","changelog":"null","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"12ab287c-4dca-4bbf-90c4-6d470fd37545","isPerpetual":true,"version":"2023.1.9","branch":"main","url":"https://github.com/JavierRefuerzo/iTach_IR_Node_Server.git"}],"branch":"main","eisy":true,"uuid":"4009bc9f-0cec-40d2-8966-cc77469b2401","ts_updated":"1693582987"},{"docs":"https://github.com/UniversalDevicesInc/ring/blob/master/README.md","longPoll":"3600","executable":"ring.py","readme":"Click here for more info:","status":"active","oauth":"{\n  \"name\": \"ring\",\n  \"client_id\": \"pgprod\",\n  \"client_secret\": \"mc18xlukpdtnn1os13ztkqzfho6ju9d1owntg6mhbkqlo4xm1q7ih6z0d2fcbmho\",\n  \"auth_endpoint\": \"https://oauth.ring.com/oauth/authorize\",\n  \"token_endpoint\": \"https://oauth.ring.com/oauth/token\",\n  \"scope\": \"read\",\n  \"addScope\": false\n}","devd":"null","name":"Ring-BetaTEST","language":"python3","devUser":"null","isyAccess":false,"developer":"benoit@universal-devices.com","ip_added":"24.138.11.123","version_na":"null","nsInfoPoll":"0","profile_version":"1.0.3","logLevel":"INFO","ts_added":"1760465663","shortPoll":"300","author":"Benoit Mercier","persist_folder":"null","discover":false,"fileUpload":false,"prem":true,"customParams":"null","nsdata":"null","desc":"The Ring nodeserver creates nodes for your doorbells, stickup cams & floodlights.","polisy":true,"license":"https://github.com/UniversalDevicesInc/ring/blob/master/LICENSE","changelog":"null","authorize":true,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"day","price":0,"recurring":10,"edition":"Standard","id":"733fc6a8-8cca-4104-ad53-7f3c050b5d6f","isTrial":true,"version":"1.2.7","branch":"master","url":"https://github.com/UniversalDevicesInc/ring.git"},{"price":9,"edition":"Standard","id":"0c168f43-66dd-4894-9ecc-afdc12b375b1","isPerpetual":true,"version":"1.2.7","branch":"master","url":"https://github.com/UniversalDevicesInc/ring.git"}],"eisy":true,"devPath":"null","uuid":"bde44191-474a-49f9-8dc8-495c751f958c","devMode":false,"ts_updated":"1762887194","from_store":"Beta"},{"docs":"http://github.com/sejgit/udi-mqtt-pg3x/blob/main/POLYGLOT_CONFIG.md","longPoll":"600","executable":"mqtt-poly.py","status":"active","name":"mqtt-poly","language":"python3","devUser":"admin","isyAccess":false,"developer":"stephenearljenkins@me.com","ip_added":"104.28.104.66","version_na":"null","nsInfoPoll":"0","profile_version":"0.50.0","logLevel":"INFO","ts_added":"1713113974","shortPoll":"60","author":"headrom","discover":true,"fileUpload":false,"prem":true,"customParams":"{\n\"devlist\":\" \"\n}","desc":"depreciated, use MQTT non-production","polisy":true,"license":"http://github.com/sejgit/udi-mqtt-pg3x/blob/main/LICENSE","changelog":"VERSION = '0.50.0'\n\n\"\"\"\n0.50.0\nDONE refactor Controller/Nodes for Pythonic & commenting\nDONE add user defined default status_prefix & cmd_prefix\nDONE add numofnodes\nDONE add MQDroplet device\n\n0.40.3\nDONE: fixed typos in POLYGLOT_CONFIG.md\nSTARTED: Organize device types according to Tasmota, Sensor etc.\nTODO: Reorganize sample devfile for clarity and comments\n\n0.40.2\nDONE README.md clean-up\nDONE POLYGLOT_CONFIG.md clean-up\n0.40.1\nDONE s31 displays in program\n0.40.0\nDONE change numbering to allow for branch management\nDONE raw fix docs & allow int in addition to str\nDONE find topic by topic if no device_id find\nDONE:discover button updates nodes and MQTT subscriptions\nDONE config.md fixes\nDONE status for switch device available in programs\nDONE internal: improve logging for debug\n","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"9bed6446-a7c6-4e67-aa02-fc8eee738429","isPerpetual":true,"version":"0.50.0","branch":"main","url":"https://github.com/sejgit/udi-mqtt-pg3x"}],"eisy":true,"devPath":"/usr/home/admin/polyglot/nodeservers/udi-mqtt-pg3x","uuid":"bcde0eed-26a5-431b-ad36-a92eda9465df","devMode":false,"ts_updated":"1769999907","from_store":"Beta"},{"docs":"https://github.com/UniversalDevicesInc-PG3/udi-poly-kasa/blob/master/README.md","longPoll":"240","executable":"kasa-poly.py","status":"active","name":"Kasa","language":"python3","isyAccess":false,"developer":"jimsearle@gmail.com","ip_added":"70.181.79.77","version_na":"null","nsInfoPoll":"0","profile_version":"3.0.13","logLevel":"WARNING","ts_added":"1701369506","shortPoll":"30","author":"Jimbo.Automates","discover":true,"fileUpload":false,"prem":true,"desc":"TP-Link Kasa Node Server","polisy":true,"license":"https://github.com/UniversalDevicesInc-PG3/udi-poly-kasa/blob/master/LICENSE","changelog":"- 3.2.5: 6/6/2025\n  - BETA: Please only install to test\n  - Upgrade to python-kasa to 0.10.x\n- 3.1.4: 12/18/2023\n  - Fix: [HS300 outlet power not updated on longpoll or query all](https://github.com/UniversalDevicesInc-PG3/udi-poly-kasa/issues/20)\n- 3.1.3: 12/05/2023\n  - With latest IoX Updates this now works with latest python-kasa 0.5.4 https://github.com/python-kasa/python-kasa/releases/tag/0.5.4\n- 3.1.2: 11/28/2023\n  - Force python-kasa 0.5.3 to avoid needing rust compiler for now\n- 3.1.1: 11/25/2023\n  - Fix: [Crash on startup when poll is called on smartstrip](https://github.com/UniversalDevicesInc-PG3/udi-poly-kasa/issues/19)\n- 3.1.0: 09/22/2023\n  - Added [Configuration Help](/CONFIG.md) describing all new parameters\n  - Fix: [change_node_names not working](https://github.com/UniversalDevicesInc-PG3/udi-poly-kasa/issues/17)\n    - NOTE: You will see an error on the log related to this: ERROR    interface:_message: Failed to update internal nodelist: None :: 'NoneType' object is not subscriptable\n    - This is a PG3x issue which will be fixed in the next release of PG3x after 3.2.7.\n  - Fix: [Deleted devices always return(https://github.com/UniversalDevicesInc-PG3/udi-poly-kasa/i]ssues/14)\n  - Enhancement: [Add configurable discover timeout](https://github.com/UniversalDevicesInc-PG3/udi-poly-kasa/i]ssues/18)\n  - Enhancement: [Allow manually adding device host name or IP address](https://github.com/UniversalDevicesInc-PG3/udi-poly-kasa/i]ssues/9)\n    - Also allows adding extra networks to run discover on\n  - Fix adding SmartStrip Plug nodes when device is added\n  - Tested with python-kasa 0.5.3, hopefully this version will discover previously undiscovered devices\n    - BUT this doesn't yet work for the new firmware devices, hopefully that will be released soon.\n  - Added all driver names so they now show up in PG3x UI.\n  - Fix log message for \"ready to poll\" when device is not responding\n- 3.0.21: 03/28/2023\n  - Fix dumb error in print statement added in last release- 3.0.20: Fix crash due to python-kasa library issue","authorize":false,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"month","price":0,"recurring":"1","edition":"Free","id":"42bd2b21-54dc-40b4-b8b1-9c95df79e1d9","isTrial":true,"version":"3.2.5","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/beta/Kasa.zip"},{"price":30,"edition":"Standard","id":"4b3754d8-1092-45a5-8f69-e1c9dccf66ea","isPerpetual":true,"version":"3.2.5","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/beta/Kasa.zip"}],"eisy":true,"uuid":"47434058-cf83-4ad5-b7ed-c0faa511fe60","devMode":false,"ts_updated":"1749254022","from_store":"Production"},{"docs":"WIP","longPoll":"600","executable":"matter.py","readme":"# Matter server controller plugin (c) 2025 Universal Devices\n\nThe Matter server controller plugin serves as a front end to the eisy matter bridge service. The matter bridge service allows you to expose your eisy as a bridge within the matter ecosystem.\n\nThe current version allows you to expose your insteon nodes as matter devices to other matter-enabled hubs such as Google Home or Apple Home.\n\nFuture versions of the matter bridge service will extend support for additional node types.\n\n## Installation\nMake sure your eisy is running the latest release by running upgrade packages in the admin console.\n\n## Requirements\n\n1. eisy with the latest release. \n2. PG3x with the latest release.\n\n# Release Notes\n\n1.1.0 - Initial Release.","status":"active","name":"iox-matter","language":"python3","devUser":"admin","isyAccess":false,"developer":"pmouli@mac.com","ip_added":"24.91.249.167","version_na":"null","nsInfoPoll":"0","profile_version":"1.3.0","logLevel":"INFO","ts_added":"1739981803","shortPoll":"60","author":"pradpoly","persist_folder":"config","discover":false,"fileUpload":true,"prem":true,"nsdata":"i*IZI<I3)BPT_hlV)*;8ZiqsZ/r(LI","desc":"Controller for eisy matter bridge service.","polisy":false,"license":"MIT","authorize":false,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"month","price":0,"recurring":6,"edition":"Standard","id":"bda318b7-2bd7-47e1-a788-50c24c48979b","isTrial":true,"version":"1.3.0","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/beta/matter.tar.gz"}],"eisy":true,"uuid":"d193c79a-dcb1-427c-aabf-3efd5feb8f27","devMode":false,"ts_updated":"1757345715","from_store":"Beta"},{"docs":"https://github.com/sejgit/udi-hunterdouglas-pg3/blob/master/README.md","longPoll":"600","executable":"hunterdouglas-poly.py","status":"active","name":"HunterDouglas","language":"python3","devUser":"admin","isyAccess":false,"developer":"stephenearljenkins@me.com","ip_added":"104.28.104.66","version_na":"null","nsInfoPoll":"0","profile_version":"1.13.3","logLevel":"INFO","ts_added":"1715914073","shortPoll":"60","author":"headrom","persist_folder":"/usr/home/admin/polyglot/nodeservers/udi-hunterdouglas-pg3","discover":true,"fileUpload":false,"prem":true,"customParams":"{\"gatewayip\": \"powerview-g3.local\"}","desc":"Hunter Douglas Shades integration.  Works with Generation 2 or 3 gateways & blinds.","polisy":true,"license":"https://github.com/sejgit/udi-hunterdouglas-pg3/blob/master/LICENSE","changelog":"VERSION = '1.13.3'\n\"\"\"\n1.13.3\nDONE package updates \"dependabot\"\nDONE fix typo, crash on batteryLevel event\nDONE fix timeout, drop every 300s timeout\n\n1.13.2\nDONE requirements.txt changes\nDONE comments improvements\nDONE testing additions\n\n1.13.1\nDONE refactor controller discovery, put, get, goodip functions\nDONE refactor controller startup, config, params, naming, logging\nDONE refactor cmdSetPos\n\n1.13.0\nDONE polling rewrite, controller: shortPoll=G2 poll, heartbeat for all, re-start G3 events, longPoll=G3 poll\nDONE polling rewrite, shade: shortPoll: re-start events if stopped, longPoll: not-used\nDONE polling rewrite, scene: shortPoll: re-start events if stopped, manually clear G2 scene activate, longPoll: not-used\nNOTE default & recommend setting shortPoll=60, longPoll=600\nDONE major re-write of function and Event routines\nDONE add number of nodes managed by controller to controller node\n\n1.12.8\nDONE prevent update until previous complete\nNEXT minor change, don't push to production until other changes needed\n\n1.12.7\nDEBUG crash when connection reset by peer ; fix data\nDONE remove separate open / close behaviour for G2/G3\n\n1.12.6\nDONE reverse open / close behaviour for G3 shades\n\n1.12.5\nDONE re-write SSE for G3\nDONE fix motion if motion-stop missed\nDONE battery low event added for G3\nDONE force updates to server (helps with new eisy-ui)\nDONE doc clean-up\nDONE string clean-up\nDONE improve logging\nDONE bumped requests and urllib3 versions\n\n1.12.4\nDEBUG Gen-2 make a default capability if none exists in JSON\n\n1.12.3\nDONE G2 Scene event fix\n\n1.12.2\nDONE add shade-offline event handling to error log; currently not passed to ISY\nDONE add updating of scene activation status on longPoll as backup to event\n\n1.12.1\nDONE environment updates\nDONE small refactors\n\n1.12.0\nDONE change versioning to align with workflow\nDONE update docs: README, versionHistory, logging\n\nfor previous version see versionHistory.md\n\n\"\"\"\n","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"532cd6c3-c15a-419d-98a7-55ee5cf9fea4","isPerpetual":true,"version":"1.13.3","branch":"master","url":"https://github.com/sejgit/udi-hunterdouglas-pg3"}],"eisy":true,"devPath":"/usr/home/admin/polyglot/nodeservers/udi-hunterdouglas-pg3","uuid":"28a10a63-d138-4fdc-b983-dd3982b3d893","devMode":false,"ts_updated":"1769984461","from_store":"Production"},{"docs":"https://github.com/UniversalDevicesInc-PG3/udi-poly-ELK/blob/master/README.md","longPoll":"240","executable":"elk-poly.py","readme":"null","status":"active","oauth":"null","url":"http://pg3store.isy.io/v2/nodeservers/beta/ELK.zip","devd":"null","name":"ELK","language":"python3","isyAccess":false,"developer":"jimsearle@gmail.com","ip_added":"70.181.79.77","version_na":"3.4.1","nsInfoPoll":"0","profile_version":"3.4.1","logLevel":"DEBUG","ts_added":"1659070518","shortPoll":"30","author":"Jimbo.Automates","version":"3.4.1","persist_folder":"null","discover":true,"prem":true,"customParams":"{\n  \"temperature_unit\": \"F\",\n  \"host\": \"\",\n  \"user_code\": \"\",\n  \"areas\": \"1\",\n  \"outputs\": \"\",\n  \"change_node_names\": \"false\"\n}\n","nsdata":"null","desc":"ELK Alarm System Nodeserver","polisy":true,"license":"https://github.com/UniversalDevicesInc-PG3/udi-poly-ELK/blob/master/LICENSE","changelog":"null","authorize":false,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"month","price":0,"recurring":"1","edition":"Free","id":"867a94c2-1f3a-4449-9cf4-2cbcc6b4401b","isTrial":true,"version":"3.10.0","branch":null,"url":"https://pg3store.isy.io/v2/nodeservers/beta/ELK.zip"},{"price":30,"edition":"Free","id":"d09911d4-f097-4fb1-806c-7ab73e98375a","isPerpetual":true,"version":"3.4.1","branch":null,"url":"http://pg3store.isy.io/v2/nodeservers/beta/ELK.zip"}],"eisy":true,"uuid":"41497e63-17c1-42c6-ae65-90d44dbb6343","ts_updated":"1693857364","from_store":"Production"},{"longPoll":"600","docs":"POLYGLOT_CONFIG.md","executable":"linez.py","status":"active","name":"Linez","language":"python3","devUser":"admin","isyAccess":false,"developer":"oztronix@comcast.net","ip_added":"76.20.55.237","nsInfoPoll":"0","profile_version":"1.1.6","logLevel":"INFO","ts_added":"1731505308","shortPoll":"10","author":"TJF1960","discover":false,"fileUpload":false,"prem":true,"desc":"The Linez Power Monitors were produced by the now defunct JLM Energy based in Rocklin California and were used, 1 per panel, mostly in residential, to monitor building, solar and grid usage.\n","polisy":true,"license":"LICENSE","authorize":false,"purchaseOptions":[{"price":0,"edition":"Free","id":"2871bd07-be98-4743-a3a5-8de3e8ccb449","isPerpetual":true,"version":"1.1.6","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/beta/linez.zip"}],"install":"install.sh","eisy":true,"uuid":"2d4c07e8-de5e-4257-9062-4e7d5f9d44ae","devMode":false,"ts_updated":"1731505308","from_store":"Beta"},{"docs":"https://github.com/AZTurtle/SensorPushNS","longPoll":"3600","executable":"sensorpush.py","status":"active","oauth":"{\n  \"name\": \"SensorPushNS\",\n  \"client_id\": \"SensorPushNS\",\n  \"client_secret\": \"Y74zxcf2wi9ytMfMJFUrC2c3dkSyzzrB4TDFDf3J\",\n  \"auth_endpoint\": \"https://cloud.sensorpush.com/prod/\",\n  \"token_endpoint\": \"https://api.sensorpush.com/api/v1/oauth/token/\"\n}","name":"SensorPushNS","language":"python3","devUser":"null","isyAccess":false,"developer":"jamesbennett@azturtle.com","ip_added":"70.176.155.96","version_na":"null","nsInfoPoll":"0","profile_version":"0.0.1","logLevel":"CRITICAL","ts_added":"1691428738","shortPoll":"60","author":"AZTurtle","discover":false,"fileUpload":false,"prem":true,"customParams":"{\"Number of Samples\":\"1\"}","desc":"A node server for providing integration with SensorPush G1 WiFi Gateways and their associated sensors.\nUses OAuth2 for authentication with your SensorPush account and should not require any more interaction.\nStill in early developement, looking for feedback!\n","polisy":false,"license":"https://raw.githubusercontent.com/UniversalDevicesInc/pg3-python-interface/master/LICENSE","authorize":true,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"day","price":0,"recurring":15,"edition":"Free","id":"555dd314-4aca-4f20-ac3d-d287cc65fb47","isTrial":true,"version":"0.0.3","branch":"master","url":"https://github.com/AZTurtle/SensorPushNS"},{"price":10,"edition":"Standard","id":"bbb868a9-49b9-4036-928e-f11ea5177786","isPerpetual":true,"version":"0.0.3","branch":"master","url":"https://github.com/AZTurtle/SensorPushNS"}],"eisy":true,"devPath":"null","uuid":"f29e05ce-d055-4200-b449-b161c021ac0d","devMode":false,"ts_updated":"1716611171","from_store":"Production"},{"docs":"https://github.com/UniversalDevicesInc-PG3/udi-poly-Camect/blob/main/README.md","longPoll":"300","executable":"camect-poly.py","status":"active","name":"Camect","language":"python3","isyAccess":false,"developer":"jimsearle@gmail.com","ip_added":"72.219.97.125","version_na":"null","nsInfoPoll":"0","profile_version":"3.0.9","logLevel":"DEBUG","ts_added":"1745793277","shortPoll":"30","author":"Jimbo.Automates","discover":true,"fileUpload":false,"prem":true,"nsdata":"{\n    \"user\": \"\",\n    \"password\": \"\"\n},\n","desc":"Camect UDI Polyglot V3 Nodeserver","polisy":true,"license":"TBD","changelog":"- 3.1.0: 05/31/2025  \n  - IMPORTANT: Check all your \"Vehicle\" references in programs, ISY driver numbers were wrong in profile.\n  - Added [Camect Documentation](https://www.jimboautomates.com/pg3-node-servers#h.ch8gfupl5odo)\n  - USPS and other deliery vehicles fixed, Camect added 'truck', 'pickup', and 'car' to each of them which broke triggers.  Now any of the delivery vehicle just triggers the real name, for example \"Amazon truck\" just triggers \"Amazon\"\n  - Added Human's for all deliver people, Amazon, FedEx, ...\n  - Update camect-py library to 0.2.1\n  - Remove websockets from requirements since it's included in camect now\n  - Added all Driver names so the show up in PG3 UI.\n  - Add GPV driver to all Detected Object Nodes for the Object Name detected.  Useful for Notifications.  You must reboot your IoX after restarting the node server for it to show up properly in notifications.\n  - Add ERR driver on controller to track issues.  Errors are shown in the PG3x UI. Currently only flags unsupported detected objects.\n- 3.0.13: 11/10/2024\n  - Force websockets < 13.0 to Avoid issues with Camect API\n  - Add \"Debug + Modules\" log level to help debug issue with camect API\n- 3.0.9: 08/15/2022\n  - Work around a bug in IoP which reports Control events when Status is changed to either True or False.\n    - See [Iop 5.4.4 Bug](#IOP-544-Bug)\n- 3.0.8: 06/06/2022\n  - Throttle node adds \n  - Add change_node_names user paramater to allow Camect camera names to always be the source, on restart/discover names will change on ISY.\n- 3.0.7: 06/05/2022\n  - Fix: [AttributeError: ''Host'' object has no attribute ''save''](https://github.com/UniversalDevicesInc-PG3/udi-poly-Camect/issues/23)\n  - Fix: [Latest version not adding default username and password](https://github.com/UniversalDevicesInc-PG3/udi-poly-Camect/issues/20)\n  - Fix: [Buttons like Dog, Skunk not working](https://github.com/UniversalDevicesInc-PG3/udi-poly-Camect/issues/16)\n- 3.0.6: 04/15/2022\n  - Skip deleted cameras.\n  - Fixed Typo in above error\n- 3.0.4: 03/25/2022\n  - Better fix for sending detected object commands\n- 3.0.3: 03/18/2022\n  - Fix sending Commands for all detected objects\n- 3.0.2: 02/21/2022\n  - query controller and hub no longer queries all children since doing so creates to much traffic for 3am query\n  - use callbacks for alert enable/disable and camera offline/online instead of polling\n- 3.0.1: 01/01/2021\n  - Fix crash in query\n- 3.0.0: 12/28/2021\n  - Initial PG3 version\n- 0.2.5: 08/14/2021\n  - Another attempt to fix simlar crash [Crash due hub not responding](https://github.com/jimboca/udi-poly-Camect/issues/15)\n- 0.2.4:\n  - More fixes for [Crash due to timeout not trapped](https://github.com/jimboca/udi-poly-Camect/issues/13)\n- 0.2.3:\n  - Fixed [Crash due to timeout not trapped](https://github.com/jimboca/udi-poly-Camect/issues/13)\n    - Should be fixed, but have to confirm\n- 0.2.2:\n  - Fixed to use pip3 in install.sh\n- 0.2.1:\n  - __IMPORTANT__ Delete NS if running version prior to 0.2.0 !\n  - Added count of Camect''s Configured and Connected in Controller\n- 0.2.0:\n  - __IMPORTANT__ If using previous version you should delete the nodeserver and add it again.\n    - Should be the last time, all address are unique and remembered so can not be duplicated\n  - Discover is only run by default on initial startup\n  - Camera''s are remembered, so on restarts a discover is not run.\n    - See notes in about when new cameras are discovered\n  - Add selecting mode on Camect Host\n  - Add selecting mode on Controller to set all host modes\n- 0.1.1\n  - Enable/Disable Alerting working\n- 0.1.0\n  - __IMPORTANT__ If using previous version you should delete the nodeserver and add it again.\n  - Group detected objects by major types, person, vehicle, animal, insect\n- 0.0.4\n  - Changed methods used to send DON so it''s clear in the log\n  - Fixed profile for Controller GV2 name\n- 0.0.3\n  - Fixed event passing, and receiving DON/DOF''s in DetectedObject''s\n- 0.0.2\n  - First working version\n- 0.0.1\n  - First release\n","authorize":false,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"month","price":0,"recurring":"2","edition":"Free","id":"40736fce-8bdf-4ddd-b451-494cf1860bb1","isTrial":true,"version":"3.0.9","branch":"","url":"http://pg3store.isy.io/v2/nodeservers/Beta/Camect.zip"},{"price":25,"edition":"Standard","id":"051247ca-6275-4a98-b9a5-9f75752ce32f","isPerpetual":true,"version":"3.0.13","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/Beta/Camect.zip"},{"recurringPeriod":"month","price":0,"recurring":1,"edition":"Free","id":"d9d25e7e-a453-4a34-be07-22de0d51c43b","isTrial":true,"version":"3.1.0","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/beta/Camect.zip"}],"eisy":true,"uuid":"76331b95-1734-4dd9-b40f-d9819f6b5e6f","devMode":false,"ts_updated":"1748817173","from_store":"Production"},{"docs":"https://github.com/sjpbailey/udi-rheem-poly-master-v3/blob/master/README.md","longPoll":"120","executable":"rheem-poly.py","readme":"null","status":"active","oauth":"null","devd":"null","name":"Rheem_Tankless","language":"python3","devUser":"null","isyAccess":false,"developer":"sjpbailey@comcast.net","ip_added":"98.41.236.33","version_na":"1.0.0","nsInfoPoll":"0","profile_version":"1.0.0","logLevel":"INFO","ts_added":"1679194860","shortPoll":"60","author":"Steve Bailey","version":"1.0.0","persist_folder":"null","discover":false,"prem":true,"customParams":"{\n\t\t\"email\": \"joe@ddd.net\",\n\t\t\"password\": \"go with your password\"\n}","nsdata":"null","desc":"This Node Server is for a single Rheem Tankless GAS Water Heater for communications to the Econet API.\nFuture will include Multiple site heaters, electric, heat pump water heaters.\nThis node server is linked to the Rheem Econet API. It is for One water heater only and was tested on a Tankless Gas water heater.\nCurrently it shows its mode 'GAS' and your setpoint that you can now adjust, you can also remotely power the unit down.\n\nConfiguration: is your email address and your password for Econet.","polisy":true,"license":"https://github.com/sjpbailey/udi-rheem-poly-master-v3/blob/master/LICENSE","changelog":"Oct 28, 2023:\n1. Added Setpoint. \n2. Added Unoccupied/Occupied mode, Powers Off Device.\n3. Need to buy Econet adapter for second water heater!\n4. Need to Add Electric and Heat pump models.","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"1bbc5563-b660-47fb-a6d4-37263f39991a","isPerpetual":true,"version":"1.0.1","branch":"master","url":"https://github.com/sjpbailey/udi-rheem-poly-master-v3"}],"eisy":true,"devPath":"null","uuid":"6634a506-0bd0-4f94-acf0-85aa276f6a8b","devMode":false,"ts_updated":"1704115451","from_store":"Local"},{"docs":"https://github.com/sjpbailey/udi-poly-gpm-scruggs-python/blob/main/README.md","longPoll":"600","executable":"GPMController.py","status":"active","name":"GPM_Meter","language":"python3","devUser":"admin","isyAccess":false,"developer":"sjpbailey@comcast.net","ip_added":"98.41.236.33","version_na":"null","nsInfoPoll":"0","profile_version":"1.0.0","logLevel":"INFO","ts_added":"1703023231","shortPoll":"60","author":"Bailey","discover":false,"prem":true,"customParams":"{\n\t\t\"ip\": \"0.0.0.0\"\n\t}","desc":"This Node Server Plugin is for Jimmy Scruggs, \nIt inputs a Hall Effect GPM sensor into an Arduino UNO running Sketch \"flow_GPM.ino\". From there it is connected to the USB port of the host Server Raspberry PI. There the GPM program sends out the GPM via UDP Socket to the Eisy Static IP address. The RPI is running \"talktoarduino.py\" this sends it to your client machine IP address set to the Eisy Static IP address. The RPI runs \"talktoarduino.py\" program and must be started with auto start on the RPI. \n          !!The Server IP address has to be set the same as your Eisy or Polisy Static IP Address!!","polisy":true,"license":"https://github.com/sjpbailey/udi-poly-gpm-scruggs-python/blob/main/LICENSE","changelog":"December 20, 2023\n1. Added first round of Arduino and RPi programs to the Plugin.\nJanuary 16, 2024\n1. Revised C for Arduino","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Standard","id":"ebedd10e-bbd2-4a33-a31b-aefff13e79e0","isPerpetual":true,"version":"1.0.0","branch":"main","url":"https://github.com/sjpbailey/udi-poly-gpm-scruggs-python"}],"eisy":true,"uuid":"553b0e94-b58d-480b-81a9-434646e46fd7","devMode":false,"ts_updated":"1705461262","from_store":"Beta"},{"docs":"https://github.com/BME-nodeservers/docs/blob/master/udi-meross-poly.md","longPoll":"600","executable":"meross.py","readme":"Copyright(C) 2025 Robert Paauwe\n\nThis plug-in integrates Meross (https://www.meross.com) smart home\ndevices. Meross devices are WiFi based devices that are typically\nmanaged using the Meross mobile App and communicate via a \nproprietary API with the Meross servers.\n\nSince the API is proprietary and not publicly documented, this \nplug-in is based on various efforts to reverse engineer the protocol\nand as such, may break if Meross makes changes to the API.\n\nWhile developing this plug-in I've experienced significant issues\nsimply getting the devices to work.  It took many attempts to\npair/provision the MSS115 plugs with the mobile app. The SmartHub\ncontinues to go off-line frequently and fails to accept commands \nbeing sent to it.  At this point, I can't recommend purchasing \nMeross devices based on the existence of this plug-in.\n\nSupported devices:\n<ul>\n  <li>MSS115   (Smart plug mini)\n  <li>MSH300HK (SmartHub)\n  <li>MS200    (SmartHub + door/window sensor)\n  <li>MSS110 (Smart Outlet)\n  <li>MSS620 (indoor/outdoor outlet)\n  <li>MSS510 (non-dimming switch)\n  <li>MSS550 (non-dimming 3-way switch)\n  <li>MSS650 (dimming switch)\n  <li>MSS570 (dimming 3-way switch)\n  <li>MSL120 (LED RGB bulb)\n</ul>\n\nIf you have devices that are not on the above supported device list,\nplease note that it's typically not a lot of effort to add support \nfor other devices.  If you run the plug-in, it will output the\ninformation I need to add support for unknown device types in the\nlog.  Sending that log to me should provide enough information for \nme to add support for these devices into the plug-in.\n\nTBD support:\n<ul>\n  <li>MSS210 (Smart plug)\n  <li>MSS305 (Smart plug with power consumption)\n  <li>MSS310 (Smart plug with power consumption)\n  <li>MSS310h (Smart plug with power consumption)\n  <li>MSS425E/MSS425F (Smart strip)\n  <li>MSS530H (Wall-mount switches)\n  <li>MSG100 (Garage opener)\n  <li>MSG200 (3-doors Garage opener)\n  <li>MSH300 (Smart hub + valve thermostat)\n  <li>MS100 (Smart hub + temperature/humidity sensor)\n  <li>MS100F (temperature/humidity sensor)\n  <li>MSS710\n  <li>MSXH0 (Smart Humidifier)\n</ul>\n\n","status":"active","oauth":"null","devd":"null","name":"Meross","language":"python3","devUser":"admin","isyAccess":false,"developer":"bpaauwe@bobsplace.com","ip_added":"73.48.241.215","version_na":"null","nsInfoPoll":"0","profile_version":"1.0.0","logLevel":"DEBUG","ts_added":"1743272883","shortPoll":"60","author":"Bob Paauwe","persist_folder":"null","discover":true,"fileUpload":false,"prem":true,"customParams":"{\n\"Email\": \"\",\n\"Password\": \"\",\n\"Locale\": \"US\"\n}","nsdata":"null","desc":"Support for Meross smart home devices (https://www.meross.com)","polisy":true,"license":"https://raw.githubusercontent.com/BME-nodeservers/docs/refs/heads/master/LICENSE","changelog":"1.0.9 - fix bug in RGB bulbs, fix bug in Dimmer switches\n1.0.8 - re-authenticate if token expires.\n1.0.7 - fix  bug in initialize_node that was crashing startup\n1.0.6 - Initialize nodes from initial query, add some debug info, fix bug in bulb polling, fix but in setting outlet channel\n1.0.5 - Sixth beta release\n1.0.4 - Fifth beta release\n1.0.3 - Fourth beta release\n1.0.2 - Third beta release\n1.0.1 - Second beta release\n1.0.0  - Initial beta release","authorize":false,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"day","price":0,"recurring":30,"edition":"Standard","id":"682752e0-bed9-4518-88b5-a676bb7840a7","isTrial":true,"version":"1.0.9","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/beta/udi-meross-poly.zip"},{"price":10,"edition":"Standard","id":"94bfffb5-ed5c-4c01-ab07-c77ab91cad8c","isPerpetual":true,"version":"1.0.9","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/beta/udi-meross-poly.zip"}],"eisy":true,"devPath":"null","uuid":"0697b47d-3e6a-421c-91f4-99e913978eed","devMode":false,"ts_updated":"1761436142","from_store":"Local"}]