| Developer: | Karl's Plugins Like this plugin? Show your appreciation! |
| Category: | Location and Presence |
| Github: | Github Repo |
| License: | MIT License |
| Assistance: | Get help! |
| Plugin ID: | com.karlwachs.uniFiAP |
| Latest release: | v2026.54.443 released on July 14, 2026 |
| Release downloaded: | 1 times |
| Requires: | Indigo v2022.1.0 or higher |
| (Check the Releases tab below for older releases that may have different requirements) | |
| Download latest release |
Integrates a UniFi network installation with the Indigo home-automation platform. Monitors UniFi access points, switches, gateways, cameras, and UniFi Protect sensors/relays; exposes device states as Indigo sensor/relay devices; and provides actions for controlling ports, cameras, clients, and relay outputs.
Plugin ID: com.karlwachs.uniFiAP
Version: 2026.54.443
Indigo Server API: 3.0
Note: every device type in this plugin is created automatically by the plugin itself — none of them can be added manually via Indigo's "New Device" dialog. Switches and APs, in particular, can either be created automatically by enabling Auto-detect in the plugin configuration's Switch/AP sections (the plugin reads the controller's device list and creates matching devices itself), or — when auto-detect is off — by entering the switch/AP IP addresses in the plugin configuration's per-slot fields, after which the plugin creates and matches the device the next time it reads the controller. See Plugin Configuration below.
wifiSignalStrength (dBm), wifiSignalQuality (%), wifiLinkSpeed (Mbps), and wifiChannel. Smart detections fill lastSmartDetectType (person/vehicle/…), lastSmartDetectConfidence (%), lastSmartDetectZone, and lastSmartDetectAtEach sensor device reports status, isConnected, isAdopted, MAC, firmwareVersion, lastSeen, created, and sensor-specific states. The device-state column in Indigo shows the displayStatus text with a change-stamped timestamp, e.g. 21.5ºC 26-07-03 11:42:00, GLASS BREAK! 26-07-03 …, open 26-07-03 … — the trailing date-time updates only when the state actually changes, not on every poll:
light state), battery, sensorButtonPressedAt / sensorButtonPressedAt_Last (datetime of last/previous function-button press). Water leak: waterDetected, waterDetectedAt, waterDetectedAt_Last, waterDetectedEnabled. When leak detection is enabled (exclusive mode on this sensor) the device behaves like a water sensor: onOffState on = wet, display shows dry/LEAK!sensorButtonPressedAt. Water leak: waterDetected + timestamps (combined — Protect does not report which probe fired) and per-probe enable flags waterDetectedInternalEnabled (built-in contacts) / waterDetectedExternalEnabled (wired probe)glassBreakAt / glassBreakAt_Last), battery, sensorButtonPressedAtbuttonPressed always as "number/name", e.g. 2/night; display selectable as names or numbers, Auto follows the Protect "Button Labels" setting), batterysmokeAlarm, coAlarm, smokeValue, coValue, alarmEnabled, batteryLow, endOfLife, sensor-fault and tamper states + alarm-onset timestamps; onOffState/display trip on smoke or CO (SMOKE+CO! / SMOKE! / CO! / ok). Future CO-only models (UP-CO / USL-CO variants) map onto this same typeaqi, vapeIndex/vapeDetected, co2, voc/nox/tvoc, pm1/pm2.5/pm4/pm10, temperature, humidity; PoE powered; display selectable (AQI / vape / CO2 / temp+humidity)The relay creates three Indigo devices:
onOffState, lastCommand, status, isConnected, MAC, id, firmwareVersion, btSignal, lastSeen, createdonOffState, lastCommand, MAC, created (only the parent device carries status)input1State/input2State, per-channel input1At/input2At (+ _Last) and input1PressType/input2PressType, plus sensorButtonPressedAt. A device setting selects which channel drives onOffState/display (shown as e.g. in1:ON 26-07-03 …)Input events are delivered exclusively via the UniFi Protect WebSocket (sensorButtonPressed). Each press sets the channel's input{n}State to true, records the press type (press, longPress, or doublePress) in input{n}PressType, and stores a timestamp in input{n}At (previous press in input{n}At_Last). The state automatically resets to false after ~3 seconds, creating a clean on→off pulse suitable for Indigo triggers.
Outputs are controlled via the UniFi Protect Integration API (/proxy/protect/integration/v1/relays). On success, onOffState is updated and lastCommand is set to e.g. on sent 2026-07-03 17:42:11. The timestamp is captured immediately before the API call so it reflects when the command was sent, not when the response arrived.
onOffState/brightnessLevel follow the physical light (isLightOn, including motion-triggered activations); Turn On/Off/Set Brightness control the light via the internal Protect API (lightOnSettings.isLedForceOn / lightDeviceSettings.ledLevel; off releases it back to its configured mode). States: motionDetected (live PIR — usable as an Indigo motion trigger even when the light mode is off), lastMotionAt/_Last, isDark, ledLevel (1–6), lightMode (off/motion/always), pirSensitivity/pirDuration/luxSensitivity, isLightForceOn, plus connection/firmware/ip/lastSeen. Also controllable via the "FLOODLIGHT Protect set light ON / off" action and menu itemOpen the plugin's configuration dialog from Indigo's Plugins menu.
The fastest way to configure the plugin: open the QUICK SETUP section at the top of the dialog, pick what your controller device has built in from one menu —
— enter the few required parameters (controller IP, web login, SSH login, UDM unix login, and optionally Protect IP/login/API key with with cameras / with sensors checkboxes), then press execute. This fills in all the regular configuration sections below; nothing is saved until you press SAVE, so everything can be reviewed and adjusted first. Notes:
protectCreateCameras / protectCreateSensors (both default on) which gate the creation of new Protect camera resp. sensor/relay/speaker/SuperLink devices — existing devices keep updating either wayEVENTS-controllerWS.json / EVENTS-protectWS.json in the prefs dir (both off by default). The files start with [ and every line ends with , — append ] to get valid JSON. At 50 MB the oldest half is dropped automatically. Per-device debug logging (and, for switches, the mini-switch/no-SSH override) is configured on the individual switch/AP device's own Edit Device dialog, not here — see belowEach switch and AP device's own Edit Device dialog (not the plugin configuration) has two settings:
Auto (default) follows the controller's own report of whether the switch supports SSH; Force: Mini-switch (no SSH) and Force: Regular switch (SSH-capable) override that detection for this device. The dialog also shows a read-only label with the currently auto-detected status, so it's easy to tell what Auto is currently resolving to before overriding it. Mini/flex switches that don't support SSH get their port and client data from the controller's own API instead of an SSH session; this is normally detected automatically and the override is rarely neededAvailable under Plugins → uniFiAP:
lastSeen — updated every poll cycle from the controller; reflects the controller's own last-seen timestamp, not the plugin'sisConnected — USL-Relay uses Bluetooth; Protect may return null for this field. The plugin treats null as true (connected) since adoption implies connectivity for Bluetooth devicesinput{n}At / input{n}At_Last — the relay inputs device records the timestamp of the most recent press per channel, and the previous one in _LastlastCommand — relay output devices only; format "on sent YYYY-MM-DD HH:MM:SS" or "off sent …"Read from the AP's per-client station table every dict poll cycle:
signalWiFi — absolute received signal strength in dBm (e.g. -41); closer to 0 is stronger, below about -75 dBm connections get flakynoiseWiFi — noise floor in dBm (typically around -95)signal2NoiseWiFi — signal-to-noise ratio in dB (Ubiquiti calls this "rssi"): signalWiFi - noiseWiFi. Higher is better: above 25 dB solid, 15–25 dB usable, below 15 dB problems. Usually the most meaningful quality number since it accounts for the local noise floorsatisfactionWiFi — UniFi's own 0–100 connection quality score for the clientchannelWiFi — actual WiFi channel the client is on (e.g. 11, 44)stateWiFi — the AP driver's per-station flags as an 8-bit binary string (e.g. 00011111, bit 0 rightmost). Bit meanings (Atheros/madwifi node flags, not officially documented by Ubiquiti):state_pwrmgt field)00011111 = authenticated 2.4 GHz client with WMM, currently power-saving (typical IoT device napping between beacons)/proxy/protect/integration/v1/) with X-API-KEY for read and write operations/proxy/protect/ws/updates) for real-time events (sensor triggers, relay inputs, camera motion)/proxy/network/wss/s/default/events). It powers:blocked state updates plus an audit log line when an admin blocks/unblocks a clientEVT_WU_Connected/Disconnected/Roam) as a replacement for the SSH log listener — slower by ~10 s, intended for setups without AP SSH accesssensorButtonPressed event and a functionButtonPressedAt field in sensor updates) — both update the sensorButtonPressed stateuniFiAP.indigoPlugin/
Contents/
Info.plist plugin metadata and version
Server Plugin/
plugin.py main plugin code
Devices.xml device type definitions
Actions.xml action definitions
MenuItems.xml menu item definitions
Events.xml event definitions
PluginConfig.xml plugin preferences UI
MAC2Vendor.py MAC-to-vendor lookup
*.exp expect scripts for SSH operations
unifi_dpi.json DPI application ID map
| Released on: | July 14, 2026 |
| Requires: | Indigo v2022.1.0+ |
| Downloaded: | 1 times |
| Download this release | |
NEW: - prepared for a future CO-only Protect sensor: plausible model identifiers (UP-CO/USL-CO variants, CARBON-MONOXIDE) map to the existing Smoke/CO device type, plus a token-safe "CO" fallback for unknown spellings (matches USL-CO-EU but can never mis-grab CONTACT). The smoke_co type already carries all CO states/display - once the hardware exists, only its status-block name may need adapting - new device type "Protect FloodLight (UP FloodLight)" (light_protect, Protect modelKey "light"): an Indigo DIMMER: the 6 led levels map proportionally onto the percent scale (level100/6: 17/33/50/67/83/100%, 0=off; any percent set rounds to the nearest level; Brighten/Dim steps one level). onOffState follows isLightOn (Indigo on/off sends lightOnSettings.isLedForceOn via the internal protect api PATCH /proxy/protect/api/lights/, same as brightness), display "ON/off + timestamp"; states: motionDetected + lastMotionAt/_Last (PIR), isDark, ledLevel (1..6), lightMode (off/motion/always), pirSensitivity/pirDuration/luxSensitivity, isLightForceOn, isConnected/status, firmware/ip/lastSeen. Created at bootstrap (gated by protectCreateSensors), updated live via WebSocket; a newly adopted floodlight schedules a protect refresh automatically. New action "FLOODLIGHT Protect set light ON / off" and menu item "FLOODLIGHT set light ON / off.." (same as the device on/off command: forces the light on / releases it to its configured mode; both can also set the brightness, ledLevel 1..6, via the internal protect api - on/off and brightness independently selectable) - every newly created Indigo device is now logged (info level): created new device "" type: address: - covers all 27 creation paths (auto-detect, Protect sensors/cameras/relays/speakers, clients, ...) via one shared wrapper, independent of debug settings - QUICK SETUP section in plugin config: pick what your controller device has built in from one menu (hosted Mac/rPi | CloudKey | controller w. built-in switch | +AP | UDM-Pro/UCG gateway+switch | UDM gateway+switch+AP), enter only the needed parameters (controller IP, web login, ssh login, UDM unix login, Protect IP/login/API key), optional Protect block (enabled / same machine / with cameras / with sensors), then one button fills all the regular config sections below - nothing is saved until SAVE is pressed, so everything can be reviewed first. External switches/APs are found by auto-detect and are never changed by the wizard; the controller's built-in switch/AP use the reserved slots SW#13/AP#20 (filled automatically). The wizard resets on every dialog open and prefills its entry fields from the current settings, so nothing has to be retyped; the result line reports how many parameters actually changed (details in the log) - new prefs protectCreateCameras / protectCreateSensors (both default true, existing installs unchanged): gate the creation of NEW Protect camera resp. sensor/relay/speaker/SuperLink devices - existing devices keep updating either way; set by the quick setup "with cameras" / "with sensors" checkboxes - Protect on/off sensors now show a change-stamped timestamp in displayStatus: " YY-MM-DD HH:MM:SS" (open/closed, MOTION/clear, GLASS BREAK!/ok, ACTIVE/idle, SMOKE/CO, LEAK!/dry, connected/disconnected). The time re-stamps only when the state word actually changes (not every poll) - same change-stamped timestamp added to: analog sensor displays (temperature/humidity, AQI/vape/CO2), the Protect speaker (idle/playing/vol%), the SuperLink gateway (lower-case connected/disconnected + onOffState from isConnected), relay inputs (in1:ON/off) and relay outputs (on/off in the onOffState display) - displayStatus padding is now measured, not guessed: when PyObjC/AppKit is available the plugin measures each status word's real pixel width in the 13pt system font and pads with spaces to a common ~80px target (one formula for every word, incl. keyfob/speaker/relay strings that the hand-tuned table never covered; results land within +-2px). Without PyObjC it falls back to the per-word table as before - the displayStatus shown in the State column uses a 2-digit year (YY-MM-DD, space restrictions); all timestamp STATES (lastStatusChange, lastCommand, keyfob press, leak/glassbreak/relay-input times, created/upSince) keep the full 4-digit year - the year is shortened only at display-render time. Status words are padded per word (padDisplay) so the date-times roughly line up in the State column; at startup stored displayStatus values are reformatted once (and interim 2-digit state values expanded back to 20xx) - plugin config dialog opens much faster: the dynamic refresh callback (refreshCallbackMethod -> setfilterunifiCloudKeyListOfSiteNames), which the Indigo client fired on every field change/initialisation with a full client->plugin round-trip each time, is removed entirely. The 8 combined-condition visibility flags (showUidUDM, showCtrlActive, ...) are replaced by direct client-side bindings to their section checkbox - no plugin round-trips at all while the dialog is open; everything else happens once at dialog open. Cosmetic trade-off: a few conditional fields (e.g. UDM unix login, Protect login) now simply show whenever their section is open, instead of also depending on controller type / camera system - removed the curl transport option entirely (requestOrcurl / curl path config options are gone): all controller/Protect http access now uses python requests only - curl was a fallback for OS X El Capitan-era SSL and hasn't been needed for years. The OS/port probe now uses a requests HEAD call as well - sensor/relay state bridgeId renamed to bridge_used and now holds the SuperLink bridge's Indigo device NAME instead of the raw Protect id; updates live via WebSocket when the sensor switches bridges. The Bluetooth all-in-one UP-Sense (no LoRa bridge) has no bridge_used / bridgeCandidate states - only its btSignal states - keyfob: new device-edit option "Button display": Auto (default - follows the fob's buttonLabels field from Protect: securityActions=names, positionHint=numbers, i.e. the "Button Labels" selection in the Protect UI, tracked live via a new buttonLabels state) | names | numbers. Numbers mapping: 1=arm, 2=night, 3=disarm, 4=panic. The buttonPressed state ALWAYS shows "number/name" (e.g. 2/night) regardless of the option. Saving the device dialog re-renders the display immediately (The Protect UI "Button Labels" setting is cosmetic only - the API always sends the internal names) - more sensor info states: mountType + openStatusChangedAt/_Last (entry, allInOne), tamperingDetectedAt/_Last (siren, smoke/CO), temperature/humidity alarm thresholds (environmental, allInOne), ledEnabled + firmwareUpdateState (all LoRa devices) - filled at bootstrap and updated live via WebSocket - new states bridgeCandidate1/2/3 on the LoRa Protect devices (entry, motion, environmental, glassbreak, keyfob, siren, smoke/CO, relay - NOT the Bluetooth all-in-one UP-Sense): which SuperLink bridges the device can currently hear, best signal first, as " " (from wirelessConnectionState.bridgeCandidates; resolved to the Indigo bridge device name when known, filled at bootstrap and live via WebSocket, unused slots empty) - raw Protect WebSocket events are no longer ALWAYS appended to EVENTS-protectWS.json: new debug checkbox "(17) append raw Protect WS events ..." (default off, like the existing controller-WS one) - saves constant disk writes on normal operation - debug options reorganized into labeled groups by data source: GENERAL | CLIENT presence tracking | SSH to unifi devices | CONTROLLER http/WS | PROTECT | WRITE FILES to prefs dir | DEVELOPMENT - checkbox ids unchanged, saved prefs unaffected. New checkbox for the BroadCast debug (existed in code but could never be enabled); removed the dead debugVideo pref - removed the FINGSCAN integration entirely (config options, Fing debug area, sendUpdatetoFingscanNOW, the "fing" flag on status updates)
MAJOR fix: - all SSH-read switch/AP/gateway dicts were being silently dropped: loads_resilient returns a (obj, dropped_count) tuple, but the caller stored the whole tuple as the dict; every downstream handler then rejected it ("mac" in (dict, 0) is False), so no SSH-read switch, AP or gateway (nor their self UniFi clients) had updated in ~13 days. Only the controller-fed mini switch, which doesn't go through this parse path, still worked. Now the tuple is unpacked
fixes: - adding a NEW relay no longer floods the log with "WS UNHANDLED modelKey:relay" during adoption: an unknown relay id now schedules a protect bootstrap refresh (so the Indigo devices get created once adoption completes) with a rate-limited info line instead - status changes on devices without a lastStatusChange state (e.g. the Protect relay) no longer produce the Indigo error "state key lastStatusChange not defined"; also fixed a typo ("fistSeen") that prevented the firstSeen state from ever being seeded by the status path - keyfob: the FIRST button press on a sleeping (disconnected/away) fob looked lost - the event actually arrives, but the display rebuild still saw isConnected=false (the awayState:ONLINE update only follows after the press event) and rendered DISCONN instead of the press. A button press now asserts isConnected/status=CONNECTED before the display is rebuilt, so the first wake-press shows immediately - the http target IP and port are now LOCAL variables handed through the call chain (executeCMDOnController -> getunifiOSAndPort) instead of the shared useIPForhttpCmd/usePortforhttpCmd instance variables - eliminates any remaining cross-thread contamination (e.g. controller vs Protect commands racing each other on setups where they use different IPs/ports). Also fixed on the way: the port scan referenced an undefined useTimeout (latent NameError, now a parameter), the Protect branch no longer overwrites the controller port (only visible when controller and Protect ports differ), and a freshly discovered controller port is now used for the login in the same pass instead of the pre-discovery value - controller logins were intermittently sent to switch IPs (LOGIN failed ... url:https://:443/api/auth/login): the switch-dict processing thread wrote the shared useIPForhttpCmd variable (its scratch copy of the switch IP) while executeCMDOnController in another thread was between setting the controller IP and issuing the login. The dict functions now use their local ipNumber parameter; only executeCMDOnController sets the URL host (controller or Protect IP). Latent for weeks - it only surfaced once the loads_resilient fix revived the SSH dict processing - relay outputs/inputs from the Protect WebSocket were mapped by a nonexistent "index" field (always defaulting to 0), so output 2 never updated and the parent showed the wrong output's state; the payload identifies them by "id" (0/1), which is now used (with index fallback) - switch self-clients read over SSH stayed expired while only the mini-switch (controller-fed) worked: SSH switch dumps often carry no timestamp, so the _doSWdictSELF dedup skipped every read after the first and the self-client was marked up only once. The self-client is now marked up on every successful SSH read (before the dedup); the controller/mini path still respects the dedup so a lingering snapshot of an offline device doesn't hold its client up - switch/AP self UniFi clients: setStatusUpForSelfUnifiDev now matches case-insensitively (MACs are stored mixed-case) and is also called where the read is confirmed fresh (it was only reached in a branch that is skipped for new/unmatched devices); if no client matches but one exists whose MAC differs only in the last octet, a log line reports it instead of silently leaving the client expired - auto-detect: an auto-created switch/AP was created but never enabled/polled (stayed blank until manual restart) because the "reboot" flag was cleared right after creation; the plugin now restarts as intended - auto-detect: switches/APs plugged in after plugin start are now discovered on the periodic scan (previously, with no mini-switch present, discovery only ran at startup) - auto-detect: a slot is claimed only after the Indigo device is actually created; deferred creation (e.g. no port_table yet) leaves the slot free for a clean retry - auto-detect: deleting a switch/AP Indigo device now recreates it (occupied-slot path rebuilds the missing device); a guard prevents duplication into a lower free slot - auto-detect: an actual (re)creation always triggers the restart that enables and polls it - the createUnifiDevicesCounter cap (anti-thrash for the gateway branch) can no longer swallow a genuine creation - switch port-count snapping in _doSWdictSELF was missing its break, so any switch with an unlisted port count ran up to 52 ports instead of the next-highest supported size - port command on controller wrote the updated device dict to the wrong list index (off by one, could also raise IndexError on the last device)
| Released on: | June 29, 2026 |
| Requires: | Indigo v2022.1.0+ |
| Downloaded: | 2 times |
| Download this release | |
| Released on: | June 10, 2026 |
| Requires: | Indigo v2022.1.0+ |
| Downloaded: | 32 times |
| Download this release | |
| v2022.49.434 | Requires Indigo v2022.1.0+ | Released March 24, 2026 | performance improvements for poe on off |
| Released on: | March 24, 2026 |
| Requires: | Indigo v2022.1.0+ |
| Downloaded: | 32 times |
| Download this release | |
performance improvements for poe on off
| v2022.49.431 | Requires Indigo v2022.1.0+ | Released March 21, 2026 | added support for min / flex switches |
| Released on: | March 21, 2026 |
| Requires: | Indigo v2022.1.0+ |
| Downloaded: | 36 times |
| Download this release | |
| v2022.47.425 | Requires Indigo v2022.1.0+ | Released Oct. 27, 2024 | added option for separate protect system |
| Released on: | Oct. 27, 2024 |
| Requires: | Indigo v2022.1.0+ |
| Downloaded: | 28 times |
| Download this release | |
| Released on: | Jan. 13, 2024 |
| Requires: | Indigo v2022.1.0+ |
| Downloaded: | 28 times |
| Download this release | |
in case of http error, the plugin does not print a large dump anymore, but it will = check if timeout, retry 2 more times, if sucessful, a warning will occur .. fixed after xx tries = if not sucessfult it will try 30 more times (after some minutes) and if not sucesfull the plugin will reload eg when the unifi device is down, or you load a new software
| v2022.42.396 | Requires Indigo v2022.1.0+ | Released Dec. 15, 2023 | poe on/off command for newer switches supported |
| Released on: | Dec. 15, 2023 |
| Requires: | Indigo v2022.1.0+ |
| Downloaded: | 41 times |
| Download this release | |
added option to select a differetnt way to set POE on/off switches. Some newer switch devices only support a unix command swctrl all of my older switches also support unix swctrl command.
| Released on: | Dec. 6, 2023 |
| Requires: | Indigo v2022.1.0+ |
| Downloaded: | 29 times |
| Download this release | |
| v2022.42.394 | Requires Indigo v2022.1.0+ | Released Dec. 1, 2023 | added checks for setup a new install if not all parameters and devices are set. |
| Released on: | Dec. 1, 2023 |
| Requires: | Indigo v2022.1.0+ |
| Downloaded: | 35 times |
| Download this release | |
added checks for setup a new install if not all parameters and devices are set.
| Released on: | July 19, 2023 |
| Requires: | Indigo v2022.1.0+ |
| Downloaded: | 34 times |
| Download this release | |
| Released on: | July 19, 2023 |
| Requires: | Indigo v2022.1.0+ |
| Downloaded: | 35 times |
| Download this release | |
| v2022.42.386 | Requires Indigo v2022.1.0+ | Released July 19, 2023 | added config option in general section to set request - curl timeout to any value >=1 sec |
| Released on: | July 19, 2023 |
| Requires: | Indigo v2022.1.0+ |
| Downloaded: | 28 times |
| Download this release | |
added config option in general section to set request - curl timeout to any value >=1 sec
| Released on: | July 18, 2023 |
| Requires: | Indigo v2022.1.0+ |
| Downloaded: | 29 times |
| Download this release | |
set http req timeout to 10 secs
| Released on: | May 8, 2023 |
| Requires: | Indigo v2022.1.0+ |
| Downloaded: | 35 times |
| Download this release | |
added menu item to clean up ~/.ssh/know_hostsfile if you have issues with ssh loging in to your unifi devices, you can now reset the entries in ~/.ssh/konwn_hosts file
added config option in userid/password section to ignore known_hosts ie use ssh -o StrictHostKeyChecking=no userid@x.y.x.z instead of ssh userid@x.y.x.z
| Released on: | April 19, 2023 |
| Requires: | Indigo v2022.1.0+ |
| Downloaded: | 33 times |
| Download this release | |
1. fixed error for unifi protect event thumbnails in some cisrcumstance the thumbnail is not available immedeately after event. the plugin now tests if the thumbnail image is ready, then they are copied. this might take up to 10 secs. in addition a "snapshot" is taken immediately. they can be requested at any time
2. removed code for old deprecated nvr video system. The plugin now only supports PROTECT
3. made config a little more readable
| Released on: | June 27, 2022 |
| Requires: | Indigo v2022.1.0+ |
| Downloaded: | 29 times |
| Download this release | |
1. suppress error message that File suspended does not exist 2. added option to supress Exsessive time used ... set in config at the bottom 3. fixed error msg: state key previousStatusChange not defined