boneIO 0.5.0dev2__py3-none-any.whl → 0.5.0dev3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of boneIO might be problematic. Click here for more details.

@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: boneIO
3
- Version: 0.5.0dev2
3
+ Version: 0.5.0dev3
4
4
  Summary: Python App for BoneIO
5
5
  License: GNU General Public License v3.0
6
6
  Author-email: Paweł Szafer <pszafer@gmail.com>
@@ -28,16 +28,16 @@ boneio/helper/onewire/ds2482.py,sha256=c2t_hdAMtFsHw4Vw41QzO_hEDDNMeb3J71mEwEMUB
28
28
  boneio/helper/onewire/onewire.py,sha256=tHofTu1l0qG7hH2XoSf-lj8gW7wVKe27j57qQWpVMPg,2497
29
29
  boneio/helper/queue.py,sha256=7fE7d344-BEW8sljN40wmqsbBr4kPLvz4ShBjkT04p8,1066
30
30
  boneio/helper/state_manager.py,sha256=LsMQRrD7WXu5jXFoltYXvzHDeiNDDEx6UWYebFw18gc,1994
31
- boneio/helper/stats.py,sha256=NROKLHyRLDqYe9a8rDnA4grcxpw14w78SmFhk57-Iic,5183
31
+ boneio/helper/stats.py,sha256=eLz3-g6cyaClZ7N1YVEuKVg-P6MAhuKX8D-cm5Nj-k8,5693
32
32
  boneio/helper/timeperiod.py,sha256=xpg9oe30Z5WiLDQPq3EBKKScejOnN47NhcpeFvDd3bY,5806
33
33
  boneio/helper/util.py,sha256=QfSoT3H3WnOQAKO5bFRIBCy62HT5NMa9Ek-FmfTW_rw,508
34
34
  boneio/helper/yaml_util.py,sha256=LFT5abDVcC7DYmauIK52PV4icnHS9V5Io4LhGbcUPJU,10696
35
35
  boneio/input/__init__.py,sha256=u9wuehuC_TNizL4tyn7EygZW5LaTFjSnFaZeZr3zZ1U,99
36
36
  boneio/input/gpio.py,sha256=2WK3DR3kGAxHvmsNHZhN-oq8dF75oROxwm_mOZzYYh8,4391
37
- boneio/manager.py,sha256=s1KLsVE5lrhqO6iLNjaPaB3JrFtQyGQqHgZjY0-tThY,18284
37
+ boneio/manager.py,sha256=U2IaEkfIo3dhj_lPOLzPFPxzngQiBWd4bPdduveCJ6c,18410
38
38
  boneio/modbus.py,sha256=5hambvcQ8XBRzw65OgcUlUV3xsVdq0Lx9jRj3bEF3SE,4156
39
39
  boneio/mqtt_client.py,sha256=ioOBEmnbjpZjYrD5u8W5CrVsrNFRHDJ93fyk6XcWkeE,6983
40
- boneio/oled.py,sha256=I4aH8v9MUFQ6vu2phpJpLa9ZLSFNUJZj-RjhGpfzILI,4836
40
+ boneio/oled.py,sha256=STzzznpQ1cJEE2WuBSoEbE387wULNGaCzxf0AR689gY,5278
41
41
  boneio/relay/__init__.py,sha256=L_Peoep10-DdeMrEe-5YnnNCS-mxHtavCqtAesTPWFQ,135
42
42
  boneio/relay/basic.py,sha256=zOXf84yTGeArk3ghXt_WI2ul8L0RxyziOTD6U7-nCLM,2629
43
43
  boneio/relay/gpio.py,sha256=s64FBf6zlxciF57xJ6nrvy0t5Rie0uiXlwos0HL3RKM,1163
@@ -48,7 +48,7 @@ boneio/schema/actions_sensor.yaml,sha256=LhXEsYsg6qs7iHqgQE6n-2jj-o-ZZRusDW_9nWI
48
48
  boneio/schema/actions_switch.yaml,sha256=qyooX0izkgl4wBEh8xUsYFEKMrvhbIAQYxOGTB5AROY,124
49
49
  boneio/schema/filters.yaml,sha256=WopX1SmCZsSZXNiGccLoi7uMCsUpdbs0eVfsAjmbay4,286
50
50
  boneio/schema/filters_adc.yaml,sha256=3e0ts92MoFKOnfGOOn6WYIHxu0-tnZe9OjAjN9m7hiI,304
51
- boneio/schema/schema.yaml,sha256=WVFm3aYDhp1YvHokxb4GayLlbxgr60U9Xo6I_dWir0g,11148
51
+ boneio/schema/schema.yaml,sha256=c8Zbj_OGgPXAPt5yeSJeuR0d_YBvk0kpARSl-bpYkWE,11409
52
52
  boneio/schema/update_interval.yaml,sha256=L_YLddAZdybcdO-T57Qhlv1GaWIVDwhvH-GadD1oOIo,133
53
53
  boneio/sensor/__init__.py,sha256=VjFBEQQv_U0T2ENkzefuBdzmqNvBTEv4M-gQKScc8o0,431
54
54
  boneio/sensor/adc.py,sha256=Yf5F8JcZJt0K4ijpPqI8do0BqDfLvfja_LE8_Zu3u7U,1281
@@ -61,9 +61,9 @@ boneio/sensor/temp/__init__.py,sha256=v4h9l00zmL63pTNW7HAAgQvoXXzXLn_EmmfWQ2zuQI
61
61
  boneio/sensor/temp/dallas.py,sha256=uw5gjYe6KSMEt6ayghdEvvHHoubQ-JgMmRMOPtnxGnA,2380
62
62
  boneio/sensor/temp/lm75.py,sha256=-mpOv78429plRPBp9s09Ljz1x2Bdxuagalqz40vlAKE,243
63
63
  boneio/sensor/temp/mcp9808.py,sha256=yAh5yJzZLGTqa39xV4fyqsruj7oy3niOZAUV2W6eyCM,271
64
- boneio/version.py,sha256=0DdqQskdOI0Z8iJzbdqeubsKX0cbAfzbV0mgsbOnOSU,41
65
- boneIO-0.5.0.dev2.dist-info/entry_points.txt,sha256=Igl1SMDEWwMg144bwRz28UOCb80hdxomC99QJ3u6qC0,46
66
- boneIO-0.5.0.dev2.dist-info/WHEEL,sha256=g_UdFZqm-k6b0W64OcndB0YT_D2mFFPAYBj7-_YsSPA,87
67
- boneIO-0.5.0.dev2.dist-info/METADATA,sha256=xJxHxy_gj0hUAWkji35bh3Zd7t8IRBIqQEoef7sX0-A,1620
68
- boneIO-0.5.0.dev2.dist-info/license_files/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
69
- boneIO-0.5.0.dev2.dist-info/RECORD,,
64
+ boneio/version.py,sha256=NU5JZlHRyXKcTkzrGMHNist7Q8X_LXYmCZfUKSOdPng,41
65
+ boneIO-0.5.0.dev3.dist-info/entry_points.txt,sha256=Igl1SMDEWwMg144bwRz28UOCb80hdxomC99QJ3u6qC0,46
66
+ boneIO-0.5.0.dev3.dist-info/WHEEL,sha256=g_UdFZqm-k6b0W64OcndB0YT_D2mFFPAYBj7-_YsSPA,87
67
+ boneIO-0.5.0.dev3.dist-info/METADATA,sha256=ZqP-FTzXA-d2s1lJEtJGlOEan8EGi1FRBaJgzsgF0Fo,1620
68
+ boneIO-0.5.0.dev3.dist-info/license_files/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
69
+ boneIO-0.5.0.dev3.dist-info/RECORD,,
boneio/helper/stats.py CHANGED
@@ -4,7 +4,8 @@ from datetime import datetime
4
4
  import socket
5
5
  import time
6
6
  from math import floor
7
- from typing import Callable
7
+ from typing import Callable, List
8
+ from functools import partial
8
9
 
9
10
  import psutil
10
11
 
@@ -118,21 +119,31 @@ class HostSensor(AsyncUpdater):
118
119
  """Host sensor."""
119
120
 
120
121
  def __init__(
121
- self, update_function: Callable, static_data: dict, id: str, **kwargs
122
+ self,
123
+ update_function: Callable,
124
+ manager_callback: Callable,
125
+ static_data: dict,
126
+ id: str,
127
+ type: str,
128
+ **kwargs,
122
129
  ) -> None:
123
130
  self._update_function = update_function
124
131
  self._static_data = static_data
125
132
  self._state = None
133
+ self._type = type
134
+ self._manager_callback = manager_callback
135
+ self._loop = asyncio.get_event_loop()
126
136
  self.id = id
127
137
  super().__init__(**kwargs)
128
138
 
129
139
  async def async_update(self, time: datetime) -> None:
130
140
  self._state = self._update_function()
141
+ self._loop.call_soon_threadsafe(partial(self._manager_callback, self._type))
131
142
 
132
143
  @property
133
144
  def state(self) -> dict:
134
145
  if self._static_data:
135
- return {**self._static_data, **self._state}
146
+ return {**self._static_data, self._type: self._state}
136
147
  return self._state
137
148
 
138
149
 
@@ -147,6 +158,7 @@ class HostData:
147
158
  callback: Callable,
148
159
  temp_sensor: Callable[[LM75Sensor, MCP9808Sensor], None],
149
160
  manager: Manager,
161
+ enabled_screens: List[str],
150
162
  ) -> None:
151
163
  """Initialize HostData."""
152
164
  self._hostname = socket.gethostname()
@@ -163,11 +175,15 @@ class HostData:
163
175
  },
164
176
  }
165
177
  for k, _v in host_stats.items():
178
+ if k not in enabled_screens:
179
+ continue
166
180
  self.data[k] = HostSensor(
167
181
  update_function=_v["f"],
168
182
  static_data=_v.get("static"),
169
183
  manager=manager,
184
+ manager_callback=callback,
170
185
  id=f"{k}_hoststats",
186
+ type=k,
171
187
  update_interval=_v["update_interval"],
172
188
  )
173
189
  self._temp_sensor = temp_sensor
boneio/manager.py CHANGED
@@ -204,8 +204,11 @@ class Manager:
204
204
  if oled.get("enabled", False):
205
205
  from boneio.oled import Oled
206
206
 
207
+ screens = oled.get("screens")
208
+
207
209
  self._host_data = HostData(
208
210
  manager=self,
211
+ enabled_screens=screens,
209
212
  output=self.grouped_outputs,
210
213
  temp_sensor=self._temp_sensors[0] if self._temp_sensors else None,
211
214
  callback=self._host_data_callback,
@@ -213,6 +216,7 @@ class Manager:
213
216
  try:
214
217
  self._oled = Oled(
215
218
  host_data=self._host_data,
219
+ screen_order=screens,
216
220
  output_groups=list(self.grouped_outputs),
217
221
  sleep_timeout=oled.get("screensaver_timeout", 60),
218
222
  )
boneio/oled.py CHANGED
@@ -28,7 +28,7 @@ fontSmall = make_font("DejaVuSans.ttf", 9)
28
28
  fontExtraSmall = make_font("DejaVuSans.ttf", 7)
29
29
  danube = make_font("danube__.ttf", 15, local=True)
30
30
 
31
- screen_order = [UPTIME, NETWORK, CPU, DISK, MEMORY, SWAP]
31
+ # screen_order = [UPTIME, NETWORK, CPU, DISK, MEMORY, SWAP]
32
32
 
33
33
  STANDARD_ROWS = [17, 32, 47]
34
34
  UPTIME_ROWS = list(range(22, 60, 10))
@@ -40,19 +40,32 @@ class Oled:
40
40
  """Oled display class."""
41
41
 
42
42
  def __init__(
43
- self, host_data: HostData, output_groups: List[str], sleep_timeout: TimePeriod
43
+ self,
44
+ host_data: HostData,
45
+ output_groups: List[str],
46
+ sleep_timeout: TimePeriod,
47
+ screen_order: List[str],
44
48
  ) -> None:
45
49
  """Initialize OLED screen."""
46
50
  self._loop = asyncio.get_running_loop()
47
- self._screen_order = cycle(screen_order + output_groups)
48
- self._output_groups = output_groups
51
+ self._output_groups = None
52
+ try:
53
+ _ind_screen = screen_order.index("outputs")
54
+ if not output_groups:
55
+ _LOGGER.debug("No outputs configured. Omitting in screen.")
56
+ screen_order.pop(_ind_screen)
57
+ screen_order[_ind_screen:_ind_screen] = output_groups
58
+ self._output_groups = output_groups
59
+ except ValueError:
60
+ pass
61
+ self._screen_order = cycle(screen_order)
49
62
  self._current_screen = next(self._screen_order)
50
63
  self._host_data = host_data
51
64
  self._sleep = False
52
65
  self._sleep_handle = None
53
66
  self._sleep_timeout = sleep_timeout
54
67
  setup_input(pin=OLED_PIN, pull_mode="gpio_pu")
55
- edge_detect(pin=OLED_PIN, callback=self._handle_press, bounce=120)
68
+ edge_detect(pin=OLED_PIN, callback=self._handle_press, bounce=240)
56
69
  try:
57
70
  serial = i2c(port=2, address=0x3C)
58
71
  self._device = sh1106(serial)
@@ -112,7 +125,7 @@ class Oled:
112
125
  data = self._host_data.get(self._current_screen)
113
126
  if data:
114
127
  with canvas(self._device) as draw:
115
- if self._current_screen in self._output_groups:
128
+ if self._output_groups and self._current_screen in self._output_groups:
116
129
  self._draw_output(data, draw)
117
130
  elif self._current_screen == UPTIME:
118
131
  self._draw_uptime(data, draw)
boneio/schema/schema.yaml CHANGED
@@ -75,6 +75,18 @@ oled:
75
75
  default: False
76
76
  meta:
77
77
  label: Disable builtin screen.
78
+ screens:
79
+ type: list
80
+ required: True
81
+ allowed: ["uptime", "network", "cpu", "disk", "memory", "swap", "outputs"]
82
+ default:
83
+ - uptime
84
+ - network
85
+ - cpu
86
+ - disk
87
+ - memory
88
+ - swap
89
+ - outputs
78
90
  screensaver_timeout:
79
91
  type:
80
92
  - string
boneio/version.py CHANGED
@@ -1,2 +1,2 @@
1
1
  # flake8: noqa
2
- __version__ = "0.5.0dev2"
2
+ __version__ = "0.5.0dev3"