Commit Graph

34 Commits

Author SHA1 Message Date
Jarno Rankinen ce1c569564 Methods for reading and writing single holding registers. Unfortunately the writes don't seem to have much effect, the registers are reset after a short period or instantly. Maybe due to something with the library, but no errors are produced. Closes gh-5 2023-03-02 14:24:05 +02:00
Jarno Rankinen bcb8d55126 gh-10 0.0.7 Check that only one of mutex coils is 1 at a time 2023-03-02 13:36:49 +02:00
Jarno Rankinen c304704656 Finish renaming and actually show values for Measurements 2023-02-28 20:51:53 +02:00
Jarno Rankinen 6053698552 Rename VentInfo to Measurements, add heater element water temperature to Home Assistant data 2023-02-28 20:47:47 +02:00
Jarno Rankinen 150ed97071 gh-6 /api/v1/status returns float values if applicable 2023-02-27 21:10:24 +02:00
Jarno Rankinen 853ef45464 gh-10 WriteCoils, wrapper for forcing multiple consecutive coils with a boolean slice 2023-02-25 01:21:42 +02:00
Jarno Rankinen f76bddbb45 gh-10 read/write single coil api method
GET /api/v1/coils/N
- read coil N (int)
POST /api/v1/coils/N/VAL
- set coil N (int) to VAL, VAL can be one of accepted values for
  strconv.ParseBool (1 or 0 is the simplest)
2023-02-24 22:52:13 +02:00
Jarno Rankinen 6198d2b522 Added debug output to Monitor() 2023-02-24 21:55:24 +02:00
Jarno Rankinen 5fddc0dcb7 gh-10 Method for writing a single coil 2023-02-23 22:07:51 +02:00
Jarno Rankinen 1759dabbca gh-6 Found coil for overpressure (3) by experimenting, fix HA status logic 2023-02-23 20:42:00 +02:00
Jarno Rankinen 1b1a9c75ea gh-6 Panel room temperature reading for Home Assistant status, comments 2023-02-23 20:08:47 +02:00
Jarno Rankinen aba5156e7a gh-6 Device operating mode parsed from bitfield. Bitfields are now 16 bits long, as they should be 2023-02-19 22:34:34 +02:00
Jarno Rankinen 175254b4ba gh-16 Retry reading registers 5 times, added debug variable to PingvinKL.New(). Not much debug output yet. 2023-02-19 21:28:50 +02:00
Jarno Rankinen e30c83c96a gh-10 Background updates for data 2023-02-19 12:28:26 +02:00
Jarno Rankinen d3c2dd5de3 gh-6 All the simpler values for /status endpoint implemented. Alarms, op mode, uptime&date will be in separate functions 2023-02-18 22:18:37 +02:00
Jarno Rankinen 9fefef8a98 gh-6 the update/populate functions now work on the struct they're a member of, instead of on a copy. Added /api/v1/status route 2023-02-18 21:52:53 +02:00
Jarno Rankinen 960c29fbf4 #6 Include raw data multiplier in register struct 2023-02-18 21:06:02 +02:00
Jarno Rankinen 337581be66 #6 Data structures for /status endpoint 2023-02-18 19:37:43 +02:00
Jarno Rankinen a4fcbdc2ed gh-14 Tests for newRegister 2023-02-12 22:55:58 +02:00
Jarno Rankinen b8929f6211 gh-14 Test coil.Reserved assignment 2023-02-12 22:37:23 +02:00
Jarno Rankinen 480279e2f5 gh-14 Unit testing for pingvinKL.newCoil, test.sh for executing tests 2023-02-12 22:31:21 +02:00
Jarno Rankinen 48bdfd691b gh-5 Proper handling of bitfield data type 2023-02-02 00:07:36 +02:00
Jarno Rankinen 1080219b23 gh-5 Handle unsigned & signed values
updateRegisters now handles signed values correctly. Bitfields and
enumerations are still interpreted as unsigned values
2023-02-01 23:09:50 +02:00
Jarno Rankinen 2758f67299 gh-5 Debug/other output 2023-02-01 22:19:57 +02:00
Jarno Rankinen 7eb75541d3 gh-5 Commenting 2023-02-01 00:04:13 +02:00
Jarno Rankinen f4eb787a10 gh-5 Fetch register data from bus
- goburrow/modbus' ReadHoldingRegisters can only fetch 125 registers at a
time, so updateRegisters does several readings
- modbus.ReadHoldingRegisters returns a []byte, where each even byte represents
  the MSB of a int16/uint16 and every odd byte is the LSB
- updateRegisters loops through each response slice forming the 16-bit
  integers

Still need to figure out a way to properly handle the signed/unsigned
values, and also the enumerations and bitfields. Perhaps changing the
'signed' boolean to a byte and making that a bitfield representing the
value type would be a good way to go. The value can then be properly
formed when fetching it from the in-memory pingvinKL struct, while being
stored as an int(64) internally.
2023-02-01 00:03:47 +02:00
Jarno Rankinen 9f2d4b0c29 gh-5 Register data structure
Created preliminary struct for register data, create hreg slice
based on registers.csv
2023-01-31 23:01:09 +02:00
Jarno Rankinen 1a8cfe891d gh-5 Created registers.csv from Enervent provided xlsx, change csv delimiter to semicolon 2023-01-31 22:57:14 +02:00
Jarno Rankinen c45af6d1dd Tidy up log error output 2023-01-29 23:34:43 +02:00
Jarno Rankinen c16f94c6d4 Closes #9 Update coil values on startup. #10 /api/v1/coils route started 2023-01-29 23:31:21 +02:00
Jarno Rankinen 876123e518 #9 Mutex locking for bus operations 2023-01-29 22:09:37 +02:00
Jarno Rankinen 8143414c39 #9 Function to update all coil values 2023-01-29 21:56:22 +02:00
Jarno Rankinen 3fab63f60f #9 Go: Get single coil 2023-01-29 14:42:03 +02:00
Jarno Rankinen ddfbc4610d Initial steps of go implementation, prime coil data from CSV file 2023-01-28 23:28:37 +02:00