Commit Graph

47 Commits

Author SHA1 Message Date
Jarno Rankinen 323c76af19 Squashed commit of the following:
commit 4062e62071
Author: Jarno Rankinen <jarno@oranki.net>
Date:   Tue Mar 14 23:27:49 2023 +0200

    gh-3 config file entry and cli flag to enable the Prometheus exporter. Disabled by default.

commit df9e6d5471
Author: Jarno Rankinen <jarno@oranki.net>
Date:   Tue Mar 14 23:13:36 2023 +0200

    gh-3 Prometheus exporter for unreserved coils

Closes gh-3
2023-03-14 23:28:09 +02:00
Jarno Rankinen 4b89aec1c5 0.0.17 Remove 'Days until service'. Closes gh-25 2023-03-10 11:13:07 +02:00
Jarno Rankinen a0dedc7fcd 0.0.16 Correct hreg addresses for humidity readings. Outside hum still shows 0%, will need to wait until summer to see if the reading works. Closes gh-26. Added 48h avg hum readings back to HASS dashboards 2023-03-10 11:09:36 +02:00
Jarno Rankinen a0bb5c3e69 temperature endpoint can take raw register value, full degrees C or a single decimal precision float degrees C value as parameter. up & down as parameters shift the temperature setpoint up or down a full degree. Closes gh-21 2023-03-09 22:35:43 +02:00
Jarno Rankinen 415bf638be gh-24 0.0.14 ReadCoil, WriteCoil, WriteCoils, andheckMutexCoils, now use common modbus.Client with proper locking 2023-03-09 22:18:12 +02:00
Jarno Rankinen afcbe06581 gh-24Rework of the locking mechanisms. The bug causinga deadlock was probably caused by locking bebefore calling another function that also tries to acquire the lock... 2023-03-09 22:05:46 +02:00
Jarno Rankinen c79f172f32 gh-24 WriteRegister uses common modbus.Client 2023-03-09 21:57:32 +02:00
Jarno Rankinen d0d26d346a gh-24 ReadRegister uses common modbus.Client 2023-03-09 21:51:43 +02:00
Jarno Rankinen 602a560cf9 gh-24 updateCoils and updateRegisters now use common modbus.Client 2023-03-09 21:26:28 +02:00
Jarno Rankinen a49978ee5f gh-21 PUT /api/v1/temperature/<action> for changing temperature setpoint 2023-03-09 16:15:54 +02:00
Jarno Rankinen 193cfede8d 0.0.12 Include all coil values in homeassistant status output 2023-03-08 20:46:07 +02:00
Jarno Rankinen 8e8b51f8b9 Improved p.Debug.Println, left out the DEBUG: prefix as couldn't figure out how to add the suffix yet. Closes gh-17 2023-03-03 09:28:41 +02:00
Jarno Rankinen dbbc22809e 0.0.10 PinvinKL.Debug.Println, logs debug messages with prefix 'DEBUG:' if debug is enabled 2023-03-03 08:20:54 +02:00
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