Commit graph

112 commits

Author SHA1 Message Date
hmelder 9ec580c26f succd: implement auto-restarting of MODBUS connection in case of network loss
All checks were successful
/ test (push) Successful in 11s
/ test (pull_request) Successful in 10s
2024-11-10 06:51:21 +01:00
Rahix 152290f5a3 succd: Fix -KEC1 relay board updates
All checks were successful
/ test (push) Successful in 10s
/ test (pull_request) Successful in 10s
The accesses to -KEC1 always time out on the attempt to update the
output values.  We noticed that this is related to the timing between
the reading of the inputs and the following write to the outputs.

Fix -KEC1 accesses by waiting before sending the next request to the
board after receiving the reply for the previous one.
2024-11-10 06:36:43 +01:00
hmelder 6f93b96c39 succd: do not early return on error in modbusUpdate
When one device fails, this should not influence updates of the other
devices.  Thus, early return was the wrong strategy here.

Instead, when communication with a device fails, skip the process data
update and continue with the next device.
2024-11-10 06:35:50 +01:00
hmelder d8a467a0c4 succd: Split scope lock into multiple blocks
All checks were successful
/ test (push) Successful in 11s
/ test (pull_request) Successful in 10s
We noticed huge load spikes with the latest changes.  This was caused
by the modbus goroutine blocking the entire daemon for long periods of
time while doing its data transfer.

Fix this by only holding the lock while performing data accesses.
2024-11-10 05:45:58 +01:00
hmelder e7fd2dd7d7 succd: KFA{1,6,7} are normally closed
All checks were successful
/ test (push) Successful in 10s
/ test (pull_request) Successful in 10s
2024-11-10 05:20:24 +01:00
hmelder 606d470577 succd: Migrate to KEC1 MODBUS relay board
All checks were successful
/ test (push) Successful in 10s
/ test (pull_request) Successful in 10s
2024-11-10 05:11:48 +01:00
Rahix 0e45650972 succd: Render temperature unit in template as well
All checks were successful
/ test (push) Successful in 10s
/ test (pull_request) Successful in 11s
2024-11-10 02:08:05 +01:00
Rahix edb9051708 succd: Export temperature values to prometheus
All checks were successful
/ test (push) Successful in 11s
/ test (pull_request) Successful in 10s
Also add metrics for all the temperature and humidity measurements.
2024-11-10 02:04:31 +01:00
Rahix 4ac1b5eb32 succd: Add highlight colors for temperatures
All checks were successful
/ test (push) Successful in 10s
/ test (pull_request) Successful in 10s
Highlight out-of-range temperatures for the user.  The limits are
currently by intuition and should be reconsidered.
2024-11-10 01:59:10 +01:00
Rahix c02d24414f succd: Improve styling of temperature values
HMI design goes brrrr...
2024-11-10 01:59:10 +01:00
hmelder 2e6a3be100 Add modbus integration 2024-11-10 01:59:09 +01:00
hmelder 4edabc5c56 Add temperature and humidity stuff 2024-11-10 01:59:09 +01:00
Rahix 52231a9e9c succbone: Add new mount
All checks were successful
/ test (push) Successful in 10s
This mount is a new iteration with the following improvements:

- 25% less DIN rail space required.  This allows installing 25% more
  Modbus-based technology!
- Designed for a clip that can be unlatched more easily.
- Fixed the BeagleBone hole pattern to match reality (why BeagleBone,
  why D:)
2024-11-09 22:21:45 +00:00
Rahix 0aba323779 succd: Export all process values as prometheus metrics
All checks were successful
/ test (pull_request) Successful in 10s
/ test (push) Successful in 9s
For more detailed monitoring, let's export all process values that are
exposed to the web API as prometheus metrics.
2024-10-07 07:42:42 +02:00
Rahix bd40c4f8df succd: Update rough vacuum hysteresis once more
All checks were successful
/ test (pull_request) Successful in 9s
/ test (push) Successful in 10s
We see fluctuation slightly above 4e-2 mbar so let's increase the
hysteresis value a bit more.
2024-10-05 19:46:14 +02:00
Rahix d5c42a4899 succd: Hint at invalid process values
When the succbone connection breaks, add hints to the UI that values may
no longer be correct.
2024-10-05 19:46:14 +02:00
Rahix 637f8748a8 succd: Only show voltage on hover
All checks were successful
/ test (push) Successful in 10s
Another HP HMI thing: "Only show information that is immediately
relevant".  Let's hide the pirani voltage as it is mostly no longer
interesting to the user.  For situations where it is, it can be revealed
by hovering over the pirani pressure value.
2024-10-05 17:37:10 +00:00
Rahix 1e21222705 succd: Optimize color usage for HP HMI
In the process automation world, there is a trend to move away from
colorful user-interfaces, towards more "boring" colorschemes.  The
argument is about situational awareness - by only using colors to
highlight abnormal situations, they become instantly recognizable to the
operators.

This design philosophy is outlined by the ISA-101 [1] under the name
"High Performance HMI".  While it covers much more than just colors, I
think this is the most important part and the one that is most
applicable for our usecase.

So let's do a bit of HP HMI - reduce colors usage such that only
important information is highlighted.

[1]: https://www.isa.org/standards-and-publications/isa-standards/isa-standards-committees/isa101
2024-10-05 17:37:10 +00:00
Rahix 7a56b0fe70 succd: Fix mobile layout
Use smaller font sizes for mobile devices so the full interface fits on
a single screen (mostly).
2024-10-05 17:37:10 +00:00
Rahix f4339e54ef succd: Fix layout on large screens
Make sure the grid cannot grow too large on big screens.  Also slightly
adjust the breakpoint to avoid some weird artifacts.
2024-10-05 17:37:10 +00:00
Rahix f2c0d67eed ph00524: Add image of the back PCB side
All checks were successful
/ test (pull_request) Successful in 10s
/ test (push) Successful in 10s
For documentation purposes.
2024-10-05 03:11:29 +02:00
Rahix e2fc15ed9b succd: Use tigher hysteresis values
All checks were successful
/ test (pull_request) Successful in 10s
/ test (push) Successful in 10s
It seems we can get away with less hysteresis still.  Make the values a
bit smaller.
2024-10-04 23:30:28 +02:00
Rahix ef959f4be3 succd: Configure hysteresis for rough and high thresholds
Add CLI flags for rough and high hysteresis and configure default values
based on experiments.
2024-10-04 23:30:28 +02:00
Rahix 8645718748 succd: Add hysteresis feature to thresholdOutput blocks
Add a hysteresis value that can be optionally configured for
thresholdOutput blocks.  This will hopefully help to prevent jumping
outputs from feedback that is caused by the thresholdOutput itself.
2024-10-04 23:30:28 +02:00
Rahix ed8adad611 succd: Fix table jiggle
Make sure the table size doesn't dynamically jiggle with movement of
width changes of the load-average value.
2024-10-04 23:30:28 +02:00
Rahix 313569e1dc succd: Use grid layout to show all info on a single screen
Use CSS grids to all information on a single screen if possible.  There
is a breakpoint for smaller screens.
2024-10-04 23:30:28 +02:00
Rahix 102393a689 succbone: Update title pic
All checks were successful
/ test (pull_request) Successful in 3s
/ test (push) Successful in 3s
2024-09-28 23:35:09 +02:00
Serge Bazanski 2899677059 succd: add info on how to run tests
All checks were successful
/ test (pull_request) Successful in 4s
/ test (push) Successful in 4s
2024-09-28 16:13:10 +02:00
Serge Bazanski 2454a44350 succd: add ci, tests
All checks were successful
/ test (push) Successful in 4s
2024-09-28 16:09:07 +02:00
Serge Bazanski 96e07ece2d succd: run at 100Hz, monitor load and jitter 2024-09-28 14:27:43 +02:00
Serge Bazanski 12f6815673 succd: gofmt 2024-09-28 14:27:43 +02:00
zdmx f5d80a335f succd: remove redundant if 2024-09-28 11:20:25 +02:00
Serge Bazanski fbf41203de succd: do not engage pirani failsafe on startup, as that prohibits restarting succd when the machine runs 2024-09-28 10:23:15 +02:00
Serge Bazanski dda098f634 succd: early refuse unsafe operations 2024-09-28 10:22:40 +02:00
Serge Bazanski 960be9cd23 succd: rewrite processing loop 2024-09-28 10:17:05 +02:00
Serge Bazanski 3d81a1f56c succd: roll process_state.go back into process.go 2024-09-28 09:48:50 +02:00
Serge Bazanski 185525ca30 succd: downgrade high pressure lockout message to warning 2024-09-28 09:46:49 +02:00
Serge Bazanski 590e93e43e succd: log pressures in error messages 2024-09-28 09:46:18 +02:00
Serge Bazanski 451b44e31b succd: move out processing blocks to separate file 2024-09-28 09:39:44 +02:00
Serge Bazanski 4df00f0a63 succd: factor out ringbuffer, do not recalculate average on every request 2024-09-28 09:35:41 +02:00
Serge Bazanski 42c9ae2fa7 succd: httpServer -> webServer 2024-09-28 09:19:14 +02:00
Serge Bazanski f66afc0c8f succd: restyle slightly 2024-09-28 08:32:07 +02:00
Serge Bazanski 8f7ec7e141 succd: split out http server, daemon state, daemon controller
This improves the structure of the code, separating the data/control
interface out and then implementing the http interface as a user of this
interface.
2024-09-28 08:10:35 +02:00
Serge Bazanski 3ec6fd1d1b succd: unify html/js data source 2024-09-28 07:54:18 +02:00
Serge Bazanski 776f7a9911 succd: add hysteresis for high pressure safety interlock 2024-09-28 07:36:37 +02:00
Serge Bazanski 239a5c40cc succd: factor out safety status to separate struct 2024-09-28 07:36:37 +02:00
Serge Bazanski 80f482b732 succd: tristate pirani safety detection 2024-09-28 07:31:06 +02:00
Rahix 85d2afbdd0 succd: Fix javascript and template syntax errors
Turns out the go templating engine fails silently when unclosed strings
are present in the templated file.........

Fix javascript code :))
2024-09-28 00:05:18 +02:00
zdmx 908727608a succd: add safety status to web frontend 2024-09-27 23:49:24 +02:00
zdmx eb7707f1a0 succd: change safety reset threshold 2024-09-27 23:35:44 +02:00