Initial steps of go implementation, prime coil data from CSV file

This commit is contained in:
Jarno Rankinen 2023-01-28 23:28:37 +02:00
parent f9035d64c7
commit ddfbc4610d
4 changed files with 221 additions and 0 deletions

View File

@ -0,0 +1,72 @@
0,COIL_STOP,Stop the machine
1,COIL_AWAY,Set the machine to away mode
2,COIL_AWAYL,Set the machine to away long mode
3,-,-
4,-,-
5,-,-
6,COIL_MAX_H,Force the machine to heat at maximum effect.
7,COIL_MAX_C,Force the machine to cool at maximum effect.
8,COIL_CO2_BOOST_EN,CO2 boosting enabled
9,COIL_RH_BOOST_EN,Relative humidity boosting enabled
10,COIL_M_BOOST,Boost the fanspeeds to 100% for a period of time
11,COIL_TEMP_BOOST_EN,Temperature boosting enabled
12,COIL_SNC,Summer night cooling (SNC) function enabled.
13,-,-
14,-,-
15,-,-
16,-,-
17,-,-
18,COIL_AWAY_H,Heating enabled/disabled in AWAY mode
19,COIL_AWAY_C,Cooling enabled/disabled in AWAY mode
20,-,-
21,-,-
22,-,-
23,-,-
24,-,-
25,-,-
26,-,-
27,-,-
28,-,-
29,-,-
30,COIL_LTO_ON,Heat recycler state (running=1, stopped = 0)
31,-,-
32,COIL_HEAT_ON,After heater element state (On = 1, Off = 0)
33,-,-
34,-,-
35,-,-
36,COIL_TEMP_DECREASE,Temperature decrease function desc
37,COIL_OVERTIME,Programmatic equivalent of OVERTIME digital input.
38,-,Emergency stop switch type desc
39,-,-
40,COIL_ECO_MODE,Eco mode desc
41,COIL_ALARM_A,Alarm of class A active desc
42,COIL_ALARM_B,Alarm of class B active desc
43,COIL_CLK_PROG,A Clock program is currently active
44,-,-
45,-,-
46,-,-
47,COIL_SILENT_MODE,Silent mode desc
48,COIL_STOP_SLP_COOLING,Electrical heater cool-off function enabled when the machine has stopped.
49,COIL_SERVICE_EN,Service reminder enabled desc
50,-,-
51,-,-
52,COIL_COOLING_EN,Cooling function enabled
53,COIL_LTO_EN,Not used on MD.
54,COIL_HEATING_EN,Heating function enabled
55,COIL_LTO_DEFROST_EN,HRC defrosting function enabled during winter season
56,-,-
57,-,-
58,-,-
59,-,-
60,-,-
61,-,-
62,-,-
63,-,-
64,-,-
65,-,-
66,-,-
67,-,-
68,-,-
69,-,-
70,-,-
71,-,-
Can't render this file because it has a wrong number of fields in line 31.

3
enervent-ctrl-go/go.mod Normal file
View File

@ -0,0 +1,3 @@
module github.com/0ranki/enervent-ctrl/enervent-ctrl-go
go 1.18

11
enervent-ctrl-go/main.go Normal file
View File

@ -0,0 +1,11 @@
package main
import (
"github.com/0ranki/enervent-ctrl/enervent-ctrl-go/pingvinKL"
)
func main() {
pingvin := pingvinKL.New()
// fmt.Println(pingvin.Coils)
print(pingvin.Coils[1].Description)
}

View File

@ -0,0 +1,135 @@
package pingvinKL
import (
"bufio"
"log"
"os"
"strings"
)
// single coil data
type pingvinCoil struct {
Symbol string
Value bool
Description string
Reserved bool
}
func newCoil(symbol string, description string) pingvinCoil {
reserved := symbol == "-" && description == "-"
coil := pingvinCoil{symbol, false, description, reserved}
return coil
}
// unit modbus data
type PingvinKL struct {
Coils []pingvinCoil
}
// read a CSV file containing data for coils or registers
func readCsvLines(file string) [][]string {
delim := ","
data := [][]string{}
csv, err := os.Open(file)
if err != nil {
log.Fatal(err)
}
defer csv.Close()
scanner := bufio.NewScanner(csv)
for scanner.Scan() {
elements := strings.Split(scanner.Text(), delim)
data = append(data, elements)
}
if err := scanner.Err(); err != nil {
log.Fatal(err)
}
return data
}
// create a PingvinKL struct, read coils and registers from CSVs
func New() PingvinKL {
pingvin := PingvinKL{}
coilData := readCsvLines("coils.csv")
for i := 0; i < len(coilData); i++ {
pingvin.Coils = append(pingvin.Coils, newCoil(coilData[i][1], coilData[i][2]))
}
return pingvin
}
// func New() PingvinKL {
// pingvin := PingvinKL{}
// // var Coils []pingvinCoil
// pingvin.Coils = append(pingvin.Coils, newCoil("COIL_STOP", "Stop"))
// pingvin.Coils = append(pingvin.Coils, newCoil("COIL_AWAY", "Away mode"))
// pingvin.Coils = append(pingvin.Coils, newCoil("COIL_AWAY_L", "Away Long mode"))
// pingvin.Coils = append(pingvin.Coils, newCoil("-", "-"))
// pingvin.Coils = append(pingvin.Coils, newCoil("-", "-"))
// pingvin.Coils = append(pingvin.Coils, newCoil("-", "-"))
// pingvin.Coils = append(pingvin.Coils, newCoil("COIL_MAX_H", "Max Heating"))
// pingvin.Coils = append(pingvin.Coils, newCoil("COIL_MAX_C", "Max Cooling"))
// pingvin.Coils = append(pingvin.Coils, newCoil("COIL_CO_BOOST_EN", "CO2 boost"))
// pingvin.Coils = append(pingvin.Coils, newCoil("COIL_RH_BOOST_EN", "Relative humidity boost"))
// pingvin.Coils = append(pingvin.Coils, newCoil("COIL_M_BOOST", "Manual boost 100%"))
// pingvin.Coils = append(pingvin.Coils, newCoil("COIL_TEMP_BOOST_EN", "Temperature boost"))
// pingvin.Coils = append(pingvin.Coils, newCoil("COIL_SNC", "Summer night cooling"))
// pingvin.Coils = append(pingvin.Coils, newCoil("-", "-"))
// pingvin.Coils = append(pingvin.Coils, newCoil("-", "-"))
// pingvin.Coils = append(pingvin.Coils, newCoil("-", "-"))
// pingvin.Coils = append(pingvin.Coils, newCoil("-", "-"))
// pingvin.Coils = append(pingvin.Coils, newCoil("-", "-"))
// pingvin.Coils = append(pingvin.Coils, newCoil("COIL_AWAY_H", "Heating enabled/disabled in AWAY mode"))
// pingvin.Coils = append(pingvin.Coils, newCoil("COIL_AWAY_C", "Cooling enabled/disabled in AWAY mode"))
// pingvin.Coils = append(pingvin.Coils, newCoil("-", "-"))
// pingvin.Coils = append(pingvin.Coils, newCoil("-", "-"))
// pingvin.Coils = append(pingvin.Coils, newCoil("-", "-"))
// pingvin.Coils = append(pingvin.Coils, newCoil("-", "-"))
// pingvin.Coils = append(pingvin.Coils, newCoil("-", "-"))
// pingvin.Coils = append(pingvin.Coils, newCoil("-", "-"))
// pingvin.Coils = append(pingvin.Coils, newCoil("-", "-"))
// pingvin.Coils = append(pingvin.Coils, newCoil("-", "-"))
// pingvin.Coils = append(pingvin.Coils, newCoil("-", "-"))
// pingvin.Coils = append(pingvin.Coils, newCoil("-", "-"))
// pingvin.Coils = append(pingvin.Coils, newCoil("COIL_LTO_ON", "Heat recycler state (running=1, stopped = 0)"))
// pingvin.Coils = append(pingvin.Coils, newCoil("-", "-"))
// pingvin.Coils = append(pingvin.Coils, newCoil("COIL_HEAT_ON", "After heater element state (On = 1, Off = 0)"))
// pingvin.Coils = append(pingvin.Coils, newCoil("-", "-"))
// pingvin.Coils = append(pingvin.Coils, newCoil("-", "-"))
// pingvin.Coils = append(pingvin.Coils, newCoil("-", "-"))
// pingvin.Coils = append(pingvin.Coils, newCoil("COIL_TEMP_DECREASE", "Temperature decrease function"))
// pingvin.Coils = append(pingvin.Coils, newCoil("COIL_OVERTIME", "Programmatic equivalent of OVERTIME digital input"))
// pingvin.Coils = append(pingvin.Coils, newCoil("-", "-"))
// pingvin.Coils = append(pingvin.Coils, newCoil("-", "-"))
// pingvin.Coils = append(pingvin.Coils, newCoil("COIL_ECO_MODE", "Eco mode"))
// pingvin.Coils = append(pingvin.Coils, newCoil("COIL_ALARM_A", "Alarm of class A active"))
// pingvin.Coils = append(pingvin.Coils, newCoil("COIL_ALARM_B", "Alarm of class B active"))
// pingvin.Coils = append(pingvin.Coils, newCoil("COIL_CLK_PROG", "Clock program is currently active"))
// pingvin.Coils = append(pingvin.Coils, newCoil("-", "-"))
// pingvin.Coils = append(pingvin.Coils, newCoil("-", "-"))
// pingvin.Coils = append(pingvin.Coils, newCoil("-", "-"))
// pingvin.Coils = append(pingvin.Coils, newCoil("COIL_SILENT_MODE", "Silent mode"))
// pingvin.Coils = append(pingvin.Coils, newCoil("COIL_STOP_SLP_COOLING", "Electrical heater cool-off function enabled when the machine has stopped"))
// pingvin.Coils = append(pingvin.Coils, newCoil("COIL_SERVICE_EN", "Service reminder"))
// pingvin.Coils = append(pingvin.Coils, newCoil("-", "-"))
// pingvin.Coils = append(pingvin.Coils, newCoil("-", "-"))
// pingvin.Coils = append(pingvin.Coils, newCoil("COIL_COOLING_EN", "Active cooling function enabled"))
// pingvin.Coils = append(pingvin.Coils, newCoil("COIL_LTO_EN", "N/A"))
// pingvin.Coils = append(pingvin.Coils, newCoil("COIL_HEATING_EN", "Active heating function enabled"))
// pingvin.Coils = append(pingvin.Coils, newCoil("COIL_LTO_DEFROST_EN", "HRC defrosting function enabled during winter season"))
// pingvin.Coils = append(pingvin.Coils, newCoil("-", "-"))
// pingvin.Coils = append(pingvin.Coils, newCoil("-", "-"))
// pingvin.Coils = append(pingvin.Coils, newCoil("-", "-"))
// pingvin.Coils = append(pingvin.Coils, newCoil("-", "-"))
// pingvin.Coils = append(pingvin.Coils, newCoil("-", "-"))
// pingvin.Coils = append(pingvin.Coils, newCoil("-", "-"))
// pingvin.Coils = append(pingvin.Coils, newCoil("-", "-"))
// pingvin.Coils = append(pingvin.Coils, newCoil("-", "-"))
// pingvin.Coils = append(pingvin.Coils, newCoil("-", "-"))
// pingvin.Coils = append(pingvin.Coils, newCoil("-", "-"))
// pingvin.Coils = append(pingvin.Coils, newCoil("-", "-"))
// pingvin.Coils = append(pingvin.Coils, newCoil("-", "-"))
// pingvin.Coils = append(pingvin.Coils, newCoil("-", "-"))
// pingvin.Coils = append(pingvin.Coils, newCoil("-", "-"))
// pingvin.Coils = append(pingvin.Coils, newCoil("-", "-"))
// pingvin.Coils = append(pingvin.Coils, newCoil("-", "-"))
// return pingvin
// }