strip leading underscore from secop parameter names

+ other fixes and debugging prints
This commit is contained in:
l_samenv
2025-03-28 11:37:11 +01:00
parent 029309a06b
commit 335d0a5078
4 changed files with 37 additions and 23 deletions

View File

@ -218,7 +218,8 @@ class SEHistory(InfluxDBWrapper):
for row in table:
all_entries.setdefault(stream, []).append((row, table.tags))
result = {}
for stream, entries in all_entries.items():
for stream in sorted(all_entries):
entries = all_entries[stream]
current = None
instrument = None
for entry in sorted(entries, key=lambda e: e[0][0]):
@ -307,9 +308,8 @@ class SEHistory(InfluxDBWrapper):
else:
device = None
devices.pop(device, None)
devcombi = tuple(zip(*devices.items()))
devcombi = tuple(zip(*sorted(devices.items())))
if devcombi != combi:
print('D', devcombi, fmtime(ts))
if combi:
prevend = min(ts, chunk[1])
if prevend - chunk[0] < gap:
@ -322,9 +322,7 @@ class SEHistory(InfluxDBWrapper):
# merge when started at the same day
chunk = chunks[-1][1]
chunk[1] = eternity
print('EXTEND', devcombi, fmtime(ts))
else:
print('APPEND', devcombi, fmtime(ts))
chunk = [ts, eternity]
chunks.append(chunk)
else:
@ -369,14 +367,8 @@ class SEHistory(InfluxDBWrapper):
flag = bool(value)
try:
previns, prevts = self.get_instrument(stream, ts, **tags)
if prevts is None:
if not flag:
return # no change
else:
if previns == value and flag:
return # no change
if previns is None or ts < prevts:
ts = prevts + 0.001
if prevts is not None and (previns is None or (ts or 1e10) < prevts):
ts = prevts + 0.001
except Exception as e:
print(f'Exception in get_instrument {e!r}')
tags['stream'] = stream
@ -384,5 +376,22 @@ class SEHistory(InfluxDBWrapper):
tags['instrument'] = value
self._add_point('_stream_', 'on', flag, ts, tags)
def remove_experiment(self, stream, ts=None, **tags):
if ts is not None:
ts += 1
reply = self.query(None, ts, _measurement='_stream_', _field='on',
stream=stream, single=1, **tags)
tagset = set(tags) | {'stream'}
tagset.discard('instrument')
for table in reply.values():
ts, flag = table[-1][:2]
if flag:
addtags = {k: v for k, v in table.tags.items()
if k not in {'instrument', '_measurement', '_field'}}
print(ts, addtags)
self._add_point('_stream_', 'on', False, ts + 0.001,
addtags)
self.flush()
def add_stream(self, value, tags, key, ts):
self.set_instrument(key, value, ts, **tags)