A set of tools that helps to automate measure/control processes of any Scientific / Industrial Lab. Current solution is using for:
mossbauer spectrometer
);e-mail
, Telegram
)This software is a laboratory specific and made as example if you would like to automate your laboratory / industry please contact us using email in our organization info.
Mossbauer laboratory automation tool controls spectra measurements from SM2201 Mossbauer spectrometer
and watches state of other equipment.
SM2201
spectrometer controlled by software that is running on Windows 98
Wissance.MossbauerLab.Watcher
is running - Raspberry Pi (v2)
+ Raspbian
as OSMessbauer spectra
accumulation process (monitoring auto save process) from SM2201
spectrometer (controll by date+time)
of file last change (on Windows98
machine system clock must be set right)There are 2 run profiles (Development
and Production
) and 2 possible configs variants of Wissance.Mossabuer.LabWatcher
:
SM2201
config section
looks like:
"Sm2201SpectraStoreSettings": {
"Address": "192.168.10.212",
"Domain": "MOSSBAUERLAB",
"Folder": "Autosaves",
"UserCredentials": null
}
cifs.mount
, because Directory
in Linux doesn’t
understand Windows network Path, therefore SM2201
config section looks like:
"Sm2201SpectraStoreSettings": {
"Address": "",
"Domain": "MOSSBAUERLAB",
"Folder": "/mnt/sm2201/dev",
"UserCredentials": null
}
Solution could be run either on Windows
or Linux
global
section:
client min protocol = NT1
client lanman auth = yes
client ntlmv2 auth = no
To check is there access to shared folder using smbclient
use following command
smbclient //MICHAEL/Autosaves -m NT1 -w MOSSBAUERLAB
Where:
MICHAEL
- computer nameMOSSBAUERLAB
- workgroup nameAUTOSAVES
- name of shared foldercifs
(All names must be Uppercase):
sudo mount -t cifs -o user=guest,pass=,vers=1.0,sec=none,domain=MOSSBAUERLAB,ip=192.168.10.217,servern=MICHAEL //MICHAEL/AUTOSAVES /mnt/sm2201/dev
Where:
MICHAEL
- computer nameMOSSBAUERLAB
- workgroup nameAUTOSAVES
- name of shared folderappsettings.Production.json
before run and set Address
to “” and set Folder
to mount point if you are running
solution on Raspberry Pi
dotnet Wissance.MossbauerLab.Watcher.Web.dll --environment=Production
To run Wissance.MossbauerLab.Watcher.Web
as a service it should be configured as systemd
service:
sudo groupadd mossbauer
labwatcher - sudo useradd -r -g mossbauer -d /usr/local/sbin/labwatcher -s /sbin/nologin labwatcher
[Unit] Description=Wissance.MossbauerLab.Watcher service After=syslog.target network.target Before=httpd.service [Service] WorkingDirectory=/usr/local/sbin/labwatcher/app User=labwatcher Group=mossbauer LimitNOFILE=102642 PIDFile=/var/run/mossbauer/labwatcher.pid ExecStart=dotnet /usr/local/sbin/labwatcher/app/Wissance.MossbauerLab.Watcher.Web.dll –environment=Production StandardOutput=syslog StandardError=syslog
[Install] WantedBy=multi-user.target
4. Change directory owner to `mossbauer:labwatcher` - `sudo chown -R labwatcher:mossbauer /usr/local/sbin/labwatcher`
5. Copy `labwatcher.service` file to `/etc/systemd/system`
6. Execute `sudo systemctl daemon-reload`
7. Execute `sudo systemctl enable labwatcher`
8. Execute `sudo systemctl start labwatcher`
## 4. Troubleshooting
1. If we are mount automatically and got error like:
Jan 08 18:14:32 LabControl mount.sh[495]: mount error(101): Network is unreachable
Jan 08 18:14:32 LabControl mount.sh[495]: Refer to the mount.cifs(8) manual page (e.g. man mount.cifs) …
```
there are many solutions but for me helpful was adding sleep 20s
in .sh
script prior to mount
There are following endpoints to receive/manage state from browser or other clients:
GET /api/Spectrum
- list all spectra from database;
GET /api/Spectrum/{id}
- return one spectrum by its id;GET /api/Spectrum/{id}/samples
- return spectrum data including list of all intermediate measurements;GET /api/Spectrum/{id}/samples/{sampleName}/spectrum
- return spectrum with file name = {sampleName}