Android app capability audit
Status: signed-in screen inventory recorded, 24 September 2026
RainPoint Home (com.baldr.rainpointSmartPlus) 1.19.1065, version code 1065, was inspected against the existing HWG023WBRF / HWG023WBRF-V2 hub and HTV345FRF timer. The account's UK region was selected and the existing private credentials were used. The owner explicitly approved the first-run agreement. Home, Plan, Smart, Event and Me were inspected, including the timer's zone-1 plans, manual form, history and settings, and the hub's settings.
This is a read-only feature inventory, not completed app parity or a regression-test pass. No watering, schedule save, scene creation, device-setting write, invitation, email export, pairing, deletion or firmware installation was performed. Unsaved forms were dismissed, the app was signed out, the account field was cleared, and the shared Android reservation was released. Zones 2 and 3 were visible but were not actuated.
BlueStacks was authorized solely for this one-off vendor-app evaluation. It is not a project dependency, test target, workflow requirement or supported replacement for the Android Studio emulator. The reusable testing direction remains NUnit and NUnit3TestAdapter with the Android Studio emulator. Its RainPoint startup issue remains unresolved. The temporary inspection used the existing Android reservation; its navigation and private credentials are not incorporated into repository scripts or test configuration.
Observed capabilities and client coverage
The observations below come from the installed app, compared with the public client APIs at inventory time. A visible control establishes a feature to investigate; it does not establish its wire contract or successful execution. Values in an unsaved new-plan form are defaults, not saved device settings.
Subsequent implementation: typed schedules now cover saved-plan reads and normal, cycle-and-soak and misting plan creation/replacement, deletion and enable/disable. Disabled normal, cycle-and-soak and misting plans were created through the client, compared against the app, and removed with exact restoration. The original inventory table below describes the earlier state; Seasonal adjustment and per-zone rain delay also have typed operations. Calendar calculations and supported write variants are now implemented; the completion ledger distinguishes cloud-storage checks from physical execution. The schedule document records the current implementation and validation limits. Typed zone defaults are also implemented, with app comparison and exact restoration verified. Typed flow calibration also has a zone-1 app comparison and exact restoration. Typed usage/event history is now implemented, tested on both runtimes and compared with the app. A second account accepted its invitation under HOME Management and obtained shared-home read access.
| Area / app page | Observed functionality | Current client coverage / gap |
|---|---|---|
| Sign-in / Account Settings | Country/region, email/password login, registration, password recovery, guest mode; profile picture, nickname, bound email, password change, account deletion and logout. | Login, explicit token refresh and logout implemented. Automatic lifecycle recovery and account administration missing. Registration/recovery/account changes were not exercised. Guest-mode behavior remains uninspected. |
| Home | Home selection, hub connectivity, separate timer-zone cards, next-plan indicator, weather card, room organization and add-device entry. | Home/hub discovery, connectivity and typed zone readings implemented. Next-plan metadata, weather, room management and provisioning missing. |
| Timer overview | Three zone tabs; last water usage in litres; Plan, Manual, Charts and Event navigation. | Normal start/stop, state/duration and nullable last litres implemented. Other operations below are missing. This session's last-usage display was 0.0 L; that is not proof of a reset or a fresh independent volume measurement. |
| Manual | Normal Irrigation, Cycle&Soak and Misting Irrigation choices. Normal mode opens an hours/minutes duration picker with Cancel/Confirm. | Only normal irrigation implemented. Neither Confirm nor any start/stop control was activated. The other manual modes' parameter forms and exact bounds still need inspection. |
| Irrigation Plan | Empty plan list, add-plan control, calendar, rain-delay switch and current seasonal percentage. | Plan read/create/update/delete/enable, calendar inputs and delay operations missing. No existing plan was available to inspect edit/delete/enable behavior. |
| Normal plan draft | Mode, recurrence, duration, season-adjusted duration, start time, effective date and optional water-usage limit. | Missing attributed plan models and typed operations. No draft saved. |
| Recurrence | Everyday, odd dates, even dates, interval in days and custom Monday–Sunday selection. | Missing. Full interval bounds, odd-date edge cases, time-zone/DST behavior and recurrence execution remain unverified. |
| Cycle&Soak plan draft | Total irrigation duration, each watering duration, soaking duration, estimated total schedule, seasonal adjustment, start/effective date, recurrence and water-usage limit. | Missing. Observed defaults illustrated 10 minutes of watering split into 5-minute cycles with 30-minute soaking, producing an estimated 40-minute schedule. Do not infer the complete timing algorithm or limits from that one example. |
| Misting plan draft | Irrigation duration, run time and interval in seconds, seasonal adjustment, start/effective date, recurrence and water-usage limit. | Missing. Exact allowed ranges and whether total duration includes inactive periods need contract/behavior verification. |
| Water-usage limit help | App describes ending irrigation when either the duration or the configured usage threshold is reached. | Optional volume limits now implemented for normal, misting and cycle-and-soak saved plans. See schedule limits. Threshold enforcement remains untested. |
| Seasonal Adjustment | Twelve monthly percentages. Help states 10–200%, a one-minute minimum adjusted duration, and restrictions against exceeding the repetition interval or 24 hours. | Missing. These are app-stated rules, not independently tested firmware behavior. No month was changed. |
| Calendar | Month navigation, day selection and per-day plan list; current date showed no plan. | Missing schedule/calendar support. Calendar rendering itself belongs in the consuming UI. |
| Rain delay | Per-timer-plan switch and home-wide turn-on/turn-off menu. | Missing. Controls were not activated; scope and duration choices remain unverified in the current app. The kit manual separately describes 24/48/72-hour choices. |
| Charts | 30 Days / 12 Months views, period/date and litres, plotted history. Monthly view returned 10.4 L in this session. | Historical queries and period aggregation missing. Last usage is not a substitute for history. Exact bucketing, freshness, pagination and unit conversion need contract verification. |
| Chart export | Export Data to Email dialog prefilled with account email, Cancel/Confirm. | Missing optional export operation. Cancelled without sending. Receiving a typed history series is the primary client requirement; generating a local report can remain a consumer concern. |
| Timer Event / home Event | Timestamped watering, control and usage records; home-wide device and event-type filters. Events identify a zone and may include duration, source and operator. | Historical event queries/filtering missing. Existing MQTT feedback is not event-history parity. Pagination and retention are unverified. |
| Timer Settings | Device name, UI DIY, device information, individual zone settings and Delete. | Read-only identity/metadata partly implemented; rename/removal missing. Removal was not selected. UI DIY is appearance customization and was exited without saving. |
| Timer Device Information | Device ID/model/address, battery indicator, RSSI and firmware version; observed firmware 130. | Typed identity, battery condition, RSSI and firmware reads already exist. A battery icon does not establish a numeric percentage. Fault meanings remain incomplete. |
| Zone Settings | Description, Zone Information, Smart Plan Recommendation switch, misting defaults, default duration, soil-sensor selection and flow-rate calibration. | These settings operations are missing. No switch or persisted value was changed. |
| Zone Information | Plant type, soil type, nozzle type, sunlight duration and ground slope, used by recommendations. | Missing profile/recommendation models. Complete option sets and recommendation algorithm/endpoint remain unverified. |
| Flow Rate Calibration | Correction coefficient expressed as a signed percentage; picker visible around zero. | Missing. Full coefficient range and effect on readings need verification. Picker cancelled and form exited unsaved. |
| Soil Sensor | Association selector; only None was available on this account. | Missing. Sensor thresholds/actions require relevant hardware and cannot be validated by this inspection. |
| Hub / Settings | Child-device cards, Add Device, name, identity/MAC, Wi-Fi RSSI, firmware/update check, automatic/manual time broadcast, RF communication channel and Delete. | Discovery, signal, firmware reads and time-broadcast APIs exist. RF-channel setting and rename/provisioning/removal operations missing. No operational control was invoked. Observed hub firmware 1.1.1041. |
| RF channel help | Channel selection affects hub-to-RF-child communication; the app distinguishes Bluetooth children. | Contract needs tracing before implementation; do not infer Bluetooth support for this client's current hardware scope. |
| Smart Scene draft | If conditions, Then tasks, effective period, daily frequency limit and minimum interval between executions. | Missing automation models/CRUD. No scene created. Multi-condition logic, editing, enable/disable and execution behavior remain unverified. |
| Smart Scene conditions | Device Status, Time and Weather. Weather offers temperature, humidity, weather type, rain probability and wind speed. | Missing. Device-specific conditions, comparisons and full parameter bounds need further inspection/contract work. |
| Smart Scene tasks | Control Device, Send Notification and Rain Delay. | Missing. Task parameter forms and delivery/execution not exercised. No notification sent. |
| HOME Management | Add home, name, rooms/zones, location, time zone, members, units and Delete HOME. Room screen has Add/Edit. | Home discovery only. Management, room assignment, location/time zone and preference operations missing. No home/room changed or removed. |
| Members | Owner listing and invitation by email. Form says the invitee must have registered an account and accept the invitation. | Membership operations missing. No invitation sent. Concurrent access by distinct accounts and member permissions remain untested. |
| App Settings | Mobile and email alarm notification preferences, language and current-home parameters. | Notification-preference APIs missing. OS push registration and language presentation need separation from cloud settings. No notification switch changed. |
| Units Format | 12/24-hour display, date format, temperature, length, pressure, volume and currency. | Home-preference operations missing; the client should continue exposing explicit canonical units rather than formatted display strings. |
| Other Me entries | Third-party Voice Service, FAQs & Feedback, Help, About and Shop. Voice-service page exposed no entries during this session. | Help, legal/version content, shopping and appearance belong to app/UI scope. Feedback submission and account linking are external actions, not implied client requirements. Supported voice integrations were not established. |
Event category inventory
The app's global type list includes watering, water usage, water control, hub/child connectivity, valve detection, manually cleared alarms, rainfall, operation logs, excessive water usage, water shortage, valve failure and low battery. It also lists leak, temperature/humidity/freeze/CO2 alerts and categories for sockets, power/energy/billing, bug zappers, fans, lamps, battery voltage/faults, blockage and abnormal protection.
These labels span multiple product families. They are not a validated mapping of this timer's numeric alarm codes. The current client preserves unknown alarm codes; do not replace them with guessed names. Historical fault samples or a verified protocol contract are needed for typed event/alarm mapping.
Remaining evidence and implementation order
This pass inventories the accessible primary controls for the available kit. It does not claim exhaustive traversal of every picker, error state or other product. Unverified areas include existing-plan editing/enabling/deletion, all numeric bounds, delayed/active watering screens, rain-delay activation/cancellation, recommendations, sensor behavior, pairing, firmware installation, account administration, voice linking, home weather detail and long-running session recovery. The kit manual additionally describes six plans per valve; the empty list did not exercise that limit.
Continue one capability at a time:
- Typed schedule reads plus normal, cycle-and-soak and misting plan editing are implemented. Populated disabled plans of all three modes now match the app; additional recurrence and volume-limit variants still need their own comparisons.
- Extend bounded plan writes and execution validation only with established contracts, offline NUnit coverage on net472 and net10.0 and explicit live restoration checks. All three zones are supported and offline-tested. Persisted schedules can cause later watering, so live tests must not enable watering on zones 2 or 3; disabled-plan and non-actuating settings tests still require restoration.
- Usage/event history, seasonal adjustment and per-zone rain delay are implemented; default duration and misting defaults are also implemented and restored after app comparison. Flow calibration is now implemented and restored after app comparison. Remaining zone-profile settings and sensor association need their own contracts and restoration checks.
- Add remaining hub/home settings and Smart Scenes with their own evidence and tests. Account lifecycle recovery is now implemented; MQTT endurance remains an independent hardware check.
The original inventory was documentation-only, with a baseline of 177 library/dashboard plus 12 Windows cases per framework (378 passes). Later schedule implementation and live comparisons are recorded in SCHEDULES.md; the current offline total is 2,834 passes, including the Windows settings, history and saved-plan screens. No public raw-JSON API or dependency was added. See upstream parity for the narrower Python-library comparison and test documentation for repeatable validation.
Emulator compatibility evidence
| App build | Environment | Observed result |
|---|---|---|
| 1.19.1065, original Google Play splits | Google Android 16 x86-64 with ARM64 translation | Native loader fails before the first screen. Remains unresolved. |
| 1.14.1047, publisher-signed standalone APK from Uptodown | Same Google emulator | Starts but demands an upgrade. Current version was subsequently restored. |
| 1.19.1065, exact original Google Play splits | Existing BlueStacks Android 9 instance | Signed-in navigation worked for this one-off inventory. Not a reusable test platform for this project. |
The Google emulator reports ABIs x86_64,arm64-v8a and native bridge libndk_translation.so. The installed ARM64 split contains lib/arm64-v8a/libreactnative.so, but the failure logs search APK paths under lib/x86_64. The package diagnostic records primaryCpuAbi=arm64-v8a and extractNativeLibs=false; Google Play did install the ARM64 variant. Follow-up inspection on 25 September traced the bundled DirectApkSoSource fallback-path builder to the first entry returned by SysUtil$MarshmallowSysdeps.getSupportedAbis(). That helper preserves the emulator's ABI ordering, filtered by process bitness. Fallback bytecode independently confirms index zero is used. On the recorded x86_64,arm64-v8a configuration, this constructs an x86-64 APK path despite the installed ARM64 split. This explains the observed incorrect lookup; it is not a verified repair or proof that no additional native-translation problem exists. Forcing the installer ABI alone would not change that loader choice. No APK was modified and no shared emulator properties were changed.
Both APK versions verified against publisher certificate SHA-256 085ae9c4cadb4870a0eb48b10977019021e488b1a6b9e2dbe4b5b69444cae819. The older APK SHA-256 is e023dcc17bef1cdb81058ddf1a5b3728c28faa4b59ac442414fe3076da5cbbbf. No package was patched or re-signed. The earlier APKPure connectivity and browser-safety failures are separate from this successful Google Play installation.
NUnit recorded installation, minimized capture, package diagnostics, compatibility comparison and restoration of the current package. A navigation-test pass only establishes guarded input/evidence capture; it does not assert that the app launched or that any capability passed validation. The interrupted guide step retained its reservation; its ownership was reconciled and the current sign-in screen inspected before continuing. No uncertain login or watering input was replayed.
Private hierarchies and installation diagnostics are retained locally outside published artifacts. They can contain account and device identifiers. Do not publish them or turn the temporary BlueStacks inspection session into a project workflow.
Current follow-up status
The inventory table records what was missing at the original inspection, not the present implementation. Subsequent Windows work includes seasonal/rain-delay editing, hub time/firmware tools, reported RF channel, product catalog and session renewal with bounded optional credential recovery. Read-only settings and history checks now cover all three zones on both runtimes. TODO.md separates completed work from contracts and behavior still unverified. Full app parity and Android Studio compatibility remain open.
The subsequent calendar implementation projects enabled saved plans locally and provides a Windows Calendar tab in all three zones. The original inventory's Calendar row is historical. Full populated official-app calendar traversal remains unverified. A daily zone-1 occurrence has reported start and automatic idle through MQTT; see the separate schedule evidence.
Zone profiles/recommendations and soil association/moisture-stop configuration are now implemented, as are known timer alarm flags. See profiles and sensors. Automatic low-moisture rules and notification administration are now implemented; sensor hardware behavior and notification delivery remain unverified. The inventory table above is historical.
The separate low-moisture automatic watering rule is now implemented and offline-tested in the client and Windows app; live storage and physical execution remain unverified.
Administration, weather and scenes follow-up
The original table remains an inspection-time record. Home management, room/device-zone assignment, members/invitations, renaming, notification flags, date/unit/currency/time-zone preferences and historical alarm categories now have typed implementations and Windows controls. Weather models/signing and Smart Scenes supported CRUD, conditions/actions and effective periods also have offline coverage.
The first administration pass checked read-only data and empty scene lists; the available timer's catalog disables scene actions. Later isolated empty-home/room/preference writes passed on both runtimes with confirmed cleanup. Scene writes and notification delivery remain unverified. After transient cloud failures and a mixed-number/text weather correction, final administration dictionaries and 48-hour/seven-day forecasts passed live on both targets. The weather response omitted current conditions, which remain unknown. Follow-up on 25 September added account registration/recovery/profile/password operations, RF pairing/removal, solar effective windows and typed paged scene history. Profile and empty history reads passed live on both runtimes. Credential writes, device pairing/removal and populated history were not tested live. Initial hub Wi-Fi/Bluetooth provisioning, additional-family scene conditions/actions and Android Studio compatibility remain gaps. Known scene-result meanings were subsequently verified against bytecode and are exposed with the original numeric code; unknown codes remain unknown.
On 25 September, disabled creation/replacement/deletion and six then-accepted recurrence encodings passed across all three zones and modes on both runtimes (54 combinations each), with complete original settings restored after every mode. Once creation/enabling was subsequently removed after failed execution checks; five recurrence choices remain writable. These historical cloud-storage results are recorded in schedules; they do not establish the historical inventory's remaining physical-execution or official-calendar comparisons.
Schedule investigation — 25 September 2026
A further one-off read-only inspection with the shared member account showed the existing hub online, no remaining saved plans, zone-1 rain delay off and seasonal adjustment at 100%. The calendar showed no plan for the current date. The Add Plan control was absent. Source tracing confirmed that the RF screen exposes that control and plan-detail editing only to a home owner or administrator. Separate typed live reads confirmed the owner/administrator and member roles without changing either account's permissions.
The app was signed out, its initial sign-in screen restored with an empty password, and the Android reservation released. No app setting or valve control was changed. The app's recurrence picker also differs from the common RF decoder: it does not offer Once. See schedule investigation and limitations. Two Once execution checks failed and the subsequent daily check passed. Once creation/enabling is now rejected; historical values remain readable, disableable and removable. The complete official-calendar traversal remains separate from the verified daily plan details and next-start display.
Subsequent client-only notification checks verified populated CRUD/switching and cleanup on both runtimes, with two separately approved and independently confirmed email deliveries. Both full live runs failed during history decoding. A private capture identified an omitted device address in a successful notification result; the corrected model and exact-response replay pass on both runtimes. Live pagination remains unverified. See the scoped scene evidence. No Android session or watering action was used for that check.
Completion comparison — 27–28 September 2026
The later one-off populated interval-calendar inspection verified plan details, delayed/current/next dates and October navigation. It exposed a DST mismatch: the app's 25/26/28/30 October sequence uses UTC day buckets with the home's reported transition table. The corrected typed calendar and Windows display now match those observations. See the scoped calendar evidence; this does not claim every screen or device family is supported.
The support account was signed out and BlueStacks closed after the inspection; the shared Android reservation was released. No app control changed a valve or setting. Independent NUnit fixtures restored all temporary device changes. Scene-history pagination subsequently passed against two live notification events after correcting the server page offset; previous failures remain retained. Current implementation and hardware limits are in the ledger.