[{"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","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 node server for control of AutoMower","polisy":true,"license":"http://github.com/BME-nodeservers/docs/blob/master/LICENSE","authorize":false,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"day","price":0,"recurring":30,"edition":"Free","id":"37a1b2ea-82a9-4691-8e49-c7042d63d922","isTrial":true,"version":"2.0.1","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/udi-mower-poly.zip"},{"price":10,"edition":"Standard","id":"30c4dd5b-84a6-42c2-814d-912af48ce7ad","isPerpetual":true,"version":"2.0.1","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/udi-mower-poly.zip"}],"eisy":true,"uuid":"c9527579-10bd-4be3-8f12-e6c40e57aabf","ts_updated":1735669701},{"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":"INFO","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.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.4.0","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/Timedata.zip"}],"eisy":true,"uuid":"e5d6bed5-e04d-4cd1-a065-f94fccd9c674","ts_updated":1761782608},{"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","version_na":"0.6.1","nsInfoPoll":0,"profile_version":"1.8.50","logLevel":"INFO","ts_added":1667342280,"shortPoll":600,"author":"Panda88CO","discover":false,"fileUpload":false,"prem":true,"customParams":"{\"UAID\":\"\",\"SECRET_KEY\":\"\",\"TEMP_UNIT\":\"C\",\"WATER_UNIT\":\"Liters\", \"NBR_TTS\":\"1\"}","desc":"Nodeserver to allow integration of Yolink devices","polisy":true,"license":"https://github.com/Panda88CO/udi-yolink/blob/main/LICENSE","changelog":"1.8.51- fixed water meter correction factor\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":[{"price":20,"edition":"Standard","id":"4310fb80-b38f-4f0d-b80e-d06af77cdb12","isPerpetual":true,"version":"1.8.51","branch":"REL260506","url":"https://github.com/Panda88CO/udi-yolink"},{"recurringPeriod":"day","price":0,"recurring":15,"edition":"Standard","id":"f244121f-1e41-4539-8fd6-63e735c92baa","isTrial":true,"version":"1.8.51","branch":"REL260506","url":"https://github.com/Panda88CO/udi-yolink"}],"eisy":true,"uuid":"78312440-23ea-4ed6-9361-9cdc2d5e7c6b","devMode":false,"ts_updated":1778545036},{"longPoll":60,"docs":"https://github.com/UniversalDevicesInc-PG3/udi-sun-poly/master/blob/README.md","executable":"sun-poly.py","discover":false,"status":"active","name":"Sun","customParams":"{\n  \"longitude\": \"\",\n  \"latitude\": \"\",\n  \"elevation\": 0\n}\n","language":"python3","desc":"Sun and Moon tracker","developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","authorize":false,"purchaseOptions":[{"price":0,"edition":"Free","isPerpetual":true,"id":"1bc8f003-a8b8-4eba-9c3f-cad65c9c7e99","branch":"master","version":"0.0.3","url":"https://github.com/UniversalDevicesInc-PG3/udi-sun-poly"}],"install":"install.sh","nsInfoPoll":0,"logLevel":"INFO","uuid":"c8bb9415-08c7-4cd0-8640-532bebce4e41","ts_added":1650652784,"shortPoll":30,"ts_updated":1650652784,"author":"xKing"},{"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","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":"- 1.2.7: 08/15/2024\n  - Fix \"wait for 5 minutes\" not waiting after INVALID_REQUEST_CLIENTS_LIMIT_EXCEEDED \n- 1.2.6: 08/14/2024\n  - Fix issue with short poll to small error not being cleared\n- 1.2.5: 08/13/2024\n  - Try harder to clear short poll to small error\n- 1.2.4: 08/11/2024\n  - Restore \"Auto Short Poll\" and \"Short Poll\" values as saved in PG3 DB\n- 1.2.3: 07/29/2024\n  - Increase longPoll if less than shortPoll\n- 1.2.2: 07/23/2024\n  - Fix crash after Airthings server error\n- 1.2.1: 07/20/2024\n  - Try to set proper initial values on existing installs for Auto Short Poll = True\n- 1.2.0: 07/20/2024\n  - [Add driver for short poll interval](https://github.com/UniversalDevicesInc-PG3/udi-poly-Airthings-Consumer/issues/23)\n  New Feature: The Controller has \"Auto Set Short Poll\" which will automatically set the short poll to the minimum value.  If disabled, you can manually set it with the driver \"Short Poll\" on the controller.\n- 1.1.3: 06/04/2024\n  - Force pushing values to IoX on manual query\n  - Don't poll device if authorization fails\n  - If rate limit is exceeded, wait 5 minutes before polling again\n- 1.1.2: 05/31/2024\n  - Better tracking of polling device count\n  - Fix [Do not allow multiple concurrent queries](https://github.com/UniversalDevicesInc-PG3/udi-poly-Airthings-Consumer/issues/22)\n- 1.1.1: 05/25/2024\n  - Track Total Sensors, and Sensors actively polled.  Uses the later to calculate what the minimum polling time should be.\n  - Added driver names so they show up on the PG3 Nodes page.\n 1.1.0: 05/24/2024\n  - Fix [Add ability to turn off polling for some device](https://github.com/UniversalDevicesInc-PG3/udi-poly-Airthings-Consumer/issues/21)\n  - Fix [Add IoX timestamp drive and/or second since update](https://github.com/UniversalDevicesInc-PG3/udi-poly-Airthings-Consumer/issues/20)\n  - Fix crash if airthings session is slow to start\n  - Switch to new PG versioning method\n- 1.0.2: 01/10/2023\n  - Fix [Fatal error when printing error received](https://github.com/UniversalDevicesInc-PG3/udi-poly-Airthings-Consumer/issues/17)\n- 1.0.1: 12/12/2022\n  - Force udi_interface to 3.0.51\n  - Fix crash on initial startup if not authorized\n- 1.0.0: 12/11/2022\n  Been around long enough to be 1.0.0\n  - Fixed [Crash when trying to print error message](https://github.com/UniversalDevicesInc-PG3/udi-poly-Airthings-Consumer/issues/15)\n  - Fixed [Server Status is integer in program reference, should be boolean](https://github.com/UniversalDevicesInc-PG3/udi-poly-Airthings-Consumer/issues/16)\n  - Enhancement [Add ability to rename nodes](https://github.com/UniversalDevicesInc-PG3/udi-poly-Airthings-Consumer/issues/14)\n  - For [Check why rate limit is being hit](https://github.com/UniversalDevicesInc-PG3/udi-poly-Airthings-Consumer/issues/13)\n    - Add warning and PG3 UI notice if users shortPoll is to low\n  - Fixed [Send all data on a query](https://github.com/UniversalDevicesInc-PG3/udi-poly-Airthings-Consumer/issues/12)\n  - Documented [Confirm what the time value is from Airthings API](https://github.com/UniversalDevicesInc-PG3/udi-poly-Airthings-Consumer/issues/11)\n- 0.0.6: 07/05/2022\n  - Fixed [Crash on query](https://github.com/UniversalDevicesInc-PG3/udi-poly-Airthings-Consumer/issues/6)\n- 0.0.5: 07/04/2022\n  - Fixed [Can not use nodes in programs](https://github.com/UniversalDevicesInc-PG3/udi-poly-Airthings-Consumer/issues/5)\n- 0.0.4: 07/04/2022\n  - Fixed discover which was broken in 0.0.2\n- 0.0.2: 07/04/2022\n  - Fixed profile errors\n  - Fixed [Refresh Token bug](https://github.com/UniversalDevicesInc-PG3/udi-poly-Airthings-Consumer/issues/4)\n  - Fixed [Properly trap errors bug](https://github.com/UniversalDevicesInc-PG3/udi-poly-Airthings-Consumer/issues/3)\n  - Fixed [CONFIG doc not being loaded bug](https://github.com/UniversalDevicesInc-PG3/udi-poly-Airthings-Consumer/issues/2)\n  - Fixed [Must restart node server after setting client id and secret bug](https://github.com/UniversalDevicesInc-PG3/udi-poly-Airthings-Consumer/issues/1)\n- 0.0.1: 07/03/2022\n  - Initial release\n","authorize":false,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"month","price":0,"recurring":1,"edition":"Free","id":"e6ba4968-cb9e-4de1-bc52-6c7c1a8352c1","isTrial":true,"version":"1.2.7","branch":null,"url":"http://pg3store.isy.io/v2/nodeservers/production/Airthings-Consumer.zip"},{"price":20,"edition":"Standard","id":"8e120a35-eb9a-42e9-8c97-64449f674ac6","isPerpetual":true,"version":"1.2.7","branch":null,"url":"https://pg3store.isy.io/v2/nodeservers/production/Airthings-Consumer.zip"}],"eisy":true,"uuid":"8aa2fdf9-804e-4527-a3aa-42099fbaf26a","ts_updated":1723778091},{"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":[{"recurringPeriod":"month","price":0,"recurring":1,"edition":"Free","id":"445a9984-b71a-4870-ab24-8a04943442e7","isTrial":true,"version":"3.0.10","branch":"","url":"http://pg3store.isy.io/v2/nodeservers/production/HarmonyHub.zip"},{"price":20,"edition":"Standard","id":"3a51b975-4d09-4fef-933a-70eb9b20dc44","isPerpetual":true,"version":"3.0.10","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/HarmonyHub.zip"}],"eisy":true,"uuid":"3fb966ec-f811-49bd-87ca-8bedf1420f82","ts_updated":1717805130},{"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/UniversalDevicesInc-PG3/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/UniversalDevicesInc-PG3/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":[{"price":0,"edition":"Free","id":"e24dff66-902a-4401-80ed-513fc7bca3e9","isPerpetual":true,"version":"2.0.13","branch":"master","url":"https://github.com/UniversalDevicesInc-PG3/udi-sensibo-poly.git"}],"eisy":true,"uuid":"2cd1ff14-8482-4947-a806-e5fa6f42f793","ts_updated":1750183663},{"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":"https://github.com/UniversalDevicesInc-PG3/Virtual/blob/v3.1.2x/README.md","longPoll":30,"executable":"udi-Virtual-pg3.py","status":"active","name":"Virtual","language":"python3","isyAccess":true,"developer":"stephenearljenkins@me.com","ip_added":"67.161.168.17","nsInfoPoll":0,"logLevel":"INFO","ts_added":1652738273,"shortPoll":3,"author":"headrom/B.Paauwe/M.Vittes","discover":true,"fileUpload":true,"desc":"Create Virtual Devices for use in scenes and programs","polisy":true,"license":"https://github.com/UniversalDevicesinc-PG3/Virtual/blob/v3.1.2x/LICENSE","changelog":"VERSION = '3.1.26'\n\"\"\"\n3.1.26\nDONE add timeout to ratgdo requests and sse client to prevent hanging\nDONE chg DFOF to DOF for Toggle & onDelay\n\n3.1.25\nDONE add onOnly device\nDONE update generic project files\nDONE Controller comments, refactor checkParams\nDONE change hints for temperature devices\nDONE testing added\n\n3.1.24\nDONE configuration based optional override initial default\n\n\"\"\"\n3.1.23\nDONE add onDelay, offDelay switch, update documentation\nDONE magic number scrub\n\n3.1.22\nDONE generic/dimmer static/dynamic behaviour\n\n3.1.21\nDONE generic/dimmer to model dimmer ST & OL\nDONE name & address check using poly interface\nDONE consistent use of poly versus polyglot\nDONE fix nagging error check in main()\nDONE controller discover refactor\nDONE add notice for ISY authorized error (was only in logs)\n\n3.1.20\nDONE fix controller ST \"status\" on at start, off at stop / delete, \"control\" still heartbeat\nDONE garage send CMDs, motor, motion, obstruction ; get naming consistent\nDONE standardize startup sequence\nDONE rewrite checkParams, Discovery\nDONE add NumberOfNodes\nDONE switch/generic/dimmer/temp(R/C): nodes use polyglot persistence, delete old db files\nDONE swtich cmd TOGGLE add\nDONE consolidate temp, tempC, tempRC into one module\nDONE temp variable writing now with shortPoll (only upon change, considers precision)\nDONE refactor function naming\nDONE refactor garage, fix persistence, sse client\nDONE backfeed garage improvements to switch(done), generic(done), temperature()\n\n\n3.1.15\nDONE generic, dimmer, change ST to OL, memory of level for DON, DFON/DFOF, command\n\n3.1.14\nDONE commands for switches, generic, dimmer, garage\n\n3.1.13\nDONE prevent direct poll from re-running\nDONE add notice if comms check fails\nDONE clean-up & debug\n\n3.1.12\nDONE rewrite sse events collection\n\n3.1.11\nDONE poll on longPoll, events sse\nDONE add motor, door position\nDONE update docs\nTODO Bonjour discovery is sometimes slow\n\n3.1.10\nDONE rewrite switch, dimmer, temp, tempc, garage\nDONE docs\nDONE move db files to subfolder\n\n3.1.9\nDONE Garage device read status directly from Ratgdo through ESPHome RESTapi\nDONE update docs for garage Ratgdo integration\nFIX  switch st uom from 2 True/False to 25 On/Off\n\n3.1.8\nDONE Garage device sends commands directly to Ratgdo through ESPHome RESTapi\nDONE Bonjour discovery of Ratgdo garage device\n\n3.1.7\nDONE Small refactors\nDONE redo environment\n\n3.1.6\nFIX better solution to markdown2 issue\n\n3.1.5\nFIX repair docs due to markdown2 issue\n\n3.1.4\nDONE docs updated for garage\n\n3.1.3\nDONE: new device 'garage' door (update to/from variables option)  \n\n3.1.2\nDONE: ISY name changes based on updates to config / YAML / JSON\n\n3.1.1\nDONE: YAML file option for configuration  \nDONE: JSON option for web based configuration  \nDONE: Discover button to update based on config updates  \n\n3.1.0\nDONE: move version history out of README to own file\nDONE: update docs  \n\n3.0.1\nDONE fix get value from variable\n\n3.0.0\nDONE add control ability to contact device\nDONE refactored to modern template\n","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"671a0b64-3de5-434d-a20e-350e38ee5a37","isPerpetual":true,"version":"3.1.26","branch":"v3.1.2x","url":"https://github.com/UniversalDevicesInc-PG3/Virtual.git"}],"eisy":true,"uuid":"2bc787f3-277a-42b1-839f-e85561e1604f","ts_updated":1767543529},{"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/UniversalDevicesInc-PG3/udi-onkyoavr-poly/blob/master/README.md","longPoll":600,"executable":"AVRServer.py","discover":true,"status":"active","name":"OnkyoAVR","language":"python3","desc":"Control/Status for Onkyo or Pioneer AVR.","developer":"bpaauwe@bobsplace.com","authorize":false,"install":"install.sh","ip_added":"67.161.168.17","purchaseOptions":[{"price":0,"edition":"Free","isPerpetual":true,"id":"2695766c-8301-4606-8054-ff2d9a1c065e","branch":"master","version":"1.0.2","url":"https://github.com/UniversalDevicesInc-PG3/udi-onkyoavr-poly"}],"nsInfoPoll":0,"logLevel":"INFO","uuid":"a3978e6a-c2e9-4e00-83cb-29c03f150834","ts_added":1651530791,"shortPoll":30,"ts_updated":1651701322,"author":"TangoWhiskey1"},{"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 Nodeserver 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,"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.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":[{"recurringPeriod":"day","price":0,"recurring":7,"edition":"Standard","id":"7c0712f6-0406-46c2-946e-5629adda73b3","isTrial":true,"version":"1.0.12","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/pg3_inventory.zip"},{"price":5,"edition":"Standard","id":"bf792bfd-00e9-44c2-8399-ef547f9bbd88","isPerpetual":true,"version":"1.0.12","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/pg3_inventory.zip"}],"eisy":true,"uuid":"c126923a-afcd-4e6d-9e46-58576796f551","ts_updated":1709147622},{"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.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.7","branch":"REL260501","url":"https://github.com/Panda88CO/udi-Broadlink"},{"price":10,"edition":"Standard","id":"5651177f-97ca-4c4a-a365-00f0a630f454","isPerpetual":true,"version":"0.2.7","branch":"REL260501","url":"https://github.com/Panda88CO/udi-Broadlink"}],"eisy":true,"uuid":"5bf099a4-e653-4644-b2d6-359db6a9c472","ts_updated":1777678575},{"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/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.2","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.2","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/udi-bambu-poly.zip"}],"eisy":true,"uuid":"e9d207b0-a165-40e9-b747-38eafa498f2d","ts_updated":1757004135},{"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.","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"a5df469f-6861-4560-b1e9-43e26b4f4faa","isPerpetual":true,"version":"2.0.17","branch":"master","url":"https://github.com/BME-nodeservers/udi-roomba-poly"}],"eisy":true,"uuid":"3e24cce1-59d3-45b3-9bde-7adedd954d38","ts_updated":1762098847},{"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","discover":true,"status":"active","name":"ST-Nuheat","language":"node","desc":"Nuheat Signature Thermostat Integration","polisy":true,"developer":"bpaauwe@bobsplace.com","changelog":"1.0.3 - Update to support eisy","authorize":false,"install":"install.sh","ip_added":"50.110.193.30","purchaseOptions":[{"recurringPeriod":"day","price":0,"recurring":7,"edition":"Free","id":"880c8c2a-82f0-48d1-81e3-d0a6d9ca30b8","isTrial":true,"version":"1.0.3","branch":null,"url":"https://pg3store.isy.io/v2/nodeservers/production/pg3_nuheat.zip"},{"price":25,"edition":"Standard","id":"d8d0c45e-68ad-4eae-a253-c83ac457463b","isPerpetual":true,"version":"1.0.3","branch":null,"url":"https://pg3store.isy.io/v2/nodeservers/production/pg3_nuheat.zip"}],"eisy":true,"nsInfoPoll":0,"logLevel":"WARNING","uuid":"fe68cc72-6f60-4f48-b436-5bfb126710b0","ts_added":1652068221,"shortPoll":180,"ts_updated":1675098899,"author":"Simplex Technology"},{"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},{"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"},{"longPoll":60,"docs":"https://github.com/UniversalDevicesInc-PG3/holidays-poly/blob/master/README.md","executable":"holidays_server.py","discover":false,"status":"active","name":"Holidays","language":"python3","desc":"Maintains list of holidays and vacations","developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","authorize":false,"purchaseOptions":[{"price":0,"edition":"Free","isPerpetual":true,"id":"a3e8c5c4-b8e4-4e46-872d-87a1e8fbdb49","branch":"master","version":"1.0.0","url":"https://github.com/UniversalDevicesInc-PG3/holidays-poly"}],"install":"install.sh","nsInfoPoll":0,"logLevel":"INFO","uuid":"767e6659-56d8-4049-a928-3abefc388cb8","ts_added":1650393047,"shortPoll":15,"ts_updated":1650393047,"author":"FirstOne"},{"docs":"https://github.com/UniversalDevicesInc-PG3/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,"desc":"Plug-in for Sonos speakers.  Provides status and control for the individual speakers.","polisy":true,"license":"https://github.com/UniversalDevicesInc-PG3/udi-sonos-poly/blob/master/LICENSE","changelog":"3.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":[{"price":0,"edition":"Free","id":"862e823a-4253-4b0c-89be-76997cfa8ee8","isPerpetual":true,"version":"3.0.2","branch":"master","url":"https://github.com/UniversalDevicesInc-PG3/udi-sonos-poly"}],"eisy":true,"uuid":"fceec281-4331-43c1-8c99-3ee17d2ceadb","ts_updated":1702064323},{"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":"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/master/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":"- 3.6.16: 01/01/2025\n  - Fixed: [Group Names Not Updated on Change](https://github.com/UniversalDevicesInc-PG3/udi-poly-notification/issues/58)\n  - Fixed: [UDM Notification Group index's are changing](https://github.com/UniversalDevicesInc-PG3/udi-poly-notification/issues/57)\n- 3.6.15: 06/06/2024\n  - Fixed Notify node sending to UDMobile\n- 3.6.14: 05/10/2024\n  - Fixed: [Increase Read timeout](https://github.com/UniversalDevicesInc-PG3/udi-poly-notification/issues/54)\n  - Fixed: [Pushover: Use Customization Subject as Title](https://github.com/UniversalDevicesInc-PG3/udi-poly-notification/issues/55)\n  - Also for Notify Node's use the Node Name as the title\n- 3.6.12: 01/19/2024\n  - Added more info to the \"Please Define api key\" message.\n- 3.6.11: 08/19/2023\n  - Fixed: [ERROR after adding portal api key](https://github.com/UniversalDevicesInc-PG3/udi-poly-notification/issues/50)\n- 3.6.10: 08/16/2023\n  - Properly set config doc on startup\n  - Add node names for PG3 UI\n  - UD Mobile wait to send message until node is ready in case message is sent on startup\n- 3.6.8: 06/25/2023\n  - Add support for UDMobile <a href=\"#notify-node\">notify node</a> with updated <a href=\"#notify-nodes-with-predefined-messages\">Instructions</a>.\n  - Fix Pushover defaults when not supplied\n  - Only show reboot message for UD Mobile, will add for others when Admin Console is fixed.\n- 3.6.7: 06/23/2023\n  - Update to pass NS version the new way\n- 3.6.6: 06/22/2023\n  - Fix bug which caused a lot of the configuration documentation to not show up\n    - Also add more info to configuration doc, still more to add.\n- 3.6.5: 06/22/2023\n  - Fixed error message\n- 3.6.4: 06/21/2023\n  - Now requires an even newer version of PG3/PG3x, which isn't released yet, to fix pushover messages using sys_notify_full\n  - Trap old uom issues with UD Mobile nodes\n- 3.6.3: 06/20/2023\n  - Bug fixes for new [System Customizations](#system-customizations)\n- 3.6.2: 06/15/2023\n  - Support _sys_notify_full and _sys_notify_short based on ISY Version and PG3 version See [System Customizations](#system-customizations)\n- 3.6.0: 06/08/2023 (In Beta Only)\n  - Convert to sys_notify_full to send full custom messages!\n  - Only compatible with IoX 5.6.2 and above\n  - Release for testing with PG3 & UD Mobile.\n- 3.5.9: 06/11/2023\n  - Fixed usage of devices and groups for ISYPortal nodes.\n  - Fixed [Crash on restart](https://github.com/UniversalDevicesInc-PG3/udi-poly-notification/issues/40)\n  - Fixed [Crash on bad Config data](https://github.com/UniversalDevicesInc-PG3/udi-poly-notification/issues/42)\n  - Fixed [Crash when message id is not defined](https://github.com/UniversalDevicesInc-PG3/udi-poly-notification/issues/43)\n  - Fixed [Do not try to initialize Pushover when initialize fails](https://github.com/UniversalDevicesInc-PG3/udi-poly-notification/issues/27)\n- 3.5.8: 06/06/2023\n  - Fixes for Free version to start UDMobile node.\n- 3.5.4: 05/23/2023\n  - Support \"Free\" Limited version see [Editions](#editions)\n- 3.5.3: 05/23/2023\n  - Many fixes for [UD Mobile](#ud-mobile) node.\n- 3.5.2: 05/21/2023\n  - Add group selection to [ISY Portal](#isy-portal) and list devices as deprecated.\n- 3.5.1: 05/20/2023\n  - Added [UD Mobile](#ud-mobile) node.\n- 3.4.4: 07/04/2022\n  - First production release of ISYPortal notifications\n  - Fix bug in 'Send Sys Short' for ISYPortal and Pushover\n- 3.4.3: 06/29/2022\n  - Clean up Configuration page for ISY Portal\n  - Fix error on initial install startup\n  - Clean up REST server start and error reporting\n  - Should be ready for production release if no issues are found\n- 3.4.2: 06/28/2022\n  - Fix issues with configurable rest server port\n- 3.4.1: 06/28/2020\n  - Fix to all setting REST Server port to another port, or nothing which means to not start the REST Server.\n- 3.4.0: 06/27/2022\n  - Initial support of ISY Portal notifications used by UD Mobile.\n- 3.3.4: 04/14/2022\n  - Fix [Editor missing subset](https://github.com/UniversalDevicesInc-PG3/udi-poly-notification/issues/36)\n  - Fix [Remove optional from Command Parameters](https://github.com/UniversalDevicesInc-PG3/udi-poly-notification/issues/39)\n  - Fix [Crash when bad device index is passed in](https://github.com/UniversalDevicesInc-PG3/udi-poly-notification/issues/35)\n  - Fix [Crash in handler_typed_data calling write_profile](https://github.com/UniversalDevicesInc-PG3/udi-poly-notification/issues/34)\n  - Force udi_interface 3.0.40\n- 3.3.3: 04/04/2022\n  - Force latest udi_interface\n- 3.3.2: 04/03/2022\n  - Don't crash if telegram node is defined, but not given a name.\n- 3.3.1: 04/03/2022\n  - Fix issue caused by 3.3.0 where old programs referencing \"Send\" didn't work, they now show as \"Send Message (old from controller)\"\n  - Added \"Message\" and \"Short Custom Content\" to Pushover node, which makes more sense than referencing the message from the Controller node.\n  - Added \"Send Sys Short With Params\" to set all message params and send message in one program line. \n- 3.3.0: 03/29/2022\n  - Add Sys Short Messsages\n- 3.2.4: 03/08/2022\n  - Stop calls poly.stop\n- 3.2.3: 02/23/2022\n  - Added Telegram info to PG3 Configurtion page.\n- 3.2.2: 02/22/2022\n  - Now required to enter userid in config, could possibly support multiple in the future.\n  - Clear validate error on success\n  - Fix crash in Telgram send broken in last release\n- 3.2.1: 02/22/2022\n  - Initial production release of Telegram User Bot\n- 3.2.0: 02/21/2022 BETA\n  - Initial add of Telegram for testing\n- 3.1.1: 02/04/2022\n  - Add new 'REST Status' on Controller, see Monitoring section for more information.\n    - This was discovered as an issue if ISY sends a post that contains spaces\n- 3.1.0: Never officially released\n- 3.0.4: 02/02/2022\n  - Clean up logging in session, no real change\n- 3.0.3: 01/25/2022\n  - Fix initialization of controller messages\n- 3.0.2: 01/23/2022\n  - Fix crash on new install\n- 3.0.1: 01/08/2022\n  - Fix crash on notify node\n- 3.0.0: 01/08/2022\n  - First PG3 release\n- 1.0.11-1.0.12: 07/26/2021:\n  - Fix when sound integers are not in order\n- 1.0.10: 07/25/2021:\n  - Fix [Not all service node defaults are being passed to send](https://github.com/jimboca/udi-poly-notification/issues/29)\n  - Also, now allow passing sound by name instead of just the index in REST calls.\n- 1.0.9: 07/24/2021:\n  - Fix: [Command Name discrepancy Query/Refresh](https://github.com/jimboca/udi-poly-notification/issues/16)\n    - Also fixes so query command works\n- 1.0.8: 07/24/2021:\n  - Fix: [Support setting custom sounds](https://github.com/jimboca/udi-poly-notification/issues/20)\n    - Default Pushover sounds are now always first in the list, followed by custom sounds.\n    - IMPORTANT: After updating and restarting the nodeserver AND restarted admin console:\n      - All custom sounds indexes have changed, so you must edit your programs that have custom sounds.\n      - If you have custom sounds and they were first in the list, then all sound indexes have change, so edit your programs\n      - The indexes are all properly tracked now so they will never change in the future.\n- 1.0.7: 06/18/2021:\n  - Bug: Fix getting current sound on first restart after adding a new Service nodes\n  - Buf: Fix error on restart calling server stop\n- 1.0.6: 05/02/2021:\n  - Bug: Fix checking device index when passed in directly from network resource\n- 1.0.5: 05/01/2020:\n  - Bug: Fixed Notify Node Names\n- 1.0.4: 05/01/2020:\n  - Enhancement: [Add more retry and timeouts to message posting](https://github.com/jimboca/udi-poly-notification/issues/19)\n    - Changed to retry forever.\n- 1.0.3: 04/29/2020:\n  - Fix bug to only set ERR when there is an error\n- 1.0.2: 04/29/2020:\n  - Bug fix for improper initialization of Notify node sound\n- 1.0.0: 04/29/2020:\n  - Enhancement: [Add more retry and timeouts to message posting](https://github.com/jimboca/udi-poly-notification/issues/19)\n    - See [Message Retry](https://github.com/jimboca/udi-poly-notification/blob/master/README.md#message-retry)\n  - Enhancement: [Support setting custom sounds](https://github.com/jimboca/udi-poly-notification/issues/20)\n  - Enhancement: [Generate config docs on the fly](https://github.com/jimboca/udi-poly-notification/issues/23)\n- 0.1.17: 04/13/2021\n  - Fixed Bug: [REST Interface Call Fails when priority param is specified](https://github.com/jimboca/udi-poly-notification/issues/18)\n- 0.1.15: 03/05/2020\n  - <a href=\"https://github.com/jimboca/udi-poly-notification/pull/15\">Fixed incorrect char in Name Mapped Value</a>\n- 0.1.14: 03/04/2020\n  - Clean up documentation a little more\n  - Add instructions for <a href=\"https://github.com/jimboca/udi-poly-notification/blob/master/README.md#notify-node>Adding a notify node</a> into a scene\n  - Pushover Emergency reporting now works\n  - Set Controller ST=True on startup\n- 0.1.13: 02/28/2020\n  - Set a notify node On or Off message to \"(IGNORE)\" to disable a message from being sent\n  - Cleaned up documentation a little for Notify Nodes.\n- 0.1.12: 02/29/2020\n  - Fix bug from previous version casued by global search/replace.\n- 0.1.11: 02/28/2020\n  - Clean up error checking some more\n- 0.1.10: 02/27/2020\n  - Add some more error checking for valid service node names\n  - Added a few more default messages\n- 0.1.9: 02/25/2020\n  - Add notices and error messages when notify node id's and pushover node names are not unique.\n- 0.1.8: 02/18/2020\n  - Fix crash in do_send https://github.com/jimboca/udi-poly-notification/issues/11\n- 0.1.7: 02/10/2020\n  - Avoid race condition when building profile and nodes are not added yet it will retry\n  - Truncate pushover node names to 8 characters for users that don't follow instructions :)\n- 0.1.6: 02/09/2020\n  - Fixed creating list of devices.  WARNING: Check programs to make sure correct devices are still selected, order may change, but should never change again.\n- 0.1.5: 02/01/2020\n  - Remove references to Chump\n  - Add info about adding network resources to configuration page\n- 0.1.4: 12/22/2019\n  - Use common nodedef for notification node instead of custom for each one since they are the same.\n- 0.1.3: 12/12/2019\n  - https://github.com/jimboca/udi-poly-notification/issues/3\n- 0.1.2 10/19/2019\n   - No longer use Chump pushover interface since it was easier to do it directly and now can use the monospace format\n- 0.1.1 10/16/2019\n  - Added more default messages, made it easier to add more in the future\n- 0.1.0 10/15/2019\n   - Add Acknowledge, Test on production device\n- 0.0.6 10/14/2019\n  - Notify nodes are now working\n- 0.0.5 10/13/2019\n  - Notify nodes are tied at creation time to a Service node.  They are still non functional.\n- 0.0.4 10/12/2019\n  - Start of Notify node, they are non-functional, but they exist.\n- 0.0.3 10/11/2019\n  - Lots of code and documentation cleanup, prep for release.\n- 0.0.1 02/17/2019\n  - Initial release for review.\n","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.16","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/Notification.zip"},{"price":15,"edition":"Standard","id":"94dd0ef7-6d1d-4c34-81bd-dcb87632c130","isPerpetual":true,"version":"3.6.16","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/Notification.zip"},{"price":0,"edition":"Free","id":"f83228a3-f35a-45f6-b2e0-f8292944a955","isPerpetual":true,"version":"3.6.16","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/Notification_free.zip"}],"eisy":true,"uuid":"132e8dd7-e452-41dd-80f1-6a7da660f00b","ts_updated":1735780568},{"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","devUser":"admin","isyAccess":false,"developer":"christian.olgaard@gmail.com","ip_added":"73.162.93.46","version_na":"null","nsInfoPoll":0,"profile_version":"1.8.50","logLevel":"INFO","ts_added":1760542540,"shortPoll":599,"author":"Panda88CO","discover":false,"fileUpload":false,"prem":true,"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.51- fixed water meter correction factor\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":[{"recurringPeriod":"day","price":0,"recurring":60,"edition":"Free","id":"b8c653c3-02b9-4fbc-a890-03dee8db6500","isTrial":true,"version":"1.8.51","branch":"REL260506","url":"https://github.com/Panda88CO/udi-yolink"},{"price":25,"edition":"Standard","id":"0ff3c3da-6043-496a-ac9c-36c73b08f585","isPerpetual":true,"version":"1.8.51","branch":"REL260506","url":"https://github.com/Panda88CO/udi-yolink"}],"eisy":true,"uuid":"0e152549-cca9-4835-9981-9028cbe258bb","devMode":false,"ts_updated":1778545063},{"docs":"https://github.com/UniversalDevicesInc-PG3/udi-onkyo-poly/master/blob/README.md","longPoll":600,"executable":"Onkyo-poly.py","discover":false,"status":"active","customParams":"{\n    \"ipaddress\": \"\",\n    \"port\": 60128\n}","name":"Onkyo","language":"python3","desc":"Basic control of Onkyo AV receivers","developer":"bpaauwe@bobsplace.com","authorize":false,"install":"install.sh","ip_added":"67.161.168.17","purchaseOptions":[{"price":0,"edition":"Free","isPerpetual":true,"id":"495cd7f2-0763-45c1-8f6e-21db8cf7acca","branch":"master","version":"1.0.2","url":"https://github.com/UniversalDevicesInc-PG3/udi-onkyo-poly"}],"nsInfoPoll":0,"logLevel":"INFO","uuid":"29f19df8-bfdf-4511-b0d6-efdafbcefdea","ts_added":1650928132,"shortPoll":60,"ts_updated":1651009287,"author":"Steven Goulet"},{"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},{"longPoll":600,"docs":"NA","executable":"lumos.py","status":"active","devd":"{\n\"filename\":\"wisilica.conf\"\n}","name":"Lumos-OpenADR","language":"python3","isyAccess":true,"developer":"tjoy@wisilica.com","ip_added":"103.141.54.106","nsInfoPoll":0,"logLevel":"INFO","ts_added":1724318277,"shortPoll":60,"author":"Jossy Sebastian","discover":false,"fileUpload":false,"customParams":"{\n\"UARTCODE_LEVEL_HIGH\":\"DR_UARTCODE_LEVEL_HIGH\",\n\"UARTCODE_LEVEL_NORMAL\":\"DR_UARTCODE_LEVEL_NORMAL\",\n\"UARTCODE_LEVEL_MEDIUM\":\"DR_UARTCODE_LEVEL_MEDIUM\"\n}","desc":"Lumos OpenADR Integration","polisy":true,"license":"NA","authorize":false,"purchaseOptions":[{"price":0,"edition":"Free","id":"482cf6a1-5e35-4b00-9618-122cfa52da9d","isPerpetual":true,"version":"1.0.1","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/wisilica.tar.gz"}],"install":"install.sh","eisy":true,"uuid":"41bcdef2-a38d-4fa1-a9eb-87da38ec10fb","ts_updated":1724318277},{"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"},{"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","developer":"christian.olgaard@gmail.com","ip_added":"73.93.40.59","nsInfoPoll":0,"logLevel":"INFO","ts_added":1680111374,"shortPoll":600,"author":"Panda88CO","discover":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":"Initial Testing","authorize":false,"install":"install.sh","purchaseOptions":[{"price":10,"edition":"Standard","id":"dfd5dd65-bebf-41d7-af2e-a3f955eeffc4","isPerpetual":true,"version":"0.1.0","branch":"main","url":"https://github.com/Panda88CO/udi-MessanaRadiant.git"},{"recurringPeriod":"day","price":0,"recurring":15,"edition":"Standard","id":"9472876b-22bf-410f-951d-23bfbbd4f1c6","isTrial":true,"version":"0.1.0","branch":"main","url":"https://github.com/Panda88CO/udi-MessanaRadiant.git"}],"eisy":true,"uuid":"dc6d8263-735a-427a-a053-5b08ff1079ec","ts_updated":1680111394},{"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":"","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":"","install":"install.sh","ip_added":"70.181.79.77","purchaseOptions":[{"edition":"Standard","isPerpetual":true,"id":"3c25a314-99ec-4c87-b600-86c46df42136","version":"3.0.3","price":15,"url":"http://pg3store.isy.io/v2/nodeservers/production/IFTTT-Webhooks.zip"}],"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/UniversalDevicesInc-PG3/udi-wemo-poly/blob/master/README.md","longPoll":180,"executable":"wemo.py","discover":"","status":"active","name":"Wemo","language":"python3","desc":"Provide ISY support for Wemo devices via Polyglot.","developer":"bpaauwe@bobsplace.com","authorize":"","install":"install.sh","ip_added":"67.161.168.17","purchaseOptions":[{"price":0,"edition":"Free","isPerpetual":true,"id":"270c54f2-dd18-4d10-976b-c15fb5273789","branch":"master","version":"1.0.0","url":"https://github.com/UniversalDevicesInc-PG3/udi-wemo-poly"}],"nsInfoPoll":0,"logLevel":"ERROR","uuid":"e1c75ee4-2f72-43a5-9b37-63eaa092643a","ts_added":1639938063,"shortPoll":60,"ts_updated":1646863457,"author":"Bob Paauwe"},{"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},{"longPoll":240,"docs":"https://github.com/UniversalDevicesInc-PG3/UDI-Ping/blob/master/README.md","executable":"ping.py","discover":false,"status":"active","name":"Ping","language":"python3","desc":"A simple node server to ping devices. ","developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","authorize":false,"purchaseOptions":[{"price":0,"edition":"Free","isPerpetual":true,"id":"7d16716d-7974-4f59-8072-f66bcaae524f","branch":"master","version":"2.0.0","url":"https://github.com/UniversalDevicesInc-PG3/UDI-Ping"}],"install":"install.sh","nsInfoPoll":0,"logLevel":"INFO","uuid":"dcc65776-7406-4c01-954f-c51c2fb379dc","ts_added":1650648694,"shortPoll":60,"ts_updated":1650648694,"author":"Mark Vittes"},{"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\n\n\n","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"6ced52ae-6d05-4d50-a993-daf6b7686f8b","isPerpetual":true,"version":"1.4.5","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/oadr31-1.4.5.pro.tar.gz"}],"eisy":true,"uuid":"707d6f35-3d5a-46e9-849c-1e5c2961a795","ts_updated":1778219311},{"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/sjpbailey/Documentation/blob/main/BASpi%20Irrigation/README.md","longPoll":600,"executable":"BASIRRIGATION.py","status":"active","name":"BASIRRIGATION","language":"python3","isyAccess":false,"developer":"sjpbailey@comcast.net","ip_added":"73.116.163.37","nsInfoPoll":60,"logLevel":"INFO","ts_added":1631739486,"shortPoll":120,"author":"Steven Bailey","discover":false,"customParams":"{\n\t\t\"nodes\": \"1\",\n\t\t\"irrip_0\": \"127.0.0.1\",\n\t\t\"irrip_1\": \"\",\n\t\t\"irrip_2\": \"\",\n\t\t\"irrip_3\": \"\",\n\t\t\"irrip_4\": \"\",\n\t\t\"irrip_5\": \"\"\n}","desc":"Universal Devices WiFi Controlled irrigation controller, with optional local camera for up to thirty six (36) irrigation Zones. It utilizes up to six (6) Contemporary Controls BASpi-6u6r or the BASpi-Edge-6u6r.\nPlease see documentation. \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%20Irrigation/LICENSE","changelog":"Nov 25, 2023\n1. removed images from plugin repository\n2. added ReadMe and License to Documents repository\n3. added online status to nodes","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"ed72c54d-2ce9-4a2d-822e-02a9e7626dfd","isPerpetual":true,"version":"3.0.5","branch":"master","url":"https://github.com/sjpbailey/udi-poly-basirrigation-python-master-v3"}],"eisy":true,"uuid":"947f603b-a26a-4d34-b292-aa5723dfeb5a","ts_updated":1700947893},{"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/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\nThis nodeserver uses the libdyson Python library by Xiaonan Shen. \n\nWARNING:  Dyson could change their API at any time \nrendering this nodeserver inoperable.  I can offer no assurances that this can be fixed.\n\nDyson PH02 PureHumidifyCool support is basic.  Humidity settings are not yet implemented.\nDyson TP02 PureCoolLink support is in BETA.  Please report any issues on the forum.\n\nConfiguration will require downloading https://github.com/shenxn/libdyson/blob/main/get_devices.py from libdyson, and \nthen running it \"python3 get_devices.py\".  Supply your account email address and password, then enter the token that you\nreceive at the email address registered on your account.  The program will the supply the credential.  Copy and save it.\nYou can do this by \"ssh\"ing to your Polisy or Eisy.  The libdyson library then is cloned from github into your admin\ndirectory.  Change into the library directory and run the command above.\n\nYou will likely need to be logged out of your phone app, or any other web sites for this to work, otherwise you will most\nlikely get and \"Authorization Error\". Once you have the credential, you can then log back in to the app.","status":"active","name":"DysonPureCool","language":"python3","developer":"gordon@the-larsens.ca","ip_added":"24.69.28.14","nsInfoPoll":0,"logLevel":"INFO","ts_added":1678133728,"shortPoll":30,"author":"Gordon Larsen","discover":false,"customParams":"{\n          \"Host\": \"\",\n          \"Serial\": \"\",\n          \"Credential\": \"\",\n          \"Type\": \"\",\n          \"Units\": \"C\"\n        }","desc":"UDI Poly for Dyson TP/PH series fans","polisy":true,"license":"https://github.com/ve7gel/Docs/blob/main/LICENSE.md","changelog":"###Version History:\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":"4.0.2","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/udi-poly-dysonfan.zip"},{"recurringPeriod":"day","price":0,"recurring":28,"edition":"Free","id":"7b77e631-f864-47ea-9060-af017caf2256","isTrial":true,"version":"4.0.2","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/udi-poly-dysonfan.zip"}],"eisy":true,"uuid":"4db455f5-28ee-469e-900b-b1349875a270","ts_updated":1680993658},{"longPoll":60,"docs":"https://github.com/UniversalDevicesInc-PG3/udi-av-poly/blob/master/README.md","executable":"udi-av-poly.py","discover":false,"status":"active","name":"AVServer","language":"python3","desc":"Generic A/V Node Server that supports unsolicited status responses from the devices. Currently supports Pioneer VSX-1021, Sony Bravia XBR-65X810C.","developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","authorize":false,"purchaseOptions":[{"price":0,"edition":"Free","isPerpetual":true,"id":"db38e29c-630d-4661-8fc9-7331e0cfb01e","branch":"master","version":"3.0.0","url":"https://github.com/UniversalDevicesInc-PG3/udi-av-poly"}],"install":"install.sh","nsInfoPoll":0,"logLevel":"INFO","uuid":"efaa8e95-a04b-4732-ab05-52588e8187d1","ts_added":1650392232,"shortPoll":10,"ts_updated":1650392232,"author":"Brad Whitted"},{"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://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/UniversalDevicesInc-PG3/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,"customParams":"{\n          \"host\": \"\",\n          \"user\": \"\",\n          \"password\": \"\"\n  }","desc":"Blue Iris UDI ISY Polyglot v3 Node Server","polisy":true,"license":"https://github.com/UniversalDevicesInc-PG3/udi-blue-iris-poly/blob/master/LICENSE","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"56ffc639-f7b2-4c42-ad21-3a6d222edb43","isPerpetual":true,"version":"2.0.5","branch":"master","url":"https://github.com/UniversalDevicesInc-PG3/udi-blue-iris-poly"}],"eisy":true,"uuid":"bffcf8d8-f0e7-4e64-a662-1ca53314525a","ts_updated":1731865811},{"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":"https://github.com/Trilife/udi-mqtt-pg3x/blob/0.40/POLYGLOT_CONFIG.md","longPoll":600,"executable":"mqtt-poly.py","status":"active","name":"MQTT","language":"python3","isyAccess":false,"developer":"stephenearljenkins@me.com","ip_added":"181.128.78.95","nsInfoPoll":0,"logLevel":"CRITICAL","ts_added":1713370916,"shortPoll":60,"author":"Trilife/Headrom","discover":true,"fileUpload":false,"customParams":"{\"mqtt_server\":\"localhost\",\"mqtt_port\":\"1884\",\"mqtt_user\":\"\",\"mqtt_password\":\"\",\"devfile\":\"/usr/home/admin/YOUR-YAML.yaml\"}\n","desc":"S31 fix, README.md and POLYGLOT_CONFIG.md cleanup","polisy":true,"license":"https://github.com/Trilife/udi-mqtt-pg3x/blob/0.40/LICENSE","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"b1313f7c-a92c-4238-aa2c-c0e49b3f8b6e","isPerpetual":true,"version":"0.40.2","branch":"0.40","url":"https://github.com/Trilife/udi-mqtt-pg3x.git"}],"eisy":true,"uuid":"6016023b-ebfc-4602-90c6-79bdc755aa4b","ts_updated":1716313083},{"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.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":[{"price":10,"edition":"Standard","id":"fa37dc62-cde9-4aca-b4a0-0fbfe4daec34","isPerpetual":true,"version":"0.1.15","branch":"main","url":"\thttps://github.com/Panda88CO/udi-SpanIO"},{"recurringPeriod":"day","price":0,"recurring":15,"edition":"Standard","id":"7d42971c-247e-4f51-ab5b-a6ec2eae7052","isTrial":true,"version":"0.1.15","branch":"main","url":"\thttps://github.com/Panda88CO/udi-SpanIO"}],"eisy":true,"uuid":"02cfe3bd-f1d5-4fd4-ae5f-3d83228c144d","ts_updated":1769199738},{"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/UniversalDevicesInc-PG3/udi-plex-poly/blob/master/README.md","longPoll":300,"executable":"plex-poly.py","discover":false,"status":"active","customParams":"{\n\t\"port\": 9090,\n\t\"rapid_trigger\": 0\n}","name":"Plex-WebHook","language":"python3","desc":"Service to received Plex Webhooks and relay information to ISY","developer":"bpaauwe@bobsplace.com","authorize":false,"install":"install.sh","ip_added":"67.161.168.17","purchaseOptions":[{"price":0,"edition":"Free","isPerpetual":true,"id":"47c2ecbe-b1f9-491d-823d-4e6fe29495d9","branch":"master","version":"2.0.1","url":"https://github.com/UniversalDevicesInc-PG3/udi-plex-poly"}],"nsInfoPoll":0,"logLevel":"INFO","uuid":"dbfcfb8b-4a2c-43bc-9092-4cb45c2e4a29","ts_added":1650398998,"shortPoll":30,"ts_updated":1652228683,"author":"Chad Hoevenaars"},{"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/UniversalDevicesInc-PG3/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.","discover":true,"status":"active","name":"ShellyRGBW2","language":"python3","desc":"Connect Shelly RGBW2 devices to ISY","developer":"bpaauwe@bobsplace.com","authorize":false,"install":"install.sh","ip_added":"67.161.168.17","purchaseOptions":[{"price":0,"edition":"Free","id":"9fcc7e52-0c0b-4b66-b29f-a8f4fea1e8ee","isPerpetual":true,"version":"2.0.4","branch":"master","url":"https://github.com/UniversalDevicesInc-PG3/udi-shelly-poly"}],"nsInfoPoll":0,"logLevel":"INFO","uuid":"7cc3d250-68cc-4b82-bbdd-916d45cfaf0f","ts_added":1651105257,"shortPoll":5,"ts_updated":1667246284,"author":"TangoWhiskey1"},{"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":"To install enter login info and password\nStart node \nReceive 2FA code and enter it in AUTH_KEY\nSAVE - do not restart - node continues after saving\nNodes will display different networks found \nAll need to be added as custom parameters and given value  ENABLED for networks desired - DISABLED if not desired \nRestart node (2FA will be required again - you can erase the current key before restarting in case code is not updated)\n\nThis node server is mostly targeted to arm and disarm cameras from within IoP/ISY (e.g. follow arming of alarm system)\nIt does provide ability to snap a picture based on e.g. a trigger motion sensor - this picture does replace the existing thumbnail in the Blink app.  Similar videos can also be triggered.  May add ability to automatically email the snapped picture/video.\nLongPoll updates data.  Do not run update too often, as system may get throttled by Blink.  A heartbeat (DON followed by DOF) is sent every long poll for each network ","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\",\"SMTP\":\"SMTPServer\",\"SMTP_PORT\":\"587\",\"SMTP_EMAIL\":\"serverlogin\",\"SMTP_PASSWORD\":\"server password\",\"EMAIL_RECEPIENT\":\"receiver''s email\"}","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.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":[{"recurringPeriod":"day","price":0,"recurring":15,"edition":"Standard","id":"6ef66d02-78bc-42d8-af42-449f36eff89d","isTrial":true,"version":"0.6.16","branch":"REL260329","url":"https://github.com/Panda88CO/udi-Blink.git"},{"price":10,"edition":"Standard","id":"119ff071-becc-4671-9134-501a040a40ef","isPerpetual":true,"version":"0.6.16","branch":"REL260329","url":"https://github.com/Panda88CO/udi-Blink.git"}],"eisy":true,"uuid":"02b66257-0f05-4624-9c27-6855c828c844","ts_updated":1774800399},{"docs":"https://github.com/UniversalDevicesInc-PG3/udi-poly-kasa/blob/master/README.md","longPoll":240,"executable":"kasa-poly.py","status":"active","name":"Kasa","language":"python3","isyAccess":false,"developer":"jimsearle@gmail.com","ip_added":"72.194.105.190","nsInfoPoll":0,"logLevel":"WARNING","ts_added":1636838034,"shortPoll":30,"author":"Jimbo.Automates","discover":true,"desc":"TP-Link Kasa Node Server","polisy":true,"license":"https://github.com/UniversalDevicesInc-PG3/udi-poly-kasa/blob/master/LICENSE","changelog":"- 3.1.4: 12/18/2023\n  - Fix: [HS300 outlet power not updated on longpoll or query all](https://github.com/UniversalDevicesInc-PG3/udi-poly-kasa/issues/20)\n- 3.1.3: 12/05/2023\n  - With latest IoX Updates this now works with latest python-kasa 0.5.4 https://github.com/python-kasa/python-kasa/releases/tag/0.5.4\n- 3.1.2: 11/28/2023\n  - Force python-kasa 0.5.3 to avoid needing rust compiler for now\n- 3.1.1: 11/25/2023\n  - Fix: [Crash on startup when poll is called on smartstrip](https://github.com/UniversalDevicesInc-PG3/udi-poly-kasa/issues/19)\n- 3.1.0: 09/22/2023\n  - Added [Configuration Help](/CONFIG.md) describing all new parameters\n  - Fix: [change_node_names not working](https://github.com/UniversalDevicesInc-PG3/udi-poly-kasa/issues/17)\n    - NOTE: You will see an error on the log related to this: ERROR    interface:_message: Failed to update internal nodelist: None :: 'NoneType' object is not subscriptable\n    - This is a PG3x issue which will be fixed in the next release of PG3x after 3.2.7.\n  - Fix: [Deleted devices always return(https://github.com/UniversalDevicesInc-PG3/udi-poly-kasa/i]ssues/14)\n  - Enhancement: [Add configurable discover timeout](https://github.com/UniversalDevicesInc-PG3/udi-poly-kasa/i]ssues/18)\n  - Enhancement: [Allow manually adding device host name or IP address](https://github.com/UniversalDevicesInc-PG3/udi-poly-kasa/i]ssues/9)\n    - Also allows adding extra networks to run discover on\n  - Fix adding SmartStrip Plug nodes when device is added\n  - Tested with python-kasa 0.5.3, hopefully this version will discover previously undiscovered devices\n    - BUT this doesn't yet work for the new firmware devices, hopefully that will be released soon.\n  - Added all driver names so they now show up in PG3x UI.\n  - Fix log message for \"ready to poll\" when device is not responding\n- 3.0.21: 03/28/2023\n  - Fix dumb error in print statement added in last release- 3.0.20: Fix crash due to python-kasa library issue","authorize":false,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"month","price":0,"recurring":1,"edition":"Free","id":"42bd2b21-54dc-40b4-b8b1-9c95df79e1d9","isTrial":true,"version":"3.1.4","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/Kasa.zip"},{"price":30,"edition":"Standard","id":"4b3754d8-1092-45a5-8f69-e1c9dccf66ea","isPerpetual":true,"version":"3.1.4","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/Kasa.zip"}],"eisy":true,"uuid":"47434058-cf83-4ad5-b7ed-c0faa511fe60","ts_updated":1702767051},{"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/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":"https://github.com/sejgit/udi-hunterdouglas-pg3/blob/1.13.x/README.md","longPoll":600,"executable":"hunterdouglas-poly.py","status":"active","name":"HunterDouglas","language":"python3","isyAccess":false,"developer":"stephenearljenkins@me.com","ip_added":"104.28.103.66","nsInfoPoll":0,"logLevel":"INFO","ts_added":1713298801,"shortPoll":60,"author":"headrom","discover":true,"fileUpload":true,"customParams":"{\"gatewayip\": \"powerview-g3.local\"}","desc":"Hunter Douglas Shades integration.  Works with Generation 2 or 3 gateways & blinds.","polisy":true,"license":"https://github.com/sejgit/udi-hunterdouglas-pg3/blob/1.13.x/LICENSE","changelog":"VERSION = '1.13.1'\n\"\"\"\n1.13.1\nDONE refactor controller discovery, put, get, goodip functions\nDONE refactor controller startup, config, params, naming, logging\nDONE refactor cmdSetPos\n\n1.13.0\nDONE polling rewrite, controller: shortPoll=G2 poll, heartbeat for all, re-start G3 events, longPoll=G3 poll\nDONE polling rewrite, shade: shortPoll: re-start events if stopped, longPoll: not-used\nDONE polling rewrite, scene: shortPoll: re-start events if stopped, manually clear G2 scene activate, longPoll: not-used\nNOTE default & recommend setting shortPoll=60, longPoll=600\nDONE major re-write of function and Event routines\nDONE add number of nodes managed by controller to controller node\n\n1.12.7\nDEBUG crash when connection reset by peer ; fix data\nDONE remove separate open / close behaviour for G2/G3\n\n1.12.6\nDONE reverse open / close behaviour for G3 shades\n\n1.12.5\nDONE re-write SSE for G3\nDONE fix motion if motion-stop missed\nDONE battery low event added for G3\nDONE force updates to server (helps with new eisy-ui)\nDONE doc clean-up\nDONE string clean-up\nDONE improve logging\nDONE bumped requests and urllib3 versions\n\n1.12.4\nDEBUG Gen-2 make a default capability if none exists in JSON\n\n1.12.3\nDONE G2 Scene event fix\n\n1.12.2\nDONE add shade-offline event handling to error log; currently not passed to ISY\nDONE add updating of scene activation status on longPoll as backup to event\n\n1.12.1\nDONE environment updates\nDONE small refactors\n\n1.12.0\nDONE change versioning to align with workflow\nDONE update docs: README, versionHistory, logging\n\nfor previous version see versionHistory.md\n\n\"\"\"\n","authorize":false,"install":"install.sh","purchaseOptions":[{"price":0,"edition":"Free","id":"532cd6c3-c15a-419d-98a7-55ee5cf9fea4","isPerpetual":true,"version":"1.13.1","branch":"1.13.x","url":"https://github.com/sejgit/udi-hunterdouglas-pg3"}],"eisy":true,"uuid":"28a10a63-d138-4fdc-b983-dd3982b3d893","ts_updated":1759447995},{"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/master/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,"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":"- 3.10.15: 02/10/2024\n  - Prepare for next PG3x release. If using ELKID or ELKNAME you must enable the \"Allow ISY Access by PLugin\" on the configuration page.\n- 3.10.14: 02/03/2024\n  - Fix ISY Nodes IP address in Configuration Page- 3.10.13: 02/03/2024\n  - Fix [Issue with light_method=ELKNAME and old light_n nodes](https://github.com/UniversalDevicesInc-PG3/udi-poly-ELK/issues/104)\n  - Also lots of fixes for when light_method is changed, now no restarts should be necessary\n- 3.10.12: 02/01/2024\n  - Fixed keypad with Temperture sensor profile to match keypad.\n- 3.10.11: 12/30/2023\n  - Improved light_method=ELKID.  All users of this method MUST click on the \"export\" link on the configuration page to run the new export procedure.  If your ELKID's have not changed you don't need to re-import into ElkRP but it would be best.\n- 3.10.8: 12/27/2023\n  - Fix [Setting up ELK ns module](https://github.com/UniversalDevicesInc-PG3/udi-poly-ELK/issues/102)\n- 3.10.7: 12/26:2023\n  - Increase initialization timeout to allow for PyISY retries when no variables or network resources exist.\n  - Fix crash when ELKID is added to a scene\n  - Better parsing and error message for checking ELKID\n- 3.10.6: 12/16/2023\n  - Fix [Violated & Bypassed Zones not updating](https://github.com/UniversalDevicesInc-PG3/udi-poly-ELK/issues/95)\n- 3.10.5: 11/22/2023\n  - Fix Celcius Thermostat profile to remove Admin Console Errors\n- 3.10.4: 11/11/2023\n  - Set default ST (Nodeserver Online) to 1.\n- 3.10.3: 10/21/2023\n  - Restructure startup to avoid issues:\n    - [AttributeError: 'Controller' object has no attribute 'change_node_names'](https://github.com/UniversalDevicesInc-PG3/udi-poly-ELK/issues/101)\n    - [AttributeError: 'Controller' object has no attribute 'light_method'](https://github.com/UniversalDevicesInc-PG3/udi-poly-ELK/issues/100)\n- 3.10.1: 10/15/2023\n  - Fix bug in renameNode caused by PG3 interface change\n  - Fix crash when pyISY returns 0 for node_changed\n- 3.10.0: 09/04/2023\n  - Beta release of [Add Elk thermostats](https://github.com/UniversalDevicesInc-PG3/udi-poly-ELK/issues/50)\n- 3.9.0: 09/03/2023\n  - Enhancement [Allow Elk NS to Recognize Keypad Presses](https://github.com/UniversalDevicesInc-PG3/udi-poly-ELK/issues/69) see [Keypad Control events](#keypad-control-events)\n  - Enhancement [Support ELK Remote button presses #90\n](https://github.com/UniversalDevicesInc-PG3/udi-poly-ELK/issues/90)\n- 3.8.1: 08/15/2023\n  - Properly set version\n- 3.8.0: 08/12/2023\n  - Added light_method ELKALL which creates an ISY Light node for all defined ELK Lights\n  - Add driver names so they show up in the PG3 UI\n  - Updated Configuration document\n- 3.7.0: 04/07/2023\n  - Added Export ability for [Support Elk Export](https://github.com/UniversalDevicesInc-PG3/udi-poly-ELK/issues/67)\n- 3.6.5: 04/01/2023\n  - Fix crash if no Elk lights are defined\n  - Add many traps to catch future errors in Light code\n  - Shutdown PyISY if no Elk<->Lights defined\n- 3.6.4: 03/31/2023\n  - Fix bug causing crash if a ELK Light name matches a folder name\n- 3.6.0: 03/15/2023\n  - Add support for ELK Lights see [Light Node](#light-node) above for more information.\n- 3.5.8: 01/15/2023\n  - Fix elkm1_lib version\n- 3.5.7: 11/17/2022\n  - Fix crash that can happen on startup\n- 3.5.5: 10/23/2022\n  - Fix another bug related to fix for [Triggered and Violated zone not showing on area](https://github.com/UniversalDevicesInc-PG3/udi-poly-ELK/issues/89) which shows error \"int() argument must be a string, a bytes-like object or a number, not 'ZoneType'\"\n- 3.5.4: 10/22/2022\n  - Fix bug related to fix for [Triggered and Violated zone not showing on area](https://github.com/UniversalDevicesInc-PG3/udi-poly-ELK/issues/89) which shows error \"int() argument must be a string, a bytes-like object or a number, not 'ZoneType'\"\n- 3.5.3: 10/16/2022\n  - Fix: [Triggered and Violated zone not showing on area](https://github.com/UniversalDevicesInc-PG3/udi-poly-ELK/issues/89)\n  - Fix: [node command DOF not defined](https://github.com/UniversalDevicesInc-PG3/udi-poly-ELK/issues/87)\n- 3.5.2: 09/25/2022\n  - Fix: Properly initialize temperature for Zone and Keypad\n- 3.5.1: 09/25/2022\n  - Fix For: [Support Zone Specific System Trouble](https://github.com/UniversalDevicesInc-PG3/udi-poly-ELK/issues/86)\n    - Now reporting correct zone numbers\n  - Fix: [Unconfigured Zone Error](https://github.com/UniversalDevicesInc-PG3/udi-poly-ELK/issues/88)\n- 3.5.0: 09/24/2022\n  - Enhancement: [Support Zone Specific System Trouble](https://github.com/UniversalDevicesInc-PG3/udi-poly-ELK/issues/86)\n    - See [Zone](#zone-node) System Trouble documentation above\n  - Enhancement: [Allow user to trigger alarms](https://github.com/UniversalDevicesInc-PG3/udi-poly-ELK/issues/82)\n    - See [Zone](#zone-node) Trigger documentation above\n  - Enhancement: [Support Zone Temperature](https://github.com/UniversalDevicesInc-PG3/udi-poly-ELK/issues/65)\n    - See [Zone](#zone-node) Temperature documentation above\n  - Fix: [Controller queried before panel was ready on Polisy reboot](https://github.com/UniversalDevicesInc-PG3/udi-poly-ELK/issues/85)\n","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.15","branch":"","url":"http://pg3store.isy.io/v2/nodeservers/production/ELK.zip"},{"price":30,"edition":"Standard","id":"0f6568ba-e497-4cf0-abbc-746e6d345d0f","isPerpetual":true,"version":"3.10.15","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/ELK.zip"}],"eisy":true,"uuid":"c7297a6e-f1c6-4c12-8b66-532a6721431a","ts_updated":1707600902},{"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},{"longPoll":60,"docs":"https://github.com/UniversalDevicesInc-PG3/udi-somfy-poly/blob/master/README.md","executable":"somfy-urts-poly.py","discover":false,"status":"active","name":"Somfy","customParams":"{\n\t\"port\": \"\"\n}","language":"python3","desc":"Somfy URTSii Node Server","developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","authorize":false,"purchaseOptions":[{"price":0,"edition":"Free","isPerpetual":true,"id":"8628fc0a-c92e-4cf9-bbd9-dfffe314ef5b","branch":"master","version":"2.0.0","url":"https://github.com/UniversalDevicesInc-PG3/udi-somfy-poly"}],"install":"install.sh","nsInfoPoll":0,"logLevel":"INFO","uuid":"37ce943a-7180-4c48-97d2-5aed596aa57f","ts_added":1650408734,"shortPoll":5,"ts_updated":1650408734,"author":"Brian Feeney"},{"docs":"https://github.com/UniversalDevicesInc/ring/blob/master/README.md","longPoll":3600,"executable":"ring.py","readme":"Click here for more info:","status":"active","oauth":"{\n  \"test\": \"test!\",\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,"logLevel":"INFO","ts_added":1683754299,"shortPoll":300,"author":"Benoit Mercier","discover":false,"fileUpload":false,"customParams":"{\"TEST\":\"TEST\"}","desc":"The Ring nodeserver creates nodes for your doorbells, stickup cams & floodlights.","license":"https://github.com/UniversalDevicesInc/ring/blob/master/LICENSE","authorize":true,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"day","price":0,"recurring":10,"edition":"Standard","id":"733fc6a8-8cca-4104-ad53-7f3c050b5d6f","isTrial":true,"version":"1.2.7","branch":"master","url":"https://github.com/UniversalDevicesInc/ring.git"},{"price":9,"edition":"Standard","id":"0c168f43-66dd-4894-9ecc-afdc12b375b1","isPerpetual":true,"version":"1.2.7","branch":"master","url":"https://github.com/UniversalDevicesInc/ring.git"}],"uuid":"bde44191-474a-49f9-8dc8-495c751f958c","ts_updated":1778175458.767},{"docs":"https://github.com/UniversalDevicesInc-PG3/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","developer":"bpaauwe@bobsplace.com","ip_added":"67.161.168.17","nsInfoPoll":0,"logLevel":"INFO","ts_added":1650400516,"shortPoll":600,"author":"Dani","discover":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/UniversalDevicesInc-PG3/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":[{"price":0,"edition":"Free","id":"c0f07207-a9a5-4b19-9758-1107bed012d0","isPerpetual":true,"version":"2.0.4","branch":"main","url":"https://github.com/UniversalDevicesInc-PG3/udi-netatmo"}],"eisy":true,"uuid":"5abc8efc-d5fb-476b-b0a3-426452f17cb9","ts_updated":1679761866},{"docs":"https://github.com/Panda88CO/udi-Kidde/blob/main/README.md","longPoll":300,"executable":"udi_kidde.py","readme":"# udi-Kidde\nPG3x node server for Kidde HomeSafe alarms, using udi_interface and kidde-homesafe.  kidde-homesafe is an open source lib maintained at https://github.com/865charlesw/kidde-homesafe\n\n## Features\n- Controller node with online status, last update time, and alarm count\n- Heartbeat (DON/DOF) toggle on shortPoll\n- Alarms du not push data, so longPoll is used to update the data.  Note, updating data just fetches last report - not a refresh. so there is really no benefit polling very often\n- There is a Send Command function that can send Identify, Identify Cancel, Test and Hush\n\n## Setup\n- Configure EMAIL, PASSWORD, and optional TEMP_UNIT in PG3 custom parameters\n- TEMP_UNIT accepted values: F or C (default: C)\n- The node creates a kidde node with all registered alarms as subnodes (I have only tested 1 alarm (DETECT (EssWFAC))\n- Each alarm shows status data and alarm status - need to poll the data (long Poll) - there is no trigger mechanism to trigger alarms when they happen \n- There is a Send Command function with selector values (UOM 25): 1=Identify, 2=Identify Cancel, 3=Test, 4=Hush\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.4 - initial release","authorize":false,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"day","price":0,"recurring":30,"edition":"Free","id":"8b8cf57f-e50f-4e7c-9a00-f2195d6c76c0","isTrial":true,"version":"0.1.4","branch":"RELEASE260428","url":"https://github.com/Panda88CO/udi-Kidde"},{"price":10,"edition":"Standard","id":"4e953619-c8d7-4114-932a-186b81186e60","isPerpetual":true,"version":"0.1.4","branch":"RELEASE260428","url":"https://github.com/Panda88CO/udi-Kidde"}],"eisy":true,"uuid":"e77affb3-184c-43a1-8960-6516430b3304","ts_updated":1777487678},{"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/master/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 - DO NOT INSTALL - ECOBEE REMOVED OUR ACCESS - WORKING ON A NEW SOLUTION","polisy":true,"license":"https://github.com/UniversalDevicesInc-PG3/udi-poly-ecobee/blob/master/LICENSE","changelog":"- 3.1.5: 11/11/2023\n  - Fix: [Setting Climate Type doesn't set proper hold mode](https://github.com/UniversalDevicesInc-PG3/udi-poly-ecobee/issues/10)\n- 3.1.4: 08/15/2023\n  - Properly set version\n- 3.1.3: 08/12/2023\n  - Add ability to see and control ECO+\n  - Add node names so they show up in PG3 UI\n- 3.1.2: 07/24/2022\n  - Fix bug caused by changes in previous release.\n- 3.1.1: 07/24/2022\n  - Release: [Feature Request: ecobee Premium air quality sensor](https://github.com/UniversalDevicesInc-PG3/udi-poly-ecobee/issues/4)\n- 3.1.0: 07/23/2022\n  - Beta release of supporting New thermostats with Air Quality","authorize":false,"install":"install.sh","purchaseOptions":[{"price":30,"edition":"Standard","id":"503a1f86-943d-4f44-8c0c-ed4e9c4fd2e1","isPerpetual":true,"version":"3.1.5","branch":null,"url":"https://pg3store.isy.io/v2/nodeservers/production/Ecobee.zip"}],"eisy":true,"uuid":"af1f50a2-7aaf-43c1-aa53-276b2587cb22","ts_updated":1778087518},{"docs":"https://github.com/sjpbailey/Documentation/blob/main/BASpi%206U4R2AO/README.md","longPoll":600,"executable":"BASAO.py","status":"active","name":"BASAO","language":"python3","isyAccess":false,"developer":"sjpbailey@comcast.net","ip_added":"73.116.163.37","nsInfoPoll":0,"logLevel":"INFO","ts_added":1638075056,"shortPoll":60,"author":"Steven 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":"e842af25-fc5c-4f12-8f0d-7aaeade95ec6","isPerpetual":true,"version":"3.0.1","branch":"master","url":"https://github.com/sjpbailey/udi-poly-baspi-sys6u4r2ao-master-v3"},{"price":0,"edition":"Free","id":"257d2b25-b661-42c8-8efa-ae91066e1e42","isPerpetual":true,"version":"3.0.2","branch":"master","url":"https://github.com/sjpbailey/udi-poly-baspi-sys6u4r2ao-master-v3"}],"eisy":true,"uuid":"81da66b6-237c-4940-ba82-f6cd738ad33e","ts_updated":1700948263},{"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/UniversalDevicesInc-PG3/udi-push-poly/blob/master/README.md","longPoll":600,"executable":"push-poly.py","discover":false,"status":"active","customParams":"{\n      \"api_key\": \"\",\n      \"user_key\": \"\",\n      \"disclaimer_read\": \"\"\n }\n","name":"Push","language":"python3","desc":"Send notifications via PushOver (https://pushover.net)","developer":"bpaauwe@bobsplace.com","authorize":false,"install":"install.sh","ip_added":"67.161.168.17","purchaseOptions":[{"price":0,"edition":"Free","isPerpetual":true,"id":"e18d3f87-2b95-4152-8b96-50d74a398f9b","branch":"master","version":"2.0.2","url":"https://github.com/UniversalDevicesInc-PG3/udi-push-poly"}],"nsInfoPoll":0,"logLevel":"INFO","uuid":"6f25fa27-3b43-4782-ab71-293dd3d0cac7","ts_added":1651258851,"shortPoll":60,"ts_updated":1652378826,"author":"Mark Vittes"},{"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","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":"- 3.1.0: 05/31/2025  \n  - IMPORTANT: Check all your \"Vehicle\" references in programs, ISY driver numbers were wrong in profile.\n  - Added [Camect Documentation](https://www.jimboautomates.com/pg3-node-servers#h.ch8gfupl5odo)\n  - USPS and other deliery vehicles fixed, Camect added 'truck', 'pickup', and 'car' to each of them which broke triggers.  Now any of the delivery vehicle just triggers the real name, for example \"Amazon truck\" just triggers \"Amazon\"\n  - Added Human's for all deliver people, Amazon, FedEx, ...\n  - Update camect-py library to 0.2.1\n  - Remove websockets from requirements since it's included in camect now\n  - Added all Driver names so the show up in PG3 UI.\n  - Add GPV driver to all Detected Object Nodes for the Object Name detected.  Useful for Notifications.  You must reboot your IoX after restarting the node server for it to show up properly in notifications.\n  - Add ERR driver on controller to track issues.  Errors are shown in the PG3x UI. Currently only flags unsupported detected objects.\n- 3.0.13: 11/10/2024\n  - Force websockets < 13.0 to Avoid issues with Camect API\n  - Add \"Debug + Modules\" log level to help debug issue with camect API\n- 3.0.9: 08/15/2022\n  - Work around a bug in IoP which reports Control events when Status is changed to either True or False.\n    - See [Iop 5.4.4 Bug](#IOP-544-Bug)\n- 3.0.8: 06/06/2022\n  - Throttle node adds \n  - Add change_node_names user paramater to allow Camect camera names to always be the source, on restart/discover names will change on ISY.\n- 3.0.7: 06/05/2022\n  - Fix: [AttributeError: 'Host' object has no attribute 'save'](https://github.com/UniversalDevicesInc-PG3/udi-poly-Camect/issues/23)\n  - Fix: [Latest version not adding default username and password](https://github.com/UniversalDevicesInc-PG3/udi-poly-Camect/issues/20)\n  - Fix: [Buttons like Dog, Skunk not working](https://github.com/UniversalDevicesInc-PG3/udi-poly-Camect/issues/16)\n- 3.0.6: 04/15/2022\n  - Skip deleted cameras.\n  - Fixed Typo in above error\n- 3.0.4: 03/25/2022\n  - Better fix for sending detected object commands\n- 3.0.3: 03/18/2022\n  - Fix sending Commands for all detected objects\n- 3.0.2: 02/21/2022\n  - query controller and hub no longer queries all children since doing so creates to much traffic for 3am query\n  - use callbacks for alert enable/disable and camera offline/online instead of polling\n- 3.0.1: 01/01/2021\n  - Fix crash in query\n- 3.0.0: 12/28/2021\n  - Initial PG3 version\n- 0.2.5: 08/14/2021\n  - Another attempt to fix simlar crash [Crash due hub not responding](https://github.com/jimboca/udi-poly-Camect/issues/15)\n- 0.2.4:\n  - More fixes for [Crash due to timeout not trapped](https://github.com/jimboca/udi-poly-Camect/issues/13)\n- 0.2.3:\n  - Fixed [Crash due to timeout not trapped](https://github.com/jimboca/udi-poly-Camect/issues/13)\n    - Should be fixed, but have to confirm\n- 0.2.2:\n  - Fixed to use pip3 in install.sh\n- 0.2.1:\n  - __IMPORTANT__ Delete NS if running version prior to 0.2.0 !\n  - Added count of Camect's Configured and Connected in Controller\n- 0.2.0:\n  - __IMPORTANT__ If using previous version you should delete the nodeserver and add it again.\n    - Should be the last time, all address are unique and remembered so can not be duplicated\n  - Discover is only run by default on initial startup\n  - Camera's are remembered, so on restarts a discover is not run.\n    - See notes in about when new cameras are discovered\n  - Add selecting mode on Camect Host\n  - Add selecting mode on Controller to set all host modes\n- 0.1.1\n  - Enable/Disable Alerting working\n- 0.1.0\n  - __IMPORTANT__ If using previous version you should delete the nodeserver and add it again.\n  - Group detected objects by major types, person, vehicle, animal, insect\n- 0.0.4\n  - Changed methods used to send DON so it's clear in the log\n  - Fixed profile for Controller GV2 name\n- 0.0.3\n  - Fixed event passing, and receiving DON/DOF's in DetectedObject's\n- 0.0.2\n  - First working version\n- 0.0.1\n  - First release\n","authorize":false,"install":"install.sh","purchaseOptions":[{"recurringPeriod":"month","price":0,"recurring":2,"edition":"Free","id":"40736fce-8bdf-4ddd-b451-494cf1860bb1","isTrial":true,"version":"3.1.0","branch":"","url":"http://pg3store.isy.io/v2/nodeservers/production/Camect.zip"},{"price":25,"edition":"Standard","id":"051247ca-6275-4a98-b9a5-9f75752ce32f","isPerpetual":true,"version":"3.1.0","branch":"","url":"https://pg3store.isy.io/v2/nodeservers/production/Camect.zip"}],"eisy":true,"uuid":"76331b95-1734-4dd9-b40f-d9819f6b5e6f","ts_updated":1749253195},{"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/UniversalDevicesInc-PG3/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,"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/UniversalDevicesInc-PG3/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":[{"price":0,"edition":"Free","id":"5d51de29-b5c6-414d-976d-b6f50e3154e9","isPerpetual":true,"version":"2.0.5","branch":"master","url":"https://github.com/UniversalDevicesInc-PG3/udi-totalconnect-poly"}],"eisy":true,"uuid":"9ca1cee3-814f-4bfd-8fda-7f4725f75e90","ts_updated":1717176688},{"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":"OpenADR","longPoll":600,"executable":"lumos.py","status":"active","name":"DemandResponse","language":"python3","isyAccess":true,"developer":"tjoy@wisilica.com","ip_added":"103.141.54.106","nsInfoPoll":0,"logLevel":"INFO","ts_added":1776850466,"shortPoll":60,"author":"Jossy Sebastian","discover":false,"fileUpload":true,"desc":"OpenADR ","polisy":true,"license":"na","authorize":false,"install":"install.sh","purchaseOptions":[],"eisy":true,"uuid":"8a401f1a-623f-4e55-857d-f356b82b2f12","ts_updated":1776850538},{"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/UniversalDevicesInc-PG3/udi-honeywellhome-poly/blob/master/README.md","longPoll":300,"executable":"honeywellhome-poly.py","discover":false,"status":"active","customParams":"{\n\t\"client_id\": \"\",\n\t\"client_secret\": \"\",\n\t\"user_id\": \"\"\n}","name":"HoneywellHome","language":"python3","desc":"A node server to integrate Honeywell Home thermostats into the UDI ISY.","developer":"bpaauwe@bobsplace.com","authorize":false,"install":"install.sh","ip_added":"67.161.168.17","purchaseOptions":[{"price":0,"edition":"Free","id":"e135bc1f-cb8e-43d4-9387-59128897c8c0","isPerpetual":true,"version":"2.0.1","branch":"master","url":"https://github.com/UniversalDevicesInc-PG3/udi-honeywellhome-poly"}],"nsInfoPoll":0,"logLevel":"INFO","uuid":"fa0ddf81-b645-4131-9a92-98da656d9209","ts_added":1650400050,"shortPoll":120,"ts_updated":1662678931,"author":"Dane Barentine"},{"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":"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}]