-
Notifications
You must be signed in to change notification settings - Fork 2
/
config.example.json
118 lines (118 loc) · 4.48 KB
/
config.example.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
{
"channels": [
{
// name of the channel
"name": "Channel 1 (5V)",
// display channel in GUI
"enabled": true,
// add to aggregated power. this is useful if one channel provides the power for another channel with a step-up or down converter
"aggregate_power": true,
// default voltage displayed by a blue dashed line
"voltage": 5.3,
"calibration": {
// shunt resistance in milliohm
"shunt": 25.0,
// check the raw sensor values with no load attached and everything warmed up to working temperature
// compare if there is a big different between a hot and cold device. a temperature compensation can easily be added
// raw sensor offset for no current (Vshunt=0.0000mV)
"vshunt_raw_offset": -16,
// dividing the shunt equals multiplying the shunt voltage or dividing the current
// V = I * (R / Cvbus) == R = (Cvbus * V) / I
// multiplier = displayed current / real current
"vshunt_multiplier": 0.994137858,
// calibration multiplier for bus voltage = real voltage / displayed voltage
// bus voltage is load voltage + shunt voltage. make sure to measure the correct side of the shunt or without any load
// multiplier = (load voltage + shunt voltage OR bus voltage) / displayed load voltage
"vbus_multiplier": 1.0
}
},
{
"name": "Channel 2 (12V)",
"enabled": true,
"aggregate_power": true,
"voltage": 12.0,
"calibration": {
"shunt": 25.0,
"vshunt_raw_offset": -32,
"vshunt_multiplier": 0.985870772,
"vbus_multiplier": 1.0
}
},
{
"name": "Channel 3 (19V)",
"enabled": false,
"aggregate_power": true,
"voltage": 19.5,
"calibration": {
"shunt": 50.0
}
}
],
// this only works with DPMS but not screen blanking
// the command can be replaced with anything to detect the state modifying the regular expressions below
"idle_check_cmd": "/usr/bin/xset -display ${DISPLAY} -q",
// regex case-insensitive to detect if the monitor is on
"idle_check_monitor_on": "^\\s*monitor is on",
"idle_check_monitor_off": "^\\s*monitor is off",
"gui": {
// with x height x scaling
"geometry": "800x480x1.0",
//"geometry": "1024x600x1.0",
"color_scheme": "DARK",
"fullscreen": true,
"display": ":0.0",
"key_bindings": {
"end_fullscreen": "<Escape>",
"menu": "<F1>",
"plot_display_energy": "<F4>",
"plot_primary_display": "<F3>",
"plot_visibility": "<F2>",
"quit": "<Alt-F4>",
"reload_config": "<Control-F5>",
"reset_plot": "<Control-F10>",
"toggle_debug": "<Control-F9>",
"toggle_fullscreen": "<F11>"
}
},
"plot": {
// on a raspberry pi 3, it can do ~3-15 frames per second
// 15-30% load on a single core with 2 updates per second, depending on the number of plots
"refresh_interval": 250,
// cuts down CPU load to a bare minimum when the monitor is off, but keeps the screen updated
"idle_refresh_interval": 5000,
"max_values": 8192,
// "max_time": "30min",
"max_time": 900,
"line_width": 3.0,
// +5% or 105%
"current_top_margin": 5,
// -12% or 88%
"current_bottom_margin": 12,
"power_top_margin": 5,
"power_bottom_margin": 10,
"voltage_top_margin": 1,
"voltage_bottom_margin": 1,
"compression": {
"uncompressed_time": 60
}
},
"ina3221": {
"averaging_mode": "x64",
"vshunt_conversion_time": "time_1100_us",
"vbus_conversion_time": "time_1100_us"
// fastest mode
// "averaging_mode": "x1",
// "vshunt_conversion_time": "time_140_us",
// "vbus_conversion_time": "time_140_us"
},
"mqtt": {
"host": "localhost",
"port": 1883,
"update_interval": 30,
"topic_prefix": "home",
"auto_discovery": true,
"auto_discovery_prefix": "homeassistant"
},
"verbose": false,
"headless": false
}