[{"docs":"https://github.com/UniversalDevicesInc-PG3/udi-poly-airscape/blob/master/README.md","longPoll":300,"executable":"airscape-poly.py","status":"active","name":"Airscape","language":"python3","isyAccess":false,"developer":"jimsearle@gmail.com","ip_added":"72.194.105.190","nsInfoPoll":0,"logLevel":"WARNING","ts_added":1628990514,"shortPoll":60,"author":"Jimbo.Automates","discover":false,"fileUpload":false,"desc":"Airscape Node Server","polisy":true,"license":"TBD","changelog":"- 3.0.7: 05/21/2024\n  - Fix: [Crash due to no session](https://github.com/UniversalDevicesInc-PG3/udi-poly-airscape/issues/1)\n  - Remove server.json, use new method to set version\n- 3.0.6: 12/26/2021\n  - Added conn_status to Controller so ST is properly set\n    - Existing users will need to delete the controller node in the Polyglot UI and restart the NS\n  - Removed debug level from nodedef since it's controlled in the Polyglot UI noiw.\n- 3.0.5: 11/05/2021\n  - Works with udi_interface 3.0.22\n- 3.0.4: 11/03/2021\n  - Log levels all working with new methods\n- 3.0.2: 08/26/2021\n  - Log levels fixed\n  - Fix crash on query\n- 3.0.1: 08/15/2021\n  - Setting debug modes working, but need https://github.com/UniversalDevicesInc/pg3/issues/60 fixed before Debug+Session mode works.\n- 3.0.0: 08/15/2021\n  - Initial release of PG3 conversion\n- 2.1.0: 06/20/2021\n  - Better fix for [Don't upload profile on every restart, add version checking](https://github.com/jimboca/udi-poly-airscape/issues/2)\n  - Changes to support GH and Alexa, add it as a Fan.  Looks like a 5 speed fan, that's the best we have for now.\n- 2.0.9: 11/09/2019\n  - Always remove the server_response data since it may not be parseable, thanks @bbennett66 @BillB66\n- 2.0.8: 10/24/2019\n  - Send heartbeat on startup\n- 2.0.7: 10/22/2019\n  - Modify speed range from 0-9 to 0-10, Thanks @BillB66\n- 2.0.6: 04/23/2019\n  - Set Controller default ST=1 as it should be.\n- 2.0.5: 04/22/2019\n  - Add timeout in watch_door for 60 seconds\n  - [Don't upload profile on every restart, add version checking](https://github.com/jimboca/udi-poly-airscape/issues/2)\n- 2.0.4: 04/21/2019\n  - Added interlock 1 & 2, although I don't have the equipment yet, so can't completely test\n  - Fixed Timer to show correctly\n  - Cleaned up code.\n- 2.0.3: 04/18/2019\n  - Add missing requests to requirements.txt\n  - Make sure node address is lowercase and <= 14 characters\n  - Change default polling to 5 seconds\n- 2.0.2: 04/17/2019\n  - Set Speed works\n  - Can reference everything in Programs\n- 2.0.1:\n  - When doorinprocess it watches the status in a tight loop.\n- 2.0.0: 04/16/2019\n  - Initial Release\n","authorize":false,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"month","price":0,"recurring":1,"edition":"Free","id":"7871163e-0749-4535-ba53-63f0fb06e5b4","isTrial":true,"branch":"","version":"3.0.7","url":"https://pg3store.isy.io/v2/nodeservers/production/Airscape.zip"},{"price":0,"edition":"Free","id":"3195a4e0-e603-45a4-a9dd-68bd6ff06312","isPerpetual":true,"branch":"","version":"3.0.7","url":"https://pg3store.isy.io/v2/nodeservers/production/Airscape.zip"}],"eisy":true,"uuid":"0bec5267-b1c0-44e3-aa60-e1f84d1c5291","ts_updated":1716347846},{"docs":"http://github.com/BME-nodeservers/docs/blob/master/udi-mower-poly.md","longPoll":60,"executable":"mower.py","readme":"<h1>Husqvarna Automower plugin</h1>\n(c) 2018-2021 Robert Paauwe\n\nThis plugin is intended to interact with Husqvarna Automowers. It can track the mowers status and send commands to control the mower.\n\nYou will need account access to your mower(s) via the Automower API. See ???\n\nAt this time the plugin can only support a single Automower.\n\n<h2>Configuration</h2>\n<table>\n<tr><td><b>Short Poll:</b></td><td>How often to poll the mower for status [in seconds]</td></tr>\n<tr><td><b>Long Poll:</b></td> <td>N/A</td></tr>\n<tr><td><b>Username:</b></td><td>Your Husqvarna account username</td></tr>\n<tr><td><b>Password:</b></td><td>Your Husqvarna account password</td></tr>\n</table>\n\n<h2>Node substitution variables </h2>\nsys.node.[automow].ST (Status of mower)\nsys.node.[automow].GV0 (battery)\nsys.node.[automow].GV1 (operating mode)\nsys.node.[automow].GV2 (last error)\nsys.node.[automow].GV3 (start source)\nsys.node.[automow].GV4 (start timestamp)\nsys.node.[automow].GV5 (status mode)\nsys.node.[automow].GV6 (status activity)\nsys.node.[automow].GV7 (status state)\nsys.node.[automow].GV8 (reason)\nsys.node.[automow].GV9 (status type)\n\n","status":"active","name":"HusqvarnaMower","language":"python3","isyAccess":false,"developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":0,"logLevel":"INFO","ts_added":1626652950,"shortPoll":60,"author":"Bob Paauwe","discover":false,"fileUpload":false,"customParams":"{\n                \"Username\": \"\",\n                \"Password\": \"\"\n}","desc":"Husqvarna Mower: A plugin that adds control of a Husqvarna Automower","polisy":true,"license":"http://github.com/BME-nodeservers/docs/blob/master/LICENSE","changelog":"2.0.1 06/10/2022\n - fix query command\n2.0.0 07/18/2021\n - Converted to work with Polyglot version 3\n1.0.4 08/05/2020\n - fix syntax error\n1.0.3 08/05/2020\n - re-authenticate if get status fails.\n1.0.2 10/21/2019\n - handle max retry errors properly.\n1.0.1 07/23/2019\n - Change mower mode to mowing mode to better reflect what's being reported\n - Fix connection status reporting\n1.0.0 07/16/2019\n - First public release\n0.0.2 07/02/2019\nUpdated profile files to add pause command, set the start override period, and added additional status info.\n0.0.1 05/03/2019\nInitial version published to github","authorize":false,"install":"install.sh","purchaseOptions":[{"id":"37a1b2ea-82a9-4691-8e49-c7042d63d922","price":0,"recurringPeriod":"day","isTrial":true,"edition":"Free","url":"https://pg3store.isy.io/v2/nodeservers/production/udi-mower-poly.zip","branch":"","version":"2.0.1","recurring":30},{"version":"2.0.1","price":10,"url":"https://pg3store.isy.io/v2/nodeservers/production/udi-mower-poly.zip","branch":"","edition":"Standard","id":"30c4dd5b-84a6-42c2-814d-912af48ce7ad","isPerpetual":true}],"eisy":true,"uuid":"c9527579-10bd-4be3-8f12-e6c40e57aabf","ts_updated":1788540439},{"docs":"https://github.com/ve7gel/Docs/tree/main/TimedataPG3","longPoll":3598,"executable":"timedata.py","readme":"# Timedata Node Server\nA Timedata node server for the Universal Devices ISY\n\nCopyright 2020, 2023, 2025 Gordon Larsen\n","status":"active","name":"Timedata","language":"python3","isyAccess":false,"developer":"gordon@the-larsens.ca","ip_added":"24.68.122.19","nsInfoPoll":0,"logLevel":"WARNING","ts_added":1634857131,"shortPoll":60,"author":"Gordon Larsen","discover":false,"fileUpload":false,"customParams":"{\"Latitude\":\"\",\"Longitude\":\"\"}","desc":"An ephemeris node server for Polyglot V3 on Polisy","polisy":true,"license":"https://github.com/ve7gel/Docs/blob/main/LICENSE.md","changelog":"## Release Notes\n - 3.5.2 18/06/2026\n   - Bugfix - values not initializing on plugin start\n - 3.5.1 17/06/2026\n    - Profile fix for Query\n  - 3.5.0 01/06/2026\n    - release version\n  - 3.5.0b 26/05/2026\n    - replaced shortPoll with scheduler loop (shortPoll no longer used. All time changes now occur at the \"00\" second\n      point regardless of when the plugin was restarted.\n  - 3.4.0 28/10/2025\n    - minor code and profile changes to fix a problem with data not showing properly in eisy-ui\n    - the changes may require that certain elements in IoX programs be updated.\n  - 3.3.1/2 28/10/2025\n    - more profile tweaks\n  - 3.3.0 25/07/2025\n    - profile tweaks\n  - 3.2.24 22/04/2023\n    - update nodeserver status\n- 3.2.23 20/03/2023\n  - update requirements for latest udi_interface\n- 3.2.22 23/04/2022\n  - minor profile updates\n- 3.2.21 09/03/2022\n  - update requirements for udi_interface 3.0.36\n  - fix sunrise/sunset calculations when time changes between DT and ST.\n- 3.2.20 27/02/2022\n  - add stop handler\n- 3.2.19 13/02/2022\n  - update link to README\n- 3.2.18 28/01/2022\n  - update requirements for latest udi-interface\n- 3.2.16 21/10/2021\n  - add code to fill sunnode fields on startup\n- 3.2.10 21/10/2021\n  - updated and release for Polyglot V3","authorize":false,"install":"install.sh","purchaseOptions":[{"price":20,"edition":"Standard","id":"c84d38f8-6150-46c4-8044-360fa0fb6112","isPerpetual":true,"version":"3.5.2","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/Timedata.zip"}],"eisy":true,"uuid":"e5d6bed5-e04d-4cd1-a065-f94fccd9c674","ts_updated":1781820812},{"docs":"https://github.com/Panda88CO/udi-yolink/blob/main/README.md","longPoll":3600,"executable":"udi-YoLink.py","readme":"# udi-yolink\n    Support for YoLink devices.\n    Suggested installation is on PG3x from version 1.1.x going forward. PG3x is updated to Python 3.11. It still works under PG3, but we cannot guarantee how long that will remain possible.\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    ''Switch'', ''THSensor'', ''MultiOutlet'', ''DoorSensor'',''Manipulator'', \n    ''MotionSensor'', ''Outlet'', ''GarageDoor'', ''LeakSensor'', ''Hub'', \n    ''SpeakerHub'', ''VibrationSensor'', ''Finger'', ''Lock'' , ''LockV2'', ''Dimmer'', ''InfraredRemoter'',\n    ''PowerFailureAlarm'', ''SmartRemoter'', ''COSmokeSensor'', ''Siren'', ''WaterMeterController'',\n    ''WaterDepthSensor'', ''WaterMeterMultiController'', ''SprinklerV2'', ''Thermostat'',\n    ''SoilThcSensor''\n\n    \n    Code uses MQTT communications.\n    ###SHORT POLL sends a heartbeat to the ISY - default is 60 seconds - It also checks whether data has been updated since the last update. This can happen when a command has a very slow reply from the cloud. The server uses separate threads for sending commands and receiving results.\n    \n    ###LONG POLL checks the online state of the devices (if a device goes offline, it will not be detected until this is called - for battery-operated devices it may take even longer, as data appears to be cached in the cloud - battery devices are not queried as part of the LONG POLL).\n    A device will be redetected once it is back online.\n    Default is 3600 (1 hour).  \n\n    Note: if set too often, it will affect battery consumption (especially the Manipulator). If set to more than 2 hours, the token will expire (but a new one should be obtained).\n\n\n## Code\n    Code uses V2 of the YoLink API - PAC/UAC authentication - currently this API only supports a single home (even if the app supports more).\n\n    Coded in Python 3 - MIT license.\n\n## Installation\n    Credentials need to be added to configuration in the YoLink node server under PG3. In the YoLink app, go to Settings->Account->Advanced Settings->User Access Credentials and copy UAID and SecretKey (alternative path in the app is Profile->Advanced Settings->User Access Credentials).\n    It is possible to get credentials for each home that is defined, but the node 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) and then restart. Sometimes it seems to require 2 restarts to fully get all devices synchronized (I have looked but cannot find a pattern).\n    Sometimes a reboot of the ISY is required to make the node server show up correctly.\n\nUAID/SecretKey\n    Credentials need to be added to configuration in the YoLink node server under PG3. In the YoLink app, go to Settings->Account->Advanced Settings->User Access Credentials and copy UAID and SecretKey (alternative path in the app is Profile->Advanced Settings->User Access Credentials).\n    It is possible to get credentials for each separate home defined in the YoLink app, but the node server can only handle one of them currently.\n    \nTEMP_UNIT\n    Select F or C\n     \nWATER_UNIT\n    Select Liter or Gallon\n\nNBR_TTS\n    Number of speakerhub Text to Speech messages to support (see below)\n    \n\n## Notes \n    One node server can only handle 1 home - you can get credentials for each home in the app by selecting the home and getting 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 - countdown is running on the node server, not the device.\n\n    <SpeakerHub> supports up to 10 Text-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 containing the messages during startup.\n\n    In configuration, TEMP_UNIT can be used to set the temperature unit to C, F.\n\n    YoLink schedules are now supported.\n    \n    Remaining delay time shown in ISY is estimated - countdown is running on the node server, not the device.\n   \n    \n    The latest version of the node reports the latest report time for each device - the AC home automation will get a time.now() option so seconds between the two can be used in conditions.\n    \n\n    \n","status":"active","name":"YoLink","language":"python3","isyAccess":false,"developer":"christian.olgaard@gmail.com","ip_added":"73.93.40.59","nsInfoPoll":0,"logLevel":"INFO","ts_added":1667342280,"shortPoll":600,"author":"Panda88CO","discover":false,"fileUpload":false,"customParams":"{\"UAID\":\"\",\"SECRET_KEY\":\"\",\"TEMP_UNIT\":\"C\",\"WATER_UNIT\":\"Liters\", \"NBR_TTS\":\"0\"}","desc":"Nodeserver to allow integration of Yolink devices","polisy":true,"license":"https://github.com/Panda88CO/udi-yolink/blob/main/LICENSE","changelog":"1.8.61 - Fix to remove ghost trigger in YS7508 switch (has 2 remote buttons)\n1.8.60 - Fix to remove ghost triggers in smartremoter\n1.8.58 - minor bugfixes - mostly thermostat\n1.8.56 - minor bug fixes - water meter unit and labels.  The UDmobile label issue is assumed to be fixed with a new UDx release - it is a known issue  \n1.8.50 - minor bug fixes - smartRemoter slightly updated \n1.8.45 - New major release, Added quite a few devices (See README).  Data handling is rewritten to be easier to maintain.  Schedules have move to a separate child node.  One or two nodes have updated behavior (LeakDetector for one) as additional capabilities have been added, so you may need to update programs using those.  There is a known bug with the dimmer creating ERRORs in the LOG.  Have been waiting on yolink to fix this for two weeks now - I''ll release a patch once in place (if needed)  \n1.6.15 - Fix to address issue when API does not report model number\n1.6.14 - reduces number of calls to PG3 - ShortPoll now only sends a heart beat.  removes the list of nodes in configuration (not used)\n1.6.11 - fix missing update in manipulator \n1.6.10 - work around bug in AC - Fixes issues with selecting values in programs \n1.6.8/9- minor fix - fixes udimobbile error report\n1.6.3- minor fix - opefully fixes udimobbile error report\n1.6.2 - handle different watermeterController reporting\n1.6.1 - Improved retry for busy/offline devices\n1.5.16 - minor fix in speakerhub reporting \n1.5.15 - co-release version with TSTyolinkLocal (sharing code tree now)\n1.5.14 - fixed typo in setup file for local hub \n1.5.13 - Added support for HUB (battery powered hubs can now be used to test is powered by AC or internal battery) - Updated IRremoter to have subnodes for each code - supports learning codes now.  Added a GV30 variable to all nodes - it is the same as the current ST (mostly if node is online) - moved ST to show the most relevant parameter of the node - this is to support udiMobile -I hope that it is not too big a problem as some code may need to be updated \n\nReverse release order below \n0.8.x Added support for SmartRemoter (FOB) and PowerFailureAlarm\n0.8.41 - Added control functionality to FOB/SmartRemoter\nAdded a possible fix for X3 device (I do not own one, so difficult to test)\n0.8.50 - Added support for device Temperature for Motion, Leak and Vibration sensor\n0.8.88 Fixed a bug relating to refresh on FOB / smartRemoter.  It would execute a key press when refreshed by shortPoll/longPoll.    Fixed bug on toggle functionality as well\n0.8.89 - trying to fix issue where YoLink will disconnect if too many devices try to register at the same time - only issue when a lot of devices are in installation \n0.9.63 - Fixed bug with system going offline not showing.  Added Smoke detector \nAdded Siren (also controllable 12V supply)\nUpdated sensors to allow config of DON/DOF behavior.\nChanged use model for delays in switches, outlets (incl multi) and manipulators.  Now allows programing both On and OFF delay in 1 operation (using new drop down) - the delay setting now prepare the delay - not executing it.  The main reason  for this is to allow a programmed sequence of both on and off (or vise versa) - e.g. to power cycle the internet connection - or ensure a valve turns off even it internet goes down between 2 programming operations. (Note, Yolink changed behavior of delay so it would be reset if a new command followed the programming of delay)\n0.9.84- Added more robust approach to ensure not violating call limits.  Current cal limits are 100call per 50 min and 20 6 calls to same device per min and less than 200ms between calls to same devices\nAdded variable to show if calls are delayed\nCalls will be delayed if too many calls were issued.\nCurrently there is an API bug causing an offline device to show it is suspended (hope it will get fixed)\nFixed bug in removing nodes that no longer exist (removed from Yolink app)\nChanged default shortPoll to 10 min\nNOTE -currently there appears to be an API bug - is a device is off-line it throws the call limit error no matter how many calls are issued to it \n0.9.85 - fixed minor bug causing delays being added too often \n0.9.86 - fixed bug and added functionality around TH sensors - improved installation of multi-Output devices (when not online when installing)\n1.0.3 - Added support for schedules.  Improved delay setup (May delete the old version as it takes extra screen space, but it will require programs to be updated\nAdded support for the new switched with 2 extra buttons and second programming of delays - make sure to update firmware.\nAdded Alert support for power sensing outlets\nAdded preliminary support for watermeter (there is no official API yet)\nFixed few bugs relating to on-line state\nMoved to different MQTT method - seems to match what YoLink uses for counting API calls \n1.0.7 - fixed bug relation to device being offline (sensors)\n1.0.8 Fixed bug in water meter controller \n1.0.9 Improved handling on lost token \n1.1.2 - Improved switch operation\n1.1.3 - improved motion sensor state\n1.1.4 Improved different sensors - removed trigger buttons in AC\n1.2.2 Saving the setting state for sensors (and FOB/switch 2) so it will not get reset on restart\n1.2.3 - improved parsing of UAID and secret key to remove spaces\n1.2.5 Fixed bug in outlet - state  not updating\n1.2.6 - Fixed some typos in config files\n1.2.7 - Build to test release system - no other changes \n1.3.12 - Support for LockV2, Added time from last update - support for schedules with sec resolution (if device support) - NOTE removed individual setting for ON and OFF delays - now use setting both (to save screen real estate)\n1.4.15 - moved to report time stamp of last info - AC will offer actual time in a new release so one can calculate the difference.  \nAdded some support for dimmers in scenes.  Fixed a few other bugs .  Added new relay switch (include Power measurements) and 2 button FOB (smart remoter)\n1.4.21 - updated water meter to latest API - fixed some switch issues - Hope water meter unit is calculated correctly between the different meters (Guessing how to use API)\n1.4.26 - fixed issues in temp sensor and speakerhub\n","authorize":false,"install":"install.sh","purchaseOptions":[{"version":"1.8.61","branch":"REL20261005","id":"4310fb80-b38f-4f0d-b80e-d06af77cdb12","price":20,"edition":"Standard","isPerpetual":true,"url":"https://github.com/Panda88CO/udi-yolink"},{"id":"f244121f-1e41-4539-8fd6-63e735c92baa","version":"1.8.61","branch":"REL20261005","price":0,"recurring":15,"url":"https://github.com/Panda88CO/udi-yolink","isTrial":true,"edition":"Standard","recurringPeriod":"day"}],"eisy":true,"uuid":"78312440-23ea-4ed6-9361-9cdc2d5e7c6b","ts_updated":1791241952},{"docs":"https://github.com/PG3Plugins/udi-sun-poly/master/blob/README.md","longPoll":60,"executable":"sun-poly.py","readme":"<h1>Sun and Moon Tracker</h1>\nThis plugin provides:\nsolar azimuth\nsolar elevation\nsolar zenith\nmoon phase\n\nThe plugin will send a DON command at sunset and a DOF command at sunrise. These can be used in program conditions to execute other events at sunrise and sunset.\n\n<h2>Configuration</h2>\nEnter the longitude and latitude of your location.\nElevation is optional\n","status":"active","name":"Sun","language":"python3","isyAccess":false,"developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":0,"logLevel":"INFO","ts_added":1650652784,"shortPoll":30,"author":"xKing","discover":false,"fileUpload":false,"customParams":"{\n  \"longitude\": \"\",\n  \"latitude\": \"\",\n  \"elevation\": 0\n}\n","desc":"Sun and Moon tracker plugin","polisy":true,"license":"https://github.com/PG3Plugins/udi-sun-poly/master/blob/LICENSE","authorize":false,"install":"install.sh","purchaseOptions":[{"id":"1bc8f003-a8b8-4eba-9c3f-cad65c9c7e99","version":"0.0.3","edition":"Free","price":0,"branch":"master","isPerpetual":true,"url":"https://github.com/PG3Plugins/udi-sun-poly"}],"eisy":true,"uuid":"c8bb9415-08c7-4cd0-8640-532bebce4e41","ts_updated":1788556893},{"docs":"https://github.com/BME-nodeservers/udi-purpleair-poly","longPoll":6000,"executable":"purple.py","readme":"\n<h1>PurpleAir</h1> \n\nThis is a plug-in to access AQI data from the PurpleAir air monitoring sensors.  \n\nThe plug-in can be configured to get the data from a sensor on your local network or\nit can query the PurpleAir cloud servers.\n\nTo access data from the PurpleAir cloud severs you need to create an account to\nget a READ API key.  See https://develop.purpleair.com/.  \n\nLocal data queries and cloud data queries return slightly different data.  From the \ncloud we are able to get data averaged over various lengths of time.  For example\nwe have access to the PM 2.5 value averaged over 24 hours. The local queries will only\nreturn the current PM 2.5 value.  The plug-in will create nodes with a different template\nfor local and cloud configurations. \n\nAnother difference between local and cloud queries is in how often we check for new data.\nWhen querying data from the cloud, PurpleAir has requested that queries be limited to once\nevery 10 minutes.  Local queries can be made as often as 1 every second although this may\nlead to high CPU usage on the Polisy/eisy so using 10 or more seconds is recommended.\n\nYou could configure the plug-in to get both the local and cloud based data but because of\nthe time/averaging you may get different values returned for the same fields.\n\n\n<b>Controller node</b>\n<ul>\n<li>sys.node.[address].ST      (Node sever online)\n</ul>\n\n<b>Local Air Quality node</b>\n<ul>\n<li<sys.node.[address].CLITEMP (current temperature)\n<li>sys.node.[address].CLIHUM  (current humidity)\n<li>sys.node.[address].BARPRES (current barometric pressure)\n<li>sys.node.[address].DEWPT   (current dewponit)\n<li>sys.node.[address].PM25    (current PM 2.5 value)\n<li>sys.node.[address].PM10    (current PM 1.0 value)\n<li>sys.node.[address].GV0     (current PM 10 value)\n<li>sys.node.[address].AQI     (EPA Air Quality Index number)\n<lisys.node.[address].GV11    (EPA Air Quality Index category)\n<li>sys.node.[address].GV12    (Data confidence)\n</ul>\n\n<b>Cloud Air Quality node</b>\n<ul> \n<li> sys.node.[address].CLITEMP (current temperature)\n<li>sys.node.[address].CLIHUM  (current humidity)\n<li>sys.node.[address].BARPRES (current barometric pressure)\n<li>sys.node.[address].GV0     (current PM2.5 value speed)\n<li>sys.node.[address].GV1     (Age of data in minutes)\n<li>sys.node.[address].GV3     (10 minute average)\n <li>sys.node.[address].GV4     (30 minute average)\n <li>sys.node.[address].GV5     (60 minute average)\n<li>sys.node.[address].GV6     (6 hour average)\n<li>sys.node.[address].GV7     (24 hour average)\n<li>sys.node.[address].GV8     (1 week average)\n<li>sys.node.[address].GV10    (EPA Air Quality Index number)\n<li>sys.node.[address].GV11    (EPA Air Quality Index category)\n<li>sys.node.[address].GV12    (Data confidence)\n</ul>\n\n<h2>Requirements</h2>\n1. Polyglot PG3 or PG3x\n2. ISY firmware 5.7.x or later\n","status":"active","name":"PurpleAir","language":"python3","isyAccess":false,"developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":0,"logLevel":"INFO","ts_added":1620318916,"shortPoll":600,"author":"Bob Paauwe","discover":false,"customParams":"{\n\"APIKey\": \"\"\n}","desc":"Monitor public PurpleAir air quality sensors","polisy":true,"license":"https://raw.githubusercontent.com/BME-nodeservers/docs/master/LICENSE","changelog":"2.1.3 02/25/2024\n  - Fix bug introduced with the improved data handling for indoor sensors\n2.1.2  02/23/2024\n  - Improve the data handling for indoor sensors\n2.1.1  02/20/2024\n  - Trap divide by zero error when PM 2.5 is zero\n 2.1.0  11/14/2023\n  - Add ability to query the sensor locally\n  - Limit the number of fields being queried using the API\n- 2.0.2 06/05/2022\n    - Switch to using new PurpleAir API.  \n- 2.0.1 03/01/2022\n   - fix query for main node.\n- 2.0.0 03/01/2021\n   - Updated to run on Polyglot Version 3\n- 1.0.4 08/31/2020\n   - Fix confidence level calculation\n- 1.0.3 08/31/2020\n   - Remove test message\n   - Trap and report connection errors\n- 1.0.2 08/29/2020\n   - Change to allow multiple Purple air device nodes.\n- 1.0.1 08/29/2020\n   - Add data confidence \n   - Fix typo\n- 1.0.0 08/27/2020\n   - Initial version.\n","authorize":false,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"day","price":0,"recurring":30,"edition":"Standard","id":"b67bf713-1a68-4982-aeb3-91021536f600","isTrial":true,"version":"2.1.3","branch":"master","url":"https://github.com/BME-nodeservers/udi-purpleair-poly.git"},{"price":5,"edition":"Standard","id":"18193cf1-9d6d-4576-850f-dd01a30b24c3","isPerpetual":true,"version":"2.1.3","branch":"master","url":"https://github.com/BME-nodeservers/udi-purpleair-poly.git"}],"eisy":true,"uuid":"551c0bea-3ecc-429b-8bbc-b973f5c6354b","ts_updated":1708880522},{"docs":"https://github.com/Goose66/NSDocs/blob/main/iopool-pg3.md","longPoll":600,"executable":"main.py","readme":"A Node Server for Polyglot v3 (PG3) that interfaces with iopool public API to allow IoX to access iopool EcO pool monitors.\n\nClick \"More Info\" below for installation instructions and release notes.","status":"active","name":"iopool","language":"python3","developer":"kingwrandy@gmail.com","ip_added":"75.131.193.229","nsInfoPoll":0,"logLevel":"INFO","ts_added":1689714537,"shortPoll":60,"author":"W. Randy King (Goose66)","discover":true,"customParams":"{\"apiKey\": \"<API Key value>\"}","desc":"Interface with iopool public API to allow IoX to access iopool EcO pool monitors. ","polisy":true,"license":"https://github.com/Goose66/NSDocs/blob/main/LICENSE.md","changelog":"Current release:\n3.1.2 - Added Features (2023-08-15)\n- added temperature unit parameter\n- added Node Server Status to pool node\n\nPrevious release:\n3.0.1 - Initial Release (2023-07-22)","authorize":false,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"month","price":0,"recurring":1,"edition":"Free","id":"e3bd194c-0897-45eb-8f4b-410597451ef0","isTrial":true,"version":"3.1.2","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/iopool-pg3-3.1.2.zip"},{"price":10.95,"edition":"Standard","id":"0a97c78f-5b93-4633-9188-cc14f52c6fbc","isPerpetual":true,"version":"3.1.2","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/iopool-pg3-3.1.2.zip"}],"eisy":true,"uuid":"4fd4a8d5-3e1f-4c23-9451-3ba87115d4f1","ts_updated":1692131296},{"docs":"https://github.com/therealmysteryman/udi-UniFiProtect-nodeserver/blob/master/README.md","executable":"unifi_poly.py","status":"active","name":"UnifiProtect","language":"python3","desc":"This Poly provides an interface between Unifi Protect and Polyglot v3 server. This nodeserver currently only support changing the recording mode. ** Not supported **","developer":"jf.tremblay@gmail.com","install":"install.sh","ip_added":"74.14.175.171","purchaseOptions":[{"price":0,"edition":"Free","isPerpetual":true,"id":"3348864f-17ef-411b-9505-6cd28e7106c4","branch":"main","version":"3.0.0","url":"https://github.com/therealmysteryman/udi-UniFiProtect-pg3.git"}],"uuid":"01377819-342d-4d2e-b6bc-b4548d8d82b4","logLevel":"DEBUG","ts_added":1635523126,"ts_updated":1635523126,"author":"AutomationGeek"},{"docs":"https://goose66.github.io/nsdocs/tasmota-pg3.html","longPoll":600,"executable":"main.py","readme":"A Plugin 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","language":"python3","isyAccess":false,"developer":"kingwrandy@gmail.com","ip_added":"75.131.193.229","nsInfoPoll":0,"logLevel":"INFO","ts_added":1697070846,"shortPoll":60,"author":"W. Randy King (Goose66)","discover":true,"fileUpload":false,"desc":"Allows IoX to access and control Martin Jerry and other Tasmota switches and modules.","polisy":true,"license":"https://goose66.github.io/nsdocs/license.html","changelog":"v3.1.7 - Bug fixes (2024-08-27)\n- updated parameters to mqtt.Client() for paho-mqtt 2.0\n\nv3.1.6 - New Devices and Reliability Ehancements (2024-01-07)\n- Added support for:\n    * Sonoff Mini R2 (Switch)\n    * Sonoff Mini R4 (Switch)\n- Reworked override of MQTT topic prefix\n- Added code for beta testing support of seeedstudio HP sensor (HP Sensor)\n- Added check for correct full topic configuration in discovery\n- Added check for connection and reconnection attempt in shortpoll\n\nv3.0.5 - Initial Release (2023-10-11)\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":10.95,"edition":"Standard","id":"4ef823f7-276f-4f8d-9648-9fb8d4810372","isPerpetual":true,"version":"3.1.7","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/tasmota-pg3-3.1.7.zip"}],"eisy":true,"uuid":"80b82b6e-f375-4bac-8f40-7cc0928657de","ts_updated":1724732235},{"docs":"https://github.com/UniversalDevicesInc-PG3/udi-wled-nodeserver","executable":"wled_poly.py","status":"active","name":"WLED","language":"python3","desc":"Interface between WLED and PG3. ","developer":"jf.tremblay@gmail.com","install":"install.sh","ip_added":"74.14.175.171","purchaseOptions":[{"price":0,"edition":"Free","isPerpetual":true,"id":"8e99c111-e867-4368-9658-e133794385be","branch":"main","version":"3.0.0","url":"https://github.com/UniversalDevicesInc-PG3/udi-wled-nodeserver.git"}],"uuid":"b5d85529-2b5d-44b2-a3a9-f0c0123d7645","logLevel":"DEBUG","ts_added":1635262790,"ts_updated":1635262808,"author":"AutomationGeek"},{"docs":"https://github.com/BME-nodeservers/udi-aeris-poly","longPoll":900,"executable":"aeris.py","readme":"This is a node server to pull weather data from the AERIS weather network and make it available to a [Universal Devices ISY994i](https://www.universal-devices.com/residential/ISY) [Polyglot interface](http://www.universal-devices.com/developers/polyglot/docs/) with  [Polyglot V3](https://github.com/UniversalDevicesInc/pg3)\n\n## Node substitution variables\n### Current condition node\n * sys.node.[address].ST      (Node sever online)\n * sys.node.[address].CLITEMP (current temperature)\n * sys.node.[address].CLIHUM  (current humidity)\n * sys.node.[address].DEWPT   (current dew point)\n * sys.node.[address].BARPRES (current barometric pressure)\n * sys.node.[address].SPEED   (current wind speed)\n * sys.node.[address].WINDDIR (current wind direction )\n * sys.node.[address].DISTANC (current visibility)\n * sys.node.[address].SOLRAD  (current solar radiation)\n * sys.node.[address].UV      (current uv index)\n * sys.node.[address].GUST    (current gust speed)\n * sys.node.[address].PRECIP  (current precipitation accumulation)\n * sys.node.[address].HEATIX  (current heat index temperature)\n * sys.node.[address].WINDCH  (current wind chill temperature)\n * sys.node.[address].GV2     (current feels like temperature)\n * sys.node.[address].GV11    (current condition coverage)\n * sys.node.[address].GV12    (current intensity of conditions)\n * sys.node.[address].GV13    (current weather conditions)\n * sys.node.[address].GV14    (current percent cloud coverage)\n * sys.node.[address].GV15    (current snow depth)\n\n### Forecast node\n * sys.node.[address].CLIHUM  (forecasted humidity)\n * sys.node.[address].BARPRES (forecasted barometric pressure)\n * sys.node.[address].UV      (forecasted max UV index)\n * sys.node.[address].SPEED   (forecasted wind speed)\n * sys.node.[address].GUST    (forecasted gust speed)\n * sys.node.[address].PRECIP  (forecasted precipitation)\n * sys.node.[address].POP     (forecasted precent chance of precipitation)\n * sys.node.[address].ETO     (calculated ETo for the day)\n * sys.node.[address].GV19    (day of week forecast is for)\n * sys.node.[address].GV0     (forecasted high temperature)\n * sys.node.[address].GV1     (forecasted low temperature)\n * sys.node.[address].GV7     (forecasted max wind speed)\n * sys.node.[address].GV8     (forecasted min wind speed)\n * sys.node.[address].GV11    (forecasted condition coverage)\n * sys.node.[address].GV12    (forecasted intensity of conditions)\n * sys.node.[address].GV13    (forecasted weather conditions)\n * sys.node.[address].GV14    (forecasted percent cloud coverage)\n * sys.node.[address].GV15    (forecasted snowfall)\n\n","status":"active","name":"AERISWeather","language":"python3","isyAccess":false,"developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":0,"logLevel":"ERROR","ts_added":1611680781,"shortPoll":200,"author":"Bob Paauwe","discover":false,"fileUpload":false,"customParams":"{\n            \"ClientID\": \"\",\n            \"ClientSecret\": \"\",\n            \"Location\": \"\",\n            \"Units\": \"imperial\",\n            \"Forecast Days\": 0,\n            \"Elevation\": 0,\n            \"Plant Type\": 0.23\n}","desc":"Add AERISWeather service weather data to the ISY994","polisy":true,"license":"https://github.com/BME-nodeservers/udi-aeris-poly/LICENSE","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"1338ebfa-41b3-4549-9629-934e221bffa2","isPerpetual":true,"version":"2.0.10","branch":"master","url":"https://github.com/BME-nodeservers/udi-aeris-poly.git"}],"eisy":true,"uuid":"4bf55650-adde-4587-9dbd-2b6fdc52897d","ts_updated":1756918348},{"docs":"https://github.com/BME-nodeservers/docs/blob/master/udi-ryse-poly.md","longPoll":600,"executable":"ryse.py","readme":"RYSE SmartShades.\n\nThis node server will connect with the RYSE smart bridge.  Via the bridge, it can get the current status of all connected shades.  You can also control the position and speed of those shades.\n\nThe ShortPoll configuration setting is used to determine how often the bridge is polled for status updates.  This is useful if the shades are being controlled by by something other than the node server.\n\nThe LongPoll configuration is how often the node server will check to see if any new shades have been installed.  If it detects a new shade installation, it will create a new node for that shade.\n\nThe \"IP Address\" custom parameter is used to locate the RYSE bridge.\n\n\n\nSmart Shade Node substitution variabales\n\n * sys.node.[address].ST    Shade detected and configured\n * sys.node.[address].GV0   Current shade postion (%)\n * sys.node.[address].GV1   Shade position state (moving/stationary)\n * sys.node.[address].GV2   Shade power type (line/battery)\n * sys.node.[address].GV3   Shade power level (%)\n * sys.node.[address].SPEED Shade speed setting (%)\n","status":"active","name":"RYSE-shades","language":"python3","developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":0,"logLevel":"ERROR","ts_added":1678304708,"shortPoll":5,"author":"Bob Paauwe","discover":true,"customParams":"{\n\"IP Address\": \"\"\n}","desc":"RYSE SmartShades node server.  For more information about RYSE products see https://www.helloryse.com","polisy":true,"license":"https://github.com/BME-nodeservers/docs/blob/master/LICENSE","changelog":"1.0.3 - don't log speed if not supported by firmware\n1.0.2 - Fix bug introduced in 1.0.1\n1.0.1 - Fix command display (command nls)\n1.0.0 - initial release","authorize":false,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"day","price":0,"recurring":30,"edition":"Standard","id":"ae0e29db-13d4-40b9-b462-1343c67571a5","isTrial":true,"version":"1.0.3","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/udi-ryse-poly.zip"},{"price":10,"edition":"Standard","id":"8caeb8d7-5f9a-428b-9ba6-abccab1c36d2","isPerpetual":true,"version":"1.0.3","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/udi-ryse-poly.zip"}],"eisy":true,"uuid":"c8cca282-ba32-47a7-b56a-abbc8e25904c","ts_updated":1687196653},{"docs":"https://github.com/BME-nodeservers/docs/blob/master/udi-ambient-local-poly.md","longPoll":600,"executable":"ambient-poly.py","readme":"This is a self-hosted server for receiving weather data directly from the\nAmbientWeather console on your local network.  Some AmbientWeather stations\nsupport publishing data to a local server in addition to publishing data\nto the Ambient network. This plug-in creates a server that can\nreceive the data from your local station and re-publish it to an IoX (ISY).\n\nWhich weather stations are supported?  \n\nThe AmbientWeather documentation does not make this obvious. It has been \nconfirmed that the WS-2000 and WS-2902 will, at least with the proper \nfirmware.\n\nConfigure your Ambient Console for a Custom Server.\n\n1. On your AmbientWeather Console, find where you can configure a custom server\n   a. IP Address will the IP Address of your eisy/Polisy\n   b. Port will the port number you configured the plug-in to use (defaule 7501)\n   c. Path should be: /pg3x?  ('?' is required)\n\n2. Save your settings\n\n3. Your AmbientWeather Console should now be pushing data to your plug-in\n\nWhen the plug-in starts, the first data packet it receives is used to configure the plug-in.  It parses the data and builds the necessary nodes to the data provided by your Console.\n","status":"active","name":"AmbientConsole","language":"python3","isyAccess":false,"developer":"bpaauwe@bobsplace.com","ip_added":"73.48.241.215","nsInfoPoll":0,"logLevel":"INFO","ts_added":1736732413,"shortPoll":60,"author":"Bob Paauwe","discover":false,"customParams":"{\n     \"Port\": 7501,\n     \"Station Name\": \"\"\n}","desc":"Receive data directly from an Ambient Weather station Console.  The Console must be configured to send data in Ambient protocol to the eisy/Polisy IP address and the port number defined in the plug-in configuration.","polisy":true,"license":"https://github.com/BME-nodeservers/docs/blob/master/LICENSE","changelog":"1.0.2 - Invert rain sensor battery\n1.0.1 - Ambient docs are wrong, use PASSKEY to identify station\n1.0.0 - Initial release","authorize":false,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"month","price":0,"recurring":1,"edition":"Standard","id":"f8f8fcdd-6457-4684-bb16-6795484ae419","isTrial":true,"version":"1.0.2","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/udi-ambient-local-poly.zip"},{"price":15,"edition":"Standard","id":"491d51f9-d72f-42bf-a61b-608cefadb0e5","isPerpetual":true,"version":"1.0.2","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/udi-ambient-local-poly.zip"}],"eisy":true,"uuid":"a1fb837b-8914-498b-a9f2-219098ea7815","ts_updated":1737136045},{"docs":"https://github.com/UniversalDevicesInc-PG3/udi-flair-polyglot/blob/master/README.md","executable":"flair_poly.py","status":"active","name":"Flair","language":"python3","desc":"Control Flair Vents and Puck ","developer":"jf.tremblay@gmail.com","install":"install.sh","ip_added":"74.14.175.171","purchaseOptions":[{"price":0,"edition":"Free","id":"ced429b0-d68a-4503-b822-b4c2ee7c8af1","isPerpetual":true,"branch":"master","version":"3.0.1","url":"https://github.com/UniversalDevicesInc-PG3/udi-flair-polyglot.git"}],"uuid":"34fbf0c8-5b65-4eb0-a07c-fd558b020a82","logLevel":"DEBUG","ts_added":1635516334,"ts_updated":1635516334,"author":"AutomationGeek"},{"docs":"https://github.com/smjsmsam/airgradient-api-eisy","longPoll":600,"executable":"airgradient.py","status":"active","name":"AGAPI","language":"python3","isyAccess":false,"developer":"smsam@uci.edu","ip_added":"64.189.31.94","nsInfoPoll":0,"logLevel":"INFO","ts_added":1714883395,"shortPoll":60,"author":"teamMADE","discover":false,"fileUpload":false,"customParams":"{\"Token\": \"\", \"Index\": \"\"}","desc":"A simple node server for connection to the AirGradient air quality sensor using AirGradientAPI.\nConnect AirGradient indoor air quality monitor to eisy.\nNotice: AirGradient is a trademark owned by AirGradient Co., see www.airgradient.com for more information. This Node Server is neither developed nor endorsed by AirGradient.\n","polisy":true,"license":"https://github.com/smjsmsam/airgradient-api-eisy/blob/main/LICENSE","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"8cef9fd0-22b3-4647-8523-21ac1e593d65","isPerpetual":true,"version":"1.0.1","branch":"","url":"https://github.com/smjsmsam/airgradient-api-eisy"}],"eisy":true,"uuid":"2753076b-da5f-4e1d-a0da-8de7ad3a7419","ts_updated":1714885080},{"docs":"https://github.com/UniversalDevicesInc-PG3/udi-poly-Airthings-Consumer/blob/master/README.md","longPoll":240,"executable":"airthings.py","readme":"https://github.com/UniversalDevicesInc-PG3/udi-poly-Airthings-Consumer/blob/production/README.md","status":"active","name":"Airthings-C","language":"python3","isyAccess":false,"developer":"jimsearle@gmail.com","ip_added":"70.181.79.77","nsInfoPoll":0,"logLevel":"WARNING","ts_added":1656904775,"shortPoll":60,"author":"Jimbo.Automates","discover":true,"fileUpload":false,"desc":"Airthings Consumer Products","polisy":true,"license":"TBD","changelog":"https://github.com/UniversalDevicesInc-PG3/udi-poly-Airthings-Consumer/blob/production/CHANGELOG.md","authorize":false,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"month","price":0,"recurring":1,"edition":"Free","id":"e6ba4968-cb9e-4de1-bc52-6c7c1a8352c1","isTrial":true,"version":"1.3.1","branch":null,"url":"https://pg3store.isy.io/v2/nodeservers/production/Airthings-Consumer-Production-Standard-1.3.1.zip"},{"price":20,"edition":"Standard","id":"8e120a35-eb9a-42e9-8c97-64449f674ac6","isPerpetual":true,"version":"1.3.1","branch":null,"url":"https://pg3store.isy.io/v2/nodeservers/production/Airthings-Consumer-Production-Standard-1.3.1.zip"}],"eisy":true,"uuid":"8aa2fdf9-804e-4527-a3aa-42099fbaf26a","ts_updated":1783019146},{"docs":"https://github.com/UniversalDevicesInc-PG3/udi-august-nodeserver/blob/master/README.md","executable":"august_poly.py","status":"active","name":"August","language":"python3","desc":"This Poly provides an interface between August Connect and Polyglot v3 server. This is very rough polyglot, but does work to control one lock. Has only been tested on Polisy. The status will update based on the shortPoll value. Experimental use at your own risk","developer":"jf.tremblay@gmail.com","install":"install.sh","ip_added":"74.14.175.171","purchaseOptions":[{"price":0,"edition":"Free","isPerpetual":true,"id":"ac5a39e5-97e7-4537-b53a-2e1660332bb5","branch":"master","version":"3.0.0","url":"https://github.com/UniversalDevicesInc-PG3/udi-august-nodeserver.git"}],"uuid":"bd3a8c6d-59ab-4e68-bf0d-6c7cf449540b","logLevel":"DEBUG","ts_added":1635516654,"ts_updated":1635516654,"author":"AutomationGeek"},{"docs":"https://github.com/UniversalDevicesInc-PG3/udi-harmony-poly/blob/master/README.md","longPoll":300,"executable":"harmony_hub.py","status":"active","name":"HarmonyHub","language":"python3","isyAccess":false,"developer":"jimsearle@gmail.com","ip_added":"70.181.79.77","nsInfoPoll":0,"logLevel":"WARNING","ts_added":1641244436,"shortPoll":60,"author":"Jimbo.Automates","discover":true,"fileUpload":false,"desc":"Connect Harmony Hub's to the ISY994","polisy":true,"license":"https://github.com/UniversalDevicesInc-PG3/udi-harmony-poly/blob/master/LICENSE","authorize":false,"install":"install.sh","purchaseOptions":[{"url":"http://pg3store.isy.io/v2/nodeservers/production/HarmonyHub.zip","edition":"Free","price":0,"recurringPeriod":"month","recurring":1,"isTrial":true,"id":"445a9984-b71a-4870-ab24-8a04943442e7","version":"3.0.10","branch":""},{"isPerpetual":true,"price":20,"edition":"Standard","branch":"","id":"3a51b975-4d09-4fef-933a-70eb9b20dc44","url":"https://pg3store.isy.io/v2/nodeservers/production/HarmonyHub.zip","version":"3.0.10"}],"eisy":true,"uuid":"3fb966ec-f811-49bd-87ca-8bedf1420f82","ts_updated":1787001600},{"docs":"https://github.com/BME-nodeservers/docs/blob/master/udi-roku-poly.md","longPoll":600,"executable":"roku.py","status":"active","name":"Roku","language":"python3","isyAccess":false,"developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":0,"logLevel":"ERROR","ts_added":1629994739,"shortPoll":5,"author":"Bob Paauwe","discover":false,"desc":"Control Roku media devices.","polisy":true,"license":"https://github.com/BME-nodeservers/docs/blob/master/LICENSE","changelog":"2.0.3: Skip non-roku devices during discovery\n2.0.5: special case new screen saver app id\n2.0.6: Add additional debug info to log","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.6","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/udi-roku-poly.zip"},{"price":10,"edition":"Standard","id":"547e0150-450b-40c2-9080-65f72323efad","isPerpetual":true,"version":"2.0.6","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/udi-roku-poly.zip"}],"eisy":true,"uuid":"5f841577-ba3d-4e02-bc71-444254cda22f","ts_updated":1720198791},{"docs":"http://www.limitlessled.com/dev/","executable":"milight_poly.py","status":"active","name":"MiLight","language":"python3","desc":"Provides an interface between MilLight iBox 1 or 2 and PG3","developer":"jf.tremblay@gmail.com","install":"install.sh","ip_added":"74.14.175.171","purchaseOptions":[{"price":0,"edition":"Free","isPerpetual":true,"id":"c5121bba-79b0-4fb0-a4ba-2d4275630eda","branch":"master","version":"3.0.1","url":"https://github.com/therealmysteryman/udi-milight-pg3.git"}],"uuid":"acf9793b-f909-4b67-8db3-8ade56067ea5","logLevel":"DEBUG","ts_added":1635522761,"ts_updated":1635861640,"author":"AutomationGeek"},{"docs":"https://github.com/PG3Plugins/udi-sensibo-poly/blob/master/README.md","longPoll":600,"executable":"sensibo_poly.py","readme":"This is a simple integration of Sensibo pods to ISY. \n","status":"active","name":"Sensibo","language":"python3","isyAccess":false,"developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":0,"logLevel":"INFO","ts_added":1650996820,"shortPoll":60,"author":"iprop.tech","discover":true,"fileUpload":false,"customParams":"{\n    \"api_key\": \"\"\n}","desc":"Sensibo Smart Air Conditioner Node Server","polisy":true,"license":"https://github.com/PG3Plugins/udi-sensibo-poly/blob/LICENSE","changelog":"2.012 is a major update to make the Sensibo look and behave like a thermostat.\n  - Status names have changed to use thermostat specific names\n  - Commands have changed to use thermostat specific commands\n*** These changes may effect existing programs/scenes that use the Sensibo Plug-in.","authorize":false,"install":"install.sh","purchaseOptions":[{"version":"2.0.13","branch":"master","price":0,"edition":"Free","url":"https://github.com/PG3Plugins/udi-sensibo-poly.git","isPerpetual":true,"id":"e24dff66-902a-4401-80ed-513fc7bca3e9"}],"eisy":true,"uuid":"2cd1ff14-8482-4947-a806-e5fa6f42f793","ts_updated":1788212592},{"docs":"POLYGLOT_CONFIG.md","longPoll":600,"executable":"udi-tahoma-pg3x.py","readme":"Plugin for EISY/Polisy (eisy-ui or PG3 environment) that connects to a Somfy TaHoma gateway over the local Developer Mode API. Shade control is direct over your LAN — no Somfy cloud account required. It discovers motorized shades (RTS, io-homecontrol, Zigbee, and related protocols) and TaHoma app scenes, then exposes them as ISY nodes with open/close/stop, position and tilt where supported, and Last Command status for programs and scenes. Scene Activate is optional and requires a Somfy TaHoma cloud login (tahoma_cloud_email / tahoma_cloud_password in configuration); without cloud credentials, scene nodes may appear but Activate does not run. Phantom Blinds and other shade families are supported as applications on the same gateway — see Applications below.\n\nUsers also report compatibility with the Somfy Beecon, though I cannot guarantee with all features.","status":"active","name":"Tahoma","language":"python3","isyAccess":false,"developer":"stephenearljenkins@me.com","ip_added":"209.197.72.139","nsInfoPoll":0,"purchaseOptionsBeta":[{"id":"0a4eb888-5a6f-4505-9d79-ca2e35e55a02","url":"https://github.com/UniversalDevicesInc-PG3/udi-tahoma-pg3x","recurringPeriod":"year","version":"0.0.29","edition":"Beta","price":0,"branch":"beta","recurring":1,"isTrial":true}],"logLevel":"INFO","ts_added":1782249691,"shortPoll":60,"author":"headrom","discover":true,"fileUpload":false,"desc":"Tahoma plugin for UD Eisy.  RTS and IO devices supported as well as scenes. Phantom blinds, RTS shades.  Some compatibility with Somfy Beacon as well.\n","license":"LICENSE","changelog":"Beta & Production:\n## 0.0.29\n\n- **Fix eisy-ui dynamic profile on migrate**: add empty `links.ctl` / `links.rsp` on every nodedef and `linkdefs: []` in `data/base_profile.json` so eisy-ui `updateprofile` validation passes (fixes “Profiles loaded but nodedefs missing” after PG3→eisy-ui migration); bump `profile_version` to 2\n\n## 0.0.28\n\n- **Dynamic JSON profiles**: push profile via `updateJsonProfile()` instead of static `profile/` zip — improves eisy-ui sync; requires IoX 6.0.6+, PG3x 3.4.5+, `udi_interface` 3.4.5+; `install.sh` renames `profile/` to `profile.static/` on the EISY so PG3 does not race static upload; `profile/` XML remains in the repo as source for `data/base_profile.json`; bump `profile_version` in `server.json` when the JSON base changes\n- **Per-device nodedef on Discover**: new shade nodes pick `shadertsid`, `shadenotiltid`, `shadeonlyprimid`, or `shadeid` from TaHoma capabilities — existing nodes are unchanged until the user runs **Discover** and a new node is created (removed nodes rediscovered, or manual delete + Discover)\n- **OGP skip hardened**: skip all `ogp://` devices and `ProtocolGateway` uiClass (not only `ogp:Bridge` controllableName) — fixes duplicate OGP nodes when the gateway returns partial records or multiple OGP entries; run **Discover** to remove stale OGP nodes\n\n## 0.0.27\n\n- **RTS Move By Percent**: new **MOVEPCT** command (percent 1–99, direction Up/Open or Down/Close) sends open or close, waits `(percent × total span) / 100` seconds, then sends stop; **SETSPAN** sets per-shade **Total Span Move Time** (GV1, default 8 s, persisted); **Last Command Executed** adds **Move By Percent**; RTS-only — io/Zigbee shades keep SETPOS\n\n## 0.0.26\n\n- **Skip OGP protocol gateway during discovery**: TaHoma reports `ogp:Bridge` (Open Generic Protocol gateway) as a device; it is infrastructure, not a shade. Previously it appeared as an extra node with no useful commands. Run **Discover** after updating to remove an existing OGP node automatically.\n\n## 0.0.25\n\n- **Shade Last Command Executed (GV8)**: new status alongside Last Command (GV7); reports Open, Close, Stop, or My Position when sent; starts as None on node startup; GV7 still tracks Pending / Completed / Failed from the gateway\n\n## 0.0.24\n\n- **Clear server error sooner when the TaHoma gateway recovers**: auto-reconnect restores controller Connection status (ST=1) and clears the Polyglot error notice without a NodeServer restart\n- **PG3 store manifest** (`server.json`) with executable `udi-tahoma-pg3x.py` — use **Update** from the store (validated on beta)\n- **Rename entry script** from `udi-tahoma-pg3x` (no extension) to `udi-tahoma-pg3x.py`\n- **Standard bootstrap** (error handling; version in `VERSION` / `profile/version.txt` / `server.json`)\n- **Rename** `VersionHistory.md` to `CHANGELOG.md` (template standard)\n- **Developer toolchain**: uv, pytest profile sync test, Makefile, CONTRIBUTING (runtime install unchanged: `install.sh` + `requirements.txt`)","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"isPerpetual":true,"branch":"production","edition":"Free","version":"0.0.29","url":"https://github.com/UniversalDevicesInc-PG3/udi-tahoma-pg3x","id":"89697a44-f1f9-4c3b-bd07-9016794f1e78"}],"uuid":"101b5a13-7963-486e-986c-8893c8271c2b","ts_updated":1791229518.238},{"docs":"https://github.com/awysocki/SensorPush/blob/main/README.md","longPoll":600,"executable":"main.py","readme":"### Configuration Requirements\n\nTo get your SensorPush Node Server up and running, you must add your SensorPush account credentials to the **Custom Configuration Parameters** grid in your PG3 dashboard.\n\n#### Required Keys:\n*   **username**: Enter the email address associated with your SensorPush account.\n*   **password**: Enter your SensorPush password.\n\n#### Optional Keys:\n*   **update_interval**: *(Optional)* The frequency, in seconds, at which the node server polls the SensorPush Cloud API for fresh data. \n    *   *Default if left blank:* `300` (5 minutes)\n    *   *Recommended minimum:* `60` (1 minute) to avoid hitting API rate limits.\n\n### First-Time Setup Steps\n1. In your local PG3 dashboard, open the **SensorPush** node server.\n2. Go to the **Configuration** section.\n3. In the **Custom Configuration Parameters** table, add a row for `username` and a row for `password` with your respective login details.\n4. Click **Save Changes**.\n5. Restart the node server. Your gateway and all linked sensors will be discovered automatically and added as individual nodes in your IoX dashboard.","status":"active","name":"SensorPush","language":"python3","isyAccess":false,"developer":"awysocki@absoftware.com","ip_added":"47.181.10.186","nsInfoPoll":0,"logLevel":"WARNING","ts_added":1784287747,"shortPoll":60,"author":"Andy Wysocki","discover":false,"fileUpload":false,"desc":"Integrates SensorPush wireless temperature and humidity sensors into Universal Devices IoX (eisy/Polisy) via the PG3/PG3x platform.","polisy":true,"license":"https://github.com/awysocki/SensorPush/blob/main/LICENSE","changelog":"2026.9.1 - Add the last poll timestamp to know if the device is old or off line\n2026.7.51 - Only update driver when the value changes between polls of the data\n2026.7.50 - Add status for gateways that are not paired but once were","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","version":"2026.9.1","branch":"main","id":"c51fa82f-9863-457e-bb42-86fb77cc7420","url":"https://github.com/awysocki/SensorPush","isPerpetual":true}],"eisy":true,"uuid":"eb7dfb3e-0209-4f22-aba7-0dee4bf09202","ts_updated":1788695612},{"docs":"https://github.com/firstone/RESTRemote/blob/master/POLYGLOT_CONFIG.md","longPoll":60,"executable":"polyremote.py","status":"active","name":"AVRemote","language":"python3","isyAccess":false,"developer":"firstone@erissoft.com","ip_added":"73.80.94.143","nsInfoPoll":0,"logLevel":"INFO","ts_added":1661795700,"shortPoll":15,"author":"FirstOne","discover":false,"fileUpload":false,"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/3cc5d0e3ba71a6c803827b352acec263cfd20eba/LICENSE","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"e0c55baa-efca-49d1-9c47-393d613f2844","isPerpetual":true,"version":"2.0.18","branch":"main","url":"https://github.com/firstone/av-remote-poly.git"}],"eisy":true,"uuid":"7d239862-a0ca-45ae-973e-b5fd5caba72b","ts_updated":1758378576},{"docs":"https://github.com/BME-nodeservers/docs/blob/master/udi-weatherbit-poly.md","longPoll":600,"executable":"weatherbit.py","readme":"### Node Settings\nThe settings for this node are:\n\n#### Short Poll\n   * How often to poll the WeatherBit weather service for current condition data. Note that the free plan only updates data hourly. Setting this to less than 3600 seconds may result in exceeding the free service rate limit.\n#### Long Poll\n   * How often to poll the WeatherBit weather service for forecast data. Note that the free plan only updates data hourly. Setting this to less than 3600 seconds may result in exceeding the free service rate limit.\n\n#### APIkey\n        * Your API ID, needed to authorize connection to the WeatherBit API.\n#### Elevation \n        * The elevation, in meters, of the location. Default is 0\n#### Forecast Days\n        * The number of days of forecast data to track (0 - 16). Note that the free and Hobbyist plans only allow for 7 days of forecast data\n#### Location \n        * Location to get data for.  Can be specified as:\n    - lat&lon      Ex: lat=38.123&lon=-78.543\n        - city,state   Ex: city=Raleigh,NC\n        - city&contry  Ex: city=Raleigh&country=US\n        - city_id      Ex: city_id=8953360\n        - station      Ex: station=KSEA\n        - postal_code  Ex: postal_code=27601\n        - postal_code&country   Ex: postal_code=27601&country=US\n#### Plant Type\n        * Used as part of the ETo calculation to compensate for different types of ground cover.  Default is 0.23\n#### Units    \n        * M for si and I for imperial. Default is M\n\nTo get an API key, register at www.weatherbit.io\n\n## Node substitution variables\n### Current condition node\n * sys.node.[address].ST      (Node sever online)\n * sys.node.[address].CLITEMP (current temperature)\n * sys.node.[address].CLIHUM  (current humidity)\n * sys.node.[address].DEWPT   (current dew point)\n * sys.node.[address].BARPRES (current barometric pressure)\n * sys.node.[address].GV4     (current wind speed)\n * sys.node.[address].WINDDIR (current wind direction )\n * sys.node.[address].GV15    (current visibility)\n * sys.node.[address].SOLRAD  (current solar radiation)\n * sys.node.[address].GV13    (current weather conditions)\n * sys.node.[address].GV14    (current percent cloud coverage)\n * sys.node.[address].RAINRT  (current precipitation rate)\n * sys.node.[address].GV2     (current feels like temperature)\n * sys.node.[address].GV16    (current UV index)\n * sys.node.[address].GV17    (current air quality)\n\n### Forecast node\n * sys.node.[address].CLIHUM  (forecasted humidity)\n * sys.node.[address].BARPRES (forecasted barometric pressure)\n * sys.node.[address].DEWPT   (forecasted dew point)\n * sys.node.[address].RAINRT  (forecasted rain rate)\n * sys.node.[address].GV18    (forecasted chance of precipitation)\n * sys.node.[address].GV19    (day of week forecast is for)\n * sys.node.[address].GV0     (forecasted high temperature)\n * sys.node.[address].GV1     (forecasted low temperature)\n * sys.node.[address].GV13    (forecasted weather conditions)\n * sys.node.[address].GV14    (forecasted percent cloud coverage)\n * sys.node.[address].GV6     (forecasted precipitation accumulation)\n * sys.node.[address].GV7     (forecasted snow accumulation)\n * sys.node.[address].GV8     (forecasted snow depth)\n * sys.node.[address].GV16    (forecasted UV index)\n * sys.node.[address].GV10    (forecasted Ozone)\n * sys.node.[address].GV15    (forecasted Visibility)\n * sys.node.[address].GV9     (forecasted Moon phase)\n * sys.node.[address].GV20    (calculated ETo for the day)\n\n","status":"active","name":"WeatherBit","language":"python3","isyAccess":false,"developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":0,"logLevel":"ERROR","ts_added":1626040657,"shortPoll":300,"author":"Bob Paauwe","discover":false,"customParams":"{\n        \"APIkey\": \"\",\n        \"Location\": \"\",\n        \"Units\": \"imperial\",\n        \"Forecast Days\": 0,\n        \"Elevation\": 0,\n        \"Plant Type\": 0.23\n    }","desc":"Add weather data from WeatherBit.io. Includes current conditions and daily forecasts","polisy":true,"license":"https://github.com/BME-nodeservers/docs/blob/master/LICENSE","changelog":"2.0.8 - Improved error messages for query failures\n2.0.7 - Added query command to current condition node.","authorize":false,"install":"install.sh","purchaseOptions":[{"price":10,"edition":"Standard","id":"49200ac3-a48a-4617-b79c-17437fe617a1","isPerpetual":true,"version":"2.0.8","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/udi-weatherbit-poly.zip"}],"eisy":true,"uuid":"5eb66567-6a98-49e9-bd3c-b954d24ee26a","ts_updated":1715969263},{"docs":"README.md","longPoll":30,"executable":"udi-virtual-pg3x.py","readme":"Plugin for EISY/Polisy (eisy-ui or PG3 environment) that creates virtual ISY devices without physical hardware — switches, dimmers, on-only switches, off-delay timers, temperature (°C/°F), heartbeat, garage, awning, and generic nodes. External systems (REST, MQTT, scripts, other integrations) update device state; virtual nodes appear in the Admin Console, scenes, and programs like real devices. Configure devices with inline JSON (devlist) or a YAML file (devfile). ","status":"active","name":"Virtual","language":"python3","isyAccess":true,"developer":"stephenearljenkins@me.com","ip_added":"67.161.168.17","nsInfoPoll":0,"purchaseOptionsBeta":[{"branch":"beta","recurring":1,"url":"https://github.com/UniversalDevicesInc-PG3/Virtual.git","edition":"Beta","recurringPeriod":"year","id":"f871cea9-c795-4368-836a-4cf72be38354","price":0,"isTrial":true,"version":"3.2.2"}],"logLevel":"INFO","ts_added":1652738273,"shortPoll":3,"author":"headrom","discover":true,"fileUpload":true,"desc":"Create Virtual Devices for use in scenes and programs.\nOriginal plugin by B.Paauwe/M.Vittes.","license":"LICENSE","changelog":"3.2.0 \\\nDONE PG3 store manifest (server.json) with executable udi-virtual-pg3x.py — use Update from the store \\\nDONE rename entry script from udi-Virtual-pg3.py to udi-virtual-pg3x.py \\\nDONE load devFile YAML from data/ when given a bare filename (matches MQTT devfile behavior) \\\nDONE standard bootstrap; VersionHistory.md renamed to CHANGELOG.md \\\nDONE developer toolchain: uv, pytest profile sync test, Makefile, CONTRIBUTING (runtime install unchanged: install.sh + requirements.txt)\n\n3.1.29 \\\nDONE upgrade dependencies to address Dependabot security alerts (aiohttp, requests, urllib3, ujson, black, and others) \\\nDONE setuptools remains pinned <81 for pyisy/pkg_resources compatibility (udi_interface Node import)\n\n3.1.28 \\\nDONE fix Controller/Temp ready_event poll gating (.is_set) \\\nDONE temp reset_stats clears prevVal; CtoF/FtoC mutual exclusion \\\nDONE VirtualTempC commands match nodedef; QUERY in nodedefs \\\nDONE onDelay TIMER report; generic SETST naming; NLS ctl QUERY typo\n\n","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"branch":"production","edition":"Free","version":"3.2.1","id":"671a0b64-3de5-434d-a20e-350e38ee5a37","isPerpetual":true,"url":"https://github.com/UniversalDevicesInc-PG3/Virtual.git"}],"uuid":"2bc787f3-277a-42b1-839f-e85561e1604f","ts_updated":1789264745.173},{"docs":"https://github.com/UniversalDevicesInc-PG3/udi-nanoleaf-polyglot/blob/master/README.md","executable":"nanoleaf_poly.py","status":"active","name":"NanoLeaf","language":"python3","desc":"Control NanoLeaf aurora panel light","developer":"jf.tremblay@gmail.com","install":"install.sh","ip_added":"74.14.175.171","purchaseOptions":[{"price":0,"edition":"Free","isPerpetual":true,"id":"29dff262-d0dc-46f8-9aa8-2c8941269c7b","branch":"master","version":"3.0.0","url":"https://github.com/UniversalDevicesInc-PG3/udi-nanoleaf-polyglot.git"}],"uuid":"fd886182-34a4-47d0-a8a8-25a0ade7fabe","logLevel":"DEBUG","ts_added":1635516059,"ts_updated":1635516059,"author":"AutomationGeek"},{"docs":"https://goose66.github.io/nsdocs/schlage-pg3.html","longPoll":60,"executable":"main.py","readme":"A Plugin for Polyglot v3 (PG3) that interfaces with Schlage cloud service to allow the IoX to control Schlage Encode WiFi locks and Schlage Sense locks with Sense WiFi Adapter.\n\nClick \"More Info\" below for installation instructions and release notes.\n","status":"active","name":"Schlage","language":"python3","isyAccess":false,"developer":"kingwrandy@gmail.com","ip_added":"75.131.193.229","nsInfoPoll":0,"logLevel":"INFO","ts_added":1689258075,"shortPoll":20,"author":"W. Randy King (Goose66)","discover":true,"fileUpload":false,"customParams":"{\"username\": \"<email address>\", \"password\": \"<password>\"}","desc":"Accesses the Schlage cloud Service to allow IoX to control Schlage Encode WiFi locks and Schlage Sense locks with Sense Wi-Fi Adapter.","polisy":true,"license":"https://goose66.github.io/nsdocs/license.html","changelog":"3.2.7 - Fixes (2025-09-19)\n- fixed version constant for latest push\n\n3.2.6 - Fixes (2025-09-17)\n- removed CRLF from install.sh (all files)\n\n3.2.5 - Fixes (2025-09-16)\n- bumped version of pyschlage to >= 2025.7.3\n- added flag to load access codes only on initial load of lock devices\n\n3.2.4 - New Features (2025-06-22)\n- add last message time, last access user hash, and last message driver values\n\n3.1.3 - Fix install of pyschlage library (2025-03-22)\n- changed requirements to specify older version of pyschlage library\n\n3.1.2 - Features and Fixes (2024-04-08)\n- added \"connected\" status from new pyschlage library variable\n- updated to use new pyschlage library\n- removed notices sent to PG3 on token expiration and temporary connection errors\n- updated profile to allow correct selection dropdowns in AC programming interface\n\n3.0.1 - Initial Release (2023-07-13)","authorize":false,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"month","price":0,"recurring":1,"edition":"Free","id":"6f8a780c-7fad-4906-88df-552cb2fea231","isTrial":true,"version":"3.2.7","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/schlage-pg3-3.2.7.zip"},{"price":10.95,"edition":"Standard","id":"25037dee-187d-45f3-a42d-6300d8fdc5f3","isPerpetual":true,"version":"3.2.7","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/schlage-pg3-3.2.7.zip"}],"eisy":true,"uuid":"8e791558-fe92-4857-99dd-23daf4c70666","ts_updated":1758339533},{"docs":"https://github.com/BME-nodeservers/udi-noaa-poly","longPoll":600,"executable":"noaa.py","status":"active","name":"NOAA","language":"python3","isyAccess":false,"developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":0,"logLevel":"ERROR","ts_added":1620318896,"shortPoll":3600,"author":"Bob Paauwe","discover":false,"fileUpload":false,"customParams":"{\n                \"Station\": \"\",\n                \"Alert zone/county code\": \"\"\n        }","desc":"Add weather data to the ISY994","polisy":true,"license":"https://github.com/BME-nodeservers/udi-noaa-poly/LICENSE","changelog":"2.0.12 - Skip alertCode tags, the value of these (\"\") was overriding the alert tag\n2.0.11 - Add check for empty alert list and clear any existing alerts if list is empty\n2.0.10 - fix xml parsing.  debug message could cause exception\n2.0.9 - Update the URL for current observations\n2.0.8\n  - change URL for alerts queries. \n2.0.7\n  - change \"Winter Storm Advisory\" to \"Winter Weather Advisory\"\n2.0.6 \n   - Add winter storm watch and winter storm advisory alerts.\n2.0.5 \n   - Fix editor for alerts.  Should be 127 max\n   - Fix status UOM, should be 25\n   - Fix tab/space issues\n   - Fix type in parsing certainty\n   - Update alert list\n","authorize":false,"install":"install.sh","purchaseOptions":[{"price":5,"edition":"Standard","id":"d302028f-23bc-4840-b341-d7d423e475a6","isPerpetual":true,"version":"2.0.12","branch":"master","url":"https://pg3store.isy.io/v2/nodeservers/production/udi-noaa-poly.zip"}],"eisy":true,"uuid":"f55281ba-15ba-4116-9396-5905d2a2215e","ts_updated":1749418251},{"docs":"https://github.com/PG3Plugins/udi-onkyoavr-poly/blob/master/README.md","longPoll":600,"executable":"AVRServer.py","status":"active","name":"OnkyoAVR","language":"python3","isyAccess":false,"developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":0,"logLevel":"INFO","ts_added":1651530791,"shortPoll":30,"author":"TangoWhiskey1","discover":true,"fileUpload":false,"desc":"Control/Status for Onkyo or Pioneer AVR.","polisy":true,"license":"https://github.com/PG3Plugins/udi-onkyoavr-poly/blob/master/LICENSE","authorize":false,"install":"install.sh","purchaseOptions":[{"edition":"Free","isPerpetual":true,"url":"https://github.com/PG3Plugins/udi-onkyoavr-poly","version":"1.0.2","branch":"master","id":"2695766c-8301-4606-8054-ff2d9a1c065e","price":0}],"eisy":true,"uuid":"a3978e6a-c2e9-4e00-83cb-29c03f150834","ts_updated":1788212752},{"docs":"https://www.lifx.com","longPoll":600,"executable":"lifx-poly.py","discover":false,"status":"active","name":"LiFX","language":"python3","desc":"Add LIFX control to the ISY994","developer":"apevnev@me.com","authorize":false,"install":"install.sh","ip_added":"76.183.193.124","purchaseOptions":[{"price":0,"edition":"Free","isPerpetual":true,"id":"e883ecac-1ed8-42d1-8a2c-2881ea70f669","branch":"master","version":"2.1.26","url":"https://github.com/exking/udi-lifx-pg3.git"}],"nsInfoPoll":0,"logLevel":"INFO","uuid":"a2989a18-4edc-46b7-b9bc-92bff80cef5c","ts_added":1649809233,"shortPoll":30,"ts_updated":1649809561,"author":"xKing"},{"docs":"https://www.thomptronics.com/VirtualButtonsPG3NS","longPoll":600,"executable":"vb.py","status":"active","name":"VirtualButtons","language":"python3","isyAccess":true,"developer":"randyth@yahoo.com","ip_added":"73.25.123.101","nsInfoPoll":0,"logLevel":"DEBUG","ts_added":1643306916,"shortPoll":60,"author":"Thomptronics","discover":false,"customParams":"{\n  \"accessCode\": \"replace this text with your access code\"\n}","desc":"Trigger Alexa Routines using Virtual Buttons","polisy":true,"license":"https://www.thomptronics.com/VirtualButtonsPG3NS#h.ckl6rhr35a8h","changelog":"fixed button naming bug","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"d53f0a9a-8f49-4738-8dec-e62691c9f9d8","isPerpetual":true,"version":"1.6.1","branch":"","url":"http://pg3store.isy.io/v2/nodeservers/production/VirtualButtons.zip"}],"eisy":true,"uuid":"84e4d121-afc3-4882-87c1-769ddfe23ed0","ts_updated":1709663708},{"docs":"https://github.com/simplextech/pg3_docs/tree/main/ST-Inventory","longPoll":600,"executable":"st-inventory.js","readme":"The purpose of this plugin is simply to display/report device/node inventory within the IoX.\n\nInventory Collected\n  * Total Nodes\n  * Scenes\n  * Insteon\n  * Z-Wave\n  * NodeServer Nodes\n  * Intgeger Variables\n  * State Variables\n  * Programs\n  * Folders\n  * Network Resources\n  * Error Log Entries\n","status":"active","name":"ST-Inventory","language":"node","isyAccess":true,"developer":"bpaauwe@bobsplace.com","ip_added":"107.77.204.108","nsInfoPoll":0,"logLevel":"WARNING","ts_added":1644790722,"shortPoll":300,"author":"Simplex Technology","discover":true,"fileUpload":false,"desc":"Inventory of IoX nodes.  Includes Insteon, Z-Wave, Scenes, Programs, Folders, Int and State Variables and Error log lines.","polisy":true,"license":"https://github/com/simplextech/pg3_docs/tree/main/LICENSE","changelog":"v1.0.14 - Update to use new polyinterface\nv1.0.12 Fix typo in mqtt close\nv1.0.11 - Fix z-wave discovery and add discovery on startup\nv1.0.10 - Add support for zMatter z-wave nodes","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"version":"1.0.14","isTrial":true,"url":"https://pg3store.isy.io/v2/nodeservers/production/pg3_inventory.zip","recurring":7,"edition":"Standard","recurringPeriod":"day","branch":"","id":"7c0712f6-0406-46c2-946e-5629adda73b3"},{"version":"1.0.14","branch":"","price":5,"id":"bf792bfd-00e9-44c2-8399-ef547f9bbd88","url":"https://pg3store.isy.io/v2/nodeservers/production/pg3_inventory.zip","edition":"Standard","isPerpetual":true}],"eisy":true,"uuid":"c126923a-afcd-4e6d-9e46-58576796f551","ts_updated":1788540660},{"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","name":"ATest","language":"python3","developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":0,"logLevel":"CRITICAL","ts_added":1655328883,"shortPoll":60,"author":"Bob Paauwe","discover":false,"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":[{"recurringPeriod":"day","price":0,"recurring":31,"edition":"Standard","id":"3ea3f5a6-1e4d-4abe-bfa0-e92b5e1b0e66","isTrial":true,"version":"1.0.0","branch":"master","url":"https://pg3store.isy.io/v2/nodeservers/production/udi-atest-poly.zip"},{"price":120,"edition":"Standard","id":"93eeef66-365b-46d4-9b67-71363a61794a","isPerpetual":true,"version":"2.0.0","branch":"master","url":"https://pg3store.isy.io/v2/nodeservers/production/udi-atest-poly.zip"},{"price":0,"edition":"Free","id":"25dbf783-815e-44bb-b810-ab0adb78331a","isPerpetual":true,"version":"0.5.0","branch":"master","url":"https://pg3store.isy.io/v2/nodeservers/production/udi-atest-poly.zip"},{"price":1,"edition":"Standard","id":"ff7998ef-b572-4219-b0d3-23e10b30b97f","isPerpetual":true,"version":"1.0.0","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/udi-atest-poly.zip"},{"isSubscription":true,"recurringPeriod":"year","price":10,"recurring":1,"edition":"Standard","id":"679165f6-90ed-4156-9604-6f0c59d0d9b9","version":"1.0.0","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/udi-atest-poly.zip"},{"price":200,"edition":"Professional","id":"c52ab37e-e240-48ce-8b2b-1aae31c8779a","isPerpetual":true,"version":"2.0.0","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/udi-atest-poly.zip"}],"eisy":true,"uuid":"270cc44e-0ef0-4b20-8ada-237c888e5c4e","ts_updated":1683319930},{"docs":"https://github.com/jamespauly/udi-ewelink-poly","longPoll":600,"executable":"ewelink-poly.py","discover":false,"status":"active","name":"eWeLink","language":"python3","desc":"eWeLink: A Node Server for Controlling eWeLink Devices","polisy":true,"license":"https://github.com/jamespauly/udi-ewelink-poly/blob/main/LICENSE","isyAccess":false,"developer":"jgpaul16@gmail.com","authorize":false,"install":"install.sh","ip_added":"76.236.222.131","purchaseOptions":[{"price":0,"edition":"Free","id":"7974fbbe-08c8-4a85-bacc-f0566417a86f","isPerpetual":true,"version":"1.0.3","branch":"prod","url":"https://github.com/jamespauly/udi-ewelink-poly.git"}],"eisy":true,"nsInfoPoll":0,"logLevel":"INFO","uuid":"fbc1315d-1668-4a51-80dc-57b3682de637","ts_added":1685724351,"shortPoll":60,"ts_updated":1692234822,"author":"James Paul"},{"docs":"https://github.com/Panda88CO/udi_Broadlink/blob/main/README_LOCAL.md","longPoll":600,"executable":"udibroadlink.py","readme":"# udi-broadlink\n\nBroadlink node server for UDI Polyglot v3 (PG3/PG3x), implemented in Python:\n\n\n## Overview\n\nRun one PG3 node server instance per Broadlink hub. Multiple hubs are supported by providing a list of IP addresses\n\n## Node Organization\nEach Hub creates a node - If temp and humidity sensor is present its data is shown in a child node \nThe hub also generates 2 separate nodes RF Controller and IR Controller (with the HUB IP appended).  Each learned code becomes a child to this controller node\n\n\n## Learning RF codes\nLearning an RF code is a two step task.  First the RF controller searches for teh correct frequecy - During this time oneneed to press the key being learned - The HUBs LED remains on during this time.  once the LED goes off, the AC will ask you to press the key one more - and the actual code is learned.  If the code is alrady learned it cannot be stored again (you can erase the code in the polyglot interface or ungroup the RF controller, Delete and regroup)\nNote, you can rename the codes once learned - they should keep the name after a restart.\n\n\n### Broadlink Controller (`setup`)\n\nTop-level coordinator node. Created automatically on startup.\n\n| Driver | Name | Description |\n|--------|------|-------------|\n| `ST` | Status | `No Hubs Configured` / `All Online` / `Partial` / `None Online` |\n| `GV0` | Hub Count | Number of configured hubs |\n| `TIME` | Last Update | Timestamp of the most recent poll |\n\nCommands accepted: `UPDATE` (force immediate refresh).\nHeartbeat events `DON` / `DOF` are sent each short poll cycle.\n\n### Broadlink Hub (`blhub`)\n\nOne node per configured hub IP. Created automatically once the hub is confirmed online.\n\n| Driver | Name | Description |\n|--------|------|-------------|\n| `ST` | Status | `Not Configured` / `Online` / `Error` |\n| `GV0` | Model | Detected device model (e.g., RM4 Pro, RM4 Mini) |\n| `GV1` | Connected | `Yes` / `No` |\n| `TIME` | Last Update | Timestamp of the most recent poll |\n\nCommands accepted: `UPDATE` (force immediate refresh).\n\n### IR Controller (`blirctl`)\n\nCreated automatically under the hub node when the hub is online.\n\n| Driver | Name | Description |\n|--------|------|-------------|\n| `ST` | Status | `Idle` / `Learning` / `Learned OK` / `Failed` |\n| `TIME` | Last Learn | Timestamp of the most recently learned IR code |\n| `GV1` | Learn Count | Number of IR codes stored |\n| `GV2` | Hub Connected | Whether the hub is reachable |\n\nCommands accepted: `LEARNCODE` — starts a 12-second IR learning window. A new IR Code node is added automatically when a code is captured.\n\n### RF Controller (`blrfctl`)\n\nSame driver structure as the IR Controller. RF learning uses a 20-second frequency sweep window followed by a 6-second packet-capture window via the `python-broadlink` frequency sweep API (`sweep_frequency` / `check_frequency` / `find_rf_packet`). Falls back to the generic learn flow for devices that do not expose RF sweep.\n\n### IR Code (`blircode`)\n\nOne node per learned IR code, parented to the IR Controller.\n\n| Driver | Name | Description |\n|--------|------|-------------|\n| `ST` | Status | `Ready` / `Sending` / `Sent OK` / `Failed` |\n| `TIME` | Created | Timestamp when the code was learned |\n| `GV1` | Last Sent | Timestamp of the most recent transmission |\n| `GV2` | Last Result | `Never` / `Success` / `Failed` |\n| `GV3` | TX Count | Number of successful transmissions |\n\nCommands accepted: `TXCODE` (`Send Code`) — transmits the stored packet.\n\n### RF Code (`blrfcode`)\n\nOne node per learned RF code, parented to the RF Controller. Identical to IR Code with one additional driver:\n\n| Driver | Name | Description |\n|--------|------|-------------|\n| `ST` | Status | `Ready` / `Sending` / `Sent OK` / `Failed` |\n| `GV0` | Frequency (MHz) | Detected RF carrier frequency, or `No Frequency Identified` if not captured |\n| `TIME` | Created | Timestamp when the code was learned |\n| `GV1` | Last Sent | Timestamp of the most recent transmission |\n| `GV2` | Last Result | `Never` / `Success` / `Failed` |\n| `GV3` | TX Count | Number of successful transmissions |\n\nCommands accepted: `TXCODE` (`Send Code`) — transmits the stored packet.\n\n### Hub Sensor (`blsensor`)\n\nOptional child node created automatically under the hub node when a temperature/humidity sensor cable is detected. One sensor node per hub.\n\n| Driver | Name | Description |\n|--------|------|-------------|\n| `ST` | Status | `Not Configured` / `Online` / `Error` — reflects hub connectivity |\n| `CLITEMP` | Temperature | Current temperature in °C or °F (controlled by `TEMP_UNIT` parameter) |\n| `CLIHUM` | Humidity | Current relative humidity (%) |\n| `TIME` | Last Update | Timestamp of the most recent sensor reading |\n\nCommands accepted: `UPDATE` — forces an immediate sensor reading refresh.\n\n\n\n\n## Required parameter\n\n| Key | Description |\n|-----|-------------|\n| `HUB_IP` | IP address of the Broadlink hub (e.g. `192.168.1.120` or list of IPs `192.168.1.120 192.168.1.121`) |\n\n### Optional parameters\n\n| Key | Default | Description |\n|-----|---------|-------------|\n| `TEMP_UNIT` | `C` | Temperature display unit. Set to `F` for Fahrenheit. |\n\n### ShortPoll - Sends heartbeat and refreshes sensor if present\n### LongPoll - refreshes connection and updates persistent data (node names etc.)\n\n\nThe Broadlink device must already be provisioned onto the local Wi-Fi network before the plugin can connect to it. The plugin does not perform initial Wi-Fi setup automatically.\n\n## Persistence\n\nLearned codes and node names are persisted to PG3 `customdata`. On restart:\n- Stored node names are replayed so user-defined names survive restarts.\n- All previously learned IR and RF code nodes are restored from `customdata` before the IR/RF controller nodes are added.\n- Sensor state (has_temperature / has_humidity) is restored from `customdata` so the profile can be published correctly before the first sensor poll.\n\n## Python interface\n    Utilizes [`python-broadlink`] interface (https://github.com/mjg59/python-broadlink)  open-source Broadlink device library by Matthew Garrett","status":"active","name":"BroadLink","language":"python3","isyAccess":false,"developer":"christian.olgaard@gmail.com","ip_added":"98.47.168.86","nsInfoPoll":0,"logLevel":"INFO","ts_added":1777678499,"shortPoll":60,"author":"Panda88","discover":false,"fileUpload":false,"customParams":"{\"HUB_IP\":\"IP addres or list of IP addresses if more than 1 hub\",\"TEMP_UNIT\":\"Celsius\"}","desc":"Node to support BroadLInk''s IR and RF remote controller.  Control of other BRoadLink devices will follow if needed ","polisy":true,"license":"https://github.com/Panda88CO/udi_Broadlink/blob/main/LICENSE.md","changelog":"0.2.8 - removes nodes that are no longer used\n0.2.7 - Initial Release","authorize":false,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"day","price":0,"recurring":15,"edition":"Free","id":"d41438e0-d521-4d31-beff-f5aed9b101f8","isTrial":true,"version":"0.2.8","branch":"REL260518","url":"https://github.com/Panda88CO/udi-Broadlink"},{"price":10,"edition":"Standard","id":"5651177f-97ca-4c4a-a365-00f0a630f454","isPerpetual":true,"version":"0.2.8","branch":"REL260518","url":"https://github.com/Panda88CO/udi-Broadlink"}],"eisy":true,"uuid":"5bf099a4-e653-4644-b2d6-359db6a9c472","ts_updated":1779052231},{"docs":"https://github.com/sjpbailey/Documentation/blob/main/Jaguar_LandRover/README.md","longPoll":600,"executable":"land_rov.py","status":"active","name":"LandRover","language":"python3","isyAccess":false,"developer":"sjpbailey@comcast.net","ip_added":"98.41.236.33","nsInfoPoll":0,"logLevel":"INFO","ts_added":1696979302,"shortPoll":240,"author":"Bailey","discover":false,"fileUpload":false,"customParams":"{\n\t\t\"brand\": \"Jaguar\",\n                 \"email\": \"joe@ddd.net\",\n\t\t\"password\": \"go with your password\",\n                 \"pin\": \"1234\"\n}","desc":"ATTENTION JAGUAR HAS BROKEN THE MODULE USED FOR THIS PLUGIN! THIS WILL REMAIN UNTIL IT IS RESOLVED OR REMOVED IF JAGUAR DOES NOT OPEN THE API UP AGAIN. SORRY FOR THE INCONVENIENCE!\nGas Vehicles for Jaguar and Land Rover, should work on Land, Range Rover and Jaguar gas powered vehicles.\nApril 23, 2024 jlrpy module was updated and now start stop works again, please re-install this Plugin.","polisy":true,"license":"https://github.com/sjpbailey/Documentation/blob/main/Jaguar_LandRover/LICENSE","changelog":"December 11th, 2023\n1. Updated jlrpy version in requirements fixing Door Lock and Start.\nMarch 13th, 2024\n2. start not working. Node uses module jlrpy, author is trying to fix engine start.\nApril 21, 2024\n1. Updated jlrpy module requirements to version 1.7.0\nApril 23, 2024\n1. Add module manually to nodes directory as the author used the same version number and would not update.\nPlease re-install Node for engine start stop.","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Standard","id":"f5997ee9-6e23-4589-b540-87b9cf565e7b","isPerpetual":true,"version":"1.0.0","branch":"main","url":"https://github.com/sjpbailey/udi-poly-jaguar-landrover-prod_v3"}],"eisy":true,"uuid":"3998a543-efcf-4a2e-9b51-788bf6a5bcec","ts_updated":1718692817},{"docs":"https://github.com/sjpbailey/udi-poly-ami-nem-python-master/blob/master/README.md","longPoll":120,"executable":"AmiNemController.py","discover":false,"status":"active","name":"AMINEM","language":"python3","desc":"This Node Server currently works with your ISY994 Unfortunately it also uses ISY Rest nodes that will soon be unavailable. \nThis Node will soon no longer work so you must upgrade to an Eisy or Polisy and the energy meter node server provided by others.\n\nNet Energy Utility Meter for Landis+Gy & Oncor models you can set the devisor in custom parameter nem_oncor. ","polisy":true,"license":"https://github.com/sjpbailey/udi-poly-ami-nem-python-master/blob/master/LICENSE","developer":"sjpbailey@comcast.net","authorize":false,"install":"install.sh","ip_added":"73.116.163.37","purchaseOptions":[{"price":0,"edition":"Free","id":"0e025d49-9e22-4b50-aede-93ace6fb7284","isPerpetual":true,"version":"3.3.1","branch":"master","url":"https://github.com/sjpbailey/udi-poly-ami-nem-python-master"}],"eisy":true,"nsInfoPoll":60,"logLevel":"INFO","uuid":"54585508-a3c3-472b-a5bc-52ff35bb4329","ts_added":1627686664,"shortPoll":60,"ts_updated":1690413423,"author":"Steven Bailey"},{"docs":"https://github.com/lovintexas/udi-unifi-traffic-routes","longPoll":300,"executable":"unifi_traffic_routes.py","readme":"Ubiquiti UniFi IoX Control provides integration between UniFi Network and Universal Devices IoX/PG3x.\n\nFor the most complete and easy to read description please visit the following website:\n\nhttps://lovintexas.github.io/udi-unifi-traffic-routes/PLUGIN_GUIDE.html\n\nFEATURES\n\n• Traffic Routes\n  - Discover configured Traffic Routes\n  - Monitor enabled/disabled status\n  - Enable and disable routes\n  - Query current state\n\n• UniFi Clients\n  - Select clients using a UniFi client group named \"IoX\"\n  - Monitor online/offline status\n  - Monitor blocked/unblocked status\n  - Block and unblock clients\n\n• Switch Ports\n  - Discover physical UniFi switch ports\n  - Monitor link status\n  - Monitor negotiated link speed\n\n• PoE Ports\n  - Monitor configured PoE state\n  - Monitor current PoE power\n  - Turn PoE on or off\n  - Cycle PoE power\n\n• Firewall Policies\n  - Discover user-created firewall policies\n  - Monitor enabled/disabled state\n  - Enable and disable policies\n  - UniFi predefined/system policies are not exposed\n\nCONFIGURATION\n\nConfigure these PG3x Custom Parameters:\n\nhost\n  IP address or hostname of the UniFi console.\n\nusername\n  Local UniFi username.\n\npassword\n  Local UniFi password.\n\nA dedicated local UniFi account is recommended.\n\nCLIENT SELECTION\n\nCreate a UniFi Network client group named:\n\nIoX\n\nAdd clients to this group to expose them as IoX client nodes. This prevents the plugin from creating nodes for every client known to UniFi.\n\nLIMITATIONS\n\nThis plugin intentionally provides selected monitoring and control functions rather than acting as a general UniFi configuration editor.\n\nOrdinary non-PoE switch-port administrative disable is not supported.\n\nFirewall policy control is limited to enabling and disabling user-created policies. The plugin does not modify firewall actions, sources, destinations, networks, ports, or matching criteria.\n\nClient online status and blocked status are independent. An unblocked client may remain offline until it reconnects.\n\nDiscovery is additive. Removing an object from UniFi or removing a client from the IoX group does not necessarily remove an existing IoX node.\n\nThe plugin uses local UniFi Network API endpoints. Future UniFi Network releases may require plugin updates.\n\nSee the Documentation URL for complete configuration instructions, feature descriptions, security information, and technical details.","status":"active","name":"Unifi_Control","language":"python3","isyAccess":false,"developer":"dr-apo@dr-apo.com","ip_added":"::ffff:72.177.80.34","nsInfoPoll":0,"logLevel":"INFO","ts_added":1789848723.676,"shortPoll":60,"author":"Louis Apostolakis","discover":false,"fileUpload":false,"aiTools":"","customParams":"{\n  \"host\": \"\",\n  \"username\": \"\",\n  \"password\": \"\"\n}","aiPrompt":"","desc":"Integrates Ubiquiti UniFi Network with Universal Devices IoX. Provides monitoring and control of Traffic Routes, selected network clients, switch ports, PoE ports, and user-created firewall policies. Supports Traffic Route enable/disable, client online and blocked status with Block/Unblock control, switch-port link and speed monitoring, PoE status/power with On/Off/Cycle control, and firewall policy enable/disable.","polisy":true,"license":"https://github.com/lovintexas/udi-unifi-traffic-routes","changelog":"1.1.3\n\nRemoved duplicate PoE On and PoE Off commands from PoE switch-port nodes.\nPoE Enable/Disable controls now use the standard On/Off commands, providing a cleaner interface and native toggle control in UD Mobile.\nUpdated plugin version and profile version.\n\n1.1.2\n\nFixed UniFi switch and port node hierarchy.\nUniFi switch ports are now grouped under their corresponding switch.\nImproved node creation reliability and handling of failed node additions.\nChanged the default controller name to UniFi Control.\n\n1.1.1\nImproved UniFi Client and PoE port integration with IoX and UD Mobile. Client Blocked state and PoE Enabled state are now the primary node states, allowing standard On/Off controls to work naturally. Added On/Off mappings for Block/Unblock and PoE On/Off. Fixed PoE control for ports that do not already have a UniFi port override. Updated documentation.\n\n1.1.0\n\nAdded discovery and monitoring of UniFi Wi-Fi SSIDs.\nAdded Enable, Disable, and Query commands for SSIDs.\nSSID status changes made in UniFi are reflected in IoX through polling.\nSSID control preserves the existing WLAN configuration and changes only its enabled state.\nUpdated plugin documentation.\n\n1.0.0\n\nInitial release.\nUniFi Traffic Route monitoring and enable/disable control.\nSelected client monitoring using the IoX client group.\nClient Block/Unblock control with independent blocked-state reporting.\nUniFi switch-port status and link-speed monitoring.\nPoE status, power monitoring, On/Off, and PoE Cycle control.\nUser-created firewall-policy monitoring and enable/disable control.","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"url":"https://github.com/lovintexas/udi-unifi-traffic-routes.git","recurringPeriod":"day","branch":"main","isTrial":true,"edition":"Standard","version":"1.1.3","id":"034c303d-9d59-42d7-ad96-e7859041800d","recurring":30},{"isPerpetual":true,"branch":"main","id":"9cda2eb3-078c-452a-80fc-f2a747a4c1af","version":"1.1.3","price":10,"url":"https://github.com/lovintexas/udi-unifi-traffic-routes.git","edition":"Standard"}],"eisy":true,"uuid":"92a74962-15d9-4ecd-ac50-57d0225c7d6f","requireEisyui":false,"ts_updated":1791503330},{"longPoll":300,"docs":"https://github.com/lovintexas/IoX-Logger","executable":"iox_logger.py","readme":"# IoX Logger\n\nIoX Logger adds historical data logging to IoX.\n\nIt can record values from native IoX nodes as well as nodes created by other plugins, allowing you to track values over time without requiring an external database or logging server.\n\n## Features\n\n- Log values from native IoX nodes and plugin nodes\n- On-change logging\n- Fixed-interval logging\n- Historical graphing\n- CSV data export\n- Enable or disable individual loggers\n- Change logging intervals at any time\n- Automatic CSV file rotation\n- Automatic storage management\n- Simple browser-based interface\n\n## How It Works\n\nIoX Logger automatically discovers the nodes and values available through your IoX system.\n\nUsing the web interface, simply select:\n\n1. The IoX source or plugin\n2. The node\n3. The value you want to record\n4. On Change or a fixed logging interval\n\nIoX Logger then records that value automatically.\n\nRecorded data can be viewed as a historical graph or downloaded as a CSV file for use in Excel or other applications.\n\n## Web Interface\n\nIoX Logger includes its own local web interface.\n\nAfter installation, open:\n\n    http://<eisy-ip-address>:8765\n\nFor example:\n\n    http://192.168.1.100:8765\n\nThe interface is designed for use from a web browser on your local network.\n\n## Logging Modes\n\n### On Change\n\nA new data point is recorded whenever the selected IoX value changes.\n\nThis is useful for values such as:\n\n- Device state\n- Setpoints\n- Modes\n- Alarm states\n- Other values that change intermittently\n\n### Fixed Interval\n\nThe value is recorded periodically at the interval you select.\n\nThis is useful for values such as:\n\n- Temperature\n- Humidity\n- Power\n- Energy\n- Pool chemistry\n- Environmental sensors\n- Other continuously varying measurements\n\n## Data Storage\n\nHistorical data is stored locally on the eisy as CSV files.\n\nIoX Logger automatically rotates data files and manages storage so individual loggers cannot grow without limit.\n\nCurrent storage limits are:\n\n- 2 MB per CSV file\n- 10 MB total per logger\n- 1 GB total IoX Logger storage\n\n## Required IoX Permission\n\nIoX Logger requires direct access to IoX so it can discover nodes and read their values.\n\nAfter installation, open the plugin's **Configuration** page and enable:\n\n**Allow Unrestricted ISY Access by Node Server**\n\nRestart IoX Logger after enabling the permission if necessary.\n\n## Network and Security\n\nThe web interface listens on TCP port **8765**.\n\nIt is intended for use only on your trusted local network and does not currently provide user authentication.\n\nDo not expose port 8765 directly to the Internet.","status":"active","name":"IoX_Logger","language":"python3","isyAccess":true,"developer":"dr-apo@dr-apo.com","ip_added":"::ffff:72.177.80.34","nsInfoPoll":0,"logLevel":"INFO","ts_added":1788901922.572,"shortPoll":60,"author":"Louis Apostolakis","discover":false,"fileUpload":false,"aiTools":"","aiPrompt":"","desc":"Log, graph, and export historical data from IoX nodes and plugins.","changelog":"1.0.3\nModified deletion of log to delete the historical data\n1.0.2\nAdded Configuration page help.\nAdded instructions for enabling the required \"Allow Unrestricted ISY Access by Node Server\" permission.\nConfiguration help is now displayed directly within the PG3x plugin Configuration page.\n1.0.1\nAdded installation and first-use documentation.\nAdded instructions for enabling the required \"Allow Unrestricted ISY Access by Node Server\" permission.\nAdded web interface and LAN security documentation.\nAdded logger creation instructions.\nCleaned up distribution files.","install":"install.sh","authorize":false,"purchaseOptions":[{"id":"674067e7-62df-48b9-a4e0-ff924b4cf5ce","branch":"main","recurring":30,"url":"https://github.com/lovintexas/IoX-Logger.git","version":"1.0.3","isTrial":true,"edition":"Standard","recurringPeriod":"day","price":0},{"price":10,"url":"https://github.com/lovintexas/IoX-Logger.git","isPerpetual":true,"id":"a041e003-897f-4db3-a611-1324d5ad414f","branch":"main","version":"1.0.3","edition":"Standard"}],"uuid":"897cf43d-b252-4194-9831-44aabb033767","requireEisyui":false,"ts_updated":1791503188.458},{"docs":"https://github.com/BME-nodeservers/docs/blob/master/udi-bambu-poly.md","longPoll":600,"executable":"bambu_poly.py","readme":"This plug-in is designed primarily to monitor the 3D printers but is able to \ncontrol some features such as nozzle/bed temperatures and pause/resume/stop.\n<p>When the plug-in starts, it makes a connection to the printer and from that\npoint on, the printer will continuously send updates of it's status to the\nplug-in in real-time.\n<p>The plug-in monitors:\n<ul>\n<li> Printer State - current operating state of the printer\n<li> Bed target temperature - temperature set that the printer is trying to maintain\n<li> Bed current temperature - the current temperature of the bed\n<li> Nozzle target temperature - temperature set that the printer is trying to maintain\n<li> Nozzle current temperature - the current temperature of the nozzle\n<li> Cooling fan speed - the current part cooling fan speed\n<li> Chamber light - chamber light on/off\n<li> Printer speed - current set printer speed\n<li> Layer number - the layer number that is currently being printed\n<li> Time Remaining - How many minutes are estimated until the print is done\n<li> File name - the name of file being printed\n<li> Gcode state - what state the printer is in during the processing of gcode\n<li> Percent done - what percentage of the print is done\n</ul>\nThe plug-in can control:\n<ul>\n<li> Print speed\n<li> Chamber light\n<li> Fan speed\n<li> Bed temperature\n<li> Nozzle temperature\n<li> Pause printing\n<li> Resume printing\n<li> Stop/quit printing\n</ul>\n<p>The plug-in also creates nodes for the external spool and any attached AMS\nunits.  These node simply display some basic information about the filament\nloaded on the various spools (or trays as Bambulab calls them). The most\nuseful is probably the filament type and color.  The rest of the information\nseems to only be available from the AMS and not the AMSLite units.\n<p>This plug-in uses the LAN network mode on the printers for communication.\nThis means that you need to authorize the plug-in to connect to the \nprinter with the IP address, Access Code, and printer serial number.\n<h3>Should you have an issue</h3>\n<p>This plug-in was developed and tested using Bambulab's A1 with an\nAMSLite and a A1 Mini.  While it should work for any Bambulab printer\nmode, has not be tested with X1 or P series printers nor with AMS units.\n<p>If you encounter issues running this plug-in please use the following\nsteps to help resolve the issue.\n<ol>\n<li> Switch the plug-in's logging level to debug\n<li> Restart the plug-in\n<li> After you've verified the issue is still happening, download the plug-in's log package.\n<li> Send me a PM on UDI forums, describe the issue you are having and attach the log package you downloaded.\n</ol>\nHaving this log package is the only way I am able to see what is happening\nwhen you are running the plug-in.","status":"active","name":"BambuLab","language":"python3","isyAccess":false,"developer":"bpaauwe@bobsplace.com","ip_added":"73.48.241.215","nsInfoPoll":0,"logLevel":"INFO","ts_added":1738460776,"shortPoll":60,"author":"Bob Paauwe","discover":false,"desc":"Monitor and control of Bambu Lab 3D printers","polisy":true,"license":"https://github.com/BME-nodeservers/docs/blob/master/LICENSE","changelog":"1.0.1 - Add polling and clean up profile files\n1.0.0 - Initial release","authorize":false,"install":"install.sh","purchaseOptions":[{"price":20,"edition":"Standard","id":"6505bfd9-eae9-493c-bb18-f484a55166b8","isPerpetual":true,"version":"1.0.3","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/udi-bambu-poly.zip"},{"recurringPeriod":"month","price":0,"recurring":1,"edition":"Standard","id":"1bc2721f-a78c-4a84-ba46-cfb934eca6a0","isTrial":true,"version":"1.0.3","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/udi-bambu-poly.zip"}],"eisy":true,"uuid":"e9d207b0-a165-40e9-b747-38eafa498f2d","ts_updated":1778691800},{"docs":"https://github.com/BME-nodeservers/udi-roomba-poly/blob/master/README.md","longPoll":60,"executable":"roomba-poly.py","status":"active","name":"Roomba","language":"python3","isyAccess":false,"developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":0,"logLevel":"INFO","ts_added":1639785366,"shortPoll":5,"author":"Bob Paauwe","discover":true,"fileUpload":false,"desc":"Roomba node server for Polyglot v3.  Provides status and control of one or more Roomba devices.","polisy":true,"license":"https://github.com/BME-nodeservers/udi-roomba-poly/blob/master/LICENSE","changelog":"2.0.8 - 10/9/2025 - Updated to work with recent OpenSSL and fixed asyncio issues\n2.0.9 - 10/10/25 - Update getPassword() to work with recent OpenSSL\n2.0.10 - 10/18/25 - Fix the syntax error introduced in 2.0.9 which prevented the plug-in from starting\n2.0.11 - 10/21/25 - Update getPassword(), should now be compatible with current OpenSSL\n2.0.12 - 10/21/25 - Fix my mistake with naming of getPassword()\n2.0.13/2.0.14 - fix errors introduced with the getPassword() changes.\n2.0.17 - 11/2/25 - Wrap getPassword() code in a loop.  Missed this when adding new getPassword code.\n2.0.18 - back out the 2.0.17 change","authorize":false,"install":"install.sh","purchaseOptions":[{"url":"https://github.com/BME-nodeservers/udi-roomba-poly","isPerpetual":true,"branch":"pg3-master","id":"a5df469f-6861-4560-b1e9-43e26b4f4faa","version":"2.0.18","price":0,"edition":"Free"}],"eisy":true,"uuid":"3e24cce1-59d3-45b3-9bde-7adedd954d38","ts_updated":1789863974},{"docs":"https://github.com/ve7gel/Docs/blob/main/Dyson/README.md","longPoll":120,"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","status":"active","name":"DysonFan","language":"python3","isyAccess":false,"developer":"gordon@the-larsens.ca","ip_added":"24.68.224.87","nsInfoPoll":0,"logLevel":"INFO","ts_added":1780248854,"shortPoll":30,"author":"Gordon Larsen","discover":false,"fileUpload":false,"customParams":"{\n          \"Host\": \"\",\n          \"Serial\": \"\",\n          \"Credential\": \"\",\n          \"Type\": \"\",\n          \"Units\": \"C\"\n        }","desc":"UDI Poly for Dyson TP/PH/HJ series fans","polisy":true,"license":"https://github.com/ve7gel/Docs/blob/main/LICENSE.md","changelog":"###Version History:\n5.2.1 July 5, 2026\n- bugfixes\n- profile fixes\n\n5.2.0 June 1,2026\n- release 5.2.0 to Production\n\n5.1.0 Beta May 18, 2025\n- add support for Dyson Hushjet HJ10\n\n5.0.0 Beta November 10, 2025\n- modify code so that only drivers actually available with specific models are loaded\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 to improve operability with eisy-ui in particular and UDM to some degree.\n- profile changes will have significant impact on the way the status/commands work in IoX programs and most of those\n  will need to be altered.\n\n4.2.0 October 31, 2025\n- modify profiles for eisy/udm compatibility improvement\n4.0.2 March 20, 2023\n- update requirements for latest udi_interface\n4.0.0 January 19, 2023\nrelease - add support for PureCoolHumidity series 358, 358E, 358K. Thanks to UDI Forum member jwagner10 for his assistance in testing the code on the 358k\n3.3.1 April 29, 2022\n\nadd BETA support for TP02 (model 475)\n3.2.1 April 21, 2022\n\nadd some config error trapping and messages at startup\n3.2.0 March 10, 2022\n\nchange uom for ppm to ug/m3 to display ppm correctly in UI\nadd humidity settings for PH02\n3.1.5, 3.1.6 February 28, 2022\n\nbug fix for PH02\n3.1.4 February 28, 2022\n\nfix fan status display. Change how auto mode and fan speed display in UI\n3.1.2, 3.1.3 February 26, 2022\n\nadded basic support for PureCoolHumidify\nfixed F/C units display\n3.1.1 February 24, 2022\n\nworking on support for PureCoolHumidify\n3.1.0 February 21, 2022\n\nadd support for oscillation angle control\n3.0.6 February 16, 2022\n\ncode formatting and fix won't install from store\n3.0.5 January 15, 2022\n\nadd support for continuous monitoring enable/disable\n3.0.4 January 12, 2022\n\nMinor code changes to fix first startup after configuration\n3.0.3 January 12, 2022\n\nUpdate profile to correct units for particulates, VOCs and NOx\n3.0.2 January 12, 2022\n\nMinor code changes\n3.0.2 January 11, 2022\n\nAdd support for airflow direction control\n3.0.1 January 11, 2022\n\nAdd support for F or C temperature display. Library seems to always report temperature in degress Kelvin, so conversion should always be same regardless of model or country.\nAdd support for switching power off and on\n3.0.0 January 10, 2022\n\nInitial release for PG3","authorize":false,"install":"install.sh","purchaseOptions":[{"price":35,"edition":"Standard","id":"6b97b5ed-ed19-4a7f-bfac-0564081f5adf","isPerpetual":true,"version":"5.2.1","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/udi-poly-dysonfan-5-2-1.zip"},{"recurringPeriod":"day","price":0,"recurring":7,"edition":"Free","id":"7b77e631-f864-47ea-9060-af017caf2256","isTrial":true,"version":"5.2.1","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/udi-poly-dysonfan-5-2-1.zip"}],"eisy":true,"uuid":"4db455f5-28ee-469e-900b-b1349875a270","ts_updated":1783295738},{"docs":"http://github.com/BME-nodeservers/docs/blob/master/udi-wll-poly.md","longPoll":600,"executable":"wll.py","status":"active","name":"WeatherLink","language":"python3","developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":0,"logLevel":"ERROR","ts_added":1626717413,"shortPoll":60,"author":"Bob Paauwe","discover":false,"customParams":"{\n                \"IP Address\": \"\"\n        }","desc":"Pull weather data from a Davis weather station using WeatherLink Live's local device API.","polisy":true,"license":"http://github.com/BME-nodeservers/docs/blob/master/LICENSE","changelog":"Version 2.0.4\n  - Add additional rain values\n  - Switch GV values to predefined status (UV, Heat Index, Windchill) this will effect programs using those values.","authorize":false,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"day","price":0,"recurring":30,"edition":"Standard","id":"e90b0dd6-de4a-43fb-ba93-3ce2604f8b5a","isTrial":true,"version":"2.0.4","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/udi-wll-poly.zip"},{"price":10,"edition":"Standard","id":"4e7d0e04-063f-409d-9df1-1fca6713b9a1","isPerpetual":true,"version":"2.0.4","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/udi-wll-poly.zip"}],"eisy":true,"uuid":"519707af-c232-44f4-a3d2-23b74011844f","ts_updated":1689187126},{"docs":"https://github.com/BME-nodeservers/docs/blob/master/udi-russound-poly.md","longPoll":600,"executable":"russound.py","readme":"This node server is intended to support both RIO based and the legacy\nRNET based Russound whole house audio controllers.\n<br/>\n<b>NOTE: This version is not fully compatible with previous version. To support multiple chained controllers, the format of zone node address has been changed. zone nodes created with prior versions will not be recognized by this version and previous versions will not work with zones nodes created by this version.\n<br/>\nIf upgrading, the recommendation is to first delete any previous versions of the node server and then install the current version.  Any IoX programs, or notifications will need to be updated.</b>\n<br/>\n<br />\nThe legacy Russound controllers use a serial protocol called RNET. However, this\nnode server expects to access the controller via a ethernet-to-serial converter.\nThis has been tested using a QualTech QSE-100 which supports both TCP and UDP\nethernet-to-serial conversion. However, this should work with any ethernet-to-serial\ndevice that has a raw/transparent mode.\n<br/>\nCurrent controllers use a network based protocol called RIO.\n<br/>\nThis supports multiple controllers, either chained or by creating separate controller\nnodes for each.  If you have controllers \"Chained\" via the RNET cabling, the node\nserver should detect each and automatically configure the proper zones and sources.\nYou only need to configure the primary controller in the node server configuration.\n<br/>\nHowever, if you have multiple controllers and they are not connected in a \"chain\",\nyou can still configure each independently.\n<br/>\n<h2>Source on/off detection</h2>\nPrior to version 2.1, the node server created source drivers for the first 6 zones. These reflected the state of those 6 zones (active or not).  However, with version 2.1 the number of zones can now vary and is no longer a fixed at 6.  This means that the node has to use a different method to report the zone state.  The node server now sets a hidden driver and sends a command when a zone changes state.  Thus to detect this with a ISY program you need to check for both the command and the driver value.  For example, assuming you have a source called \"Internet Radio\".  You can then use a program like this:\n<br />\n<pre>\nIf\n        'RussoundCtl_1' is switched On\n    And 'RussoundCtl_1' On is Internet Radio\n \nThen\n        $InternetRadio  = 5\n \nElse\n   - No Actions - (To add one, press 'Action')\n</pre>\n<br />\nThis program will set the variable, InternetRadio  to 5 when that source is activated.  To detect when the source is de-activated (no longer being used by any active zone), change to use off/DOF.","status":"active","name":"Russound","language":"python3","isyAccess":false,"developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":0,"logLevel":"INFO","ts_added":1650647650,"shortPoll":60,"author":"Bob Paauwe","discover":false,"desc":"Control and status for Russound whole house audio devices","polisy":true,"license":"https://github.com/BME-nodeservers/docs/blob/master/LICENSE","changelog":"-2.1.12 09/18/2025\n  - Fix set_source RNET command.  Zone was off by -1\n-2.1.11 04/28/2024\n  - Add some logging around connect/reconnect\n  - Trap additional connection errors\n-2.1.10 02/24/2024\n  - Fix bug introduced in 2.1.9\n-2.1.9 02/21/2024\n  - Abort message processing if the message is targeted at multiple entities\n-2.1.8 10/10/2023\n  - Change line endings for RIO commands\n  - Add party mode master option\n- 2.1.7 10/09/2023\n  - Add all zones on/off to main node\n  - Implement volume up/down buttons\n - Add keypad buttons to zone\n- 2.1.6 09/20/2023\n  - Fix source display for RIO controllers\n- 2.1.5 09/12/2023\n  - More fixes to RNET message processing\n  - Display messages while initializing\n  - Send commands/driver status changes for source state changes.\n- 2.1.4 09/05/2023\n  - Fix source indexing and NLS generation\n  - Fix zone node addressing\n  - Fix source selection\n  - Fixup RNET message processing\n- 2.1.3 08/31/2023\n  - Fix zone poll happening before zone node is configured\n  - Fix source indexing, off by one\n- 2.1.2 08/30/2023\n  - Fix bug with ZONE STATE messages\n- 2.1.1 08/30/2023\n  - Fix sleep bug in start\n  - Increase queue timeout to 60 seconds\n- 2.1.0 08/12/2023\n   - Add support for RIO based controllers\n- 2.0.0 03/03/2021\n   - Port to work on PG3\n- 1.0.4 06/16/2020\n   - Convert logging in connection functions to Polyglot logging.\n- 1.0.3 06/16/2020\n   - Process undocumented message to get keypad source selection.\n- 1.0.2 06/16/2020\n   - Fix TCP networking code.\n   - Fix get source info response.\n- 1.0.1 06/10/2020\n   - Add parameter for network protocol selection (UDP/TCP)\n- 1.0.0 06/10/2020\n   - Initial release to public github\n","authorize":false,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"day","price":0,"recurring":30,"edition":"Standard","id":"e318cadc-aaf9-4a42-b184-66e500db1a1b","isTrial":true,"version":"2.1.12","branch":null,"url":"https://pg3store.isy.io/v2/nodeservers/production/udi-russound-poly.zip"},{"price":25,"edition":"Standard","id":"f93be00e-b69c-41ba-b650-2640ab8e5f7b","isPerpetual":true,"version":"2.1.12","branch":null,"url":"https://pg3store.isy.io/v2/nodeservers/production/udi-russound-poly.zip"}],"eisy":true,"uuid":"93a72d20-2f19-4f4a-a7c0-cd1fbf12485a","ts_updated":1758235416},{"docs":"https://github.com/Panda88CO/udi-TeslaPW/blob/main/README.md","longPoll":180,"executable":"TeslaPWController.py","readme":"# udi-TeslaPW  -  for Polyglot v3 \n\n## Tesla PW Node server\n# udi-TeslaPW  -  for Polyglot v3 \n## Power wall Node server\nThe main node displays node status\nSetup node allows configuration of different parameters  (requires cloud access)\nStatus node gives a firewall status \nSolar Node gives Solar info (if solar is detected)\nGenerator node gives generator info (if generator is installed - not tested)\n\nFor the setup node to show one need to connect to the cloud (Tesla only allows changes via cloud)\nNote - there is a discrepancy between local and cloud back-off limt.  Local power wall reports about 3% higher than the value specified perventage in the cloud (one can only change back-f value via the cloud or Tesla App)\n\n## Code\nCode uses API (local power wall) from https://github.com/jrester/tesla_powerwall API - not official Tesla API \nSome info on the clould API can be found at https://www.teslaapi.io/powerwalls/commands\n\n## Refresh Token \nAn initial refresh token is required for first install (and perhaps if token somehow expires)\nIt can be obtained e.g. using \nAuth for Tesla iPhone app \nhttps://apps.apple.com/us/app/auth-app-for-tesla/id1552058613 \nor \nTesla Tokens https://play.google.com/store/apps/details?id=net.leveugle.teslatokens\n\nInput refresh token into configuration \nThe node server keep a copy of the token (file) and will try use this if node server is restarted.  It will also refresh before token expires\n\n## Installation\nTo run node server user must first select data source - from Local Power Wall and/or Tesla Cloud.  Enter IP address and user_eamil/password for local and user_email/password for cloud access along with refresh token\n\n## Notes \nUsing cloud access user can set all parameters mobile app currently supports (except car charging limit)\n\nGenerator support is not tested (I do not have one) and I have not tested without solar connected.\n\nshortPoll updates critical parameters (and issues a heartbeat)\nlongPoll updates all parameters\n","status":"active","name":"TeslaPW","language":"python3","isyAccess":false,"developer":"christian.olgaard@gmail.com","ip_added":"73.93.40.59","nsInfoPoll":0,"logLevel":"INFO","ts_added":1651702943,"shortPoll":60,"author":"Panda88CO","discover":false,"fileUpload":false,"customParams":"{\"LOCAL_IP_ADDRESS\":\"\",\"LOCAL_USER_EMAIL\":\"\",\"LOCAL_USER_PASSWORD\":\"\",\"REFRESH_TOKEN\":\"\"}","desc":"Nodeserver to allow integration of Tesla Power Wall Control.  Note, a newer version is available (udiTeslaPW2) using the official Tesla API.  Suggest to use this but requires PG3x ","polisy":true,"license":"https://github.com/Panda88CO/udi-TeslaPW/LICENSE","changelog":"Updated to handle API changes\nThis is a temporary fix - more updates may be coming - still need to figure out how to present/use time in IoP \n0.3.61 - force new Tesla Library to be installed.\n0.3.62 - Fixed issue with unknow grid status returned - It will now return unknown - One should test for status not on_grid to detect off grid status\n0.3.68 - Added support for Utility Season, Utility Period and Utility cost (Status node)","authorize":false,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"day","price":0,"recurring":14,"edition":"Free","id":"cd36b590-1313-4ee3-923d-be1ff1483d37","isTrial":true,"version":"0.3.69","branch":"main","url":"https://github.com/Panda88CO/udi-TeslaPW"},{"price":0,"edition":"Free","id":"ce64ea54-01ef-4bf8-b7c4-dbc2d2a6b275","isPerpetual":true,"version":"0.3.69","branch":"main","url":"https://github.com/Panda88CO/udi-TeslaPW"}],"eisy":true,"uuid":"04ee6cce-f773-4f6e-a2a3-805015e2f189","ts_updated":1724263206},{"docs":"https://github.com/UniversalDevicesInc-PG3/udi-rachio-poly/blob/master/README.md","longPoll":600,"executable":"rachio-poly.py","status":"active","name":"Rachio","language":"python3","isyAccess":false,"developer":"jimsearle@gmail.com","ip_added":"67.161.168.17","nsInfoPoll":0,"logLevel":"INFO","ts_added":1650407943,"shortPoll":5,"author":"JimBo.Automates","discover":true,"fileUpload":false,"customParams":"{\n}","desc":"<a href=\"https://rachio.com\">Rachio</a> water controller Plugin for the IoX on Polisy or eisy.\n","polisy":true,"license":"TBD","changelog":"IMPORTANT: You must enable PG3 remote access as detailed in [Configuration](POLYGLOT_CONFIG.md)\n* 5.0.4:\n  * Fix bug causing webhooks not to work in some random cases\n  * Fixes to error messages\n* 5.0.3: The original Author passed this off to JimBo.Automates\n  * First release of Standard Perpetual License for $20\n  * Use Portal Webhooks instead of needing to open up a local port\n  * Updated to latest RachioPy-0.1.2\n  * General code cleanup and reorganization\n  * Fixed \"Stop\" on RachioController to stop watering\n* 4.0.0-4.0.4: Updated for Polyglot v3 by Bob Paauwe @bpaauwe\n* 2.0.0: Rewritten for Polyglot v2.\n* 2.1.0: Updated to have each Rachio Device be a primary node\n* 2.2.0: Added node addition queue with a default interval of 1 second and removed forced Driver reporting to improve performance in large installs.\n* 2.2.1: Corrected \"bool\" definition in editor profile\n* 2.3.0: Simplified driver update logic\n* 2.3.1: Corrected bugs relating to setting Rain Delay and Starting Zone\n* 2.3.2: Bug fix for zone start log message\n* 2.3.3: Bug fixes for schedule durations and season adjustment commands\n* 2.4.0: Updated to accommodate changes in Rachio Cloud API.  Added websocket support and caching to minimize API calls.  Removed drivers for \"time until next schedule run\" because required info was removed from Rachio API.\n* 2.4.1: Corrected bug where error is generated if 'port' configuration parameter not defined.  Added closure of server.json file.\n* 2.4.2: Corrected bug on setting controller active zone when watering.  Removed http server response to invalid requests.\n* 3.0.0: First pass at incorporation of polyglot cloud capability\n* 3.0.1: Updated reference to rachiopy project to force usage of older version\n* 3.0.2: Removed init on start command per pull request due to compatability with UD Mobile App\n","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"eee1e738-00db-47a9-b02c-a11e29fc271e","isPerpetual":true,"version":"4.0.4","branch":"v4","url":"https://github.com/UniversalDevicesInc-PG3/udi-rachio-poly"},{"price":20,"edition":"Standard","id":"9f763184-03f0-4207-a67b-4d7e3738ac56","isPerpetual":true,"version":"5.0.4","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/Rachio.zip"}],"eisy":true,"uuid":"61ba95d3-538e-462c-ab54-570af9d19a64","ts_updated":1723598036},{"docs":"https://github.com/simplextech/pg3_docs","longPoll":14400,"executable":"st-nuheat.js","readme":"<i><b>\nAs of August 2026 it appears that mynuheat.com no longer exist and this plugin is unable to function without it.\n</b></i>\n<p>\nConfiguring this node server\n\nEnter the appropriate username (e-mail) and password used for the\nhttp://www.mynuheat.com website.\n\n<b>Temperature Scales</b>\n - Fahrenheit\n - Metric\n\n<b>Polling Parameters</b>\n - ShortPoll\n   - Time period between query of Thermostat temperature and settings\n   - Default: 3 minutes (180 Seconds)\n   - Shortest polling is 60 seconds\n - LongPoll\n   - Nothing\n\n<b>Configuration</b>\n - Username: Your mynuheat.com username\n - Password: Your mynuheat.com password\n - Scale: (Fahrenheit | Metric)\n\nAfter enter configuration information and pressing \"Save\" the nodeserver will poll\nmynuheat.com and get setup nodes for each thermostat.\n","status":"active","name":"ST-Nuheat","language":"node","isyAccess":false,"developer":"bpaauwe@bobsplace.com","ip_added":"50.110.193.30","nsInfoPoll":0,"logLevel":"WARNING","ts_added":1652068221,"shortPoll":180,"author":"Simplex Technology","discover":true,"desc":"Nuheat Signature Thermostat Integration -- No Longer Functional","polisy":true,"license":"https://github.com/BME-nodeservers/udi-nuheat-poly/LICENSE","changelog":"1.0.3 - Update to support eisy","authorize":false,"install":"install.sh","purchaseOptions":[{"url":"https://pg3store.isy.io/v2/nodeservers/production/pg3_nuheat.zip","id":"880c8c2a-82f0-48d1-81e3-d0a6d9ca30b8","recurring":7,"recurringPeriod":"day","version":"1.0.3","branch":null,"edition":"Free","price":0,"isTrial":true}],"eisy":true,"uuid":"fe68cc72-6f60-4f48-b436-5bfb126710b0","ts_updated":1788302852},{"docs":"http://www.SouthShoreAlarms.com/ssaxrpoly/manual.html","longPoll":600,"executable":"dmp.py","status":"active","name":"DMP","language":"python3","isyAccess":true,"developer":"ron@southshorealarms.com","ip_added":"71.246.109.204","nsInfoPoll":0,"logLevel":"INFO","ts_added":1717516605,"shortPoll":60,"author":"Ron Morasse","discover":true,"fileUpload":false,"customParams":"{\n\t\"customParams\": {\n\t\t\"IP Address\": \"127.0.0.1\",\n\t\t\"CmdPort\": 8011,\n\t\t\"StatusPort\": 8001,\n\t\t\"Account\": \"12345\"}\n}\n","desc":"This node server integrates the DMP XR series of alarm panels with Polyglot 3x","polisy":true,"license":"http://www.SouthShoreAlarms.com/ssaxrpoly/license.html","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"b210e15a-97ad-4fb1-9bc6-160214f8b34c","isPerpetual":true,"version":"2.0.1","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/SSA_XR_POLY2.0.1.zip"}],"eisy":true,"uuid":"d7b0e6da-15da-441b-92e2-ce401c68c0dd","ts_updated":1738171726},{"docs":"https://github.com/exking/udi-hue-pg3/blob/master/README.md","longPoll":600,"executable":"hue.py","readme":"# UDI Polyglot Philips Hue Poly\n\nThis Poly provides an interface between Hue Bridge and PG3 server.\nAll Philips branded bulbs are supported (Dimmable, White, Color and Extended Color),\nbulbs could be added to the Insteon scenes as responders and should respond to all basic commands, including dimming. After installation plugin will prompt you to push a bridge button and restart the plugin.\nWARNING: upgrading to version 1.0.0 and above will use Hue API v2 which changes IDs of every node, you will need to update your existing programs and scenes with new node IDs.\n\n### Configuration options:\n  - `debug` - prints extra debug messages, value does not matter\n  - `ignore_second_on` - ignore DON command if bulb is already On\n  - `bridges` - this should be set to the list of Hue bridges if you have multiple you would like to be able to control, for example: `[\"10.0.1.1\",\"10.0.2.1\"]`","status":"active","name":"Hue","language":"python3","isyAccess":false,"developer":"apevnev@me.com","ip_added":"76.183.193.124","nsInfoPoll":0,"logLevel":"INFO","ts_added":1650857887,"shortPoll":60,"author":"xKing","discover":false,"fileUpload":false,"desc":"Connect Phillips Hue Personal Wireless Lighting system to the ISY994.","polisy":true,"license":"https://github.com/exking/udi-hue-pg3/blob/master/LICENSE.md","authorize":false,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"day","price":0,"recurring":30,"edition":"Standard","id":"afd14ea0-2a2e-487d-aa1e-72608d51ac56","isTrial":true,"version":"1.0.7","branch":"master","url":"https://github.com/exking/udi-hue-pg3.git"},{"price":20,"edition":"Standard","id":"a0d6121e-d3d4-4d0a-a1d8-5bef186f3b51","isPerpetual":true,"version":"1.0.7","branch":"master","url":"https://github.com/exking/udi-hue-pg3.git"},{"price":0,"edition":"Free","id":"1f98aec3-604f-4230-986e-fba3f3f63746","isPerpetual":true,"version":"0.1.11","branch":"huev1","url":"https://github.com/exking/udi-hue-pg3.git"}],"eisy":true,"uuid":"e3adc119-1d74-4986-84c6-cfebb19e94df","ts_updated":1762186372},{"longPoll":48200,"docs":"https://github.com/mkohanim/hebcal/","executable":"hebcal.py","readme":"This plugin allows you to convert to/from Jewish to Gregorian calendars/dates. It also has accurate dates for Jewish holidays and Zmanim.","status":"active","name":"hebcal","language":"python3","isyAccess":false,"developer":"michel@universal-devices.com","ip_added":"::ffff:76.91.7.232","nsInfoPoll":0,"logLevel":"INFO","ts_added":1787941474.403,"shortPoll":28400,"author":"Michel Kohanim","discover":false,"fileUpload":false,"aiTools":"[{\n  \"name\": \"get_dates\",\n  \"description\": \"Retrieve Jewish holidays and related dates (e.g. Shabbat, Yom Tov, candle lighting/havdalah events) within a given year range, optionally filtered to a specific holiday and/or month range. Use this to look up dates and timing information needed for scheduling home automations around Jewish holidays.\",\n  \"input_schema\": {\n    \"type\": \"object\",\n    \"properties\": {\n      \"event_name\": {\n        \"type\": \"string\",\n        \"description\": \"Optional name of a specific holiday or event to filter for (e.g. 'Passover', 'Yom Kippur', 'Rosh Hashanah', 'Shabbat'). If omitted, all holidays/events in the date range are returned.\"\n      },\n      \"start_year\": {\n        \"type\": \"integer\",\n        \"description\": \"The Gregorian year to begin the search from (inclusive).\"\n      },\n      \"end_year\": {\n        \"type\": \"integer\",\n        \"description\": \"The Gregorian year to end the search at (inclusive).\"\n      },\n      \"start_month\": {\n        \"type\": \"integer\",\n        \"description\": \"Optional Gregorian month (1-12) within start_year to begin the search from. If omitted, the search starts from the beginning of start_year.\",\n        \"minimum\": 1,\n        \"maximum\": 12\n      },\n      \"end_month\": {\n        \"type\": \"integer\",\n        \"description\": \"Optional Gregorian month (1-12) within end_year to end the search at. If omitted, the search runs through the end of end_year.\",\n        \"minimum\": 1,\n        \"maximum\": 12\n      },\n      \"latitude\": {\n        \"type\": \"number\",\n        \"description\": \"Latitude of where we are. You already have it in the context\"\n      },\n     \"longitude\": {\n        \"type\": \"number\",\n        \"description\": \"Longitude of where we are. You already have it in the context\"\n      },\n     \"tzid\": {\n        \"type\": \"string\",\n        \"description\": \"Time zone id such as Los Angeles/Americas\"\n      }\n    },\n    \"required\": [\"start_year\", \"end_year\"]\n  }\n},\n{\n  \"name\": \"convert_date\",\n  \"description\": \"Convert a Gregorian date to its Hebrew calendar equivalent, and optionally project that date's recurring Hebrew-calendar anniversary (e.g. a yahrzeit or birthday) onto Gregorian dates across a range of years. Use this for questions like 'my dad's memorial was June 15 2003, what are the Hebrew dates for it over the next 10 years' -- pass the original Gregorian date plus a start_year/end_year range and get back every occurrence in one call, instead of converting year by year.\",\n  \"input_schema\": {\n    \"type\": \"object\",\n    \"required\": [\"original_date\"],\n    \"properties\": {\n      \"original_date\": {\n        \"type\": \"string\",\n        \"format\": \"date\",\n        \"description\": \"The known Gregorian date, in YYYY-MM-DD format (e.g. '2003-06-15').\"\n      },\n      \"start_year\": {\n        \"type\": \"integer\",\n        \"description\": \"Optional Gregorian year to begin the range. Omit (along with end_year) to just convert 'original_date' itself to its Hebrew equivalent. If provided, must be given together with end_year.\"\n      },\n      \"end_year\": {\n        \"type\": \"integer\",\n        \"description\": \"Optional Gregorian year to end the range (inclusive). Omit (along with start_year) to just convert 'original_date' itself to its Hebrew equivalent. If provided, must be given together with start_year.\"\n      },\n      \"latitude\": {\n        \"type\": \"number\",\n        \"description\": \"Optional. Latitude of where we are, used only if sunset-relative day-boundary adjustment is needed (a Hebrew day begins at the prior evening's sunset).\"\n      },\n      \"longitude\": {\n        \"type\": \"number\",\n        \"description\": \"Optional. Longitude of where we are, used only if sunset-relative day-boundary adjustment is needed.\"\n      },\n      \"tzid\": {\n        \"type\": \"string\",\n        \"description\": \"Optional. IANA time zone id, e.g. 'America/Los_Angeles', used only if sunset-relative day-boundary adjustment is needed.\"\n      }\n    }\n  }\n}\n]\n","aiPrompt":"# Jewish Date & Holiday & Shabbat Automation Rules\n\nReference data for scheduling home automations around Jewish holidays and Shabbat. Exact times are location-specific and should be pulled from the holiday data source (e.g. Hebcal) rather than hardcoded.\n\n## Candle Lighting\n\nJewish holidays begin at sunset. Candle lighting occurs before sunset.\n\n| Occasion | Timing |\n|---|---|\n| Regular Shabbat | 18 minutes before sunset |\n| Yom Tov (holidays) | 18 minutes before sunset |\n| Erev Yom Kippur | 20–40 minutes before sunset (varies by community) |\n\n**Automation note:** Use the candle lighting time from the event data, not a fixed offset, since it is location-specific.\n\n## Havdalah\n\nJewish holidays end at nightfall (when 3 stars are visible).\n\n| Occasion | Timing |\n|---|---|\n| Shabbat ends | ~42–72 minutes after sunset (varies by community) |\n| Yom Tov ends | ~42–72 minutes after sunset (varies by community) |\n\nHavdalah is the ceremony marking the end of Shabbat or a holiday. The exact time is location-specific and provided in the holiday data.\n\n## Yom Kippur\n\n**Day of Atonement**\n\n- **Begins:** Candle lighting time (typically 20–40 minutes before sunset on Erev Yom Kippur)\n- **Ends:** Nightfall the next day (~42–72 minutes after sunset)\n- **Duration:** ~25 hours of fasting and prayer\n\n**Special considerations:**\n- All work prohibited (like Shabbat)\n- No eating or drinking\n- Lights should be on timers before the holiday begins\n- Consider pre-setting thermostats\n\n**Automation rule:** Set candle lighting time 10–40 minutes before sunset on erev.\n\n## Shabbat\n\n**Sabbath**\n\n- **Begins:** Friday at candle lighting (18 minutes before sunset)\n- **Ends:** Saturday at nightfall (42–72 minutes after sunset, varies by community)\n- **Work prohibited:** No use of electricity, no cooking, no travel\n\n**Automation rules:**\n- Lights should be automated before candle lighting\n- Thermostats should be set beforehand\n- Do not schedule any device changes during Shabbat unless pre-programmed\n\n## Passover (Pesach)\n\n- **Duration:** 8 days (7 in Israel)\n- **First 2 days and last 2 days:** Yom Tov (full holiday restrictions)\n- **Middle 4 days:** Chol HaMoed (intermediate days, some work permitted)\n- Yom Tov days carry the same restrictions as Shabbat\n- Candle lighting occurs on erev (first night) and the second night\n\n**Automation rule:** Treat the first 2 and last 2 days like Shabbat.\n\n## Rosh Hashanah\n\n**Jewish New Year**\n\n- **Duration:** 2 days (both are Yom Tov)\n- Same restrictions as Shabbat\n- Shofar (ram's horn) is sounded during daytime\n- Candle lighting occurs on both nights\n- **Second day candle lighting:** After nightfall of the first day (not before)\n\n**Automation rule:** Treat both days as Shabbat for scheduling.","desc":"This plugin allows you to convert to/from Jewish to Gregorian calendars/dates. It also has accurate dates for Jewish holidays and Zmanim.","license":"https://github.com/mkohanim/hebcal/blob/main/LICENSE","changelog":"1.0.0 - 08/28/2026:\n- Initial release\n1.0.13 - 09/08/2026:\n- Removed extra nodes\n- Converted to zip archive","install":"install.sh","authorize":false,"purchaseOptions":[{"edition":"Standard","url":"https://pg3store.isy.io/v2/nodeservers/061ca0e8-947d-43b5-bf59-7529db3acb4a/hebcal-1.0.13.zip","isPerpetual":true,"id":"fa900731-88c5-42fc-94b8-242db60675ff","price":0,"version":"1.0.13"}],"uuid":"061ca0e8-947d-43b5-bf59-7529db3acb4a","requireEisyui":false,"ts_updated":1788928314.686},{"docs":"https://github.com/UniversalDevicesInc-PG3/udi-presenceUnifi-nodeserver/blob/main/README.md","executable":"unifi_poly.py","status":"active","name":"UnifiPresence","language":"python3","desc":"UniFi Device Network Presence Detection","developer":"jf.tremblay@gmail.com","install":"install.sh","ip_added":"74.14.175.171","purchaseOptions":[{"price":0,"edition":"Free","isPerpetual":true,"id":"204817b7-49b4-47fa-a264-a48766b19492","branch":"main","version":"3.0.0","url":"https://github.com/UniversalDevicesInc-PG3/udi-presenceUnifi-nodeserver.git"}],"uuid":"159970c2-7990-4359-861e-cc77b4e116d0","logLevel":"DEBUG","ts_added":1635446555,"ts_updated":1635446555,"author":"AutomationGeek"},{"docs":"https://github.com/PG3Plugins/holidays-poly/blob/master/README.md","longPoll":60,"executable":"holidays_server.py","status":"active","name":"Holidays","language":"python3","isyAccess":false,"developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":0,"logLevel":"INFO","ts_added":1650393047,"shortPoll":15,"author":"FirstOne","discover":false,"fileUpload":false,"desc":"Maintains list of holidays and vacations","polisy":true,"license":"https://github.com/PG3Plugins/holidays-poly/blob/master/LICENSE","authorize":false,"install":"install.sh","purchaseOptions":[{"isPerpetual":true,"version":"1.0.0","edition":"Free","id":"a3e8c5c4-b8e4-4e46-872d-87a1e8fbdb49","url":"https://github.com/PG3Plugins/holidays-poly","branch":"master","price":0}],"eisy":true,"uuid":"767e6659-56d8-4049-a928-3abefc388cb8","ts_updated":1788212895},{"docs":"https://github.com/PG3Plugins/udi-sonos-poly/blob/master/README.md","longPoll":30,"executable":"sonos-poly.py","status":"active","name":"Sonos","language":"python3","isyAccess":false,"developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":0,"logLevel":"ERROR","ts_added":1640653506,"shortPoll":5,"author":"Bob Paauwe","discover":true,"fileUpload":false,"desc":"Plug-in for Sonos speakers.  Provides status and control for the individual speakers.","polisy":true,"license":"https://github.com/PG3Plugins/udi-sonos-poly/blob/master/LICENSE","changelog":"3.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,"install":"install.sh","purchaseOptions":[{"id":"862e823a-4253-4b0c-89be-76997cfa8ee8","isPerpetual":true,"branch":"master","url":"https://github.com/PG3Plugins/udi-sonos-poly","price":0,"version":"3.0.2","edition":"Free"}],"eisy":true,"uuid":"fceec281-4331-43c1-8c99-3ee17d2ceadb","ts_updated":1788213079},{"docs":"https://github.com/Panda88CO/udi-NetatmoWeather/blob/main/README.md","longPoll":1800,"executable":"udiNetatmoWeather.py","readme":"Obtain clientID and clientSecret from Natatmo developer website https://dev.netatmo.com by logging in and select myApps.  Click Create.  Enter info and then save - This exposes Client_id and client_secret.  Copy client_id and client_secret Enter in client_id and client_secret this node''''s configuration.\nThen restart - Press authenticate when requested and follow web login to Netatmo site and approve access (read_station)\nDeselect weather stations not needed by setting value to 0 and then restart \nreadme has more information","status":"active","oauth":"{\"name\":\"Netatmo Weather Station\",\"client_id\":\"client_id\",\"client_secret\":\"client_secret\",\"auth_endpoint\":\"https://api.netatmo.com/oauth2/authorize\",\"token_endpoint\": \"https://api.netatmo.com/oauth2/token\",\"scope\":\"read_station\",\"cloudlink\": true, \"addRedirect\": true}","name":"NetatmoWeather","language":"python3","isyAccess":false,"developer":"christian.olgaard@gmail.com","ip_added":"73.93.40.59","nsInfoPoll":0,"logLevel":"INFO","ts_added":1708988250,"shortPoll":300,"author":"Panda88CO","discover":false,"fileUpload":false,"customParams":"{\"clientID\":\"Enter clientID\",\"clientSecret\":\"Enter clientSecret\",\"TEMP_UNIT\":\"C\"}","desc":"Netatmo Weather Node Server - using latest authentication.  NOTE- REQUIRES PG3x (PG3 not supported)\nSupports multiple weather stations.  ","polisy":true,"license":"https://github.com/Panda88CO/udi-NetatmoWeather/blob/main/LICENSE","changelog":"0.1.0  Initial release - inspired and some code for node config copied as start by original netatmoWS node\n0.1.1 Minor fix during start up\n0.1.2 Fixed bug relating to force Update at main node ","authorize":true,"install":"install.sh","purchaseOptions":[{"price":10,"edition":"Standard","id":"5e1974fa-3039-4899-aa2c-da6467a82eaf","isPerpetual":true,"version":"0.1.2","branch":"main","url":"https://github.com/Panda88CO/udi-NetatmoWeather"},{"recurringPeriod":"day","price":0,"recurring":15,"edition":"Standard","id":"3d84d3b9-683f-494c-bbb3-23ee7c8e17d3","isTrial":true,"version":"0.1.2","branch":"main","url":"https://github.com/Panda88CO/udi-NetatmoWeather"}],"eisy":true,"uuid":"f3326c80-929c-4f42-9380-a30e567c4e1d","ts_updated":1716414170},{"docs":"https://github.com/Goose66/NSDocs/blob/main/iaqualink-pg3.md","longPoll":60,"executable":"main.py","readme":"A Node Server for Polyglot v3 that interfaces to the iAquaLink™ cloud service to allow the ISY to control Jandy® AquaLink® pool controllers and accessories.\n\nClick \"More Info\" below for installation instructions and release notes.\n","status":"active","name":"iAquaLink","language":"python3","developer":"kingwrandy@gmail.com","ip_added":"24.178.79.63","nsInfoPoll":0,"logLevel":"INFO","ts_added":1666573214,"shortPoll":15,"author":"W. Randy King (Goose66)","discover":false,"customParams":"{\"username\": \"<email address>\", \"password\": \"<password>\"}","desc":"Accesses the iAquaLink™ cloud service to allow the ISY to control Jandy® AquaLink® pool controllers and accessories.","polisy":true,"license":"https://github.com/Goose66/NSDocs/blob/main/LICENSE.md","changelog":"Current release:\n3.1.10 - New feature (2023-04-19)\n- fixed bug when no devices returned\n- fixed bug falsely claiming no serial number present for System\n- added support for OneTouch macros\n- refactored code to asyncio-friendly structure\n\nPrevious releases:\n3.0.9 - Testing fixes (2022-10-23)\n- fixed up service node connection state (ST) reporting\n- added AWAKE command (heartbeat) processing\n- fixed pool and spa setpoint \n\n3.0.8 - Initial Release (2022-10-21)\n- Converted iaqualink-polyglotv2 to PG3 API","authorize":false,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"month","price":0,"recurring":1,"edition":"Standard","id":"2f1175da-ba96-4075-bf7c-cce9c563b621","isTrial":true,"version":"3.1.10","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/iaqualink-pg3-3.1.10.zip"},{"price":10.95,"edition":"Standard","id":"43bc4527-50dd-4cb3-933e-7671940470bc","isPerpetual":true,"version":"3.1.10","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/iaqualink-pg3-3.1.10.zip"}],"eisy":true,"uuid":"94417e5b-4a6b-4cf2-8349-cb42635df635","ts_updated":1704670539},{"docs":"https://github.com/BME-nodeservers/docs/blob/master/udi-climacell-poly.md","longPoll":600,"executable":"climacell.py","readme":"# Climacell weather service\n\nThis is a node server to pull weather data from the Climacell weather network and make it available to a [Universal Devices ISY994i/IoP](https://www.universal-devices.com/residential/ISY) [Polyglot interface](http://www.universal-devices.com/developers/polyglot/docs/) with  [Polyglot V3](https://github.com/UniversalDevicesInc/pg3)\n\n(c) 2020,2021 Robert Paauwe\n\nGo to the [Climacell](http://www.climacell.co) website for more information the Climacell weather network.\n\n<b>Installation</b>\n1. Go to the Polyglot Store in the UI and click Purchase. You will be redirected to the UDI store to purchase a license for this node server.\n2. After purchasing the node server, you will be redirected back to PG3.\n3. From either the store or the purchased list, click the install button to install.\n5. After the install completes, go to the dashboard and select Climacell 'Details'\n6. Configure the node server per configuration section below.\n\n\n### Node Settings\nThe settings for this node are:\n\n#### Short Poll\n   * How often to poll the climacell weather service for current condition data (in seconds). \n#### Long Poll\n   * How often to poll the climacell weather service for forecast data (in seconds). Note that the data is only updated every 10 minutes. Setting this to less may result in exceeding the free service rate limit.\n#### APIkey\n   * Your Climacell API key needed to authorize the connection the the climacell API.\n#### Latitude\n   * Specify the latitude of the location to use in the weather data queries (in decimal degrees).  \n#### Longitude\n   * Specify the longitude of the location to use in the weather data queries (in decimal degrees).  \n#### Elevation\n   * The elevation of your location, in meters. This is used for the ETo calculation.\n#### Forecast Days\n   * The number of days of forecast data to track (0 - 15).\n#### Plant Type\n   * Used for the ETo calculation to compensate for different types of ground cover. Default is 0.23\n#### Units\n   * set to 'us' or 'si' to control which units are used to display the weather data.\n\n## Node substitution variables\n### Current condition node\n * sys.node.[address].ST      (Node sever online)\n * sys.node.[address].CLITEMP (current temperature)\n * sys.node.[address].CLIHUM  (current humidity)\n * sys.node.[address].DEWPT   (current dew point)\n * sys.node.[address].BARPRES (current barometric pressure)\n * sys.node.[address].SPEED   (current wind speed)\n * sys.node.[address].WINDDIR (current wind direction )\n * sys.node.[address].DISTANC (current visibility)\n * sys.node.[address].SOLRAD  (current solar radiation)\n * sys.node.[address].GV5     (current gust speed)\n * sys.node.[address].GV13    (current weather conditions)\n * sys.node.[address].GV14    (current percent cloud coverage)\n * sys.node.[address].GV6     (current precipitation accumulation)\n * sys.node.[address].GV2     (current feels like temperature)\n * sys.node.[address].GV9     (current moon phase)\n * sys.node.[address].GV17    (current air quality)\n\n### Forecast node\n * sys.node.[address].CLIHUM  (forecasted humidity)\n * sys.node.[address].BARPRES (forecasted barometric pressure)\n * sys.node.[address].RAINRT  (forecasted rain rate)\n * sys.node.[address].GV18    (forecasted chance of precipitation)\n * sys.node.[address].GV19    (day of week forecast is for)\n * sys.node.[address].GV0     (forecasted high temperature)\n * sys.node.[address].GV1     (forecasted low temperature)\n * sys.node.[address].GV13    (forecasted weather conditions)\n * sys.node.[address].GV7     (forecasted max wind speed)\n * sys.node.[address].GV8     (forecasted min wind speed)\n * sys.node.[address].GV20    (calculated ETo for the day)\n","status":"active","name":"Climacell","language":"python3","isyAccess":false,"developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":0,"logLevel":"ERROR","ts_added":1626041453,"shortPoll":120,"author":"Bob Paauwe","discover":false,"customParams":"{\n        \"APIkey\": \"\",\n        \"Latitude\": 0.0,\n        \"Longitude\": 0.0,\n        \"Units\": \"imperial\",\n        \"Forecast Days\": 0,\n        \"Elevation\": 0,\n        \"Plant Type\": 0.23\n    }","desc":"Add weather data from Tomorrow.io. Includes current conditions and daily forecasts","polisy":true,"license":"https://github.com/BME-nodeservers/docs/blob/master/LICENSE","changelog":"2.0.3 - Added query command to primary node\n2.0.2 - Change timestep as 5m isn't available for free plan users anymore.\n2.0.1 - Allow PG3 to control node server status driver","authorize":false,"install":"install.sh","purchaseOptions":[{"price":5,"edition":"Standard","id":"1de8f24e-3779-485c-b398-8d17b4117394","isPerpetual":true,"version":"2.0.3","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/udi-climacell-poly.zip"}],"eisy":true,"uuid":"a2eca832-fb97-4da4-b32e-3edd41db54ed","ts_updated":1714759214},{"docs":"https://github.com/Panda88CO/udi-NetatmoEnnergy/blob/main/README.md","longPoll":3600,"executable":"udiNetatmoEnergy.py","readme":"This node server integrates the Netatmo Smart Vales as part of the energy system. You will need account access to your Netatmo via the Netatmo Developer API https://dev.netatmo.com.  Log in and select My Apps and then Create,  Fill in info and press save - This exposes a client ID and client secret. Note, if you have other NEtatmo systems and node servers, you need to create a new App with separate Client ID and Client Secret keys.\nStart the node server under PG3 - go to configuration and enter client ID and client Secret.  Then restart.   First time you do this you should see a text box asking to authendicate.  Press the authendicate button - you should be taken to a new webpage where you login using you Netatmo id and password (used to generate the clientID etc).  Then press accept and you will be returned to the PG3 interface. \nAfter running a little the differnt main netatmo homes (with energy system) under the account should be listed in configuration.  By default all are active.  If you do not want one system included set the value to 0.\nYou can send the preferred temp unit, but Netatmo operates in C.  It will be displayed in the node as the selected unit, but valves will show Celcius\nRestart and you should be up and running\n\nIf people have the boiler control I can add this, but I would need access to the system to test it.\n\nGood luck\n","status":"active","oauth":"{\"name\":\"Netatmo Energy\",\"client_id\":\"client_id\",\"client_secret\":\"client_secret\",\"auth_endpoint\":\"https://api.netatmo.com/oauth2/authorize\",\"token_endpoint\": \"https://api.netatmo.com/oauth2/token\",\"scope\":\"read_thermostat write_thermostat\",\"cloudlink\": true, \"addRedirect\": true}","name":"NetatmoEnergy","language":"python3","isyAccess":false,"developer":"christian.olgaard@gmail.com","ip_added":"73.93.40.59","nsInfoPoll":0,"logLevel":"INFO","ts_added":1712707364,"shortPoll":600,"author":"Panda88CO","discover":false,"fileUpload":false,"customParams":"{\"clientID\":\"Enter clientID\",\"clientSecret\":\"Enter clientSecret\",\"TEMP_UNIT\":\"C\"}","desc":"Node Server to use Netatmo Energy Products with Universal Devices eISY - Requires PG3x","polisy":true,"license":"https://github.com/Panda88CO/udi-NetatmoEnergy/blob/main/LICENSE","changelog":"0.1.8 - Initial Release","authorize":true,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"day","price":0,"recurring":30,"edition":"Free","id":"28eafcb2-ed0e-4c3b-9f16-d8c0060d675a","isTrial":true,"version":"0.1.8","branch":"main","url":"https://github.com/Panda88CO/udi-NetatmoEnergy"},{"price":10,"edition":"Standard","id":"cfbe4bb0-7cdb-4195-9fee-065aaf8a7dec","isPerpetual":true,"version":"0.1.8","branch":"main","url":"https://github.com/Panda88CO/udi-NetatmoEnergy"}],"eisy":true,"uuid":"13cf0b77-25df-4aae-8971-1bc2c13e09e7","ts_updated":1715709217},{"docs":"POLYGLOT_CONFIG.md","longPoll":600,"executable":"udi-unifiprotectapi-pg3x.py","readme":"Plugin for EISY/Polisy (eisy-ui or PG3 environment) that integrates UniFi Protect cameras and USL/UP Sense sensors via Ubiquiti's Public Integration API (API-key auth). It reports motion, person, vehicle, animal, package, line crossing, audio, doorbell, and sensor events (contact, leak, glass break, temperature, humidity, and more) as ISY nodes. Detection changes emit ISY control commands (e.g. MOTION, PERSON, OPEN) for program triggers, not only status driver updates. Read-only — subscribes to Protect; does not send commands back to UniFi.","status":"active","name":"UnifiProtapi","language":"python3","isyAccess":false,"developer":"stephenearljenkins@me.com","ip_added":"153.57.195.74","nsInfoPoll":0,"purchaseOptionsBeta":[{"branch":"beta","isTrial":true,"recurring":1,"recurringPeriod":"year","version":"1.5.5","id":"221eee56-1f63-4d50-9a3e-01cec0b922dc","price":0,"edition":"Beta","url":"https://github.com/sejgit-udi-plugins/udi-unifiprotectapi-pg3x"}],"logLevel":"INFO","ts_added":1788912735,"shortPoll":60,"author":"headrom","discover":false,"fileUpload":false,"desc":"Unifi Protect integration to Eisy","license":"LICENSE","changelog":"## 1.5.5\n\n- Temporary Polyglot **success** notice after connect and discovery (clears after 30 s), matching Ta$\n\n## 1.5.4\n\n- Send control commands with explicit value and uom (``reportCmd(cmd, 1, 2)`` / ``(cmd, 0, 2)``) so Python udi_interface forwards them to ISY\n- Remove ``nodeType=\"139\"`` from camera and sensor nodedefs (match Virtual/MQTT/Hunter Douglas; keep on controller only)\n- After updating: delete UniFi camera nodes in ISY, run DISCOVER, then recreate Control programs\n\n## 1.5.3\n\n- Tie ``reportCmd`` to driver value changes (same condition as Status updates)\n- Log every control command at INFO (``reportCmd LINE (GV8)``) for EISY log verification\n- Match Hunter Douglas / Virtual ``reportCmd(cmd, 2)`` pattern\n- Normalize Protect ``alrmSiren`` / ``alrmSmoke`` audio type strings for siren and smoke detections\n- Read ``smartDetectEvents`` when audio types arrive on that field\n\n## 1.5.2\n\n- Complete NLS command names for all nodedefs (fixes missing Control triggers on AI+Audio cameras)\n- Add CONNECTED/DISCONNECTED control commands for online/offline transitions\n- Add profile test ensuring every send command has an ISY program label\n- Rename project to **Unifi Protect api** (`udi-unifiprotectapi-pg3x`)\n\n## 1.5.1\n\n- Fix line crossing ignored on public API cameras (``hasLineCrossing`` omitted from featureFlags)\n- Log line crossing events at INFO for easier EISY troubleshooting\n","authorize":false,"install":"install.sh","purchaseOptions":[{"version":"1.5.5","isPerpetual":true,"url":"https://github.com/sejgit-udi-plugins/udi-unifiprotectapi-pg3x","edition":"Free","price":0,"id":"49df1906-8734-43e3-8773-de42d154cc37","branch":"production"}],"uuid":"46a2fc02-54c1-4c2b-b945-f51686d7766a","ts_updated":1789241098.042},{"docs":"https://github.com/awysocki/ACInfinity/blob/main/README.md","longPoll":600,"executable":"acinf_main.py","readme":"# AC Infinity Fan NodeServer\n\nThis NodeServer integrates AC Infinity ventilation systems with your Universal Devices IoX (eisy/ISY-994) controller via the AC Infinity Cloud API. Built using clean-room architecture, it brings real-time fan telemetry and precise speed management into your home automation ecosystem.\n\n## Supported Hardware\n* Fully tested and validated with the **AC Infinity Controller 69 Pro**.\n\n## Key Features\n* **Decoupled Control Architecture:** In strict alignment with AC Infinity cloud behavior, fan power and speed controls are completely broken out. Adjusting fan speeds via IoX programs will *not* automatically turn the fan on or off; they must be commanded independently.\n* **Dual-Layer Status Model:** Implements a distinct state model to perfectly handle internet latency:\n  * **Local Fields (`ST`, `GV0`):** Optimistic, real-time feedback showing your exact command intent.\n  * **Remote Fields (`GV1`, `GV2`):** Verified cloud readback confirming the actual, physical fan progression and state convergence.\n* **Granular Speed Mapping:** Full speed control scale supported from `0` to `10`.\n\n## Configuration Parameters\nUpon installation, enter the following required parameters on the NodeServer Configuration page:\n* `user`: Your AC Infinity account email/username.\n* `password`: Your AC Infinity account password.\n\n*Advanced tuning parameters (`verify_interval_s`, `verify_timeout_s`) are optionally supported for adjusting response loops but are hidden by default.*\n\n## Important Security Note\nThe AC Infinity cloud API utilizes an unencrypted HTTP network path rather than SSL. It is highly recommended to use a dedicated AC Infinity automation account/password rather than your primary personal credentials.","status":"active","name":"ACInfinity","language":"python3","isyAccess":false,"developer":"awysocki@absoftware.com","ip_added":"47.181.10.186","nsInfoPoll":0,"logLevel":"INFO","ts_added":1784287684,"shortPoll":60,"author":"Andy Wysocki","discover":false,"fileUpload":false,"desc":"Integrates AC Infinity ventilation controllers (tested on Controller 69 Pro) with IoX via the Cloud API. Features decoupled PWM speed scaling (0-10) and power toggles, using an optimistic local state model alongside live remote cloud readback to track physical state convergence.","polisy":true,"license":"https://github.com/awysocki/ACInfinity/blob/main/LICENSE","changelog":"2026.8.5 - Fix bug where user/pass was blanked on reboot\n2026.7.5 - Working release","authorize":false,"install":"install.sh","purchaseOptions":[{"version":"2026.8.5","isPerpetual":true,"id":"ade4cf4b-a2dc-4742-b686-c01ebcecfdc9","edition":"Free","branch":"","price":0,"url":"https://github.com/awysocki/ACInfinity"}],"eisy":true,"uuid":"da2e0ff0-334e-4949-8027-4ca46f11c587","ts_updated":1787695318},{"docs":"https://github.com/simplextech/pg3_docs","longPoll":600,"executable":"st-sonos.js","status":"active","name":"ST-Sonos","language":"node","isyAccess":false,"developer":"bpaauwe@bobsplace.com","ip_added":"50.110.193.30","nsInfoPoll":0,"logLevel":"WARNING","ts_added":1652069144,"shortPoll":60,"author":"Simplex Technology","discover":true,"fileUpload":false,"desc":"Sonos Integration","polisy":true,"license":"https://github.com/simplextech/LICENSE","changelog":"1.0.12 - Add better error message/debug message to JishiAPI get requests\n1.0.11 - Run npm install on node-sonos-http-api so it can be run\n1.0.10 - Attempt to apply fix for recalculateGroupVolume error\n1.0.9 - Add support for nightmode and speech enhancement\n1.0.8 - use full path to sonos server binary\n1.0.7 - update to work with eisy","authorize":false,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"day","price":0,"recurring":7,"edition":"Standard","id":"f13f7e07-2c42-415d-8ef2-90e7431e2c7d","isTrial":true,"version":"1.0.11","branch":null,"url":"https://pg3store.isy.io/v2/nodeservers/production/pg3_sonos-1.0.12.zip"},{"price":25,"edition":"Standard","id":"469d4e8b-3f16-4725-9745-e590e7ac2625","isPerpetual":true,"version":"1.0.11","branch":null,"url":"https://pg3store.isy.io/v2/nodeservers/production/pg3_sonos-1.0.12.zip"}],"eisy":true,"uuid":"82a81345-75e8-48c1-87fc-60e4cfd46860","ts_updated":1768000044},{"docs":"https://github.com/UniversalDevicesInc-PG3/udi-poly-notification/blob/master/README.md","longPoll":600,"executable":"notification-poly.py","readme":"https://github.com/UniversalDevicesInc-PG3/udi-poly-notification/blob/production/README.md","status":"active","name":"Notification","language":"python3","isyAccess":false,"developer":"jimsearle@gmail.com","ip_added":"70.181.79.77","nsInfoPoll":0,"logLevel":"WARNING","ts_added":1641689523,"shortPoll":60,"author":"Jimbo.Automates","discover":false,"fileUpload":false,"customParams":"{\n  \"acknowledge\": \"\",\n  \"portal_api_key\": \"\",\n  \"rest_port\": \"8199\"\n}\n","desc":"Notification Node Server for Pushover and Telegram\n","polisy":true,"license":"TBD","changelog":"https://github.com/UniversalDevicesInc-PG3/udi-poly-notification/blob/production/CHANGELOG.md","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.32","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/Notification-production-3.6.32.zip"},{"price":15,"edition":"Standard","id":"94dd0ef7-6d1d-4c34-81bd-dcb87632c130","isPerpetual":true,"version":"3.6.32","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/Notification-production-3.6.32.zip"},{"price":0,"edition":"Free","id":"f83228a3-f35a-45f6-b2e0-f8292944a955","isPerpetual":true,"version":"3.6.32","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/Notification-Production-Free-3.6.32.zip"}],"eisy":true,"uuid":"132e8dd7-e452-41dd-80f1-6a7da660f00b","ts_updated":1782692862},{"docs":"https://github.com/UniversalDevicesInc-PG3/udi-wirelesstag-poly/blob/master/README.md","longPoll":600,"executable":"wirelesstags-poly.py","status":"active","name":"WirelessTag","language":"python3","isyAccess":false,"developer":"jimsearle@gmail.com","ip_added":"70.181.79.77","nsInfoPoll":0,"logLevel":"WARNING","ts_added":1641350502,"shortPoll":60,"author":"Jimbo.Automates","discover":false,"fileUpload":false,"nsdata":"{\n  \"client_id\": \"3b08b242-f0f8-41c0-ba29-6b0478cd0b77\",\n  \"client_secret\": \"0b947853-1676-4a63-a384-72769c88f3b1\"\n}\n","desc":"CAO Gadgets Wireless Sensor Tags www.wirelesstag.net","polisy":true,"license":"TBD","changelog":"* 3.1.9: 12/01/2024\n  * Add ability to rename nodes, off by default.  See [Configuration](#configuration)\n* 3.1.8: 01/07/2023\n  * Add try/except around get/set driver calls to try not failing for https://github.com/UniversalDevicesInc/pg3/issues/175\n* 3.1.7: 09/24/2022\n  * Fix: Crash due to change in Python version due to isAlive change to is_alive.\n* 3.1.6: 06/20/2022\n  * Fix: [Crash in latest version when discovering new tag manager](https://github.com/UniversalDevicesInc-PG3/udi-wirelesstag-poly/issues/58)\n* 3.1.5: 06/05/2022\n  * Fix: [ERROR Controller:handler_nsdata: NSDATA is a string](https://github.com/UniversalDevicesInc-PG3/udi-wirelesstag-poly/issues/56)\n  * Fix: [Tag Manager offline not reflected in node](https://github.com/UniversalDevicesInc-PG3/udi-wirelesstag-poly/issues/57)\n* 3.1.4: 03/08/2022\n  * Stop calls rest stop and poly stop\n* 3.1.3: 02/26/2022\n  * Fix: [signaldBm doesn't show current value](https://github.com/UniversalDevicesInc-PG3/udi-wirelesstag-poly/issues/45)\n    * Now have signaldBm and Transmit Power on the tags.\n* 3.1.2: 02/23/2022\n  * Fix accidental typo in EventState\n* 3.1.1: 02/21/2022\n  * Fixed a profile issue for [Quad Water Leak Sensor](https://store.wirelesstag.net/products/quad-water-leak-sensor)\n  * Fixed: [Fix query and add query all](https://github.com/UniversalDevicesInc-PG3/udi-wirelesstag-poly/issues/49)\n* 3.1.0: 02/20/2022\n  * Add support for [Quad Water Leak Sensor](https://store.wirelesstag.net/products/quad-water-leak-sensor)\n    * Issue: [Support quad leak sensor](https://github.com/UniversalDevicesInc-PG3/udi-wirelesstag-poly/issues/42)\n* 3.0.15: 02/19/2022\n  * Add support for [Support new voc params](https://github.com/UniversalDevicesInc-PG3/udi-wirelesstag-poly/issues/33)\n    * But need more documentation or a log from a user who has a tag that supports it\n  * Added missing BATLVL for the External Power Sensor Tags 102 and 107\n* 3.0.14: 02/19/2022\n  * Fixed: [AttributeError: 'wtServer' object has no attribute 'SelectTagManager'](https://github.com/UniversalDevicesInc-PG3/udi-wirelesstag-poly/issues/27)\n  * Fixed: [PING_ALL_TAGS broken](https://github.com/UniversalDevicesInc-PG3/udi-wirelesstag-poly/issues/30)\n  * Fixed: [Remove bad characters from node name](https://github.com/UniversalDevicesInc-PG3/udi-wirelesstag-poly/issues/44)\n  * Fixed: [Add command to delete all tags](https://github.com/UniversalDevicesInc-PG3/udi-wirelesstag-poly/issues/46)\n  * Possible Fix: [Seconds since update resets when Out Of Range](https://github.com/UniversalDevicesInc-PG3/udi-wirelesstag-poly/issues/47)\n    * I was unable to test this, but attempted to add a fix for it.\n  * Fixed: [ag queries or turn light on/off](https://github.com/UniversalDevicesInc-PG3/udi-wirelesstag-poly/issues/43)\n    * Fixed first issue, created new issues for the other two\n* 3.0.13: 01/28/2022\n  * When use_tags is turned on, run the discover in a thread to not block node adds.\n* 3.0.12: 01/27/2022\n  * Use thread locking for tracking addNode to throttle requests to ISY\n* 3.0.11: 01/26/2022\n  * Fix node add queue to not lock up\n* 3.0.10: 01/25/2022\n  * Fix isssue with setting values on the wrong tag caused during PG3 conversion\n* 3.0.9: 01/25/2022\n  * Update udi_interface version\n* 3.0.8: 01/24/2022\n  * Fix adding tags during discover\n* 3.0.7: 01/24/2022\n  * A lot more error trapping when can't start server\n* 3.0.6: 01/18/2022\n  * More trapping of bad values from PG3\n* 3.0.5: 01/18/2022\n  * Update to latest udi_interface 3.0.32\n* 3.0.4: 01/13/2022\n  * More checking that data is received from PG3, should work better now\n* 3.0.3: 01/11/2022\n  * Change how client id and secret are received, can only test on production PG...\n* 3.0.2  01/05/2022\n  * Add discover to PG settings so it shows up in PG UI\n  * Fix Connection status\n* 3.0.1  01/05/2022\n  * Update to udi_interface 3.0.31\n  * Fix to use nsdata from PG3 database\n* 3.0.0  01/05/2022\n  * First PG3 release\n* 2.0.25 10/13/2020\n  * Try to avoid race condition on initial add and discover for nodes.  Can't confirm because I can't make it happen.\n* 2.0.24 10/06/2020\n  * Fix Battery Voltage editor to show volts, and now it can be set to a variable. After updating nodeserver, restart then close admin console if you have it open first.  The variable should be set to Precision=3 and if you have any programs currently referencing Battery Voltage in the if/then/else you will need to Update that line and save it.  \n* 2.0.23 09/30/2020\n  * Increase allowable lux to 100000\n* 2.0.22 09/30/2020\n  * [Fix setting Battery Voltage from Tag Manager update command](https://github.com/jimboca/udi-wirelesstag-poly/issues/37)\n* 2.0.21 08/10/2020\n  * Fix for not setting Out Of Range on startup.\n* 2.0.20 08/09/2020\n  * Fixed crashed caused by \"Set Light\" command.\n* 2.0.17: 06/11/2020\n  * Use hum from updates for [Add probe (tagType=42) chip temperature](https://github.com/jimboca/udi-wirelesstag-poly/issues/35)\n* 2.0.16: 06/09/2020\n  * Blindly trying to get this working [Add probe (tagType=42) chip temperature](https://github.com/jimboca/udi-wirelesstag-poly/issues/35)\n* 2.0.15: 06/08/2020\n  * [Add probe (tagType=42) chip temperature](https://github.com/jimboca/udi-wirelesstag-poly/issues/35)\n* 2.0.14: 03/05/2020\n  * Fixed motion detection for tag type 26 ALS, which looks like a PIR\n\\   * Motion timeout still not working\n* 2.0.13: 12/23/2019\n  * Removed eventState from tags 102 and 107 since they don't support motion events\n  * Fixed moisture state to report for tags 107\n  * Added lightstate to 26 and 107\n* 2.0.12: 12/21/2019\n  * Add new tag 107, untested since I don't have one yet\n* 2.0.11: 10/28/2019\n  * Skip unknown params for now\n* 2.0.10: 10/18/2019\n  * Fixed BATLVL not reporting\n* 2.0.9: 09/14/2019\n  * Adding missing name for External Power Sensor\n* 2.0.8: 09/12/2019\n  * First attempt at adding new External Battery Tag which I can't test.\n* 2.0.7: 03/03/2019\n  * Fixed Tag 26 C nodedef\n* 2.0.6  03/02/2019\n  * [Tags in Celcius still show temp in Fahrenheit](https://github.com/jimboca/udi-wirelesstag-poly/issues/32)\n  * [See Switching C or F Mode](#switching-c-or-f-mode)\n* 2.0.5 07/22/2018\n  * Fix crash bug in shortPoll that only happens if tag manager is not properly selected the first try.\n* 2.0.4  07/11/2018\n  * Add better icons from @xKing. Profile should automatically reload, but if you don't see the new icons then select the WirelessTagsConroller and \"Install Profile\" then restart admin console.\n* 2.0.3  07/10/2018\n  * Changed from http to https, thanks @xKing for the change\n  * Increased post timeout from 15 to 60 for when the tag server is slow\n* 2.0.2  05/03/2018\n  * Fix when query is run to report all nodes\n  * New version of polyinterface will fix issue with Notice's not going away\n  * Added Heartbeat https://github.com/jimboca/udi-wirelesstag-poly/issues/6\n* 2.0.1  04/17/2018\n  * Fix initialization of Short Poll, Long Poll, Debug Mode, on controller, and Monitor Tags of TagManager nodes.\n* 2.0.0  03/22/2018\n  * Why jump to 2.0.0?  Because it's Polyglot V2, should have started with that :)\n  * And the big addition of what should now be proper support for multiple Tag Managers https://github.com/jimboca/udi-wirelesstag-poly/issues/26\n  * Profile updates for Honeywell thermostats https://github.com/jimboca/udi-wirelesstag-poly/issues/14\n  * Add Set URL Config buttons https://github.com/jimboca/udi-wirelesstag-poly/issues/25\n  * Program Tag URL individually https://github.com/jimboca/udi-wirelesstag-poly/issues/23 and fix for PIR sensor type 72\n  * Typo in Wireless Tag type 62 in Wireless Tag node server https://github.com/jimboca/udi-wirelesstag-poly/issues/21\n  * Add carried_away and in_free_fall params https://github.com/jimboca/udi-wirelesstag-poly/issues/19\n  * Properly initialize params https://github.com/jimboca/udi-wirelesstag-poly/issues/22\n  * All driver values now persist https://github.com/jimboca/udi-wirelesstag-poly/issues/13\n* 0.0.25 03/15/2018\n  * Add lock sending Tag Manager specific commands.  Seems to resolve all issues with multiple tag managers.\n  * Fix typo https://github.com/jimboca/udi-wirelesstag-poly/issues/21\n  * Add carried_away and in_free_fall https://github.com/jimboca/udi-wirelesstag-poly/issues/19\n* 0.0.24 03/14/2018\n  * Tag 42 * Outdoor Probe/Thermocouple added.  Thanks to https://github.com/mayermd\n* 0.0.23 03/12/2018\n  * Remove moisture from 26 and 52\n  * Fix lux for all\n  * Add tag id to device display for debugging\n* 0.0.22 03/08/2018\n  * Bad bug in 0.0.21 causing infinite loop\n* 0.0.21 03/08/2018\n  * Change eventState along with Motion, may get rid of Motion driver if this works properly.\n* 0.0.20 03/08/2018\n  * Fix setting for Humidity, Out Of Range and Light for all Tags\n  * Change temperature to precision=2\n* 0.0.19 03/07/2018\n  * Last Update Time and Seconds since update are properly tracked across nodeserver restarts using info from Tag Manager\n  * Tag Status is properly set based on 'alive' property from Tag Manager\n  * Aded signaldBm to all tags https://github.com/jimboca/udi-wirelesstag-poly/issues/16\n  * Simplified all get/set methods so changes can be tracked better in logs for debugging.\n* 0.0.18 03/04/2018\n  * Another fix for get_network_ip that should now work on MacOS\n  * https://github.com/jimboca/udi-wirelesstag-poly/issues/14\n* 0.0.17 03/04/2018\n  * Fixed bug where tag_id's don't get properly set. ALL USERS: Please select the WirelessTagsController and run a discover after updating and restarting the node server.\n  * Added more info to Tag Type 62\n  * Changed how to figure out the local IP address, thanks @xKing. See IP Address section above\n  * Changed Humidity to prec=1\n  * Profile Version: 0.0.17\n* 0.0.16 03/03/2018\n  * Attempt to fix issue with restart for multiple Tag Managers\n  * https://github.com/jimboca/udi-wirelesstag-poly/issues/12\n  * Profile Version: 0.0.16\n* 0.0.15 03/03/2018\n  * https://github.com/jimboca/udi-wirelesstag-poly/issues/11\n  * https://github.com/jimboca/udi-wirelesstag-poly/issues/12\n  * Profile Update: 0.0.15\n* 0.0.14 03/03/2018\n  * https://github.com/jimboca/udi-wirelesstag-poly/issues/10\n* 0.0.13 03/03/2018\n  * Fix race condition when starting up causing error in set_seconds\n  * Change URL's to not pass tag name since they are not properly encoded, adding passing of tag manager mac to identify tags on multiple tag managers.\n    * If you previously added tags that had spaces in the names, then delete them from inside the Polyglot -> WirelessTag -> Nodes page and run discover again.\n  * It should work much better with multiple tag managers, but there may still be some issues. Will review the code more and test further.\n* 0.0.12 03/02/2018\n  * https://github.com/jimboca/udi-wirelesstag-poly/issues/1\n  * Added a lot to documentation\n  * Profile Update: 0.0.12\n* 0.0.11 03/02/2018\n  * Add Seconds Since Update\n  * Fixed setting logging/debug moe\n  * Profile Update: 0.0.11\n* 0.0.10 03/02/2018\n  * Really add \"Last Update\" to all tags\n  * Profile Update: 0.0.10\n* 0.0.9 03/02/2018\n    * Add \"Last Update\" to all tags\n    * Profile Update: 0.0.9\n* 0.0.8 03/01/2018\n  * Add \"Last Update\" seconds since epoch time of last update sent from the tag\n  * Allow hum to be a float\n  * Profile Update: 0.0.8\n* 0.0.7 02/27/2018\n  * Catch missing tag id in node_data\n* 0.0.6 02/27/2018\n  * Fixed initial Wet State to be Dry on startup if it's NA\n  * Added requests to requirements\n* 0.0.5 02/27/2018\n  * Fixed BATLVL Editor so tag conditions show up in programs\n  * Added 'Set Light', but it doesn't actually work yet\n* 0.0.4 02/27/2018\n  * First release\n* 0.0.3 02/22/2018\n  * Still not released, see TODO list\n","authorize":false,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"month","price":0,"recurring":1,"edition":"Free","id":"403633ce-910d-4e5a-9ec7-a340afedee84","isTrial":true,"version":"3.1.9","branch":"","url":"http://pg3store.isy.io/v2/nodeservers/production/WirelessTag.zip"},{"price":30,"edition":"Standard","id":"244e3652-37ad-428c-b355-e2375c7694a7","isPerpetual":true,"version":"3.1.9","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/WirelessTag.zip"}],"eisy":true,"uuid":"7ad25b20-1c13-45ca-9a94-85bd5063815d","ts_updated":1735068303},{"docs":"https://github.com/Panda88CO/udi-yolink/blob/main/README_LOCAL.md","longPoll":3600,"executable":"udiYoLinkLocal.py","readme":"# udi-yolink\n    Support for YoLink devices.\n    Suggested installation is on PG3x from version 1.1.x going forward. PG3x is updated to Python 3.11. It still works under PG3, but we cannot guarantee how long that will remain possible.\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    'Switch', 'THSensor', 'MultiOutlet', 'DoorSensor','Manipulator', \n    'MotionSensor', 'Outlet', 'GarageDoor', 'LeakSensor', 'Hub', \n    'SpeakerHub', 'VibrationSensor', 'Finger', 'Lock' , 'LockV2', 'Dimmer', 'InfraredRemoter',\n    'PowerFailureAlarm', 'SmartRemoter', 'COSmokeSensor', 'Siren', 'WaterMeterController',\n    'WaterDepthSensor', 'WaterMeterMultiController', 'SprinklerV2', 'Thermostat',\n    'SoilThcSensor'\n\n    \n    Code uses MQTT communications.\n    ###SHORT POLL sends a heartbeat to the ISY - default is 60 seconds - It also checks whether data has been updated since the last update. This can happen when a command has a very slow reply from the cloud. The server uses separate threads for sending commands and receiving results.\n    \n    ###LONG POLL checks the online state of the devices (if a device goes offline, it will not be detected until this is called - for battery-operated devices it may take even longer, as data appears to be cached in the cloud - battery devices are not queried as part of the LONG POLL).\n    A device will be redetected once it is back online.\n    Default is 3600 (1 hour).  \n\n    Note: if set too often, it will affect battery consumption (especially the Manipulator). If set to more than 2 hours, the token will expire (but a new one should be obtained).\n\n\n## Code\n    Code uses V2 of the YoLink API - PAC/UAC authentication - currently this API only supports a single home (even if the app supports more).\n\n    Coded in Python 3 - MIT license.\n\n## Installation\nMODE\n    Mode sets the operation of the node server.\n    local - uses local-only operation - This allows all local devices to be controlled (even without internet access once installed). Note: some devices do not work in local-only mode (e.g., SpeakerHub).\n    hybrid - operates in both local and cloud modes - This is the default if you have the YoLink local hub (YS1606).\n    cloud - operates like the YoLink node (separate node) - only uses cloud access/control for devices.\n\nUAID/SecretKey\n    Credentials need to be added to configuration in the YoLink node server under PG3. In the YoLink app, go to Settings->Account->Advanced Settings->User Access Credentials and copy UAID and SecretKey (alternative path in the app is Profile->Advanced Settings->User Access Credentials).\n    It is possible to get credentials for each home that is defined, but the node 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) and then restart. Sometimes it seems to require 2 restarts to fully get all devices synchronized (I have looked but cannot find a pattern).\n    Sometimes a reboot of the ISY is required to make the node server show up correctly.\n\nLOCAL_CLIENT_ID, LOCAL_CLIENT_SECRET (needed for local or hybrid mode)\n    These can only be obtained from the YoLink local hub.\n    In the YoLink app - select the local hub - select Local Network, then select Integrations.\n    Copy `client_id` to LOCAL_CLIENT_ID and copy `client_secret` to LOCAL_CLIENT_SECRET.\n\nSUBNET_ID (needed for local or hybrid mode)\n    This can only be obtained from the YoLink local hub.\n    In the YoLink app - select the local hub - select Local Network, then select General.\n    Copy Net ID to SUBNET_ID.\n\nLOCAL_IP (needed for local or hybrid mode)\n    IP address of the local hub.\n    This can only be obtained from the YoLink local hub - select `|` (upper right corner).\n    Copy the IP address to LOCAL_IP.\n\nTEMP_UNIT\n    Select F or C\n\nWATER_UNIT\n    Select Liter or Gallon     \nNBR_TTS\n    Number of SpeakerHub Text-to-Speech messages to support (see below).\n\n## Notes \n    One node server can only handle 1 home - you can get separate credentials for each home in the app by selecting the home and getting 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 - countdown is running on the node server, not the device.\n\n    <SpeakerHub> supports up to 10 Text-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 containing the messages during startup.\n\n    In configuration, TEMP_UNIT can be used to set the temperature unit to C, F, or K.\n\n    YoLink schedules are now supported.\n    \n    Remaining delay time shown in ISY is estimated - countdown is running on the node server, not the device.\n    Schedules are not supported (you can use ISY for the same purpose, and the YoLink app can be used to set schedules).\n    \n    The latest version of the node reports the latest report time for each device - the AC home automation will get a time.now() option so seconds between the two can be used in conditions.\n\n    YoLink and YoLink local use the same device code.\n    \n    \n","status":"active","name":"YolinkLocal","language":"python3","isyAccess":false,"developer":"christian.olgaard@gmail.com","ip_added":"73.162.93.46","nsInfoPoll":0,"logLevel":"INFO","ts_added":1760542540,"shortPoll":599,"author":"Panda88CO","discover":false,"fileUpload":false,"customParams":"{\"UAID\":\"\",\"SECRET_KEY\":\"\",\"TEMP_UNIT\":\"C\", \"WATER_UNIT\":\"Liter\",\"LOCAL_CLIENT_ID\":\"\",\"LOCAL_CLIENT_SECRET\":\"\",\"LOCAL_IP\":\"\", \"MODE\":\"hybrid\", \"SUBNET_ID\":\"\",\"NBR_TTS\":\"1\"}","desc":"Local Yolink Access using Yolonk  local-hub (YS1606).  It is really a super set of the normal Yolink node server as it can operate in local only, hybrid and cloud only mode, but it requires more configuration.   In hybrid mode, a device will be local if supported by the local-hub - all others will remain on cloud (speaker hub is one that does not seem to be able to locally yet ","polisy":true,"license":"https://github.com/Panda88CO/udi-yolink/blob/main/LICENSE","changelog":"1.8.61 - fix to prevent ghost key presses of YS5708 (has 2 remote buttons)\n1.8.60 - fix to prevent ghost key presses of SmartRemoter\n1.8.58 - minor bugfixes - mostly thermostat\n1.8.56 - minor bug fixes - water meter unit and a few missing labels  - The UDmobile issue is assumed to be fixed when an upcoming udX update - it is a known issue\n1.8.50 - minor bug fixes - smartRemoter slightly updated \n1.8.45 - New major release,  Added quite a few devices (See README).  Data handling is rewritten to be easier to maintain.  Schedules have move to a separate child node.  One or two nodes have updated behavior (Leak Detector for one) as additional capabilities have been added, so you may need to update programs using those.  There is a known bug with the dimmer creating ERRORs in the LOG.  Have been waiting on Yolink to fix this for two weeks now - I'll release a patch once in place (if needed)  \n1.6.15 - Fix to address issue when API does not report model number\n1.6.14 - reduces number of calls to PG3 - ShortPoll now only sends a heart beat.  removes the list of nodes in configuration (not used)\n1.6.11 - fixed missing update in manipulator\n1.6.10 - work around bug in AC - Fixes issues with selecting values in programs \n1.6.8/9- minor fix in node defs - fixes udimobile reported error \n1.6.2 - handle different watermeterController reporting\n1.6.1 - Improved retry for bust/offline devices\n1.5.16 - minor fix in speakerhub reporting \n1.5.14 - fixed typo in setup file for local hub.  This release uses same code base (for devices) as cloud based yolink.  This means new devices will be added to both at the same time \n1.5.13 - Added support for HUB (battery powered hubs can now be used to test is powered by AC or internal battery) - Updated IRremoter to have subnodes for each code - supports learning codes now.  Added a GV30 variable to all nodes - it is the same as the current ST (mostly if node is online) - moved ST to show the most relevant parameter of the node - this is to support udiMobile -I hope that it is not too big a problem as some code may need to be updated \n","authorize":false,"install":"install.sh","purchaseOptions":[{"recurring":60,"version":"1.8.61","recurringPeriod":"day","edition":"Free","id":"b8c653c3-02b9-4fbc-a890-03dee8db6500","isTrial":true,"branch":"REL20261005","url":"https://github.com/Panda88CO/udi-yolink","price":0},{"branch":"REL20261005","price":25,"id":"0ff3c3da-6043-496a-ac9c-36c73b08f585","edition":"Standard","version":"1.8.61","isPerpetual":true,"url":"https://github.com/Panda88CO/udi-yolink"}],"eisy":true,"uuid":"0e152549-cca9-4835-9981-9028cbe258bb","ts_updated":1791242287},{"docs":"https://github.com/PG3Plugins/udi-onkyo-poly/master/blob/README.md","longPoll":600,"executable":"Onkyo-poly.py","status":"active","name":"Onkyo","language":"python3","isyAccess":false,"developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":0,"logLevel":"INFO","ts_added":1650928132,"shortPoll":60,"author":"Steven Goulet","discover":false,"fileUpload":false,"customParams":"{\n    \"ipaddress\": \"\",\n    \"port\": 60128\n}","desc":"Basic control of Onkyo AV receivers","polisy":true,"license":"https://github.com/PG3Plugins/udi-onkyo-poly/master/blob/LICENSE","authorize":false,"install":"install.sh","purchaseOptions":[{"branch":"master","isPerpetual":true,"edition":"Free","price":0,"url":"https://github.com/PG3Plugins/udi-onkyo-poly","id":"495cd7f2-0763-45c1-8f6e-21db8cf7acca","version":"1.0.2"}],"eisy":true,"uuid":"29f19df8-bfdf-4511-b0d6-efdafbcefdea","ts_updated":1788213356},{"docs":"https://github.com/BME-nodeservers/docs/blob/master/udi-volumio-poly.md","longPoll":600,"executable":"volumio.py","discover":false,"status":"active","customParams":"{\n                \"Volumio 1\" : \"\"\n        }","name":"Volumio","language":"python3","desc":"Add control of Volumio media players","developer":"bpaauwe@bobsplace.com","authorize":false,"install":"install.sh","ip_added":"67.161.168.17","purchaseOptions":[{"price":10,"edition":"Standard","id":"2465974a-2698-4b86-b91c-9e58fb25fa53","isPerpetual":true,"version":"2.0.5","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/udi-volumio-poly.zip"}],"nsInfoPoll":0,"logLevel":"ERROR","uuid":"d38a4dee-cc3a-4deb-963c-22d5aa6f4927","ts_added":1628530648,"shortPoll":300,"ts_updated":1667238084,"author":"Bob paauwe"},{"docs":"https://github.com/BME-nodeservers/docs/blob/master/udi-weather-server-poly.md","longPoll":60,"executable":"weatherstation.py","discover":false,"status":"active","name":"WeatherPoly","language":"python3","desc":"Receive weather data from locally configured station software like meteobridge, Cumulus, WeeWx, acuparse, etc.","polisy":true,"license":"https://github.com/BME-nodeservers/docs/blob/master/LICENSE","developer":"bpaauwe@bobsplace.com","authorize":false,"install":"install.sh","ip_added":"67.161.168.17","purchaseOptions":[{"recurringPeriod":"day","price":0,"recurring":30,"edition":"Standard","id":"03f12891-1736-4154-b0f5-fc3e2e3f7b0c","isTrial":true,"version":"2.0.2","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/udi-weather-server-poly.zip"},{"price":10,"edition":"Standard","id":"89173275-a089-4c19-902a-d5ed286df032","isPerpetual":true,"version":"2.0.2","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/udi-weather-server-poly.zip"}],"eisy":true,"nsInfoPoll":0,"logLevel":"ERROR","uuid":"a0cc6a68-9a59-4c1f-8637-8323faa453bb","ts_added":1626738654,"shortPoll":5,"ts_updated":1686762535,"author":"Bob Paauwe"},{"docs":"https://goose66.github.io/nsdocs/evlvista-pg3.html","longPoll":600,"executable":"main.py","readme":"A Plugin for PG3/PG3x that interfaces with a Honeywell/Ademco Vista series alarm panel through EnvisaLink™ EVL-3/4 and DUO™ adapters from EyezOn.\n\nClick \"More Info\" below for installation instructions and release notes.","status":"active","name":"EnvisaLink-HW","language":"python3","isyAccess":false,"developer":"kingwrandy@gmail.com","ip_added":"24.178.79.63","nsInfoPoll":0,"logLevel":"INFO","ts_added":1664417224,"shortPoll":30,"author":"W. Randy King (Goose66)","discover":false,"customParams":"{\n        \"hostname\": \"<hostname/IP address>\",\n        \"password\": \"<password>\",\n        \"usercode\": \"<alarm code>\"\n}","desc":"Allows IoX to access Honeywell/Ademco Vista series alarm panel through EnvisaLink™ EVL-3/4 and DUO™ adapters from EyezOn. ","polisy":true,"license":"https://goose66.github.io/nsdocs/license.html","changelog":"3.1.4 - Improved robustness (2024-03-02)\n- refactored code to utilize latest nslib library\n- added PG3-managed Plugin Status\n- implemented periodic heartbeat (AWAKE command) to IoX\n- if monitoring thread in API fails or stops, it will be restarted in next shortpoll\n- if malformed message data is received from EnvisaLink, the command message is ignored\n- don''t log zone state commands (81) as unhandled when smartzonetracking is enabled\n\nPrevious releases:\n3.0.3 - Initial Release (2022-09-28)\n- Converted envisalink-polyglotv2 to PG3 API\n- Refactored nodeserver startup and node creation to account for misordering of node creation\n- removed \"Alarming\" zone state and added \"Last Alarm Zone\" to Partition node instead\n- changed partition states and arming commands to be Vista specific\n- fixed alternating between NOT-READY and ALARM-IN-MEMORY states over consecutive keypad updates\n- added version number passed in poly.start() and removed server.json\n- fixed processing of stop() events to properly shutdown nodeserver","authorize":false,"install":"install.sh","purchaseOptions":[{"price":10.95,"edition":"Standard","id":"6fe966d1-ba94-4fc1-b190-0405ee46974c","isPerpetual":true,"version":"3.1.4","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/evlvista-pg3-3.1.4.zip"},{"recurringPeriod":"month","price":0,"recurring":1,"edition":"Free","id":"bbcead22-e4b1-4cab-be5c-79eca7aef0f6","isTrial":true,"version":"3.1.4","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/evlvista-pg3-3.1.4.zip"}],"eisy":true,"uuid":"ddb2a455-52c7-4aab-b32f-e5cf3c32f840","ts_updated":1709431818},{"docs":"https://developer.isy.io","longPoll":600,"executable":"oadr3.py","status":"active","name":"OpenADR30","language":"python3","isyAccess":false,"developer":"tech@universal-devices.com","ip_added":"76.221.133.84","nsInfoPoll":0,"logLevel":"INFO","ts_added":1737147896,"shortPoll":60,"author":"UD Tech","discover":false,"fileUpload":false,"customParams":"{\n\"VTN Base URL\":\"\",\n\"Client ID\":\"\",\n\"Client Secret\":\"\",\n\"Duration Scale\":\"\"\n}","desc":"OpenADR 3.0 VEN Implementation.","polisy":false,"license":"https://developer.isy.io","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"914e856d-e1d3-4044-8ad0-bcc88423a726","isPerpetual":true,"version":"1.0.0","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/oadr3-1.0.0.tar.gz"},{"price":0,"edition":"Free","id":"c00d1a97-d9b9-479d-83d7-7a805c92dbdd","isPerpetual":true,"version":"1.0.1","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/oadr3-1.0.1.tar.gz"}],"eisy":true,"uuid":"2f9142e4-54b0-4266-bde9-97bc5a556ed0","ts_updated":1737151198},{"docs":"https://github.com/lovintexas/Mammotion-PG3x","longPoll":300,"executable":"mammotion.py","readme":"PG3x plugin for Mammotion robotic lawn equipment using the official Mammotion Developer API. Provides mower status, battery and charging information, network status and signal strength, plus Pause, Resume, Return to Charger, Cancel Return, and Query commands.","status":"active","name":"Mammotion","language":"python3","isyAccess":false,"developer":"dr-apo@dr-apo.com","ip_added":"::ffff:72.177.80.34","nsInfoPoll":0,"logLevel":"INFO","ts_added":1789593745.458,"shortPoll":60,"author":"Louis Apostolakis","discover":false,"fileUpload":false,"aiTools":"","customParams":"{\n  \"client_id\": \"\",\n  \"client_secret\": \"\"\n}","aiPrompt":"","desc":"PG3x plugin for Mammotion robotic lawn equipment using the official Mammotion Developer API.","license":"https://github.com/lovintexas/Mammotion-PG3x/blob/main/LICENSE","changelog":"1.0.2\n--Added SPINO support. SPINO devices now use a dedicated node exposing Online status and Query, avoiding mower-specific telemetry and commands that are not applicable or currently available through the Mammotion Developer API.\n\n1.0.1\n--Initial release. Adds Mammotion mower discovery, status, battery and network telemetry, plus Pause, Resume, Return to Charger, Cancel Return, and Query commands.","install":"install.sh","purchaseOptions":[{"branch":"main","id":"863b04e7-8849-4ed5-a165-a5d7b1d6b026","version":"1.0.2","price":0,"edition":"Free","recurringPeriod":"day","recurring":30,"url":"https://github.com/lovintexas/Mammotion-PG3x.git","isTrial":true}],"authorize":false,"uuid":"eb147dea-09b6-4607-ade5-d70b33dbed59","requireEisyui":false,"ts_updated":1789597789.114},{"docs":"https://goose66.github.io/nsdocs/bond-pg3.html","longPoll":300,"executable":"main.py","readme":"A Plugin for PG3/PG3x that interfaces with Olibra Bond Bridges and Smart by Bond (SBB) devices locally to allow the ISY to control ceiling fans, lights, blinds, fireplaces, and more.\n\nClick \"More Info\" below for installation instructions and release notes.","status":"active","name":"Bond","language":"python3","isyAccess":false,"developer":"kingwrandy@gmail.com","ip_added":"107.217.194.133","nsInfoPoll":0,"logLevel":"INFO","ts_added":1645935694,"shortPoll":30,"author":"W. Randy King (Goose66)","discover":true,"fileUpload":false,"desc":"Access ceiling fans, embedded lights, shades, and fireplaces through the Olibra Bond™ Bridges and Smart by Bond™ (SBB) devices via local API.","polisy":true,"license":"https://goose66.github.io/nsdocs/license.html","changelog":"3.3.15 - Enhanced support for shades (2025-05-23)\n- added additional commands for shades\n- add new node for shades w/ position support \n- added restart of listener thread on poll if not running\n\n3.2.14 - New features and fixes (2024-07-13)\n- replaced zeroconf library causing plugin to fail in Python 3.11 on eISY\n- replaced mDNS discovery with bonjour mechanism built into udi_interface\n- Added tracking of plugin status for primary bridge node\n- Updated support for Bond Bridge Pro\n\n3.1.13 - Bug Fixes (2023-02-01)\n- Changed several DEBUG log messages to INFO level\n- Fixed bug in hooking BPUP_EventListener callback for keypad events \n- Added subset to all editors in nodedefs\n- Append key number to name on node creation\n- Fix error when closing BPUP socket\n- Prevent polling from trying to update state for keypads\n\n3.1.12 - Patch (2023-01-27)\n- Quick fix for bad removal of files\n\n3.1.11 - New features and fixes (2023-01-27)\n- Added support for Sidekick Scene Keypads on Bond Bridge Pro\n- Change way brt and dim commands are handled for fan speed\n- Change way brt and dim commands are handled for light\n- Update bridge hostname and token if already exists\n- Ignore devices with no actions (log warning)\n- Reorgnized file structure to be more asyncio friendly\n\n3.0.10 - Bug fixes (2022-09-18)\n- Fixed ignoring new \"__\" hash value in device list from API\n- Fixed missing NLS entry for \"Force Update\" button label on Bridge nodes\n- Increased wait time for newly discovered Bridge nodes to initialize to up to 1100ms before device discovery\n- Refactored BPUP message parsing to allow for \"action\" messages\n\n3.0.9 - Bug fix (2022-02-27)\n- Fixed editors in profile\n\n3.0.8 - Initial Release (2022-02-26)\n- Converted Bond-polyglotv2 to PG3 API\n- Refactored code to fit PG3 design model (nslib)","authorize":false,"install":"install.sh","purchaseOptions":[{"price":10.95,"edition":"Standard","id":"ec36a137-8e9c-4e8f-adec-f0ce9e57bf0c","isPerpetual":true,"version":"3.3.15","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/bond-pg3-3.3.15.zip"}],"eisy":true,"uuid":"fb72bd57-7c7b-45ec-ad7b-fe19d2844729","ts_updated":1750619512},{"docs":"https://github.com/Goose66/NSDocs/blob/main/autelis-pg3.md","longPoll":300,"executable":"main.py","readme":"A Node Server for Polyglot v3 (PG3) that interfaces with an Autelis Pool Control device to allow IoX to access Jandy/Zodiac Aqualink pool controllers.\n\nClick \"More Info\" below for installation instructions and release notes.","status":"active","name":"Autelis","language":"python3","developer":"kingwrandy@gmail.com","ip_added":"75.131.193.229","nsInfoPoll":0,"logLevel":"INFO","ts_added":1692222532,"shortPoll":60,"author":"W. Randy King (Goose66)","discover":false,"customParams":"{\"hostname\": \"<hostname/IP address>\", \"username\": \"<email address>\", \"password\": \"<password>\"}","desc":"Interfaces with an Autelis Pool Control device to allow IoX to access Jandy/Zodiac Aqualink pool controllers.","polisy":true,"license":"https://github.com/Goose66/NSDocs/blob/main/LICENSE.md","changelog":"Current release:\n3.1.2 - Added features (2023-08-26)\n- added support for color lights\n- added correct reporting of ON state for dimming AUX\n\nPrevious Releases:\n3.0.1 - Initial Release (2023-08-20)","authorize":false,"install":"install.sh","purchaseOptions":[{"price":10.95,"edition":"Standard","id":"a89b769f-97f6-4d09-baa3-899cb0d9a4e4","isPerpetual":true,"version":"3.1.2","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/autelis-pg3-3.1.2.zip"}],"eisy":true,"uuid":"f3a7e6ab-46bc-44ef-b794-4875132bc8f6","ts_updated":1693257618},{"docs":"https://github.com/UniversalDevicesInc-PG3/udi-spa-nodeserver/blob/master/README.md","executable":"spa_poly.py","status":"active","name":"BalboaSPA","language":"python3","desc":"Control spa equipped with a Balboa BP system and a bwa™ Wi-Fi Module (50350)","developer":"jf.tremblay@gmail.com","install":"install.sh","ip_added":"74.14.175.171","purchaseOptions":[{"price":0,"edition":"Free","isPerpetual":true,"id":"4c2bff19-97fb-4f05-9be5-bd423148490b","branch":"master","version":"3.0.0","url":"https://github.com/UniversalDevicesInc-PG3/udi-spa-nodeserver.git"}],"uuid":"b057564b-e6c6-46f8-8d1a-d83905b25843","logLevel":"DEBUG","ts_added":1635516541,"ts_updated":1635516541,"author":"AutomationGeek"},{"docs":"https://github.com/sjpbailey/udi-nodejs-pool-Nixie-Single-V3/blob/main/README.md","longPoll":600,"executable":"nodejs-pool.py","status":"active","name":"NixieSingle","language":"python3","isyAccess":false,"developer":"sjpbailey@comcast.net","ip_added":"98.41.236.33","nsInfoPoll":0,"logLevel":"INFO","ts_added":1710278900,"shortPoll":60,"author":"Bailey","discover":false,"customParams":"{\n\t\"api_url\": \"http://localhost:4200\"\n}","desc":"Possible replacement for Alturis pool controller this is based on Nodejs Pool Controller. Nixie Single Body you must first be able to load the pool controller onto an RPi and add Sequent Hats to the RPI.\nNixie has many variables when you set it up. This will work single body and should control eight pump types, Pentair Intelliflo VSF VS, VF also SuperFlow VS, Hayward relayVS, Hayward Eco/TriStart VS, Single and lastly two speed pumps.","polisy":true,"license":"https://github.com/sjpbailey/udi-nodejs-pool-Nixie-Single-V3/blob/main/LICENSE","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"ffdfd758-5245-4789-b471-bb5d8794fd44","isPerpetual":true,"version":"1.0.0","branch":"main","url":"https://github.com/sjpbailey/udi-nodejs-pool-Nixie-Single-V3"}],"eisy":true,"uuid":"09da8fd9-25d7-44db-b48c-44a976cc02f2","ts_updated":1710615753},{"docs":"https://github.com/UniversalDevicesInc-PG3/holidays-google-poly/blob/master/README.md","longPoll":60,"executable":"holidays.py","discover":false,"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","desc":"Holidays for ISY scheduling using Google Calendar","polisy":true,"license":"https://raw.githubusercontent.com/UniversalDevicesInc-PG3/holidays-google-poly/master/LICENSE","developer":"firstone@erissoft.com","authorize":true,"install":"install.sh","ip_added":"67.161.168.17","purchaseOptions":[{"price":0,"edition":"Free","id":"2f4c2f29-b42a-46e5-b35d-d3d2f81fd8bc","isPerpetual":true,"version":"2.0.0","branch":"master","url":"https://github.com/UniversalDevicesInc-PG3/holidays-google-poly"}],"eisy":true,"nsInfoPoll":0,"logLevel":"INFO","uuid":"7b465c70-b7ba-4896-9755-cc0073792ee2","ts_added":1650393629,"shortPoll":15,"ts_updated":1677428757,"author":"FirstOne"},{"longPoll":600,"docs":"https://github.com/lovintexas/udi-tuya-fan-pg3x/blob/main/README.md","executable":"tuya_fan.py","readme":"# Smart Life / Tuya Control\n\nhttps://lovintexas.github.io/udi-tuya-fan-pg3x/PLUGIN_GUIDE.html\n\nLocal LAN control of compatible Smart Life and Tuya Wi-Fi devices from Universal Devices eisy / PG3x.\n\nMany devices sold for use with the **Smart Life** app are based on the Tuya platform even when the product, packaging, or instructions do not mention Tuya. This plugin supports compatible devices from either the Smart Life or Tuya Smart ecosystem.\n\nThe plugin uses TinyTuya for direct local communication with supported devices. Tuya cloud access is needed to obtain the Device ID and Local Key during setup, but normal plugin operation is over the local LAN.\n\n## Features\n\n### Ceiling Fans\n\nSupported fan controls:\n\n- Fan On / Off\n- Fan speed 1 through 6\n- Normal / Sleep / Natural mode\n- Forward / Reverse direction\n- Light On / Off\n- Light brightness 0 through 100%\n- Stop timer: Off, 1, 2, 4, or 8 hours\n\n### Power-Monitoring Switches\n\nSupported switch controls and measurements:\n\n- Switch On / Off\n- Voltage\n- Current\n- Power\n- Accumulated energy\n- Fault status\n- Online status\n\nThe plugin supports up to **16 fans and 16 power switches**.\n\n## Configuration\n\nDevices are configured using PG3x Custom Parameters.\n\n### Ceiling Fans\n\nFor fan 1:\n\n    fan1_name\n    fan1_id\n    fan1_ip\n    fan1_key\n    fan1_version\n\nFor additional fans use `fan2_*`, `fan3_*`, etc., through `fan16_*`.\n\nThe tested fan controller uses Tuya protocol version `3.4`.\n\n### Power-Monitoring Switches\n\nFor switch 1:\n\n    switch1_name\n    switch1_id\n    switch1_ip\n    switch1_key\n    switch1_version\n\nFor additional switches use `switch2_*`, `switch3_*`, etc., through `switch16_*`.\n\nThe tested Smart Life power-monitoring switch uses Tuya protocol version `3.5`.\n\n### Parameter Meanings\n\n- `name` — Display name shown in IoX\n- `id` — Tuya Device ID\n- `ip` — Local IP address of the device\n- `key` — Tuya Local Key\n- `version` — Tuya local protocol version\n\nOnly complete device entries are loaded. Each configured device requires `name`, `id`, `ip`, and `key`.\n\nAfter entering or changing Custom Parameters, save the changes and restart the plugin.\n\n## Tested Hardware\n\n### Ceiling Fan\n\nTested with:\n\n- Model: FC86B5-5D\n- Manufacturer: Shenzhen Funpower General Technology Co., Ltd.\n- Tuya protocol: 3.4\n\nFan DPS mapping:\n\n| DPS | Function |\n| --- | --- |\n| 1 | Fan power |\n| 2 | Fan mode |\n| 3 | Fan speed |\n| 8 | Direction |\n| 15 | Light power |\n| 16 | Light brightness |\n| 22 | Stop timer |\n\nOther ceiling fan controllers may work if they use the same DPS mapping.\n\n### Smart Life Power-Monitoring Switch\n\nTested with a Smart Life Wi-Fi power-monitoring switch using Tuya protocol 3.5.\n\nSwitch DPS mapping:\n\n| DPS | Function |\n| --- | --- |\n| 1 | Relay power |\n| 17 | Accumulated energy |\n| 18 | Current |\n| 19 | Power |\n| 20 | Voltage |\n| 26 | Fault status |\n| 66 | Online status |\n\nThe plugin converts the device measurements for display in IoX as:\n\n- Voltage — V\n- Current — A\n- Power — W\n- Energy — kWh\n\nOther Smart Life / Tuya power-monitoring switches may work if they use the same DPS mapping.\n\n## Obtaining Your Smart Life / Tuya Device Information\n\nEach device requires a Device ID and Local Key. These can be obtained using the TinyTuya setup wizard.\n\nThe Tuya cloud is needed to obtain this information, but normal operation of the plugin is entirely over the local LAN.\n\n### 1. Pair the Device\n\nPair the device with the **Smart Life** or **Tuya Smart** mobile app.\n\nA product may be advertised only as a Smart Life device and may not mention Tuya. Smart Life devices commonly use the Tuya platform and can be compatible with this plugin if their local protocol and DPS mapping are supported.\n\nMake sure the device works from the mobile app before continuing.\n\n### 2. Create a Tuya Developer Account\n\nCreate a Tuya IoT Developer account and create a Cloud project.\n\nEnable the appropriate Tuya IoT services and select the data center corresponding to the region used by your Smart Life or Tuya Smart account.\n\n### 3. Link Your Smart Life or Tuya Smart App Account\n\nIn the Tuya Cloud project, add/link an App Account.\n\nDisplay the QR code from the Tuya developer portal and scan it using the **Smart Life** or **Tuya Smart** mobile app.\n\nThe devices registered to that app account should then appear in the Tuya Cloud project's device list.\n\nIf you use separate Smart Life and Tuya Smart accounts, each account containing devices you want to configure must be linked appropriately so that the devices and their Local Keys can be retrieved.\n\n### 4. Run the TinyTuya Wizard on eisy\n\nSSH into eisy, change to the directory where you want TinyTuya's configuration files stored, and run:\n\n    python3 -m tinytuya wizard\n\nThe wizard will request information from your Tuya Cloud project, including:\n\n- API Key — use the Access ID / Client ID\n- API Secret — use the Access Secret / Client Secret\n- Region — select the region corresponding to your Tuya project\n- Device ID — enter a Device ID from your project, or use `scan` when offered\n\nTinyTuya retrieves the registered devices and their Local Keys.\n\nIt creates a `devices.json` file in the directory from which the wizard was run.\n\n**This file contains security credentials. Do not publish or commit it to a public repository.**\n\n### 5. Configure the Plugin\n\nFind the desired device in `devices.json` and enter its:\n\n- Name\n- Device ID\n- Local IP address\n- Local Key\n- Protocol version\n\ninto the appropriate `fan1_*` or `switch1_*` PG3x Custom Parameters.\n\nIt is recommended that each device have a DHCP reservation so its local IP address does not change.\n\nIf a Tuya device is reset, removed, or re-paired with the mobile app, its Local Key may change. Run the TinyTuya wizard again to obtain the new key.\n\n## Security\n\nThe Tuya Local Key is a security credential. Do not post Local Keys in logs, screenshots, support requests, or public repositories.\n\nTinyTuya-generated credential/discovery files should not be committed to public repositories.\n\n## Version\n\nCurrent version: **1.2.0**\n\nTinyTuya and Tuya are third-party projects/services and their setup procedures may change over time.","status":"active","name":"SmartLife_Tuya ","language":"python3","isyAccess":false,"developer":"dr-apo@dr-apo.com","ip_added":"72.177.80.34","nsInfoPoll":0,"logLevel":"INFO","ts_added":1791502955,"shortPoll":60,"author":"Louis Apostolakis","discover":false,"fileUpload":false,"customParams":"{\n  \"fan1_name\": \"\",\n  \"fan1_id\": \"\",\n  \"fan1_ip\": \"\",\n  \"fan1_key\": \"\",\n  \"fan1_version\": \"3.4\",\n  \"switch1_name\":\"\",\n  \"switch1_id\":\"\",\n  \"switch1_ip\":\"\",\n  \"switch1_key\":\"\",\n  \"switch1_version\":\"3.5\"\n}","desc":"Local LAN control of compatible Smart Life and Tuya devices. Supports ceiling fans with speed, mode, direction, light, brightness, and timer controls, plus power-monitoring switches with On/Off control and voltage, current, power, energy, fault, and online status. Uses TinyTuya for direct local control without requiring cloud access during normal operation.","license":"https://github.com/lovintexas/udi-tuya-fan-pg3x/blob/main/LICENSE","changelog":"Version 1.2.0\n\n- Renamed the user-facing plugin to Smart Life / Tuya Control to make compatibility clearer for devices sold for use with the Smart Life app.\n- Added support for Smart Life / Tuya power-monitoring switches using switch1_* through switch16_* Custom Parameters.\n- Added local relay On/Off control.\n- Added voltage, current, power, accumulated energy, fault, and online status reporting.\n- Added support for the tested Tuya protocol 3.5 power-monitoring switch while retaining existing protocol 3.4 ceiling fan support.\n- Added persistent TinyTuya sockets to reduce repeated connection setup and investigate intermittent local-interface lockups.\n- Added protection against accidentally committing TinyTuya credential and discovery files.\n\n1.1.4\n- Fan Speed commands now send fan power ON and the requested speed in a single Tuya command, improving reliable speed changes when the fan is off.\n\n1.1.3\n- Fan Speed commands now automatically turn the fan on before setting the requested speed.\n- Improves IoX scene support by allowing a scene to turn on a fan and set its speed with a single responder command.\n\n1.1.2\n- Added detailed Tuya device setup instructions, including obtaining Device IDs and Local Keys using TinyTuya.\n- Changed fan nodes to use the generic controller icon.\n\n1.1.1\n- Added a setup notice when the plugin has not yet been configured.\n- Added MIT license.\n\n1.1.0\n- Support for up to 16 Tuya ceiling fans\n- Configuration through PG3x Custom Parameters\n- Local LAN control without Tuya cloud access during normal operation\n- Fan power and 6-speed control\n- Normal, Sleep, and Natural operating modes\n- Forward and reverse direction\n- Light power and brightness control\n- Stop timer control\n- Improved configuration validation and connection status","install":"install.sh","authorize":false,"purchaseOptions":[{"id":"7a592fce-5ab2-4452-84d9-5a6ba84c2594","recurringPeriod":"day","price":0,"branch":"main","version":"1.2.0","recurring":30,"url":"https://github.com/lovintexas/udi-tuya-fan-pg3x.git","edition":"Standard","isTrial":true},{"id":"e7b4e228-ed98-4ea9-b575-c698b4bace4d","edition":"Standard","price":10,"branch":"main","version":"1.2.0","isPerpetual":true,"url":"https://github.com/lovintexas/udi-tuya-fan-pg3x.git"}],"uuid":"f5bed5ad-6d85-43e5-86bf-e12d74d4ec3c","ts_updated":1791571837.676},{"docs":"https://forum.universal-devices.com/forum/323-opensprinkler/","longPoll":30,"executable":"initializer.py","status":"active","name":"OpenSprinkler","language":"python3","isyAccess":false,"developer":"javier@universal-devices.com","ip_added":"75.166.45.142","nsInfoPoll":0,"logLevel":"INFO","ts_added":1642479185,"shortPoll":5,"author":"Javier Refuerzo","discover":false,"customParams":"{\"password\":\"opendoor\",\"url\":\"http://192.168.X.X\",\"manualRunTimeSeconds\":\"480\"}","desc":"OpenSprinkler Controller.","polisy":true,"license":"https://github.com/JavierRefuerzo/iTach_IR_Node_Server/blob/main/LICENSE","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"d5e5a386-7a03-48b4-93f6-52122be567fe","isPerpetual":true,"version":"2023.1.9","branch":"main","url":"https://github.com/JavierRefuerzo/OpenSprinklerNodeServer.git"}],"eisy":true,"uuid":"228638c6-7022-4572-9a23-f5af73ca0194","ts_updated":1698174773},{"docs":"https://github.com/Panda88CO/udi-MessanaRadiant","longPoll":1800,"executable":"udi_MessanaController.py","readme":"# udi-MessanaRadiant\nThe node server is made to control MEssana Radiat heating and cooling system (www.radiantcooling.com).  My system only includes heating so I have not tested the cooling functions yet\n\nSetup requires a key/token provided by messana.  IN addition you will need your system to be on your local network (you ened to provide the IP address)\n\nThe system sends a heartbeat every short poll interval (toggling between 1 and 0).  It also updates the most critical parameters then.  The longpoll updates all parameters\n","status":"active","name":"MessanaRadiant","language":"python3","isyAccess":false,"developer":"christian.olgaard@gmail.com","ip_added":"73.93.40.59","nsInfoPoll":0,"logLevel":"INFO","ts_added":1680111374,"shortPoll":600,"author":"Panda88CO","discover":false,"fileUpload":false,"customParams":"{\"IP_ADDRESS\":\"0.0.0.0\",\"MESSANA_KEY\":\"\",\"TEMP_UNIT\":\"C\"}","desc":"Node Server to control Messana Radiant Cooling/Heating system","polisy":true,"license":"https://github.com/Panda88CO/udi-MessanaRadiant/LICENSE","changelog":"0.3.8 - Added update time to parameters - changes to show temperature in nodes primary values, and other nodes for their relevant values - note, this requires updates to SW if these are used.  Moved to dynamic profiles \nInitial Testing","authorize":false,"install":"install.sh","purchaseOptions":[{"branch":"RELEASE20261002","id":"dfd5dd65-bebf-41d7-af2e-a3f955eeffc4","version":"0.3.8","isPerpetual":true,"price":10,"url":"https://github.com/Panda88CO/udi-MessanaRadiant.git","edition":"Standard"},{"branch":"RELEASE20261002","id":"9472876b-22bf-410f-951d-23bfbbd4f1c6","isTrial":true,"edition":"Standard","recurringPeriod":"day","recurring":15,"price":0,"version":"0.3.8","url":"https://github.com/Panda88CO/udi-MessanaRadiant.git"}],"eisy":true,"uuid":"dc6d8263-735a-427a-a053-5b08ff1079ec","ts_updated":1790987518},{"docs":"https://github.com/sjpbailey/Documentation/blob/main/BASpi%206U4R2AO/README.md","longPoll":600,"executable":"BASAO.py","status":"active","name":"BASPIAO","language":"python3","isyAccess":false,"developer":"sjpbailey@comcast.net","ip_added":"98.41.236.33","nsInfoPoll":0,"logLevel":"INFO","ts_added":1697142958,"shortPoll":60,"author":"Bailey","discover":false,"customParams":"{\n\t\t\"nodes\": \"1\",\n\t\t\"basaoip_0\": \"127.0.0.1\",\n\t\t\"basaoip_1\": \"\",\n\t\t\"basaoip_2\": \"\",\n\t\t\"basaoip_3\": \"\",\n\t\t\"basaoip\": \"\",\n\t\t\"basaoip\": \"\"\n}","desc":"Universal Devices Analog output Node Server. Using the Contemporary Controls BASpi-6u4r2ao control device or the Edge Device that is configured with six universal input, four relay outputs and two analog outputs, 0-10vdc or 4-20mA.\nThese controllers sit on a raspberry pi and are WiFi/Ethernet IP reachable from your intranet (internal IP network). \nThese controllers are fully BacNet compatible and can be brought into any BacNet system by manufacturers like Tridium, Automated Logic, Carrier full interoperability. ","polisy":true,"license":"https://github.com/sjpbailey/Documentation/blob/main/BASpi%206U4R2AO/LICENSE","changelog":"Nov 25, 2023\n1. Moved Images out of repository\n2. Moved ReadMe and License file to Documents repository\n3. added online status","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"ef72c050-43b7-42ba-87a5-6fc439d65192","isPerpetual":true,"version":"3.0.2","branch":"main","url":"https://github.com/sjpbailey/udi-poly-baspi-sys6u4r2ao-master-v3"}],"eisy":true,"uuid":"edf67637-3edd-474c-a123-e63d49ac114c","ts_updated":1700948285},{"docs":"https://github.com/BME-nodeservers/docs/blob/master/udi-davis-poly.md","longPoll":60,"executable":"davis.py","readme":"# Davis Weatherlink polyglot\n\nThis is the Davis WeatherLink Poly for the [Universal Devices ISY994i](https://www.universal-devices.com/residential/ISY) [Polyglot interface](http://www.universal-devices.com/developers/polyglot/docs/) with  [Polyglot V3](https://github.com/UniversalDevicesInc/pg3)\n\n(c) 2020,2021,2023 Robert Paauwe\n\nThis node server is intended to support [Davis Weather Stations](http://www.davisinstruments.com/).  This is for use with the WeatherLinkIP, the Serial/USB Data Logger with the WeatherLink Computer Software, or the Vantage Connect weather station solutions.  [API documentation](https://www.weatherlink.com/static/docs/APIdocumentation.pdf). \n","status":"active","name":"DavisWeather","language":"python3","isyAccess":false,"developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":0,"logLevel":"INFO","ts_added":1650413220,"shortPoll":60,"author":"Bob Paauwe","discover":false,"fileUpload":false,"customParams":"{\n\t\"Device ID\":  \"\",\n\t\"Password\" :  \"\",\n\t\"API Token\":  \"\",\n\t\"Station ID\": \"\",\n\t\"Units\":      \"us\"\n}","desc":"Pull weather data from Davis WeatherLink console uploads (Not WeatherLink Live)","polisy":true,"license":"https://github.com/BME-nodeservers/docs/blob/master/LICENSE","changelog":"2.0.3 - remove offending line from year.py to fix parse error.\n2.0.2 - fix day, month, year parsing\n2.0.1 - do unit conversion for day, month, year nodes if necessary","authorize":false,"install":"install.sh","purchaseOptions":[{"price":10,"edition":"Standard","id":"fba24da4-80ad-4338-ae6b-c638d7077dfc","isPerpetual":true,"version":"2.0.3","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/udi-davis-poly.zip"}],"eisy":true,"uuid":"07e7e9cd-1902-4291-8203-ed504060ec85","ts_updated":1735075369},{"docs":"https://github.com/UniversalDevicesInc-PG3/udi-twinkly-nodeserver/blob/main/README.md","executable":"twinkly_poly.py","status":"active","name":"Twinkly","language":"python3","desc":"Twinkly Light","developer":"jf.tremblay@gmail.com","install":"install.sh","ip_added":"74.14.175.171","purchaseOptions":[{"price":0,"edition":"Free","isPerpetual":true,"id":"f1e4bb13-d011-4189-ba96-95388f6e1e02","branch":"main","version":"3.0.0","url":"https://github.com/UniversalDevicesInc-PG3/udi-twinkly-nodeserver.git"}],"uuid":"f5f38126-56f2-4f1d-a1d4-a175b0639096","logLevel":"DEBUG","ts_added":1635449201,"ts_updated":1635449263,"author":"AutomationGeek"},{"docs":"https://housepanel.net","longPoll":3600,"executable":"poly.py","readme":"This node server is the result of more than 10 years of work on the HousePanel GUI. Over the last 6 months I worked on porting the interface to display ISY devices and as an outgrowth of that work I developed this node server that translates Hubitat native devices into ISY native data streams. Use of this node server requires the installation of the HousePanel.groovy app within the Hubitat IDE.","status":"active","name":"Hubitat","language":"python3","isyAccess":false,"developer":"ken@kenw.com","ip_added":"209.215.18.131","nsInfoPoll":0,"logLevel":"WARNING","ts_added":1688331436,"shortPoll":300,"author":"Ken Washington","discover":true,"fileUpload":false,"customParams":"{\n    \"accessToken\":\"\",\n    \"hubEndpt\":\"\",\n    \"restPort\":\"9100\"\n}\n","desc":"Hubitat Node Server \nThis node server reads most device types that Hubitat supports and presents them to ISY in an appropriate format. Hints and other features are included that make this an ideal back-end tool for the HousePanel GUI, which is the most flexible GUI available for smart home devices. ","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\n1.15 more bug fixes and support for additional device types","authorize":false,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"month","price":0,"recurring":1,"edition":"Free","id":"1ddc0b68-331a-4d53-94f5-d6bb95d58a71","isTrial":true,"version":"1.0.15","branch":"","url":"https://housepanel.net/hubitat-1.0.15.zip"},{"price":20,"edition":"Standard","id":"b670e70d-7d2c-4c84-97f5-0101e39f79c6","isPerpetual":true,"version":"1.0.15","branch":"","url":"https://housepanel.net/hubitat-1.0.15.zip"}],"eisy":true,"uuid":"e015d267-f9b8-4fbf-ab47-ea28c5f5830f","ts_updated":1716251249},{"docs":"https://github.com/UniversalDevicesInc-PG3/udi-poly-IFTTT-Maker/blob/master/README.md","longPoll":600,"executable":"ifttt-maker.py","discover":false,"status":"active","customParams":"{\n    \"API Key\": \"\"\n}\n","name":"IFTTT-Webhooks","language":"python3","desc":"IFTTT Maker Webhooks https://ifttt.com/maker_webhooks","developer":"jimsearle@gmail.com","authorize":false,"install":"install.sh","ip_added":"70.181.79.77","purchaseOptions":[{"version":"3.0.3","id":"3c25a314-99ec-4c87-b600-86c46df42136","price":15,"edition":"Standard","url":"https://pg3store.isy.io/v2/nodeservers/production/IFTTT-Webhooks.zip","isPerpetual":true}],"nsInfoPoll":0,"logLevel":"DEBUG","uuid":"9026fcab-d761-420a-8213-316ed8a4d6fa","ts_added":1646064458,"shortPoll":240,"ts_updated":1650335926,"author":"Jimbo.Automates"},{"docs":"https://github.com/PG3Plugins/udi-wemo-poly/blob/master/README.md","longPoll":180,"executable":"wemo.py","readme":"<h3>Wemo: A plugin to add Wemo devices</h3>\n<p>When the plugin starts, it will scan your network to discover Wemo devices and add nodes for each one that if finds.</p>\n<p>Supports:<ul><li>Wemo Switches</li><li>Wemo Dimmers</li><li>Wemo Insight smart plug</li></ul></p>\n<p>More information about the current state of <a href=\"https://www.belkin.com/support-article/?articleNum=335419\">Wemo</a> and future support is available at the Belkin website.</p><hr><br>\n","status":"active","name":"Wemo","language":"python3","isyAccess":false,"developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":0,"logLevel":"ERROR","ts_added":1639938063,"shortPoll":60,"author":"Bob Paauwe","discover":true,"fileUpload":false,"desc":"Discover and add Wemo devices.","license":"https://github.com/PG3Plugins/udi-wemo-poly/blob/master/LICENSE","changelog":"1.0.0 - Initial release","authorize":false,"install":"install.sh","purchaseOptions":[{"version":"1.0.0","id":"270c54f2-dd18-4d10-976b-c15fb5273789","branch":"master","url":"https://github.com/PG3Plugins/udi-wemo-poly","edition":"Free","price":0,"isPerpetual":true}],"uuid":"e1c75ee4-2f72-43a5-9b37-63eaa092643a","ts_updated":1790282843.277},{"docs":"https://github.com/BME-nodeservers/udi-weatherflow-poly/blob/master/README.md","longPoll":600,"executable":"weatherflow.py","readme":"# weatherflow-polyglot\n\nThis is a node server to pull weather data from WeatherFlow weather stations and\nmake it available to a [Universal Devices ISY994i](https://www.universal-devices.com/residential/ISY)\n[Polyglot interface](http://www.universal-devices.com/developers/polyglot/docs/) with \nPolyglot V3 running on a [Polisy](https://www.universal-devices.com/product/polisy/)\n\n(c) 2018-2021 Robert Paauwe\n\nThis node server is intended to support the [WeatherFlow Smart Weather Station](http://www.weatherflow.com/).\nIt supports both the current Tempest stations and older Air/Sky based stations. \nMultiple stations can be configured and used.\n### Node Settings\nThe settings for this node are:\n\n#### Short Poll\n   * Interval used to poll the WeatherFlow server for stations marked as 'remote'\n#### Long Poll\n   * Interval used to poll the WeatherFlow server for forecast data\n   * Sends a heartbeat as DON/DOF\n#### Token\n   * Your personal access to token. See https://tempestwx.com/settings/tokens\n#### ListenPort\n   * Port to listen on for WeatherFlow data. Default is port 50222\n#### Rapid Wind\n   * Enable or disable the sending of rapid wind data to the ISY.  Set to 'true' to enable.\n   * Rapid wind data is collected every 3 seconds  \n   * Rapid wind data is only available for stations configured as 'local'\n#### Forecast\n   * Specifies the station id used for forecast data.\n   * If not set, no forecast data will be collected and not evaptrasnspiration calculations will done\n#### Stations\n   * A separate key/value for each station you want to collect data from\n   * The key is the station id number\n   * The value must be either 'local' or 'remote'\n   * 'local' - the data comes from the hub UDP feed on your local network\n   * 'remote' - the data comes from the WeatherFlow server at Short Poll intervals\n## Node substitution variables\n### Parent node\n * sys.node.controller.ST     (Node server online/offline)\n * sys.node.controller.ETO    (Evaptranspiration for yesterday)\n * sys.node.controller.GV4    (Number of seconds since an update was received from a station)\n\n### Air node\n * sys.node.[deviceid].CLITEMP   (Current temperature)\n * sys.node.[deviceid].CLIHUM    (Current humidity)\n * sys.node.[deviceid].ATMPRES   (Current sea level pressure)\n * sys.node.[deviceid].BARPRES   (Current station pressure)\n * sys.node.[deviceid].GV1       (Current pressure trend)\n * sys.node.[deviceid].GV0       (Current feels like temperature)\n * sys.node.[deviceid].DEWPT     (Current dewpoint)\n * sys.node.[deviceid].HEATIX    (Current heat index)\n * sys.node.[deviceid].WINDCH    (Current windchill)\n * sys.node.[deviceid].GV2       (Current lightning strike count)\n * sys.node.[deviceid].DISTANC   (Current lightning strike distance)\n * sys.node.[deviceid].BATLVL    (Current air battery voltage)\n\n### sky node\n * sys.node.[deviceid].SPEED     (Current wind speed)\n * sys.node.[deviceid].WINDDIR   (Current wind direction)\n * sys.node.[deviceid].GUST      (Current gust speed)\n * sys.node.[deviceid].GV1       (Current lull speed)\n * sys.node.[deviceid].RAINRT    (Current rain rate)\n * sys.node.[deviceid].PRECIP    (Current daily rain)\n * sys.node.[deviceid].GV2       (Current hourly rain)\n * sys.node.[deviceid].GV3       (Current weekly rain)\n * sys.node.[deviceid].GV4       (Current monthly rain)\n * sys.node.[deviceid].GV5       (Current yearly rain)\n * sys.node.[deviceid].GV6       (Current yesterday's rain)\n * sys.node.[deviceid].UV        (Current UV index)\n * sys.node.[deviceid].SOLRAD    (Current solar radiataion)\n * sys.node.[deviceid].LUMIN     (Current brightness)\n * sys.node.[deviceid].BATLVL    (Current sky battery voltage)\n### tempest node\n * sys.node.[deviceid].CLITEMP   (Current temperature)\n * sys.node.[deviceid].CLIHUM    (Current humidity)\n * sys.node.[deviceid].ATMPRES   (Current sea level pressure)\n * sys.node.[deviceid].BARPRES   (Current station pressure)\n * sys.node.[deviceid].GV1       (Current pressure trend)\n * sys.node.[deviceid].GV0       (Current feels like temperature)\n * sys.node.[deviceid].DEWPT     (Current dewpoint)\n * sys.node.[deviceid].HEATIX    (Current heat index)\n * sys.node.[deviceid].WINDCH    (Current windchill)\n * sys.node.[deviceid].GV2       (Current lightning strike count)\n * sys.node.[deviceid].DISTANC   (Current lightning strike distance)\n * sys.node.[deviceid].SPEED     (Current wind speed)\n * sys.node.[deviceid].WINDDIR   (Current wind direction)\n * sys.node.[deviceid].GUST      (Current gust speed)\n * sys.node.[deviceid].GV3       (Current gust direction)\n * sys.node.[deviceid].GV4       (Current lull speed)\n * sys.node.[deviceid].RAINRT    (Current rain rate)\n * sys.node.[deviceid].PRECIP    (Current daily rain)\n * sys.node.[deviceid].GV5       (Current hourly rain)\n * sys.node.[deviceid].GV6       (Current weekly rain)\n * sys.node.[deviceid].GV7       (Current monthly rain)\n * sys.node.[deviceid].GV8       (Current yearly rain)\n * sys.node.[deviceid].GV9       (Current yesterday's rain)\n * sys.node.[deviceid].UV        (Current UV index)\n * sys.node.[deviceid].SOLRAD    (Current solar radiataion)\n * sys.node.[deviceid].LUMIN     (Current brightness)\n * sys.node.[deviceid].BATLVL    (Current tempest battery voltage)\n\n### forecast node\n * sys.node.[forecast_x].ST      (day of week)\n * sys.node.[forecast_x].GV0     (daily predicted high temperature)\n * sys.node.[forecast_x].GV1     (daily predicted low temperature)\n * sys.node.[forecast_x].GV13    (expected weather conditions)\n * sys.node.[forecast_x].GV18    (chance of precipitation)\n\n\n\n","status":"active","name":"WeatherFlow","language":"python3","isyAccess":false,"developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":0,"logLevel":"ERROR","ts_added":1620258610,"shortPoll":60,"author":"Bob Paauwe","discover":false,"fileUpload":false,"customParams":"{\n   \"Token\": \"\",\n   \"ListenPort\": 50222,\n   \"Forecast\": 0,\n   \"Rapid Wind\": \"false\"\n}","desc":"Make WeatherFlow weather station data available to the ISY/IoP","polisy":true,"license":"https://github.com/BME-nodeservers/udi-weatherflow-poly/blob/master/LICENSE","changelog":"3.0.31 - fix nearcast daily and yesterday value reset\n3.0.30 - add node for nearcast rain; add names to node values in UI\n3.0.29 - add weather condition #14 (snow likely)\n3.0.28 - force listen port to be an integer\n3.0.27 - fix error message when station status is not 0","authorize":false,"install":"install.sh","purchaseOptions":[{"price":10,"edition":"Standard","id":"b52b36fc-fdbe-44cd-b9ab-56c05067d9b0","isPerpetual":true,"version":"3.0.32","branch":"master","url":"https://github.com/BME-nodeservers/udi-weatherflow-poly.git"}],"eisy":true,"uuid":"f1162a89-2dfa-4931-8f0f-277d5860b091","ts_updated":1766362288},{"docs":"https://github.com/jimboca/udi-plugin-konnected/blob/master/README.md","longPoll":600,"executable":"main.py","readme":"https://github.com/jimboca/udi-plugin-konnected/blob/master/README.md","status":"active","name":"Konnected","language":"python3","isyAccess":false,"developer":"jimsearle@gmail.com","ip_added":"68.224.233.143","nsInfoPoll":0,"logLevel":"DEBUG","ts_added":1786847558,"shortPoll":60,"author":"JimBo.Automates","discover":false,"fileUpload":false,"desc":"Plugin to support https://konnected.io devices. Initially will support the BLAQ Garage Door Opener.","polisy":true,"license":"https://github.com/jimboca/udi-plugin-konnected/blob/master/LICENSE","changelog":"https://github.com/jimboca/udi-plugin-konnected/blob/master/CHANGELOG.md","authorize":false,"install":"install.sh","purchaseOptions":[{"version":"2.0.1","branch":"","recurringPeriod":"month","id":"c4d8b6db-d074-4702-9b4a-41f0032d3b84","edition":"Free","isTrial":true,"price":0,"recurring":1,"url":"https://pg3store.isy.io/v2/nodeservers/production/Konnected-production-2.0.1.zip"},{"id":"7a014594-7bfe-4da7-9368-aaa7b08b3811","isPerpetual":true,"branch":"","price":25,"edition":"Standard","version":"2.0.1","url":"https://pg3store.isy.io/v2/nodeservers/production/Konnected-production-2.0.1.zip"}],"eisy":true,"uuid":"15c81a41-ab96-4862-b3bb-083df75a5ad8","ts_updated":1789330240},{"docs":"https://github.com/PG3Plugins/UDI-Ping/blob/master/README.md","longPoll":240,"executable":"ping.py","status":"active","name":"Ping","language":"python3","isyAccess":false,"developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":0,"logLevel":"INFO","ts_added":1650648694,"shortPoll":60,"author":"Mark Vittes","discover":false,"fileUpload":false,"desc":"A simple node server to ping devices. ","polisy":true,"license":"https://github.com/PG3Plugins/UDI-Ping/blob/master/LICENSE","authorize":false,"install":"install.sh","purchaseOptions":[{"isPerpetual":true,"version":"2.0.0","price":0,"branch":"master","edition":"Free","id":"7d16716d-7974-4f59-8072-f66bcaae524f","url":"https://github.com/PG3Plugins/UDI-Ping"}],"eisy":true,"uuid":"dcc65776-7406-4c01-954f-c51c2fb379dc","ts_updated":1788213502},{"docs":"https://github.com/wisilicalumos/lumos-openadr-ud-plugin/blob/main/README.md","longPoll":600,"executable":"lumos.py","status":"active","name":"Lumos-DR","language":"python3","isyAccess":true,"developer":"tjoy@wisilica.com","ip_added":"103.141.54.106","nsInfoPoll":0,"logLevel":"INFO","ts_added":1779955314,"shortPoll":60,"author":"Jossy Sebastian","discover":false,"fileUpload":false,"customParams":"{\n  \"CLOUD_API_URL\": \"https://lumos.wisilica.com\",\n  \"CLOUD_EVENT_API_URL\": \"https://translation.wisilica.com\",\n  \"CLOUD_API_USER\": \"openadr@customer\",\n  \"CLOUD_API_PASS\": \"openadr@123\",\n  \"BUILDING_ID\": \"0\"\n}","desc":"OpenADR integration plugin for the Lumos platform. This plugin receives OpenADR Demand Response (DR) events and securely forwards them to the configured Lumos account, enabling Lumos-connected devices and lighting systems to automatically participate in DR programs and respond to utility or aggregator load management events.","polisy":true,"license":"https://opensource.org/license/MIT","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"68680099-5779-464e-95c3-9a60ab9ba1f4","isPerpetual":true,"version":"1.2.4","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/lumos-dr-fixed.zip"}],"eisy":true,"uuid":"f847eff7-c3aa-4447-9bec-155f2db975c3","ts_updated":1779955314},{"docs":"https://github.com/Panda88CO/udi-nuheatv2/blob/DEV/README.md","longPoll":1800,"executable":"nuheat.py","status":"active","oauth":"{\"clientId\":\"ChristianOlgaard-22Lm-JuY3-TO87\",\"clientSecret\":\"LlDBawn8Y3esmWyWJRVitrHlJjGcN3fPdXNry3tQszREA7GrK8FrMnW20g83ao!D\"}","name":"NuHeat_v2","language":"python3","isyAccess":false,"developer":"christian.olgaard@gmail.com","ip_added":"98.47.168.86","nsInfoPoll":0,"logLevel":"INFO","ts_added":1789606039,"shortPoll":300,"author":"Panda88CO","discover":false,"fileUpload":false,"customParams":"{\"temp_unit\":\"F\",\"tz\":\"America/Los_Angeles\"}","desc":"Revised version of ST-Nuheat floor heating thermostat controller\nIt is derived from early code by the original ST-Nuheat plugin developer (https://github.com/simplextech/udi-poly-nuheat), but significant changes have been made to support the latest API (and add a little more functionality) \nExisting users can request a license transfer\n","polisy":true,"license":"https://github.com/Panda88CO/udi-nuheatv2/blob/DEV/LICENSE","changelog":"2.2.20 - Created hybrid profile system to allow older systems to work.  Fixed a few bugs.\n2.2.10 - Reverted back to static profiles to allow support for older systems - Serial installation of nodes again for older systems\n2.1.7 - Initial Release","authorize":true,"install":"install.sh","purchaseOptions":[{"edition":"Standard","id":"7f6030cf-eb75-4e6c-afff-92b2e5899d72","branch":"REL20261002","version":"2.2.20","price":0,"isTrial":true,"recurring":30,"recurringPeriod":"day","url":"https://github.com/Panda88CO/udi-nuheatv2"},{"id":"292bf973-6f09-4a43-8047-81575d9cf304","version":"2.2.20","price":10,"isPerpetual":true,"edition":"Standard","url":"https://github.com/Panda88CO/udi-nuheatv2","branch":"REL20261002"}],"eisy":true,"uuid":"19a1faf9-ce5c-4c9a-8b3c-8203fd435e01","ts_updated":1790984890},{"docs":"https://developer.isy.io","longPoll":86400,"executable":"oadr3.py","status":"active","name":"OpenADR-31-Opt","language":"python3","isyAccess":true,"developer":"tech@universal-devices.com","ip_added":"76.91.7.232","nsInfoPoll":0,"logLevel":"INFO","ts_added":1764704132,"shortPoll":3600,"author":"UD","discover":false,"fileUpload":false,"customParams":"{\n\"VTN Base URL\":\"\",\n\"Auth Server URL\":\"\",\n\"Client ID\":\"\",\n\"Client Secret\":\"\",\n\"Duration Scale\":\"\",\n\"Event Mode\":\"\",\n\"Program ID\":\"\",\n\"Test Mode\":\"\",\n\"Disable Opt\":\"\",\n\"Price Scale\":\"1.0\"\n}","desc":"OpenADR 3.1 based optimizer using comfort settings and baselines.","polisy":true,"license":"https://nucore.ai","changelog":"1.0.0 - 12-2-2025 - Initial version\n1.0.6 - 12-4-2025 - Thermostat opts.\n1.0.7 - 12-5-2025 - Package directories\n1.1.0 - 12-9-2025 - Support for duty cycling switches and test mode in the configurations\n1.1.3 - 01-07-2026 - Removed 'balanced' settings. All offsets are not based on a table.\n1.3.0 - 03-02-2026:\n1.3.2 - Changed default/baseline heat set point to 67\nOptimization for DR, Price\nUpdated OADR31 payload to support multiple values in one interval\nPush notifications\nUpdated price calculations\nAdditional Custom parameters\n1.3.4 - 03/06/2026:\nMore logging\nIf communication error, assume the last command was actually issued.\nEnable test mode for public\n1.3.5 - 03/10/2026:\nRevert to price when DR events end.\n1.3.6 - 03/11/2026:\nFixed DR processing + more logging\n1.3.7 - 03/20/2026:\nChanged price bands\n1.3.8 - 04/30/2026:\nFixed intermittent override application\nMatter thermostats have an on/off switch, removed from optimization\n1.4.5 - 05/07/2026\nFixed segment processing\nFixed DR processing\nFixed opt-out processing\nFixed DR notification issues truncating after PG (& needed to be escaped)\nChanged price precision to 4\n1.4.6 05/12/2026\nChanged duty cycle to 90/80/70%\nSupport for time series charts/graphs\n\n\n","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"6ced52ae-6d05-4d50-a993-daf6b7686f8b","isPerpetual":true,"version":"1.4.6","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/oadr31-1.4.6.pro.tar.gz"}],"eisy":true,"uuid":"707d6f35-3d5a-46e9-849c-1e5c2961a795","ts_updated":1778651692},{"docs":"POLYGLOT_CONFIG.md","longPoll":600,"executable":"wc832.py","readme":"WEBCONTROL832 PLUGIN SETUP GUIDE\n\n** (Note, if you are upgrading from the Non-Production Store version to Production Store version, follow the steps at the bottom of this page).\n*** Before installing ANY Plugin (nodeserver) ALWAYS do a complete backup of PGx3 and IoX beforehand. (I always do another right after installation for good measure).\n\nThe WebControl832 Plugin connects to a WebControl8 or WebControl32 device, polling its data and updating your IoX system with the following information:\n1.\tNode Server Status: Displays \"Connected,\" \"Not Connected,\" or \"Failed.\"\n2.\tHeartbeat: Alternates between 1 and -1 when connected, updating with each shortPoll. Displays 0 when disconnected.\n3.\tNetBIOS Name: The name assigned to your WebControl device in its network configuration.\n4.\tDate and Time: The current date and time reported by the WebControl device.\n5.\tIP Address: The IP address assigned to the WebControl device.\n6.\tFirmware Version: The firmware version installed on the WebControl device.\n\nPOLLING CONFIGURATION\n•\tshortPoll: Updates only nodes with changed values since the last poll. Default: 10 seconds.\n•\tlongPoll: Forces an update of all node values. Default: 10 minutes.\n________________________________________\n\nCUSTOM PARAMETERS Configure the following parameters to match your WebControl device settings:\n•\tIP_Address: The IP address of the WebControl device.\n•\tPort: The WebControl's network port (default: 80).\n•\tUsername: The WebControl login username (default: admin).\n•\tPassword: The WebControl login password (default: password).\n•\tJson_Nodes_Names: A single-line JSON string specifying which nodes to create and their custom names. See examples below.\n•\tCustom_Name: A custom name for the WebControl device (default: WebControl832).\n________________________________________\n\nNODE CREATION This plugin only creates the Controller Node by default. Additional nodes must be specified in the Json_Nodes_Names parameter. This ensures that only the nodes you need are created, reducing resource usage.\nJSON String Format: The JSON string uses a key-value structure:\n•\tKey: The node type (e.g., aip1 for Analog Input 1).\n•\tValue: The custom name for the node.\nFor example, to create a node for Analog Input 1 and name it \"My Analog Input,\" use: {\"aip1\": \"My Analog Input\"}\nTo create multiple nodes (e.g., one Analog Input, one Output, and two Temp Sensors): {\"aip1\": \"Analog Input 1\", \"op1\": \"Output 1\", \"ts1\": \"Temp Sensor 1\", \"ts8\": \"Temp Sensor 8\"}\n________________________________________\n\nAVAILABLE JSON KEYS Below are the keys and their corresponding WebControl node types:\nWEBCONTROL 8\n•\taip1 to aip3: Analog Inputs 1 to 3\n•\tcounter: Counter\n•\tfcounter: Frequency Counter\n•\ths1: Humidity Sensor\n•\tip1 to ip8: Inputs 1 to 8\n•\top1 to op8: Outputs 1 to 8\n•\tts1 to ts8: Temperature Sensors 1 to 8\n•\tvar1 to var8: Variables 1 to 8\nWEBCONTROL 32\n•\taip1 to aip8: Analog Inputs 1 to 8\n•\tcnt1 to cnt3: Counters 1 to 3\n•\ths1: Humidity Sensor\n•\tip1 to ip16: Inputs 1 to 16\n•\top1 to op16: Outputs 1 to 16\n•\tts1 to ts16: Temperature Sensors 1 to 16\n•\tvar1 to var16: Variables 1 to 16\n________________________________________\n\nEXAMPLE JSON STRINGS\nWEBCONTROL 8 Here’s a complete JSON string for creating all possible nodes on a WebControl 8 board: {\"aip1\": \"Analog Input 1\", \"aip2\": \"Analog Input 2\", \"aip3\": \"Analog Input 3\", \"counter\": \"Counter\", \"fcounter\": \"Frequency Counter\", \"hs1\": \"Humidity Sensor\", \"ip1\": \"Input 1\", \"ip2\": \"Input 2\", \"ip3\": \"Input 3\", \"ip4\": \"Input 4\", \"ip5\": \"Input 5\", \"ip6\": \"Input 6\", \"ip7\": \"Input 7\", \"ip8\": \"Input 8\", \"op1\": \"Output 1\", \"op2\": \"Output 2\", \"op3\": \"Output 3\", \"op4\": \"Output 4\", \"op5\": \"Output 5\", \"op6\": \"Output 6\", \"op7\": \"Output 7\", \"op8\": \"Output 8\", \"ts1\": \"Temp Sensor 1\", \"ts2\": \"Temp Sensor 2\", \"ts3\": \"Temp Sensor 3\", \"ts4\": \"Temp Sensor 4\", \"ts5\": \"Temp Sensor 5\", \"ts6\": \"Temp Sensor 6\", \"ts7\": \"Temp Sensor 7\", \"ts8\": \"Temp Sensor 8\", \"var1\": \"Variable 1\", \"var2\": \"Variable 2\", \"var3\": \"Variable 3\", \"var4\": \"Variable 4\", \"var5\": \"Variable 5\", \"var6\": \"Variable 6\", \"var7\": \"Variable 7\", \"var8\": \"Variable 8\"}\nWEBCONTROL 32 Here’s a complete JSON string for creating all possible nodes on a WebControl 32 board: {\"aip1\": \"Analog Input 1\", \"aip2\": \"Analog Input 2\", \"aip3\": \"Analog Input 3\", \"aip4\": \"Analog Input 4\", \"aip5\": \"Analog Input 5\", \"aip6\": \"Analog Input 6\", \"aip7\": \"Analog Input 7\", \"aip8\": \"Analog Input 8\", \"cnt1\": \"Counter 1\", \"cnt2\": \"Counter 2\", \"cnt3\": \"Counter 3\", \"hs1\": \"Humidity Sensor\", \"ip1\": \"Input 1\", \"ip2\": \"Input 2\", \"ip3\": \"Input 3\", \"ip4\": \"Input 4\", \"ip5\": \"Input 5\", \"ip6\": \"Input 6\", \"ip7\": \"Input 7\", \"ip8\": \"Input 8\", \"ip9\": \"Input 9\", \"ip10\": \"Input 10\", \"ip11\": \"Input 11\", \"ip12\": \"Input 12\", \"ip13\": \"Input 13\", \"ip14\": \"Input 14\", \"ip15\": \"Input 15\", \"ip16\": \"Input 16\", \"op1\": \"Output 1\", \"op2\": \"Output 2\", \"op3\": \"Output 3\", \"op4\": \"Output 4\", \"op5\": \"Output 5\", \"op6\": \"Output 6\", \"op7\": \"Output 7\", \"op8\": \"Output 8\", \"op9\": \"Output 9\", \"op10\": \"Output 10\", \"op11\": \"Output 11\", \"op12\": \"Output 12\", \"op13\": \"Output 13\", \"op14\": \"Output 14\", \"op15\": \"Output 15\", \"op16\": \"Output 16\", \"ts1\": \"Temp Sensor 1\", \"ts2\": \"Temp Sensor 2\", \"ts3\": \"Temp Sensor 3\", \"ts4\": \"Temp Sensor 4\", \"ts5\": \"Temp Sensor 5\", \"ts6\": \"Temp Sensor 6\", \"ts7\": \"Temp Sensor 7\", \"ts8\": \"Temp Sensor 8\", \"ts9\": \"Temp Sensor 9\", \"ts10\": \"Temp Sensor 10\", \"ts11\": \"Temp Sensor 11\", \"ts12\": \"Temp Sensor 12\", \"ts13\": \"Temp Sensor 13\", \"ts14\": \"Temp Sensor 14\", \"ts15\": \"Temp Sensor 15\", \"ts16\": \"Temp Sensor 16\", \"var1\": \"Variable 1\", \"var2\": \"Variable 2\", \"var3\": \"Variable 3\", \"var4\": \"Variable 4\", \"var5\": \"Variable 5\", \"var6\": \"Variable 6\", \"var7\": \"Variable 7\", \"var8\": \"Variable 8\", \"var9\": \"Variable 9\", \"var10\": \"Variable 10\", \"var11\": \"Variable 11\", \"var12\": \"Variable 12\", \"var13\": \"Variable 13\", \"var14\": \"Variable 14\", \"var15\": \"Variable 15\", \"var16\": \"Variable 16\"}\n________________________________________\n\nAfter updating all custom parameters, click Save. The controller node (NetBIOS name, date/time, IP address, and firmware version) will update during the next longPoll. Additional nodes will begin updating shortly after saving or restarting the plugin.\n\n________________________________________\n\n** If you have the Non-Production version installed and would like to upgrade to the Production version, Follow the steps below.\n\n1) Backup PGx3 and IoX completely.\n2) Go to the PGx3 Production store and find WebControl832 and select.\n3) On the install page, verify your beta version and slot number is listed. Then select install.\n4) On the pop up page you will see a box labeled Reinstall Here for each instance of the plugin you have installed. \n5) Select Reinstall Here button and wait 30 seconds for the plugin to update and start up again. Do this for every instance.\n6) Backup PGx3 and IoX completely for good measure.\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","isyAccess":false,"developer":"oztronix@comcast.net","ip_added":"76.20.55.237","nsInfoPoll":0,"logLevel":"CRITICAL","ts_added":1735661232,"shortPoll":10,"author":"TJF1960","discover":false,"fileUpload":false,"desc":"For Connecting to CAI WebControl 8 or WebControl 32 server 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/production/WebControl832_v1.0.6.zip"}],"eisy":true,"uuid":"8c3e7969-8b70-4b39-b900-8b3e0ac35c77","ts_updated":1741534116},{"docs":"https://github.com/firstone/eisy-ir-poly/blob/main/README.md","longPoll":60,"executable":"eisy_ir.py","status":"active","devd":"{ \"filename\": \"flirc-pg3.conf\" }","name":"eISYIR","language":"python3","isyAccess":false,"developer":"firstone@erissoft.com","ip_added":"100.37.48.27","nsInfoPoll":0,"logLevel":"DEBUG","ts_added":1676606064,"shortPoll":15,"author":"FirstOne","discover":false,"fileUpload":false,"desc":"Add IR receiver functionality to eISY/Polisy via Flirc IR receiver","polisy":true,"license":"https://github.com/firstone/eisy-ir-poly/blob/main/LICENSE","authorize":false,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"day","price":0,"recurring":30,"edition":"Free","id":"daf78145-0c39-46ec-99ca-291c64fcd02e","isTrial":true,"version":"1.3.2","branch":"main","url":"https://github.com/firstone/eisy-ir-poly"},{"price":20,"edition":"Standard","id":"cba4af3a-33a7-4283-8f49-91f5a2aaeeb0","isPerpetual":true,"version":"1.3.2","branch":"main","url":"https://github.com/firstone/eisy-ir-poly"}],"eisy":true,"uuid":"10f42418-488b-4740-b6fb-caa2694d14b4","ts_updated":1740019475},{"docs":"https://casambi.com","longPoll":600,"executable":"casambi.py","status":"active","devd":"{\n\"filename\":\"casambi.conf\"\n}","name":"Casambi","language":"python3","isyAccess":false,"developer":"kyriacou92@gmail.com","ip_added":"96.246.176.74","nsInfoPoll":0,"logLevel":"INFO","ts_added":1755708418,"shortPoll":60,"author":"Casambi Oy.","discover":false,"fileUpload":false,"customParams":"{\n\"serial port\":\"\"\n}","desc":"OpenADR interface to Casambi Lighting Controls.","polisy":false,"license":"https://casambi.com","changelog":"Version 1.0.0. - Initial Beta Test\nVerison 1.1.0. - Bug Fixes","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"27c4c681-d690-401a-afcc-0b63efba81ef","isPerpetual":true,"version":"1.1.2","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/casambiadr_1.1.2.tar.gz"}],"eisy":true,"uuid":"c0379c67-61d3-40d2-9da5-774515000706","ts_updated":1762450075},{"docs":"https://github.com/BME-nodeservers/udi-backup-poly/README.md","longPoll":60,"executable":"backup.py","readme":"No configuration necessary","status":"active","name":"Backup","language":"python3","isyAccess":true,"developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":0,"logLevel":"ERROR","ts_added":1620318989,"shortPoll":5,"author":"Bob Paauwe","discover":false,"desc":"Save and restore lighting type device status","polisy":true,"license":"https://github.com/BME-nodeservers/udi-backup-poly/LICENSE","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"79c48a8f-c56f-4fc1-8393-c3e29edfceaf","isPerpetual":true,"version":"2.0.4","branch":"master","url":"https://github.com/BME-nodeservers/udi-backup-poly.git"}],"eisy":true,"uuid":"eeecfdd1-65df-4ebd-aeec-8bb9613fb77d","ts_updated":1707760979},{"docs":"https://github.com/PG3Plugins/udi-av-poly/blob/master/README.md","longPoll":60,"executable":"udi-av-poly.py","status":"active","name":"AVServer","language":"python3","isyAccess":false,"developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":0,"logLevel":"INFO","ts_added":1650392232,"shortPoll":10,"author":"Brad Whitted","discover":false,"fileUpload":false,"desc":"Generic A/V Node Server that supports unsolicited status responses from the devices. Currently supports Pioneer VSX-1021, Sony Bravia XBR-65X810C.","polisy":true,"license":"https://github.com/PG3Plugins/udi-av-poly/blob/master/LICENSE","authorize":false,"install":"install.sh","purchaseOptions":[{"edition":"Free","version":"3.0.0","price":0,"branch":"master","isPerpetual":true,"id":"db38e29c-630d-4661-8fc9-7331e0cfb01e","url":"https://github.com/PG3Plugins/udi-av-poly"}],"eisy":true,"uuid":"efaa8e95-a04b-4732-ab05-52588e8187d1","ts_updated":1788213673},{"docs":"https://developer.isy.io","longPoll":600,"executable":"modbus.py","readme":"Define the JSON Schema and you are done.","status":"active","name":"ModbusTCP","language":"python3","isyAccess":false,"developer":"tech@universal-devices.com","ip_added":"76.221.133.84","nsInfoPoll":0,"logLevel":"INFO","ts_added":1725223267,"shortPoll":60,"author":"UD","discover":false,"fileUpload":true,"customParams":"{\n\"host\": \"The ip address of the Modbus device\",\n\"port\": \"The port for the Modbus device (usually 502)\"\n}","desc":"Modbus TCP allows you to define your Modbus registers in a JSON file, upload it and leave the rest to IoX. No coding is necessary. \nMake sure the file is named modbus.iox_plugin.json","polisy":true,"license":"https://developer.isy.io","changelog":"1.0.7- cleanup.\n1.0.8- Using the latest ioxplugin code.\n1.0.9- Updated to meet the new pymodbus interface.","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"ee1d1ccc-37bc-43cb-be0e-5492dda37002","isPerpetual":true,"version":"1.1.0","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/modbus-1.1.0.tar.gz"}],"eisy":true,"uuid":"96db65b9-8a2b-410c-87f7-a7ca7afab863","ts_updated":1764628743},{"docs":"https://github.com/awysocki/PMatter/blob/main/README.md","longPoll":600,"executable":"pmatter.py","readme":"# PMatter\n\nPMatter is a Polyglot v3 (PG3) node server for eISY / IoX that connects to an existing Matter WebSocket server running elsewhere on the network and exposes the discovered devices as ISY nodes.\n\nThis project is not a standalone Matter server. It is an integration layer: it expects an upstream implementation such as `python-matter-server` or `matterjs-server` to already be running and reachable over the network.\n\n## What it does\n\n- Connects to a Matter server over WebSocket\n- Discovers Matter nodes and endpoints automatically\n- Creates an ISY child node for each supported on/off endpoint\n- Supports dimmable devices using the Matter LevelControl cluster\n- Subscribes to live `attribute_updated` events and pushes updates back to ISY\n- Handles standard commands such as ON, OFF, TOGGLE, QUERY, BRIGHTEN, DIM, and FAST ON/OFF\n- Reads common power/energy metrics from compatible devices when exposed by the upstream server\n\n## Supported device behavior\n\nThe current implementation is geared toward simple Matter devices and dimmers, especially the kinds of devices commonly used in home automation scenarios such as plugs, switches, and bulbs. It has been tested with real-world Tapo devices and is designed to work with the same basic Matter server payloads used by the upstream websocket API.\n\n## Setup\n\n1. Run a Matter server on a machine your eISY can reach over the network.\n2. Add your devices to that Matter server and ensure they are online.\n3. Install the PMatter PG3 app to your eISY.\n4. Open the PG3 configuration for PMatter and set the Matter server `host` and `port`.\n5. Save the configuration and restart the node server.\n6. PMatter will connect, subscribe to live events, and discover devices automatically.\n\n## Configuration\n\nIn the PG3 / Polyglot dashboard, configure:\n\n- `host`: IP address of the machine running the upstream Matter WebSocket server\n- `port`: WebSocket port of that server (defaults to `5580` if left blank)\n\nOnce configured, the controller node connects, subscribes to live updates, and creates device nodes as endpoints are discovered. You can use the Controller node''s `Discover` command to rescan for new devices at any time.\n","status":"active","name":"PMatter","language":"python3","isyAccess":false,"developer":"awysocki@absoftware.com","ip_added":"47.181.21.108","nsInfoPoll":0,"logLevel":"INFO","ts_added":1788466203,"shortPoll":60,"author":"Andy Wysocki","discover":false,"fileUpload":false,"desc":"PMatter is a Polyglot v3 (PG3) node server for eISY / IoX that connects to an existing Matter WebSocket server running elsewhere on the network and exposes the discovered devices as ISY nodes.\n\nThis project is not a standalone Matter server. It is an integration layer: it expects an upstream implementation such as python-matter-server or matterjs-server to already be running and reachable over the network.","polisy":true,"license":"https://github.com/awysocki/PMatter/blob/main/LICENSE","changelog":"2026.9.12 - Added support for Klippbok - water sensor, Alpstuga - Airquality, Grillplats - Plug w/ wattage and MYGGBETT door sensor\n2026.9.10 - Added support for myggspray motion/light sensor\n2026.9.9 - Updates for buttons ST is any button pressed or double pressed or hold.  GV0,GV1 top/bottom or center button presses\n2026.9.8 - Rename MNode to PMatt ## where ## is the slot from the matter server\n2026.9.6 - Added support for Bilresa with scroll\n2026.9.5 - Support for Ikea Timmerflotte\n2026.9.4 - Final fixed for IKEA Bilresa, single, double long press\n2026.9.3 - Support for IKEA Bilresa buttons\n2026.9.1 - Reconnect to matter server if channel is lost.\n2026.8.20 - Initial release","authorize":false,"install":"install.sh","purchaseOptions":[{"branch":"main","price":0,"version":"2026.9.12","isPerpetual":true,"id":"374790c6-145c-4dfb-ad0e-bd47024df157","edition":"Free","url":"https://github.com/awysocki/PMatter/"}],"eisy":true,"uuid":"ddcaf407-ee04-445f-85b6-8325e4aa3634","ts_updated":1789767321},{"docs":"https://goose66.github.io/nsdocs/evldsc-pg3.html","longPoll":600,"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","isyAccess":false,"developer":"kingwrandy@gmail.com","ip_added":"107.217.194.133","nsInfoPoll":0,"logLevel":"INFO","ts_added":1647394470,"shortPoll":30,"author":"W. Randy King (Goose66)","discover":false,"fileUpload":false,"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.2.10 - User Code for Disarming (2025-06-27)\n\n3.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,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"month","price":0,"recurring":1,"edition":"Free","id":"b095b8aa-c176-42cb-9fc7-5dba16333eda","isTrial":true,"version":"3.2.10","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/evldsc-pg3-3.2.10.zip"},{"price":10.95,"edition":"Standard","id":"cb5261dd-46c6-4776-aa8d-d3c157958b33","isPerpetual":true,"version":"3.2.10","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/evldsc-pg3-3.2.10.zip"}],"eisy":true,"uuid":"464db346-da2f-4249-9046-8d86d0e6c09c","ts_updated":1750981607},{"docs":"https://github.com/UniversalDevicesInc-PG3/udi-govee-nodeserver/blob/main/README.md","executable":"govee_poly.py","status":"active","name":"Govee","language":"python3","desc":"Control Govee Wifi led strip","developer":"jf.tremblay@gmail.com","install":"install.sh","ip_added":"74.14.175.171","purchaseOptions":[{"price":0,"edition":"Free","isPerpetual":true,"id":"bdc41f7a-3d16-40e3-a5b7-e9840520e63e","branch":"main","version":"3.0.0","url":"https://github.com/UniversalDevicesInc-PG3/udi-govee-nodeserver.git"}],"uuid":"c64ce884-5ed9-4017-94ca-de537644e72e","logLevel":"DEBUG","ts_added":1635516205,"ts_updated":1635516205,"author":"AutomationGeek"},{"docs":"https://github.com/BME-nodeservers/docs/blob/master/udi-owm-poly.md","longPoll":6000,"executable":"owm.py","readme":"<b>OpenWeatherMap weather service plug-in</b>\n<p>\nNOTICE - version 4.0.0 of the plug-in has changed which OpenWeatherMap API is used for current conditions and forecast.  This version is not compatible with older API keys.  <i>You will need to generate a new OpenWeatherMap API key for this version.</i>\n<p>\nThis plug-in uses the OpenWeatherMap weather service to obtain current\nweather conditions and forecast weather conditions data.\n<p>\nThis data may be used in IoX programs as trigger conditions.\n<p>\nTo access data from the OpenWeatherMap weather service you will need an \naccount with openweathermap.org and a subscription to their weather service.\n<p>\nThe plug-in works only with the \"One Call 3.0\" subscription plan and not any of the plans that are part of the \"Professional Collections\".  More information\non the subscription plans and costs are available at\n[OpenWeatherMap](http://openweathermap.org/api)\n<p>\nThe \"One Call 3.0\" subscription plan allows for a limited number of \"Free\" \nAPI calls per day. The current limit is 1000 which means that the short poll\ninterval must be configured to at least 87 seconds.  The default value is 600 \nseconds.\n<p>\nTo get data more often that once every 87 seconds, you will need to pay OpenWeatherMap for additional calls.\n","status":"active","name":"OpenWeatherMap","language":"python3","isyAccess":false,"developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":0,"logLevel":"WARNING","ts_added":1626041340,"shortPoll":600,"author":"Bob Paauwe","discover":false,"fileUpload":false,"customParams":"{\n                \"APIkey\": \"\",\n                \"Location\": \"\",\n                \"Units\": \"imperial\",\n                \"Forecast Days\": 0,\n                \"Elevation\": 0,\n                \"Plant Type\": 0.23\n        }\n","desc":"Add weather data from OpenWeatherMap.org. Includes current conditions and daily forecasts","polisy":true,"license":"https://github.com/BME-nodeservers/docs/blob/master/LICENSE","changelog":"4.0.3 - display server errors as a notice.\n4.0.2 - back out previous change.\n4.0.1 - pop in forecast is now 0-1 instead of percent (3.0 api change)\n4.0.0 - Switch to OpenWeatherMap OneCall 3.0 API\n3.1.8 - More fixes for forecast rain/snow\n3.1.7 - Fix forecast rain/snow parsing\n3.1.6 - Add forecast icon URL as a driver\n3.1.5 - validate forecast days parameter","authorize":false,"install":"install.sh","purchaseOptions":[{"price":25,"edition":"Standard","id":"dfb68c01-79a5-4a07-a59b-bb9a1f5ad852","isPerpetual":true,"version":"4.0.3","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/udi-owm-poly.zip"}],"eisy":true,"uuid":"176fe373-5372-45c0-86c1-53ac0a35fbc2","ts_updated":1733364117},{"docs":"https://github.com/PG3Plugins/udi-blue-iris-poly/blob/master/README.md","longPoll":60,"executable":"blue-iris-poly.py","status":"active","name":"BlueIris","language":"python3","isyAccess":false,"developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":0,"logLevel":"INFO","ts_added":1650408403,"shortPoll":2,"author":"Brian Feeney","discover":false,"fileUpload":false,"customParams":"{\n          \"host\": \"\",\n          \"user\": \"\",\n          \"password\": \"\"\n  }","desc":"Blue Iris UDI ISY Polyglot v3 Node Server","polisy":true,"license":"https://github.com/PG3Plugins/udi-blue-iris-poly/blob/master/LICENSE","authorize":false,"install":"install.sh","purchaseOptions":[{"isPerpetual":true,"id":"56ffc639-f7b2-4c42-ad21-3a6d222edb43","edition":"Free","price":0,"version":"2.0.5","url":"https://github.com/PG3Plugins/udi-blue-iris-poly","branch":"master"}],"eisy":true,"uuid":"bffcf8d8-f0e7-4e64-a662-1ca53314525a","ts_updated":1788213832},{"docs":"https://github.com/BME-nodeservers/docs/blob/master/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","name":"MagicHome","language":"python3","isyAccess":false,"developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":0,"logLevel":"INFO","ts_added":1655744116,"shortPoll":30,"author":"Bob Paauwe","discover":true,"fileUpload":false,"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/blob/master/license.md","changelog":"1.0.4 - Add bulb type 6, a rgbw strip controller","authorize":false,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"day","price":0,"recurring":31,"edition":"Free","id":"0ea53ff0-3fbe-4971-b8f5-ebcef36b6614","isTrial":true,"version":"1.0.4","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/udi-magic-poly.zip"},{"price":10,"edition":"Standard","id":"b1745309-6efc-4934-a79a-934663902e43","isPerpetual":true,"version":"1.0.4","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/udi-magic-poly.zip"}],"eisy":true,"uuid":"7b031b27-643b-4678-ae54-cc63c346436b","ts_updated":1738883640},{"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","developer":"gordon@the-larsens.ca","ip_added":"24.68.122.19","nsInfoPoll":0,"logLevel":"INFO","ts_added":1634866564,"shortPoll":30,"author":"Gordon Larsen","discover":false,"customParams":"{\"Hostname\": \"\", \"Password\": \"\",  \"Units\": \"metric\", \"Active_Only\": \"False\"}","desc":"Nodeserver 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":"d22670f6-545f-40b3-bd0b-f14ca04d8bb0","isPerpetual":true,"version":"3.2.1","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/udi-poly-rainmachine.zip"}],"eisy":true,"uuid":"34c8bcc3-2bb9-4887-a5f3-cfd278ea14bf","ts_updated":1681593946},{"docs":"POLYGLOT_CONFIG.md","longPoll":600,"executable":"udi-mqtt-pg3x.py","readme":"Plugin for EISY/Polisy (eisy-ui or PG3 environment) that bridges an MQTT broker to ISY. It discovers devices from inline JSON (devlist) or a YAML device file (devfile) and creates ISY nodes for Tasmota switches, dimmers, fans, flags, and energy monitors; Tasmota and other sensors (DHT, DS18B20, BME280, analog, distance); Shelly Flood, ratgdo garage doors, RGBW strips, Droplet flow sensors; and custom raw or multi-sensor nodes. Device state is published to ISY status drivers; commands are sent to MQTT command topics for use in programs and scenes.","status":"active","name":"MQTT","language":"python3","isyAccess":false,"developer":"stephenearljenkins@me.com","ip_added":"181.128.78.95","nsInfoPoll":0,"purchaseOptionsBeta":[{"recurringPeriod":"year","isTrial":true,"price":0,"url":"https://github.com/UniversalDevicesInc-PG3/udi-mqtt-pg3x","recurring":1,"branch":"beta","id":"d3ac0235-9333-4a14-a4fc-51241bc4f757","version":"0.50.11","edition":"Beta"}],"logLevel":"INFO","ts_added":1713370916,"shortPoll":60,"author":"Headrom/TriLife","discover":true,"fileUpload":true,"customParams":"{\"mqtt_server\":\"localhost\",\"mqtt_port\":\"1884\",\"mqtt_user\":\"\",\"mqtt_password\":\"\",\"devfile\":\"/usr/home/admin/YOUR-YAML.yaml\"}\n","desc":"Virtual devices for use in scenes, programs.","license":"LICENSE","changelog":"## 0.50.11\n\n- **Fix config overwrite on update**: stop re-injecting example devlist/devfile and MQTT defaults on every parameter load; clear `customParams` in `server.json` so plugin updates do not reset saved Polyglot configuration\n- **Clear waiting notice** when discovery or MQTT connection fails\n\n## 0.50.10\n\n- Fix stop() crash on early shutdown: remove legacy mqttc teardown path that raised AttributeError when discovery failed before the MQTT bridge was created (common during eisy-ui config)\n\n## 0.50.9\n\n- Clear MQTT waiting notice promptly after broker connects: drain Paho callbacks at startup and at DISCOVER so \"Waiting on user MQTT connection\" does not linger for a full poll cycle when the broker is already up\n\n- Fix devfile path resolution: bare filename (e.g. virtualconfig.yaml) resolves to data/<name>; empty devfile no longer silently loads mqtt-devices.yaml — use an explicit devfile or devlist\n\n- Fix startup log (was incorrectly labeled \"Virtual Devices\")\n\n- PG3 store manifest server.json) with executable udi-mqtt-pg3x.py — use Update from the store\n\n- Rename entry script from mqtt-poly.py to udi-mqtt-pg3x.py\n\n- Standard bootstrap (error handling; version in VERSION / profile/version.txt / server.json)\n\n- Developer toolchain: uv, pytest profile sync test, Makefile, CONTRIBUTING (runtime install unchanged: install.sh + requirements.txt)\n\n","authorize":false,"install":"install.sh","purchaseOptions":[{"isPerpetual":true,"url":"https://github.com/UniversalDevicesInc-PG3/udi-mqtt-pg3x","id":"b1313f7c-a92c-4238-aa2c-c0e49b3f8b6e","branch":"production","version":"0.50.11","edition":"Free","price":0}],"uuid":"6016023b-ebfc-4602-90c6-79bdc755aa4b","ts_updated":1788984686.237},{"docs":"https://github.com/sjpbailey/Documentation/blob/main/BASpi%20Pool/README.md","longPoll":240,"executable":"BASPOOL.py","status":"active","name":"BASPOOL","language":"python3","isyAccess":false,"developer":"sjpbailey@comcast.net","ip_added":"73.116.163.37","nsInfoPoll":120,"logLevel":"INFO","ts_added":1631762486,"shortPoll":120,"author":"Steven Bailey","discover":false,"customParams":"{\n\t\t\"nodes\": \"1\",\n\t\t\"poolip_0\": \"127.0.0.1\",\n\t\t\"poolip_1\": \"\",\n\t\t\"poolip_2\": \"\",\n\t\t\"poolip_3\": \"\",\n\t\t\"poolip_4\": \"\",\n\t\t\"poolip_5\": \"\"\n}","desc":"Universal Devices Wifi Ethernet Pool Controller using the Contemporary Controls BASpi-6u6r or the BASpi-Edge-6u6r control Devices. \nYou can have up to (6) pools using this Node Server and it is a great fit for a conventional Time Clock controlled pool upgrades.\nPlease see GitHub documentation for details on setup.\nNOTE- If inputs read \"nan\" in the info log file they will show their last state and are misconfigured on the BASpi Device. ","polisy":true,"license":"https://github.com/sjpbailey/Documentation/blob/main/BASpi%20Pool/LICENSE","changelog":"Nov 25, 2023\n1. moved images to documents repository\n2. added online status","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"e25ab269-0585-4691-9904-3c5649b698c9","isPerpetual":true,"version":"3.0.2","branch":"master","url":"https://github.com/sjpbailey/udi-poly-baspool-python-master-v3"}],"eisy":true,"uuid":"169cb709-9623-4f5a-bc8a-c484660c7506","ts_updated":1700947906},{"docs":"README.md","longPoll":600,"executable":"udiSpan.py","readme":"# udi-SpanIO -  for Polyglot v3 \n\n## SpanIO power Panel Node server\n# udi-TeSpanIO  -  for Polyglot PG3x\n## SpanIO Node server\n\nThis node server enables , monitors and controls of one or more SpanIO power panels in a system.\nThe nodes uses an unofficial derived API for local access to the panel - documentation exist at https://gist.github.com/hyun007/c689fbed10424b558f140c54851659e3 although it is not 100% up to date.\n\nThe node creates a separate node used to show the node is running and the number of SpanIO panels in the system.  Each panel is instantiated as a main node (named as IP address without '.'s).  Each group (one or more breakers) are created as a sub-note.  The node allows opening and closing the breaker (relay in the panel - not the main breaker).  The API supposedly supports changing the priority of the breaker, but in generates an internal error, so it is not exposed to user fopr now\nThe configuration takes a list of IP addresses (space separated) - Only use 1 IPaddress per panel (they have up to 3 IPaddresses per panel) (ideally ethernet if available).  It is important that the IP address does not change.  \nThere is also a flag to enable reading of a backup battery (percentage) if supported \n\nThe nodes provides power consumption data, breaker state as well as some connection status information.  Exported Energy \n\n## Installation\nTo register the panel(s), one must start the node and then go to the panel, open the door and press the door contact (upper corner) 3 times (quickly) - the panel should then blink the light and it will go into register mode. Do this for all panels if more than 1 panel is installed \n\nAfter this nodes will be generated and will start operating.   \n\n## Notes \nThe node has not been tested with ore than 1 SpanIO panel - there are likely bugs when using more than 1 - please enable debug and send me log files if there are issues\nPower on the breaker results in 2 numbers for energy - Exported and Imported (Exported is exported from breaker panel to house circuits) - Imported energy is a return flow (My guess)\nEnergy last Hour/Day will not show data until the node has been running for a hour/day\n\nshortPoll updates critical parameters and issues a heartbeat for each panel(Connection to grid and battery % - no update on circuits) \nlongPoll updates all data for each panel \n\n\n\n","status":"active","name":"SpanIO","language":"python3","isyAccess":false,"developer":"christian.olgaard@gmail.com","ip_added":"73.93.40.59","nsInfoPoll":0,"logLevel":"INFO","ts_added":1736442536,"shortPoll":60,"author":"Panda88","discover":false,"fileUpload":false,"customParams":"{\"LOCAL_IP_ADDRESSES\":\"x.x.x.x\",\"BACKUP_BATTERY\":\"TRUE/FALSE\"}","desc":"Node to support SpanIO smart power panels.  ","polisy":true,"license":"LICENSE","changelog":"0.1.21 - Fixed some profile definition causing issues in eisy-ui.  moved to dynamiic profiles\n0.1.15 - Some bugfixes if data not reported around midnight.  Do not enable debug mode unless needed - some time generates too much traffic for PG3 handle when switching day\n0.1.10 - Initial release - multiple SPAN panels not tested","authorize":false,"install":"install.sh","purchaseOptions":[{"branch":"REL20261001","edition":"Standard","price":10,"isPerpetual":true,"url":"https://github.com/Panda88CO/udi-SpanIO","id":"fa37dc62-cde9-4aca-b4a0-0fbfe4daec34","version":"0.1.21"},{"branch":"REL20261001","version":"0.1.21","url":"https://github.com/Panda88CO/udi-SpanIO","id":"7d42971c-247e-4f51-ab5b-a6ec2eae7052","edition":"Standard","price":0,"recurring":15,"isTrial":true,"recurringPeriod":"day"}],"eisy":true,"uuid":"02cfe3bd-f1d5-4fd4-ae5f-3d83228c144d","ts_updated":1791235759},{"docs":"https://github.com/jamespauly/udi-acurite-poly","longPoll":120,"executable":"udi-acurite-poly.py","discover":false,"status":"active","name":"Acurite","language":"python3","desc":"A Node Server for retrieving AcuRite Access Remote data for AcuRite devices","developer":"jgpaul16@gmail.com","authorize":false,"install":"install.sh","ip_added":"76.236.222.131","purchaseOptions":[{"price":0,"edition":"Free","isPerpetual":true,"id":"2313a413-b098-4861-93eb-7b19f514421b","branch":"master","version":"2.2.0","url":"https://github.com/jamespauly/udi-acurite-poly.git"}],"nsInfoPoll":0,"logLevel":"INFO","uuid":"ce446b22-650b-4774-a296-b6ea90bed87d","ts_added":1633554743,"shortPoll":60,"ts_updated":1655385394,"author":"James Paul"},{"docs":"https://github.com/Goose66/NSDocs/blob/main/venstar-pg3.md","longPoll":150,"executable":"main.py","readme":"A Node Server for Polyglot v3 that interfaces to Venstar Wi-Fi (ColorTouch and Explorer series) series thermostats through a local API.\n\nClick \"More Info\" below for instructions and release notes.\n\n","discover":true,"status":"active","name":"VenstarCT","language":"python3","desc":"Accesses Venstar Wi-Fi (ColorTouch and Explorer series) thermostats through a local API. ","developer":"kingwrandy@gmail.com","changelog":"See \"More Info\"","authorize":false,"install":"install.sh","ip_added":"24.178.79.63","purchaseOptions":[{"recurringPeriod":"month","price":0,"recurring":1,"edition":"Standard","id":"05cc4cc4-406d-46a0-8a80-1582d54d344f","isTrial":true,"version":"3.0.11","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/venstar-pg3-3.0.11.zip"},{"price":10.95,"edition":"Standard","id":"0d9150a8-73ea-44e4-8a57-d31784a84bb3","isPerpetual":true,"version":"3.0.11","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/venstar-pg3-3.0.11.zip"}],"nsInfoPoll":0,"logLevel":"INFO","uuid":"639a432c-972f-4b09-a168-0225f01d08a0","ts_added":1666033377,"shortPoll":20,"ts_updated":1670106889,"author":"W. Randy King (Goose66)"},{"docs":"https://forum.universal-devices.com/forum/324-itach-ir/","longPoll":600,"executable":"initializer.py","status":"active","name":"iTach-IR","language":"python3","isyAccess":false,"developer":"javier@universal-devices.com","ip_added":"75.166.45.142","nsInfoPoll":0,"logLevel":"INFO","ts_added":1642890988,"shortPoll":60,"author":"Javier Refuerzo","discover":false,"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\\\",,\"}","desc":"iTach IR.","polisy":true,"license":"https://github.com/JavierRefuerzo/iTach_IR_Node_Server/blob/main/LICENSE","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"1f9203aa-89f8-4d7a-a8d6-f5d45cdcf148","isPerpetual":true,"version":"2023.1.9","branch":"main","url":"https://github.com/JavierRefuerzo/iTach_IR_Node_Server.git"}],"eisy":true,"uuid":"60f7f035-0f0b-4a7c-8b65-457525b90a50","ts_updated":1694220986},{"docs":"https://github.com/PG3Plugins/udi-plex-poly/blob/master/README.md","longPoll":300,"executable":"plex-poly.py","status":"active","name":"Plex-WebHook","language":"python3","isyAccess":false,"developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":0,"logLevel":"INFO","ts_added":1650398998,"shortPoll":30,"author":"Chad Hoevenaars","discover":false,"fileUpload":false,"customParams":"{\n\t\"port\": 9090,\n\t\"rapid_trigger\": 0\n}","desc":"Service to received Plex Webhooks and relay information to ISY","polisy":true,"license":"https://github.com/PG3Plugins/udi-plex-poly/blob/master/LICENSE","authorize":false,"install":"install.sh","purchaseOptions":[{"id":"47c2ecbe-b1f9-491d-823d-4e6fe29495d9","version":"2.0.1","isPerpetual":true,"branch":"master","price":0,"url":"https://github.com/PG3Plugins/udi-plex-poly","edition":"Free"}],"eisy":true,"uuid":"dbfcfb8b-4a2c-43bc-9092-4cb45c2e4a29","ts_updated":1788213964},{"docs":"https://github.com/sjpbailey/Documentation/blob/main/BASpi%20Garage/README.md","longPoll":120,"executable":"BAS-Garage.py","status":"active","name":"BASGARAGE","language":"python3","isyAccess":false,"developer":"sjpbailey@comcast.net","ip_added":"73.116.163.37","nsInfoPoll":0,"logLevel":"INFO","ts_added":1629619303,"shortPoll":60,"author":"Steven Bailey","discover":false,"customParams":"{\n\t\t\"door_ip\": \"127.0.0.1\"\n\t}","desc":"WiFi Controlled Garage door opener momentary push button duplicator, with optional local camera for up to six (6) doors.\nThis is designed to work with the BASPI-6U6R Device if you use a BASpi-6U4R2AO it will only give you four (4) possible doors.\nNOTE- If inputs read \"nan\" in the info log file they will show their last state and are misconfigured on the BASpi Device. ","polisy":true,"license":"https://github.com/sjpbailey/Documentation/blob/main/BASpi%20Garage/LICENSE","changelog":"Nov 25, 2023\n1. removed images from plugin repository. \n2 changed document and license locations.\n3. added online status to node.","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"a7d71ae1-110c-4ccd-98d2-e2bc6803f765","isPerpetual":true,"version":"3.0.7","branch":"master","url":"https://github.com/sjpbailey/udi-poly-basgarage-python-master-v3"}],"eisy":true,"uuid":"5d2a32b6-beb8-4b78-a141-c21d01bab767","ts_updated":1700947921},{"docs":"https://github.com/UniversalDevicesInc-PG3/udi-poly-FlumeWater/blob/master/README.md","longPoll":240,"executable":"flumewater-poly.py","status":"active","name":"FlumeWater","language":"python3","isyAccess":false,"developer":"jimsearle@gmail.com","ip_added":"72.194.105.190","nsInfoPoll":0,"logLevel":"DEBUG","ts_added":1629592422,"shortPoll":30,"author":"Jimbo.Automates","discover":true,"fileUpload":false,"desc":"FlumeWater Nodeserver","polisy":true,"license":"TBD","changelog":"- 3.1.1: 07/21/2024\n  - Fix version number\n- 3.1.0: 05/20/2024\n  - Fix [Possible leak Alert](https://github.com/UniversalDevicesInc-PG3/udi-poly-FlumeWater/issues/8)\n- 3.0.15: 06/06/2022\n  - Fix long_poll not updating values\n- 3.0.14: 06/05/2022\n  - Rework trapping of invalid_token error to completely restart and get a new token\n- 3.0.13: 05/07/2022\n  - Trap when reconnect is attempted when already running\n  - Proper trapping of RemoteDisconnected error\n- 3.0.12: 04/16/2022\n  - More fixes to catching exceptions\n- 3.0.11: 04/13/2022\n  - Rework startup sequence due to PG3 race condition for setting drivers.\n- 3.0.10: 04/04/2022\n  - Add missing load of re so checking for invalid_token doesn't croak\n  - Force latest udi_interface\n- 3.0.9: 03/16/2022\n  - Fix bug in trapping authorization error from previous release.\n- 3.0.8: 02/26/2022\n  - Try to trap connection and authorization problems, see documentation above.\n    - [\"Invalid Token\" Data stopped being sent to ISY](https://github.com/UniversalDevicesInc-PG3/udi-poly-FlumeWater/issues/6)\n- 3.0.7: 02/15/2022\n  - Allow Query on Flume Sensor\n- 3.0.6: 02/15/2022\n  - Fix log message to report values after querying Flume\n  - Fix controller to not poll all nodes\n- 3.0.5: 02/04/2022\n  - Add traceback when there is an error from pyflume to help debug issues\n- 3.0.4: 01/10/2022\n  - Fix setting initial params\n- 3.0.3: 12/26/2021\n  - Added conn_status to Controller so ST is properly set\n    - Existing users will need to delete the controller node in the Polyglot UI and restart the NS\n- 3.0.2: 11/05/2021\n  - Works with udi_interface 3.0.22\n- 3.0.1: 11/03/2021\n  - Log levels all working with new methods\n- 3.0.0: 08/21/2021\n  - First Polyglot V3 release\n- 2.0.7: 03/10/2021\n  - Add --upgrade to pip3 install\n- 2.0.6:\n  - Improve error trapping and show error message\n- 2.0.5:\n  - Trap failure to authorize and print the error\n  - Added Authorization Status with driver\n    - Users on PGC need to delete and re-add nodeserver to see it properly\n- 2.0.4\n  - Minor profile fix for UD Mobile App.\n- 2.0.3\n  - Proper error trapping for defining scan_interval\n- 2.0.2\n  - Many fixes for PGC\n- 2.0.1\n  - Fixed precision on values\n- 2.0.0\n  - Initial Version\n","authorize":false,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"month","price":0,"recurring":1,"edition":"Free","id":"c75774d7-a6ef-4bc2-93b7-948a629d6b43","isTrial":true,"version":"3.1.1","branch":"","url":"http://pg3store.isy.io/v2/nodeservers/production/FlumeWater.zip"},{"price":10,"edition":"Standard","id":"731353c7-6151-4d79-a92b-29133377ec78","isPerpetual":true,"version":"3.1.1","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/FlumeWater.zip"}],"eisy":true,"uuid":"3437f14b-7a1c-4361-815f-91476a627007","ts_updated":1722633007},{"docs":"https://github.com/BME-nodeservers/docs/blob/master/udi-emporia-vue-poly.md","longPoll":60,"executable":"vue.py","readme":"<h1>emporia VUE</h1>\n\nThis is a node server to pull energy meter data from the emporia VUE servers and make it\navailable to a [Universal Devices ISY994i](https://www.universal-devices.com/residential/ISY)\n[Polyglot interface](http://www.universal-devices.com/developers/polyglot/docs/) with \nPolyglot V3 running on a [Polisy](https://www.universal-devices.com/product/polisy/)\n<br>\n(c) 2021,2022 Robert Paauwe\n\n<h2>Node Settings</h2>\nThe settings for this node are:\n<ul>\n<li>Short Poll -  How often to poll for current energy data (in seconds)\n<li>Long Poll - How often to poll for daily energy data (in seconds)\n</ul>\n\n<h2>Custom Parameters</h2>\n<ul>\n <li>username - your emporia VUE account user name\n <li>password - your emporia VUE account password\n</ul>\n\n","status":"active","name":"VUE","language":"python3","isyAccess":false,"developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":0,"logLevel":"ERROR","ts_added":1626393394,"shortPoll":10,"author":"Bob paauwe","discover":false,"customParams":"{\n            \"Username\" : \"\",\n            \"Password\" : \"\"\n    }","desc":"Node server for Emporia VUE Energy Monitors.  Works with Vue 2, Vue SmartMeter, Vue Outlets, and Vue Electric Vehicle chargers.  Allows you to monitor usage and control outlets and chargers.","polisy":true,"license":"https://github.com/BME-nodeservers/docs/blob/master/LICENSE","changelog":"1.0.24 - Update all node values after node discovery\n1.0.25 - Force sending updates to IoX\n1.0.26 - Add hint to device and channel nodes\n1.0.27 - Improve handling of server errors.","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"ed2ccff9-b1e5-4603-a4c8-fe345a6f6566","isPerpetual":true,"version":"1.0.27","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/udi-emporia-vue-poly.zip"}],"eisy":true,"uuid":"91c07bd2-79fc-4e1b-9352-220108db94d0","ts_updated":1737831228},{"docs":"https://developer.isy.io","longPoll":600,"executable":"bluetooth.py","readme":"Default Bluetooth Service Plugin:\nIt allows you to enable/disable service and scan for, pair, unpair, and forget devices.","status":"active","name":"Bluetooth","language":"python3","isyAccess":false,"developer":"tech@universal-devices.com","ip_added":"76.221.133.84","nsInfoPoll":0,"logLevel":"INFO","ts_added":1710248753,"shortPoll":60,"author":"UD","discover":false,"fileUpload":false,"desc":"Default Bluetooth Service Plugin:\nIt allows you to enable/disable service and scan for, pair, unpair, and forget devices.","polisy":true,"license":"https://developer.isy.io","changelog":"1.0.0 - Initial\n1.0.1 - Fixed UD Mobile crash.\n1.0.4:\n- Fixed disconnects in case of multiple instances\n- Made pair/unpair more stable\n1.0.5:\n- Migration to python 3.11\n1.0.7:\n- Paho mqtt 2.0+\n1.0.8:\n- Paho migration to V2 signatures\n","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"c0c55d0d-9fb8-472f-8099-271c2be07c75","isPerpetual":true,"version":"1.0.8","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/bluetooth-1.0.8.tar.gz"}],"eisy":true,"uuid":"40b26907-c607-4a7d-be8d-86d1776525b2","ts_updated":1760994305},{"docs":"https://github.com/sjpbailey/Documentation/blob/main/BASpi%206U6R/README.md","longPoll":60,"executable":"BAS6U6R.py","readme":"# Universal Devices WiFi IP NodeServer\n\n## Manufacturer Contemporary Controls, WiFi Bacnet IP Control Devices\n\n## BASpi-6U6R and or the BASpi-Edge-SYS6U6R BACnet/IP WiFi/IP\n\n* These controller(s) can be used to control low voltage switchable external devices. Use a Relay interface for any advanced control sequence attached via ethernet or WiFi IP.\n\n## Reasons\n\n* The purpose of this Nodeserver is for conventional control of low voltage systems 24vac or less (relays). Custom control through the ISY for general Home automation for multiple control operations, WiFi, IP, BACnet.\n\n* It utilizes Contemporary Controls BASpi-6U6R or the BASpi-Edge-6U6R BACnet WiFi IP control Modules.\n\n* Have more than one Device? Just edit the parameter \"key\" nodes value to match the number of devices you have, then for each BASpi-6u6r added you will then need to add the IP Address for \"value\" to match each BASpi-6u6r controller, ip_1-6 is already in the key just add your IP Address(es).\n\n* You can add up to six (6) controllers or nodes with this node serer.\n\n* All switching is 24vac or lower for all outputs on the Edge or BASpi-6u6r device! Edge Device has two common buss terminals linked to outputs refer to installation.\n\n* ALL OUTPUTS ARE LOW VOLTAGE 24VAC OR LESS, USE THE APPROPRIATE INTEFACE RELAY FOR SWITCHING ABOVE 24VAC!!\n\n* Please see links below for information & configuration of this Device within Contemporary Controls GUI.\nTypical pool wiring diagram below, used with BASPOOL Node Server.\n\n* This Network BAS series will include in the near future custom home control for Garage Door, Well Pump Control, HVAC, VVT, Boiler, along with any custom control you create utilizing the pip bascontrolns module <https://pypi.org/project/bascontrolns/>.\n\n* This controller sits on a Raspberry Pi. You can easily add it to your ISY after you configure its IP address.\n\n\n### BASpi-SYS6U6R and the BASpi-Edge DIY BacNet Control Device by Contemporary Controls\n\n* Main\n[Contemporary Controls BASpi DIY](https://www.ccontrols.com/basautomation/baspi.htm)\n* BASpi Controller Configuration\n[Contemporary Controls BASpi Configuration Quick Start](https://www.ccontrols.com/pdf/is/BASPI-QSGuide.pdf)\n* BASpi 6U6R Controller\n[Contemporary Controls BASpi Edge 6U6R](https://www.ccontrols.com/basautomation/baspiedge.php)\n* BASpi 6U6R Controller\n[Contemporary Controls BASpi 6U6R](https://www.ccontrols.com/pdf/ds/BASPI-datasheet.pdf)\n* BASpi 6U6R Installation\n[Contemporary Controls BASpi 6U6R Install](https://www.ccontrols.com/pdf/BASpi-hardware-install-guide.pdf)\n* BASpi 6U4R2A Controller\n[Contemporary Controls BASpi 6U4R2A](https://www.ccontrols.com/pdf/ds/BASPI-AO2-datasheet.pdf)\n* BASpi 6U4R2A Installation\n[Contemporary Controls BASpi 6U4R2A Install](https://www.ccontrols.com/pdf/TD180600.pdf)\n\n#### Input Configuration\n\n* You must configure your inputs for the appropriate end devices attached to your inputs, this is done by calling the controllers IP Address from your browser.\n\n[Universal Input Configuration Video](https://www.youtube.com/watch?v=hTd1mR7npP4)\n\n* Python 3.8\n\n* Supported Nodes\n  * Up to 36 Universal Inputs\n  * Up to 36 Binary Outputs\n  \n##### Configuration\n\n###### Defaults\n\n* Default Short Poll:  Every 120 seconds\n* Default Long Poll: Every 4 minutes (heartbeat)\n\n###### Requirements\n\n* requests\n* bascontrolns >= 0.0.3\n* udi_interface\n\n###### User Provided\n\n* Enter the number of pool nodes you desire 0-6\n* Enter your IP address for up to six (6) BASpi-SYS6U6R controller,\n* Config: key = nodes this parameter is provided, Value = (* = 1-6)\n* Config: key = ip_* (* = 1-6) this value is provided, Value = Enter Your BASpi IP Address, Example: key ip_1  value 192.168.1.47\n* Save and restart the NodeServer\n","status":"active","name":"BASPI6U6R","language":"python3","isyAccess":false,"developer":"sjpbailey@comcast.net","ip_added":"98.41.236.33","nsInfoPoll":0,"logLevel":"INFO","ts_added":1679183293,"shortPoll":10,"author":"Steven Bailey","discover":false,"customParams":"{\n\t\t\"nodes\": \"1\",\n\t\t\"ip_1\": \"127.0.0.1\",\n\t\t\"ip_2\": \"\",\n\t\t\"ip_3\": \"\",\n\t\t\"ip_4\": \"\",\n\t\t\"ip_5\": \"\",\n\t\t\"ip_6\": \"\"\n}","desc":"Contemporary Controls BASpi 6U6R low voltage WiFi controller.\nPlease see More information Readme file.\n Please Note! The inputs for this node server are raw values meaning that they do not have unit of measure. Inputs using contact closure will show 1 for shorted and 0 for open!\n\n  These controller(s) can be used to control low voltage switchable external devices. Relay interface for any advanced control sequence attached via ethernet or WiFi IP.\nThe purpose of this Nodeserver is for conventional control of low voltage systems 24vac or less (relays). Custom control through the ISY for general Home automation for multiple control operations, WiFi, IP, BACnet.\nIf you need a custom Node server based on these controllers with 6 universal inputs and 6 low voltage switchable outputs please email: sjpbailey@comcast.net or contact Universal Devices.\nNOTE- If inputs read \"nan\" in the info log file they will show their last state and are misconfigured on the BASpi Device. ","polisy":true,"license":"https://github.com/sjpbailey/Documentation/blob/main/BASpi%206U6R/LICENSE","changelog":"Nov 25, 2023\n1. removed images from repository\n2. updated ReadMe moved to Documents GitHib Repository\n3. added online status","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"d6797d64-e612-4076-8e30-fc02d72bbb6a","isPerpetual":true,"version":"3.0.1","branch":"main","url":"https://github.com/sjpbailey/udi-poly-baspi-6u6r-python-master-v3"}],"eisy":true,"uuid":"c2495b91-e5ce-404e-9d73-ab7723f23ca3","ts_updated":1700947988},{"docs":"https://forum.universal-devices.com/forum/437-audioplayer/","longPoll":600,"executable":"audio-player.py","readme":"Very simple audio player for eisy. It comes with default sounds. For custom sounds:\nFree Version:\nYou are in charge of creating a directory, uploading your music files, and giving read permission either to the plugin user or everyone.\nProfessional Version:\nYou can upload a zip file containing your own files. Thee's a size limit of 20M\n\nFor Bluetooth speaker support, you do need the Professional version of this plugin plus the free Bluetooth plugin. To live stream, update the stations parameter in the following format:\nname===url, name1===url1, name2===url2, ... \n\nIMPORTANT NOTE: you need udx version 3.5.5_5 or above. \n\nFor text to speech, add custom parameters:\nFor the key, the format is:\ntts_<source lang>_<dest_lang>_name for your file\nThe value is the text you wish to speak, i.e.\nHello world\n\nIf your originally crated tts files do not work, rename them by adding a _t at the end of the file name. For instance\nhello_world.mp3 -> hello_world_t.mp3\n\n","status":"active","name":"AudioPlayer","language":"python3","isyAccess":false,"developer":"tech@universal-devices.com","ip_added":"76.221.133.84","nsInfoPoll":600,"logLevel":"INFO","ts_added":1704911980,"shortPoll":60,"author":"Michel Kohanim","discover":false,"fileUpload":true,"customParams":"{\n\"path\": \"the path to the directory for all music\",\n\"stations\": \"the comma separated list of stations. see readme\"\n}\n","desc":"The free version of Mini Audio Player can play mp3 files based on commands. The output is through the earphone jack on the back.\nThe Professional version adds the following capabilities:\n1. Stream to Bluetooth speakers (you need the free Bluetooth plugin)\n2. Stream live streams/stations through the speaker jack and Bluetooth speakers\n3. Change Volume \n4. Easily create text to speech\n5. Upload zip files","polisy":false,"license":"https://developer.isy.io","changelog":"Initial  release \n1.1.0 - Support for Bluetooth speakers, live streams, and volume control\n1.2.0 - Fixes for tts\n1.3.0:\n- More fixes for tts\n- Support for direct tts using gtts\n- Support for direct translations using google translate \n1.3.1:\nFixed UD Mobile parsing issues .\n1.3.3:\n-Enhancements\n-- Remove file using the Admin Console\n-- Upload a zip file (through PG3 dashboard)\n-- Volume now sticks across playbacks\n-- Volume now also works for TTS \n-Fixes\n-- Random disconnects when multiple instances are running\n1.3.4\n-- Migration to python 311\n1.3.5\n-- Paho 2+\n1.3.7\n-- Fix YouTube URL issues\n1.3.8\n-- Paho mqtt to V2\n","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Professional","id":"10726ac8-0534-4ae5-b420-0ac193173365","isPerpetual":true,"version":"1.3.8","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/audio-player-1.3.8.pro.tar.gz"}],"eisy":true,"uuid":"c582beed-644f-44c8-8145-d676b4f035fd","ts_updated":1763495803},{"docs":"https://github.com/BME-nodeservers/docs/blob/master/udi-caseta-poly.md","longPoll":600,"executable":"caseta.py","readme":"Lutron Caseta Node Server\nCopyright(C) 2022 Robert Paauwe\n\nThis node server provides an interface between the [Universal Devices Inc. ISY Controller](https://www.universal-devices.com/residential/ISY)\nand [Lutron Caseta (tm)](https://www.casetawireless.com) SmartBridge and connected devices.\n\nOnce the SmartBridge is paired to the Lutron Caseta Node Server, devices connected to the SmartBridge\nare exposed to the ISY as device nodes.  These devices nodes can then be controlled, integrated into\nscenes and programs.\n\nThis should support all known Caseta devices. If an unknown device type is encounted, it will log \ninformation about that device in the log so that the info may be passed on to the developer.\n\nIn addition, most Lutron automated shade/blind devices should be supported.  \n\nCurrent known devices:\n\n\nPD-5ANS          - switch\nPD-6ANS          - switch\nPD-5NE           - dimmer switch\nPD-6WCL          - dimmer swtich\nPD-FSQN          - fan\nPD-3PCL          - dimmer module\nPD-15OUT         - outdoor plug\nPD-OSENS         - occupancy motion sensor\nPD-VSENS         - vacancy motion sensor\nPJ2-2B-GXX-X01   - Pico 2 button remote\nPJ2-2BRL-GXX-X01 - Pico 2 button raise/lower remote\nPJ2-3B-GXX-X01   - Pico 3 button remote\nPJ2-3BRL-GXX-X01 - Pico 3 button raise/lower remote\nPJ2-4B-GXX-X01   - Pico 4 button remote\nMACL-LFQH        - maestro fan control and light dimmer (TBD)\nCS-YJ-4GC-WH     - 4-Group RF Remote Control\n\nSerena shades\nQS Wireless Shades\nTriathon Shades\n","status":"active","name":"Caseta","language":"python3","isyAccess":false,"developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":0,"logLevel":"ERROR","ts_added":1653410298,"shortPoll":60,"author":"Bob Paauwe","discover":true,"fileUpload":false,"customParams":"{\n\"lutron_bridge_ip\":\"\"\n}","desc":"Integrate with Lutron's Caséta Wireless systems.  Designed specifically to work with the Smart Bridge but should also work with Smart Bridge Pro and possibly RA2 Select.  Supports Shades, Pico Remotes Dimmers, Switches, Plugs and Occupancy Sensors.","polisy":true,"license":"https://github.com/BME-nodeservers/docs/blob/master/LICENSE","changelog":"1.0.10 - Add DivaDimmer DVRF-5NE and PJ2-P2B\n1.0.9 - Add some experimental RA3 support\n1.0.8 - Fix configurable Pico buttons\n1.0.7 - Add support for Serena roller shades","authorize":false,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"day","price":0,"recurring":30,"edition":"Standard","id":"24549856-143d-4241-8e86-8a2708b99a1c","isTrial":true,"version":"1.0.10","branch":null,"url":"https://pg3store.isy.io/v2/nodeservers/production/udi-caseta-poly.zip"},{"price":50,"edition":"Standard","id":"45a21353-f0a8-4910-99f8-83e861b06781","isPerpetual":true,"version":"1.0.10","branch":null,"url":"https://pg3store.isy.io/v2/nodeservers/production/udi-caseta-poly.zip"}],"eisy":true,"uuid":"c07f6ebf-c3e8-4b14-8512-2aeaf55270c2","ts_updated":1761927856},{"docs":"https://github.com/PG3Plugins/udi-shelly-poly/blob/master/README.md","longPoll":600,"executable":"Shelly_RGBW2_Nodeserver.py","readme":"<b>Shelly RGBW2 Polyglot V3 Node Server</b>\n<p>\nThis Nodeserver provides a basic interface between Shelly RGBW2 and Shelly1 devices and Polyglot v3 server.\n<p>\n<b>Installation</b>\n<p>\nThis Nodeserver assumes the Shelly devices are already on your network, can be accessed via IPV4 address from the Polisy or whatever you use to run Polyglot and the devices are not using any form of authentication.\n<p>\nIf there are no entries in the custom configuration the NodeServer, it will look for devices on the network at startup. The Nodeserver gives devices 5 seconds to respond to the discovery request, so this process may seem to take a while. Just be patient and slowly count to 5 :-)</br>\n<p>\n<b>Shelly  Device Setup</b>\n<ul>\n<li>The Shelly device must be on the same network as the ISY and Polyglot server\n<li>The Shelly device must have an IPV4 address\n<li>The Shelly device must be set to be discoverable for the automatic discovery to work (default is to on, and the switch is found in settings on the device web page).\n</ul>\n<p>\nTo manually add a device, use the Device ID found in the Settings->Device Info->DeviceID of the device web page as the key, add the device prefix (\"RGBW2_\" or \"Shelly1_\") to it, and use the IPV4 address as the value in a Custom Configuration Parameter of the Nodeserver Configuration.  For example, if the device ID of a RGBW2 is 123ABC and it is at IP address 192.168.1.1, the custom parameter values are:</br>\nKey: RGBW2_123ABC</br>\nValue 192.168.1.1</br>\n</br>\nTo remove a device from your system, delete the corresponding name/address entry in the Custom Configuration Parameter area of the Nodeserver Configuration.\n</br>\nShelly uses the MDNS protocol for finding the devices, but older firmware seems to be a little spotty on this.  Updating the firmware in the device to the latest version is suggested.  You do this via the system setting on the web server hosted on the device itself.</br>\n<p>\nThese parameters should be found and entered automatically.\n<p>\n<b>Misc</b>\n<p>\nThe devices update their status on the Nodeserver's short poll.  You can change this short poll time to make it more responsive in the NodeServer Configuration.","status":"active","name":"ShellyRGBW2","language":"python3","isyAccess":false,"developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":0,"logLevel":"INFO","ts_added":1651105257,"shortPoll":5,"author":"TangoWhiskey1","discover":true,"fileUpload":false,"desc":"Connect Shelly RGBW2 devices to ISY","polisy":true,"license":"https://github.com/PG3Plugins/udi-shelly-poly/blob/master/LICENSE","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"url":"https://github.com/PG3Plugins/udi-shelly-poly","edition":"Free","id":"9fcc7e52-0c0b-4b66-b29f-a8f4fea1e8ee","isPerpetual":true,"branch":"master","version":"2.0.4"}],"eisy":true,"uuid":"7cc3d250-68cc-4b82-bbdd-916d45cfaf0f","ts_updated":1788214095},{"docs":"https://github.com/simplextech/pg3_docs/tree/main/ST-EcoWitt","longPoll":600,"executable":"st-ecowitt.js","discover":false,"status":"active","name":"ST-EcoWitt","language":"node","desc":"EcoWitt Personal Weather Station and Add-On Sensors","polisy":true,"developer":"bpaauwe@bobsplace.com","changelog":"1.0.1 - Update to work with eisy","authorize":false,"install":"install.sh","ip_added":"50.110.193.30","purchaseOptions":[{"recurringPeriod":"day","price":0,"recurring":7,"edition":"Free","id":"2839f408-7d20-43f5-b9a3-a126b3a475d6","isTrial":true,"version":"1.0.1","branch":null,"url":"https://pg3store.isy.io/v2/nodeservers/production/pg3_ecowitt.zip"},{"price":15,"edition":"Standard","id":"ea680458-e3ea-4264-87cd-cbeb72540d95","isPerpetual":true,"version":"1.0.1","branch":null,"url":"https://pg3store.isy.io/v2/nodeservers/production/pg3_ecowitt.zip"}],"eisy":true,"nsInfoPoll":0,"logLevel":"WARNING","uuid":"70f1c28c-7c46-4bf3-88ab-e2f03fecd5ae","ts_added":1652065330,"shortPoll":60,"ts_updated":1675098547,"author":"Simplex Technology"},{"docs":"https://github.com/Panda88CO/udiNetro/blob/main/README.md","longPoll":1200,"executable":"udiNetro.py","readme":"# udiNetro\nNode server to use Netro Home's irrigation controllers and moisture sensors in the ISY\nThe node allows basic control of the irrigation system but also gives insight in the operation e.g. allowing monitoring of when system wants to irrigate in teh future (next irrigation)\n\nThe node takes a list of serial numbers for each owned device and creats an instance for each device.  Controllers have subnodes for each zone\n\nOn top of this a little trending data for each zone is shown - essentially a slop of the predicted moisture over the last few days\n\nControl parameters are:\nSERIALID - list of device serial numbers (can be obtailed from the APP)\nEVENT_DAYS - The number of days to go back in time to look for events (Negative number)\nSCH_DAYS - The number of days to look into the future to find next irrigation event\nMOIST_DATS - the number of days to go back to calculate the moisture slope (NEgative number)\nTEMP - Temperature unit (C of F)\n\nThe polling is as follows:\nShortPoll - sends a heart beat (one per device in list)\nLongPoll - polls the latest data from teh sensor (Sensor may be sleeping so data from before it started sleeping)\n\nNote, there is a 2000calls/day limit for each device - so do not longpoll too often (there is typically 4 calls per poll for a controller)","status":"active","name":"Netro_watering","language":"python3","isyAccess":false,"developer":"christian.olgaard@gmail.com","ip_added":"73.162.93.46","nsInfoPoll":0,"logLevel":"INFO","ts_added":1760456081,"shortPoll":60,"author":"Panda88","discover":false,"fileUpload":false,"customParams":"{\"SERIALID\":\"Input list of serial id(s) (space separated)\",\"EVENT_DAYS\":\"-5\",\"SCH_DAYS\":\"7\", \"MOIST_DAYS\":\"-3\",\"TEMP\":\"F\"}","desc":"Node to control Netro Irrigation controllers and sensors","polisy":true,"license":"https://github.com/Panda88CO/udiNetro/blob/main/LICENSE","changelog":"0.1.18 - Few fixes and improvements - no functional changes\n0.0.17 - minor bug fix in zone definition\n0.0.16 - Initial Release","authorize":false,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"day","price":0,"recurring":30,"edition":"Standard","id":"aabda037-cfb2-4e35-824a-48eebc9cfc48","isTrial":true,"version":"0.1.18","branch":"main","url":"https://github.com/Panda88CO/udiNetro"},{"price":10,"edition":"Standard","id":"da500285-7dfb-49ee-9082-bc65e1ac8d1b","isPerpetual":true,"version":"0.1.18","branch":"main","url":"https://github.com/Panda88CO/udiNetro"}],"eisy":true,"uuid":"dd5f609e-51c8-43d5-a06e-625b8f948a81","ts_updated":1762815097},{"docs":"https://github.com/Panda88CO/udi-Blink","longPoll":300,"executable":"udiBlinkController.py","readme":"# udi-Blink\nBlink Node Server for Universal Devices IoX / ISY (PG3 & PG3x)\n\nAn integration for Blink Camera Systems with Universal Devices eisy / Polisy running PG3 / PG3x. Allows arming and disarming systems and individual cameras, monitoring connectivity, battery, temperature, and motion status, and triggering picture or video captures from ISY/IoX programs.\n\n## Features\n- **Network & Sync Module Control:** Arm and disarm complete Blink systems or individual sync modules.\n- **Camera Control:** Enable or disable motion detection on individual cameras.\n- **Dynamic Profiles:** Native dynamic JSON profile support in PG3x.\n- **Status Monitoring:** Tracks online connectivity, motion detection, battery health, Wi-Fi signal, and ambient temperature.\n- **Media Capture:** Take snapshots (updates app thumbnail) and record 5-second video clips via ISY commands.\n- **Email Notifications:** Optionally email captured snapshots automatically via SMTP.\n- **2FA Persistence:** Session tokens are saved persistently to PG3 and disk, bypassing 2FA on restarts and reboots.\n- **Heartbeat Monitoring:** Network nodes pulse a heartbeat signal (`DON` followed by `DOF`) during polls for automated health monitoring.\n\n---\n\n## Node Types & Controls\n\n### 1. Network Node (`BLINKNETWORK`)\nRepresents a Blink system network.\n- **Drivers:**\n  - `ST`: Arm Status (`Disarmed`, `Armed`, `Individually Camera Assigned`, `Unknown`)\n  - `GV0`: Connected (`Offline`, `Online`)\n  - `TIME`: Last Successful Update Time\n- **Commands:**\n  - `Set Arming` (`DON` / `DOF`): Arm or disarm the network.\n  - `Update Network`: Force query and refresh network state.\n- **Heartbeat:** Sends `DON` followed 5 seconds later by `DOF` during LongPoll when data is successfully refreshed.\n\n### 2. Sync Unit Node (`BLINKSYNC`)\nRepresents an individual Sync Module.\n- **Drivers:**\n  - `ST`: Connected (`Offline`, `Online`)\n- **Commands:**\n  - `Update SyncUnit`: Query and refresh sync module state.\n\n### 3. Camera Node (`BLINKCAMERAC` / `BLINKCAMERAF` / `BLINKCAMERA`)\nRepresents individual Blink cameras, doorbells, and floodlights.\n- **Drivers:**\n  - `ST`: Motion Detection Status (`Disabled`, `Enabled`)\n  - `GV0`: Connected (`Offline`, `Online`)\n  - `GV1`: Battery Status (`OK`, `Not OK`, `External / Wired`, `USB powered`)\n  - `GV3`: Camera Type (`Mini`, `Doorbell`, `Outdoor`, `XT-2`, `Floodlight`, `Outdoor v4`, etc.)\n  - `GV5`: Motion Detected (`No Motion`, `Motion Detected`)\n  - `CLITEMP`: Temperature (°C or °F based on `TEMP_UNIT`, for supported models)\n  - `TIME`: Last Update Time\n- **Commands:**\n  - `Set Motion Detection` (`DON` / `DOF`): Enable or disable motion detection.\n  - `Take Picture`: Snap a new image (updates Blink app thumbnail, optional email).\n  - `Take Video`: Record a 5-second video clip.\n  - `Update Camera`: Query and refresh camera state.\n\n---\n\n## Installation & Setup\n\n1. **Credentials:** In PG3 Configuration (Custom Parameters), enter your Blink app **USERNAME** and **PASSWORD**.\n2. **Temperature Unit:** Set **TEMP_UNIT** to `C` or `F` (defaults to Celsius if omitted).\n3. **Start Node Server:** On initial startup, Blink will send a Two-Factor Authentication (2FA) PIN code via SMS/email.\n4. **Enter Auth Key:** Enter the received PIN into the **AUTH_KEY** configuration field and click **Save** (do not restart).\n5. **Enable Networks:** Discovered networks will appear as configuration parameters defaulted to `ENABLED/DISABLED`. Set each desired network to `ENABLED` (or `DISABLED` to ignore) and click **Save**.\n6. **Authentication Persistence:** Successful logins persist session tokens locally and in Polyglot storage. On subsequent node restarts or system reboots, the node will reuse saved tokens and start up directly without requiring 2FA. If tokens ever expire or credentials change, the node will prompt for a new 2FA PIN.\n\n---\n\n## Configuration Parameters\n\n| Parameter | Required | Default | Description |\n| :--- | :--- | :--- | :--- |\n| `USERNAME` | **Yes** | — | Blink account email address. |\n| `PASSWORD` | **Yes** | — | Blink account password. |\n| `AUTH_KEY` | Initial Setup | — | 2FA PIN code sent by Blink upon login. |\n| `TEMP_UNIT` | Optional | `C` | Temperature unit (`C` or `F`). |\n| `<NETWORK_NAME>` | **Yes** | `ENABLED/DISABLED` | Set each discovered network to `ENABLED` or `DISABLED`. |\n\n### Optional Email Configuration:\n| Parameter | Default | Description |\n| :--- | :--- | :--- |\n| `EMAIL_ENABLED` | `False` | Set to `True` to email snapped pictures. |\n| `SMTP` | — | SMTP server address (e.g., `smtp-mail.outlook.com`). |\n| `SMTP_PORT` | `587` | SMTP port. |\n| `SMTP_EMAIL` | — | Sender email address for SMTP authentication. |\n| `SMTP_PASSWORD` | — | Password (or app password) for SMTP account. |\n| `EMAIL_RECEPIENT` | — | Recipient email address where photos are sent. |\n\n---\n\n## Polling & Heartbeat\n- **ShortPoll:** Reserved (not currently used).\n- **LongPoll:** Interval (default `180` seconds, recommended >= `60`s) to fetch updates from Blink cloud servers. Avoid setting too short to prevent rate-limiting by Blink.\n- **Heartbeat Monitoring:** When data is received on LongPoll, enabled network nodes cycle `DON` followed 5 seconds later by `DOF`. Use an IoX program to monitor this cycle for heartbeat alerts.\n\n---\n\n## Notes & Best Practices\n- **Camera Naming:** Avoid special characters in camera and sync module names in the Blink app prior to adding.\n- **Arming Hierarchy:** Individual cameras can only be enabled/armed if their parent network is armed.\n- **Dynamic Profiles:** Dynamic JSON profiles are emitted automatically to PG3x.\n- **API Credits:** Built upon the open-source [blinkpy](https://github.com/fronzbot/blinkpy) library.","status":"active","name":"Blink","language":"python3","isyAccess":false,"developer":"christian.olgaard@gmail.com","ip_added":"73.93.40.59","nsInfoPoll":0,"logLevel":"INFO","ts_added":1665162797,"shortPoll":60,"author":"Panda88CO","discover":false,"fileUpload":false,"customParams":"{\"AUTH_KEY\":\"\",\"TEMP_UNIT\":\"C\",\"USERNAME\":\"\",\"PASSWORD\":\"\",\"EMAIL_ENABLED\":\"False\"}","desc":"Node Server to control Blink Camera System - Mostly to arm and disarm cameras but allows taking pictures and videos.  Motion trigger not directly supported, but will display if it was triggered by motion","polisy":true,"license":"https://github.com/Panda88CO/udi-Blink/LICENSE","changelog":"0.6.32 - removed another possible race condition during start up causing saved token not to be loaded\n0.6.31 - removed a possible race condition during start up\n0.6.30 - Code now stores tokens to use if simple reboot.  Swapped ST to show ARM state (may need program update).  Time now updates only when data is received from camera.  Other minor bug fixes.  Forces latest API release\n0.6.19 - Updated to latest API  - should fix token refresh issue\n0.6.17 - Updated to latest API  - should fix login issue\n0.6.16 - Misc. clean-up and minor improvements (more camera types recognized).  When no sync unit exists in a network all cameras are armed and motion sensing mush be enabled and disabled individually (or through ARM all).  In this case arm status of network is Camera Individually Assigned\n0.6.12 - Added heartbeat for each network sending DON followed by DOF each longPoll,  Added last update time.\n0.6.8 - added an on-line state for each network - believe it can show if system gets disconnected and must be restarted\n0.6.6 - update to underlying API \n0.6.5 - Update to support the latest authentication method \n0.6.1 - A major upgrade to new authentication method for Blink and upgraded to latest version of interface\nAdded time stamp for polls/updates on cameras\n0.4.x is a major upgrade \nSome API calls changed - especially around the 2FA code being sent \nChanged structure to focus around networks - not sync nodes \n","authorize":false,"install":"install.sh","purchaseOptions":[{"edition":"Standard","url":"https://github.com/Panda88CO/udi-Blink.git","recurring":15,"branch":"REL20261008","version":"0.6.32","price":0,"isTrial":true,"id":"6ef66d02-78bc-42d8-af42-449f36eff89d","recurringPeriod":"day"},{"version":"0.6.32","edition":"Standard","branch":"REL20261008","price":10,"id":"119ff071-becc-4671-9134-501a040a40ef","url":"https://github.com/Panda88CO/udi-Blink.git","isPerpetual":true}],"eisy":true,"uuid":"02b66257-0f05-4624-9c27-6855c828c844","ts_updated":1791499066},{"docs":"https://github.com/UniversalDevicesInc-PG3/udi-poly-kasa/blob/master/README.md","longPoll":240,"executable":"kasa-poly.py","readme":"https://github.com/UniversalDevicesInc-PG3/udi-poly-kasa/blob/production/README.md","status":"active","name":"Kasa","language":"python3","isyAccess":false,"developer":"jimsearle@gmail.com","ip_added":"72.194.105.190","nsInfoPoll":0,"logLevel":"DEBUG","ts_added":1636838034,"shortPoll":30,"author":"Jimbo.Automates","discover":true,"fileUpload":false,"desc":"TP-Link Kasa Node Server","polisy":true,"license":"https://github.com/UniversalDevicesInc-PG3/udi-poly-kasa/blob/master/LICENSE","changelog":"https://github.com/UniversalDevicesInc-PG3/udi-poly-kasa/blob/production/CHANGELOG.md\n","authorize":false,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"month","recurring":1,"price":0,"edition":"Free","id":"42bd2b21-54dc-40b4-b8b1-9c95df79e1d9","isTrial":true,"version":"3.3.27","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/Kasa-production-3.3.27.zip"},{"price":30,"edition":"Standard","isPerpetual":true,"id":"4b3754d8-1092-45a5-8f69-e1c9dccf66ea","version":"3.3.27","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/Kasa-production-3.3.27.zip"}],"eisy":true,"uuid":"47434058-cf83-4ad5-b7ed-c0faa511fe60","ts_updated":1783567135},{"docs":"https://github.com/BME-nodeservers/udi-kaiterra-poly","longPoll":600,"executable":"kaiterra.py","status":"active","name":"Kaiterra","language":"python3","isyAccess":false,"developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":0,"logLevel":"INFO","ts_added":1652552227,"shortPoll":60,"author":"Bob Paauwe","discover":false,"fileUpload":false,"customParams":"{\n\"API Key\": \"\"\n}","desc":"Air Quality monitoring for Kaiterra Laser Egg or Sensedge devices.","polisy":true,"license":"https://github.com/BME-nodeservers/udi-kaiterra-poly","authorize":false,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"day","price":0,"recurring":30,"edition":"Free","id":"a8041f10-4545-4279-a31e-c4b2c224a0a6","isTrial":true,"version":"1.0.4","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/udi-kaiterra-poly.zip"},{"price":10,"edition":"Standard","id":"173c3112-7a71-4df3-bd1b-3152c9b91233","isPerpetual":true,"version":"1.0.4","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/udi-kaiterra-poly.zip"}],"eisy":true,"uuid":"446b1381-10c2-49ec-876c-998a7f3c70bc","ts_updated":1735670600},{"docs":"https://github.com/jimboca/udi-poly-homekit/blob/main/README.md","longPoll":600,"executable":"homekit-poly.py","readme":"<a href=\"https://github.com/jimboca/udi-poly-homekit/blob/main/README.md\">README</a>\n","status":"active","name":"HomeKitHub","language":"python3","isyAccess":false,"developer":"jimsearle@gmail.com","ip_added":"68.224.233.143","nsInfoPoll":0,"logLevel":"DEBUG","ts_added":1782420561,"shortPoll":60,"author":"JimBo.Automates","discover":true,"fileUpload":false,"desc":"Polyglot PG3x Node Server: HomeKit Accessory Protocol (HAP) controller hub with a local WebSocket & MQTT API for other Node Servers (e.g. udi-poly-ecobee in Local mode).  Version 2.0.0 Professional adds creating generic devices Thermostat, Bulb, Switch, Plug... directly.","polisy":true,"license":"https://github.com/jimboca/udi-poly-homekit/blob/main/LICENSE","changelog":"<a href=\"https://github.com/jimboca/udi-poly-homekit/blob/main/CHANGELOG.md\">CHANGELOG</a>\n","authorize":false,"install":"install.sh","purchaseOptions":[{"id":"58ddce45-a6a6-455e-91b8-84e43349624e","recurringPeriod":"month","version":"2.0.19","isTrial":true,"edition":"Professional","price":0,"branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/HomeKitHub-Production-Professional-2.0.19.zip","recurring":1},{"edition":"Standard","id":"1692d0a4-5623-45ac-a789-13283359d78b","isPerpetual":true,"version":"2.0.19","url":"https://pg3store.isy.io/v2/nodeservers/production/HomeKitHub-Production-Standard-2.0.19.zip","branch":"","price":30},{"version":"2.0.19","price":30,"id":"6b733889-8bdf-4739-b0b1-6b295b1b9ca6","edition":"Professional","isPerpetual":true,"branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/HomeKitHub-Production-Professional-2.0.19.zip"},{"id":"ee790b73-aaec-44cf-9c68-268223c4ce16","recurringPeriod":"month","edition":"Standard","price":0,"recurring":1,"branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/HomeKitHub-Production-Standard-2.0.19.zip","isTrial":true,"version":"2.0.19"}],"eisy":true,"uuid":"87acf399-dbb6-4b90-ac6e-03cbff07f379","ts_updated":1791243477},{"docs":"https://github.com/ve7gel/Docs/blob/main/IntesisWMP/README.md","longPoll":60,"executable":"intesis-poly.py","status":"active","name":"Intesis","language":"python3","isyAccess":false,"developer":"gordon@the-larsens.ca","ip_added":"24.69.28.14","nsInfoPoll":0,"logLevel":"WARNING","ts_added":1679351690,"shortPoll":30,"author":"Gordon Larsen","discover":false,"customParams":"{\n          \"Units\": \"C\"\n        }","desc":"Node Server for Intesis Heat Pump or A/C WMP interfaces","polisy":true,"license":"https://github.com/ve7gel/Docs/blob/main/LICENSE.md","authorize":false,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"day","price":0,"recurring":7,"edition":"Standard","id":"846015cf-3713-4298-b864-6db3ceece2df","isTrial":true,"version":"3.0.1","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/udi-poly-intesis.zip"},{"price":35,"edition":"Standard","id":"b57e7009-8d25-43a1-b58e-6447c663eba1","isPerpetual":true,"version":"3.0.1","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/udi-poly-intesis.zip"}],"eisy":true,"uuid":"7a225ac5-f505-4527-aa21-8edd78473a21","ts_updated":1698027441},{"docs":"README.md","longPoll":600,"executable":"udi-hunterdouglas-pg3x.py","readme":"Plugin for EISY/Polisy (eisy-ui or PG3 environment) that connects to Hunter Douglas PowerView G2 or G3 hubs on your LAN. It discovers motorized shades and exposes position, tilt, battery, connectivity, and shade commands (open, close, stop, favorite/my position) as ISY nodes for programs and scenes. Supports G3 self-hosted hub API (hostname or IP) and G2 PowerView gateways.","status":"active","name":"HunterDouglas","language":"python3","isyAccess":false,"developer":"stephenearljenkins@me.com","ip_added":"104.28.103.66","nsInfoPoll":0,"purchaseOptionsBeta":[{"edition":"Beta","branch":"beta","recurring":1,"recurringPeriod":"year","isTrial":true,"id":"676a3e24-7a39-43f8-8bf1-cd5fa8595ac0","version":"1.14.0","price":0,"url":"https://github.com/UniversalDevicesInc-PG3/udi-hunterdouglas-pg3"}],"logLevel":"INFO","ts_added":1713298801,"shortPoll":60,"author":"headrom","discover":true,"fileUpload":false,"customParams":"{\"gatewayip\": \"powerview-g3.local\"}","desc":"Hunter Douglas Shades integration.  Works with Generation 2 or 3 gateways & blinds.","license":"LICENSE","changelog":"## 1.14.0\n- DONE PG3 store manifest (`server.json`) with executable `udi-hunterdouglas-pg3x.py`\n- DONE rename entry script from `hunterdouglas-poly.py` to `udi-hunterdouglas-pg3x.py` (use **Update** from the store; delete/reinstall if the node server fails to start)\n- DONE standard bootstrap (error handling, version in `VERSION` / `profile/version.txt` / `server.json`)\n- DONE rename `versionHistory.md` to `CHANGELOG.md` (template standard)\n- DONE default branch and documentation links aligned with `udi-hunterdouglas-pg3x` naming\n- DONE developer toolchain: uv, pytest profile sync test, Makefile (runtime install unchanged: `install.sh` + `requirements.txt`)\n- DONE includes aiohttp 3.14.3 security updates from 1.13.6\n\n## 1.13.6\n- DONE package updates \"dependabot\" — aiohttp 3.14.3 security fixes\n\n## 1.13.5\n- DONE sync versionHistory.md with udi-hunterdouglas-pg3x.py; older history in versionHistory.md only\n- DONE fix ready_event poll checks (Controller, Shade, Scene)\n- DONE fix updateAllFromServer throttling and in-progress guard\n- DONE fix parameterHandler startup flag after checkParams\n- DONE replace eval() with json/ast parsing for gatewayip list\n- DONE accept gateway hostnames in addition to IP addresses\n- DONE thread-safe stale gateway event cleanup\n- DONE reset controller event_polling_in on thread exit\n- DONE add HTTP GET timeout to match PUT\n- DONE G3 shade discovery sets roomId and default batteryStatus\n- DONE Shade updateData null guards for missing shade data\n- DONE fix battery-alert event batteryLevel key handling\n- DONE fix Scene Gen2 active check (generation not gateway IP)\n- DONE safe scene-deactivated remove from sceneIdsActive\n- DONE consolidate PowerView URL constants into utils/urls.py\n- DONE consolidate gateway event lookup helpers in utils/gateway_events.py\n- DONE shared start_event_poll_thread helper for node event polling\n- DONE fix start_event_poll_thread when called from Controller\n- DONE get_gateway_event wait timeout so pollers cannot block indefinitely\n- DONE SSE Not Found handling restarts stream without stopping node pollers\n- DONE G2 updateAllFromServerG2 fails if rooms/shades/scenes fetch fails\n\n","authorize":false,"install":"install.sh","purchaseOptions":[{"version":"1.14.0","url":"https://github.com/UniversalDevicesInc-PG3/udi-hunterdouglas-pg3","branch":"production","edition":"Free","isPerpetual":true,"id":"532cd6c3-c15a-419d-98a7-55ee5cf9fea4","price":0}],"uuid":"28a10a63-d138-4fdc-b983-dd3982b3d893","ts_updated":1788984990.243},{"docs":"https://forum.universal-devices.com/forum/440-drop/","longPoll":600,"executable":"drop.py","readme":"Go to your Drop app and have it point to your eisy/polisy ip and port 1884. For credentials, you can use pretty much anything.\nWhen the plugin starts, you need to cause your Drop Hub to send discovery packets. You can do this either from their IOS app, or on the web, navigate to System | Advanced, then click on the menu (...) on each Hub | Restart Hub.","status":"active","name":"Drop","language":"python3","isyAccess":false,"developer":"macjeffiphone@me.com","ip_added":"76.221.133.84","nsInfoPoll":0,"logLevel":"INFO","ts_added":1706647470,"shortPoll":60,"author":"macjeff","discover":false,"fileUpload":false,"desc":"This plugin integrates with Drop (Chandler Systems) devices to get you telemetry + command/control. ","polisy":true,"license":"https://developer.isy.io","changelog":"1.0.0 - Initial Version\n1.0.3 - Fixed programs and icons\n1.0.4 - Start/stop not updating properties\n1.1.1 - Added more debugging statements \n1.2.0 - Alert\n1.2.2 - Updated labels for Water control\n1.2.3 - Exception handling for Alert leak sensor\n1.2.4 - Migration to V2 of paho.mqtt\n1.2.5 - Fixed paho exceptions\n1.2.6 - Fixed filter (xking)","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"de4feb8e-9f5c-41f0-aac3-46a4656c6a10","isPerpetual":true,"version":"1.2.6","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/drop-1.2.6.tar.gz"}],"eisy":true,"uuid":"a150b3ad-53b0-4e5a-99cc-e0ad9ca84b2e","ts_updated":1768245243},{"docs":"ttps://github.com/Panda88CO/TeslaEV3/blob/main/README.md","longPoll":7200,"executable":"TeslaEV3main.py","readme":"Requires PG3x\nOBS!!!!!! \nTo issue commands one must install an electronic key on the car\nOn your mobile device open  https://tesla.com/_ak/my.isy.io. It should open the tesla app so you can approve the key-install - Older EVs may not support the virtual key\nNote, currently only supports commands for NA cars\n \nRun the node server \nUpdate configuration parameters - most important is region NA (North America), EU (Europe and most of rest of world), CN (China)\nNote - currently only NA is supported for commands\nSet TEMP_UNIT (C/F) and DIST_UNIT (Miles/Km) \nSet LOCATION_EN (True/False)\nSet VIN is more than one EV is registered in the account\n\nLocation is needed to get access to longitue and latitude needed to control windows (close) as well as homelink \nNote, if Location is enabled - an Icon will show on App.\n\nRestart node server and press autheticate (should only be needed first time)\n\nThe API strams changes to the node serverm so no polling is required - data updates when data changes are sent from the EV.  \nCalls to control the EV will wake the  EV and send the commands.  Please note these commands are billed per call so limit the calls to only ones needed\n\nShortPoll: default 1 min  sends a heart beat\nLongPoll: default 120min (7200 sec) validates the certificates are still valid\n\n","status":"active","oauth":"{\"name\":\"TeslaEVstream\",\"client_id\":\"6e635ec38dc4-4d2a-a35e-f164b51f3d96\",\"client_secret\":\"ta-secret.S@z5uUjp*sxoS2rS\",\"auth_endpoint\":\"https://fleet-auth.prd.vn.cloud.tesla.com/oauth2/v3/authorize\",\"token_endpoint\": \"https://fleet-auth.prd.vn.cloud.tesla.com/oauth2/v3/token\",\"scope\":\"vehicle_device_data vehicle_cmds vehicle_charging_cmds open_id user_data offline_access\",\"addRedirect\":\"True\"}","name":"TeslaEVstream","language":"python3","isyAccess":false,"developer":"christian.olgaard@gmail.com","ip_added":"73.93.40.59","nsInfoPoll":0,"logLevel":"INFO","ts_added":1744042764,"shortPoll":300,"author":"Panda88CO","discover":false,"fileUpload":false,"customParams":"{\"REGION\":\"Input region NA, EU, CN\",\"TEMP_UNIT\":\"C or F\",\"DIST_UNIT\":\"Km or Miles\",\"LOCATION_EN\":\"True or False\",\"VIN\":\"EV VIN\"}","nsdata":"{\"portalID\":\"isyportal-o2-tesla\",\"PortalSecret\":\"0oQdAPq$ZfTt20pO\"}","desc":" Tesla EV node server using Tesla's Official STREAMING API - data updates automatically - no need to poll data\nThe vehicle must not be a pre-2021 Model S or Model X.\nVehicles must be running firmware version 2024.26 or later.\nReplaces udiTeslaEV and udiTeslaEV2","polisy":true,"license":"https://github.com/Panda88CO/TeslaEV3/blob/main/LICENSE","changelog":"0.2.14 - Updated polling approach - should generate less data now \n0.2.13 - Minor improvement - webhook test is executed during initialization and program cannot continue if webhook does not work \n0.2.12 - Minor improvement of error code when scopes are not validated\n0.2.11 - Minor bugfix on one parameter setting statement\n0.2.10 - Added support for PowerShare.  Introduced rate limit to 3 wakes and 10 commands per 24 hours\n\n\n0.0.13 - initial release\n0.0.19 - Added sentry mode - bug fixes \n0.0.22 - fixed bug with token refresh losing token\n0.0.23 - fixes bar to PSI\n0.1.40 - Added support for PowerShare - many bug fixes \n0.1.41 - Updated documentation to include the powershare node option - fixed stuck message - removed storm mode as it does not appear functional\n0.1.42 - bug fix that could cause crash\n0.1.43 - Will now terminate if no synch is achieved in 1 hour\n0.1.44 - fixed def bug for tire pressure\n\n","authorize":true,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"day","price":0,"recurring":30,"edition":"Free","id":"5a4f2b45-0f05-4b6b-a634-f677e85e9c7b","isTrial":true,"version":"0.2.14","branch":"main","url":"https://github.com/Panda88CO/TeslaEV3"},{"isSubscription":true,"recurringPeriod":"year","price":30,"recurring":1,"edition":"Standard","id":"b82cb982-9927-4c88-b675-19cff728032a","version":"0.2.14","branch":"main","url":"https://github.com/Panda88CO/TeslaEV3"}],"eisy":true,"uuid":"fc6f63ff-b210-4076-a111-c0f40c748a74","ts_updated":1764798655},{"docs":"https://github.com/UniversalDevicesInc-PG3/udi-poly-ELK/blob/master/README.md","longPoll":240,"executable":"elk-poly.py","readme":"[README](https://github.com/UniversalDevicesInc-PG3/udi-poly-ELK/blob/production/README.md)","status":"active","name":"ELK","language":"python3","isyAccess":true,"developer":"jimsearle@gmail.com","ip_added":"72.194.105.190","nsInfoPoll":0,"logLevel":"WARNING","ts_added":1636934557,"shortPoll":30,"author":"Jimbo.Automates","discover":true,"fileUpload":false,"customParams":"{\n  \"temperature_unit\": \"F\",\n  \"host\": \"\",\n  \"user_code\": \"\",\n  \"areas\": \"1\",\n  \"outputs\": \"\",\n  \"change_node_names\": \"false\"\n}\n","desc":"ELK Alarm System Nodeserver","polisy":true,"license":"TBD","changelog":"https://github.com/UniversalDevicesInc-PG3/udi-poly-ELK/blob/production/CHANGELOG.md","authorize":false,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"month","price":0,"recurring":1,"edition":"Free","id":"f42894da-5bb6-47d1-ac9d-b3b310f0c780","isTrial":true,"version":"3.10.16","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/ELK-production-3.10.16.zip"},{"price":30,"edition":"Standard","id":"0f6568ba-e497-4cf0-abbc-746e6d345d0f","isPerpetual":true,"version":"3.10.16","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/ELK-production-3.10.16.zip"}],"eisy":true,"uuid":"c7297a6e-f1c6-4c12-8b66-532a6721431a","ts_updated":1779764178},{"docs":"https://github.com/UniversalDevicesInc-PG3/udi-sense-monitoring-polyglot","longPoll":600,"executable":"sense_poly.py","readme":"Sense Monitoring Polyglot V3 Node Server\n\nThis Poly provides an interface between Sense Monitoring using undocumented API and Polyglot v3 server. Provide Electricity Usage and Status of a Device. This use undocumented API from Sense via a Python Library (https://github.com/scottbonline/sense).\n\nThis will create one node for the controller with the Sense Power Usage and then one node for each detected device with their current power usage and their status (on / off). Those value a refreshed every 60 seconds.\n\nKnown Issues\n\n1. If a device is removed from Sense, it won''t be removed from the node server you need to manually delete it.\n2. If you rename or merge a device, you may need to delete the old device in the node server and re-import it.\n\n","status":"active","name":"Sense","language":"python3","developer":"jf.tremblay@gmail.com","ip_added":"74.14.175.171","nsInfoPoll":0,"logLevel":"INFO","ts_added":1635261958,"shortPoll":60,"author":"AutomationGeek","discover":false,"customParams":"{\n            \"email\": \"\",\n            \"password\": \"\"\n }","desc":"Connect Sense Energy Monitor to UDI IoX.","polisy":true,"license":"https://github.com/UniversalDevicesInc-PG3/udi-sense-monitoring-polyglot/blob/master/LICENSE","changelog":"3.0.2 - Extend max range for Watt/KWatt values\n3.0.1 - Node definition update\n3.0.0 - Initial port from PG2 to PG3","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"9d8f772b-6c49-4c9d-9b7b-ae704ce7d61f","isPerpetual":true,"version":"3.0.2","branch":"master","url":"https://github.com/UniversalDevicesInc-PG3/udi-sense-monitoring-polyglot.git"}],"eisy":true,"uuid":"912ee42d-291b-4c13-8b34-eb19d8f19609","ts_updated":1678411465},{"docs":"POLYGLOT_CONFIG.md","longPoll":600,"executable":"linez.py","status":"active","name":"Linez","language":"python3","isyAccess":false,"developer":"oztronix@comcast.net","ip_added":"76.20.55.237","nsInfoPoll":0,"logLevel":"INFO","ts_added":1735503871,"shortPoll":10,"author":"TJF1960","discover":false,"fileUpload":false,"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,"install":"install.sh","purchaseOptions":[{"price":0,"isPerpetual":true,"version":"1.1.6","url":"https://pg3store.isy.io/v2/nodeservers/Production/linez.zip","edition":"Free","branch":"","id":"2871bd07-be98-4743-a3a5-8de3e8ccb449"}],"eisy":true,"uuid":"2d4c07e8-de5e-4257-9062-4e7d5f9d44ae","ts_updated":1778674258},{"docs":"https://github.com/PG3Plugins/udi-somfy-poly/blob/master/README.md","longPoll":60,"executable":"somfy-urts-poly.py","status":"active","name":"Somfy","language":"python3","isyAccess":false,"developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":0,"logLevel":"INFO","ts_added":1650408734,"shortPoll":5,"author":"Brian Feeney","discover":false,"fileUpload":false,"customParams":"{\n\t\"port\": \"\"\n}","desc":"Somfy URTSii Node Server","polisy":true,"license":"https://github.com/PG3Plugins/udi-somfy-poly/blob/master/LICENSE","authorize":false,"install":"install.sh","purchaseOptions":[{"version":"2.0.0","isPerpetual":true,"price":0,"url":"https://github.com/PG3Plugins/udi-somfy-poly","id":"8628fc0a-c92e-4cf9-bbd9-dfffe314ef5b","edition":"Free","branch":"master"}],"eisy":true,"uuid":"37ce943a-7180-4c48-97d2-5aed596aa57f","ts_updated":1788214224},{"longPoll":3600,"docs":"https://github.com/UniversalDevicesInc/ring/blob/master/README.md","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}","name":"Ring","language":"python3","isyAccess":false,"developer":"benoit@universal-devices.com","ip_added":"24.89.248.127","nsInfoPoll":0,"purchaseOptionsBeta":[{"isTrial":true,"url":"https://github.com/UniversalDevicesInc/ring.git","recurring":3,"id":"94c7d012-3d61-489c-9896-96f4eca53257","edition":"Beta","branch":"master","version":"1.3.4","price":0,"recurringPeriod":"day"}],"logLevel":"INFO","ts_added":1683754299,"shortPoll":300,"author":"Benoit Mercier","discover":false,"fileUpload":false,"aiTools":"{ \"tools\": \"zzz\" }","customParams":"{\"TEST\":\"TEST\"}","aiPrompt":"prompt","desc":"The Ring nodeserver creates nodes for your doorbells, stickup cams & floodlights.","license":"https://github.com/UniversalDevicesInc/ring/blob/master/LICENSE","changelog":".","purchaseOptions":[{"branch":"master","price":0,"recurringPeriod":"day","isTrial":true,"version":"1.2.7","edition":"Standard","recurring":10,"url":"https://github.com/UniversalDevicesInc/ring.git","id":"733fc6a8-8cca-4104-ad53-7f3c050b5d6f"},{"url":"https://github.com/UniversalDevicesInc/ring.git","version":"1.2.7","edition":"Standard","isPerpetual":true,"id":"0c168f43-66dd-4894-9ecc-afdc12b375b1","price":9,"branch":"master"}],"authorize":true,"install":"install.sh","uuid":"bde44191-474a-49f9-8dc8-495c751f958c","ts_updated":1791200973.319},{"docs":"https://github.com/PG3Plugins/udi-netatmo/blob/main/README.md","longPoll":1200,"executable":"mainNetatmo.py","readme":"Netatmo Weather Station NodeServer\n\nThis is the Netatmo Weather Station node server for the Universal Devices Inc. Polyglot V3+ framework. \n(c) 2021 Daniel Caldentey\nMIT license.\n\nThis node server is intended to interact with the Netatmo Weather Station. It can track the status of all modules connected to a single Weather Station. [Netatmo](https://www.netatmo.com/en-us/weather) You will need account access to your Netatmo via the Netatmo Developer API, and create an App on their developer site to get a Client ID and a Client Secret \n\nCurrently, only one Weather Station is supported.\n\n","status":"active","name":"Netatmo-WS","language":"python3","isyAccess":false,"developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":0,"logLevel":"INFO","ts_added":1650400516,"shortPoll":600,"author":"Dani","discover":false,"fileUpload":false,"customParams":"{\n\t\"Username\": \"\",\n\t\"Password\": \"\",\n\t\"ClientID\": \"\",\n\t\"ClientSecret\": \"\"\n}","desc":"Netatmo Weather Station Status","polisy":true,"license":"https://github.com/PG3Plugins/udi-netatmo/blob/main/LICENSE","changelog":"2.0.3 - fix syntax error\n2.0.4 - attempt to reconnect to server when disconnected","authorize":false,"install":"install.sh","purchaseOptions":[{"edition":"Free","branch":"main","id":"c0f07207-a9a5-4b19-9758-1107bed012d0","price":0,"isPerpetual":true,"url":"https://github.com/PG3Plugins/udi-netatmo","version":"2.0.4"}],"eisy":true,"uuid":"5abc8efc-d5fb-476b-b0a3-426452f17cb9","ts_updated":1788214360},{"docs":"https://github.com/lovintexas/udi-levolor-pg3x","longPoll":300,"executable":"levolor.py","readme":"Levolor plugin for eisy/IoX.\n\nDocumentation and setup guide:\nhttps://lovintexas.github.io/udi-levolor-pg3x/\n\nProvides local control of Levolor InMotion motorized blinds using the InMotion gateway.\n\nFeatures:\n- Open\n- Close\n- Stop\n- Set position from 0-100%\n- Position status\n- Battery level\n- Availability\n- RSSI\n- Automatic blind discovery\n\nConfiguration requires the local IP address and gateway key of the Levolor InMotion gateway. Detailed setup instructions are provided on the plugin Configuration page and in the GitHub documentation.","status":"active","name":"Levolor","language":"python3","isyAccess":false,"developer":"dr-apo@dr-apo.com","ip_added":"::ffff:72.177.80.34","nsInfoPoll":0,"logLevel":"INFO","ts_added":1787406430.494,"shortPoll":60,"author":"Louis Apostolakis","discover":false,"fileUpload":false,"aiTools":"","customParams":"{\n  \"gateway_ip\": \"\",\n  \"gateway_key\": \"\"\n}","aiPrompt":"","desc":"Local control of Levolor InMotion motorized blinds through a MotionBlinds gateway. Provides Open, Close, Stop, position control, position status, battery level, availability, and RSSI.","license":"https://github.com/lovintexas/udi-levolor-pg3x/blob/master/LICENSE","changelog":"\nAll notable changes to the Levolor PG3x plugin will be documented in this file.\n##[1.0.5] - 2026-09-13\n\n###Added\n- Added improved UD Mobile support, including compatibility with the Switch Widget for Open/Close control.\n- Added a separate Blind State showing Open, Partially Open, or Closed.\n\n###Changed\n- Improved command responsiveness so Open, Close, Stop, and Set Position are not delayed by background status polling.\n- Improved rapid position updates while blinds are moving.\n- Added binary Open/Closed status based on blind position (0-50% Open, 51-100% Closed).\n- Improved polling behavior to prioritize active blind movement.\n\n\n## [1.0.4] - 2026-09-13\n\n### Added\n- Added standard IoX `DON` and `DOF` commands for blind control.\n  - `DON` closes the blind.\n  - `DOF` opens the blind.\n- Added user-facing **Close** and **Open** labels for the `DON` and `DOF` commands.\n- Added position labels:\n  - `0%` displays as **Open**.\n  - `100%` displays as **Closed**.\n  - Intermediate positions continue to display as percentages.\n- Added rapid position polling after Open, Close, and Set Position commands.\n  - Polls approximately every 10 seconds.\n  - Stops when the requested position is confirmed.\n  - Times out after approximately 3 minutes.\n- Added support for simultaneous rapid polling of multiple moving blinds.\n- Added per-blind rapid-poll cancellation so a new movement command supersedes the previous target.\n- Stop command now cancels any outstanding rapid-poll target.\n\n### Changed\n- Serialized MotionBlinds gateway operations to prevent simultaneous gateway transactions.\n- Normal whole-system short polling is temporarily skipped while rapid position polling is active, preventing slow polling of other blinds from delaying status updates for moving blinds.\n- Improved position feedback in the Admin Console and UD Mobile during blind movement.\n\n## [1.0.3]\n\n### Changed\n- Development version used while adding IoX `DON`/`DOF` support and Open/Close controls.\n- Changes were incorporated into 1.0.4.\n\n## [1.0.2]\n\n### Added\n- Added blind position reporting using `GV4`.\n- Added Set Position command.\n- Blind nodes report:\n  - Position\n  - Battery level\n  - RSSI\n  - Availability\n\n### Changed\n- Improved Levolor gateway and blind status handling.\n\n## [1.0.1]\n\n### Changed\n- Early reliability and configuration improvements following initial testing.\n\n## [1.0.0]\n\n### Added\n- Initial release.\n- Levolor InMotion/MotionBlinds gateway support.\n- Automatic blind discovery.\n- Open, Close, Stop, and Query commands.\n- Battery level reporting.\n- RSSI reporting.\n- Availability reporting.\n- Configurable `gateway_ip` and `gateway_key`.\n- Periodic blind status polling.","authorize":false,"install":"install.sh","purchaseOptions":[{"url":"https://github.com/lovintexas/udi-levolor-pg3x.git","edition":"Standard","version":"1.0.5","id":"06fef0fd-9105-4704-828b-a21eabc96e71","price":0,"branch":"master","recurringPeriod":"day","recurring":30,"isTrial":true},{"edition":"Standard","version":"1.0.5","isPerpetual":true,"url":"https://github.com/lovintexas/udi-levolor-pg3x.git","id":"a82f5a7f-0821-4280-94f6-33d20d768f74","branch":"master","price":10}],"uuid":"8ef1b47c-e9da-4492-a52a-1cec5fd057a5","requireEisyui":false,"ts_updated":1789750681.822},{"docs":"https://github.com/Panda88CO/udi-Kidde/blob/main/README.md","longPoll":300,"executable":"udi_kidde.py","readme":"# udi-Kidde\n\nPG3x node server for Kidde HomeSafe alarms, using `udi_interface` and `kidde-homesafe`.  \n`kidde-homesafe` is an open source library maintained at [https://github.com/865charlesw/kidde-homesafe](https://github.com/865charlesw/kidde-homesafe).\n\n## Features\n- **Controller Node (`SETUP`)**:\n  - Node server status (`ST`), online status (`GV1`), number of alarms (`GV0`), and last update time (`TIME`).\n  - Heartbeat (`DON`/`DOF`) toggle on `shortPoll`.\n  - Accurate `TIME` reporting: only updates when data is successfully received from the Kidde cloud (never on error, startup, or heartbeat).\n- **Capability-Based Alarm Subnodes (`KIDDEALARM0` – `KIDDEALARM7`)**:\n  - Automatically created and dynamically typed based on device capabilities (Smoke, CO, Air Quality).\n  - Telemetry: smoke alarm, CO alarm, smoke hush, smoke level, CO level (PPM), battery state, low battery alarm, IAQ status, chirps schedule (minutes after midnight), model, life remaining, and last seen.\n  - Event notifications: sends `DON` on alarm onset and `DOF` on alarm clearance.\n  - All status/boolean drivers use the discrete `BOOLEAN` editor (`No` / `Yes`).\n- **Device Commands**:\n  - `Send Command` (`SENDCMD`) function: Identify, Identify Cancel, Test, Hush.\n  - Dedicated `Hush Alarm` (`HUSH`) command.\n\n## Setup\n1. Configure custom parameters in PG3x:\n   - `EMAIL`: Kidde account email address (required).\n   - `PASSWORD`: Kidde account password (required).\n   - `TEMP_UNIT`: Optional temperature unit, `F` or `C` (default: `F`).\n2. Configure polling intervals in PG3x:\n   - `shortPoll` (default: 30s): sends heartbeat toggling `DON`/`DOF`.\n   - `longPoll` (default: 180s): polls latest telemetry data from the Kidde cloud.\n     > **Note:** Kidde alarms do not push real-time events to the cloud; `longPoll` polls the latest reported state. Updating data fetches the last reported cloud status, so polling excessively fast provides no benefit.\n","status":"active","name":"KiddeSmokeDet","language":"python3","isyAccess":false,"developer":"christian.olgaard@gmail.com","ip_added":"98.47.168.86","nsInfoPoll":0,"logLevel":"INFO","ts_added":1777487407,"shortPoll":60,"author":"Panda88","discover":false,"fileUpload":false,"customParams":"{\"EMAIL\":\"\",\"PASSWORD\":\"\",\"TEMP_UNIT\":\"C\"}","desc":"Nodeserver to monitor and control Kidde Smoke and CO detectors ","polisy":true,"license":"https://github.com/Panda88CO/udi-Kidde/blob/main/LICENSE","changelog":"0.1.5 -Minor update to fix eisy-ui gui issue.  Also ensured time only updates if data is received \n0.1.4 - initial release","authorize":false,"install":"install.sh","purchaseOptions":[{"id":"8b8cf57f-e50f-4e7c-9a00-f2195d6c76c0","recurringPeriod":"day","isTrial":true,"version":"0.1.5","price":0,"url":"https://github.com/Panda88CO/udi-Kidde","recurring":30,"branch":"REL20261004","edition":"Free"},{"edition":"Standard","id":"4e953619-c8d7-4114-932a-186b81186e60","price":10,"branch":"REL20261004","isPerpetual":true,"version":"0.1.5","url":"https://github.com/Panda88CO/udi-Kidde"}],"eisy":true,"uuid":"e77affb3-184c-43a1-8960-6516430b3304","ts_updated":1791156888},{"docs":"https://github.com/UniversalDevicesInc-PG3/udi-poly-ecobee/blob/master/README.md","longPoll":180,"executable":"ecobee-poly.py","readme":"https://github.com/UniversalDevicesInc-PG3/udi-poly-ecobee/blob/production/README.md","status":"active","name":"Ecobee","language":"python3","isyAccess":false,"developer":"jimsearle@gmail.com","ip_added":"70.181.79.77","nsInfoPoll":0,"logLevel":"WARNING","ts_added":1642913177,"shortPoll":60,"author":"Jimbo.Automates","discover":true,"fileUpload":false,"nsdata":"{\n  \"api_key\": \"eeRigKDRCmR0zaNvLGABRG4eLpEc7r34\",\n  \"api_key_pin\": \"2aFymqxQsvp6z7MHQFPqT89NQwC0Bu4K\"\n}","desc":"Ecobee Nodeserver with API, or Homekit backends. (API is currently blocked by Ecobee)","polisy":true,"license":"https://github.com/UniversalDevicesInc-PG3/udi-poly-ecobee/blob/master/LICENSE","changelog":"https://github.com/UniversalDevicesInc-PG3/udi-poly-ecobee/blob/production/CHANGELOG.md","authorize":false,"install":"install.sh","purchaseOptions":[{"edition":"Standard","price":30,"isPerpetual":true,"branch":null,"version":"4.1.11","id":"503a1f86-943d-4f44-8c0c-ed4e9c4fd2e1","url":"https://pg3store.isy.io/v2/nodeservers/production/Ecobee-production-4.1.11.zip"}],"eisy":true,"uuid":"af1f50a2-7aaf-43c1-aa53-276b2587cb22","ts_updated":1791240808},{"docs":"https://developer.isy.io","longPoll":600,"executable":"oadr3.py","status":"active","name":"oadr3ven","language":"python3","isyAccess":false,"developer":"michel@universal-devices.com","ip_added":"76.221.133.84","nsInfoPoll":0,"logLevel":"INFO","ts_added":1740084598,"shortPoll":60,"author":"UD Tech","discover":false,"fileUpload":false,"customParams":"{\n\"VTN Base URL\": \"The base URL for VTN\",\n\"Client ID\":\"VTN Client ID for Auth\",\n\"Client Secret\":\"VTN Client Secret for Auth\",\n\"Duration Scale\":\"See docs\"\n}","desc":"A certifiable OpenADR 3.0 VEN (client) that reads events from a VTN and schedules them.","polisy":true,"license":"https://developer.isy.io","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"67087d1e-b5aa-4add-8a0f-da9df29b5da4","isPerpetual":true,"version":"1.0.6","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/oadr31-1.0.6.pro.tar.gz"}],"eisy":true,"uuid":"fb83ec79-02e9-421c-9e90-3032ea6a5f67","ts_updated":1772648568},{"docs":"https://github.com/BME-nodeservers/udi-wol-poly/blob/master/README.md","longPoll":600,"executable":"wol.py","readme":"Wake On Lan Node Server (c) 2022 Robert Paauwe\n\nThis will create a node for each host/mac address pair defined in the \ncustom parameters.  Each node has a single command (Send WOL) that when\ninvoked, sends the WOL packet to the specified host.\n\nNode Settings\n\nDefined host/mac address pairs\n","discover":false,"status":"active","name":"Wake-On-Lan","language":"python3","desc":"Send WOL packets to hosts","developer":"bpaauwe@bobsplace.com","changelog":"- 1.0.3 10/02/2022\n   - Removed error messages that were being used for debug\n- 1.0.0 05/30/2022\n   - Initial version published to github\n","authorize":false,"install":"install.sh","ip_added":"67.161.168.17","purchaseOptions":[{"price":0,"edition":"Free","id":"f09394a2-fde4-42cc-8bf8-d701281f8e2d","isPerpetual":true,"version":"1.0.3","branch":"master","url":"https://github.com/BME-nodeservers/udi-wol-poly"}],"nsInfoPoll":0,"logLevel":"INFO","uuid":"0c2a4805-800f-4aeb-bf15-7cd9d5987cc7","ts_added":1653934748,"shortPoll":60,"ts_updated":1664730051,"author":"Bob Paauwe"},{"docs":"https://github.com/BME-nodeservers/udi-poly-linktap/blob/main/README.md","longPoll":900,"executable":"LinkTap.py","readme":"The LinkTap node server will interface <a href=\"https://wwwlink-tap.com\">LinkTap watering solutions</a> to the Universal Devices eisy and Polisy controlles.\n\n<b>Usage</b>\nThis Nodeserver provides status information of the LinkTap devices and can also be used in programs for watering schedules.\n\n<b>Basic features are:</b>\n<pre>\n * instant On (up to 120 minutes)\n * Instant Off\n * Set Watering Modes\n   - Interval Mode\n   - Odd-Even Mode\n   - Seven Day Mode\n   - Month Mode\n</pre>\n\n<b>Configuration</b>\n1. Get a LinkTap API key <a href=\"https://www.link-tap.com/#!/api-for-developers\">here</a>\n2. Enter your username and API key in the node server configuration.\n3. The Link-Tap node server will discover your gateway and valve devices. It will create node in the IoX for each device found.\n\n- API Documentation of calls\n<a href=\"https://www.link-tap.com/#!/api-for-developers\">Link-Tap API</a>\n","status":"active","name":"LinkTap","language":"python3","developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":0,"logLevel":"INFO","ts_added":1681864857,"shortPoll":60,"author":"Bob Paauwe","discover":true,"customParams":"{\n\"username\": \"\",\n\"apiKey\":\"\"\n}","desc":"LinkTap irrigation Node Server","polisy":true,"license":"https://github.com/BME-nodeservers/udi-poly-linktap/blob/main/LICENSE","changelog":"1.0.4 - Make queries at correct poll intervals, add watering status to log\n1.0.3 - More work to get watering status correct\n1.0.2 - Fixed command and status\n1.0.1 - Fix initial bugs\n1.0.0 - Initial PG3 release.","authorize":false,"install":"install.sh","purchaseOptions":[{"price":5,"edition":"Standard","id":"7537f24d-137b-4487-bebd-4c85a13238a3","isPerpetual":true,"version":"1.0.5","branch":"main","url":"https://github.com/BME-nodeservers/udi-poly-linktap.git"}],"eisy":true,"uuid":"2d3f5eb4-ac51-4847-98b1-c97a797689b8","ts_updated":1683654506},{"docs":"https://github.com/PG3Plugins/udi-push-poly/blob/master/README.md","longPoll":600,"executable":"push-poly.py","status":"active","name":"Push","language":"python3","isyAccess":false,"developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":0,"logLevel":"INFO","ts_added":1651258851,"shortPoll":60,"author":"Mark Vittes","discover":false,"fileUpload":false,"customParams":"{\n      \"api_key\": \"\",\n      \"user_key\": \"\",\n      \"disclaimer_read\": \"\"\n }\n","desc":"Send notifications via PushOver (https://pushover.net)","polisy":true,"license":"https://github.com/PG3Plugins/udi-push-poly/blob/master/LICENSE","authorize":false,"install":"install.sh","purchaseOptions":[{"url":"https://github.com/PG3Plugins/udi-push-poly","id":"e18d3f87-2b95-4152-8b96-50d74a398f9b","edition":"Free","isPerpetual":true,"version":"2.0.2","branch":"master","price":0}],"eisy":true,"uuid":"6f25fa27-3b43-4782-ab71-293dd3d0cac7","ts_updated":1788214516},{"docs":"https://github.com/Panda88CO/udi-TeslaPW2/blob/main/README.md","longPoll":1800,"executable":"TeslaPW2main.py","readme":"To run node server user must first select data source - from Local Power Wall and/or Tesla Cloud. \nFor local access:\nEnter IP address and user_eamil/password for local and user_email/password as well as set local_sccess to True\n\nFor cloud access:\nEnter region for the power wall (NA, EU or CN) and set cloud_access to True. Save and press Authentication. Follow inpt procesure and allow access to data ","status":"active","oauth":"{\"name\":\"Tesla PW2\",\"client_id\":\"6e635ec38dc4-4d2a-a35e-f164b51f3d96\",\"client_secret\":\"ta-secret.S@z5uUjp*sxoS2rS\",\"auth_endpoint\":\"https://auth.tesla.com/oauth2/v3/authorize\",\"token_endpoint\": \"https://auth.tesla.com/oauth2/v3/token\",\"scope\":\"energy_device_data energy_cmds open_id offline_access\",\"addRedirect\":\"True\"}","name":"udiTeslaPW2","language":"python3","isyAccess":false,"developer":"christian.olgaard@gmail.com","ip_added":"73.93.40.59","nsInfoPoll":0,"logLevel":"INFO","ts_added":1724102914,"shortPoll":300,"author":"Panda88","discover":false,"fileUpload":false,"customParams":"{\"local_access_en\":\"True\",\"cloud_access_en\":\"True\",\"region\":\"Input region NA, EU, CN\",\"LOCAL_USER_EMAIL\":\"\",\"LOCAL_USER_PASSWORD\":\"\",\"LOCAL_IP_ADDRESS\":\"x.x.x.x\"}","desc":"Node to control Tesla Powerwall using official Tesla API - supports both local and cloud access","polisy":true,"license":"https://github.com/Panda88CO/udi-TeslaPW2/LICENSE","changelog":"0.1.14 - initial version\n0.1.22 - Minor bug fixes\n0.1.24 - Fixed node def issue for history node \n0.1.25 - fixed node definition bug in remaining percentage\n0.1.26 - Fixed a few unit bugs\n0.1.27 - fixed library version requirement - only relevant for new install \n0.1.28 - Forced update on library to prevent loss of token\n0.1.29 - Fixed a bug during startup\n0.1.30 - Fixed bug relating to having both power wall and wall charger \n\n","authorize":true,"install":"install.sh","purchaseOptions":[{"price":10,"edition":"Standard","id":"2866fa15-622e-4147-9436-a7051a13e261","isPerpetual":true,"version":"0.1.30","branch":"main","url":"\thttps://github.com/Panda88CO/udi-teslaPW2"},{"recurringPeriod":"day","price":0,"recurring":15,"edition":"Free","id":"0ebe4ba2-c262-42b6-a693-6b987d310053","isTrial":true,"version":"0.1.30","branch":"main","url":"https://github.com/Panda88CO/udi-teslaPW2"}],"eisy":true,"uuid":"09a306c6-ba96-4ed6-8beb-e915947d826a","ts_updated":1756311949},{"docs":"https://github.com/UniversalDevicesInc-PG3/udi-poly-Camect/blob/main/README.md","longPoll":300,"executable":"camect-poly.py","readme":"https://github.com/UniversalDevicesInc-PG3/udi-poly-Camect/blob/production/README.md","status":"active","name":"Camect","language":"python3","isyAccess":false,"developer":"jimsearle@gmail.com","ip_added":"70.181.79.77","nsInfoPoll":0,"logLevel":"DEBUG","ts_added":1640736982,"shortPoll":30,"author":"Jimbo.Automates","discover":true,"fileUpload":false,"nsdata":"{\n    \"user\": \"\",\n    \"password\": \"\"\n},\n","desc":"Camect UDI Polyglot V3 Nodeserver","polisy":true,"license":"TBD","changelog":"https://github.com/UniversalDevicesInc-PG3/udi-poly-Camect/blob/production/CHANGELOG.md","authorize":false,"install":"install.sh","purchaseOptions":[{"url":"https://pg3store.isy.io/v2/nodeservers/production/Camect-production-3.1.3.zip","branch":"","recurring":2,"id":"40736fce-8bdf-4ddd-b451-494cf1860bb1","edition":"Free","version":"3.1.3","recurringPeriod":"month","isTrial":true,"price":0},{"id":"051247ca-6275-4a98-b9a5-9f75752ce32f","price":25,"version":"3.1.3","edition":"Standard","url":"https://pg3store.isy.io/v2/nodeservers/production/Camect-production-3.1.3.zip","isPerpetual":true,"branch":""}],"eisy":true,"uuid":"76331b95-1734-4dd9-b40f-d9819f6b5e6f","ts_updated":1785098909},{"docs":"https://github.com/ve7gel/Docs/blob/main/Meteobridge/README.md","longPoll":600,"executable":"mb-poly.py","status":"active","name":"Meteobridge","language":"python3","isyAccess":false,"developer":"gordon@the-larsens.ca","ip_added":"24.69.28.14","nsInfoPoll":0,"logLevel":"DEBUG","ts_added":1678153480,"shortPoll":30,"author":"Gordon Larsen","discover":false,"fileUpload":false,"customParams":"{\n            \"Address\": \"\",\n            \"Units\": \"metric\",\n            \"Password\": \"\"\n        }","desc":"Meteobridge Node Server for IoX on PG3/PG3x","polisy":true,"license":"https://github.com/ve7gel/MeteobridgePG3/blob/main/LICENSE","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"78c4b1f1-cf28-4f30-803c-c01d91b1aadd","isPerpetual":true,"version":"3.3.0","branch":"","url":"https://github.com/ve7gel/MeteobridgePG3.git "}],"eisy":true,"uuid":"7ddf95a1-37d9-4682-816e-3fd0ae14f5f5","ts_updated":1751219178},{"docs":"https://github.com/PG3Plugins/udi-totalconnect-poly/blob/master/README.md","longPoll":240,"executable":"totalconnect-poly.py","status":"active","name":"TotalConnect","language":"python3","isyAccess":false,"developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":0,"logLevel":"INFO","ts_added":1650399599,"shortPoll":120,"author":"Dane Barentine","discover":false,"fileUpload":false,"customParams":"{\n\t\"user\": \"\",\n\t\"password\": \"\",\n\t\"include_non_bypassable_zones\": false,\n\t\"allow_disarming\": false,\n\t\"refresh_auth_interval\": 120,\n\t\"zone_query_delay_ms\": 500\n}","desc":"This project is a node server to integrate Honeywell Total Connect v2 security systems into the UDI ISY.","polisy":true,"license":"https://github.com/PG3Plugins/udi-totalconnect-poly/blob/master/LICENSE","changelog":"2.0.5 - update total-connect-client library to a newer version","authorize":false,"install":"install.sh","purchaseOptions":[{"isPerpetual":true,"version":"2.0.5","id":"5d51de29-b5c6-414d-976d-b6f50e3154e9","branch":"master","price":0,"url":"https://github.com/PG3Plugins/udi-totalconnect-poly","edition":"Free"}],"eisy":true,"uuid":"9ca1cee3-814f-4bfd-8fda-7f4725f75e90","ts_updated":1788214640},{"docs":"https://github.com/UniversalDevicesInc-PG3/udi-MySmartBlinds-nodeserver/blob/main/README.md","executable":"blinds_poly.py","status":"active","name":"MySmartBlinds","language":"python3","desc":"MySmartBlinds *Only support Blind and required a Bridge*","developer":"jf.tremblay@gmail.com","install":"install.sh","ip_added":"74.14.175.171","purchaseOptions":[],"uuid":"1ba63dd9-b9d2-44a3-a415-c25e92c1d6ec","logLevel":"DEBUG","ts_added":1635449670,"ts_updated":1635516351,"author":"AutomationGeek"},{"docs":"https://developer.isy.io","longPoll":600,"executable":"youtube_music.py","readme":"Pretty self explanatory. Simply enter your username/password for your YouTube account and let the plugin download your playlists that you can play from.","status":"active","oauth":"{\n  \"name\": \"YouTubeMusic\",\n  \"client_id\": \"868185026527-op1pqmll1ebam9f4tluo9i8a7df4rv9l.apps.googleusercontent.com\",\n  \"client_secret\": \"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\",\n  \"auth_endpoint\": \"https://accounts.google.com/o/oauth2/auth\",\n  \"token_endpoint\": \"https://oauth2.googleapis.com/token\", \"scope\":\"https://www.googleapis.com/auth/youtube.download https://www.googleapis.com/auth/youtube.readonly https://www.googleapis.com/auth/youtubepartner-channel-audit\",\"parameters\":{\"prompt\":\"consent\",\"access_type\":\"offline\"},\n \"token_parameters\": {\"redirect_uri\": \"https://my.isy.io/api/cloudlink/redirect\"}\n}","name":"YouTube","language":"python3","isyAccess":false,"developer":"tech@universal-devices.com","ip_added":"76.221.133.84","nsInfoPoll":0,"logLevel":"INFO","ts_added":1711740207,"shortPoll":60,"author":"UDTech","discover":false,"fileUpload":false,"desc":"A simple YouTube Music player that uses your own YouTube account's playlists. It can play through the audio jack or Bluetooth speakers. (eisy only)\nNOTE: This plugin is still in beta. ","polisy":false,"license":"https://developer.isy.io","changelog":"1.0.0 - Initial Beta\n1.0.2 - Fixed dependencies\n1.0.5 - Paho 2+\n1.0.6 - Fix to support youtube URL changes.\n1.0.7 - Fix for OS14\n1.0.8 - Fix for bot error\n1.1.0 - Fix Youtube URL errors\n1.1.1 - Fixed for Pythube version\n1.2.0 - Changed to yt-dlp\n","authorize":true,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"c8c3ba9f-32df-4ba4-9fe5-fe6ab93dcf0d","isPerpetual":true,"version":"1.2.0","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/youtube-1.2.0.tar.gz"}],"eisy":true,"uuid":"1cfb955b-d842-4676-860f-ac68e99f886d","ts_updated":1773443724},{"docs":"https://github.com/UniversalDevicesInc-PG3/udi-poly-hue-emu/blob/master/README.md","longPoll":60,"executable":"hue-emu-poly.py","status":"active","name":"HueEmulator","language":"python3","isyAccess":false,"developer":"jimsearle@gmail.com","ip_added":"70.181.79.77","nsInfoPoll":0,"logLevel":"WARNING","ts_added":1641791167,"shortPoll":5,"author":"Jimbo.Automates","discover":true,"customParams":"{\n        \"hue_port\": \"8080\",\n        \"isy_host\": \"your_isy_host_or_ipaddress\",\n        \"isy_port\": \"80\",\n        \"isy_user\": \"admin\",\n        \"isy_password\": \"your_isy_admin_user_password\"\n}\n","desc":"Hue Emulator Node Server","polisy":true,"license":"https://github.com/UniversalDevicesInc-PG3/udi-poly-hue-emu/blob/master/LICENSE","authorize":false,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"month","price":0,"recurring":1,"edition":"Free","id":"daef470a-c6df-4c3f-873a-67d39e8cebe6","isTrial":true,"version":"3.0.6","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/HueEmulator.zip"},{"price":10,"edition":"Standard","id":"397b02df-85d9-4011-87d7-920daaf7cd5e","isPerpetual":true,"version":"3.0.6","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/HueEmulator.zip"}],"eisy":true,"uuid":"49b1d08d-6bbe-42d1-81b7-38122a41e593","ts_updated":1703349352},{"docs":"https://github.com/BME-nodeservers/docs/blob/master/udi-rainforest-poly.md","longPoll":60,"executable":"eagle.py","status":"active","name":"Eagle-200","language":"python3","isyAccess":false,"developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":0,"logLevel":"ERROR","ts_added":1624489947,"shortPoll":15,"author":"Bob Paauwe","discover":false,"customParams":"{\n            \"IP Address\" : \"\",\n            \"Cloud ID\" : \"\",\n            \"Install Code\" : \"\"\n    }","desc":"Smart Home Energy Monitor. Monitor home electricity use.","polisy":true,"license":"https://github.com/BME-nodeservers/docs/blob/master/LICENSE","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"3a4df5a6-c649-4605-947b-9655c1afbedc","isPerpetual":true,"version":"1.0.1","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/udi-rainforest-poly.zip"}],"eisy":true,"uuid":"238c86b9-01bd-489c-a4b2-e9e120daed6f","ts_updated":1742924267},{"docs":"https://github.com/BME-nodeservers/docs/blob/master/udi-ambient-poly.md","longPoll":600,"executable":"ambient-poly.py","status":"active","name":"AmbientWeather","language":"python3","isyAccess":false,"developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":0,"logLevel":"ERROR","ts_added":1628366473,"shortPoll":60,"author":"Bob Paauwe","discover":false,"customParams":"{\n                \"API Key\": \"\"\n        }","desc":"Pull weather data from weather stations connected to Ambient Weather's ambientweather.net servers","polisy":true,"license":"https://github.com/BME-nodeservers/docs/blob/master/LICENSE","changelog":"2.0.8 - Fix wind direction UOM\n2.0.9 - All more than 9 nodes\n2.0.10 - fix bug introduced in 2.0.9\n2.0.11 - Add new fields to sensor nodes (soilhum, lightning_day, lightning_hour, eventrainin\n2.0.12 - Add new field windgustdir\n2.0.13 - Add support for soil/leak sensor battery, add support for aqi_pm25, improve battery level support\n2.0.14 - Invert rain sensor battery","authorize":false,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"day","price":0,"recurring":30,"edition":"Standard","id":"5b628b8d-3cdf-464f-8627-efe1f74b63c3","isTrial":true,"version":"2.0.14","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/udi-ambient-poly.zip"},{"price":10,"edition":"Standard","id":"96082e28-88ec-4d77-b52b-76abbacaffe4","isPerpetual":true,"version":"2.0.14","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/udi-ambient-poly.zip"}],"eisy":true,"uuid":"6f402c66-a450-4f39-a254-1cd998ce5c49","ts_updated":1737136113},{"docs":"https://github.com/PG3Plugins/udi-honeywellhome-poly/blob/master/README.md","longPoll":300,"executable":"honeywellhome-poly.py","status":"active","name":"HoneywellHome","language":"python3","isyAccess":false,"developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":0,"logLevel":"INFO","ts_added":1650400050,"shortPoll":120,"author":"Dane Barentine","discover":false,"fileUpload":false,"customParams":"{\n\t\"client_id\": \"\",\n\t\"client_secret\": \"\",\n\t\"user_id\": \"\"\n}","desc":"A node server to integrate Honeywell Home thermostats into the UDI ISY.","polisy":true,"license":"https://github.com/PG3Plugins/udi-honeywellhome-poly/blob/master/LICENSE","authorize":false,"install":"install.sh","purchaseOptions":[{"id":"e135bc1f-cb8e-43d4-9387-59128897c8c0","url":"https://github.com/PG3Plugins/udi-honeywellhome-poly","version":"2.0.1","isPerpetual":true,"edition":"Free","price":0,"branch":"master"}],"eisy":true,"uuid":"fa0ddf81-b645-4131-9a92-98da656d9209","ts_updated":1788214760},{"docs":"https://github.com/lovintexas/udi-pentair-pg3x","longPoll":300,"executable":"pentair.py","readme":"# Pentair PG3x Plugin\n\nA Universal Devices eisy / PG3x plugin for supported Pentair connected pool equipment.\n\n## Currently Supported\n\n### IntelliFlo3 / IntelliFlo Pro3 VSF\n- Online / connection status\n- Power\n- Motor speed\n- Flow\n- Pressure\n- Alarm status\n- Active program\n- Automatic discovery of configured pump programs\n- Start / Stop pump programs\n- Immediate Running / Idle feedback after commands\n\n### Color Sync\n- Online / connection status\n- On / Off\n- Current color or light show\n- Red\n- White\n- Magenta\n- Green\n- Blue\n- Hold\n- Recall\n- SAm\n- Party\n- Romance\n- Caribbean\n- American\n- Sunset\n- Royal\n\n### IntelliCenter\n- Automatic discovery of IntelliCenter equipment\n- Pool and spa body status and temperature\n- Pool and spa On / Off control\n- Heat setpoint control\n- Heat source selection\n- IntelliCenter pump status and control\n- Automatic discovery of pump circuit assignments\n- RPM / GPM mode selection and rate control for pump assignments\n- Heater status and control\n- IntelliChem pH, ORP, salt, alkalinity, calcium, and CYA monitoring\n- IntelliChem pH and ORP setpoint control\n- IntelliChlor salt level, output, and Super Chlorinate status\n- Auxiliary/circuit On / Off control\n- IntelliCenter color-light On / Off control\n- Color and light-show selection\n- Hold and Recall light commands\n## Configuration\n\nConfigure the following PG3x Custom Parameters:\n\n- `username` — Pentair account email address\n- `password` — Pentair account password\n\nThe plugin authenticates to the Pentair cloud and automatically discovers supported equipment associated with the account.\n\n## Notes\n\nOther Pentair device types may be discovered and logged but are ignored until explicit support is added.\n\nThis project is not affiliated with or endorsed by Pentair.","status":"active","name":"Pentair","language":"python3","isyAccess":false,"developer":"dr-apo@dr-apo.com","ip_added":"::ffff:72.177.80.34","nsInfoPoll":0,"logLevel":"INFO","ts_added":1787509396.53,"shortPoll":60,"author":"Louis Apostolakis","discover":false,"fileUpload":false,"aiTools":"","customParams":"{\n  \"username\": \"\",\n  \"password\": \"\"\n}","aiPrompt":"","desc":"Universal Devices eisy / PG3x plugin for Pentair connected pool equipment.\n\nSupports IntelliFlo3 / IntelliFlo Pro3 VSF pumps, Color Sync, and IntelliCenter systems including pool/spa control, heating, pump circuit assignments, IntelliChem, IntelliChlor, auxiliary circuits, and color lighting.\n\nProvides automatic equipment discovery, real-time status, and control through IoX.","license":"https://github.com/lovintexas/udi-pentair-pg3x","changelog":"1.1.5\n\n-Improved Color Sync light integration with UD Mobile, including direct On/Off control.\n-Improved IntelliCenter light integration with UD Mobile, including direct On/Off control.\n\n1.1.4\n-Fixed IntelliFlo3 Active Program display so the idle state shows \"None\" instead of 100. Active programs continue to display as 1–8.\n\n1.1.3\n- Use IntelliCenter user-defined profile names for Pool/Spa body nodes\n- Rename pump assignment nodes to \"<Profile Name> - Pump Speed\"\n- Fixed Pool/Spa temperature statuses so they are available in IoX Program conditions\n\n1.1.2\n- Added Pool and Spa heat setpoint control\n- Added Pool and Spa heat source selection\n- Added automatic discovery of IntelliCenter pump circuit assignments\n- Added RPM / GPM mode and rate control for pump assignments\n- Added IntelliChem pH setpoint control\n- Added IntelliChem ORP setpoint control\n- Improved IntelliCenter real-time update handling\n\n1.1.1\n- Fixed IntelliCenter node availability in IoX Programs\n- Added IntelliChlor, IntelliChem, and IntelliCenter pump status fields to IoX Programs\n\n1.1.0\n- Added initial IntelliCenter support\n- Added automatic IntelliCenter equipment discovery\n- Added pool/spa body support\n- Added IntelliCenter pump support\n- Added heater support\n- Added chemistry and chlorinator support\n- Added auxiliary/circuit On/Off control\n- Added IntelliCenter color-light support","authorize":false,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"day","recurring":30,"version":"1.1.5","isTrial":true,"url":"https://github.com/lovintexas/udi-pentair-pg3x.git","edition":"Standard","price":0,"id":"bc610723-5ab7-4a36-9f79-93d6d32fdf91","branch":"main"},{"version":"1.1.5","isPerpetual":true,"edition":"Standard","branch":"main","id":"9b34104f-edc9-415d-ad15-337ddeba907b","url":"https://github.com/lovintexas/udi-pentair-pg3x.git","price":20}],"uuid":"7f60fdfd-a663-4b43-9528-18b2396d47c4","requireEisyui":false,"ts_updated":1788725869.94},{"docs":"https://github.com/BME-nodeservers/docs/blob/master/udi-noyito-poly.md","longPoll":600,"executable":"noyito.py","readme":"NOYITO - 1, 2, 4, 8 channel USB relay board.\n\nA node server that works with the Noyito USB relay boards.  This has been tested with the 2 channel and 8 channel boards but should work with the 1 channel and 4 channel boards as well.\n\nThis make work with other brands of USB relay boards if they use the\nsame protocol.\n\nThe Noyito board is available from Amazon at: <a href=\"https://www.amazon.com/NOYITO-2-Channel-Module-Control-Intelligent/dp/B081RM7PMY\" target=\"_blank\">NOYITO</a>\n\nThe steps for installing are:\n* Install the node server before plugging in the USB relay.  Wait for the the node server to fully install.\n* Plug in the USB relay\n* Determine which device was created (ls -l /dev/ttyU*)\n* Configure the node server with the proper device for the relay\n* Wait about a minute for the relay board to initialize\n\nTo configure the node server, you need to specify the serial device created\nwhen the board is connected.  The device should be one of the /dev/ttyUx devices.\n\nWhen used with PG3, you may have to set the permissions of the device so that \npolyglot can access it. Doing\n\n<i>sudo chmod 666 /dev/ttyUx</i>\n\nsubstituting the actual device name for the ttyUx above.\n\nPG3x should take care of setting the correct permissions for you.\n\n","status":"active","devd":"{\n        \"filename\": \"noyito.conf\"\n}\n","name":"Noyito-Relay","language":"python3","isyAccess":false,"developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":0,"logLevel":"INFO","ts_added":1682974092,"shortPoll":60,"author":"Bob Paauwe","discover":false,"defaultOption":"0b0087f3-1c3a-4326-84b3-c96fd31e9e6e","customParams":"{\n\"serial port\":  \"/dev/pg3.noyito\",\n\"number of relays\": \"\"\n}","desc":"Noyito USB Relay boards","polisy":true,"license":"https://github.com/BME-nodeservers/docs/blob/master/LICENSE","changelog":"1.1.1 - continue with default serial port if left blank\n1.1.0 - added support for 8 channel boards\n1.0.4 - default serial port to /dev/pg3.noyito\n1.0.3 - Force sending status even if it hasn't changed.\n1.0.2 - fixed DOF button\n1.0.1 - Changed nodedef/profile\n1.0.0 - Initial Release","authorize":false,"install":"install.sh","purchaseOptions":[{"price":20,"edition":"Standard","id":"0b0087f3-1c3a-4326-84b3-c96fd31e9e6e","isPerpetual":true,"version":"1.1.1","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/udi-noyito-poly.zip"}],"eisy":true,"uuid":"a8183bf4-bdbe-4d8a-946a-30a7546a4a7b","ts_updated":1728674395},{"docs":"https://github.com/BME-nodeservers/docs/blob/master/udi-dsdtech-poly.md","longPoll":600,"executable":"dsdtech.py","readme":"DSD TECCH - SH-UR01A  USB relay board.\n\nA node server that works with the DSD TECH USB relay board.\n\nThis make work with other brands of USB relay boards if they use the same protocol.\n\nThe DSD Tech board is available from Amazon at: <a href=\"https://www.amazon.com/DSD-TECH-SH-UR01A-Controller-Computer/dp/B09PYML6Q7/\" target=_blank>SH-UR01A</a>\n\nThe steps for installing are:\n* Install the node server before plugging in the USB relay.  Wait for the the node server to fully install.\n* Plug in the USB relay\n* Determine which device was created (ls -l /dev/ttyU*)\n* Configure the node server with the proper device for the relay\n* Wait about a minute for the relay board to initialize\n\nTo configure the node server, you need to specify the serial device created when the board is connected.  The device should be one of the /dev/ttyUx devices.\n\nWhen used with PG3, you may have to set the permissions of the device so that polyglot can access it. Doing\n\n<i>sudo chmod 666 /dev/ttyUx</i>\n\nsubstituting the actual device name for the ttyUx above.\n\nPG3x should take care of setting the correct permissions for you.\n\n","status":"active","devd":"{\n\"filename\": \"dsdtech.conf\"\n}","name":"DSDTech-Relay","language":"python3","isyAccess":false,"developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":0,"logLevel":"INFO","ts_added":1682974153,"shortPoll":60,"author":"Bob Paauwe","discover":false,"customParams":"{\n\"serial port\": \"/dev/pg3.dsdtech\"\n}","desc":"DSD Tech USB Relay","polisy":true,"license":"https://github.com/BME-nodeservers/docs/blob/master/LICENSE","changelog":"1.0.4 - Don't send instant status updates in response to incoming command\n1.0.3 - Default serial port to /dev/pg3.dsdtech\n1.0.2 - Force sending status even if not changed.\n1.0.1 - change nodedef/profile\n1.0.0 - Initial release","authorize":false,"install":"install.sh","purchaseOptions":[{"price":15,"edition":"Standard","id":"e0f5d378-e765-4067-b830-5aca4a9f47c1","isPerpetual":true,"version":"1.0.4","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/udi-dsdtech-poly.zip"}],"eisy":true,"uuid":"8d27141d-2750-43a3-9cea-c754ab3e72ed","ts_updated":1692815077},{"docs":"NA","longPoll":600,"executable":"moenflo-poly.py","readme":"https://github.com/jimboca/udi-poly-moenflo/blob/production/README.md","status":"active","name":"MoenFlo","language":"python3","isyAccess":false,"developer":"jimsearle@gmail.com","ip_added":"68.224.233.143","nsInfoPoll":0,"logLevel":"DEBUG","ts_added":1783563690,"shortPoll":60,"author":"JimBo.Automates","discover":false,"fileUpload":false,"desc":"Plugin for Moen Flow Devices","polisy":true,"license":"NA","changelog":"https://github.com/jimboca/udi-poly-moenflo/blob/production/CHANGELOG.md","authorize":false,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"day","price":0,"recurring":14,"edition":"Free","id":"e9feb3c1-1073-4c79-bfc7-b02829705438","isTrial":true,"version":"1.0.2","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/MoenFlo-production-1.0.2.zip"},{"price":10,"edition":"Standard","id":"04e39534-f91c-4c22-ac35-a7245f8e3a31","isPerpetual":true,"version":"1.0.2","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/MoenFlo-production-1.0.2.zip"}],"eisy":true,"uuid":"f58eb1a5-fb93-4ff5-b910-2b18d5b93a55","ts_updated":1783563745},{"docs":"https://goose66.github.io/nsdocs/ratgdo-pg3.html","longPoll":600,"executable":"main.py","readme":"A plugin for PG3/PG3x that allows IoX to connect to ratgdo devices for full access and control of Liftmaster and Chamberlain garage door openers, as well as limited functions of other brands which use dry contacts to control the door.\n\nClick \"More Info\" below for installation instructions and release notes.","status":"active","name":"ratgdo","language":"python3","isyAccess":false,"developer":"kingwrandy@gmail.com","ip_added":"75.131.193.229","nsInfoPoll":0,"logLevel":"INFO","ts_added":1703009596,"shortPoll":30,"author":"W. Randy King (Goose66)","discover":true,"fileUpload":false,"desc":"Allows IoX to access and control ratgdo devices for garage door opener control.","polisy":true,"license":"https://goose66.github.io/nsdocs/license.html","changelog":"4.0.8 - ESPHome Firmware Support (2024-06-14)\n- Refactored node definitions to have a parent GDO node\n- Now utilizes REST/Event Stream interface of ESPHome firmware\n\n3.2.6 - Bug fix (2024-06-18)\n- updated parameters to mqtt.Client() for paho-mqtt 2.0\n\n3.2.5 - New Features (2024-01-30)\n- GDO nodes have motion state \n- GDO nodes send DON3 (\"Motion\") command on motion \"events\"\n- GDO motion state set to clear 60 seconds after last motion event\n- Names added to driver list (in PG3 dashboard)\n- Light nodes now child nodes of GDO nodes\n\n3.1.4 - Upgrades (2024-01-05)\n- discovered devices subscribe to own topics eliminating some configuration\n- GDO and Light nodes send DON and DOF commands in response to status change\n- completed implementation of support for alternative MQTT brokers\n\n3.0.3 - Bug Fixes (2023-12-21)\n- force UOM of ST to Index (25) on every setDriver call\n- fix updating of lockout state\n\n3.0.2 - Bug Fixes (2023-12-20)\n- bug fixes from initial field testing\n- changed door state driver to index w/ text labels\n\n3.0.1 - Pre-release (2023-12-19)\n\n","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"301ee2d2-77b4-4846-b11f-9fef07a43d5a","isPerpetual":true,"version":"3.2.6","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/ratgdo-pg3-3.2.6.zip"},{"price":10.95,"edition":"Standard","id":"6991e348-20c7-4bbf-8107-9dc12ab9f7a1","isPerpetual":true,"version":"4.0.8","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/ratgdo-pg3-4.0.8.zip"},{"recurringPeriod":"month","price":0,"recurring":1,"edition":"Standard","id":"f2a834a4-56db-4e1b-a9dd-a419a3d7090d","isTrial":true,"version":"4.0.8","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/ratgdo-pg3-4.0.8.zip"}],"eisy":true,"uuid":"7f45e0a9-96ba-49eb-9ba8-35d3507986b4","ts_updated":1718746848},{"longPoll":1800,"docs":"https://github.com/UniversalDevicesInc-PG3/udi-solaredge-poly","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","language":"python3","isyAccess":false,"developer":"ken@sandbergweb.com","ip_added":"38.15.60.78","nsInfoPoll":60,"logLevel":"WARNING","ts_added":1777775270,"shortPoll":60,"author":"Ken Sandberg","discover":false,"fileUpload":false,"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,"purchaseOptions":[{"price":0,"edition":"Free","id":"5c42bd6a-7303-4df5-b138-ab3686af3cc7","isPerpetual":true,"version":"1.1.8","branch":"Extended-w-2026-API-fix","url":"https://github.com/UniversalDevicesInc-PG3/udi-solaredge-poly"}],"install":"install.sh","eisy":true,"uuid":"e438aab6-b5b8-4cda-b3d7-31b614b8f50b","ts_updated":1777775270}]