Skip to content

Commit a6fb428

Browse files
committed
Add support of Ontrak ADU222
- add support for ADU222 - update dependency download-artifact in GitHub workflow - bump version to 2.9.14
1 parent aa02106 commit a6fb428

File tree

5 files changed

+56
-25
lines changed

5 files changed

+56
-25
lines changed

.github/workflows/release.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ jobs:
1818

1919
steps:
2020
- name: Download All Artifacts
21-
uses: actions/download-artifact@v4
21+
uses: actions/download-artifact@v4.1.8
2222
with:
2323
merge-multiple: True
2424

inlinino/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import numpy as np
99

1010

11-
__version__ = '2.9.14.eta'
11+
__version__ = '2.9.14'
1212

1313
# Setup Logger
1414
logging.basicConfig(level=logging.DEBUG)

inlinino/gui.py

+18-1
Original file line numberDiff line numberDiff line change
@@ -793,6 +793,8 @@ def act_activate_fields_for_adu_model(self):
793793
model = self.combobox_model.currentText()
794794
if model == 'ADU100':
795795
self.group_box_analog.setEnabled(True)
796+
self.group_box_flowmeters.setEnabled(True)
797+
self.checkbox_low_flow_alarm_enabled.setEnabled(True)
796798
self.checkbox_relay1_enabled.setEnabled(False)
797799
self.checkbox_relay1_enabled.setChecked(False)
798800
self.combobox_relay1_mode.setEnabled(False)
@@ -804,6 +806,8 @@ def act_activate_fields_for_adu_model(self):
804806
self.combobox_relay3_mode.setEnabled(False)
805807
elif model in ('ADU200', 'ADU208'):
806808
self.group_box_analog.setEnabled(False)
809+
self.group_box_flowmeters.setEnabled(True)
810+
self.checkbox_low_flow_alarm_enabled.setEnabled(True)
807811
if self.combobox_relay0_mode.currentText() != 'Switch (two-wire)':
808812
self.checkbox_relay1_enabled.setEnabled(True)
809813
self.combobox_relay1_mode.setEnabled(True)
@@ -812,6 +816,19 @@ def act_activate_fields_for_adu_model(self):
812816
if self.combobox_relay2_mode.currentText() != 'Switch (two-wire)':
813817
self.checkbox_relay3_enabled.setEnabled(True)
814818
self.combobox_relay3_mode.setEnabled(True)
819+
elif model == 'ADU222':
820+
self.group_box_analog.setEnabled(False)
821+
self.group_box_flowmeters.setEnabled(False)
822+
self.checkbox_low_flow_alarm_enabled.setEnabled(False)
823+
if self.combobox_relay0_mode.currentText() != 'Switch (two-wire)':
824+
self.checkbox_relay1_enabled.setEnabled(True)
825+
self.combobox_relay1_mode.setEnabled(True)
826+
self.checkbox_relay2_enabled.setEnabled(False)
827+
self.checkbox_relay2_enabled.setChecked(False)
828+
self.combobox_relay2_mode.setEnabled(False)
829+
self.checkbox_relay3_enabled.setEnabled(False)
830+
self.checkbox_relay3_enabled.setChecked(False)
831+
self.combobox_relay3_mode.setEnabled(False)
815832
else:
816833
raise ValueError(f'Model {model} not supported.')
817834

@@ -1244,7 +1261,7 @@ def __init__(self, parent):
12441261
self.button_box.button(QtGui.QDialogButtonBox.Cancel).clicked.connect(self.reject)
12451262
# Update ports list
12461263
self.ports = list_serial_comports()
1247-
# self.ports.append(type('obj', (object,), {'device': '/dev/ttys001', 'product': 'macOS Virtual Serial', 'description': 'n/a'})) # Debug macOS serial
1264+
self.ports.append(type('obj', (object,), {'device': '/dev/ttys004', 'product': 'macOS Virtual Serial', 'description': 'n/a'})) # Debug macOS serial
12481265
ports_device = []
12491266
for p in self.ports:
12501267
# print(f'\n\n===\n{p.description}\n{p.device}\n{p.hwid}\n{p.interface}\n{p.location}\n{p.manufacturer}\n{p.name}\n{p.pid}\n{p.product}\n{p.serial_number}\n{p.vid}')

inlinino/instruments/ontrak.py

+28-22
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,12 @@ def __bool__(self):
4949
class Ontrak(Instrument):
5050
"""
5151
ontrak Control Systems Data Acquisition Interface
52-
Supported Model: ADU100
5352
"""
5453

5554
VENDOR_ID = 0x0a07
5655

56+
SUPPORTED_MODELS = ['ADU100', 'ADU200', 'ADU208', 'ADU222']
57+
5758
# Specific ADU 100
5859
ADC_RESOLUTION = 65535
5960
# UNIPOLAR_GAIN = {
@@ -113,13 +114,16 @@ def setup(self, cfg, raw_logger=LogText):
113114
# Set specific attributes
114115
if 'model' not in cfg.keys():
115116
raise ValueError('Missing field model')
116-
if self.model and self.model not in ['ADU100', 'ADU200', 'ADU208']:
117-
raise ValueError('Model not supported. Supported models are: ADU100, ADU200, and ADU208')
117+
if self.model and self.model not in Ontrak.SUPPORTED_MODELS:
118+
raise ValueError(f"Model not supported. Supported models are: {', '.join(Ontrak.SUPPORTED_MODELS)}")
118119
# Relays
119-
n_relays = 1 if cfg['model'] == 'ADU100' else 4
120-
relay_mode_supported = ['Switch', 'Switch (one-wire)', 'Pump']
121-
if cfg['model'] != 'ADU100':
122-
relay_mode_supported.append('Switch (two-wire)')
120+
n_relays = 4
121+
relay_mode_supported = ['Switch', 'Switch (one-wire)', 'Switch (two-wire)', 'Pump']
122+
if cfg['model'] == 'ADU100':
123+
n_relays = 1
124+
relay_mode_supported.remove('Switch (two-wire)')
125+
elif cfg['model'] == 'ADU222':
126+
n_relays = 2
123127
self.relays_enabled, self.relays_gui_mode, self.relays = [], [None]*4, [None]*4
124128
self.widget_flow_controls_enabled, self.widget_pump_controls_enabled = [None]*4, [None]*4
125129
for r in range(n_relays):
@@ -146,15 +150,21 @@ def setup(self, cfg, raw_logger=LogText):
146150
self.widget_flow_controls_enabled[r] = False
147151
self.widget_pump_controls_enabled[r] = True
148152
# Event Counters
149-
if 'event_counter_channels_enabled' not in cfg.keys():
150-
raise ValueError('Missing field event counter channels enabled')
151-
self.event_counter_channels = cfg['event_counter_channels_enabled']
152-
if 'event_counter_k_factors' not in cfg.keys():
153-
raise ValueError('Missing field event counter k factors')
154-
self.event_counter_k_factors = cfg['event_counter_k_factors']
155-
self._event_counter_past_timestamps = [float('nan')] * len(self.event_counter_channels)
156-
if 'low_flow_alarm_enabled' in cfg.keys():
157-
self.low_flow_alarm_enabled = cfg['low_flow_alarm_enabled']
153+
if cfg['model'] != 'ADU222':
154+
if 'event_counter_channels_enabled' not in cfg.keys():
155+
raise ValueError('Missing field event counter channels enabled')
156+
self.event_counter_channels = cfg['event_counter_channels_enabled']
157+
if 'event_counter_k_factors' not in cfg.keys():
158+
raise ValueError('Missing field event counter k factors')
159+
self.event_counter_k_factors = cfg['event_counter_k_factors']
160+
self._event_counter_past_timestamps = [float('nan')] * len(self.event_counter_channels)
161+
if 'low_flow_alarm_enabled' in cfg.keys():
162+
self.low_flow_alarm_enabled = cfg['low_flow_alarm_enabled']
163+
else:
164+
self.event_counter_channels = []
165+
self.event_counter_k_factors = []
166+
self._event_counter_past_timestamps = []
167+
self.low_flow_alarm_enabled = False
158168
# Analog Channels
159169
if cfg['model'] == 'ADU100':
160170
if 'analog_channels_enabled' not in cfg.keys():
@@ -218,12 +228,8 @@ def setup_interface(self, cfg):
218228

219229
def open(self, **kwargs):
220230
if self._interface.name.startswith('usb'):
221-
if self.model == 'ADU100':
222-
product_id = 100
223-
elif self.model == 'ADU200':
224-
product_id = 200
225-
elif self.model == 'ADU208':
226-
product_id = 208
231+
if self.model in Ontrak.SUPPORTED_MODELS:
232+
product_id = int(self.model[3:])
227233
else:
228234
raise ValueError('Model not supported.')
229235
super().open(vendor_id=self.VENDOR_ID, product_id=product_id, **kwargs)

inlinino/resources/setup_ontrak.ui

+8
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,11 @@
7979
<string>ADU208</string>
8080
</property>
8181
</item>
82+
<item>
83+
<property name="text">
84+
<string>ADU222</string>
85+
</property>
86+
</item>
8287
</widget>
8388
</item>
8489
<item row="3" column="0">
@@ -396,6 +401,9 @@
396401
<layout class="QVBoxLayout" name="verticalLayout_4">
397402
<item>
398403
<widget class="QGroupBox" name="group_box_flowmeters">
404+
<property name="enabled">
405+
<bool>true</bool>
406+
</property>
399407
<property name="title">
400408
<string>Digital Input(s)</string>
401409
</property>

0 commit comments

Comments
 (0)