Document all-site device dashboard, diagnostic registers, and Chep alarm strings
This commit is contained in:
@@ -0,0 +1,91 @@
|
|||||||
|
# Atom production — all-site device dashboard
|
||||||
|
|
||||||
|
Verified October 21, 2026. Production host: https://www.atomhmi.com. Dashboard: https://www.atomhmi.com/site_atom/page_devices. This is separate from the Shop development site at dev.atomhmi.com/site_atom; see SHOP-BUILD.md for that environment. No Shop or atGVL_alarmManager changes were made.
|
||||||
|
|
||||||
|
## Published dashboard
|
||||||
|
|
||||||
|
The existing Devices page was expanded from 26 to all 38 non-Global devices found across the 33 accessible sites. Atom has Global scope only; the other 32 sites have hardware-device entries. Global is a site-wide configuration scope, not an extra physical device, so it is not repeated as a hardware row.
|
||||||
|
|
||||||
|
The page now has three native roots: heading, coverage/freshness explanation, and All Sites Devices table. Route devices and page title Devices are preserved. Site and device names/IDs are separate searchable columns. Default columns: Site, Device, Telemetry, Uptime, Last Update, CPU Temp, HMI Version, Link. Column visibility retains optional CPU/memory/disk/network/firmware/Node/voltage/throttling fields, Update HMI and Reboot. Maintenance actions are hidden initially. No runtime update/reboot/restart commands were pressed.
|
||||||
|
|
||||||
|
Telemetry means uptime-data freshness, not an independent connectivity probe: Recent is a valid uptime timestamp no more than 120 seconds old; Stale is older; No data means missing uptime or an invalid timestamp. Missing values render an em dash instead of a fabricated zero or null.null.null.null. Uptime uses seconds converted to days/hours/minutes. Last Update displays age in s/m/h/d. CPU temperature is °C; other units retain the established register definitions. The display uses native Advanced Text Display expressions with explicit null handling, not custom component setup code.
|
||||||
|
|
||||||
|
Original 26 rows retain their device-specific site-page destinations. New rows link to their site's observed root. Site link buttons read Open site and have normal line height and padding. Numeric display fields are read-only. Update HMI and Reboot retain their exact device-scoped command targets, but were not operationally tested.
|
||||||
|
|
||||||
|
Fresh runtime verification showed 38 rows and no duplicate DOM IDs or captured browser errors. Search by Chep HighPlains returned its one device with live HMI version 1010, uptime and CPU temperature; search grain returned Lazy B Grain Handling. Cleared search restores all 38. After polling settled, a dated snapshot showed 27 Recent, 1 Stale and 10 No data; these are transient observations, not permanent device classifications. Initial page load can briefly show No data while register requests populate.
|
||||||
|
|
||||||
|
## Diagnostic-register additions
|
||||||
|
|
||||||
|
Audited rpi_ registers on all 38 devices. Twenty-nine devices already had the standard 29-register set; those definitions were not edited. Nine devices had 239 missing entries total. Created only those missing entries:
|
||||||
|
|
||||||
|
| Site | Device | Added |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| Chep HighPlains | main | 29 |
|
||||||
|
| Demo Site | demo | 29 |
|
||||||
|
| Demo Site | main | 29 |
|
||||||
|
| Demo Site | unknown | 7 |
|
||||||
|
| Milferd Unruh | barn | 29 |
|
||||||
|
| Rosebud Feeders | mill | 29 |
|
||||||
|
| R Reimer Farms | water | 29 |
|
||||||
|
| Swalwell Church | controller | 29 |
|
||||||
|
| Westland | test_trailer | 29 |
|
||||||
|
|
||||||
|
The user explicitly approved creating Terminal connections on the eight devices lacking them. Created slave ID terminal, description Terminal, type Terminal, configuration {}. Demo unknown already had Terminal. These are the existing device agent's native Terminal sources; no credentials or SSH destinations were added.
|
||||||
|
|
||||||
|
The portable standard definitions are in terminal-register-templates.json. They were captured from APYD Strathmore Main's actual edit dialogs and checked against persisted native import previews. Add siteId and deviceId for the intended target before importing. Terminal command text is address.formula, not address.command; the register key is id, not _id. Never copy an unverified payload directly into production.
|
||||||
|
|
||||||
|
The 29 IDs are rpi_atom_hmi_update, rpi_atom_hmi_version, rpi_cpu_clock, rpi_cpu_temp, rpi_cpu_usage, rpi_disk_available, rpi_disk_percentage, rpi_disk_usage, rpi_firmware_version, rpi_ip_loc_addr_1..4, rpi_ip_tun_addr_1..4, rpi_memory_available, rpi_memory_usage, rpi_model, rpi_node_version, rpi_reboot, rpi_restart_service, rpi_service_uptime, rpi_throttled, rpi_throttling_occurred, rpi_under_voltage, rpi_under_voltage_occurred and rpi_uptime.
|
||||||
|
|
||||||
|
rpi_uptime reads /proc/uptime in seconds. rpi_service_uptime reads service age in seconds. HMI version is the repository commit count; firmware version is a timestamp, not a semantic version. CPU clock is MHz; CPU/disk usage are percent. Memory/disk figures retain the source commands' decimal MB / 1M block conventions. Network octets are displayed together. Pi-specific firmware/throttling commands depend on vcgencmd; availability on non-Pi hardware is not established. A configured definition does not establish a working reading.
|
||||||
|
|
||||||
|
All new entries are enabled. rpi_atom_hmi_update, rpi_reboot and rpi_restart_service have updateType DISABLED, meaning no automatic command polling; this is distinct from enabled=false. No command values were written. Other entries retain the source template's ON_CHANGE or CONTINUOUS recording type. New polling intervals were capped at 600 seconds because the current create form rejects intervals above ten minutes; existing definitions were preserved. The manifest records the actual new intervals.
|
||||||
|
|
||||||
|
## Safe native import and verification
|
||||||
|
|
||||||
|
Use Manage Registers → Import → select Device and Terminal → Advanced. Explicitly turn Delete Unused OFF; it defaults ON. Validate first and inspect the Confirm Import JSON: only the intended missing IDs may appear in insert; update and delete must be empty. Native validation sorts entries, so compare per ID rather than array order. Submit only after checking the exact source, command, recording type and enabled flag.
|
||||||
|
|
||||||
|
The initial Chep/partial Demo entries used individual Create Register forms; remaining batches used the supported native Advanced import. Each committed batch showed Import Successful. Reload Manage Registers before readback; returning to Edit can retain the old table. A read-only audit with JSON [] and Delete Unused OFF exposes the current Terminal entries in unchanged. Do not submit this audit. On all nine affected devices, freshly verified all 29 IDs and compared every new definition to its intended template (normalizing CRLF/LF only): all 239 matched. Existing entries stayed in unchanged with no updates/deletions.
|
||||||
|
|
||||||
|
Chep HighPlains, Milferd, Rosebud and R Reimer returned live diagnostics during verification. Demo's three devices, Swalwell and Test Trailer had no diagnostic values in their fresh verification snapshots. That observation does not prove they are powered off or identify the cause; agent/connection/platform investigation remains separate work. Existing K2 Mill, KAV Well Test, LPOP, Simon and Westland Trailer 1 also showed No data in the settled dashboard snapshot. Gladacres showed Stale.
|
||||||
|
|
||||||
|
## Local evidence
|
||||||
|
|
||||||
|
Original page Copy: /tmp/atom-devices-before.json. Final table draft: /tmp/atom-devices-draft.json. Initial full device/register inventory: /tmp/atom-all-register-audit.json. Created-entry ledger: /tmp/atom-created-diagnostics.json. Eight source ledger: /tmp/atom-created-terminal-sources.json. Fresh definition/readback audit: /tmp/atom-final-register-audit.json. Native import previews: /tmp/atom-import-*.json. Screenshots: /tmp/atom-devices-dashboard.jpg and /tmp/atom-devices-proof.jpg. These are local evidence paths, not remotely synchronized artifacts. Raw live readings/network addresses and browser credentials were not committed.
|
||||||
|
|
||||||
|
## Site/device inventory
|
||||||
|
|
||||||
|
| Site | Site ID | Device ID — description |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| APYD Strathmore | `agra_risk` | `main` — Main |
|
||||||
|
| Arco Poultry | `arco_poultry` | `barn_controller` — Barn Controller |
|
||||||
|
| Aspen Acres | `aspen_acres` | `main` — Main HMI |
|
||||||
|
| Atom | `atom` | Global scope only; no hardware device |
|
||||||
|
| Bruce Farms | `bruce_farms` | `water` — Water |
|
||||||
|
| Calhoun Cattle Co Ltd | `ccc` | `feed` — Feed - Raspberry pi |
|
||||||
|
| Chep | `chep` | `main` — Main PC |
|
||||||
|
| Chep HighPlains | `chep_hp` | `main` — Main |
|
||||||
|
| Darryl Reimer | `darryl_reimer` | `barn` — Barn |
|
||||||
|
| Demo Site | `demo` | `demo` — Demo; `main` — Main DEMO; `unknown` — Unknown |
|
||||||
|
| Dusty Road Farms | `dusty_road_farms` | `barn` — Barn Controller |
|
||||||
|
| Gladacres | `gladacres` | `barn` — Barn |
|
||||||
|
| Highland Milling | `highland` | `plant` — Plant |
|
||||||
|
| Highway 21 Feeders | `highway_21` | `water` — Water |
|
||||||
|
| KAV Main - Mill | `kav` | `mill` — Mill |
|
||||||
|
| KAV East - Mill | `kav_east_mill` | `mill` — Mill |
|
||||||
|
| KAV East - Water | `kav_east_water` | `water` — Water System |
|
||||||
|
| KAV Main - Water | `kav_water` | `water` — Water System; `well_test` — Well Test |
|
||||||
|
| K1 - Water | `korova_1_water` | `k1_water` — K1 Water PC |
|
||||||
|
| K2 - Mill | `korova_2_mill` | `k2_mill` — K2 Mill |
|
||||||
|
| K2 - Water | `korova_2_water` | `k2_water` — K2 Water PC |
|
||||||
|
| Lazy B Farm & Ranch | `lazy_b` | `grain` — Grain Handling; `water` — Water System |
|
||||||
|
| Lone Pine | `lone_pine` | `recycling` — Recycling; `sawdust_dryer` — Sawdust Dryer |
|
||||||
|
| LPOP | `lpop` | `lpop` — LPOP Raspberry |
|
||||||
|
| Milferd Unruh | `milferd_unruh` | `barn` — Barn |
|
||||||
|
| Rimrock - Mill | `rimrock_mill` | `mill` — Mill |
|
||||||
|
| Rimrock - Water | `rimrock_water` | `water` — Rimrock Water |
|
||||||
|
| Rosebud Feeders | `rosebud_feeders` | `mill` — Mill |
|
||||||
|
| R Reimer Farms | `rrf` | `water` — Water |
|
||||||
|
| Simon Loewen | `simon_loewen` | `main` — Main |
|
||||||
|
| Swalwell Church | `swalwell_church` | `controller` — Controller |
|
||||||
|
| Sweet Grass | `sweetgrass` | `main` — Main PC |
|
||||||
|
| Westland | `westland` | `test_trailer` — Test Trailer; `trailer_1` — Trailer 1 |
|
||||||
@@ -86,3 +86,15 @@ Reload clean Configure Pages between previews, particularly after large charts/m
|
|||||||
For bindings, record display value, editable flag, updateRegister, writeValue/updateValue, limits flag and units independently. A read-only field can retain a stale write target. Legacy (Dont Use) components can have both register and updateRegister keys; behavior is not established by an internal name alone. Limit values do not enforce anything when limits=false.
|
For bindings, record display value, editable flag, updateRegister, writeValue/updateValue, limits flag and units independently. A read-only field can retain a stale write target. Legacy (Dont Use) components can have both register and updateRegister keys; behavior is not established by an internal name alone. Limit values do not enforce anything when limits=false.
|
||||||
|
|
||||||
This survey used Copy only and discarded editors. No production paste, Save, register command, device action or alarm test was performed. Earlier Mandel development tests remain separate evidence with separate authorization.
|
This survey used Copy only and discarded editors. No production paste, Save, register command, device action or alarm test was performed. Earlier Mandel development tests remain separate evidence with separate authorization.
|
||||||
|
|
||||||
|
## Alarm strings and Terminal register imports — October 21, 2026
|
||||||
|
|
||||||
|
Alarm Message and Return to Normal Message are expressions. Plain text must be a quoted string literal. Preserve existing valid concatenation/lookup expressions instead of quoting the entire expression. Chep HighPlains had 73 Main definitions: three user-corrected entries were retained; 70 others received 134 string-field corrections. See CHEP-HP-GUIDE.md for verification limits.
|
||||||
|
|
||||||
|
Manage Registers → Import → Advanced supports native JSON for Terminal sources even when Normal says Import Currently Not Supported. Select the correct device/source and explicitly turn Delete Unused OFF (default ON). Each item uses id, siteId, deviceId, description, slaveId, address:{formula:commandText}, updateType, updateInterval, systemRegister and enabled. The Confirm Import preview exposes the actual persisted schema. Check exact values by ID (native sorting can change order), and allow only intended inserts with zero updates/deletes for additive work. Submit only that inspected preview. After Import Successful, reload the page before readback; the Edit table may remain stale.
|
||||||
|
|
||||||
|
For a read-only definition audit, Validate [] with Delete Unused OFF; inspect unchanged and close without Submit. This verified all 239 new definitions on nine devices. Command registers for update/reboot/restart use updateType DISABLED, distinct from enabled=false; do not poll or trigger them as a monitoring test. New create forms reject intervals above 600 seconds. Terminal slave type with configuration {} was verified on APYD Main and added to eight explicitly approved devices. Source creation enables command execution and needs appropriate authorization.
|
||||||
|
|
||||||
|
Modal animations can make an early Close or next Create click ineffective. Wait for the correct Register ID and settled dialog before reading; an open dialog can still contain the previous register. Verify identity, not only dialog visibility. Keep batches bounded and persist successful IDs after each save to recover safely from browser timeouts.
|
||||||
|
|
||||||
|
Cross-site tokens use |{register:siteId:deviceId:registerId}|; timestamp is registerId.timestamp. The production Atom dashboard now covers 38 devices across 33 accessible sites (Atom itself has Global scope only). Explicit null guards prevent missing uptime/IP values being displayed as zero/null octets. A valid uptime timestamp within 120 seconds is a display freshness threshold, not proof of operational health. Wait for initial polling to populate before classifying No data. See ATOM-DEVICES-GUIDE.md and terminal-register-templates.json.
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
# Chep HighPlains production guide
|
||||||
|
|
||||||
|
Verified October 21, 2026. Site https://www.atomhmi.com/site_chep_hp/; site ID chep_hp. Devices: global / Global and main / Main. Observed navigation includes Grinding (page_recl_ctl) and Unloading (page_unld_ctl). Manage Alarms: /site_chep_hp/manage_alarms. Manage Registers and Manage Slaves use the corresponding native admin menus. This was an alarm-message correction and diagnostics task, not a full equipment/page survey.
|
||||||
|
|
||||||
|
## Alarm string correction
|
||||||
|
|
||||||
|
Main has 73 HMI alarm definitions; Global has zero. The user had already corrected m101Lvl_faults_chan, m101Lvl_faults_over and m101Lvl_faults_under. These three were preserved.
|
||||||
|
|
||||||
|
Corrected the other 70 definitions: 64 plain-text Message and Return to Normal Message pairs were wrapped as string literals; six dynamic VFD messages already built strings and were preserved, with only their Return to Normal Message wrapped. Total 134 field changes. Preserve valid dynamic expressions; do not quote the whole expression as literal text.
|
||||||
|
|
||||||
|
The six preserved dynamic messages are m301_fault, m303_fault, m305_fault, m403_fault, m404_fault and m405_fault. They concatenate equipment text with a fault-code lookup from main:<motor>_out_faultVFDId_last and an Unknown fault fallback. Plain messages now use quoted string expressions, e.g. "M1-01 Komar Level transmitter channel fault"; corresponding cleared messages are also quoted. Calculation, enabled state, latching, severity, delays, recording and notification settings were preserved. No alarm acknowledgement/reset or PLC write was performed.
|
||||||
|
|
||||||
|
All 70 edits were submitted successfully. After a fresh reload, Main's table showed all 73 Message values valid: 67 string literals and six preserved string-building expressions. At least 56 of the edited complete forms were independently reopened and matched the saved draft exactly before the user asked to move on. The remaining full-form reopen checks were not completed; do not claim all cleared-message fields were independently rechecked after reload. All 70 cleared-message changes had been checked in the saved drafts and submitted.
|
||||||
|
|
||||||
|
Local audit: /tmp/chep-hp-alarm-string-audit.json, including original/draft controls, changed fields and per-alarm saved flags. It is local evidence, not remotely synchronized.
|
||||||
|
|
||||||
|
## Diagnostic registers and cross-site dashboard
|
||||||
|
|
||||||
|
Main originally had no rpi_ entries or Terminal slave. The user explicitly approved adding the Terminal connection. Created terminal / Terminal, type Terminal, configuration {} and all 29 standard diagnostic/maintenance register definitions. All 29 were freshly read back and every definition matched the intended template. Automatic polling is disabled on HMI update/reboot/restart command entries; none were triggered. New creation intervals are capped at 600 seconds where required by the current form.
|
||||||
|
|
||||||
|
Observed live HMI version 1010, uptime, CPU clock/temperature, CPU usage, disk, memory, IP octets and other diagnostics. Representative CPU temperature was about 63 °C; these are dated readings, not operating limits. See ATOM-DEVICES-GUIDE.md and terminal-register-templates.json for the exact standard set, native import procedure, platform caveats and full audit results.
|
||||||
|
|
||||||
|
Chep HighPlains Main is included on https://www.atomhmi.com/site_atom/page_devices, searchable by site name or main. No machine setpoints, alarm source calculations or operating outputs were changed during the diagnostics/dashboard work.
|
||||||
+12
@@ -2,6 +2,18 @@
|
|||||||
|
|
||||||
Last updated: 2026-10-21 (America/Edmonton)
|
Last updated: 2026-10-21 (America/Edmonton)
|
||||||
|
|
||||||
|
## All-site Devices dashboard and diagnostics — October 21, 2026
|
||||||
|
|
||||||
|
Completed production https://www.atomhmi.com/site_atom/page_devices: 26→38 non-Global devices, all 33 accessible sites inventoried (Atom has only Global scope). Added site/device/ID search, freshness states, explicit missing-data displays, and readable site links; optional diagnostics and maintenance columns retained, actions initially hidden. Fresh runtime row count/search/duplicate-ID/error checks passed. Settled snapshot: 27 Recent / 1 Stale / 10 No data; this is uptime-data age, not a connectivity guarantee. Existing no-data sources and newly configured non-reporting sources are documented in ATOM-DEVICES-GUIDE.md.
|
||||||
|
|
||||||
|
Audited all 38 device register tables. Added exactly 239 missing standard rpi_ definitions on nine devices and eight Terminal sources with explicit user approval. Existing 29 complete device sets were preserved. Freshly reloaded each affected device and compared every new definition against its intended template: all 239 matched. Additive native import previews had zero updates/deletions and Delete Unused OFF. All command entries retain DISABLED automatic polling; no reboot/update/restart, PLC output or setpoint commands were submitted. Chep HighPlains, Milferd, Rosebud and R Reimer returned live diagnostics; Demo's three devices, Swalwell and Test Trailer had no readings at verification. Their agent/platform/connection diagnosis is not completed or required to create the definitions.
|
||||||
|
|
||||||
|
Cloud guides: ATOM-DEVICES-GUIDE.md https://chatgpt.com/space/page_4f4290a63c008191bffe66804b6e1777 and CHEP-HP-GUIDE.md https://chatgpt.com/space/page_c13336dbaeac81919fa1f2b07fbe3f6a. Knowledge-base index and playbook updated. Portable source definitions: terminal-register-templates.json. Local backups/audits/screenshots are enumerated in the Atom guide. Browser left on the all-devices dashboard with search cleared.
|
||||||
|
|
||||||
|
## Chep HighPlains alarm strings completed before dashboard work
|
||||||
|
|
||||||
|
Preserved the user's three corrected m101Lvl fault definitions. Saved the other 70 alarm edits: 64 literal Message/Return pairs and six preserved dynamic VFD Message expressions with quoted returns; 134 string-field changes. Fresh table audit verified all 73 Message expressions (67 literals + six dynamic). At least 56 complete saved forms were independently reopened and matched before the user asked to move on; remaining full-form cleared-message checks were not completed. No other alarm settings or PLC values changed. See CHEP-HP-GUIDE.md.
|
||||||
|
|
||||||
## Latest Sweet Grass bin alarm audit — October 21, 2026
|
## Latest Sweet Grass bin alarm audit — October 21, 2026
|
||||||
|
|
||||||
User identifies Main Plant PLC as old Horner and wants its alarms moved to new Codesys plant PLC. Read-only HMI audit traced 39 unique bin/equipment high/high-high/high-shutdown/full alarms: 17 Main PLC, 5 Groater PLC, 13 Codesys PLC, 4 SG Dryer. See SWEET-GRASS-GUIDE.md for exact IDs, coils, tags, enabled states and migration gaps. Air Screen/Grader/Paddy already have enabled Codesys pairs; Air Screen/Paddy retain enabled legacy pairs, Grader legacy pair disabled. Indent Codesys pair and Bin G HiHi output are configured but unpolled, with no matching Hi/HiHi HMI definitions found in targeted searches. H/J similarly named alarms span Main and Groater PLCs. No live changes or writes. Next: verify PLC-side equivalence and enable ownership before migration; original Bin G HMI control remains unfinished. This was not a full plant alarm audit.
|
User identifies Main Plant PLC as old Horner and wants its alarms moved to new Codesys plant PLC. Read-only HMI audit traced 39 unique bin/equipment high/high-high/high-shutdown/full alarms: 17 Main PLC, 5 Groater PLC, 13 Codesys PLC, 4 SG Dryer. See SWEET-GRASS-GUIDE.md for exact IDs, coils, tags, enabled states and migration gaps. Air Screen/Grader/Paddy already have enabled Codesys pairs; Air Screen/Paddy retain enabled legacy pairs, Grader legacy pair disabled. Indent Codesys pair and Bin G HiHi output are configured but unpolled, with no matching Hi/HiHi HMI definitions found in targeted searches. H/J similarly named alarms span Main and Groater PLCs. No live changes or writes. Next: verify PLC-side equivalence and enable ownership before migration; original Bin G HMI control remains unfinished. This was not a full plant alarm audit.
|
||||||
|
|||||||
@@ -58,3 +58,11 @@ October 21 Lazy B follow-up: attempted to verify Well 3 timer replacements. Wate
|
|||||||
User identifies the old Main Plant PLC as Horner and wants its alarms migrated to the new Codesys plant PLC. HMI slave IDs are main_plc (Main PLC) and codesys_plc (Codesys PLC); groater_plc and sg_dryer are separate sources. SWEET-GRASS-GUIDE.md now maps 39 bin/equipment high/full alarms and migration gaps. Source reassignment and PLC logic equivalence remain unperformed/unverified. User also confirms the recent Atom HMI upgrade moved alarm logs to a new database, making previous history unavailable.
|
User identifies the old Main Plant PLC as Horner and wants its alarms migrated to the new Codesys plant PLC. HMI slave IDs are main_plc (Main PLC) and codesys_plc (Codesys PLC); groater_plc and sg_dryer are separate sources. SWEET-GRASS-GUIDE.md now maps 39 bin/equipment high/full alarms and migration gaps. Source reassignment and PLC logic equivalence remain unperformed/unverified. User also confirms the recent Atom HMI upgrade moved alarm logs to a new database, making previous history unavailable.
|
||||||
|
|
||||||
October 21 resolution: user chose to remove the unverified Time Since Start and Hours fields from Lazy B Wells 2 and 3. Removed four elements total, saved/reloaded both pages and verified the remaining element IDs. Well 1 had no timer fields. No counter reset or operational write. This supersedes the pending timer-mapping request; see LAZY-B-GUIDE.md.
|
October 21 resolution: user chose to remove the unverified Time Since Start and Hours fields from Lazy B Wells 2 and 3. Removed four elements total, saved/reloaded both pages and verified the remaining element IDs. Well 1 had no timer fields. No counter reset or operational write. This supersedes the pending timer-mapping request; see LAZY-B-GUIDE.md.
|
||||||
|
|
||||||
|
## Production Atom devices and Chep HighPlains — October 21, 2026
|
||||||
|
|
||||||
|
- ATOM-DEVICES-GUIDE.md: production site_atom/page_devices now covers 38 devices across the 33 accessible sites; Atom itself is the host with Global scope only. Keep distinct from development Shop. Includes complete dated site/device map and read-only freshness semantics.
|
||||||
|
- terminal-register-templates.json: verified standard Terminal definitions, with creation intervals capped at 600 s. Added 239 missing entries and eight explicitly approved Terminal sources; all new definitions freshly read back. Existing complete sets preserved. Configured entries do not guarantee readings from every agent/platform.
|
||||||
|
- CHEP-HP-GUIDE.md: Main's 73-alarm string correction and diagnostic additions. Three user-corrected definitions preserved, 70 others saved; dynamic message expressions retained.
|
||||||
|
- Cloud Atom guide: https://chatgpt.com/space/page_4f4290a63c008191bffe66804b6e1777
|
||||||
|
- Cloud Chep guide: https://chatgpt.com/space/page_c13336dbaeac81919fa1f2b07fbe3f6a
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"knowledge_base": "page_59b26c8716dc8191a88caea787825299",
|
||||||
|
"guides": {
|
||||||
|
"ATOM-DEVICES-GUIDE.md": "page_4f4290a63c008191bffe66804b6e1777",
|
||||||
|
"CHEP-HP-GUIDE.md": "page_c13336dbaeac81919fa1f2b07fbe3f6a",
|
||||||
|
"ATOMHMI-PLAYBOOK.md": "page_e35c26d81a748191b84042be1b16cd45",
|
||||||
|
"SHOP-BUILD.md": "page_8f2a0f16a13c8191bebe2302b1aed261",
|
||||||
|
"KAV-GUIDE.md": "page_d9313668d27c81919b7c480852c0c082",
|
||||||
|
"LAZY-B-GUIDE.md": "page_de033ca7a7b881918b94f89dddea9820",
|
||||||
|
"LONE-PINE-GUIDE.md": "page_814209734aa88191bede6b68a663098e",
|
||||||
|
"SWEET-GRASS-GUIDE.md": "page_c260b18f6fc08191b2f64da8e5b97182"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,350 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"id": "rpi_atom_hmi_update",
|
||||||
|
"description": "Raspberry Pi - Atom HMI Update",
|
||||||
|
"slaveId": "terminal",
|
||||||
|
"address": {
|
||||||
|
"formula": "git -C /home/atom/atom_hmi_app pull > /dev/null && echo \"sudo systemctl restart atom_hmi_app.service\" | at now + 1 minute 2> /dev/null && echo 0;\n"
|
||||||
|
},
|
||||||
|
"updateType": "DISABLED",
|
||||||
|
"updateInterval": 0,
|
||||||
|
"systemRegister": false,
|
||||||
|
"enabled": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "rpi_atom_hmi_version",
|
||||||
|
"description": "Raspberry Pi - Atom HMI Version",
|
||||||
|
"slaveId": "terminal",
|
||||||
|
"address": {
|
||||||
|
"formula": "git -C /home/atom/atom_hmi_app rev-list --count HEAD"
|
||||||
|
},
|
||||||
|
"updateType": "CONTINUOUS",
|
||||||
|
"updateInterval": 60,
|
||||||
|
"systemRegister": false,
|
||||||
|
"enabled": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "rpi_cpu_clock",
|
||||||
|
"description": "Raspberry Pi - CPU Clock Speed (Mhz)",
|
||||||
|
"slaveId": "terminal",
|
||||||
|
"address": {
|
||||||
|
"formula": "echo $(($(vcgencmd measure_clock arm | grep -oP '=\\K[0-9]*') / 1000000))"
|
||||||
|
},
|
||||||
|
"updateType": "ON_CHANGE",
|
||||||
|
"updateInterval": 600,
|
||||||
|
"systemRegister": false,
|
||||||
|
"enabled": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "rpi_cpu_temp",
|
||||||
|
"description": "Raspberry Pi - CPU Temperature (\u00b0C)",
|
||||||
|
"slaveId": "terminal",
|
||||||
|
"address": {
|
||||||
|
"formula": "vcgencmd measure_temp | grep -oP '[0-9\\.]*'"
|
||||||
|
},
|
||||||
|
"updateType": "ON_CHANGE",
|
||||||
|
"updateInterval": 600,
|
||||||
|
"systemRegister": false,
|
||||||
|
"enabled": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "rpi_cpu_usage",
|
||||||
|
"description": "Raspberry Pi - CPU Usage (%)",
|
||||||
|
"slaveId": "terminal",
|
||||||
|
"address": {
|
||||||
|
"formula": "echo $((100-$(vmstat 1 2|tail -1|awk '{print $15}')))"
|
||||||
|
},
|
||||||
|
"updateType": "ON_CHANGE",
|
||||||
|
"updateInterval": 600,
|
||||||
|
"systemRegister": false,
|
||||||
|
"enabled": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "rpi_disk_available",
|
||||||
|
"description": "Raspberry Pi - Disk Available (Mb)",
|
||||||
|
"slaveId": "terminal",
|
||||||
|
"address": {
|
||||||
|
"formula": "df --block-size=1M / | grep / | awk {'print $4'}"
|
||||||
|
},
|
||||||
|
"updateType": "ON_CHANGE",
|
||||||
|
"updateInterval": 600,
|
||||||
|
"systemRegister": false,
|
||||||
|
"enabled": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "rpi_disk_percentage",
|
||||||
|
"description": "Raspberry Pi - Disk Usage (%)",
|
||||||
|
"slaveId": "terminal",
|
||||||
|
"address": {
|
||||||
|
"formula": "df --block-size=1M / | grep / | awk {'print $5'}"
|
||||||
|
},
|
||||||
|
"updateType": "ON_CHANGE",
|
||||||
|
"updateInterval": 600,
|
||||||
|
"systemRegister": false,
|
||||||
|
"enabled": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "rpi_disk_usage",
|
||||||
|
"description": "Raspberry Pi - Disk Usage (Mb)",
|
||||||
|
"slaveId": "terminal",
|
||||||
|
"address": {
|
||||||
|
"formula": "df --block-size=1M / | grep / | awk {'print $3'}"
|
||||||
|
},
|
||||||
|
"updateType": "ON_CHANGE",
|
||||||
|
"updateInterval": 600,
|
||||||
|
"systemRegister": false,
|
||||||
|
"enabled": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "rpi_firmware_version",
|
||||||
|
"description": "Raspberry Pi - Firmware Version",
|
||||||
|
"slaveId": "terminal",
|
||||||
|
"address": {
|
||||||
|
"formula": "vcgencmd version | head -n 1 | awk '{print $1, $2, $3, $4}' | xargs -I{} date -d \"{}\" +%s"
|
||||||
|
},
|
||||||
|
"updateType": "ON_CHANGE",
|
||||||
|
"updateInterval": 600,
|
||||||
|
"systemRegister": false,
|
||||||
|
"enabled": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "rpi_ip_loc_addr_1",
|
||||||
|
"description": "Raspberry Pi - Local IP Address octet 1",
|
||||||
|
"slaveId": "terminal",
|
||||||
|
"address": {
|
||||||
|
"formula": "hostname -I | awk -F[.] '{print $1}'"
|
||||||
|
},
|
||||||
|
"updateType": "ON_CHANGE",
|
||||||
|
"updateInterval": 600,
|
||||||
|
"systemRegister": false,
|
||||||
|
"enabled": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "rpi_ip_loc_addr_2",
|
||||||
|
"description": "Raspberry Pi - Local IP Address octet 2",
|
||||||
|
"slaveId": "terminal",
|
||||||
|
"address": {
|
||||||
|
"formula": "hostname -I | awk -F[.] '{print $2}'"
|
||||||
|
},
|
||||||
|
"updateType": "ON_CHANGE",
|
||||||
|
"updateInterval": 600,
|
||||||
|
"systemRegister": false,
|
||||||
|
"enabled": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "rpi_ip_loc_addr_3",
|
||||||
|
"description": "Raspberry Pi - Local IP Address octet 3",
|
||||||
|
"slaveId": "terminal",
|
||||||
|
"address": {
|
||||||
|
"formula": "hostname -I | awk -F[.] '{print $3}'"
|
||||||
|
},
|
||||||
|
"updateType": "ON_CHANGE",
|
||||||
|
"updateInterval": 600,
|
||||||
|
"systemRegister": false,
|
||||||
|
"enabled": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "rpi_ip_loc_addr_4",
|
||||||
|
"description": "Raspberry Pi - Local IP Address octet 4",
|
||||||
|
"slaveId": "terminal",
|
||||||
|
"address": {
|
||||||
|
"formula": "hostname -I | awk -F[.] '{print $4}'"
|
||||||
|
},
|
||||||
|
"updateType": "ON_CHANGE",
|
||||||
|
"updateInterval": 600,
|
||||||
|
"systemRegister": false,
|
||||||
|
"enabled": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "rpi_ip_tun_addr_1",
|
||||||
|
"description": "Raspberry Pi - Tunnel IP Address octet 1",
|
||||||
|
"slaveId": "terminal",
|
||||||
|
"address": {
|
||||||
|
"formula": "ifconfig tun0 | grep -oP 'inet\\s\\K[0-9\\.]*' | awk -F[.] '{print $1}'"
|
||||||
|
},
|
||||||
|
"updateType": "ON_CHANGE",
|
||||||
|
"updateInterval": 600,
|
||||||
|
"systemRegister": false,
|
||||||
|
"enabled": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "rpi_ip_tun_addr_2",
|
||||||
|
"description": "Raspberry Pi - Tunnel IP Address octet 2",
|
||||||
|
"slaveId": "terminal",
|
||||||
|
"address": {
|
||||||
|
"formula": "ifconfig tun0 | grep -oP 'inet\\s\\K[0-9\\.]*' | awk -F[.] '{print $2}'"
|
||||||
|
},
|
||||||
|
"updateType": "ON_CHANGE",
|
||||||
|
"updateInterval": 600,
|
||||||
|
"systemRegister": false,
|
||||||
|
"enabled": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "rpi_ip_tun_addr_3",
|
||||||
|
"description": "Raspberry Pi - Tunnel IP Address octet 3",
|
||||||
|
"slaveId": "terminal",
|
||||||
|
"address": {
|
||||||
|
"formula": "ifconfig tun0 | grep -oP 'inet\\s\\K[0-9\\.]*' | awk -F[.] '{print $3}'"
|
||||||
|
},
|
||||||
|
"updateType": "ON_CHANGE",
|
||||||
|
"updateInterval": 600,
|
||||||
|
"systemRegister": false,
|
||||||
|
"enabled": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "rpi_ip_tun_addr_4",
|
||||||
|
"description": "Raspberry Pi - Tunnel IP Address octet 4",
|
||||||
|
"slaveId": "terminal",
|
||||||
|
"address": {
|
||||||
|
"formula": "ifconfig tun0 | grep -oP 'inet\\s\\K[0-9\\.]*' | awk -F[.] '{print $4}'"
|
||||||
|
},
|
||||||
|
"updateType": "ON_CHANGE",
|
||||||
|
"updateInterval": 600,
|
||||||
|
"systemRegister": false,
|
||||||
|
"enabled": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "rpi_memory_available",
|
||||||
|
"description": "Raspberry Pi - Memory Available (Mb)",
|
||||||
|
"slaveId": "terminal",
|
||||||
|
"address": {
|
||||||
|
"formula": "free --mega | grep Mem | awk '{print $7}'"
|
||||||
|
},
|
||||||
|
"updateType": "ON_CHANGE",
|
||||||
|
"updateInterval": 600,
|
||||||
|
"systemRegister": false,
|
||||||
|
"enabled": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "rpi_memory_usage",
|
||||||
|
"description": "Raspberry Pi - Memory Usage (Mb)",
|
||||||
|
"slaveId": "terminal",
|
||||||
|
"address": {
|
||||||
|
"formula": "free --mega | grep -oP 'Mem:[\\s]*[0-9]*[\\s]*\\K[0-9]*'"
|
||||||
|
},
|
||||||
|
"updateType": "ON_CHANGE",
|
||||||
|
"updateInterval": 600,
|
||||||
|
"systemRegister": false,
|
||||||
|
"enabled": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "rpi_model",
|
||||||
|
"description": "Raspberry Pi - Model",
|
||||||
|
"slaveId": "terminal",
|
||||||
|
"address": {
|
||||||
|
"formula": "cat /sys/firmware/devicetree/base/model 2>/dev/null | grep -qE \"Pi 5|Compute Module 5\" && echo \"2712\" || (cat /sys/firmware/devicetree/base/model 2>/dev/null | grep -qE \"Pi 4|Compute Module 4\" && echo \"2711\" || echo \"9999\")"
|
||||||
|
},
|
||||||
|
"updateType": "ON_CHANGE",
|
||||||
|
"updateInterval": 60,
|
||||||
|
"systemRegister": false,
|
||||||
|
"enabled": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "rpi_node_version",
|
||||||
|
"description": "Raspberry Pi - Node Version",
|
||||||
|
"slaveId": "terminal",
|
||||||
|
"address": {
|
||||||
|
"formula": "node --version | grep -oP '[0-9.]*'"
|
||||||
|
},
|
||||||
|
"updateType": "ON_CHANGE",
|
||||||
|
"updateInterval": 600,
|
||||||
|
"systemRegister": false,
|
||||||
|
"enabled": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "rpi_reboot",
|
||||||
|
"description": "Raspberry Pi - Reboot",
|
||||||
|
"slaveId": "terminal",
|
||||||
|
"address": {
|
||||||
|
"formula": "sudo shutdown -r 1 2> /dev/null && echo 0"
|
||||||
|
},
|
||||||
|
"updateType": "DISABLED",
|
||||||
|
"updateInterval": 0,
|
||||||
|
"systemRegister": false,
|
||||||
|
"enabled": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "rpi_restart_service",
|
||||||
|
"description": "Raspberry Pi - Restart Service",
|
||||||
|
"slaveId": "terminal",
|
||||||
|
"address": {
|
||||||
|
"formula": "echo \"sudo systemctl restart atom_hmi_app.service\" | at now + 1 minute 2> /dev/null && echo 0;"
|
||||||
|
},
|
||||||
|
"updateType": "DISABLED",
|
||||||
|
"updateInterval": 1,
|
||||||
|
"systemRegister": false,
|
||||||
|
"enabled": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "rpi_service_uptime",
|
||||||
|
"description": "Raspberry Pi - Service Uptime",
|
||||||
|
"slaveId": "terminal",
|
||||||
|
"address": {
|
||||||
|
"formula": "expr $(date +%s) - $(systemctl status atom_hmi_app | date -d \"$(grep -oP 'since[\\ A-Za-z]*\\K[0-9A-Z\\-:\\ ]*')\" +%s)"
|
||||||
|
},
|
||||||
|
"updateType": "ON_CHANGE",
|
||||||
|
"updateInterval": 10,
|
||||||
|
"systemRegister": false,
|
||||||
|
"enabled": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "rpi_throttled",
|
||||||
|
"description": "Raspberry Pi - Currently Throttled",
|
||||||
|
"slaveId": "terminal",
|
||||||
|
"address": {
|
||||||
|
"formula": "echo $(($(($(vcgencmd get_throttled | grep -oP 'throttled=\\K0x[a-f0-9]*')&0x4)) >> 2))"
|
||||||
|
},
|
||||||
|
"updateType": "ON_CHANGE",
|
||||||
|
"updateInterval": 600,
|
||||||
|
"systemRegister": false,
|
||||||
|
"enabled": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "rpi_throttling_occurred",
|
||||||
|
"description": "Raspberry Pi - Throttling has occurred",
|
||||||
|
"slaveId": "terminal",
|
||||||
|
"address": {
|
||||||
|
"formula": "echo $(($(($(vcgencmd get_throttled | grep -oP 'throttled=\\K0x[a-f0-9]*')&0x40000)) >> 18))"
|
||||||
|
},
|
||||||
|
"updateType": "ON_CHANGE",
|
||||||
|
"updateInterval": 600,
|
||||||
|
"systemRegister": false,
|
||||||
|
"enabled": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "rpi_under_voltage",
|
||||||
|
"description": "Raspberry Pi - Currently Under Voltage",
|
||||||
|
"slaveId": "terminal",
|
||||||
|
"address": {
|
||||||
|
"formula": "echo $(($(vcgencmd get_throttled | grep -oP 'throttled=\\K0x[a-f0-9]*')&0x1))"
|
||||||
|
},
|
||||||
|
"updateType": "ON_CHANGE",
|
||||||
|
"updateInterval": 600,
|
||||||
|
"systemRegister": false,
|
||||||
|
"enabled": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "rpi_under_voltage_occurred",
|
||||||
|
"description": "Raspberry Pi - Under-voltage has occurred",
|
||||||
|
"slaveId": "terminal",
|
||||||
|
"address": {
|
||||||
|
"formula": "echo $(($(($(vcgencmd get_throttled | grep -oP 'throttled=\\K0x[a-f0-9]*')&0x10000)) >> 16))"
|
||||||
|
},
|
||||||
|
"updateType": "ON_CHANGE",
|
||||||
|
"updateInterval": 600,
|
||||||
|
"systemRegister": false,
|
||||||
|
"enabled": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "rpi_uptime",
|
||||||
|
"description": "Raspberry Pi - Uptime",
|
||||||
|
"slaveId": "terminal",
|
||||||
|
"address": {
|
||||||
|
"formula": "awk '{print $1}' /proc/uptime"
|
||||||
|
},
|
||||||
|
"updateType": "ON_CHANGE",
|
||||||
|
"updateInterval": 10,
|
||||||
|
"systemRegister": false,
|
||||||
|
"enabled": true
|
||||||
|
}
|
||||||
|
]
|
||||||
Reference in New Issue
Block a user