1 Commits

Author SHA1 Message Date
l_samenv
aa64a48ec5 merged changes for lakeshore and ccu4 2025-03-06 17:26:51 +01:00
177 changed files with 2446 additions and 10380 deletions

View File

@@ -24,14 +24,12 @@
import sys
import argparse
import socket
from pathlib import Path
# Add import path for inplace usage
sys.path.insert(0, str(Path(__file__).absolute().parents[1]))
from frappy.client.interactive import init, run, clientenv, interact
from frappy.protocol.discovery import scan
def parseArgv(argv):
@@ -39,9 +37,6 @@ def parseArgv(argv):
parser.add_argument('-i', '--include',
help='file to execute after connecting to the clients', metavar='file',
type=Path, action='append', default=[])
parser.add_argument('-s', '--scan',
help='hosts to scan for (-s subnet for all nodes in subnet)',
action='append', default=[])
parser.add_argument('-o', '--only-execute',
help='Do not go into interactive mode after executing files. \
Has no effect without --include.', action='store_true')
@@ -51,38 +46,9 @@ def parseArgv(argv):
return parser.parse_args(argv)
def own_ip():
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.settimeout(0)
try:
# doesn't even have to be reachable
s.connect(('10.254.254.254', 1))
return s.getsockname()[0]
except Exception:
return '127.0.0.1'
finally:
s.close()
args = parseArgv(sys.argv[1:])
nodes = args.node
hosts = args.scan
if not nodes and not hosts:
hosts = ['localhost']
if hosts:
answers = []
for host in hosts:
ans = scan()
if host == 'subnet': # all in subnet
answers.extend(ans)
else: # filter by ip
ip = socket.gethostbyname(host)
if ip == '127.0.0.1':
ip = own_ip()
answers.extend(a for a in ans if a.address == ip)
nodes.extend(f'{h.hostname}:{h.port}' for h in answers)
success = init(*nodes)
success = init(*args.node)
run_error = ''
file_success = False

View File

@@ -23,12 +23,12 @@
import sys
from pathlib import Path
from frappy.lib import generalConfig
from frappy.logging import logger
# Add import path for inplace usage
sys.path.insert(0, str(Path(__file__).absolute().parents[1]))
from frappy.lib import generalConfig
from frappy.logging import logger
from frappy.client.interactive import Console
from frappy.playground import play, USAGE

View File

@@ -23,39 +23,106 @@
"""SEC node autodiscovery tool."""
import argparse
import json
import os
import select
import socket
import sys
from pathlib import Path
# Add import path for inplace usage
sys.path.append(str(Path(__file__).absolute().parents[1]))
from frappy.protocol.discovery import scan, listen
from collections import namedtuple
from time import time as currenttime
UDP_PORT = 10767
Answer = namedtuple('Answer',
'address, port, equipment_id, firmware, description')
def decode(msg, addr):
msg = msg.decode('utf-8')
try:
data = json.loads(msg)
except Exception:
return None
if not isinstance(data, dict):
return None
if data.get('SECoP') != 'node':
return None
try:
eq_id = data['equipment_id']
fw = data['firmware']
desc = data['description']
port = data['port']
except KeyError:
return None
addr, _scanport = addr
return Answer(addr, port, eq_id, fw, desc)
def print_answer(answer, *, short=False):
if short:
# NOTE: keep this easily parseable!
print(f'{answer.equipment_id} {answer.hostname}:{answer.port}')
print(f'{answer.equipment_id} {answer.address}:{answer.port}')
return
numeric = f' ({answer.address})' if answer.address == answer.hostname else ''
print(f'Found {answer.equipment_id} at {answer.hostname}{numeric}:')
print(f'Found {answer.equipment_id} at {answer.address}:')
print(f' Port: {answer.port}')
print(f' Firmware: {answer.firmware}')
desc = answer.description.replace('\n', '\n ')
print(f' Node description: {desc}')
print('-' * 80)
print()
def scan(max_wait=1.0):
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
# send a general broadcast
try:
s.sendto(json.dumps(dict(SECoP='discover')).encode('utf-8'),
('255.255.255.255', UDP_PORT))
except OSError as e:
print('could not send the broadcast:', e)
# we still keep listening for self-announcements
start = currenttime()
seen = set()
while currenttime() < start + max_wait:
res = select.select([s], [], [], 0.1)
if res[0]:
try:
msg, addr = s.recvfrom(1024)
except socket.error: # pragma: no cover
continue
answer = decode(msg, addr)
if answer is None:
continue
if (answer.address, answer.equipment_id, answer.port) in seen:
continue
seen.add((answer.address, answer.equipment_id, answer.port))
yield answer
def listen(*, short=False):
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
if os.name == 'nt':
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
else:
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
s.bind(('0.0.0.0', UDP_PORT))
while True:
try:
msg, addr = s.recvfrom(1024)
except KeyboardInterrupt:
break
answer = decode(msg, addr)
if answer:
print_answer(answer, short=short)
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('-l', '--listen', action='store_true',
help='Keep listening after the broadcast.')
parser.add_argument('-s', '--short', action='store_true',
help='Print short info (always on when listen).')
help='Print short info. '
'Keep listening after the broadcast.')
args = parser.parse_args(sys.argv[1:])
short = args.listen or args.short
if not short:
print('-' * 80)
for answer in scan():
print_answer(answer, short=short)
print_answer(answer, short=args.listen)
if args.listen:
for answer in listen():
print_answer(short=short)
listen(short=args.listen)

View File

@@ -1,53 +0,0 @@
#!/usr/bin/env python3
import sys
from pathlib import Path
# Add import path for inplace usage
sys.path.insert(0, str(Path(__file__).absolute().parents[1]))
from frappy.client.interactive import Client
from frappy_psi.iqplot import Plot
import numpy as np
import matplotlib.pyplot as plt
if len(sys.argv) < 2:
print('Usage: peus-plot <maxY>')
def get_modules(name):
return list(filter(None, (globals().get(name % i) for i in range(10))))
secnode = Client('pc13252:5000')
time_size = {'time', 'size'}
int_mods = [u] + get_modules('roi%d')
t_rois = get_modules('roi%d')
i_rois = get_modules('roi%di')
q_rois = get_modules('roi%dq')
maxx = None
if len(sys.argv) > 1:
maxy = float(sys.argv[1])
if len(sys.argv) > 2:
maxx = float(sys.argv[2])
else:
maxy = 0.02
iqplot = Plot(maxy, maxx)
for i in range(99):
pass
try:
while True:
curves = np.array(u.get_curves())
iqplot.plot(curves,
rois=[(r.time - r.size * 0.5, r.time + r.size * 0.5) for r in int_mods],
average=([r.time for r in t_rois],
[r.value for r in i_rois],
[r.value for r in q_rois]))
if not iqplot.pause(0.5):
break
except KeyboardInterrupt:
iqplot.close()

View File

@@ -1,65 +0,0 @@
#!/usr/bin/env python3
import sys
from pathlib import Path
# Add import path for inplace usage
sys.path.insert(0, str(Path(__file__).absolute().parents[1]))
from frappy.client.interactive import Client
import numpy as np
import matplotlib.pyplot as plt
from frappy_psi.iqplot import Pause
if len(sys.argv) < 2:
print("""
Usage:
us-plot <end> [<start> [<npoints>]]
end: end of window [ns]
start: start of window [n2], default: 0
npoints: number fo points (default 1000)
""")
sys.exit(0)
Client('pc13252:5000')
def plot(array, ax, style, xs):
xaxis = np.arange(len(array)) * xs
return ax.plot(xaxis, array, style)[0]
def update(array, line, xs):
xaxis = np.arange(len(array)) * xs
line.set_data(np.array([xaxis, array]))
def on_close(event):
sys.exit(0)
start = 0
end = float(sys.argv[1])
npoints = 1000
if len(sys.argv) > 2:
start = float(sys.argv[2])
if len(sys.argv) > 3:
npoints = float(sys.argv[3])
fig, ax = plt.subplots(figsize=(15,3))
pause = Pause(fig)
try:
get_signal = iq.get_signal
print('plotting RUS signal')
except NameError:
get_signal = u.get_signal
print('plotting PE signal')
xs, signal = get_signal(start, end, npoints)
lines = [plot(s, ax, '-', xs) for s in signal]
while pause(0.5):
plt.draw()
xs, signal = get_signal(start, end, npoints)
for line, sig in zip(lines, signal):
update(sig, line, xs)

67
cfg/PEUS.py Normal file
View File

@@ -0,0 +1,67 @@
Node(equipment_id = 'pe_ultrasound.psi.ch',
description = 'pulse echo ultra sound setup',
interface = 'tcp://5000',
)
Mod('f',
cls = 'frappy_psi.ultrasound.Frequency',
description = 'ultrasound frequency and acquisition loop',
uri = 'serial:///dev/ttyS1',
pars = 'pars',
pollinterval = 0.1,
time = 900, # start time
size = 5000,
freq = 1.17568e+06,
basefreq = 4.14902e+07,
control = False,
rusmode = False,
amp = 5.0,
nr = 1000, #500 #300 #100 #50 #30 #10 #5 #3 #1 #1000 #500 #300 #100 #50 #30 #10 #5 #3 #1 #500
sr = 32768, #16384
plot = True,
maxstep = 100000,
bw = 10E6, #butter worth filter bandwidth
maxy = 0.7, # y scale for plot
curves = 'curves', # module to transmit curves:
)
Mod('curves',
cls = 'frappy_psi.ultrasound.Curves',
description = 't, I, Q and pulse arrays for plot',
)
Mod('delay',
cls = 'frappy__psi.dg645.Delay',
description = 'delay line with 2 channels',
uri = 'serial:///dev/ttyS2',
on1 = 1e-9,
on2 = 1E-9,
off1 = 400e-9,
off2 = 600e-9,
)
Mod('pars',
cls = 'frappy_psi.ultrasound.Pars',
description = 'SEA parameters',
)
def roi(nr, time=None, size=300):
Mod(f'roi{nr}',
cls = 'frappy_psi.ultrasound.Roi',
description = f'I/Q of region {nr}',
main = 'f',
time=time or 4000,
size=size,
enable=time is not None,
)
roi(0, 2450) # you may add size as argument if not default
roi(1, 5950)
roi(2, 9475)
roi(3, 12900)
roi(4, 16100)
roi(5) # disabled
roi(6)
roi(7)
roi(8)
roi(9)

View File

@@ -1,87 +0,0 @@
Node('PEUS.psi.ch',
'ultrasound, pulse_echo configuration',
interface='5000',
)
Mod('u',
'frappy_psi.ultrasound.PulseEcho',
'ultrasound acquisition loop',
freq='f',
# pollinterval=0.1,
time=900.0,
size=5000.0,
nr=500,
sr=32768,
bw=1e7,
)
Mod('fio',
'frappy_psi.ultrasound.FreqStringIO', '',
uri='serial:///dev/ttyS1?baudrate=57600',
)
Mod('f',
'frappy_psi.ultrasound.Frequency',
'writable for frequency',
output='R', # L for LF (bnc), R for RF (type N)
io='fio',
amp=0.5, # VPP
)
Mod('fdif',
'frappy_psi.ultrasound.FrequencyDif',
'writable for frequency minus base frequency',
freq='f',
base=41490200.0,
)
# Mod('curves',
# 'frappy_psi.ultrasound.Curves',
# 't, I, Q and pulse arrays for plot',
# )
def roi(name, time, size, components='iqpa', enable=True, control=False, freq=None, **kwds):
description = 'I/Q of region {name}'
if freq:
kwds.update(cls='frappy_psi.ultrasound.ControlRoi',
description=f'{description} as control loop',
freq=freq, **kwds)
else:
kwds.update(cls='frappy_psi.ultrasound.Roi',
description=description, **kwds)
kwds.update({c: name + c for c in components})
Mod(name,
main='u',
time=time,
size=size,
enable=enable,
**kwds,
)
for c in components:
Mod(name + c,
'frappy.modules.Readable',
f'{name}{c} component',
)
# control loop
roi('roi0', 2450, 300, freq='f', maxstep=100000, minstep=4000)
# other rois
roi('roi1', 5950, 300)
roi('roi2', 9475, 300)
roi('roi3', 12900, 300)
#roi('roi4', 400, 30, False)
#roi('roi5', 400, 30, False)
#roi('roi6', 400, 30, False)
#roi('roi7', 400, 30, False)
#roi('roi8', 400, 30, False)
#roi('roi9', 400, 30, False)
Mod('delay',
'frappy_psi.dg645.Delay',
'delay line with 2 channels',
uri='serial:///dev/ttyS2',
on1=1e-09,
on2=1e-09,
off1=4e-07,
off2=6e-07,
)

62
cfg/RUS.py Normal file
View File

@@ -0,0 +1,62 @@
Node(equipment_id = 'r_ultrasound.psi.ch',
description = 'resonant ultra sound setup',
interface = 'tcp://5000',
)
Mod('f',
cls = 'frappy_psi.ultrasound.Frequency',
description = 'ultrasound frequency and acquisition loop',
uri = 'serial:///dev/ttyS1',
pars = 'pars',
pollinterval = 0.1,
time = 900, # start time
size = 5000,
freq = 1.e+03,
basefreq = 1.E+3,
control = False,
rusmode = False,
amp = 2.5,
nr = 1, #500 #300 #100 #50 #30 #10 #5 #3 #1 #1000 #500 #300 #100 #50 #30 #10 #5 #3 #1 #500
sr = 1E8, #16384
plot = True,
maxstep = 100000,
bw = 10E6, #butter worth filter bandwidth
maxy = 0.7, # y scale for plot
curves = 'curves', # module to transmit curves:
)
Mod('curves',
cls = 'frappy_psi.ultrasound.Curves',
description = 't, I, Q and pulse arrays for plot',
)
Mod('roi0',
cls = 'frappy_psi.ultrasound.Roi',
description = 'I/Q of region in the control loop',
time = 300, # this is the center of roi:
size = 5000,
main = f,
)
Mod('roi1',
cls = 'frappy_psi.ultrasound.Roi',
description = 'I/Q of region 1',
time = 100, # this is the center of roi:
size = 300,
main = f,
)
Mod('delay',
cls = 'frappy__psi.dg645.Delay',
description = 'delay line with 2 channels',
uri = 'serial:///dev/ttyS2',
on1 = 1e-9,
on2 = 1E-9,
off1 = 400e-9,
off2 = 600e-9,
)
Mod('pars',
cls = 'frappy_psi.ultrasound.Pars',
description = 'SEA parameters',
)

View File

@@ -1,39 +0,0 @@
Node(equipment_id = 'r_ultrasound.psi.ch',
description = 'resonant ultra sound setup',
interface = 'tcp://5000',
)
Mod('iq',
cls = 'frappy_psi.ultrasound.RUS',
description = 'ultrasound iq mesurement',
imod = 'i',
qmod = 'q',
freq='f',
input_range=10, # VPP
input_delay = 0,
periods = 163,
)
Mod('freqio',
'frappy_psi.ultrasound.FreqStringIO',
' ',
uri = 'serial:///dev/ttyS1?baudrate=57600',
)
Mod('f',
cls = 'frappy_psi.ultrasound.Frequency',
description = 'ultrasound frequency',
io='freqio',
output='L', # L for LF (bnc), R for RF (type N)
target=10000,
)
Mod('i',
cls='frappy.modules.Readable',
description='I component',
)
Mod('q',
cls='frappy.modules.Readable',
description='Q component',
)

View File

@@ -1,40 +0,0 @@
Node('measure.frappy.demo',
'''Measureable demo''',
'tcp://10770',
)
Mod('control',
'frappy_demo.acquisition.Controller',
'simple demo controller',
channels = {'first': 'chan1', 'second': 'chan2', 'third': 'chan3'},
pollinterval = 1,
)
Mod('chan1',
'frappy_demo.acquisition.Channel',
'simple channel demo',
goal = 50,
goal_enable = True,
pollinterval = 1,
)
Mod('chan2',
'frappy_demo.acquisition.Channel',
'simple channel demo',
pollinterval = 1,
)
Mod('chan3',
'frappy_demo.acquisition.Channel',
'simple channel demo',
pollinterval = 1,
)
Mod('single',
'frappy_demo.acquisition.SimpleAcquisition',
'Acquisition demo',
pollinterval = 1,
goal = 20,
goal_enable=True,
acquisition_key='single',
)
Mod('ng',
'frappy_demo.acquisition.NoGoalAcquisition',
'Acquisition demo',
pollinterval = 5,
)

13
cfg/addons/ah2700_cfg.py Executable file → Normal file
View File

@@ -2,17 +2,8 @@ Node('ah2700.frappy.psi.ch',
'Andeen Hagerlin 2700 Capacitance Bridge',
)
Mod('cap_io',
'frappy_psi.ahcapbridge.IO', '',
uri='linse-leiden-ts:3002'
)
Mod('cap',
'frappy_psi.ahcapbridge.AH2700',
'frappy_psi.ah2700.Capacitance',
'capacitance',
io='cap_io',
loss_module = 'loss',
freq_module = 'freq',
uri='dil4-ts.psi.ch:3008',
)

View File

@@ -1,20 +0,0 @@
Node('ah2700.frappy.psi.ch',
'Andeen Hagerlin 2700 Capacitance Bridge',
)
Mod('cap_io',
'frappy_psi.ah2700.Ah2700IO',
'',
uri='linse-leiden-ts:3002',
timeout=60,
)
# this creates also cap_freq and cap_loss
Mod('cap',
'frappy_psi.ah2700.Capacitance',
'capacitance',
io = 'cap_io',
loss_name='loss',
freq_name='freq',
)

View File

@@ -16,7 +16,7 @@ Mod('ah',
'frappy_psi.sea.SeaReadable', '',
io='sea_addons',
sea_object='cap',
extra_modules = ['cap', 'loss', 'freq']
extra_modules = ['cap', 'loss']
)
Mod('cap',
@@ -32,12 +32,6 @@ Mod('loss',
single_module='ah.loss',
)
Mod('freq',
'frappy_psi.sea.SeaWritable', '',
io='sea_addons',
single_module='ah.freq',
)
Mod('capslope',
'frappy_psi.sea.SeaReadable', '',
io='sea_addons',

View File

@@ -1,31 +0,0 @@
Node('ahtwo.frappy.psi.ch',
'Andeen Hagerlin 2700 and 2550 Capacitance Bridges',
)
# TODO: adapt names (cap, cap2) to your experiment
Mod('cap_io',
'frappy_psi.ahcapbridge.IO', '',
uri='linse-leiden-ts:3002'
)
Mod('cap',
'frappy_psi.ahcapbridge.AH2700',
'capacitance',
io='cap_io',
loss_module = 'loss',
freq_module = 'freq',
)
Mod('cap2_io',
'frappy_psi.ahcapbridge.IO', '',
uri='linse-leiden-ts:3001'
)
Mod('cap2',
'frappy_psi.ahcapbridge.AH2550',
'capacitance',
io='cap2_io',
loss_module = 'loss2',
)

View File

@@ -1,15 +0,0 @@
Node('haake.frappy.psi.ch',
'additional haake waterbath',
)
Mod('haake_io',
'frappy_psi.haake.HaakeIO',
'',
uri='sans-sample-ts:3006',
)
Mod('T2',
'frappy_psi.haake.TemperatureLoop',
'second haake',
io = 'haake_io',
)

View File

@@ -1,22 +0,0 @@
Node('pdld_laser.psi.ch',
'PDLD laser',
interface = 'tcp://5000',
)
Mod('laser_io',
'frappy_psi.pdld.IO',
'laser IO',
uri='serial:///dev/ttyUSB0?baudrate=9600',
)
Mod('laser',
'frappy_psi.pdld.Laser',
'laser switch',
io='laser_io',
)
Mod('laser_power',
'frappy_psi.pdld.LaserPower',
'laser power',
io='laser_io',
)

View File

@@ -1,28 +0,0 @@
Node('srs830.ppms.psi.ch',
'',
interface='tcp://5000',
)
Mod('b',
'frappy_psi.SR830.XY',
'signal from Stanford Rasearch lockin',
uri='linse-976d-ts:3002',
)
Mod('bx',
'frappy_psi.parmod.Comp',
'x-comp',
read='b.value[0]',
unit='V',
)
Mod('by',
'frappy_psi.parmod.Comp',
'y-comp',
read='b.value[1]',
unit='V',
)
Mod('bf',
'frappy_psi.parmod.Par',
'lockin frequency',
read='b.freq',
unit='Hz',
)

View File

@@ -3,15 +3,8 @@ Node('AH2700Test.psi.ch',
'tcp://5000',
)
Mod('io',
'frappy_psi.ahcapbridge.IO', '',
uri='linse-leiden-ts:3002'
)
Mod('cap',
'frappy_psi.ahcapbridge.AH2700',
'frappy_psi.ah2700.Capacitance',
'capacitance',
io='io',
loss_module = 'loss',
freq_module = 'freq',
uri='ldmse3-ts:3015',
)

View File

@@ -1,19 +0,0 @@
Node('bronkhorsttest.psi.ch',
'bronkhorst test',
'tcp://5000',
)
Mod('io',
'frappy_psi.bronkhorst.IO',
'bronkhorst communication',
uri='tcp://localhost:3005',
)
Mod('p',
'frappy_psi.bronkhorst.Controller',
'pressure controller',
io='io',
adr=128,
scale=18,
value=Param(unit='mbar')
)

View File

@@ -1,341 +0,0 @@
# by id (independent of plug location, but may not neccessarly be unique)
# to verify just do:
# ls /dev/serial/by-id
turbo_uri = '/dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A601PCGF-if00-port0'
press_uri = '/dev/serial/by-id/usb-FTDI_FT232R_USB_UART_AH07445U-if00-port0'
itc_uri = '/dev/serial/by-id/usb-Prolific_Technology_Inc._USB-Serial_Controller_D-if00-port0'
lsc_uri = '192.168.1.2:7777'
logo_ip = '192.168.0.3'
# by plug location would also be possible (/dev/serial/by-path)
Node('dil5.psi.ch',
'dil5 on linse-dil5',
interface='tcp://5000',
secondary = ['ws://8010']
)
Mod('logo',
'frappy_psi.logo.IO',
'',
ip_address = logo_ip,
tcap_client = 0x3000,
tsap_server = 0x2000
)
Mod('V1',
'frappy_psi.logo.DigitalActuator',
'Valves',
io = 'logo',
feedback_addr ="V1025.0",
output_addr ="V1064.3"
)
Mod('V2',
'frappy_psi.logo.DigitalActuator',
'dil bypass',
io = 'logo',
feedback_addr ="V1024.2",
output_addr ="V1064.0",
)
Mod('V4',
'frappy_psi.logo.DigitalActuator',
'compressor to dump',
io = 'logo',
# feedback seems not to work
output_addr ="V1064.7",
target_addr ="V404.1",
)
Mod('V5',
'frappy_psi.logo.DigitalActuator',
'compressor input',
io = 'logo',
feedback_addr ="V1024.4",
output_addr ="V1064.2",
)
Mod('V9',
'frappy_psi.logo.DelayedActuator',
'dump output',
io = 'logo',
delay_addr = 'VW24',
feedback_addr ="V1024.3",
output_addr ="V1064.5",
target_addr ="V404.3",
)
Mod('forepump',
'frappy_psi.logo.DigitalActuator',
'forepump',
io = 'logo',
output_addr ="V1064.6",
target_addr ="V404.4",
)
Mod('compressor',
'frappy_psi.logo.DigitalActuator',
'',
io = 'logo',
output_addr ="V1064.4",
target_addr ="V404.2",
)
Mod('p2',
'frappy_psi.logo.Value',
'pressure after compressor',
io = 'logo',
addr ="VW0",
value = Param(unit='mbar'),
)
Mod('p1',
'frappy_psi.logo.Value',
'dump pressure',
io = 'logo',
addr ="VW28",
value = Param(unit='mbar'),
)
Mod('p5',
'frappy_psi.logo.Value',
'pressure after forepump',
io = 'logo',
addr ="VW4",
value = Param(unit='mbar'),
)
Mod('airpressure',
'frappy_psi.logo.DigitalValue',
'Airpressure state',
io = 'logo',
addr ="V1024.7",
)
Mod('io_pfeiffer',
'frappy_psi.pfeiffer_new.PfeifferProtocol',
'',
uri=f'serial://{press_uri}?baudrate=9600+parity=none+bytesize=8+stopbits=1',
)
Mod('io_turbo',
'frappy_psi.pfeiffer_new.PfeifferProtocol',
'',
uri=f'serial://{turbo_uri}?baudrate=9600+parity=none+bytesize=8+stopbits=1',
)
Mod('p3',
'frappy_psi.pfeiffer_new.RPT200',
'Pressure in HPa',
io = 'io_pfeiffer',
address= 2,
)
Mod('p4',
'frappy_psi.pfeiffer_new.RPT200',
'Pressure in HPa',
io = 'io_pfeiffer',
address= 4
)
Mod('turbopump',
'frappy_psi.pfeiffer_new.TCP400',
'Pfeiffer Turbopump',
io = 'io_turbo',
address= 1
)
Mod('MV10',
'frappy_psi.manual_valves.ManualValve',
'Manual Valve MV10'
)
Mod('MV13',
'frappy_psi.manual_valves.ManualValve',
'Manual Valve MV13'
)
Mod('MV8',
'frappy_psi.manual_valves.ManualValve',
'Manual Valve MV8'
)
Mod('MVB',
'frappy_psi.manual_valves.ManualValve',
'Manual Valve MVB'
)
Mod('MV2',
'frappy_psi.manual_valves.ManualValve',
'Manual Valve MV2'
)
Mod('MV1',
'frappy_psi.manual_valves.ManualValve',
'Manual Valve MV1'
)
Mod('MV3a',
'frappy_psi.manual_valves.ManualValve',
'Manual Valve MV3a'
)
Mod('MV3b',
'frappy_psi.manual_valves.ManualValve',
'Manual Valve MV3b'
)
Mod('GV1',
'frappy_psi.manual_valves.ManualValve',
'Manual Valve GV1'
)
Mod('GV2',
'frappy_psi.manual_valves.ManualValve',
'Manual Valve GV2'
)
Mod('MV14',
'frappy_psi.manual_valves.ManualValve',
'Manual Valve MV14'
)
Mod('MV12',
'frappy_psi.manual_valves.ManualValve',
'Manual Valve MV12'
)
Mod('MV11',
'frappy_psi.manual_valves.ManualValve',
'Manual Valve MV11'
)
Mod('MV9',
'frappy_psi.manual_valves.ManualValve',
'Manual Valve MV9'
)
Mod('itc',
'frappy_psi.mercury.IO',
'connection to MercuryiTC',
uri=f'serial://{itc_uri}?baudrate=115200+parity=none+bytesize=8+stopbits=1',
)
Mod('T_still_wup',
'frappy_psi.mercury.TemperatureLoop',
'still warmup temperature',
slot='MB1.T1',
io='itc',
)
Mod('T_one_K',
'frappy_psi.mercury.TemperatureLoop',
'1 K plate warmup temperature',
slot='DB5.T1',
io='itc',
)
Mod('T_mix_wup',
'frappy_psi.mercury.TemperatureLoop',
'mix. chamber warmup temperature',
slot='DB6.T1',
io='itc',
)
Mod('T_ivc_wup',
'frappy_psi.mercury.TemperatureLoop',
'IVC warmup temperature',
slot='DB7.T1',
io='itc',
)
Mod('T_cond',
'frappy_psi.mercury.TemperatureLoop',
'condenser temperature',
slot='DB8.T1',
io='itc',
)
Mod('safety',
'frappy_psi.dilution.Interlock',
'interlock mechanism',
io='logo',
dil='dil',
)
Mod('dil',
'frappy_psi.dilution.DIL5',
'dilution state machine and parameters',
condenseline_pressure = "p2",
condense_valve = "V9",
dump_valve = "V4",
forepump = "forepump",
compressor = "compressor",
turbopump = "turbopump",
condenseline_valve = "V1",
circuitshort_valve = "V2",
still_pressure = "p4",
still_pressure_turbo = "p3",
#ls372 = "res1",
dump_pressure = "p1",
condensing_p_low = 1200,
condensing_p_high = 1500,
)
## Dilution lakeshore Temperature controller
Mod('io_ls273',
'frappy_psi.ls372.StringIO',
'io for Ls372',
uri=lsc_uri,
)
Mod('sw',
'frappy_psi.ls372.Switcher',
'channel switcher',
io = 'io_ls273',
)
Mod('T_ivc',
'frappy_psi.ls372.TemperatureChannel',
'mix temperature chan 2',
channel = 2,
switcher = 'sw',
)
Mod('T_still',
'frappy_psi.ls372.TemperatureChannel',
'mix temperature chan 3',
channel = 3,
switcher = 'sw',
)
Mod('T_sorb',
'frappy_psi.ls372.TemperatureChannel',
'mix temperature chan 1',
channel = 1,
switcher = 'sw',
)
Mod('T_cp',
'frappy_psi.ls372.TemperatureChannel',
'mix temperature chan 4',
channel = 4,
switcher = 'sw',
)
Mod('T_mix',
'frappy_psi.ls372.TemperatureLoop',
'mix temperature chan 5',
channel = 5,
htrrng = '1mA',
switcher = 'sw',
)

View File

@@ -1,16 +0,0 @@
Node('dilhtrtest.psi.ch',
'dilhtr test',
'tcp://5000',
)
Mod('io',
'frappy_psi.dilhtr.IO',
'dilhtr communication',
uri='serial:///dev/tty.usbserial-21440?baudrate=9600',
)
Mod('heater',
'frappy_psi.dilhtr.Heater',
'dilhtr box',
io='io',
)

View File

@@ -1,136 +0,0 @@
Node('test.config.frappy.demo',
'''short description of the testing sec-node
This description for the node can be as long as you need if you use a multiline string.
Very long!
The needed fields are Equipment id (1st argument), description (this)
and the main interface of the node (3rd arg)
''',
'tcp://5000',
)
Mod('attachtest',
'frappy_demo.test.WithAtt',
'test attached',
att = 'LN2',
)
Mod('pinata',
'frappy_demo.test.Pin',
'scan test',
)
Mod('recursive',
'frappy_demo.test.RecPin',
'scan test',
)
Mod('LN2',
'frappy_demo.test.LN2',
'random value between 0..100%',
value = Param(default = 0, unit = '%'),
)
Mod('heater',
'frappy_demo.test.Heater',
'some heater',
maxheaterpower = 10,
)
Mod('T1',
'frappy_demo.test.Temp',
'some temperature',
sensor = 'X34598T7',
)
Mod('T2',
'frappy_demo.test.Temp',
'some temperature',
sensor = 'X34598T8',
)
Mod('T3',
'frappy_demo.test.Temp',
'some temperature',
sensor = 'X34598T9',
)
Mod('Lower',
'frappy_demo.test.Lower',
'something else',
)
Mod('Decision',
'frappy_demo.test.Mapped',
'Random value from configured property choices. Config accepts anything ' \
'that can be converted to a list',
choices = ['Yes', 'Maybe', 'No'],
)
Mod('c',
'frappy_demo.test.Commands',
'a command test',
)
Mod('cryo',
'frappy_demo.cryo.Cryostat',
'A simulated cc cryostat with heat-load, specific heat for the sample and a '
'temperature dependent heat-link between sample and regulation.',
group='very important/stuff',
jitter=0.1,
T_start=10.0,
target=10.0,
looptime=1,
ramp=6,
maxpower=20.0,
heater=4.1,
mode='pid',
tolerance=0.1,
window=30,
timeout=900,
p = Param(40, unit='%/K'), # in case 'default' is the first arg, we can omit 'default='
i = 10,
d = 2,
pid = Group('p', 'i', 'd'),
pollinterval = Param(export=False),
value = Param(unit = 'K', test = 'customized value'),
)
Mod('heatswitch',
'frappy_demo.modules.Switch',
'Heatswitch for `mf` device',
switch_on_time = 5,
switch_off_time = 10,
)
Mod('bool',
'frappy_demo.modules.BoolWritable',
'boolean writable test',
)
Mod('lscom',
'frappy_psi.ls370sim.Ls370Sim',
'simulated serial communicator to a LS 370',
visibility = 3
)
Mod('sw',
'frappy_psi.ls370res.Switcher',
'channel switcher for Lsc controller',
io = 'lscom',
)
Mod('a',
'frappy_psi.ls370res.ResChannel',
'resistivity',
channel = 1,
switcher = 'sw',
)
Mod('b',
'frappy_psi.ls370res.ResChannel',
'resistivity',
channel = 3,
switcher = 'sw',
)

View File

@@ -1,100 +0,0 @@
Node('fi2.psi.ch',
'vacuum furnace ILL Type',
'tcp://5000',
)
Mod('htr_io',
'frappy_psi.tdkpower.IO',
'powersupply communicator',
uri = 'serial:///dev/ttyUSB0',
)
Mod('htr',
'frappy_psi.tdkpower.Power',
'heater power',
io= 'htr_io',
)
Mod('out',
'frappy_psi.tdkpower.Output',
'heater output',
io = 'htr_io',
maxvolt = 5,
maxcurrent = 25,
)
Mod('relais',
'frappy_psi.ionopimax.DigitalOutput',
'relais for power output',
addr = 'o2',
)
Mod('T_main',
'frappy_psi.ionopimax.CurrentInput',
'sample temperature',
addr = 'ai4',
valuerange = (0, 1372),
value = Param(unit='degC'),
)
Mod('T_extra',
'frappy_psi.ionopimax.CurrentInput',
'extra temperature',
addr = 'ai3',
valuerange = (0, 1372),
value = Param(unit='degC'),
)
Mod('T_htr',
'frappy_psi.ionopimax.CurrentInput',
'heater temperature',
addr = 'ai2',
valuerange = (0, 1372),
value = Param(unit='degC'),
)
Mod('T_wall',
'frappy_psi.ionopimax.VoltageInput',
'furnace wall temperature',
addr = 'av2',
rawrange = (0, 1.5),
valuerange = (0, 150),
value = Param(unit='degC'),
)
Mod('T',
'frappy_psi.picontrol.PI',
'controlled Temperature',
input = 'T_htr',
output = 'out',
relais = 'relais',
p = 2,
i = 0.01,
)
Mod('interlocks',
'frappy_psi.furnace.Interlocks',
'interlock parameters',
input = 'T_htr',
wall_T = 'T_wall',
vacuum = 'p',
relais = 'relais',
control = 'T',
wall_limit = 50,
vacuum_limit = 0.1,
)
Mod('p_io',
'frappy_psi.pfeiffer.IO',
'pressure io',
uri='serial:///dev/ttyUSBlower',
)
Mod('p',
'frappy_psi.pfeiffer.Pressure',
'pressure reading',
io = 'p_io',
)

View File

@@ -1,116 +0,0 @@
Node('fi.psi.ch',
'ILL furnace',
'tcp://5000',
)
Mod('T_main',
'frappy_psi.furnace.PRtransmitter',
'sample temperature',
addr='ai2',
valuerange=(0, 2300),
value=Param(unit='degC'),
)
Mod('T_extra',
'frappy_psi.furnace.PRtransmitter',
'extra temperature',
addr='ai1',
valuerange=(0, 2300),
value=Param(unit='degC'),
)
Mod('T_wall',
'frappy_psi.ionopimax.VoltageInput',
'furnace wall temperature',
addr='av2',
rawrange=(0, 1.5),
valuerange=(0, 150),
value=Param(unit='degC'),
)
Mod('T3',
'frappy_psi.furnace.PRtransmitter',
'extra temperature',
addr='ai3',
valuerange=(0, 1372),
value=Param(unit='degC'),
)
Mod('T4',
'frappy_psi.furnace.PRtransmitter',
'extra temperature',
addr='ai4',
valuerange=(0, 1372),
value=Param(unit='degC'),
)
Mod('T',
'frappy_psi.furnace.PIctrl',
'controlled temperature ',
value = Param(unit='degC'),
input_module = 'T_htr',
output_module = 't_out',
output_min = 0,
output_max = 100,
p = 1,
i = 0.01,
)
Mod('htr_io',
'frappy_psi.tdkpower.IO',
'powersupply communicator',
uri='serial:///dev/ttyUSB0?baudrate=9600',
)
Mod('htr_power',
'frappy_psi.tdkpower.Power',
'heater power',
io='htr_io',
)
Mod('htr',
'frappy_psi.furnace.TdkOutput',
'heater output',
io='htr_io',
maxvolt=8,
maxcurrent=200,
)
Mod('flowswitch',
'frappy_psi.ionopimax.DigitalInput',
'flow switch',
addr='dt2',
true_level='low',
)
Mod('interlock',
'frappy_psi.furnace.Interlocks',
'interlock parameters',
main_T='T_main',
extra_T='T_extra',
wall_T='T_wall',
vacuum='p',
control='T',
htr='htr',
flowswitch='flowswitch',
wall_limit=50,
main_T_limit = 1400,
extra_T_limit = 1400,
vacuum_limit=0.001,
)
Mod('p',
'frappy_psi.furnace.PKRgauge',
'pressure reading',
addr = 'av1',
rawrange = (1.82, 8.6),
valuerange = (5e-9, 1000),
value = Param(unit='mbar'),
)
Mod('vso',
'frappy_psi.ionopimax.VoltagePower',
'voltage power output',
target = 24,
export = False,
)

View File

@@ -1,132 +0,0 @@
Node('fs.psi.ch',
'small vacuum furnace',
'tcp://5000',
)
Mod('T',
'frappy_psi.furnace.PI2',
'controlled Temperature on sample (2nd loop)',
value = Param(unit='degC'),
meaning = ['temperature', 30],
input_module = 'T_sam',
output_module = 'T_reg',
p = 1.2,
i = 0.005,
)
Mod('T_reg',
'frappy_psi.furnace.PIctrl',
'controlled Temperature on heater',
value = Param(unit='degC'),
input_module = 'T_htr',
output_module = 't_out',
output_min = 0,
output_max = 100,
p = 1,
i = 0.003,
)
#Mod('p_reg',
# 'frappy_psi.furnace.PI',
# 'controlled pressure',
# input_module = 'p',
# output_module = 't_out',
# p = 1,
# i = 0.005,
# )
Mod('T_htr',
'frappy_psi.furnace.PRtransmitter',
'heater temperature',
addr = 'ai4',
valuerange = (0, 1372),
value = Param(unit='degC'),
)
Mod('T_sam',
'frappy_psi.furnace.PRtransmitter',
'sample temperature',
addr = 'ai2',
valuerange = (0, 1372),
value = Param(unit='degC'),
)
Mod('T_extra',
'frappy_psi.furnace.PRtransmitter',
'extra temperature',
addr = 'ai3',
valuerange = (0, 1372),
value = Param(unit='degC'),
)
Mod('T_wall',
'frappy_psi.ionopimax.VoltageInput',
'furnace wall temperature',
addr = 'av2',
rawrange = (0, 1.5),
valuerange = (0, 150),
value = Param(unit='degC'),
)
Mod('htr_io',
'frappy_psi.bkpower.IO',
'powersupply communicator',
uri = 'serial:///dev/ttyUSBupper',
)
Mod('htr',
'frappy_psi.bkpower.Power',
'heater power',
io= 'htr_io',
)
Mod('t_out',
'frappy_psi.bkpower.Output',
'heater output',
# p_value = 'p_out',
io = 'htr_io',
maxvolt = 50,
maxcurrent = 2,
)
Mod('relay',
'frappy_psi.ionopimax.DigitalOutput',
'relais for power output',
addr = 'o2',
)
Mod('interlock',
'frappy_psi.furnace.Interlocks',
'interlock parameters',
input = 'T_htr',
wall_T = 'T_wall',
htr_T = 'T_htr',
main_T = 'T_sam',
reg_T = 'T_reg',
extra_T = 'T_extra',
htr = 't_out',
vacuum = 'p',
relay = 'relay',
control = 'T',
wall_limit = 60,
vacuum_limit = 0.001,
disabled_checks = 'T_extra',
)
Mod('p',
'frappy_psi.furnace.PKRgauge',
'pressure reading',
addr = 'av1',
rawrange = (1.82, 8.6),
valuerange = (5e-9, 1000),
value = Param(unit='mbar'),
)
Mod('vso',
'frappy_psi.ionopimax.VoltagePower',
'voltage power output',
target = 24,
export = False,
)

View File

@@ -4,4 +4,4 @@ logdir = ./log
piddir = ./pid
confdir = ./cfg
comlog = True
omit_unchanged_within = 60

View File

@@ -1,16 +0,0 @@
Node('hcptest.psi.ch',
'high voltage supply test',
'tcp://5000',
)
Mod('io',
'frappy_psi.hcp.IO',
'hcp communication',
uri='serial:///dev/tty.usbserial-21440?baudrate=9600',
)
Mod('voltage',
'frappy_psi.hcp.Voltage',
'fug hcp 14-6500 voltage',
io='io',
)

View File

@@ -6,8 +6,7 @@ Node('LscSIM.psi.ch',
Mod('io',
'frappy_psi.ls370res.StringIO',
'io for Ls370',
# uri = 'localhost:2089',
uri = 'linse-976d-ts:3007',
uri = 'localhost:2089',
)
Mod('sw',
'frappy_psi.ls370res.Switcher',
@@ -18,7 +17,7 @@ Mod('res1',
'frappy_psi.ls370res.ResChannel',
'resistivity chan 1',
vexc = '2mV',
channel = 2,
channel = 1,
switcher = 'sw',
)
Mod('res2',

View File

@@ -10,6 +10,7 @@ Mod('sea_main',
Mod('te',
'frappy_psi.sea.SeaDrivable', '',
io = 'sea_main',
meaning=['temperature', 20],
sea_object = 'te',
meaning=('temperature', 11),
)

View File

@@ -1,15 +1,21 @@
Node('haake.frappy.psi.ch',
'additional haake waterbath',
Node('haakeuro.config.sea.psi.ch',
'Haake thermostat + Eurotherm controller',
)
Mod('haake_io',
'frappy_psi.haake.HaakeIO',
'',
uri='sans-sample-ts:3006',
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for haakeuro.config',
config = 'haake.config',
service = 'main',
)
Mod('T2',
'frappy_psi.haake.TemperatureLoop',
'second haake',
io = 'haake_io',
Mod('th',
'frappy_psi.sea.SeaDrivable', '',
meaning = ('temperature', 10),
io = 'sea_main',
sea_object = 'th',
extra_modules=['t2'],
)
Mod('ts',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
single_module='th.t2',
)

View File

@@ -10,12 +10,11 @@ Mod('sea_main',
)
Mod('tt',
'frappy_psi.sea.LscDrivable', '',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
sensor_path='tm',
set_path='set',
rel_paths=['tm', '.', 'set', 'dblctrl'],
)
Mod('cc',

View File

@@ -10,12 +10,11 @@ Mod('sea_main',
)
Mod('tt',
'frappy_psi.sea.LscDrivable', '',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
sensor_path='tm',
set_path='set',
rel_paths=['tm', '.', 'set', 'dblctrl'],
)
Mod('cc',

View File

@@ -10,12 +10,11 @@ Mod('sea_main',
)
Mod('tt',
'frappy_psi.sea.LscDrivable', '',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
sensor_path='tm',
set_path='set',
rel_paths=['tm', '.', 'set', 'dblctrl'],
)
Mod('cc',

View File

@@ -10,12 +10,11 @@ Mod('sea_main',
)
Mod('tt',
'frappy_psi.sea.LscDrivable', '',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
sensor_path='tm',
set_path='set',
rel_paths=['tm', '.', 'set', 'dblctrl'],
)
Mod('cc',

View File

@@ -10,12 +10,11 @@ Mod('sea_main',
)
Mod('tt',
'frappy_psi.sea.LscDrivable', '',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
sensor_path='tm',
set_path='set',
rel_paths=['tm', '.', 'set', 'dblctrl'],
)
Mod('cc',

View File

@@ -10,12 +10,11 @@ Mod('sea_main',
)
Mod('tt',
'frappy_psi.sea.LscDrivable', '',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
sensor_path='tm',
set_path='set',
rel_paths=['tm', '.', 'set', 'dblctrl'],
)
Mod('pauto',

View File

@@ -14,8 +14,7 @@ Mod('tt',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
rel_paths=['main', '.', 'set'],
value=Param(unit='K'),
rel_paths=['tt', 'set'],
)
Mod('T_ccr',
@@ -23,7 +22,6 @@ Mod('T_ccr',
io='sea_main',
sea_object='tt',
rel_paths=['ccr'],
value=Param(unit='K'),
)
Mod('jtccr',
@@ -103,35 +101,30 @@ Mod('p1',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='p1',
value=Param(unit='mbar'),
)
Mod('p2',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='p2',
value=Param(unit='mbar'),
)
Mod('p3',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='p3',
value=Param(unit='mbar'),
)
Mod('p4',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='p4',
value=Param(unit='mbar'),
)
Mod('pressreg',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='pressreg',
value=Param(unit='mbar'),
)
Mod('epc',

View File

@@ -1,224 +0,0 @@
Node('leiden.psi.ch',
'''Leiden Dilution''',
)
ah2700_uri = 'linse-leiden-ts:3002' # used in cfg/addons/ahtwo_cfg.pt
ls370_uri = 'linse-leiden-ts:3004' # used in ~/sea/tcl/leiden.config
tcs_uri = 'linse-leiden-ts:3005'
#nanov_uri = 'linse-leiden-ts:3006' # used in ~/sea/tcl/leiden.config
k2601b_uri = 'linse-leiden-ts:3006' # used for HC experiment as heater
dilhtr_uri = 'linse-leiden-ts:3007'
srbridge_uri = 'linse-leiden-ts:3008'
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for leiden.config',
config = 'leiden.config',
service = 'main',
)
for name in ['T3K', 'Tstill', 'T50mK', 'Tmxlow', 'Tmxhigh', 'Tmxcx', 'Tblueo',
'Tpt50', 'Tpt3high', 'Tpt3low', 'Twhite', 'Tgreen']:
mname = name.replace('T','T_')
Mod(mname,
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='tt',
rel_paths=[name],
value=Param(unit='K'),
extra_modules = ['raw'],
)
Mod(name.replace('T', 'R_'),
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
value=Param(unit='Ohm'),
single_module=f'{mname}.raw'
)
#Mod('cmn',
# 'frappy_psi.sea.SeaReadable', '',
# io = 'sea_main',
# sea_object = 'cmn',
# extra_modules = ['u1', 'u2', 'temp'],
#)
#Mod('T_cmn',
# 'frappy_psi.sea.SeaReadable', '',
# io='sea_main',
# value=Param(unit='K'),
# single_module='cmn.temp',
#)
#Mod('V_fixp',
# 'frappy_psi.sea.SeaReadable', '',
# io='sea_main',
# value=Param(unit='V'),
# single_module='cmn.u2',
#)
#Mod('V_cmn',
# 'frappy_psi.sea.SeaReadable', '',
# io='sea_main',
# value=Param(unit='V'),
# single_module='cmn.u1',
#)
Mod('tcs_io',
'frappy_psi.tcs.IO',
'tcs communication',
uri=tcs_uri,
)
Mod('still_htr',
'frappy_psi.tcs.Heater',
'still heater',
io='tcs_io',
channel=2,
)
Mod('mix_io',
'frappy_psi.dilhtr.IO',
'dilhtr communication',
uri=dilhtr_uri,
)
Mod('mix_htr',
'frappy_psi.dilhtr.WrappedHeater',
'mixing chamber heater',
io='mix_io',
)
Mod('drive_mix',
'frappy_psi.picontrol.PIctrl',
'controlled mix ch. temperature',
input_module = 'T_mxlow',
output_module = 'mix_htr',
output_min = 0,
output_max = 0.02,
p = 5,
itime = 60,
)
#Mod('drive_cmn',
# 'frappy_psi.picontrol.PIctrl',
# 'controlled cmn temperature',
# input_module = 'T_cmn',
# output_module = 'mix_htr',
# output_min = 0,
# output_max = 3e-2,
# p = 2,
# itime = 120,
# )
#Mod('drive_fixp',
# 'frappy_psi.picontrol.PI',
# 'controlled fixpoint voltage',
# value=Param(unit='V'),
# input_module = 'V_fixp',
# output_module = 'drive_mix',
# output_min = 0.0,
# output_max = 0.01,
# p = 1,
# itime = 120,
# )
Mod('simio',
'frappy_psi.bridge.BridgeIO',
'communication to sim900',
uri=srbridge_uri,
)
Mod('res1',
'frappy_psi.bridge.Resistance',
'please add description',
io='simio',
port=1,
)
Mod('res2',
'frappy_psi.bridge.Resistance',
'please add description',
io='simio',
port=3,
)
Mod('phase1',
'frappy_psi.bridge.Phase',
'please add description',
resistance='res1',
)
Mod('phase2',
'frappy_psi.bridge.Phase',
'please add description',
resistance='res2',
)
Mod('dev1',
'frappy_psi.bridge.Deviation',
'please add description',
resistance='res1',
)
Mod('dev2',
'frappy_psi.bridge.Deviation',
'please add description',
resistance='res2',
)
Mod('vsource_io',
'frappy_psi.k2601b.K2601bIO',
'source meter',
# uri = '129.129.156.90:5025',
uri = k2601b_uri,
)
Mod('source',
'frappy_psi.k2601b.SourceMeter'
'',
description = "keithley sourcemeter",
mode = 2,
vlimit = 0.5,
ilimit = .0005,
io = 'vsource_io',
)
Mod('hvolt',
'frappy_psi.k2601b.Voltage'
'',
description = "Heater Voltage",
active = False,
limit = 1.0,
target = 0.0,
sourcemeter = 'source',
io = 'vsource_io',
)
Mod('hcur',
'frappy_psi.k2601b.Current'
'',
description = "Heater Current Source",
active = True,
limit = 0.0001,
target = 0.0,
sourcemeter = 'source',
io = 'vsource_io',
)
Mod('hres',
'frappy_psi.k2601b.Resistivity'
'',
description = "Heater Resistance",
io = 'vsource_io',
)
Mod('hpow',
'frappy_psi.k2601b.Power'
'',
description = "Heater Power",
io = 'vsource_io',
)

View File

@@ -10,12 +10,11 @@ Mod('sea_main',
)
Mod('tt',
'frappy_psi.sea.LscDrivable', '',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
sensor_path='tm',
set_path='set',
rel_paths=['tm', '.', 'set', 'dblctrl'],
)
Mod('cc',

View File

@@ -10,12 +10,11 @@ Mod('sea_main',
)
Mod('tt',
'frappy_psi.sea.LscDrivable', '',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
sensor_path='tm',
set_path='set',
rel_paths=['tm', '.', 'set', 'dblctrl'],
)
Mod('cc',

View File

@@ -10,12 +10,11 @@ Mod('sea_main',
)
Mod('tt',
'frappy_psi.sea.LscDrivable', '',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
sensor_path='tm',
set_path='set',
rel_paths=['tm', '.', 'set', 'dblctrl'],
)
Mod('cc',

View File

@@ -8,12 +8,11 @@ Mod('sea_main',
service = 'main',
)
Mod('tt',
'frappy_psi.sea.LscDrivable', '',
io='sea_main',
'frappy_psi.sea.SeaDrivable', '',
io = 'sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
sensor_path='tm',
set_path='set',
sea_object = 'tt',
rel_paths=['tm', '.', 'set', 'dblctrl'],
)
Mod('cc',
'frappy_psi.sea.SeaReadable', '',

View File

@@ -10,12 +10,11 @@ Mod('sea_main',
)
Mod('tt',
'frappy_psi.sea.LscDrivable', '',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
sensor_path='tm',
set_path='set',
rel_paths=['tm', '.', 'set', 'dblctrl'],
)
Mod('cc',

View File

@@ -10,12 +10,11 @@ Mod('sea_main',
)
Mod('tt',
'frappy_psi.sea.LscDrivable', '',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
sensor_path='tm',
set_path='set',
rel_paths=['tm', '.', 'set', 'dblctrl'],
)
Mod('th',

View File

@@ -10,13 +10,12 @@ Mod('sea_main',
)
Mod('tt',
'frappy_psi.sea.LscDrivable', '',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
sensor_path='tm',
set_path='set',
)
rel_paths=['tm', '.', 'set', 'dblctrl'],
)
Mod('th',
'frappy_psi.sea.SeaReadable',

View File

@@ -15,12 +15,11 @@ Mod('sea_main',
#)
Mod('tt',
'frappy_psi.sea.LscDrivable', '',
io='sea_main',
'frappy_psi.sea.SeaDrivable', '',
meaning=['temperature_regulation', 27],
io='sea_main',
sea_object='tt',
sensor_path='tm',
set_path='set',
rel_paths=['tm', '.', 'set', 'dblctrl'],
)
Mod('th',
@@ -35,8 +34,8 @@ Mod('ts',
'frappy_psi.parmod.Converging',
'test for parmod',
unit='K',
read='th.value',
write='th.setsamp',
value_param='th.value',
target_param='th.setsamp',
meaning=['temperature', 20],
settling_time=20,
tolerance=1,

View File

@@ -10,12 +10,11 @@ Mod('sea_main',
)
Mod('tt',
'frappy_psi.sea.LscDrivable', '',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
sensor_path='tm',
set_path='set',
rel_paths=['tm', '.', 'set', 'dblctrl'],
)
Mod('cc',

View File

@@ -2,6 +2,8 @@ Node('mb11.psi.ch',
'MB11 11 Tesla - 100 mm cryomagnet',
)
sea_cfg = 'mb11.config'
Mod('itc1',
'frappy_psi.mercury.IO',
'ITC for heat exchanger and pressures',

228
cfg/main/mb11std_cfg.py Normal file
View File

@@ -0,0 +1,228 @@
Node('mb11.psi.ch',
'MB11 11 Tesla - 100 mm cryomagnet',
)
Mod('itc1',
'frappy_psi.mercury.IO',
'ITC for heat exchanger and pressures',
uri='mb11-ts:3001',
)
Mod('itc2',
'frappy_psi.mercury.IO',
'ITC for neck and nv heaters',
uri='mb11-ts:3002',
)
Mod('ips',
'frappy_psi.mercury.IO',
'IPS for magnet and levels',
uri='mb11-ts:3003',
)
Mod('T_stat',
'frappy_psi.mercury.TemperatureAutoFlow',
'static heat exchanger temperature',
meaning=['temperature_regulation', 27],
output_module='htr_stat',
needle_valve='p_stat',
slot='DB6.T1',
io='itc1',
tolerance=0.1,
flowpars=((1,5), (2, 20)),
)
Mod('htr_stat',
'frappy_psi.mercury.HeaterOutput',
'static heat exchanger heater',
slot='DB1.H1',
io='itc1',
)
Mod('ts',
'frappy_psi.mercury.TemperatureLoop',
'sample temperature',
output_module='htr_sample',
slot='MB1.T1',
io='itc1',
tolerance=1.0,
visibility='expert',
)
Mod('htr_sample',
'frappy_psi.mercury.HeaterOutput',
'sample stick heater power',
slot='MB0.H1',
io='itc1',
)
Mod('p_stat',
'frappy_psi.mercury.PressureLoop',
'static needle valve pressure',
output_module='pos_stat',
settling_time=60.0,
slot='DB5.P1',
io='itc1',
tolerance=1.0,
value=Param(
unit='mbar_flow',
),
)
Mod('pos_stat',
'frappy_psi.mercury.ValvePos',
'static needle valve position',
slot='DB5.P1,DB3.G1',
io='itc1',
)
Mod('T_dyn',
'frappy_psi.mercury.TemperatureAutoFlow',
'dynamic heat exchanger temperature',
output_module='htr_dyn',
needle_valve='p_dyn',
slot='DB7.T1',
io='itc1',
tolerance=0.1,
)
Mod('htr_dyn',
'frappy_psi.mercury.HeaterOutput',
'dynamic heat exchanger heater',
slot='DB2.H1',
io='itc1',
)
Mod('p_dyn',
'frappy_psi.mercury.PressureLoop',
'dynamic needle valve pressure',
output_module='pos_dyn',
settling_time=60.0,
slot='DB8.P1',
io='itc1',
tolerance=1.0,
value=Param(
unit='mbar_flow',
),
)
Mod('pos_dyn',
'frappy_psi.mercury.ValvePos',
'dynamic needle valve position',
slot='DB8.P1,DB4.G1',
io='itc1',
)
Mod('mf',
'frappy_psi.ips_mercury.Field',
'magnetic field',
slot='GRPZ',
io='ips',
tolerance=0.001,
wait_stable_field=60.0,
target=Param(
max=11.0,
),
persistent_limit=11.1,
)
Mod('lev',
'frappy_psi.mercury.HeLevel',
'LHe level',
slot='DB1.L1',
io='ips',
)
Mod('n2lev',
'frappy_psi.mercury.N2Level',
'LN2 level',
slot='DB1.L1',
io='ips',
)
Mod('T_neck1',
'frappy_psi.mercury.TemperatureLoop',
'neck heater 1 temperature',
output_module='htr_neck1',
slot='MB1.T1',
io='itc2',
tolerance=1.0,
)
Mod('htr_neck1',
'frappy_psi.mercury.HeaterOutput',
'neck heater 1 power',
slot='MB0.H1',
io='itc2',
)
Mod('T_neck2',
'frappy_psi.mercury.TemperatureLoop',
'neck heater 2 temperature',
output_module='htr_neck2',
slot='DB6.T1',
io='itc2',
tolerance=1.0,
)
Mod('htr_neck2',
'frappy_psi.mercury.HeaterOutput',
'neck heater 2 power',
slot='DB1.H1',
io='itc2',
)
Mod('T_nvs',
'frappy_psi.mercury.TemperatureLoop',
'static needle valve temperature',
output_module='htr_nvs',
slot='DB7.T1',
io='itc2',
tolerance=0.1,
)
Mod('htr_nvs',
'frappy_psi.mercury.HeaterOutput',
'static needle valve heater power',
slot='DB2.H1',
io='itc2',
)
Mod('T_nvd',
'frappy_psi.mercury.TemperatureLoop',
'dynamic needle valve heater temperature',
output_module='htr_nvd',
slot='DB8.T1',
io='itc2',
tolerance=0.1,
)
Mod('htr_nvd',
'frappy_psi.mercury.HeaterOutput',
'dynamic needle valve heater power',
slot='DB3.H1',
io='itc2',
)
Mod('T_coil',
'frappy_psi.mercury.TemperatureSensor',
'coil temperature',
slot='MB1.T1',
io='ips',
)
Mod('om_io',
'frappy_psi.phytron.PhytronIO',
'dom motor IO',
uri='mb11-ts.psi.ch:3004',
)
Mod('om',
'frappy_psi.phytron.Motor',
'stick rotation, typically used for omega',
io='om_io',
target_min=-360,
target_max=360,
encoder_mode='NO',
target=Param(min=-360, max=360),
)

View File

@@ -10,12 +10,11 @@ Mod('sea_main',
)
Mod('tt',
'frappy_psi.sea.LscDrivable', '',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
sensor_path='tm',
set_path='set',
rel_paths=['tm', '.', 'set', 'dblctrl'],
)
Mod('cc',

View File

@@ -10,12 +10,11 @@ Mod('sea_main',
)
Mod('tt',
'frappy_psi.sea.LscDrivable', '',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
sensor_path='tm',
set_path='set',
rel_paths=['tm', '.', 'set', 'dblctrl'],
)
Mod('cc',

View File

@@ -10,12 +10,11 @@ Mod('sea_main',
)
Mod('tt',
'frappy_psi.sea.LscDrivable', '',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
sensor_path='tm',
set_path='set',
rel_paths=['tm', '.', 'set', 'dblctrl'],
)
Mod('cc',

View File

@@ -10,12 +10,11 @@ Mod('sea_main',
)
Mod('tt',
'frappy_psi.sea.LscDrivable', '',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
sensor_path='tm',
set_path='set',
rel_paths=['tm', '.', 'set', 'dblctrl'],
)
Mod('cc',

View File

@@ -10,12 +10,11 @@ Mod('sea_main',
)
Mod('tt',
'frappy_psi.sea.LscDrivable', '',
io='sea_main',
'frappy_psi.sea.SeaDrivable', '',
io = 'sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
sensor_path='tm',
set_path='set',
sea_object = 'tt',
rel_paths=['tm', '.', 'set', 'dblctrl'],
)
Mod('cc',

17
cfg/main/ori7test_cfg.py Normal file
View File

@@ -0,0 +1,17 @@
from frappy_psi.ccracks import Rack
Node('ori7test.psi.ch',
'ORI7 test',
'tcp://5000'
)
rack = Rack(Mod)
with rack.lakeshore() as ls:
ls.sensor('Ts', channel='C', calcurve='x186350')
ls.loop('T', channel='B', calcurve='x174786')
ls.heater('htr', '100W', 100)
rack.ccu(he=True, n2=True)
rack.hepump()

View File

@@ -1,20 +0,0 @@
Node('TFA10.psi.ch',
'thermofisher water bath',
'tcp://5000',
)
Mod('io',
'frappy_psi.thermofisher.ThermFishIO',
'connection for ThermoFisher A10',
uri='tcp://ldm-fi-ts:3002',
)
Mod('T',
'frappy_psi.thermofisher.TemperatureLoopA10',
'holder temperature',
io='io',
meaning=['temperature', 20],
target=Param(max=100),
tolerance=0.5,
settling_time=20,
)

View File

@@ -10,12 +10,11 @@ Mod('sea_main',
)
Mod('tt',
'frappy_psi.sea.LscDrivable', '',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
sensor_path='tm',
set_path='set',
rel_paths=['tm', '.', 'set', 'dblctrl'],
)
Mod('cc',

View File

@@ -170,20 +170,18 @@ Mod('htr_nvd',
# Motor controller is not yet available!
#
'''
Mod('om_io',
'frappy_psi.phytron.PhytronIO',
'dom motor IO',
uri='mb11-ts.psi.ch:3004',
)
#Mod('om_io',
# 'frappy_psi.phytron.PhytronIO',
# 'dom motor IO',
# uri='mb11-ts.psi.ch:3004',
#)
Mod('om',
'frappy_psi.phytron.Motor',
'stick rotation, typically used for omega',
io='om_io',
target_min=-180,
target_max=360,
encoder_mode='NO',
target=Param(min=-180, max=360)
)
'''
#Mod('om',
# 'frappy_psi.phytron.Motor',
# 'stick rotation, typically used for omega',
# io='om_io',
# target_min=-180,
# target_max=360,
# encoder_mode='NO',
# target=Param(min=-180, max=360)
#)

View File

@@ -1,100 +0,0 @@
Node('muwaba.psi.ch',
'multi waterbath',
'tcp://5000',
)
Mod('wio_1',
'frappy_psi.thermofisher.ThermFishIO',
'connection for water bath',
uri='serial:///dev/ttyUSB0?baudrate=19200', # 3001 = Port 1, 3002 = Port 2 ...
)
Mod('wio_2',
'frappy_psi.thermofisher.ThermFishIO',
'connection for water bath',
uri='serial:///dev/ttyUSB1?baudrate=19200', # 3001 = Port 1, 3002 = Port 2 ...
)
Mod('wio_3',
'frappy_psi.thermofisher.ThermFishIO',
'connection for water bath',
uri='serial:///dev/ttyUSB2?baudrate=19200', # 3001 = Port 1, 3002 = Port 2 ...
)
Mod('Tbath_1',
'frappy_psi.thermofisher.TemperatureLoopA10',
'water_bath_1',
io='wio_1',
control_active=0,
target=25,
tolerance=0.1,
settling_time=20,
)
Mod('Tbath_2',
'frappy_psi.thermofisher.TemperatureLoopA10',
'water_bath_2',
io='wio_2',
control_active=0,
target=25,
tolerance=0.1,
settling_time=20,
)
Mod('Tbath_3',
'frappy_psi.thermofisher.TemperatureLoopA10',
'water_bath_3',
io='wio_3',
control_active=0,
target=25,
tolerance=0.1,
settling_time=20,
)
Mod('valve_1',
'frappy_psi.ionopimax.DigitalOutput',
'valve_for_fast_water_temperature_changing',
addr = 'o1',
target = 0,
)
Mod('valve_2',
'frappy_psi.ionopimax.DigitalOutput',
'valve_for_fast_water_temperature_changing',
addr = 'o2',
target = 0,
)
Mod('valve_3',
'frappy_psi.ionopimax.DigitalOutput',
'valve_for_fast_water_temperature_changing',
addr = 'o3',
target = 0,
)
Mod('temp_sensor_tc',
'frappy_psi.ionopimax.SimpleVoltageInput',
'temperatur_sensor_sample',
rawrange = (0.0, 10.0),
valuerange = (5.0, 90.0),
addr = 'ai1_mv',
meaning = ['temperature', 20],
value = Param(unit='degC'),
)
Mod('temp_sensor_pt1000',
'frappy_psi.ionopimax.SimpleVoltageInput',
'temperatur_sensor_sample',
rawrange = (0.0, 10.0),
valuerange = (5.0, 90.0),
value = Param(unit='degC'),
addr = 'ai2_mv',
)
Mod('switcher',
'frappy_psi.muwaba.Switcher',
'waterbath switcher',
valve1 = 'valve_1',
valve2 = 'valve_2',
valve3 = 'valve_3',
)

View File

@@ -1,23 +0,0 @@
Node('haake2.config.sea.psi.ch',
'Haake thermostat + Eurotherm controller',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for haakeuro.config',
config = 'haake2.config',
service = 'main',
)
Mod('th',
'frappy_psi.sea.SeaDrivable', '',
meaning = ('temperature', 10),
io = 'sea_main',
sea_object = 'th',
extra_modules=['t2'],
value=Param(unit='degC'),
)
Mod('ts',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
single_module='th.t2',
value=Param(unit='degC'),
)

View File

@@ -1,17 +0,0 @@
Node('haake.config.sea.psi.ch',
'Haake thermostat',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for haakeuro.config',
config = 'haake.config',
service = 'main',
)
Mod('th',
'frappy_psi.sea.SeaDrivable', '',
meaning = ('temperature', 10),
io = 'sea_main',
sea_object = 'th',
extra_modules=['t2'],
value=Param(unit='degC'),
)

View File

@@ -1,21 +1,14 @@
{"capff": {"base": "/capff", "params": [
{"path": "", "type": "none", "kids": 7},
{"path": "send", "type": "text", "readonly": false, "cmd": "capff send", "visibility": 3},
{"cap": {"base": "/cap", "params": [{"path": "", "type": "none", "kids": 8},
{"path": "send", "type": "text", "readonly": false, "cmd": "cap send", "visibility": 3},
{"path": "status", "type": "text", "visibility": 3},
{"path": "cap", "type": "float"},
{"path": "loss", "type": "float"},
{"path": "period", "type": "float", "readonly": false, "cmd": "capff period"},
{"path": "V", "type": "float", "readonly": false, "cmd": "capff V"},
{"path": "average", "type": "int", "readonly": false, "cmd": "capff average"}]},
"capslopeff": {"base": "/capslopeff", "params": [
{"path": "", "type": "float", "kids": 6},
{"path": "send", "type": "text", "readonly": false, "cmd": "capslopeff send", "visibility": 3},
{"path": "period", "type": "float", "readonly": false, "cmd": "cap period"},
{"path": "V", "type": "float", "readonly": false, "cmd": "cap V"},
{"path": "average", "type": "int", "readonly": false, "cmd": "cap average"}]}, "capslope": {"base": "/capslope", "params": [{"path": "", "type": "float", "kids": 6},
{"path": "send", "type": "text", "readonly": false, "cmd": "capslope send", "visibility": 3},
{"path": "status", "type": "text", "visibility": 3},
{"path": "node", "type": "text", "readonly": false, "cmd": "capslopeff node"},
{"path": "unit", "type": "float", "readonly": false, "cmd": "capslopeff unit", "description": "unit=60: mainunits/minutes, unit=1: mainunits/sec"},
{"path": "ref", "type": "float", "readonly": false, "cmd": "capslopeff ref"},
{"path": "bufperiod", "type": "float", "readonly": false, "cmd": "capslopeff bufperiod"}]},
"addonlock_ah2550": {"base": "/addonlock_ah2550", "params": [
{"path": "", "type": "text", "readonly": false, "cmd": "addonlock_ah2550 = "}]}}
{"path": "node", "type": "text", "readonly": false, "cmd": "capslope node"},
{"path": "unit", "type": "float", "readonly": false, "cmd": "capslope unit", "description": "unit=60: mainunits/minutes, unit=1: mainunits/sec"},
{"path": "ref", "type": "float", "readonly": false, "cmd": "capslope ref"},
{"path": "buffersize", "type": "float", "readonly": false, "cmd": "capslope buffersize"}]}}

View File

@@ -1,5 +1,4 @@
{"cap": {"base": "/cap", "params": [
{"path": "", "type": "none", "kids": 8},
{"cap": {"base": "/cap", "params": [{"path": "", "type": "none", "kids": 8},
{"path": "send", "type": "text", "readonly": false, "cmd": "cap send", "visibility": 3},
{"path": "status", "type": "text", "visibility": 3},
{"path": "cap", "type": "float"},
@@ -7,16 +6,10 @@
{"path": "period", "type": "float", "readonly": false, "cmd": "cap period"},
{"path": "freq", "type": "float", "readonly": false, "cmd": "cap freq"},
{"path": "V", "type": "float", "readonly": false, "cmd": "cap V"},
{"path": "average", "type": "int", "readonly": false, "cmd": "cap average"}]},
"capslope": {"base": "/capslope", "params": [
{"path": "", "type": "float", "kids": 6},
{"path": "average", "type": "int", "readonly": false, "cmd": "cap average"}]}, "capslope": {"base": "/capslope", "params": [{"path": "", "type": "float", "kids": 6},
{"path": "send", "type": "text", "readonly": false, "cmd": "capslope send", "visibility": 3},
{"path": "status", "type": "text", "visibility": 3},
{"path": "node", "type": "text", "readonly": false, "cmd": "capslope node"},
{"path": "unit", "type": "float", "readonly": false, "cmd": "capslope unit", "description": "unit=60: mainunits/minutes, unit=1: mainunits/sec"},
{"path": "ref", "type": "float", "readonly": false, "cmd": "capslope ref"},
{"path": "bufperiod", "type": "float", "readonly": false, "cmd": "capslope bufperiod"}]},
"addonlock_ah2700": {"base": "/addonlock_ah2700", "params": [
{"path": "", "type": "text", "readonly": false, "cmd": "addonlock_ah2700 = "}]}}
{"path": "buffersize", "type": "float", "readonly": false, "cmd": "capslope buffersize"}]}}

View File

@@ -1,29 +0,0 @@
{"cp2800": {"base": "/cp2800", "params": [
{"path": "", "type": "bool", "readonly": false, "cmd": "cp2800", "kids": 27},
{"path": "send", "type": "text", "readonly": false, "cmd": "cp2800 send", "visibility": 3},
{"path": "status", "type": "text", "visibility": 3},
{"path": "comp_running_hrs", "type": "float"},
{"path": "cpu_t", "type": "float"},
{"path": "motor_current_a", "type": "float"},
{"path": "inp_water_t", "type": "float"},
{"path": "inp_water_t_min", "type": "float"},
{"path": "inp_water_t_max", "type": "float"},
{"path": "out_water_t", "type": "float"},
{"path": "out_water_t_min", "type": "float"},
{"path": "out_water_t_max", "type": "float"},
{"path": "helium_t", "type": "float"},
{"path": "helium_t_min", "type": "float"},
{"path": "helium_t_max", "type": "float"},
{"path": "oil_t", "type": "float"},
{"path": "oil_t_min", "type": "float"},
{"path": "oil_t_max", "type": "float"},
{"path": "high_side_p", "type": "float"},
{"path": "high_side_p_min", "type": "float"},
{"path": "high_side_p_max", "type": "float"},
{"path": "high_side_p_avg", "type": "float"},
{"path": "low_side_p", "type": "float"},
{"path": "low_side_p_min", "type": "float"},
{"path": "low_side_p_max", "type": "float"},
{"path": "low_side_p_avg", "type": "float"},
{"path": "high_side_delta_p_avg", "type": "float"},
{"path": "high_side_bounce", "type": "float"}]}}

View File

@@ -1,14 +0,0 @@
Node('cp1000.addon.sea.psi.ch',
'''dry system''',
)
Mod('sea_addons',
'frappy_psi.sea.SeaClient',
'addons sea connection for cp1000.addon',
config = 'cp1000.addon',
service = 'addons',
)
Mod('cp2800',
'frappy_psi.sea.SeaWritable', '',
io = 'sea_addons',
sea_object = 'cp2800',
)

View File

@@ -18,7 +18,7 @@
{"path": "heaterselect", "type": "enum", "enum": {"sample": 0, "mix": 1, "mix(temporarely)": 2}, "readonly": false, "cmd": "ts heaterselect"},
{"path": "control", "type": "enum", "enum": {"off": 0, "sample": 6, "mix": 5, "samplehtr": 8}, "readonly": false, "cmd": "ts control", "description": "click off to reload list"},
{"path": "heatermode", "type": "enum", "enum": {"disabled": -1, "off": 0, "on": 1}, "readonly": false, "cmd": "ts heatermode"},
{"path": "heaterrange", "type": "enum", "enum": {"off": 0, "2uW": 1, "20uW": 2, "200uW": 3, "2mW": 4, "20mW": 5}, "readonly": false, "cmd": "ts heaterrange"},
{"path": "heaterrange", "type": "enum", "enum": {"2uW": 1, "20uW": 2, "200uW": 3, "2mW": 4, "20mW": 5}, "readonly": false, "cmd": "ts heaterrange"},
{"path": "autoheater", "type": "bool", "readonly": false, "cmd": "ts autoheater", "description": "automatic heater range", "kids": 12},
{"path": "autoheater/wlp0", "type": "float", "readonly": false, "cmd": "ts autoheater/wlp0", "description": "weak link base temperature (used for auto heater)"},
{"path": "autoheater/wlp1", "type": "float", "readonly": false, "cmd": "ts autoheater/wlp1", "description": "weak link temperature at 1 uW (used for auto heater)"},
@@ -292,7 +292,7 @@
{"path": "V3A", "type": "int", "readonly": false, "cmd": "dil V3A", "visibility": 3},
{"path": "Roots", "type": "int", "readonly": false, "cmd": "dil Roots", "visibility": 3},
{"path": "Aux", "type": "int", "readonly": false, "cmd": "dil Aux", "visibility": 3},
{"path": "He3", "type": "int", "readonly": false, "cmd": "dil He3"},
{"path": "He3", "type": "int", "readonly": false, "cmd": "dil He3", "visibility": 3},
{"path": "closedelay", "type": "float", "readonly": false, "cmd": "dil closedelay", "visibility": 3},
{"path": "extVersion", "type": "int", "readonly": false, "cmd": "dil extVersion", "visibility": 3},
{"path": "pumpoff", "type": "int"},

View File

@@ -18,7 +18,7 @@
{"path": "heaterselect", "type": "enum", "enum": {"sample": 0, "mix": 1, "mix(temporarely)": 2}, "readonly": false, "cmd": "ts heaterselect"},
{"path": "control", "type": "enum", "enum": {"off": 0, "sample": 6, "mix": 5, "samplehtr": 8}, "readonly": false, "cmd": "ts control", "description": "click off to reload list"},
{"path": "heatermode", "type": "enum", "enum": {"disabled": -1, "off": 0, "on": 1}, "readonly": false, "cmd": "ts heatermode"},
{"path": "heaterrange", "type": "enum", "enum": {"off": 0, "2uW": 1, "20uW": 2, "200uW": 3, "2mW": 4, "20mW": 5}, "readonly": false, "cmd": "ts heaterrange"},
{"path": "heaterrange", "type": "enum", "enum": {"2uW": 1, "20uW": 2, "200uW": 3, "2mW": 4, "20mW": 5}, "readonly": false, "cmd": "ts heaterrange"},
{"path": "autoheater", "type": "bool", "readonly": false, "cmd": "ts autoheater", "description": "automatic heater range", "kids": 12},
{"path": "autoheater/wlp0", "type": "float", "readonly": false, "cmd": "ts autoheater/wlp0", "description": "weak link base temperature (used for auto heater)"},
{"path": "autoheater/wlp1", "type": "float", "readonly": false, "cmd": "ts autoheater/wlp1", "description": "weak link temperature at 1 uW (used for auto heater)"},
@@ -292,7 +292,7 @@
{"path": "V3A", "type": "int", "readonly": false, "cmd": "dil V3A", "visibility": 3},
{"path": "Roots", "type": "int", "readonly": false, "cmd": "dil Roots", "visibility": 3},
{"path": "Aux", "type": "int", "readonly": false, "cmd": "dil Aux", "visibility": 3},
{"path": "He3", "type": "int", "readonly": false, "cmd": "dil He3"},
{"path": "He3", "type": "int", "readonly": false, "cmd": "dil He3", "visibility": 3},
{"path": "closedelay", "type": "float", "readonly": false, "cmd": "dil closedelay", "visibility": 3},
{"path": "extVersion", "type": "int", "readonly": false, "cmd": "dil extVersion", "visibility": 3},
{"path": "pumpoff", "type": "int"},

View File

@@ -18,7 +18,7 @@
{"path": "heaterselect", "type": "enum", "enum": {"sample": 0, "mix": 1, "mix(temporarely)": 2}, "readonly": false, "cmd": "ts heaterselect"},
{"path": "control", "type": "enum", "enum": {"off": 0, "sample": 6, "mix": 5, "samplehtr": 8}, "readonly": false, "cmd": "ts control", "description": "click off to reload list"},
{"path": "heatermode", "type": "enum", "enum": {"disabled": -1, "off": 0, "on": 1}, "readonly": false, "cmd": "ts heatermode"},
{"path": "heaterrange", "type": "enum", "enum": {"off": 0, "2uW": 1, "20uW": 2, "200uW": 3, "2mW": 4, "20mW": 5}, "readonly": false, "cmd": "ts heaterrange"},
{"path": "heaterrange", "type": "enum", "enum": {"2uW": 1, "20uW": 2, "200uW": 3, "2mW": 4, "20mW": 5}, "readonly": false, "cmd": "ts heaterrange"},
{"path": "autoheater", "type": "bool", "readonly": false, "cmd": "ts autoheater", "description": "automatic heater range", "kids": 12},
{"path": "autoheater/wlp0", "type": "float", "readonly": false, "cmd": "ts autoheater/wlp0", "description": "weak link base temperature (used for auto heater)"},
{"path": "autoheater/wlp1", "type": "float", "readonly": false, "cmd": "ts autoheater/wlp1", "description": "weak link temperature at 1 uW (used for auto heater)"},
@@ -292,7 +292,7 @@
{"path": "V3A", "type": "int", "readonly": false, "cmd": "dil V3A", "visibility": 3},
{"path": "Roots", "type": "int", "readonly": false, "cmd": "dil Roots", "visibility": 3},
{"path": "Aux", "type": "int", "readonly": false, "cmd": "dil Aux", "visibility": 3},
{"path": "He3", "type": "int", "readonly": false, "cmd": "dil He3"},
{"path": "He3", "type": "int", "readonly": false, "cmd": "dil He3", "visibility": 3},
{"path": "closedelay", "type": "float", "readonly": false, "cmd": "dil closedelay", "visibility": 3},
{"path": "extVersion", "type": "int", "readonly": false, "cmd": "dil extVersion", "visibility": 3},
{"path": "pumpoff", "type": "int"},

View File

@@ -3,7 +3,7 @@
{"path": "unit", "type": "text", "readonly": false, "cmd": "th unit", "visibility": 3},
{"path": "t2", "type": "float"},
{"path": "set", "type": "float"},
{"path": "pumprunning", "type": "int", "readonly": false, "cmd": "th pumprunning"},
{"path": "running", "type": "int", "readonly": false, "cmd": "th running", "visibility": 3},
{"path": "extcontrol", "type": "int", "readonly": false, "cmd": "th extcontrol", "visibility": 3},
{"path": "relais", "type": "int", "visibility": 3},
{"path": "overtemp", "type": "int", "visibility": 3},

View File

@@ -1,160 +0,0 @@
{"th": {"base": "/th", "params": [
{"path": "", "type": "float", "readonly": false, "cmd": "run th", "kids": 26},
{"path": "unit", "type": "text", "readonly": false, "cmd": "th unit", "visibility": 3},
{"path": "t2", "type": "float"},
{"path": "set", "type": "float"},
{"path": "pumprunning", "type": "int", "readonly": false, "cmd": "th pumprunning"},
{"path": "extcontrol", "type": "int", "readonly": false, "cmd": "th extcontrol", "visibility": 3},
{"path": "relais", "type": "int", "visibility": 3},
{"path": "overtemp", "type": "int", "visibility": 3},
{"path": "lowlevel", "type": "int", "visibility": 3},
{"path": "pumpalarm", "type": "int", "visibility": 3},
{"path": "externalarm", "type": "int", "visibility": 3},
{"path": "coolalarm", "type": "int", "visibility": 3},
{"path": "sensor1alarm", "type": "int", "visibility": 3},
{"path": "sensor2alarm", "type": "int", "visibility": 3},
{"path": "reset", "type": "int", "readonly": false, "cmd": "th reset", "visibility": 3},
{"path": "with2sensors", "type": "int", "readonly": false, "cmd": "th with2sensors", "visibility": 3},
{"path": "upperLimit", "type": "float", "readonly": false, "cmd": "th upperLimit"},
{"path": "lowerLimit", "type": "float", "readonly": false, "cmd": "th lowerLimit"},
{"path": "tolerance", "type": "float", "readonly": false, "cmd": "th tolerance"},
{"path": "maxwait", "type": "int", "readonly": false, "cmd": "th maxwait"},
{"path": "settle", "type": "int", "readonly": false, "cmd": "th settle"},
{"path": "targetValue", "type": "float"},
{"path": "is_running", "type": "int", "visibility": 3},
{"path": "verbose", "type": "int", "readonly": false, "cmd": "th verbose", "visibility": 3},
{"path": "driver", "type": "text", "visibility": 3},
{"path": "creationCmd", "type": "text", "visibility": 3},
{"path": "status", "type": "text", "readonly": false, "cmd": "th status"}]},
"te": {"base": "/te", "params": [
{"path": "", "type": "float", "readonly": false, "cmd": "run te", "kids": 30},
{"path": "unit", "type": "text", "readonly": false, "cmd": "te unit", "visibility": 3},
{"path": "mode", "type": "int", "readonly": false, "cmd": "te mode"},
{"path": "model", "type": "text", "visibility": 3},
{"path": "pbPow", "type": "float", "visibility": 3},
{"path": "pbMin", "type": "float", "visibility": 3},
{"path": "pbScl", "type": "float", "visibility": 3},
{"path": "output", "type": "float"},
{"path": "position", "type": "float", "readonly": false, "cmd": "te position"},
{"path": "asymmetry", "type": "float", "readonly": false, "cmd": "te asymmetry", "visibility": 3},
{"path": "range", "type": "float", "readonly": false, "cmd": "te range", "visibility": 3},
{"path": "set", "type": "float", "readonly": false, "cmd": "te set"},
{"path": "rdonly", "type": "int", "readonly": false, "cmd": "te rdonly", "visibility": 3},
{"path": "task", "type": "text", "readonly": false, "cmd": "te task"},
{"path": "upperLimit", "type": "float", "readonly": false, "cmd": "te upperLimit"},
{"path": "lowerLimit", "type": "float", "readonly": false, "cmd": "te lowerLimit", "visibility": 3},
{"path": "tolerance", "type": "float", "readonly": false, "cmd": "te tolerance"},
{"path": "maxwait", "type": "int", "readonly": false, "cmd": "te maxwait"},
{"path": "settle", "type": "int", "readonly": false, "cmd": "te settle"},
{"path": "targetValue", "type": "float"},
{"path": "is_running", "type": "int", "visibility": 3},
{"path": "verbose", "type": "int", "readonly": false, "cmd": "te verbose", "visibility": 3},
{"path": "driver", "type": "text", "visibility": 3},
{"path": "creationCmd", "type": "text", "visibility": 3},
{"path": "status", "type": "text", "readonly": false, "cmd": "te status"},
{"path": "pb", "type": "float", "readonly": false, "cmd": "te pb"},
{"path": "ti", "type": "float", "readonly": false, "cmd": "te ti"},
{"path": "td", "type": "float", "readonly": false, "cmd": "te td"},
{"path": "manual", "type": "float", "readonly": false, "cmd": "te manual"},
{"path": "rate", "type": "float", "readonly": false, "cmd": "te rate"},
{"path": "workset", "type": "float", "readonly": false, "cmd": "te workset"}]},
"cc": {"base": "/cc", "params": [
{"path": "", "type": "bool", "kids": 96},
{"path": "send", "type": "text", "readonly": false, "cmd": "cc send", "visibility": 3},
{"path": "status", "type": "text", "visibility": 3},
{"path": "autodevice", "type": "bool", "readonly": false, "cmd": "cc autodevice"},
{"path": "fav", "type": "bool", "readonly": false, "cmd": "cc fav"},
{"path": "f", "type": "float", "visibility": 3},
{"path": "fs", "type": "enum", "enum": {"ok": 0, "no_sens": 1}, "readonly": false, "cmd": "cc fs", "visibility": 3},
{"path": "mav", "type": "bool", "readonly": false, "cmd": "cc mav"},
{"path": "fm", "type": "enum", "enum": {"idle": 0, "opening": 1, "closing": 2, "opened": 3, "closed": 4, "no_motor": 5}, "visibility": 3},
{"path": "fa", "type": "enum", "enum": {"fixed": 0, "controlled": 1, "automatic": 2, "offline": 3}, "readonly": false, "cmd": "cc fa", "visibility": 3},
{"path": "mp", "type": "float", "readonly": false, "cmd": "cc mp", "visibility": 3},
{"path": "msp", "type": "float", "visibility": 3},
{"path": "mmp", "type": "float", "visibility": 3},
{"path": "mc", "type": "float", "readonly": false, "cmd": "cc mc", "visibility": 3},
{"path": "mfc", "type": "float", "readonly": false, "cmd": "cc mfc", "visibility": 3},
{"path": "moc", "type": "float", "readonly": false, "cmd": "cc moc", "visibility": 3},
{"path": "mtc", "type": "float", "readonly": false, "cmd": "cc mtc", "visibility": 3},
{"path": "mtl", "type": "float", "visibility": 3},
{"path": "mft", "type": "float", "readonly": false, "cmd": "cc mft", "visibility": 3},
{"path": "mt", "type": "float", "visibility": 3},
{"path": "mo", "type": "float", "visibility": 3},
{"path": "mcr", "type": "float", "visibility": 3},
{"path": "mot", "type": "float", "visibility": 3},
{"path": "mw", "type": "float", "readonly": false, "cmd": "cc mw", "description": "correction pulse after automatic open", "visibility": 3},
{"path": "hav", "type": "enum", "type": "enum", "enum": {"none": 0, "int": 1, "ext": 2}, "readonly": false, "cmd": "cc hav"},
{"path": "h", "type": "float", "visibility": 3},
{"path": "hr", "type": "float", "visibility": 3},
{"path": "hc", "type": "float", "visibility": 3},
{"path": "hu", "type": "float", "visibility": 3},
{"path": "hh", "type": "float", "readonly": false, "cmd": "cc hh", "visibility": 3},
{"path": "hl", "type": "float", "readonly": false, "cmd": "cc hl", "visibility": 3},
{"path": "htf", "type": "float", "readonly": false, "cmd": "cc htf", "description": "meas. period in fast mode", "visibility": 3},
{"path": "hts", "type": "float", "readonly": false, "cmd": "cc hts", "description": "meas. period in slow mode", "visibility": 3},
{"path": "hd", "type": "float", "readonly": false, "cmd": "cc hd", "visibility": 3},
{"path": "hwr", "type": "float", "readonly": false, "cmd": "cc hwr", "visibility": 3},
{"path": "hem", "type": "float", "readonly": false, "cmd": "cc hem", "description": "sensor length in mm from top to empty pos.", "visibility": 3},
{"path": "hfu", "type": "float", "readonly": false, "cmd": "cc hfu", "description": "sensor length in mm from top to full pos.", "visibility": 3},
{"path": "hcd", "type": "enum", "enum": {"stop": 0, "fill": 1, "off": 2, "auto": 3, "manual": 7}, "readonly": false, "cmd": "cc hcd", "visibility": 3},
{"path": "hv", "type": "enum", "enum": {"fill_valve_off": 0, "filling": 1, "no_fill_valve": 2, "timeout": 3, "timeout1": 4}, "visibility": 3},
{"path": "hsf", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}, "visibility": 3},
{"path": "ha", "type": "bool", "readonly": false, "cmd": "cc ha", "visibility": 3},
{"path": "hm", "type": "bool", "visibility": 3},
{"path": "hf", "type": "enum", "enum": {"slow": 0, "fast": 1}, "readonly": false, "cmd": "cc hf", "visibility": 3},
{"path": "hbe", "type": "bool", "readonly": false, "cmd": "cc hbe", "visibility": 3},
{"path": "hmf", "type": "float", "visibility": 3},
{"path": "hms", "type": "float", "visibility": 3},
{"path": "hit", "type": "float", "readonly": false, "cmd": "cc hit", "visibility": 3},
{"path": "hft", "type": "int", "readonly": false, "cmd": "cc hft", "visibility": 3},
{"path": "hea", "type": "enum", "enum": {"0": 0, "1": 1, "6": 6}, "readonly": false, "cmd": "cc hea"},
{"path": "hch", "type": "int", "readonly": false, "cmd": "cc hch", "visibility": 3},
{"path": "hwr0", "type": "float", "readonly": false, "cmd": "cc hwr0", "visibility": 3},
{"path": "hem0", "type": "float", "readonly": false, "cmd": "cc hem0", "description": "sensor length in mm from top to empty pos.", "visibility": 3},
{"path": "hfu0", "type": "float", "readonly": false, "cmd": "cc hfu0", "description": "sensor length in mm from top to full pos.", "visibility": 3},
{"path": "hd0", "type": "float", "readonly": false, "cmd": "cc hd0", "description": "external sensor drive current (mA)", "visibility": 3},
{"path": "h0", "type": "float", "visibility": 3},
{"path": "hs0", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}, "visibility": 3},
{"path": "h1", "type": "float", "visibility": 3},
{"path": "hs1", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}, "visibility": 3},
{"path": "h2", "type": "float", "visibility": 3},
{"path": "hs2", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}, "visibility": 3},
{"path": "h3", "type": "float", "visibility": 3},
{"path": "hs3", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}, "visibility": 3},
{"path": "h4", "type": "float", "visibility": 3},
{"path": "hs4", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}, "visibility": 3},
{"path": "h5", "type": "float", "visibility": 3},
{"path": "hs5", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}, "visibility": 3},
{"path": "hfb", "type": "float", "visibility": 3},
{"path": "nav", "type": "enum", "type": "enum", "enum": {"none": 0, "int": 1, "ext": 2}, "readonly": false, "cmd": "cc nav"},
{"path": "nu", "type": "float", "visibility": 3},
{"path": "nl", "type": "float", "visibility": 3},
{"path": "nth", "type": "float", "readonly": false, "cmd": "cc nth", "visibility": 3},
{"path": "ntc", "type": "float", "readonly": false, "cmd": "cc ntc", "visibility": 3},
{"path": "ntm", "type": "float", "readonly": false, "cmd": "cc ntm", "visibility": 3},
{"path": "ns", "type": "enum", "enum": {"sens_ok": 0, "no_sens": 1, "short_circuit": 2, "upside_down": 3, "sens_warm": 4, "empty": 5}, "visibility": 3},
{"path": "na", "type": "bool", "readonly": false, "cmd": "cc na", "visibility": 3},
{"path": "nv", "type": "enum", "enum": {"fill_valve_off": 0, "filling": 1, "no_fill_valve": 2, "timeout": 3, "timeout1": 4, "boost": 5}, "visibility": 3},
{"path": "nc", "type": "enum", "enum": {"stop": 0, "fill": 1, "off": 2, "auto": 3}, "readonly": false, "cmd": "cc nc", "visibility": 3},
{"path": "nfb", "type": "float", "visibility": 3},
{"path": "cda", "type": "float"},
{"path": "cdb", "type": "float"},
{"path": "cba", "type": "float"},
{"path": "cbb", "type": "float"},
{"path": "cvs", "type": "int"},
{"path": "csp", "type": "int"},
{"path": "cdv", "type": "text", "readonly": false, "cmd": "cc cdv"},
{"path": "cic", "type": "text", "readonly": false, "cmd": "cc cic"},
{"path": "cin", "type": "text"},
{"path": "cds", "type": "enum", "enum": {"local": 0, "remote": 1, "loading": 2, "by_code": 3, "by_touch": 4}, "readonly": false, "cmd": "cc cds"},
{"path": "timing", "type": "bool", "readonly": false, "cmd": "cc timing"},
{"path": "tc", "type": "float", "visibility": 3},
{"path": "tn", "type": "float", "visibility": 3},
{"path": "th", "type": "float", "visibility": 3},
{"path": "tf", "type": "float", "visibility": 3},
{"path": "tm", "type": "float", "visibility": 3},
{"path": "tv", "type": "float", "visibility": 3},
{"path": "tq", "type": "float", "visibility": 3},
{"path": "bdl", "type": "float", "readonly": false, "cmd": "cc bdl"}]}}

View File

@@ -1,213 +0,0 @@
{"tt": {"base": "/tt", "params": [
{"path": "", "type": "int", "kids": 18},
{"path": "send", "type": "text", "readonly": false, "cmd": "tt send", "visibility": 3},
{"path": "status", "type": "text", "visibility": 3},
{"path": "autoscan", "type": "bool", "readonly": false, "cmd": "tt autoscan", "kids": 4},
{"path": "autoscan/synchronized", "type": "bool", "readonly": false, "cmd": "tt autoscan/synchronized"},
{"path": "autoscan/interval", "type": "text", "readonly": false, "cmd": "tt autoscan/interval"},
{"path": "autoscan/pause", "type": "text", "readonly": false, "cmd": "tt autoscan/pause"},
{"path": "autoscan/dwell", "type": "text", "readonly": false, "cmd": "tt autoscan/dwell"},
{"path": "T3K", "type": "float", "kids": 14},
{"path": "T3K/active", "type": "enum", "enum": {"inactive": 0, "active": 1}, "readonly": false, "cmd": "tt T3K/active"},
{"path": "T3K/autorange", "type": "bool", "readonly": false, "cmd": "tt T3K/autorange", "description": "autorange (common for all channels)"},
{"path": "T3K/range", "type": "text", "readonly": false, "cmd": "tt T3K/range", "description": "resistance range in Ohm"},
{"path": "T3K/range_num", "type": "int"},
{"path": "T3K/excitation", "type": "text", "readonly": false, "cmd": "tt T3K/excitation", "description": "excitation with unit, i.e. 2uV or 3pA"},
{"path": "T3K/excitation_num", "type": "int"},
{"path": "T3K/excitation_mode", "type": "enum", "enum": {"voltage": 0, "current": 1, "off": 2}},
{"path": "T3K/pause", "type": "int", "readonly": false, "cmd": "tt T3K/pause", "description": "pause time [sec] after channel change"},
{"path": "T3K/filter", "type": "int", "readonly": false, "cmd": "tt T3K/filter", "description": "filter average time [sec]"},
{"path": "T3K/dwell", "type": "int", "readonly": false, "cmd": "tt T3K/dwell", "description": "dwell time [sec]. Total time per channel: pause + filter + dwell"},
{"path": "T3K/status", "type": "text"},
{"path": "T3K/curve", "type": "text", "readonly": false, "cmd": "tt T3K/curve", "kids": 1},
{"path": "T3K/curve/points", "type": "floatvarar", "readonly": false, "cmd": "tt T3K/curve/points", "visibility": 3},
{"path": "T3K/alarm", "type": "float", "readonly": false, "cmd": "tt T3K/alarm"},
{"path": "T3K/raw", "type": "float"},
{"path": "Tstill", "type": "float", "kids": 14},
{"path": "Tstill/active", "type": "enum", "enum": {"inactive": 0, "active": 1}, "readonly": false, "cmd": "tt Tstill/active"},
{"path": "Tstill/autorange", "type": "bool", "readonly": false, "cmd": "tt Tstill/autorange", "description": "autorange (common for all channels)"},
{"path": "Tstill/range", "type": "text", "readonly": false, "cmd": "tt Tstill/range", "description": "resistance range in Ohm"},
{"path": "Tstill/range_num", "type": "int"},
{"path": "Tstill/excitation", "type": "text", "readonly": false, "cmd": "tt Tstill/excitation", "description": "excitation with unit, i.e. 2uV or 3pA"},
{"path": "Tstill/excitation_num", "type": "int"},
{"path": "Tstill/excitation_mode", "type": "enum", "enum": {"voltage": 0, "current": 1, "off": 2}},
{"path": "Tstill/pause", "type": "int", "readonly": false, "cmd": "tt Tstill/pause", "description": "pause time [sec] after channel change"},
{"path": "Tstill/filter", "type": "int", "readonly": false, "cmd": "tt Tstill/filter", "description": "filter average time [sec]"},
{"path": "Tstill/dwell", "type": "int", "readonly": false, "cmd": "tt Tstill/dwell", "description": "dwell time [sec]. Total time per channel: pause + filter + dwell"},
{"path": "Tstill/status", "type": "text"},
{"path": "Tstill/curve", "type": "text", "readonly": false, "cmd": "tt Tstill/curve", "kids": 1},
{"path": "Tstill/curve/points", "type": "floatvarar", "readonly": false, "cmd": "tt Tstill/curve/points", "visibility": 3},
{"path": "Tstill/alarm", "type": "float", "readonly": false, "cmd": "tt Tstill/alarm"},
{"path": "Tstill/raw", "type": "float"},
{"path": "T50mK", "type": "float", "kids": 14},
{"path": "T50mK/active", "type": "enum", "enum": {"inactive": 0, "active": 1}, "readonly": false, "cmd": "tt T50mK/active"},
{"path": "T50mK/autorange", "type": "bool", "readonly": false, "cmd": "tt T50mK/autorange", "description": "autorange (common for all channels)"},
{"path": "T50mK/range", "type": "text", "readonly": false, "cmd": "tt T50mK/range", "description": "resistance range in Ohm"},
{"path": "T50mK/range_num", "type": "int"},
{"path": "T50mK/excitation", "type": "text", "readonly": false, "cmd": "tt T50mK/excitation", "description": "excitation with unit, i.e. 2uV or 3pA"},
{"path": "T50mK/excitation_num", "type": "int"},
{"path": "T50mK/excitation_mode", "type": "enum", "enum": {"voltage": 0, "current": 1, "off": 2}},
{"path": "T50mK/pause", "type": "int", "readonly": false, "cmd": "tt T50mK/pause", "description": "pause time [sec] after channel change"},
{"path": "T50mK/filter", "type": "int", "readonly": false, "cmd": "tt T50mK/filter", "description": "filter average time [sec]"},
{"path": "T50mK/dwell", "type": "int", "readonly": false, "cmd": "tt T50mK/dwell", "description": "dwell time [sec]. Total time per channel: pause + filter + dwell"},
{"path": "T50mK/status", "type": "text"},
{"path": "T50mK/curve", "type": "text", "readonly": false, "cmd": "tt T50mK/curve", "kids": 1},
{"path": "T50mK/curve/points", "type": "floatvarar", "readonly": false, "cmd": "tt T50mK/curve/points", "visibility": 3},
{"path": "T50mK/alarm", "type": "float", "readonly": false, "cmd": "tt T50mK/alarm"},
{"path": "T50mK/raw", "type": "float"},
{"path": "Tmxlow", "type": "float", "kids": 14},
{"path": "Tmxlow/active", "type": "enum", "enum": {"inactive": 0, "active": 1}, "readonly": false, "cmd": "tt Tmxlow/active"},
{"path": "Tmxlow/autorange", "type": "bool", "readonly": false, "cmd": "tt Tmxlow/autorange", "description": "autorange (common for all channels)"},
{"path": "Tmxlow/range", "type": "text", "readonly": false, "cmd": "tt Tmxlow/range", "description": "resistance range in Ohm"},
{"path": "Tmxlow/range_num", "type": "int"},
{"path": "Tmxlow/excitation", "type": "text", "readonly": false, "cmd": "tt Tmxlow/excitation", "description": "excitation with unit, i.e. 2uV or 3pA"},
{"path": "Tmxlow/excitation_num", "type": "int"},
{"path": "Tmxlow/excitation_mode", "type": "enum", "enum": {"voltage": 0, "current": 1, "off": 2}},
{"path": "Tmxlow/pause", "type": "int", "readonly": false, "cmd": "tt Tmxlow/pause", "description": "pause time [sec] after channel change"},
{"path": "Tmxlow/filter", "type": "int", "readonly": false, "cmd": "tt Tmxlow/filter", "description": "filter average time [sec]"},
{"path": "Tmxlow/dwell", "type": "int", "readonly": false, "cmd": "tt Tmxlow/dwell", "description": "dwell time [sec]. Total time per channel: pause + filter + dwell"},
{"path": "Tmxlow/status", "type": "text"},
{"path": "Tmxlow/curve", "type": "text", "readonly": false, "cmd": "tt Tmxlow/curve", "kids": 1},
{"path": "Tmxlow/curve/points", "type": "floatvarar", "readonly": false, "cmd": "tt Tmxlow/curve/points", "visibility": 3},
{"path": "Tmxlow/alarm", "type": "float", "readonly": false, "cmd": "tt Tmxlow/alarm"},
{"path": "Tmxlow/raw", "type": "float"},
{"path": "Tmxhigh", "type": "float", "kids": 14},
{"path": "Tmxhigh/active", "type": "enum", "enum": {"inactive": 0, "active": 1}, "readonly": false, "cmd": "tt Tmxhigh/active"},
{"path": "Tmxhigh/autorange", "type": "bool", "readonly": false, "cmd": "tt Tmxhigh/autorange", "description": "autorange (common for all channels)"},
{"path": "Tmxhigh/range", "type": "text", "readonly": false, "cmd": "tt Tmxhigh/range", "description": "resistance range in Ohm"},
{"path": "Tmxhigh/range_num", "type": "int"},
{"path": "Tmxhigh/excitation", "type": "text", "readonly": false, "cmd": "tt Tmxhigh/excitation", "description": "excitation with unit, i.e. 2uV or 3pA"},
{"path": "Tmxhigh/excitation_num", "type": "int"},
{"path": "Tmxhigh/excitation_mode", "type": "enum", "enum": {"voltage": 0, "current": 1, "off": 2}},
{"path": "Tmxhigh/pause", "type": "int", "readonly": false, "cmd": "tt Tmxhigh/pause", "description": "pause time [sec] after channel change"},
{"path": "Tmxhigh/filter", "type": "int", "readonly": false, "cmd": "tt Tmxhigh/filter", "description": "filter average time [sec]"},
{"path": "Tmxhigh/dwell", "type": "int", "readonly": false, "cmd": "tt Tmxhigh/dwell", "description": "dwell time [sec]. Total time per channel: pause + filter + dwell"},
{"path": "Tmxhigh/status", "type": "text"},
{"path": "Tmxhigh/curve", "type": "text", "readonly": false, "cmd": "tt Tmxhigh/curve", "kids": 1},
{"path": "Tmxhigh/curve/points", "type": "floatvarar", "readonly": false, "cmd": "tt Tmxhigh/curve/points", "visibility": 3},
{"path": "Tmxhigh/alarm", "type": "float", "readonly": false, "cmd": "tt Tmxhigh/alarm"},
{"path": "Tmxhigh/raw", "type": "float"},
{"path": "Tmxcx", "type": "float", "kids": 14},
{"path": "Tmxcx/active", "type": "enum", "enum": {"inactive": 0, "active": 1}, "readonly": false, "cmd": "tt Tmxcx/active"},
{"path": "Tmxcx/autorange", "type": "bool", "readonly": false, "cmd": "tt Tmxcx/autorange", "description": "autorange (common for all channels)"},
{"path": "Tmxcx/range", "type": "text", "readonly": false, "cmd": "tt Tmxcx/range", "description": "resistance range in Ohm"},
{"path": "Tmxcx/range_num", "type": "int"},
{"path": "Tmxcx/excitation", "type": "text", "readonly": false, "cmd": "tt Tmxcx/excitation", "description": "excitation with unit, i.e. 2uV or 3pA"},
{"path": "Tmxcx/excitation_num", "type": "int"},
{"path": "Tmxcx/excitation_mode", "type": "enum", "enum": {"voltage": 0, "current": 1, "off": 2}},
{"path": "Tmxcx/pause", "type": "int", "readonly": false, "cmd": "tt Tmxcx/pause", "description": "pause time [sec] after channel change"},
{"path": "Tmxcx/filter", "type": "int", "readonly": false, "cmd": "tt Tmxcx/filter", "description": "filter average time [sec]"},
{"path": "Tmxcx/dwell", "type": "int", "readonly": false, "cmd": "tt Tmxcx/dwell", "description": "dwell time [sec]. Total time per channel: pause + filter + dwell"},
{"path": "Tmxcx/status", "type": "text"},
{"path": "Tmxcx/curve", "type": "text", "readonly": false, "cmd": "tt Tmxcx/curve", "kids": 1},
{"path": "Tmxcx/curve/points", "type": "floatvarar", "readonly": false, "cmd": "tt Tmxcx/curve/points", "visibility": 3},
{"path": "Tmxcx/alarm", "type": "float", "readonly": false, "cmd": "tt Tmxcx/alarm"},
{"path": "Tmxcx/raw", "type": "float"},
{"path": "Tblueo", "type": "float", "kids": 14},
{"path": "Tblueo/active", "type": "enum", "enum": {"inactive": 0, "active": 1}, "readonly": false, "cmd": "tt Tblueo/active"},
{"path": "Tblueo/autorange", "type": "bool", "readonly": false, "cmd": "tt Tblueo/autorange", "description": "autorange (common for all channels)"},
{"path": "Tblueo/range", "type": "text", "readonly": false, "cmd": "tt Tblueo/range", "description": "resistance range in Ohm"},
{"path": "Tblueo/range_num", "type": "int"},
{"path": "Tblueo/excitation", "type": "text", "readonly": false, "cmd": "tt Tblueo/excitation", "description": "excitation with unit, i.e. 2uV or 3pA"},
{"path": "Tblueo/excitation_num", "type": "int"},
{"path": "Tblueo/excitation_mode", "type": "enum", "enum": {"voltage": 0, "current": 1, "off": 2}},
{"path": "Tblueo/pause", "type": "int", "readonly": false, "cmd": "tt Tblueo/pause", "description": "pause time [sec] after channel change"},
{"path": "Tblueo/filter", "type": "int", "readonly": false, "cmd": "tt Tblueo/filter", "description": "filter average time [sec]"},
{"path": "Tblueo/dwell", "type": "int", "readonly": false, "cmd": "tt Tblueo/dwell", "description": "dwell time [sec]. Total time per channel: pause + filter + dwell"},
{"path": "Tblueo/status", "type": "text"},
{"path": "Tblueo/curve", "type": "text", "readonly": false, "cmd": "tt Tblueo/curve", "kids": 1},
{"path": "Tblueo/curve/points", "type": "floatvarar", "readonly": false, "cmd": "tt Tblueo/curve/points", "visibility": 3},
{"path": "Tblueo/alarm", "type": "float", "readonly": false, "cmd": "tt Tblueo/alarm"},
{"path": "Tblueo/raw", "type": "float"},
{"path": "Tpt50", "type": "float", "kids": 14},
{"path": "Tpt50/active", "type": "enum", "enum": {"inactive": 0, "active": 1}, "readonly": false, "cmd": "tt Tpt50/active"},
{"path": "Tpt50/autorange", "type": "bool", "readonly": false, "cmd": "tt Tpt50/autorange", "description": "autorange (common for all channels)"},
{"path": "Tpt50/range", "type": "text", "readonly": false, "cmd": "tt Tpt50/range", "description": "resistance range in Ohm"},
{"path": "Tpt50/range_num", "type": "int"},
{"path": "Tpt50/excitation", "type": "text", "readonly": false, "cmd": "tt Tpt50/excitation", "description": "excitation with unit, i.e. 2uV or 3pA"},
{"path": "Tpt50/excitation_num", "type": "int"},
{"path": "Tpt50/excitation_mode", "type": "enum", "enum": {"voltage": 0, "current": 1, "off": 2}},
{"path": "Tpt50/pause", "type": "int", "readonly": false, "cmd": "tt Tpt50/pause", "description": "pause time [sec] after channel change"},
{"path": "Tpt50/filter", "type": "int", "readonly": false, "cmd": "tt Tpt50/filter", "description": "filter average time [sec]"},
{"path": "Tpt50/dwell", "type": "int", "readonly": false, "cmd": "tt Tpt50/dwell", "description": "dwell time [sec]. Total time per channel: pause + filter + dwell"},
{"path": "Tpt50/status", "type": "text"},
{"path": "Tpt50/curve", "type": "text", "readonly": false, "cmd": "tt Tpt50/curve", "kids": 1},
{"path": "Tpt50/curve/points", "type": "floatvarar", "readonly": false, "cmd": "tt Tpt50/curve/points", "visibility": 3},
{"path": "Tpt50/alarm", "type": "float", "readonly": false, "cmd": "tt Tpt50/alarm"},
{"path": "Tpt50/raw", "type": "float"},
{"path": "Tpt3high", "type": "float", "kids": 14},
{"path": "Tpt3high/active", "type": "enum", "enum": {"inactive": 0, "active": 1}, "readonly": false, "cmd": "tt Tpt3high/active"},
{"path": "Tpt3high/autorange", "type": "bool", "readonly": false, "cmd": "tt Tpt3high/autorange", "description": "autorange (common for all channels)"},
{"path": "Tpt3high/range", "type": "text", "readonly": false, "cmd": "tt Tpt3high/range", "description": "resistance range in Ohm"},
{"path": "Tpt3high/range_num", "type": "int"},
{"path": "Tpt3high/excitation", "type": "text", "readonly": false, "cmd": "tt Tpt3high/excitation", "description": "excitation with unit, i.e. 2uV or 3pA"},
{"path": "Tpt3high/excitation_num", "type": "int"},
{"path": "Tpt3high/excitation_mode", "type": "enum", "enum": {"voltage": 0, "current": 1, "off": 2}},
{"path": "Tpt3high/pause", "type": "int", "readonly": false, "cmd": "tt Tpt3high/pause", "description": "pause time [sec] after channel change"},
{"path": "Tpt3high/filter", "type": "int", "readonly": false, "cmd": "tt Tpt3high/filter", "description": "filter average time [sec]"},
{"path": "Tpt3high/dwell", "type": "int", "readonly": false, "cmd": "tt Tpt3high/dwell", "description": "dwell time [sec]. Total time per channel: pause + filter + dwell"},
{"path": "Tpt3high/status", "type": "text"},
{"path": "Tpt3high/curve", "type": "text", "readonly": false, "cmd": "tt Tpt3high/curve", "kids": 1},
{"path": "Tpt3high/curve/points", "type": "floatvarar", "readonly": false, "cmd": "tt Tpt3high/curve/points", "visibility": 3},
{"path": "Tpt3high/alarm", "type": "float", "readonly": false, "cmd": "tt Tpt3high/alarm"},
{"path": "Tpt3high/raw", "type": "float"},
{"path": "Tpt3low", "type": "float", "kids": 14},
{"path": "Tpt3low/active", "type": "enum", "enum": {"inactive": 0, "active": 1}, "readonly": false, "cmd": "tt Tpt3low/active"},
{"path": "Tpt3low/autorange", "type": "bool", "readonly": false, "cmd": "tt Tpt3low/autorange", "description": "autorange (common for all channels)"},
{"path": "Tpt3low/range", "type": "text", "readonly": false, "cmd": "tt Tpt3low/range", "description": "resistance range in Ohm"},
{"path": "Tpt3low/range_num", "type": "int"},
{"path": "Tpt3low/excitation", "type": "text", "readonly": false, "cmd": "tt Tpt3low/excitation", "description": "excitation with unit, i.e. 2uV or 3pA"},
{"path": "Tpt3low/excitation_num", "type": "int"},
{"path": "Tpt3low/excitation_mode", "type": "enum", "enum": {"voltage": 0, "current": 1, "off": 2}},
{"path": "Tpt3low/pause", "type": "int", "readonly": false, "cmd": "tt Tpt3low/pause", "description": "pause time [sec] after channel change"},
{"path": "Tpt3low/filter", "type": "int", "readonly": false, "cmd": "tt Tpt3low/filter", "description": "filter average time [sec]"},
{"path": "Tpt3low/dwell", "type": "int", "readonly": false, "cmd": "tt Tpt3low/dwell", "description": "dwell time [sec]. Total time per channel: pause + filter + dwell"},
{"path": "Tpt3low/status", "type": "text"},
{"path": "Tpt3low/curve", "type": "text", "readonly": false, "cmd": "tt Tpt3low/curve", "kids": 1},
{"path": "Tpt3low/curve/points", "type": "floatvarar", "readonly": false, "cmd": "tt Tpt3low/curve/points", "visibility": 3},
{"path": "Tpt3low/alarm", "type": "float", "readonly": false, "cmd": "tt Tpt3low/alarm"},
{"path": "Tpt3low/raw", "type": "float"},
{"path": "Twhite", "type": "float", "kids": 14},
{"path": "Twhite/active", "type": "enum", "enum": {"inactive": 0, "active": 1}, "readonly": false, "cmd": "tt Twhite/active"},
{"path": "Twhite/autorange", "type": "bool", "readonly": false, "cmd": "tt Twhite/autorange", "description": "autorange (common for all channels)"},
{"path": "Twhite/range", "type": "text", "readonly": false, "cmd": "tt Twhite/range", "description": "resistance range in Ohm"},
{"path": "Twhite/range_num", "type": "int"},
{"path": "Twhite/excitation", "type": "text", "readonly": false, "cmd": "tt Twhite/excitation", "description": "excitation with unit, i.e. 2uV or 3pA"},
{"path": "Twhite/excitation_num", "type": "int"},
{"path": "Twhite/excitation_mode", "type": "enum", "enum": {"voltage": 0, "current": 1, "off": 2}},
{"path": "Twhite/pause", "type": "int", "readonly": false, "cmd": "tt Twhite/pause", "description": "pause time [sec] after channel change"},
{"path": "Twhite/filter", "type": "int", "readonly": false, "cmd": "tt Twhite/filter", "description": "filter average time [sec]"},
{"path": "Twhite/dwell", "type": "int", "readonly": false, "cmd": "tt Twhite/dwell", "description": "dwell time [sec]. Total time per channel: pause + filter + dwell"},
{"path": "Twhite/status", "type": "text"},
{"path": "Twhite/curve", "type": "text", "readonly": false, "cmd": "tt Twhite/curve", "kids": 1},
{"path": "Twhite/curve/points", "type": "floatvarar", "readonly": false, "cmd": "tt Twhite/curve/points", "visibility": 3},
{"path": "Twhite/alarm", "type": "float", "readonly": false, "cmd": "tt Twhite/alarm"},
{"path": "Twhite/raw", "type": "float"},
{"path": "Tgreen", "type": "float", "kids": 14},
{"path": "Tgreen/active", "type": "enum", "enum": {"inactive": 0, "active": 1}, "readonly": false, "cmd": "tt Tgreen/active"},
{"path": "Tgreen/autorange", "type": "bool", "readonly": false, "cmd": "tt Tgreen/autorange", "description": "autorange (common for all channels)"},
{"path": "Tgreen/range", "type": "text", "readonly": false, "cmd": "tt Tgreen/range", "description": "resistance range in Ohm"},
{"path": "Tgreen/range_num", "type": "int"},
{"path": "Tgreen/excitation", "type": "text", "readonly": false, "cmd": "tt Tgreen/excitation", "description": "excitation with unit, i.e. 2uV or 3pA"},
{"path": "Tgreen/excitation_num", "type": "int"},
{"path": "Tgreen/excitation_mode", "type": "enum", "enum": {"voltage": 0, "current": 1, "off": 2}},
{"path": "Tgreen/pause", "type": "int", "readonly": false, "cmd": "tt Tgreen/pause", "description": "pause time [sec] after channel change"},
{"path": "Tgreen/filter", "type": "int", "readonly": false, "cmd": "tt Tgreen/filter", "description": "filter average time [sec]"},
{"path": "Tgreen/dwell", "type": "int", "readonly": false, "cmd": "tt Tgreen/dwell", "description": "dwell time [sec]. Total time per channel: pause + filter + dwell"},
{"path": "Tgreen/status", "type": "text"},
{"path": "Tgreen/curve", "type": "text", "readonly": false, "cmd": "tt Tgreen/curve", "kids": 1},
{"path": "Tgreen/curve/points", "type": "floatvarar", "readonly": false, "cmd": "tt Tgreen/curve/points", "visibility": 3},
{"path": "Tgreen/alarm", "type": "float", "readonly": false, "cmd": "tt Tgreen/alarm"},
{"path": "Tgreen/raw", "type": "float"},
{"path": "analog2", "type": "float", "readonly": false, "cmd": "tt analog2"},
{"path": "remote", "type": "bool"},
{"path": "display", "type": "text", "readonly": false, "cmd": "tt display"}]},
"cmn": {"base": "/cmn", "params": [
{"path": "", "type": "none", "kids": 6},
{"path": "send", "type": "text", "readonly": false, "cmd": "cmn send", "visibility": 3},
{"path": "status", "type": "text", "visibility": 3},
{"path": "u1", "type": "float"},
{"path": "temp", "type": "float"},
{"path": "u2", "type": "float"},
{"path": "chan", "type": "enum", "enum": {"auto": 0, "chan1": 1, "chan2": 2}, "readonly": false, "cmd": "cmn chan"}]}}

View File

@@ -1,213 +0,0 @@
{"tt": {"base": "/tt", "params": [
{"path": "", "type": "int", "kids": 18},
{"path": "send", "type": "text", "readonly": false, "cmd": "tt send", "visibility": 3},
{"path": "status", "type": "text", "visibility": 3},
{"path": "autoscan", "type": "bool", "readonly": false, "cmd": "tt autoscan", "kids": 4},
{"path": "autoscan/synchronized", "type": "bool", "readonly": false, "cmd": "tt autoscan/synchronized"},
{"path": "autoscan/interval", "type": "text", "readonly": false, "cmd": "tt autoscan/interval"},
{"path": "autoscan/pause", "type": "text", "readonly": false, "cmd": "tt autoscan/pause"},
{"path": "autoscan/dwell", "type": "text", "readonly": false, "cmd": "tt autoscan/dwell"},
{"path": "T3K", "type": "float", "kids": 14},
{"path": "T3K/active", "type": "enum", "enum": {"inactive": 0, "active": 1}, "readonly": false, "cmd": "tt T3K/active"},
{"path": "T3K/autorange", "type": "bool", "readonly": false, "cmd": "tt T3K/autorange", "description": "autorange (common for all channels)"},
{"path": "T3K/range", "type": "text", "readonly": false, "cmd": "tt T3K/range", "description": "resistance range in Ohm"},
{"path": "T3K/range_num", "type": "int"},
{"path": "T3K/excitation", "type": "text", "readonly": false, "cmd": "tt T3K/excitation", "description": "excitation with unit, i.e. 2uV or 3pA"},
{"path": "T3K/excitation_num", "type": "int"},
{"path": "T3K/excitation_mode", "type": "enum", "enum": {"voltage": 0, "current": 1, "off": 2}},
{"path": "T3K/pause", "type": "int", "readonly": false, "cmd": "tt T3K/pause", "description": "pause time [sec] after channel change"},
{"path": "T3K/filter", "type": "int", "readonly": false, "cmd": "tt T3K/filter", "description": "filter average time [sec]"},
{"path": "T3K/dwell", "type": "int", "readonly": false, "cmd": "tt T3K/dwell", "description": "dwell time [sec]. Total time per channel: pause + filter + dwell"},
{"path": "T3K/status", "type": "text"},
{"path": "T3K/curve", "type": "text", "readonly": false, "cmd": "tt T3K/curve", "kids": 1},
{"path": "T3K/curve/points", "type": "floatvarar", "readonly": false, "cmd": "tt T3K/curve/points", "visibility": 3},
{"path": "T3K/alarm", "type": "float", "readonly": false, "cmd": "tt T3K/alarm"},
{"path": "T3K/raw", "type": "float"},
{"path": "Tstill", "type": "float", "kids": 14},
{"path": "Tstill/active", "type": "enum", "enum": {"inactive": 0, "active": 1}, "readonly": false, "cmd": "tt Tstill/active"},
{"path": "Tstill/autorange", "type": "bool", "readonly": false, "cmd": "tt Tstill/autorange", "description": "autorange (common for all channels)"},
{"path": "Tstill/range", "type": "text", "readonly": false, "cmd": "tt Tstill/range", "description": "resistance range in Ohm"},
{"path": "Tstill/range_num", "type": "int"},
{"path": "Tstill/excitation", "type": "text", "readonly": false, "cmd": "tt Tstill/excitation", "description": "excitation with unit, i.e. 2uV or 3pA"},
{"path": "Tstill/excitation_num", "type": "int"},
{"path": "Tstill/excitation_mode", "type": "enum", "enum": {"voltage": 0, "current": 1, "off": 2}},
{"path": "Tstill/pause", "type": "int", "readonly": false, "cmd": "tt Tstill/pause", "description": "pause time [sec] after channel change"},
{"path": "Tstill/filter", "type": "int", "readonly": false, "cmd": "tt Tstill/filter", "description": "filter average time [sec]"},
{"path": "Tstill/dwell", "type": "int", "readonly": false, "cmd": "tt Tstill/dwell", "description": "dwell time [sec]. Total time per channel: pause + filter + dwell"},
{"path": "Tstill/status", "type": "text"},
{"path": "Tstill/curve", "type": "text", "readonly": false, "cmd": "tt Tstill/curve", "kids": 1},
{"path": "Tstill/curve/points", "type": "floatvarar", "readonly": false, "cmd": "tt Tstill/curve/points", "visibility": 3},
{"path": "Tstill/alarm", "type": "float", "readonly": false, "cmd": "tt Tstill/alarm"},
{"path": "Tstill/raw", "type": "float"},
{"path": "T50mK", "type": "float", "kids": 14},
{"path": "T50mK/active", "type": "enum", "enum": {"inactive": 0, "active": 1}, "readonly": false, "cmd": "tt T50mK/active"},
{"path": "T50mK/autorange", "type": "bool", "readonly": false, "cmd": "tt T50mK/autorange", "description": "autorange (common for all channels)"},
{"path": "T50mK/range", "type": "text", "readonly": false, "cmd": "tt T50mK/range", "description": "resistance range in Ohm"},
{"path": "T50mK/range_num", "type": "int"},
{"path": "T50mK/excitation", "type": "text", "readonly": false, "cmd": "tt T50mK/excitation", "description": "excitation with unit, i.e. 2uV or 3pA"},
{"path": "T50mK/excitation_num", "type": "int"},
{"path": "T50mK/excitation_mode", "type": "enum", "enum": {"voltage": 0, "current": 1, "off": 2}},
{"path": "T50mK/pause", "type": "int", "readonly": false, "cmd": "tt T50mK/pause", "description": "pause time [sec] after channel change"},
{"path": "T50mK/filter", "type": "int", "readonly": false, "cmd": "tt T50mK/filter", "description": "filter average time [sec]"},
{"path": "T50mK/dwell", "type": "int", "readonly": false, "cmd": "tt T50mK/dwell", "description": "dwell time [sec]. Total time per channel: pause + filter + dwell"},
{"path": "T50mK/status", "type": "text"},
{"path": "T50mK/curve", "type": "text", "readonly": false, "cmd": "tt T50mK/curve", "kids": 1},
{"path": "T50mK/curve/points", "type": "floatvarar", "readonly": false, "cmd": "tt T50mK/curve/points", "visibility": 3},
{"path": "T50mK/alarm", "type": "float", "readonly": false, "cmd": "tt T50mK/alarm"},
{"path": "T50mK/raw", "type": "float"},
{"path": "Tmxlow", "type": "float", "kids": 14},
{"path": "Tmxlow/active", "type": "enum", "enum": {"inactive": 0, "active": 1}, "readonly": false, "cmd": "tt Tmxlow/active"},
{"path": "Tmxlow/autorange", "type": "bool", "readonly": false, "cmd": "tt Tmxlow/autorange", "description": "autorange (common for all channels)"},
{"path": "Tmxlow/range", "type": "text", "readonly": false, "cmd": "tt Tmxlow/range", "description": "resistance range in Ohm"},
{"path": "Tmxlow/range_num", "type": "int"},
{"path": "Tmxlow/excitation", "type": "text", "readonly": false, "cmd": "tt Tmxlow/excitation", "description": "excitation with unit, i.e. 2uV or 3pA"},
{"path": "Tmxlow/excitation_num", "type": "int"},
{"path": "Tmxlow/excitation_mode", "type": "enum", "enum": {"voltage": 0, "current": 1, "off": 2}},
{"path": "Tmxlow/pause", "type": "int", "readonly": false, "cmd": "tt Tmxlow/pause", "description": "pause time [sec] after channel change"},
{"path": "Tmxlow/filter", "type": "int", "readonly": false, "cmd": "tt Tmxlow/filter", "description": "filter average time [sec]"},
{"path": "Tmxlow/dwell", "type": "int", "readonly": false, "cmd": "tt Tmxlow/dwell", "description": "dwell time [sec]. Total time per channel: pause + filter + dwell"},
{"path": "Tmxlow/status", "type": "text"},
{"path": "Tmxlow/curve", "type": "text", "readonly": false, "cmd": "tt Tmxlow/curve", "kids": 1},
{"path": "Tmxlow/curve/points", "type": "floatvarar", "readonly": false, "cmd": "tt Tmxlow/curve/points", "visibility": 3},
{"path": "Tmxlow/alarm", "type": "float", "readonly": false, "cmd": "tt Tmxlow/alarm"},
{"path": "Tmxlow/raw", "type": "float"},
{"path": "Tmxhigh", "type": "float", "kids": 14},
{"path": "Tmxhigh/active", "type": "enum", "enum": {"inactive": 0, "active": 1}, "readonly": false, "cmd": "tt Tmxhigh/active"},
{"path": "Tmxhigh/autorange", "type": "bool", "readonly": false, "cmd": "tt Tmxhigh/autorange", "description": "autorange (common for all channels)"},
{"path": "Tmxhigh/range", "type": "text", "readonly": false, "cmd": "tt Tmxhigh/range", "description": "resistance range in Ohm"},
{"path": "Tmxhigh/range_num", "type": "int"},
{"path": "Tmxhigh/excitation", "type": "text", "readonly": false, "cmd": "tt Tmxhigh/excitation", "description": "excitation with unit, i.e. 2uV or 3pA"},
{"path": "Tmxhigh/excitation_num", "type": "int"},
{"path": "Tmxhigh/excitation_mode", "type": "enum", "enum": {"voltage": 0, "current": 1, "off": 2}},
{"path": "Tmxhigh/pause", "type": "int", "readonly": false, "cmd": "tt Tmxhigh/pause", "description": "pause time [sec] after channel change"},
{"path": "Tmxhigh/filter", "type": "int", "readonly": false, "cmd": "tt Tmxhigh/filter", "description": "filter average time [sec]"},
{"path": "Tmxhigh/dwell", "type": "int", "readonly": false, "cmd": "tt Tmxhigh/dwell", "description": "dwell time [sec]. Total time per channel: pause + filter + dwell"},
{"path": "Tmxhigh/status", "type": "text"},
{"path": "Tmxhigh/curve", "type": "text", "readonly": false, "cmd": "tt Tmxhigh/curve", "kids": 1},
{"path": "Tmxhigh/curve/points", "type": "floatvarar", "readonly": false, "cmd": "tt Tmxhigh/curve/points", "visibility": 3},
{"path": "Tmxhigh/alarm", "type": "float", "readonly": false, "cmd": "tt Tmxhigh/alarm"},
{"path": "Tmxhigh/raw", "type": "float"},
{"path": "Tmxcx", "type": "float", "kids": 14},
{"path": "Tmxcx/active", "type": "enum", "enum": {"inactive": 0, "active": 1}, "readonly": false, "cmd": "tt Tmxcx/active"},
{"path": "Tmxcx/autorange", "type": "bool", "readonly": false, "cmd": "tt Tmxcx/autorange", "description": "autorange (common for all channels)"},
{"path": "Tmxcx/range", "type": "text", "readonly": false, "cmd": "tt Tmxcx/range", "description": "resistance range in Ohm"},
{"path": "Tmxcx/range_num", "type": "int"},
{"path": "Tmxcx/excitation", "type": "text", "readonly": false, "cmd": "tt Tmxcx/excitation", "description": "excitation with unit, i.e. 2uV or 3pA"},
{"path": "Tmxcx/excitation_num", "type": "int"},
{"path": "Tmxcx/excitation_mode", "type": "enum", "enum": {"voltage": 0, "current": 1, "off": 2}},
{"path": "Tmxcx/pause", "type": "int", "readonly": false, "cmd": "tt Tmxcx/pause", "description": "pause time [sec] after channel change"},
{"path": "Tmxcx/filter", "type": "int", "readonly": false, "cmd": "tt Tmxcx/filter", "description": "filter average time [sec]"},
{"path": "Tmxcx/dwell", "type": "int", "readonly": false, "cmd": "tt Tmxcx/dwell", "description": "dwell time [sec]. Total time per channel: pause + filter + dwell"},
{"path": "Tmxcx/status", "type": "text"},
{"path": "Tmxcx/curve", "type": "text", "readonly": false, "cmd": "tt Tmxcx/curve", "kids": 1},
{"path": "Tmxcx/curve/points", "type": "floatvarar", "readonly": false, "cmd": "tt Tmxcx/curve/points", "visibility": 3},
{"path": "Tmxcx/alarm", "type": "float", "readonly": false, "cmd": "tt Tmxcx/alarm"},
{"path": "Tmxcx/raw", "type": "float"},
{"path": "Tblueo", "type": "float", "kids": 14},
{"path": "Tblueo/active", "type": "enum", "enum": {"inactive": 0, "active": 1}, "readonly": false, "cmd": "tt Tblueo/active"},
{"path": "Tblueo/autorange", "type": "bool", "readonly": false, "cmd": "tt Tblueo/autorange", "description": "autorange (common for all channels)"},
{"path": "Tblueo/range", "type": "text", "readonly": false, "cmd": "tt Tblueo/range", "description": "resistance range in Ohm"},
{"path": "Tblueo/range_num", "type": "int"},
{"path": "Tblueo/excitation", "type": "text", "readonly": false, "cmd": "tt Tblueo/excitation", "description": "excitation with unit, i.e. 2uV or 3pA"},
{"path": "Tblueo/excitation_num", "type": "int"},
{"path": "Tblueo/excitation_mode", "type": "enum", "enum": {"voltage": 0, "current": 1, "off": 2}},
{"path": "Tblueo/pause", "type": "int", "readonly": false, "cmd": "tt Tblueo/pause", "description": "pause time [sec] after channel change"},
{"path": "Tblueo/filter", "type": "int", "readonly": false, "cmd": "tt Tblueo/filter", "description": "filter average time [sec]"},
{"path": "Tblueo/dwell", "type": "int", "readonly": false, "cmd": "tt Tblueo/dwell", "description": "dwell time [sec]. Total time per channel: pause + filter + dwell"},
{"path": "Tblueo/status", "type": "text"},
{"path": "Tblueo/curve", "type": "text", "readonly": false, "cmd": "tt Tblueo/curve", "kids": 1},
{"path": "Tblueo/curve/points", "type": "floatvarar", "readonly": false, "cmd": "tt Tblueo/curve/points", "visibility": 3},
{"path": "Tblueo/alarm", "type": "float", "readonly": false, "cmd": "tt Tblueo/alarm"},
{"path": "Tblueo/raw", "type": "float"},
{"path": "Tpt50", "type": "float", "kids": 14},
{"path": "Tpt50/active", "type": "enum", "enum": {"inactive": 0, "active": 1}, "readonly": false, "cmd": "tt Tpt50/active"},
{"path": "Tpt50/autorange", "type": "bool", "readonly": false, "cmd": "tt Tpt50/autorange", "description": "autorange (common for all channels)"},
{"path": "Tpt50/range", "type": "text", "readonly": false, "cmd": "tt Tpt50/range", "description": "resistance range in Ohm"},
{"path": "Tpt50/range_num", "type": "int"},
{"path": "Tpt50/excitation", "type": "text", "readonly": false, "cmd": "tt Tpt50/excitation", "description": "excitation with unit, i.e. 2uV or 3pA"},
{"path": "Tpt50/excitation_num", "type": "int"},
{"path": "Tpt50/excitation_mode", "type": "enum", "enum": {"voltage": 0, "current": 1, "off": 2}},
{"path": "Tpt50/pause", "type": "int", "readonly": false, "cmd": "tt Tpt50/pause", "description": "pause time [sec] after channel change"},
{"path": "Tpt50/filter", "type": "int", "readonly": false, "cmd": "tt Tpt50/filter", "description": "filter average time [sec]"},
{"path": "Tpt50/dwell", "type": "int", "readonly": false, "cmd": "tt Tpt50/dwell", "description": "dwell time [sec]. Total time per channel: pause + filter + dwell"},
{"path": "Tpt50/status", "type": "text"},
{"path": "Tpt50/curve", "type": "text", "readonly": false, "cmd": "tt Tpt50/curve", "kids": 1},
{"path": "Tpt50/curve/points", "type": "floatvarar", "readonly": false, "cmd": "tt Tpt50/curve/points", "visibility": 3},
{"path": "Tpt50/alarm", "type": "float", "readonly": false, "cmd": "tt Tpt50/alarm"},
{"path": "Tpt50/raw", "type": "float"},
{"path": "Tpt3high", "type": "float", "kids": 14},
{"path": "Tpt3high/active", "type": "enum", "enum": {"inactive": 0, "active": 1}, "readonly": false, "cmd": "tt Tpt3high/active"},
{"path": "Tpt3high/autorange", "type": "bool", "readonly": false, "cmd": "tt Tpt3high/autorange", "description": "autorange (common for all channels)"},
{"path": "Tpt3high/range", "type": "text", "readonly": false, "cmd": "tt Tpt3high/range", "description": "resistance range in Ohm"},
{"path": "Tpt3high/range_num", "type": "int"},
{"path": "Tpt3high/excitation", "type": "text", "readonly": false, "cmd": "tt Tpt3high/excitation", "description": "excitation with unit, i.e. 2uV or 3pA"},
{"path": "Tpt3high/excitation_num", "type": "int"},
{"path": "Tpt3high/excitation_mode", "type": "enum", "enum": {"voltage": 0, "current": 1, "off": 2}},
{"path": "Tpt3high/pause", "type": "int", "readonly": false, "cmd": "tt Tpt3high/pause", "description": "pause time [sec] after channel change"},
{"path": "Tpt3high/filter", "type": "int", "readonly": false, "cmd": "tt Tpt3high/filter", "description": "filter average time [sec]"},
{"path": "Tpt3high/dwell", "type": "int", "readonly": false, "cmd": "tt Tpt3high/dwell", "description": "dwell time [sec]. Total time per channel: pause + filter + dwell"},
{"path": "Tpt3high/status", "type": "text"},
{"path": "Tpt3high/curve", "type": "text", "readonly": false, "cmd": "tt Tpt3high/curve", "kids": 1},
{"path": "Tpt3high/curve/points", "type": "floatvarar", "readonly": false, "cmd": "tt Tpt3high/curve/points", "visibility": 3},
{"path": "Tpt3high/alarm", "type": "float", "readonly": false, "cmd": "tt Tpt3high/alarm"},
{"path": "Tpt3high/raw", "type": "float"},
{"path": "Tpt3low", "type": "float", "kids": 14},
{"path": "Tpt3low/active", "type": "enum", "enum": {"inactive": 0, "active": 1}, "readonly": false, "cmd": "tt Tpt3low/active"},
{"path": "Tpt3low/autorange", "type": "bool", "readonly": false, "cmd": "tt Tpt3low/autorange", "description": "autorange (common for all channels)"},
{"path": "Tpt3low/range", "type": "text", "readonly": false, "cmd": "tt Tpt3low/range", "description": "resistance range in Ohm"},
{"path": "Tpt3low/range_num", "type": "int"},
{"path": "Tpt3low/excitation", "type": "text", "readonly": false, "cmd": "tt Tpt3low/excitation", "description": "excitation with unit, i.e. 2uV or 3pA"},
{"path": "Tpt3low/excitation_num", "type": "int"},
{"path": "Tpt3low/excitation_mode", "type": "enum", "enum": {"voltage": 0, "current": 1, "off": 2}},
{"path": "Tpt3low/pause", "type": "int", "readonly": false, "cmd": "tt Tpt3low/pause", "description": "pause time [sec] after channel change"},
{"path": "Tpt3low/filter", "type": "int", "readonly": false, "cmd": "tt Tpt3low/filter", "description": "filter average time [sec]"},
{"path": "Tpt3low/dwell", "type": "int", "readonly": false, "cmd": "tt Tpt3low/dwell", "description": "dwell time [sec]. Total time per channel: pause + filter + dwell"},
{"path": "Tpt3low/status", "type": "text"},
{"path": "Tpt3low/curve", "type": "text", "readonly": false, "cmd": "tt Tpt3low/curve", "kids": 1},
{"path": "Tpt3low/curve/points", "type": "floatvarar", "readonly": false, "cmd": "tt Tpt3low/curve/points", "visibility": 3},
{"path": "Tpt3low/alarm", "type": "float", "readonly": false, "cmd": "tt Tpt3low/alarm"},
{"path": "Tpt3low/raw", "type": "float"},
{"path": "Twhite", "type": "float", "kids": 14},
{"path": "Twhite/active", "type": "enum", "enum": {"inactive": 0, "active": 1}, "readonly": false, "cmd": "tt Twhite/active"},
{"path": "Twhite/autorange", "type": "bool", "readonly": false, "cmd": "tt Twhite/autorange", "description": "autorange (common for all channels)"},
{"path": "Twhite/range", "type": "text", "readonly": false, "cmd": "tt Twhite/range", "description": "resistance range in Ohm"},
{"path": "Twhite/range_num", "type": "int"},
{"path": "Twhite/excitation", "type": "text", "readonly": false, "cmd": "tt Twhite/excitation", "description": "excitation with unit, i.e. 2uV or 3pA"},
{"path": "Twhite/excitation_num", "type": "int"},
{"path": "Twhite/excitation_mode", "type": "enum", "enum": {"voltage": 0, "current": 1, "off": 2}},
{"path": "Twhite/pause", "type": "int", "readonly": false, "cmd": "tt Twhite/pause", "description": "pause time [sec] after channel change"},
{"path": "Twhite/filter", "type": "int", "readonly": false, "cmd": "tt Twhite/filter", "description": "filter average time [sec]"},
{"path": "Twhite/dwell", "type": "int", "readonly": false, "cmd": "tt Twhite/dwell", "description": "dwell time [sec]. Total time per channel: pause + filter + dwell"},
{"path": "Twhite/status", "type": "text"},
{"path": "Twhite/curve", "type": "text", "readonly": false, "cmd": "tt Twhite/curve", "kids": 1},
{"path": "Twhite/curve/points", "type": "floatvarar", "readonly": false, "cmd": "tt Twhite/curve/points", "visibility": 3},
{"path": "Twhite/alarm", "type": "float", "readonly": false, "cmd": "tt Twhite/alarm"},
{"path": "Twhite/raw", "type": "float"},
{"path": "Tgreen", "type": "float", "kids": 14},
{"path": "Tgreen/active", "type": "enum", "enum": {"inactive": 0, "active": 1}, "readonly": false, "cmd": "tt Tgreen/active"},
{"path": "Tgreen/autorange", "type": "bool", "readonly": false, "cmd": "tt Tgreen/autorange", "description": "autorange (common for all channels)"},
{"path": "Tgreen/range", "type": "text", "readonly": false, "cmd": "tt Tgreen/range", "description": "resistance range in Ohm"},
{"path": "Tgreen/range_num", "type": "int"},
{"path": "Tgreen/excitation", "type": "text", "readonly": false, "cmd": "tt Tgreen/excitation", "description": "excitation with unit, i.e. 2uV or 3pA"},
{"path": "Tgreen/excitation_num", "type": "int"},
{"path": "Tgreen/excitation_mode", "type": "enum", "enum": {"voltage": 0, "current": 1, "off": 2}},
{"path": "Tgreen/pause", "type": "int", "readonly": false, "cmd": "tt Tgreen/pause", "description": "pause time [sec] after channel change"},
{"path": "Tgreen/filter", "type": "int", "readonly": false, "cmd": "tt Tgreen/filter", "description": "filter average time [sec]"},
{"path": "Tgreen/dwell", "type": "int", "readonly": false, "cmd": "tt Tgreen/dwell", "description": "dwell time [sec]. Total time per channel: pause + filter + dwell"},
{"path": "Tgreen/status", "type": "text"},
{"path": "Tgreen/curve", "type": "text", "readonly": false, "cmd": "tt Tgreen/curve", "kids": 1},
{"path": "Tgreen/curve/points", "type": "floatvarar", "readonly": false, "cmd": "tt Tgreen/curve/points", "visibility": 3},
{"path": "Tgreen/alarm", "type": "float", "readonly": false, "cmd": "tt Tgreen/alarm"},
{"path": "Tgreen/raw", "type": "float"},
{"path": "analog2", "type": "float", "readonly": false, "cmd": "tt analog2"},
{"path": "remote", "type": "bool"},
{"path": "display", "type": "text", "readonly": false, "cmd": "tt display"}]},
"cmn": {"base": "/cmn", "params": [
{"path": "", "type": "none", "kids": 6},
{"path": "send", "type": "text", "readonly": false, "cmd": "cmn send", "visibility": 3},
{"path": "status", "type": "text", "visibility": 3},
{"path": "u1", "type": "float"},
{"path": "temp", "type": "float"},
{"path": "u2", "type": "float"},
{"path": "chan", "type": "enum", "enum": {"auto": 0, "chan1": 1, "chan2": 2}, "readonly": false, "cmd": "cmn chan"}]}}

View File

@@ -284,8 +284,8 @@
{"path": "eeprom", "type": "enum", "enum": {"ok": 0, "dirty": 1, "save": 2, "load": 3}, "readonly": false, "cmd": "hemot eeprom"},
{"path": "customadr", "type": "text", "readonly": false, "cmd": "hemot customadr"},
{"path": "custompar", "type": "float", "readonly": false, "cmd": "hemot custompar"}]},
"ln2fill": {"base": "/ln2fill", "params": [
"
ln2fill": {"base": "/ln2fill", "params": [
{"path": "", "type": "enum", "enum": {"watching": 0, "fill": 1, "inactive": 2}, "readonly": false, "cmd": "ln2fill", "kids": 14},
{"path": "send", "type": "text", "readonly": false, "cmd": "ln2fill send", "visibility": 3},
{"path": "status", "type": "text", "visibility": 3},

View File

@@ -1,50 +1,50 @@
{"tt": {"base": "/tt", "params": [
{"path": "", "type": "float", "readonly": false, "cmd": "run tt", "description": "tt", "kids": 18},
{"path": "send", "type": "text", "readonly": false, "cmd": "tt send", "visibility": 3},
{"path": "status", "type": "text", "visibility": 3},
{"path": "status", "type": "text", "readonly": false, "cmd": "run tt", "visibility": 3},
{"path": "is_running", "type": "int", "readonly": false, "cmd": "tt is_running", "visibility": 3},
{"path": "mainloop", "type": "text", "readonly": false, "cmd": "tt mainloop", "visibility": 3},
{"path": "target", "type": "float"},
{"path": "running", "type": "int"},
{"path": "target", "type": "float", "readonly": false, "cmd": "run tt"},
{"path": "running", "type": "int", "readonly": false, "cmd": "run tt"},
{"path": "tolerance", "type": "float", "readonly": false, "cmd": "tt tolerance"},
{"path": "maxwait", "type": "float", "readonly": false, "cmd": "tt maxwait"},
{"path": "settle", "type": "float", "readonly": false, "cmd": "tt settle"},
{"path": "log", "type": "text", "readonly": false, "cmd": "tt log", "visibility": 3, "kids": 4},
{"path": "log/mean", "type": "float", "visibility": 3},
{"path": "log/m2", "type": "float", "visibility": 3},
{"path": "log/stddev", "type": "float", "visibility": 3},
{"path": "log/n", "type": "float", "visibility": 3},
{"path": "log/mean", "type": "float", "readonly": false, "cmd": "run tt", "visibility": 3},
{"path": "log/m2", "type": "float", "readonly": false, "cmd": "run tt", "visibility": 3},
{"path": "log/stddev", "type": "float", "readonly": false, "cmd": "run tt", "visibility": 3},
{"path": "log/n", "type": "float", "readonly": false, "cmd": "run tt", "visibility": 3},
{"path": "dblctrl", "type": "bool", "readonly": false, "cmd": "tt dblctrl", "kids": 9},
{"path": "dblctrl/tshift", "type": "float", "readonly": false, "cmd": "tt dblctrl/tshift"},
{"path": "dblctrl/mode", "type": "enum", "enum": {"disabled": -1, "inactive": 0, "stable": 1, "up": 2, "down": 3}, "readonly": false, "cmd": "tt dblctrl/mode"},
{"path": "dblctrl/shift_up", "type": "float"},
{"path": "dblctrl/shift_lo", "type": "float"},
{"path": "dblctrl/t_min", "type": "float"},
{"path": "dblctrl/t_max", "type": "float"},
{"path": "dblctrl/shift_up", "type": "float", "readonly": false, "cmd": "run tt"},
{"path": "dblctrl/shift_lo", "type": "float", "readonly": false, "cmd": "run tt"},
{"path": "dblctrl/t_min", "type": "float", "readonly": false, "cmd": "run tt"},
{"path": "dblctrl/t_max", "type": "float", "readonly": false, "cmd": "run tt"},
{"path": "dblctrl/int2", "type": "float", "readonly": false, "cmd": "tt dblctrl/int2"},
{"path": "dblctrl/prop_up", "type": "float", "readonly": false, "cmd": "tt dblctrl/prop_up"},
{"path": "dblctrl/prop_lo", "type": "float", "readonly": false, "cmd": "tt dblctrl/prop_lo"},
{"path": "tm", "type": "float", "kids": 4},
{"path": "tm", "type": "float", "readonly": false, "cmd": "run tt", "kids": 4},
{"path": "tm/curve", "type": "text", "readonly": false, "cmd": "tt tm/curve", "kids": 1},
{"path": "tm/curve/points", "type": "floatvarar", "readonly": false, "cmd": "tt tm/curve/points", "visibility": 3},
{"path": "tm/alarm", "type": "float", "readonly": false, "cmd": "tt tm/alarm"},
{"path": "tm/stddev", "type": "float"},
{"path": "tm/raw", "type": "float"},
{"path": "ts", "type": "float", "kids": 4},
{"path": "tm/stddev", "type": "float", "readonly": false, "cmd": "run tt"},
{"path": "tm/raw", "type": "float", "readonly": false, "cmd": "run tt"},
{"path": "ts", "type": "float", "readonly": false, "cmd": "run tt", "kids": 4},
{"path": "ts/curve", "type": "text", "readonly": false, "cmd": "tt ts/curve", "kids": 1},
{"path": "ts/curve/points", "type": "floatvarar", "readonly": false, "cmd": "tt ts/curve/points", "visibility": 3},
{"path": "ts/alarm", "type": "float", "readonly": false, "cmd": "tt ts/alarm"},
{"path": "ts/stddev", "type": "float"},
{"path": "ts/raw", "type": "float"},
{"path": "ts_2", "type": "float", "visibility": 3, "kids": 4},
{"path": "ts_2/curve", "type": "text", "readonly": false, "cmd": "tt ts_2/curve", "visibility": 3, "kids": 1},
{"path": "ts/stddev", "type": "float", "readonly": false, "cmd": "run tt"},
{"path": "ts/raw", "type": "float", "readonly": false, "cmd": "run tt"},
{"path": "ts_2", "type": "float", "readonly": false, "cmd": "run tt", "kids": 4},
{"path": "ts_2/curve", "type": "text", "readonly": false, "cmd": "tt ts_2/curve", "kids": 1},
{"path": "ts_2/curve/points", "type": "floatvarar", "readonly": false, "cmd": "tt ts_2/curve/points", "visibility": 3},
{"path": "ts_2/alarm", "type": "float", "readonly": false, "cmd": "tt ts_2/alarm", "visibility": 3},
{"path": "ts_2/stddev", "type": "float", "visibility": 3},
{"path": "ts_2/raw", "type": "float", "visibility": 3},
{"path": "ts_2/alarm", "type": "float", "readonly": false, "cmd": "tt ts_2/alarm"},
{"path": "ts_2/stddev", "type": "float", "readonly": false, "cmd": "run tt"},
{"path": "ts_2/raw", "type": "float", "readonly": false, "cmd": "run tt"},
{"path": "set", "type": "float", "readonly": false, "cmd": "tt set", "kids": 18},
{"path": "set/mode", "type": "enum", "enum": {"disabled": -1, "off": 0, "controlling": 1, "manual": 2}, "readonly": false, "cmd": "tt set/mode"},
{"path": "set/reg", "type": "float"},
{"path": "set/reg", "type": "float", "readonly": false, "cmd": "run tt"},
{"path": "set/ramp", "type": "float", "readonly": false, "cmd": "tt set/ramp", "description": "maximum ramp in K/min (0: ramp off)"},
{"path": "set/wramp", "type": "float", "readonly": false, "cmd": "tt set/wramp"},
{"path": "set/smooth", "type": "float", "readonly": false, "cmd": "tt set/smooth", "description": "smooth time (minutes)"},
@@ -53,17 +53,17 @@
{"path": "set/resist", "type": "float", "readonly": false, "cmd": "tt set/resist"},
{"path": "set/maxheater", "type": "text", "readonly": false, "cmd": "tt set/maxheater", "description": "maximum heater limit, units should be given without space: W, mW, A, mA"},
{"path": "set/linearpower", "type": "float", "readonly": false, "cmd": "tt set/linearpower", "description": "when not 0, it is the maximum effective power, and the power is linear to the heater output"},
{"path": "set/maxpowerlim", "type": "float", "description": "the maximum power limit (before any booster or converter)"},
{"path": "set/maxpowerlim", "type": "float", "readonly": false, "cmd": "run tt", "description": "the maximum power limit (before any booster or converter)"},
{"path": "set/maxpower", "type": "float", "readonly": false, "cmd": "tt set/maxpower", "description": "maximum power [W]"},
{"path": "set/maxcurrent", "type": "float", "description": "the maximum current before any booster or converter"},
{"path": "set/maxcurrent", "type": "float", "readonly": false, "cmd": "run tt", "description": "the maximum current before any booster or converter"},
{"path": "set/manualpower", "type": "float", "readonly": false, "cmd": "tt set/manualpower"},
{"path": "set/power", "type": "float"},
{"path": "set/power", "type": "float", "readonly": false, "cmd": "run tt"},
{"path": "set/prop", "type": "float", "readonly": false, "cmd": "tt set/prop", "description": "bigger means more gain"},
{"path": "set/integ", "type": "float", "readonly": false, "cmd": "tt set/integ", "description": "bigger means faster"},
{"path": "set/deriv", "type": "float", "readonly": false, "cmd": "tt set/deriv"},
{"path": "setsamp", "type": "float", "readonly": false, "cmd": "tt setsamp", "kids": 18},
{"path": "setsamp/mode", "type": "enum", "enum": {"disabled": -1, "off": 0, "controlling": 1, "manual": 2}, "readonly": false, "cmd": "tt setsamp/mode"},
{"path": "setsamp/reg", "type": "float"},
{"path": "setsamp/reg", "type": "float", "readonly": false, "cmd": "run tt"},
{"path": "setsamp/ramp", "type": "float", "readonly": false, "cmd": "tt setsamp/ramp", "description": "maximum ramp in K/min (0: ramp off)"},
{"path": "setsamp/wramp", "type": "float", "readonly": false, "cmd": "tt setsamp/wramp"},
{"path": "setsamp/smooth", "type": "float", "readonly": false, "cmd": "tt setsamp/smooth", "description": "smooth time (minutes)"},
@@ -72,16 +72,16 @@
{"path": "setsamp/resist", "type": "float", "readonly": false, "cmd": "tt setsamp/resist"},
{"path": "setsamp/maxheater", "type": "text", "readonly": false, "cmd": "tt setsamp/maxheater", "description": "maximum heater limit, units should be given without space: W, mW, A, mA"},
{"path": "setsamp/linearpower", "type": "float", "readonly": false, "cmd": "tt setsamp/linearpower", "description": "when not 0, it is the maximum effective power, and the power is linear to the heater output"},
{"path": "setsamp/maxpowerlim", "type": "float", "description": "the maximum power limit (before any booster or converter)"},
{"path": "setsamp/maxpowerlim", "type": "float", "readonly": false, "cmd": "run tt", "description": "the maximum power limit (before any booster or converter)"},
{"path": "setsamp/maxpower", "type": "float", "readonly": false, "cmd": "tt setsamp/maxpower", "description": "maximum power [W]"},
{"path": "setsamp/maxcurrent", "type": "float", "description": "the maximum current before any booster or converter"},
{"path": "setsamp/maxcurrent", "type": "float", "readonly": false, "cmd": "run tt", "description": "the maximum current before any booster or converter"},
{"path": "setsamp/manualpower", "type": "float", "readonly": false, "cmd": "tt setsamp/manualpower"},
{"path": "setsamp/power", "type": "float"},
{"path": "setsamp/power", "type": "float", "readonly": false, "cmd": "run tt"},
{"path": "setsamp/prop", "type": "float", "readonly": false, "cmd": "tt setsamp/prop", "description": "bigger means more gain"},
{"path": "setsamp/integ", "type": "float", "readonly": false, "cmd": "tt setsamp/integ", "description": "bigger means faster"},
{"path": "setsamp/deriv", "type": "float", "readonly": false, "cmd": "tt setsamp/deriv"},
{"path": "display", "type": "text", "readonly": false, "cmd": "tt display"},
{"path": "remote", "type": "bool"}]},
{"path": "remote", "type": "bool", "readonly": false, "cmd": "run tt"}]},
"cc": {"base": "/cc", "params": [
{"path": "", "type": "bool", "kids": 96},
@@ -108,7 +108,7 @@
{"path": "mcr", "type": "float"},
{"path": "mot", "type": "float"},
{"path": "mw", "type": "float", "readonly": false, "cmd": "cc mw", "description": "correction pulse after automatic open"},
{"path": "hav", "type": "enum", "enum": {"none": 0, "int": 1, "ext": 2}, "readonly": false, "cmd": "cc hav"},
{"path": "hav", "type": "enum", "type": "enum", "enum": {"none": 0, "int": 1, "ext": 2}, "readonly": false, "cmd": "cc hav"},
{"path": "h", "type": "float"},
{"path": "hr", "type": "float"},
{"path": "hc", "type": "float"},
@@ -132,26 +132,26 @@
{"path": "hms", "type": "float"},
{"path": "hit", "type": "float", "readonly": false, "cmd": "cc hit"},
{"path": "hft", "type": "int", "readonly": false, "cmd": "cc hft"},
{"path": "hea", "type": "enum", "enum": {"0": 0, "1": 1, "6": 6}, "readonly": false, "cmd": "cc hea"},
{"path": "hch", "type": "int", "readonly": false, "cmd": "cc hch"},
{"path": "hwr0", "type": "float", "readonly": false, "cmd": "cc hwr0"},
{"path": "hem0", "type": "float", "readonly": false, "cmd": "cc hem0", "description": "sensor length in mm from top to empty pos."},
{"path": "hfu0", "type": "float", "readonly": false, "cmd": "cc hfu0", "description": "sensor length in mm from top to full pos."},
{"path": "hd0", "type": "float", "readonly": false, "cmd": "cc hd0", "description": "external sensor drive current (mA)"},
{"path": "h0", "type": "float"},
{"path": "hs0", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}},
{"path": "h1", "type": "float"},
{"path": "hs1", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}},
{"path": "h2", "type": "float"},
{"path": "hs2", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}},
{"path": "h3", "type": "float"},
{"path": "hs3", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}},
{"path": "h4", "type": "float"},
{"path": "hs4", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}},
{"path": "h5", "type": "float"},
{"path": "hs5", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}},
{"path": "hea", "type": "enum", "enum": {"0": 0, "1": 1, "6": 2}, "readonly": false, "cmd": "cc hea"},
{"path": "hch", "type": "int", "readonly": false, "cmd": "cc hch", "visibility": 3},
{"path": "hwr0", "type": "float", "readonly": false, "cmd": "cc hwr0", "visibility": 3},
{"path": "hem0", "type": "float", "readonly": false, "cmd": "cc hem0", "description": "sensor length in mm from top to empty pos.", "visibility": 3},
{"path": "hfu0", "type": "float", "readonly": false, "cmd": "cc hfu0", "description": "sensor length in mm from top to full pos.", "visibility": 3},
{"path": "hd0", "type": "float", "readonly": false, "cmd": "cc hd0", "description": "external sensor drive current (mA)", "visibility": 3},
{"path": "h0", "type": "float", "visibility": 3},
{"path": "hs0", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}, "visibility": 3},
{"path": "h1", "type": "float", "visibility": 3},
{"path": "hs1", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}, "visibility": 3},
{"path": "h2", "type": "float", "visibility": 3},
{"path": "hs2", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}, "visibility": 3},
{"path": "h3", "type": "float", "visibility": 3},
{"path": "hs3", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}, "visibility": 3},
{"path": "h4", "type": "float", "visibility": 3},
{"path": "hs4", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}, "visibility": 3},
{"path": "h5", "type": "float", "visibility": 3},
{"path": "hs5", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}, "visibility": 3},
{"path": "hfb", "type": "float"},
{"path": "nav", "type": "bool", "readonly": false, "cmd": "cc nav"},
{"path": "nav", "type": "enum", "type": "enum", "enum": {"none": 0, "int": 1, "ext": 2}, "readonly": false, "cmd": "cc nav"},
{"path": "nu", "type": "float"},
{"path": "nl", "type": "float"},
{"path": "nth", "type": "float", "readonly": false, "cmd": "cc nth"},
@@ -183,16 +183,15 @@
{"path": "bdl", "type": "float", "readonly": false, "cmd": "cc bdl"}]},
"nv": {"base": "/nv", "params": [
{"path": "", "type": "enum", "enum": {"fixed": 0, "controlled": 1, "automatic": 2, "close": 3, "open": 4}, "readonly": false, "cmd": "nv", "kids": 12},
{"path": "", "type": "enum", "enum": {"fixed": 0, "controlled": 1, "automatic": 2, "close": 3, "open": 4}, "readonly": false, "cmd": "nv", "kids": 11},
{"path": "send", "type": "text", "readonly": false, "cmd": "nv send", "visibility": 3},
{"path": "status", "type": "text", "visibility": 3},
{"path": "motstat", "type": "enum", "enum": {"idle": 0, "opening": 1, "closing": 2, "opened": 3, "closed": 4, "no_motor": 5}},
{"path": "flow", "type": "float"},
{"path": "set", "type": "float", "readonly": false, "cmd": "nv set"},
{"path": "flowmax", "type": "float", "readonly": false, "cmd": "nv flowmax"},
{"path": "flowp", "type": "float", "description": "flow calculated from pressure before pump"},
{"path": "flowp", "type": "float"},
{"path": "span", "type": "float"},
{"path": "use_pressure", "type": "bool", "readonly": false, "cmd": "nv use_pressure", "description": "use pressure instead of flow meter for control"},
{"path": "ctrl", "type": "none", "kids": 13},
{"path": "ctrl/regtext", "type": "text"},
{"path": "ctrl/prop_o", "type": "float", "readonly": false, "cmd": "nv ctrl/prop_o", "description": "prop [sec/mbar] when opening. above 4 mbar a 10 times lower value is used"},
@@ -236,34 +235,15 @@
{"path": "calib/ln_per_min_per_mbar", "type": "float", "readonly": false, "cmd": "nv calib/ln_per_min_per_mbar"},
{"path": "calib/mbar_offset", "type": "float", "readonly": false, "cmd": "nv calib/mbar_offset"}]},
"hefill": {"base": "/hefill", "params": [
{"path": "", "type": "enum", "enum": {"watching": 0, "filling": 1, "inactive": 2, "manualfill": 3}, "readonly": false, "cmd": "hefill", "kids": 16},
{"path": "send", "type": "text", "readonly": false, "cmd": "hefill send", "visibility": 3},
{"path": "status", "type": "text", "visibility": 3},
{"path": "state", "type": "text"},
{"path": "readpath", "type": "text", "readonly": false, "cmd": "hefill readpath", "visibility": 3},
{"path": "lowlevel", "type": "float", "readonly": false, "cmd": "hefill lowlevel"},
{"path": "highlevel", "type": "float", "readonly": false, "cmd": "hefill highlevel"},
{"path": "smooth", "type": "float"},
{"path": "minfillminutes", "type": "float", "readonly": false, "cmd": "hefill minfillminutes"},
{"path": "maxfillminutes", "type": "float", "readonly": false, "cmd": "hefill maxfillminutes"},
{"path": "minholdhours", "type": "float", "readonly": false, "cmd": "hefill minholdhours"},
{"path": "maxholdhours", "type": "float", "readonly": false, "cmd": "hefill maxholdhours"},
{"path": "tolerance", "type": "float", "readonly": false, "cmd": "hefill tolerance"},
{"path": "badreadingminutes", "type": "float", "readonly": false, "cmd": "hefill badreadingminutes"},
{"path": "tubecoolingminutes", "type": "float", "readonly": false, "cmd": "hefill tubecoolingminutes"},
{"path": "vessellimit", "type": "float", "readonly": false, "cmd": "hefill vessellimit"},
{"path": "vext", "type": "float"}]},
"hepump": {"base": "/hepump", "params": [
{"path": "", "type": "enum", "enum": {"neodry": 8, "xds35_auto": 0, "xds35_manual": 1, "sv65": 2, "other": 3, "no": -1}, "readonly": false, "cmd": "hepump", "description": "xds35: scroll pump, sv65: leybold", "kids": 10},
{"path": "send", "type": "text", "readonly": false, "cmd": "hepump send", "visibility": 3},
{"path": "status", "type": "text", "visibility": 3},
{"path": "running", "type": "bool", "readonly": false, "cmd": "hepump running"},
{"path": "eco", "type": "bool", "readonly": false, "cmd": "hepump eco", "visibility": 3},
{"path": "auto", "type": "bool", "readonly": false, "cmd": "hepump auto", "visibility": 3},
{"path": "eco", "type": "bool", "readonly": false, "cmd": "hepump eco"},
{"path": "auto", "type": "bool", "readonly": false, "cmd": "hepump auto"},
{"path": "valve", "type": "enum", "enum": {"closed": 0, "closing": 1, "opening": 2, "opened": 3, "undefined": 4}, "readonly": false, "cmd": "hepump valve"},
{"path": "eco_t_lim", "type": "float", "readonly": false, "cmd": "hepump eco_t_lim", "description": "switch off eco mode when T_set < eco_t_lim and T < eco_t_lim * 2", "visibility": 3},
{"path": "eco_t_lim", "type": "float", "readonly": false, "cmd": "hepump eco_t_lim", "description": "switch off eco mode when T_set < eco_t_lim and T < eco_t_lim * 2"},
{"path": "calib", "type": "float", "readonly": false, "cmd": "hepump calib", "visibility": 3},
{"path": "health", "type": "float"}]},
@@ -311,11 +291,11 @@
{"path": "save", "type": "bool", "readonly": false, "cmd": "nvflow save", "description": "unchecked: current calib is not saved. set checked: save calib"}]},
"ln2fill": {"base": "/ln2fill", "params": [
{"path": "", "type": "enum", "enum": {"watching": 0, "filling": 1, "inactive": 2, "manualfill": 3}, "readonly": false, "cmd": "ln2fill", "kids": 14},
{"path": "", "type": "enum", "enum": {"watching": 0, "fill": 1, "inactive": 2}, "readonly": false, "cmd": "ln2fill", "kids": 14},
{"path": "send", "type": "text", "readonly": false, "cmd": "ln2fill send", "visibility": 3},
{"path": "status", "type": "text", "visibility": 3},
{"path": "state", "type": "text"},
{"path": "readpath", "type": "text", "readonly": false, "cmd": "ln2fill readpath", "visibility": 3},
{"path": "readlevel", "type": "text", "readonly": false, "cmd": "ln2fill readlevel", "visibility": 3},
{"path": "lowlevel", "type": "float", "readonly": false, "cmd": "ln2fill lowlevel"},
{"path": "highlevel", "type": "float", "readonly": false, "cmd": "ln2fill highlevel"},
{"path": "smooth", "type": "float"},
@@ -327,33 +307,52 @@
{"path": "badreadingminutes", "type": "float", "readonly": false, "cmd": "ln2fill badreadingminutes"},
{"path": "tubecoolingminutes", "type": "float", "readonly": false, "cmd": "ln2fill tubecoolingminutes"}]},
"hefill": {"base": "/hefill", "params": [
{"path": "", "type": "enum", "enum": {"watching": 0, "fill": 1, "inactive": 2}, "readonly": false, "cmd": "hefill", "kids": 16},
{"path": "send", "type": "text", "readonly": false, "cmd": "hefill send", "visibility": 3},
{"path": "status", "type": "text", "visibility": 3},
{"path": "state", "type": "text"},
{"path": "readlevel", "type": "text", "readonly": false, "cmd": "hefill readlevel", "visibility": 3},
{"path": "lowlevel", "type": "float", "readonly": false, "cmd": "hefill lowlevel"},
{"path": "highlevel", "type": "float", "readonly": false, "cmd": "hefill highlevel"},
{"path": "smooth", "type": "float"},
{"path": "minfillminutes", "type": "float", "readonly": false, "cmd": "hefill minfillminutes"},
{"path": "maxfillminutes", "type": "float", "readonly": false, "cmd": "hefill maxfillminutes"},
{"path": "minholdhours", "type": "float", "readonly": false, "cmd": "hefill minholdhours"},
{"path": "maxholdhours", "type": "float", "readonly": false, "cmd": "hefill maxholdhours"},
{"path": "tolerance", "type": "float", "readonly": false, "cmd": "hefill tolerance"},
{"path": "badreadingminutes", "type": "float", "readonly": false, "cmd": "hefill badreadingminutes"},
{"path": "tubecoolingminutes", "type": "float", "readonly": false, "cmd": "hefill tubecoolingminutes"},
{"path": "vessellimit", "type": "float", "readonly": false, "cmd": "hefill vessellimit"},
{"path": "vext", "type": "float"}]},
"mf": {"base": "/mf", "params": [
{"path": "", "type": "float", "readonly": false, "cmd": "run mf", "kids": 26},
{"path": "persmode", "type": "int", "readonly": false, "cmd": "mf persmode"},
{"path": "perswitch", "type": "int"},
{"path": "perswitch", "type": "int", "readonly": false, "cmd": "run mf"},
{"path": "nowait", "type": "int", "readonly": false, "cmd": "mf nowait"},
{"path": "maxlimit", "type": "float", "visibility": 3},
{"path": "maxlimit", "type": "float", "readonly": false, "cmd": "run mf", "visibility": 3},
{"path": "limit", "type": "float", "readonly": false, "cmd": "mf limit"},
{"path": "ramp", "type": "float", "readonly": false, "cmd": "mf ramp"},
{"path": "perscurrent", "type": "float", "readonly": false, "cmd": "mf perscurrent"},
{"path": "perslimit", "type": "float", "readonly": false, "cmd": "mf perslimit"},
{"path": "perswait", "type": "int", "readonly": false, "cmd": "mf perswait"},
{"path": "persdelay", "type": "int", "readonly": false, "cmd": "mf persdelay"},
{"path": "current", "type": "float"},
{"path": "measured", "type": "float"},
{"path": "voltage", "type": "float"},
{"path": "lastfield", "type": "float", "visibility": 3},
{"path": "ampRamp", "type": "float", "visibility": 3},
{"path": "inductance", "type": "float", "visibility": 3},
{"path": "current", "type": "float", "readonly": false, "cmd": "run mf"},
{"path": "measured", "type": "float", "readonly": false, "cmd": "run mf"},
{"path": "voltage", "type": "float", "readonly": false, "cmd": "run mf"},
{"path": "lastfield", "type": "float", "readonly": false, "cmd": "run mf", "visibility": 3},
{"path": "ampRamp", "type": "float", "readonly": false, "cmd": "run mf", "visibility": 3},
{"path": "inductance", "type": "float", "readonly": false, "cmd": "run mf", "visibility": 3},
{"path": "trainedTo", "type": "float", "readonly": false, "cmd": "mf trainedTo"},
{"path": "trainMode", "type": "int"},
{"path": "trainMode", "type": "int", "readonly": false, "cmd": "run mf"},
{"path": "external", "type": "int", "readonly": false, "cmd": "mf external"},
{"path": "startScript", "type": "text", "readonly": false, "cmd": "mf startScript", "visibility": 3},
{"path": "is_running", "type": "int", "readonly": false, "cmd": "mf is_running", "visibility": 3},
{"path": "is_running", "type": "int", "readonly": false, "cmd": "run mf", "visibility": 3},
{"path": "verbose", "type": "int", "readonly": false, "cmd": "mf verbose", "visibility": 3},
{"path": "driver", "type": "text", "visibility": 3},
{"path": "creationCmd", "type": "text", "visibility": 3},
{"path": "targetValue", "type": "float"},
{"path": "driver", "type": "text", "readonly": false, "cmd": "run mf", "visibility": 3},
{"path": "creationCmd", "type": "text", "readonly": false, "cmd": "run mf", "visibility": 3},
{"path": "targetValue", "type": "float", "readonly": false, "cmd": "run mf"},
{"path": "status", "type": "text", "readonly": false, "cmd": "mf status", "visibility": 3}]},
"lev": {"base": "/lev", "params": [
@@ -363,22 +362,7 @@
{"path": "mode", "type": "enum", "enum": {"slow": 0, "fast (switches to slow automatically after filling)": 1}, "readonly": false, "cmd": "lev mode"},
{"path": "n2", "type": "float"}]},
"table": {"base": "/table", "params": [
{"path": "", "type": "none", "kids": 17},
{"path": "send", "type": "text", "readonly": false, "cmd": "table send", "visibility": 3},
{"path": "status", "type": "text", "visibility": 3},
{"path": "fix_tt_set_prop", "type": "bool", "readonly": false, "cmd": "table fix_tt_set_prop"},
{"path": "val_tt_set_prop", "type": "float"},
{"path": "tbl_tt_set_prop", "type": "text", "readonly": false, "cmd": "table tbl_tt_set_prop", "description": "enter value pair separated with colon T1:par1 T2:par2 ..."},
{"path": "fix_tt_set_integ", "type": "bool", "readonly": false, "cmd": "table fix_tt_set_integ"},
{"path": "val_tt_set_integ", "type": "float"},
{"path": "tbl_tt_set_integ", "type": "text", "readonly": false, "cmd": "table tbl_tt_set_integ", "description": "enter value pair separated with colon T1:par1 T2:par2 ..."},
{"path": "fix_tt_dblctrl_int2", "type": "bool", "readonly": false, "cmd": "table fix_tt_dblctrl_int2"},
{"path": "val_tt_dblctrl_int2", "type": "float"},
{"path": "tbl_tt_dblctrl_int2", "type": "text", "readonly": false, "cmd": "table tbl_tt_dblctrl_int2", "description": "enter value pair separated with colon T1:par1 T2:par2 ..."},
{"path": "fix_tt_dblctrl_prop_up", "type": "bool", "readonly": false, "cmd": "table fix_tt_dblctrl_prop_up"},
{"path": "val_tt_dblctrl_prop_up", "type": "float"},
{"path": "tbl_tt_dblctrl_prop_up", "type": "text", "readonly": false, "cmd": "table tbl_tt_dblctrl_prop_up", "description": "enter value pair separated with colon T1:par1 T2:par2 ..."},
{"path": "fix_tt_dblctrl_prop_lo", "type": "bool", "readonly": false, "cmd": "table fix_tt_dblctrl_prop_lo"},
{"path": "val_tt_dblctrl_prop_lo", "type": "float"},
{"path": "tbl_tt_dblctrl_prop_lo", "type": "text", "readonly": false, "cmd": "table tbl_tt_dblctrl_prop_lo", "description": "enter value pair separated with colon T1:par1 T2:par2 ..."}]}}
"prep0": {"base": "/prep0", "params": [
{"path": "", "type": "text", "readonly": false, "cmd": "prep0", "kids": 2},
{"path": "send", "type": "text", "readonly": false, "cmd": "prep0 send", "visibility": 3},
{"path": "status", "type": "text", "visibility": 3}]}}

View File

@@ -1,20 +1,20 @@
# pylint: skip-file
Node('ccr12',
'[sim] CCR12 box of MLZ Sample environment group\n'
'\n'
'Contains a Lakeshore 336 and an PLC controlling the compressor\n'
'and some valves.\n'
'\n'
'This is an improved version, how we think it should be.\n',
'[sim] CCR12 box of MLZ Sample environment group'
''
'Contains a Lakeshore 336 and an PLC controlling the compressor'
'and some valves.'
''
'This is an improved version, how we think it should be.',
'tcp://10767',
)
Mod('T_ccr12',
'frappy.simulation.SimDrivable',
'Main temperature control node of CCR12.\n'
'\n'
'Switches between regulation on stick and regulation on tube depending on temperature requested.\n'
'May also pump gas for higher temperatures, if configured.\n'
'Main temperature control node of CCR12.'
''
'Switches between regulation on stick and regulation on tube depending on temperature requested.'
'May also pump gas for higher temperatures, if configured.'
'Manual switching of the regulation node is supported via the regulationmode parameter.',
value = Param(default=300,
datatype={"type":"double", "min":0, "max":600, "unit":"K"}),

View File

@@ -54,7 +54,7 @@ Mod('T',
'frappy_psi.softcal.Sensor',
'temperature sensor, soft calibration',
rawsensor='res',
calcurve='X132254',
calib='X132254',
value=Param(
unit='K',
),

View File

@@ -16,5 +16,5 @@ Mod('T2',
'',
value = Param(unit = 'K'),
rawsensor = 'r2',
calcurve = 'X131346',
calib = 'X131346',
)

View File

@@ -43,5 +43,5 @@ Mod('ts',
'calibrated value for ts',
value = Param(unit = 'K'),
rawsensor = 'tsraw',
calcurve = 'X133834',
calib = 'X133834',
)

View File

@@ -1,37 +0,0 @@
Node('fibrestick.psi.ch',
'stick with laser fibre',
)
Mod('sea_stick',
'frappy_psi.sea.SeaClient',
'SEA stick connection',
config='fibre.stick',
service='stick',
)
Mod('ts',
'frappy_psi.sea.SeaReadable', '',
meaning=['temperature', 30],
io='sea_stick',
sea_object='tt',
json_file='ma11.config.json',
rel_paths=['ts'],
)
Mod('laser_io',
'frappy_psi.pdld.IO',
'laser IO',
uri='serial:///dev/serial/by-path/pci-0000:00:14.0-usb-0:4.4.4.2:1.0-port0?baudrate=9600',
)
Mod('laser',
'frappy_psi.pdld.Laser',
'laser switch',
io='laser_io',
)
Mod('laser_power',
'frappy_psi.pdld.LaserPower',
'laser power',
io='laser_io',
)

View File

@@ -38,6 +38,6 @@ Mod('T_sample',
output_module='htr_sample',
p=1,
i=0.01,
calcurve='X161269',
calib='X161269',
value=Param(unit='K'),
)

View File

@@ -9,23 +9,10 @@ Mod('sea_stick',
service='stick',
)
Mod('ts_sea',
'frappy_psi.sea.SeaReadable',
'readable sample stick T',
io='sea_stick',
json_file='ma7.config.json',
sea_object='tt',
rel_paths=['ts', 'setsamp'],
)
Mod('ts',
'frappy_psi.parmod.Converging',
'drivable stick T using setsamp',
unit='K',
read='ts_sea.value',
write='ts_sea.setsamp',
meaning=['temperature', 20],
settling_time=20,
tolerance=1,
'frappy_psi.sea.SeaReadable', '',
meaning=['temperature', 30],
io='sea_stick',
sea_path='tt/ts',
json_file='ma7.config.json',
)

View File

@@ -1,33 +1,3 @@
import os
Node('mb11.stick.sea.psi.ch',
'MB11 standard sample stick (do not use)',
)
frappy_main_port = os.environ.get('FRAPPY_MAIN_PORT', 0)
Mod('itc1_',
'frappy.core.Proxy',
'itc1 on main frappy server',
remote_class = 'frappy_psi.mercury.IO',
uri = f'tcp://localhost:{frappy_main_port}',
module='itc1',
# export = False,
)
Mod('T_sample',
'frappy_psi.mercury.TemperatureLoop',
'T at sample stick sensor',
meaning=['temperature', 30],
io='itc1_',
slot='MB1.T1',
)
Mod('htr_sample',
'frappy_psi.mercury.HeaterOutput',
'sample stick heater power',
slot='MB0.H1',
io='itc1_',
)

View File

@@ -1,34 +0,0 @@
Node('mspare.stick.sea.psi.ch',
'MA generic sample stick',
)
Mod('sea_stick',
'frappy_psi.sea.SeaClient',
'SEA stick connection',
config='mspare.stick',
service='stick',
)
Mod('ts',
'frappy_psi.sea.SeaReadable',
'sample stick temperature',
io='sea_stick',
json_file='ma6.config.json',
sea_object='tt',
rel_paths=['ts', 'setsamp'],
meaning=['temperature', 30],
)
"""
Mod('ts',
'frappy_psi.parmod.Converging',
'drivable stick T using setsamp',
meaning=['temperature', 25],
unit='K',
read='tsam.value',
write='tsam.setsamp',
settling_time=20,
tolerance=1,
)
"""

View File

@@ -1,24 +0,0 @@
Node('tcstest.psi.ch',
'heater tcs test',
'tcp://5000',
)
Mod('io',
'frappy_psi.tcs.IO',
'tcs communication',
uri='linse-leiden-ts:3005',
)
Mod('still_htr',
'frappy_psi.tcs.Heater',
'still heater',
io='io',
channel=2,
)
Mod('mix_htr',
'frappy_psi.tcs.Heater',
'mixing chamber heater',
io='io',
channel=3,
)

View File

@@ -1,15 +0,0 @@
Node('softcal.function.test',
'test the function class',
'tcp://5000',
)
Mod('sim_writable',
'frappy_demo.test.SimpleWritable',
'simulation of a writable for function test',
)
Mod('function',
'frappy_psi.softcal.Function',
'function test',
rawsensor = 'sim_writable',
)

View File

@@ -1,17 +0,0 @@
Node('test_ips.psi.ch',
'ips test',
'tcp://5000',
)
Mod('io',
'frappy_psi.oiclassic.IPS_IO',
'',
uri='ma11-ts:3002',
)
Mod('B',
'frappy_psi.oiclassic.Field',
'magnetic field',
io='io',
target=Param(max=0.2),
)

View File

@@ -1,81 +0,0 @@
Node('thermofischer.psi.ch',
'thermofischer_waterbath',
'tcp://5000',
)
Mod('wio_1',
'frappy_psi.thermofisher.ThermFishIO',
'connection for water bath',
uri='serial:///dev/ttyUSB0?baudrate=19200', # 3001 = Port 1, 3002 = Port 2 ...
)
Mod('wio_2',
'frappy_psi.thermofisher.ThermFishIO',
'connection for water bath',
uri='serial:///dev/ttyUSB1?baudrate=19200', # 3001 = Port 1, 3002 = Port 2 ...
)
Mod('wio_3',
'frappy_psi.thermofisher.ThermFishIO',
'connection for water bath',
uri='serial:///dev/ttyUSB2?baudrate=19200', # 3001 = Port 1, 3002 = Port 2 ...
)
Mod('Tbath_1',
'frappy_psi.thermofisher.TemperatureLoopA10',
'water_bath_1',
io='wio_1',
control_active=0,
target=25,
tolerance=0.1,
settling_time=20,
)
Mod('Tbath_2',
'frappy_psi.thermofisher.TemperatureLoopA10',
'water_bath_2',
io='wio_2',
control_active=0,
target=25,
tolerance=0.1,
settling_time=20,
)
Mod('Tbath_3',
'frappy_psi.thermofisher.TemperatureLoopA10',
'water_bath_3',
io='wio_3',
control_active=0,
target=25,
tolerance=0.1,
settling_time=20,
)
Mod('valve_1',
'frappy_psi.ionopimax.DigitalOutput',
'valve_for_fast_water_temperature_changing',
addr = 'o1',
target = 0,
)
Mod('valve_2',
'frappy_psi.ionopimax.DigitalOutput',
'valve_for_fast_water_temperature_changing',
addr = 'o2',
target = 0,
)
Mod('valve_3',
'frappy_psi.ionopimax.DigitalOutput',
'valve_for_fast_water_temperature_changing',
addr = 'o3',
target = 0,
)
Mod('temp_sensor_1',
'frappy_psi.ionopimax.SimpleVoltageInput',
'temperatur_sensor_sample',
rawrange = (0.0, 10.0),
valuerange = (-40.0, 150.0),
addr = 'ai1_mv',
)

View File

@@ -52,7 +52,7 @@ Mod('T',
'frappy_psi.softcal.Sensor',
'sample T',
rawsensor='res',
calcurve='X132254',
calib='X132254',
value=Param(
unit='K',
),

View File

@@ -88,13 +88,16 @@ Mod('interlocks',
vacuum_limit = 0.1,
)
Mod('p_io',
'frappy_psi.pfeiffer.IO',
'pressure io',
uri='serial:///dev/ttyUSBlower',
)
Mod('p',
'frappy_psi.ionopimax.LogVoltageInput',
'frappy_psi.pfeiffer.Pressure',
'pressure reading',
addr = 'av1',
rawrange = (1.8, 8.6),
valuerange = (1e-7, 1000),
value = Param(unit='mbar'),
io = 'p_io',
)

161
debian/changelog vendored
View File

@@ -1,65 +1,4 @@
frappy-core (0.20.7) stable; urgency=medium
* fix debian install
-- Georg Brandl <jenkins@frm2.tum.de> Fri, 25 Jul 2025 13:22:54 +0200
frappy-core (0.20.6) stable; urgency=medium
[ Markus Zolliker ]
* config: add 'include' and 'override'
* frappy.client.interactive: no pathlib needed here
[ Georg Brandl ]
* install systemd units to /usr/lib
-- Markus Zolliker <jenkins@frm2.tum.de> Thu, 24 Jul 2025 22:26:02 +0200
frappy-core (0.20.5) stable; urgency=medium
[ Markus Zolliker ]
* add sim-server again based on socketserver
* fix bug when overriding a property with bare value
* frappy.server bug fix: server name must not be a list
* frappy.server: use server name for SecNode name
* frappy.server: remove comment about opts in SecNode/Dispatcher
* follow up change for 'better order of accessibles' (34904)
* better message when a parameter is overridden by an invalid value
* pylint: increase max number of positional arguments
* an error on a write must not send an error update
* fix bug in change 35001 (better error message)
* make UPD listener work when 'tcp://' is omitted on interface
* config: do not override equipment_id with name
* equipment_id for merged configs and routed nodes
* core: alternative approach for optional accessibles
* core: simplify test for methods names
[ Georg Brandl ]
* debian: update compat
* remove wrong <weight> from fonts on Qt6
[ Markus Zolliker ]
* config: validate value and default of parameters
* config: Mod() should return config dict
* stop poller threads on shutdown
* fix overriding Parameter with value
* improve error messages on module creation
* make sure unexported modules are initialized
* change to new visibility spec
* follow-up change to 35931: make Proxy a Module
[ Konstantin Kholostov ]
* installer: add recipe to build macOS app bundle
[ Markus Zolliker ]
* frappy.client.SecopClient: fix setParameterFromString
* frappy_psi/ls370res: various bug fixes
* client: add SecopClient.execCommandFromString
* frappy.client.interactive: improve updates while driving
-- Markus Zolliker <jenkins@frm2.tum.de> Mon, 12 May 2025 14:03:22 +0200
frappy-core (0.20.4) stable; urgency=medium
frappy-core (0.20.4) jammy; urgency=medium
[ Georg Brandl ]
* remove unused file
@@ -78,7 +17,7 @@ frappy-core (0.20.4) stable; urgency=medium
-- Georg Brandl <jenkins@frm2.tum.de> Thu, 14 Nov 2024 14:43:54 +0100
frappy-core (0.20.3) stable; urgency=medium
frappy-core (0.20.3) jammy; urgency=medium
[ Georg Brandl ]
* fixup test for cfg_editor utils to run from non-checkout, and fix names, and remove example code
@@ -88,7 +27,7 @@ frappy-core (0.20.3) stable; urgency=medium
-- Georg Brandl <jenkins@frm2.tum.de> Thu, 07 Nov 2024 10:57:11 +0100
frappy-core (0.20.2) stable; urgency=medium
frappy-core (0.20.2) jammy; urgency=medium
[ Georg Brandl ]
* pylint: do not try to infer too much
@@ -134,7 +73,7 @@ frappy-core (0.20.2) stable; urgency=medium
-- Georg Brandl <jenkins@frm2.tum.de> Wed, 06 Nov 2024 10:40:26 +0100
frappy-core (0.20.1) stable; urgency=medium
frappy-core (0.20.1) jammy; urgency=medium
* gui: do not add a console logger when there is no sys.stdout
* remove unused test class
@@ -144,7 +83,7 @@ frappy-core (0.20.1) stable; urgency=medium
-- Georg Brandl <jenkins@frm2.tum.de> Thu, 17 Oct 2024 16:31:27 +0200
frappy-core (0.20.0) stable; urgency=medium
frappy-core (0.20.0) jammy; urgency=medium
[ Alexander Zaft ]
* bin: remove make_doc
@@ -189,7 +128,7 @@ frappy-core (0.20.0) stable; urgency=medium
-- Alexander Zaft <jenkins@frm2.tum.de> Thu, 17 Oct 2024 14:24:29 +0200
frappy-core (0.19.10) stable; urgency=medium
frappy-core (0.19.10) jammy; urgency=medium
[ Alexander Zaft ]
* debian: let frappy-core replace frappy-demo
@@ -199,25 +138,25 @@ frappy-core (0.19.10) stable; urgency=medium
-- Alexander Zaft <jenkins@frm2.tum.de> Wed, 07 Aug 2024 17:00:06 +0200
frappy-core (0.19.9) stable; urgency=medium
frappy-core (0.19.9) jammy; urgency=medium
* debian: fix missing install dir
-- Georg Brandl <jenkins@frm2.tum.de> Tue, 06 Aug 2024 16:02:50 +0200
frappy-core (0.19.8) stable; urgency=medium
frappy-core (0.19.8) jammy; urgency=medium
* debian: move demo into core
-- Georg Brandl <jenkins@frm2.tum.de> Tue, 06 Aug 2024 15:58:20 +0200
frappy-core (0.19.7) stable; urgency=medium
frappy-core (0.19.7) jammy; urgency=medium
* lib: GeneralConfig fix missing keys logic
-- Alexander Zaft <jenkins@frm2.tum.de> Tue, 06 Aug 2024 15:04:07 +0200
frappy-core (0.19.6) stable; urgency=medium
frappy-core (0.19.6) jammy; urgency=medium
[ Jens Krüger ]
* SINQ/SEA: Fix import error due to None value
@@ -231,7 +170,7 @@ frappy-core (0.19.6) stable; urgency=medium
-- Jens Krüger <jenkins@frm2.tum.de> Tue, 06 Aug 2024 13:56:51 +0200
frappy-core (0.19.5) stable; urgency=medium
frappy-core (0.19.5) jammy; urgency=medium
* client: fix how to raise error on wrong ident
* add missing requirements to setup.py
@@ -240,13 +179,13 @@ frappy-core (0.19.5) stable; urgency=medium
-- Alexander Zaft <jenkins@frm2.tum.de> Mon, 05 Aug 2024 09:30:53 +0200
frappy-core (0.19.4) stable; urgency=medium
frappy-core (0.19.4) jammy; urgency=medium
* actually exclude cfg-editor
-- Georg Brandl <jenkins@frm2.tum.de> Fri, 26 Jul 2024 11:46:10 +0200
frappy-core (0.19.3) stable; urgency=medium
frappy-core (0.19.3) jammy; urgency=medium
[ Markus Zolliker ]
* frappy_psi.extparams.StructParam: fix doc + simplify
@@ -266,7 +205,7 @@ frappy-core (0.19.3) stable; urgency=medium
-- Markus Zolliker <jenkins@frm2.tum.de> Fri, 26 Jul 2024 08:36:43 +0200
frappy-core (0.19.2) stable; urgency=medium
frappy-core (0.19.2) jammy; urgency=medium
[ l_samenv ]
* fix missing update after error on parameter
@@ -291,7 +230,7 @@ frappy-core (0.19.2) stable; urgency=medium
-- l_samenv <jenkins@frm2.tum.de> Tue, 18 Jun 2024 15:21:43 +0200
frappy-core (0.19.1) stable; urgency=medium
frappy-core (0.19.1) jammy; urgency=medium
[ Markus Zolliker ]
* SecopClient.online must be True while activating
@@ -303,7 +242,7 @@ frappy-core (0.19.1) stable; urgency=medium
-- Markus Zolliker <jenkins@frm2.tum.de> Fri, 07 Jun 2024 16:50:33 +0200
frappy-core (0.19.0) stable; urgency=medium
frappy-core (0.19.0) jammy; urgency=medium
[ Markus Zolliker ]
* simulation: extra_params might be a list
@@ -359,14 +298,14 @@ frappy-core (0.19.0) stable; urgency=medium
-- Markus Zolliker <jenkins@frm2.tum.de> Thu, 16 May 2024 11:31:25 +0200
frappy-core (0.18.1) stable; urgency=medium
frappy-core (0.18.1) focal; urgency=medium
* mlz: Zapf fix unit handling and small errors
* mlz: entangle fix limit check
-- Alexander Zaft <jenkins@frm2.tum.de> Wed, 24 Jan 2024 14:59:21 +0100
frappy-core (0.18.0) stable; urgency=medium
frappy-core (0.18.0) focal; urgency=medium
[ Alexander Zaft ]
* Add shutdownModule function
@@ -477,7 +416,7 @@ frappy-core (0.18.0) stable; urgency=medium
-- Alexander Zaft <jenkins@frm2.tum.de> Wed, 17 Jan 2024 12:35:00 +0100
frappy-core (0.17.13) stable; urgency=medium
frappy-core (0.17.13) focal; urgency=medium
[ Alexander Zaft ]
* add egg-info to gitignore
@@ -498,7 +437,7 @@ frappy-core (0.17.13) stable; urgency=medium
-- Alexander Zaft <jenkins@frm2.tum.de> Tue, 20 Jun 2023 14:38:00 +0200
frappy-core (0.17.12) stable; urgency=medium
frappy-core (0.17.12) focal; urgency=medium
[ Alexander Zaft ]
* Warn about duplicate module definitions in a file
@@ -523,7 +462,7 @@ frappy-core (0.17.12) stable; urgency=medium
-- Alexander Zaft <jenkins@frm2.tum.de> Tue, 13 Jun 2023 06:51:27 +0200
frappy-core (0.17.11) stable; urgency=medium
frappy-core (0.17.11) focal; urgency=medium
[ Alexander Zaft ]
* Add __format__ to EnumMember
@@ -596,7 +535,7 @@ frappy-core (0.17.11) stable; urgency=medium
-- Alexander Zaft <jenkins@frm2.tum.de> Thu, 25 May 2023 09:38:24 +0200
frappy-core (0.17.10) stable; urgency=medium
frappy-core (0.17.10) focal; urgency=medium
* Change leftover %-logging calls to lazy
* Convert formatting automatically to f-strings
@@ -608,25 +547,25 @@ frappy-core (0.17.10) stable; urgency=medium
-- Alexander Zaft <jenkins@frm2.tum.de> Wed, 19 Apr 2023 14:32:52 +0200
frappy-core (0.17.9) stable; urgency=medium
frappy-core (0.17.9) focal; urgency=medium
* interactive client: avoid messing up the input line
-- Markus Zolliker <jenkins@frm2.tum.de> Tue, 11 Apr 2023 16:09:03 +0200
frappy-core (0.17.8) stable; urgency=medium
frappy-core (0.17.8) focal; urgency=medium
* Debian: Fix typo
-- Jens Krüger <jenkins@frm2.tum.de> Wed, 05 Apr 2023 07:20:25 +0200
frappy-core (0.17.7) stable; urgency=medium
frappy-core (0.17.7) focal; urgency=medium
* Debian: add pyqtgraph dependency
-- Jens Krüger <jenkins@frm2.tum.de> Wed, 05 Apr 2023 07:07:24 +0200
frappy-core (0.17.6) stable; urgency=medium
frappy-core (0.17.6) focal; urgency=medium
[ Alexander Zaft ]
* gui: show parameter properties again
@@ -646,25 +585,25 @@ frappy-core (0.17.6) stable; urgency=medium
-- Alexander Zaft <jenkins@frm2.tum.de> Tue, 04 Apr 2023 08:42:26 +0200
frappy-core (0.17.5) stable; urgency=medium
frappy-core (0.17.5) focal; urgency=medium
* Fix generator
-- Alexander Zaft <jenkins@frm2.tum.de> Wed, 22 Mar 2023 12:32:06 +0100
frappy-core (0.17.4) stable; urgency=medium
frappy-core (0.17.4) focal; urgency=medium
* Fix entangle integration bugs
-- Alexander Zaft <jenkins@frm2.tum.de> Wed, 22 Mar 2023 11:44:34 +0100
frappy-core (0.17.3) stable; urgency=medium
frappy-core (0.17.3) focal; urgency=medium
* UNRELEASED
-- Alexander Zaft <jenkins@frm2.tum.de> Tue, 21 Mar 2023 15:55:09 +0100
frappy-core (0.17.2) stable; urgency=medium
frappy-core (0.17.2) focal; urgency=medium
[ Alexander Zaft ]
* Fix Simulation and Proxy
@@ -801,7 +740,7 @@ frappy-core (0.17.2) stable; urgency=medium
-- Alexander Zaft <jenkins@frm2.tum.de> Tue, 21 Mar 2023 15:49:06 +0100
frappy-core (0.17.1) stable; urgency=medium
frappy-core (0.17.1) focal; urgency=medium
[ Georg Brandl ]
* gitignore: ignore demo PID file
@@ -820,7 +759,7 @@ frappy-core (0.17.1) stable; urgency=medium
-- Georg Brandl <jenkins@frm2.tum.de> Tue, 21 Feb 2023 17:44:56 +0100
frappy-core (0.17.0) stable; urgency=medium
frappy-core (0.17.0) focal; urgency=medium
[ Alexander Zaft ]
* Rework GUI.
@@ -831,37 +770,37 @@ frappy-core (0.17.0) stable; urgency=medium
-- Alexander Zaft <jenkins@frm2.tum.de> Tue, 21 Feb 2023 13:52:17 +0100
frappy-core (0.16.1) stable; urgency=medium
frappy-core (0.16.1) focal; urgency=medium
* UNRELEASED
-- Georg Brandl <jenkins@frm2.tum.de> Tue, 21 Feb 2023 08:44:28 +0100
frappy-core (0.16.4) stable; urgency=medium
frappy-core (0.16.4) focal; urgency=medium
* UNRELEASED
-- Georg Brandl <jenkins@frm2.tum.de> Tue, 21 Feb 2023 08:09:20 +0100
frappy-core (0.16.3) stable; urgency=medium
frappy-core (0.16.3) focal; urgency=medium
* UNRELEASED
-- Georg Brandl <jenkins@frm2.tum.de> Tue, 21 Feb 2023 08:00:15 +0100
frappy-core (0.16.2) stable; urgency=medium
frappy-core (0.16.2) focal; urgency=medium
* gui: move icon resources for the cfg editor to its subdirectory
-- Georg Brandl <jenkins@frm2.tum.de> Tue, 21 Feb 2023 07:50:13 +0100
frappy-core (0.16.1) stable; urgency=medium
frappy-core (0.16.1) focal; urgency=medium
* add frappy-cli to package
-- Enrico Faulhaber <jenkins@frm2.tum.de> Mon, 20 Feb 2023 17:17:23 +0100
frappy-core (0.16.0) stable; urgency=medium
frappy-core (0.16.0) focal; urgency=medium
[ Enrico Faulhaber ]
* fix sorce package name
@@ -923,7 +862,7 @@ frappy-core (0.16.0) stable; urgency=medium
-- Enrico Faulhaber <jenkins@frm2.tum.de> Mon, 20 Feb 2023 16:15:10 +0100
frappy-core (0.15.0) stable; urgency=medium
frappy-core (0.15.0) focal; urgency=medium
[ Björn Pedersen ]
* Remove iohandler left-overs from docs
@@ -953,7 +892,7 @@ frappy-core (0.15.0) stable; urgency=medium
-- Björn Pedersen <jenkins@frm2.tum.de> Thu, 10 Nov 2022 14:46:01 +0100
secop-core (0.14.3) stable; urgency=medium
secop-core (0.14.3) focal; urgency=medium
[ Enrico Faulhaber ]
* change repo to secop/frappy
@@ -969,13 +908,13 @@ secop-core (0.14.3) stable; urgency=medium
-- Enrico Faulhaber <jenkins@frm2.tum.de> Thu, 03 Nov 2022 13:51:52 +0100
secop-core (0.14.2) stable; urgency=medium
secop-core (0.14.2) focal; urgency=medium
* systemd generator: adapt to changed config API
-- Georg Brandl <jenkins@frm2.tum.de> Thu, 20 Oct 2022 15:38:45 +0200
secop-core (0.14.1) stable; urgency=medium
secop-core (0.14.1) focal; urgency=medium
[ Markus Zolliker ]
* secop_psi.entangle.AnalogInput: fix main value
@@ -987,7 +926,7 @@ secop-core (0.14.1) stable; urgency=medium
-- Markus Zolliker <jenkins@frm2.tum.de> Thu, 20 Oct 2022 14:04:07 +0200
secop-core (0.14.0) stable; urgency=medium
secop-core (0.14.0) focal; urgency=medium
* add simple interactive python client
* fix undefined status in softcal
@@ -1001,7 +940,7 @@ secop-core (0.14.0) stable; urgency=medium
-- Markus Zolliker <jenkins@frm2.tum.de> Wed, 19 Oct 2022 11:31:50 +0200
secop-core (0.13.1) stable; urgency=medium
secop-core (0.13.1) focal; urgency=medium
[ Markus Zolliker ]
* an enum with value 0 should be interpreted as False
@@ -1012,7 +951,7 @@ secop-core (0.13.1) stable; urgency=medium
-- Markus Zolliker <jenkins@jenkins02.admin.frm2.tum.de> Tue, 02 Aug 2022 15:31:52 +0200
secop-core (0.13.0) stable; urgency=medium
secop-core (0.13.0) focal; urgency=medium
[ Georg Brandl ]
* debian: fix email addresses in changelog
@@ -1075,13 +1014,13 @@ secop-core (0.13.0) stable; urgency=medium
-- Georg Brandl <jenkins@frm2.tum.de> Tue, 02 Aug 2022 09:47:06 +0200
secop-core (0.12.4) stable; urgency=medium
secop-core (0.12.4) focal; urgency=medium
* fix command inheritance
-- Markus Zolliker <jenkins@jenkins01.admin.frm2.tum.de> Thu, 11 Nov 2021 16:21:19 +0100
secop-core (0.12.3) stable; urgency=medium
secop-core (0.12.3) focal; urgency=medium
[ Georg Brandl ]
* Makefile: fix docker image
@@ -1104,7 +1043,7 @@ secop-core (0.12.3) stable; urgency=medium
-- Georg Brandl <jenkins@jenkins01.admin.frm2.tum.de> Wed, 10 Nov 2021 16:33:19 +0100
secop-core (0.12.2) stable; urgency=medium
secop-core (0.12.2) focal; urgency=medium
[ Markus Zolliker ]
* fix issue with new syntax in simulation
@@ -1116,13 +1055,13 @@ secop-core (0.12.2) stable; urgency=medium
-- Markus Zolliker <jenkins@jenkins01.admin.frm2.tum.de> Tue, 18 May 2021 10:29:17 +0200
secop-core (0.12.1) stable; urgency=medium
secop-core (0.12.1) focal; urgency=medium
* remove secop-console from debian *.install file
-- Enrico Faulhaber <jenkins@jenkins02.admin.frm2.tum.de> Tue, 04 May 2021 09:42:53 +0200
secop-core (0.12.0) stable; urgency=medium
secop-core (0.12.0) focal; urgency=medium
[ Markus Zolliker ]
* make datatypes immutable

1
debian/compat vendored Normal file
View File

@@ -0,0 +1 @@
11

5
debian/control vendored
View File

@@ -2,13 +2,14 @@ Source: frappy-core
Section: contrib/misc
Priority: optional
Maintainer: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Build-Depends: debhelper-compat (= 13),
Build-Depends: debhelper (>= 11~),
dh-python,
python3 (>=3.6),
python3-all,
python3-setuptools,
python3-docutils,
python3-sphinx,
python3-sip-dev,
python3-pyqt5,
python3-mlzlog,
python3-numpy,
@@ -19,7 +20,7 @@ Build-Depends: debhelper-compat (= 13),
git,
markdown,
python3-daemon
Standards-Version: 4.6.2
Standards-Version: 4.1.4
X-Python3-Version: >= 3.6
Package: frappy-core

View File

@@ -10,6 +10,6 @@ usr/lib/python3.*/dist-packages/frappy/protocol
usr/lib/python3.*/dist-packages/frappy_core-*
usr/lib/python3.*/dist-packages/frappy/RELEASE-VERSION
usr/lib/python3.*/dist-packages/frappy_demo
usr/lib/systemd
lib/systemd
var/log/frappy
etc/generalConfig.cfg etc/frappy
etc/frappy/generalConfig.cfg

16
debian/rules vendored
View File

@@ -1,13 +1,19 @@
#!/usr/bin/make -f
# -*- makefile -*-
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
# needed for bookworm compatibility!
override_dh_installsystemd:
ln -s usr/lib debian/frappy-core/lib
dh_installsystemd
rm debian/frappy-core/lib
export PYBUILD_NAME=frappy
export PYBUILD_TEST_PYTEST=1
override_dh_install:
rmdir debian/tmp
mv debian/python3-frappy debian/tmp
install -m644 -Dt debian/tmp/etc/frappy etc/generalConfig.cfg
dh_install -i -O--buildsystem=pybuild
dh_missing --fail-missing
%:
dh $@ --with python3 --buildsystem=pybuild

View File

@@ -35,7 +35,7 @@ def main():
generalConfig.init()
config_dir = generalConfig['confdir']
frappy_unit = '/usr/lib/systemd/system/frappy@.service'
frappy_unit = '/lib/systemd/system/frappy@.service'
wants_dir = normal_dir + '/frappy.target.wants'
all_servers = [base[:-4] if base.endswith('_cfg') else base for (base, ext) in

View File

@@ -1,75 +0,0 @@
# *****************************************************************************
#
# This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation; either version 2 of the License, or (at your option) any later
# version.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along with
# this program; if not, write to the Free Software Foundation, Inc.,
# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# Module authors:
# Markus Zolliker <markus.zolliker@psi.ch>
#
# *****************************************************************************
from frappy.core import Parameter, Property
from frappy.datatypes import ValueType
class AddrParam(Parameter):
"""parameter with an address field
instead of implementing read_<param> and write_<param>, just implement
addressed_read and addressed_write.
"""
addr = Property('address', ValueType())
class AddrMixin:
"""mixin for addressed parameters
in case a read_<param> and/or write_<param> are not implemented,
they are created with a call to addressed_read and/or addressed_write
"""
def __init_subclass__(cls):
for aname, aobj in list(cls.__dict__.items()):
if isinstance(aobj, AddrParam):
methodname = f'read_{aname}'
if not hasattr(cls, methodname):
def rfunc(self, pname=aname):
return self.addressed_read(self.accessibles[pname])
setattr(cls, methodname, rfunc)
if not aobj.readonly:
methodname = f'write_{aname}'
if not hasattr(cls, methodname):
def wfunc(self, value, pname=aname):
return self.addressed_write(self.accessibles[pname], value)
setattr(cls, methodname, wfunc)
super().__init_subclass__()
def addressed_read(self, pobj):
"""addressed read
:param pobj: the AddrParam
:return: the value read
"""
return getattr(self, pobj.name)
def addressed_write(self, pobj, value):
"""addressed write
:param pobj: the AddrParam
:param value: the value to be written
:return: the value written or None
"""

View File

@@ -1,131 +0,0 @@
# *****************************************************************************
#
# This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation; either version 2 of the License, or (at your option) any later
# version.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along with
# this program; if not, write to the Free Software Foundation, Inc.,
# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# Module authors:
# Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
# Markus Zolliker <markus.zolliker@psi.ch>
# Alexander Zaft <a.zaft@fz-juelich.de>
#
# *****************************************************************************
from frappy.errors import ConfigError
from frappy.modulebase import Module
from frappy.datatypes import StringType, ValueType
from frappy.properties import Property
class Attached(Property):
"""a special property, defining an attached module
assign a module name to this property in the cfg file,
and the server will create an attribute with this module
When mandatory is set to False, and there is no value or an empty string
given in the config file, the value of the attribute will be None.
"""
def __init__(self, basecls=Module, description='attached module', mandatory=True):
self.basecls = basecls
super().__init__(description, StringType(), mandatory=mandatory)
def __get__(self, obj, owner):
if obj is None:
return self
modobj = obj.attachedModules.get(self.name)
if not modobj:
modulename = super().__get__(obj, owner)
if not modulename:
return None # happens when mandatory=False and modulename is not given
modobj = obj.secNode.get_module(modulename)
if not modobj:
raise ConfigError(f'attached module {self.name}={modulename!r} '
f'does not exist')
if not isinstance(modobj, self.basecls):
raise ConfigError(f'attached module {self.name}={modobj.name!r} '
f'must inherit from {self.basecls.__qualname__!r}')
obj.attachedModules[self.name] = modobj
return modobj
def copy(self):
return Attached(self.basecls, self.description, self.mandatory)
class DictWithFlag(dict):
flag = False
class AttachDictType(ValueType):
"""a custom datatype for a dict <key> of names or modules"""
def __init__(self):
super().__init__(DictWithFlag)
def copy(self):
return AttachDictType()
def export_value(self, value):
"""export either names or the name attribute
to treat bare names and modules the same
"""
return {k: getattr(v, 'name', v) for k, v in value.items()}
class AttachedDict(Property):
def __init__(self, description='attached modules', elements=None, optional=None, basecls=None,
**kwds):
"""a mapping of attached modules
:param elements: None or a dict <key> of <basecls> for mandatory elements
:param optional: None or a dict <key> of <basecls> for optional elements
:param basecls: None or a base class for arbitrary keys
if not given, only keys given in parameters 'elements' and 'optional' are allowed
:param description: the property description
<key> might also be a number or any other immutable
"""
self.elements = elements or {}
self.basecls = basecls
self.baseclasses = {**self.elements, **(optional or {})}
super().__init__(description, AttachDictType(), default={}, **kwds)
def __get__(self, obj, owner):
if obj is None:
return self
attach_dict = super().__get__(obj, owner) or DictWithFlag({})
if attach_dict.flag:
return attach_dict
for key, modulename in attach_dict.items():
basecls = self.baseclasses.get(key, self.basecls)
if basecls is None:
raise ConfigError(f'unknown key {key!r} for attached modules {self.name}')
modobj = obj.secNode.get_module(modulename)
if modobj is None:
raise ConfigError(f'attached modules {self.name}: '
f'{key}={modulename!r} does not exist')
if not isinstance(modobj, basecls):
raise ConfigError(f'attached modules {self.name}: '
f'module {key}={modulename!r} must inherit '
f'from {basecls.__qualname__!r}')
obj.attachedModules[self.name, key] = attach_dict[key] = modobj
missing_keys = set(self.elements) - set(attach_dict)
if missing_keys:
raise ConfigError(f'attached modules {self.name}: '
f"missing {', '.join(missing_keys)} ")
attach_dict.flag = True
return attach_dict
def copy(self):
return AttachedDict(self.elements, self.baseclasses, self.basecls, self.description)

View File

@@ -209,20 +209,16 @@ class ProxyClient:
# caches (module, parameter) = value, timestamp, readerror (internal names!)
self.cache = Cache() # dict returning Cache.undefined for missing keys
def register_callback(self, key, *args, callimmediately=True, **kwds):
def register_callback(self, key, *args, callimmediately=None, **kwds):
"""register callback functions
several callbacks might be registered within one call.
ProxyClient.CALLBACK_NAMES contains all names of valid callbacks
:param key: might be either:
- key might be either:
1) None: general callback (all callbacks)
2) <module name>: callbacks related to a module (not called for 'unhandledMessage')
3) (<module name>, <parameter name>): callback for specified parameter
(only called for 'updateEvent' and 'updateItem')
:param args: callback functions. the callback name is taken from the the __name__ attribute of the function
:param callimmediately: True (default): call immediately for updateItem and updateEvent callbacks
:param kwds: callback functions. the callback name is taken from the key
3) (<module name>, <parameter name>): callback for specified parameter (only called for 'updateEvent')
- all the following arguments are callback functions. The callback name may be
given by the keyword, or, for non-keyworded arguments it is taken from the
__name__ attribute of the function
"""
for cbfunc in args:
kwds[cbfunc.__name__] = cbfunc
@@ -230,8 +226,8 @@ class ProxyClient:
if cbname not in self.CALLBACK_NAMES:
raise TypeError(f"unknown callback: {', '.join(kwds)}")
# call immediately for some callback types
if cbname in ('updateItem', 'updateEvent') and callimmediately:
# immediately call for some callback types
if cbname in ('updateItem', 'updateEvent') and callimmediately is not False:
if key is None: # case generic callback
cbargs = [(m, p, d) for (m, p), d in self.cache.items()]
else:
@@ -738,7 +734,7 @@ class SecopClient(ProxyClient):
"""
self.connect() # make sure we are connected
datatype = self.modules[module]['parameters'][parameter]['datatype']
value = datatype.export_value(datatype.from_string(formatted))
value = datatype.from_string(formatted)
self.request(WRITEREQUEST, self.identifier[module, parameter], value)
return self.cache[module, parameter]
@@ -757,28 +753,6 @@ class SecopClient(ProxyClient):
data = datatype.import_value(data)
return data, qualifiers
def execCommandFromString(self, module, command, formatted_argument=''):
"""call command from string argument
return data as CacheItem which allows to get
- result.value # the python value
- result.formatted() # a string (incl. units)
- result.timestamp
"""
self.connect()
datatype = self.modules[module]['commands'][command]['datatype'].argument
if datatype:
argument = datatype.from_string(formatted_argument)
else:
if formatted_argument:
raise WrongTypeError('command has no argument')
argument = None
# pylint: disable=unsubscriptable-object
data, qualifiers = self.request(COMMANDREQUEST, self.identifier[module, command], argument)[2]
datatype = self.modules[module]['commands'][command]['datatype'].result
value = datatype.import_value(data) if datatype else None
return CacheItem(value, qualifiers.get('t'), None, datatype)
def updateValue(self, module, param, value, timestamp, readerror):
datatype = self.modules[module]['parameters'][param]['datatype']
if readerror:

View File

@@ -29,7 +29,7 @@ import os
import traceback
import threading
import logging
from pathlib import Path
from os.path import expanduser
from frappy.lib import delayed_import
from frappy.client import SecopClient, UnregisterCallback
from frappy.errors import SECoPError
@@ -64,8 +64,6 @@ LOG_LEVELS = {
'off': logging.ERROR+1}
CLR = '\r\x1b[K' # code to move to the left and clear current line
UNDEF = object()
class Handler(logging.StreamHandler):
def emit(self, record):
@@ -145,7 +143,7 @@ class Module:
def _isBusy(self):
return self.status[0] // 100 == StatusType.BUSY // 100
def _status_update(self, m, p, status, t, e):
def _status_value_update(self, m, p, status, t, e):
if self._is_driving and not self._isBusy():
self._is_driving = False
self._driving_event.set()
@@ -215,24 +213,15 @@ class Module:
clientenv.raise_with_short_traceback(error)
return value
def __call__(self, target=UNDEF):
if target is UNDEF:
def __call__(self, target=None):
if target is None:
return self.read()
watch_params = ['value', 'status']
for pname in watch_params:
for pname in 'value', 'status':
self._secnode.register_callback((self._name, pname),
updateEvent=self._watch_parameter,
callimmediately=False)
callimmediately=False,
updateEvent=self._watch_parameter)
if 'go' in self._commands:
if 'goal' in self._parameters and target is not None:
self.goal_enable = True
self.goal = target
if 'target' in self._parameters:
self.target = target
self.go()
elif 'target' in self._parameters:
self.target = target # this sets self._is_driving
self.target = target # this sets self._is_driving
def loop():
while self._is_driving:
@@ -240,12 +229,9 @@ class Module:
self._driving_event.clear()
try:
loop()
except KeyboardInterrupt:
except KeyboardInterrupt as e:
self._secnode.log.info('-- interrupted --')
try:
self.stop()
except Exception as e:
print(f'while stopping: {e!r}')
self.stop()
try:
loop() # wait for stopping to be finished
except KeyboardInterrupt:
@@ -253,10 +239,11 @@ class Module:
pass
clientenv.raise_with_short_traceback(e)
finally:
# self._watch_parameter(self._name, 'status')
self._secnode.readParameter(self._name, 'value')
for pname in watch_params:
self._secnode.unregister_callback(
(self._name, pname), updateEvent=self._watch_parameter)
# self._watch_parameter(self._name, 'value', forced=True)
self._secnode.unregister_callback((self._name, 'value'), updateEvent=self._watch_parameter)
self._secnode.unregister_callback((self._name, 'status'), updateEvent=self._watch_parameter)
return self.value
def __repr__(self):
@@ -310,8 +297,6 @@ class Param:
class Command:
_obj = None
def __init__(self, name, modname, secnode):
self.name = name
self.modname = modname
@@ -326,14 +311,11 @@ class Command:
result, _ = self.exec(self.modname, self.name, *args)
else:
result, _ = self.exec(self.modname, self.name, args or None)
if self.name == 'go' and self._obj:
self._obj._is_driving = self._obj._isBusy()
return result
def __get__(self, obj, owner=None):
if obj is None:
return self
self._obj = obj
return self.call
@@ -436,7 +418,8 @@ class Client(SecopClient):
attrs[cname] = Command(cname, modname, self)
mobj = type(f'M_{modname}', (Module,), attrs)(modname, self)
if 'status' in mobj._parameters:
self.register_callback((modname, 'status'), updateEvent=mobj._status_update)
self.register_callback((modname, 'status'), updateEvent=mobj._status_value_update)
self.register_callback((modname, 'value'), updateEvent=mobj._status_value_update)
clientenv.namespace[modname] = mobj
if removed_modules:
self.log.info('removed modules: %s', ' '.join(removed_modules))
@@ -467,7 +450,7 @@ def run(filepath):
"__file__": filepath,
"__name__": "__main__",
})
with open(filepath, 'rb') as file:
with filepath.open('rb') as file:
# pylint: disable=exec-used
exec(compile(file.read(), filepath, 'exec'), clientenv.namespace, None)
@@ -515,7 +498,7 @@ class Console(code.InteractiveConsole):
history = None
if readline:
try:
history = Path(f'~/.local/state/frappy-{name}-history').expanduser()
history = expanduser(f'~/.config/frappy/{name}-history')
readline.read_history_file(history)
except FileNotFoundError:
pass
@@ -523,7 +506,6 @@ class Console(code.InteractiveConsole):
self.interact('', '')
finally:
if history:
history.parent.mkdir(mode=0o700, parents=True, exist_ok=True)
readline.write_history_file(history)
def raw_input(self, prompt=""):

Some files were not shown because too many files have changed in this diff Show More