9.1 KiB
Lazy B Farm & Ranch site guide
Verified through production Configure Pages and native element Copy on 2026-10-21 (America/Edmonton). This was a read-only context survey: no page saves, pastes, register writes, alarm changes, device actions, or operational command tests. Bindings describe the configured UI, not proven PLC behavior. No credentials or camera/map endpoints are retained.
Identity and scope
Production: https://www.atomhmi.com/site_lazy_b/
Configure: https://www.atomhmi.com/site_lazy_b/configure_pages
All 21 page trees were opened on October 21. Native Copy inspected representative main, sequence, water, valve, compressor and boiler subtrees. The site combines water/heating (water device prefix) and grain handling (grain). Development equivalence, PLC tag addresses, polling/logging and alarm latching were not verified.
Page map
| Configure label | Slug | Role / roots |
|---|---|---|
| Main | main | Trend + Wells and Pumps |
| Outflow | outflow | div + row; 127 elements |
| Well 1 | well_1 | div + operating row + information/map row; 111 elements |
| Well 2 | well_2 | same three-root layout; 104 elements after timer removal |
| Well 3 | well_3 | same three-root layout; includes motor/speed control |
| Air Compressor | air | layout div + all operating root |
| Boiler | boiler | layout div + row operating root |
| House Valve | valve | spacer + all operating root |
| Alarms | alarms | spacer + all; 16 elements |
| Grain Alarms | grain_alarms | Main; 209 elements |
| Grain Motors | grain_motors | Motors; 357 elements |
| Receiving | receiving | Control Row; 77 elements |
| Receiving Start Stop Delays | rec_startstopdelays | Motors; 52 elements |
| Reclaim | reclaim | Control Row; 91 elements |
| Reclaim Start/Stop Delays | rcl_startstopdelays | Motors; 112 elements |
| Loadout | loadout | Control Row; 23 elements |
| Device Status (Grain) | device_status_grain | All; 111 elements |
| Device Status (Water) | device_status_water | All; 106 elements |
| Settings | settings | div + Wells and Pumps; 65 elements |
| Testing | testing | one Adjustible Gauge named Well 1 Flow rate |
| testing grounds | test | Trend; 60 elements |
Navigation table listed Grain Motors, Loadout, main, Main, Outflow, Receiving, Reclaim, Settings. Both main and Main target page_main. No cleanup performed. Well 1's inspected tree contains displays/charts and no switch/button motor-control types, while Wells 2 and 3 include controls. Do not assume the three wells have identical templates.
Water examples: Well 3
Copied operating row contains 55 elements:
| Role | Binding | Display/configuration |
|---|---|---|
| Flow | water:aiWell3Flow_eu | gpm; gauge 0–25 |
| Level | water:aiWell3Lvl_eu | ft |
| Run feedback | water:well3_q_run | On/Off |
| Mode | water:well3_i_autoMode | 1 Auto / 0 Manual; separate run feedback |
| Start / Stop | water:well3_i_manStart / well3_i_manStop | each writes 1 |
| Off / On level SP | water:well3OffLvlSP / well3OnLvlSP | editable, 0–100% |
| Flow SP | water:Well3PIDSP | editable, 0–30 gpm |
| Manual speed | water:Well3SpeedRefManSP | editable, 0–90 Hz |
| Today / Yesterday volume | water:iWell3Vol_volDaily[0] / [1] | gal |
| Power | water:well3Power_kw | kW |
| Energy | water:well3Power_today_kwh / month_kwh / lastMonth_kwh | kWh |
| Historical levels | water:aiWell3LvlAgg_Past24Avg / Max / Min | ft |
Current flow/level chart navigator is water:aiWell3Flow_eu. Historical level navigator is water:aiWell3LvlAgg_Past24Avg, default button index 1. The information/map/report root is separate; preserve it during control-page replacement and do not publish its location details unnecessarily.
Resolved by removal — October 21, 2026: at the user's request, removed Time Since Start and Hours from production Well 2 (well_2) and Well 3 (well_3). Both pages had copied wellNW1 references with no verified corresponding Water System timer registers. Removed only elements 3a7413f1-6213-44be-842c-350f715ceb6d and c8a9b2ea-35d5-448b-9d68-756715e25df6 (Well 2), and 6e6f612c-c2e5-4ee9-a468-849e6191b523 and 4e613f5b-e0e3-4526-88dd-b9a81695d75e (Well 3). Saved both pages and freshly reopened: Well 2 element count 106→104; Well 3 124→122; the only removed IDs were these four and no elements were added. Runtime pages show the remaining motor controls without timer fields. Well 1 has no timer fields and was unchanged. Local native Copy backups: /tmp/lazy-b-well-timer-removal-backup.json. No PLC counters were reset, register definitions altered, or operational commands submitted. Removal supersedes the earlier request to locate replacement timer bindings; adding timers later requires verified PLC tags/units.
Historical audit before removal — October 21, 2026: rechecked production Well 3 (well_3). Time Since Start, element 6e6f612c-c2e5-4ee9-a468-849e6191b523, then read |{register:water:wellNW1_tssTmr}| * 1000, non-editable, HH:mm:ss, blank updateRegister. Hours, element 4e613f5b-e0e3-4526-88dd-b9a81695d75e, then read |{register:water:wellNW1_totalTmr}| * 1000, editable, writes value / 1000 to water:wellNW1_totalTmr, format d [days] HH:mm. Captured both original configurations and left them unchanged. The Water System (water) register table contained 1,660 entries; searches for tss, totalTmr, runtime and wellNW1 returned no matches. The Well 3 family has no verified replacement for either timer. Existing enabled iWell3Vol_rtDaily[0] / [1] are daily counters, not established equivalents of time-since-start or lifetime Hours; units were not independently verified. well3Power_total_onTime exists disabled and is likewise not a verified replacement. Disabled well3_i_UTS has blank description, slave Well Shack 2080-LC20-20QBB, address well3.i.UTS; its role/units do not establish a timer binding. Do not invent well3_tssTmr/well3_totalTmr mappings or enable an unrelated counter. Initially requested correct PLC tags, units and lifetime-counter write semantics; the user subsequently chose removal instead. No page/register saves, counter resets, polling changes or operational tests were performed.
Valve, compressor and boiler
House Valve:
- Feedback reads
water:doHouseVlvOpandwater:doHouseVlvCl. - Mode
water:HouseVlvAuto, 1/0. - Open / Close / Stop →
water:HouseVlvCmdOpen/HouseVlvCmdClose/HouseVlvCmdStop, each 1. - Maintain Pressure
water:spHousePrsand Deadbandwater:spHouseVlvCtrlDb, direct editable values with configured limits 0–100 psi.
Air Compressor:
- Feedback
water:AirComp_q_run; modeAirComp_i_autoMode, 1/0. - Start/Stop →
water:AirComp_i_manStart/AirComp_i_manStop, each 1. - On Time displays
water:AirCompTimeSP * 1000in Timespan (ms), writesvalue / 1000. Preserve conversion symmetry.
Boiler:
- Pressure
water:aiBoilerPrs_eu, psi. - Water temperature
water:aiBoilerTe_eu, °F. - Outside temperature
water:aiAmbianteu, °C. - Trend uses separate case-sensitive scales
temp(0–200 °F),psi(0–20),Temp(-40–40 °C), navigator water:aiBoilerTe_eu. - Internal element names such as Well 3 Water Temp / boiler water temp do not reliably describe their displayed binding.
Grain sequences
| Function | Receiving | Reclaim |
|---|---|---|
| Status | grain:g_rec_out_status | grain:g_rcl_out_status |
| Destination/source selection | grain:g_b_recDstIdx | grain:g_b_rclSrcIdx |
| Start | grain:g_rec_in_manStart = 1 | grain:g_rcl_in_manStart = 1 |
| Normal stop | grain:g_rec_in_manStop = 1 | grain:g_rcl_in_manStop = 1 |
| Rapid stop | grain:g_hmiRecRpdStp = 1 | grain:g_hmiRclRpdStp = 1 |
| Timed-stop value | grain:g_rec_in_manOnMaxSP | grain:g_rcl_in_manOnMaxSP |
Both timed-stop fields use Timespan (ms), direct writeValue=value, configured limits 0–356400000 and HH:mm:ss. Their disable buttons write 0 to the same target. Receiving enable uses grain:g_recEn (1/0). Its chart includes M01/M03/M04 speed % and current A; navigator grain:g_m01_out_current.
Receiving also shows M02Temp, M01, M02, M03, M04 feedback. M03 current control uses grain:g_m03CurCtlEn, g_m03CurSp, g_m03PID_Kp and g_m03PID_Tn. Kp/Tn limits=false despite populated 0/100 fields. Tn's displayed suffix is KP, a possible label issue left unchanged.
Reclaim includes M21–M29 run feedback among its motor cards. Reopen the precise motor before adapting it.
Loadout controls M41:
- Position buttons target grain:g_m41_in_autoPos with values 0,20,40,60,80,100.
- Mode grain:g_m41_in_autoMode (1/0); Open/Stop/Close grain:g_m41_in_manOpen/manStop/manClose, each 1.
- One internal name is 100% Button but its configured value is 80; another writes 100. Internal element names alone are insufficient to establish a button's behavior.
- Status expression references grain:g_m41_out_fault/open/close. No claim about physical valve movement or interlocks.
Future use
Use Main/Settings for navigation context, the specific well for water, Receiving/Reclaim for sequence controls, and Grain Motors for individual equipment. Diagnostics contains consequential maintenance actions; inspect its element configuration without clicking the operational buttons. Treat alarms pages as UI content, not an audit of Manage Alarms definitions. Test-named pages are existing content, not authorized disposable pages.