-
Notifications
You must be signed in to change notification settings - Fork 11
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #140 from w3c/ege-meetup13
Meetup 13 Resources
- Loading branch information
Showing
4 changed files
with
237 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,234 @@ | ||
Meeting Minutes | ||
=== | ||
|
||
## Info | ||
|
||
:date: **Date:** 24 January 2024 | ||
|
||
### :bust_in_silhouette: Participants | ||
|
||
- Ege Korkan | ||
- Cristiano Aguzzi | ||
- Richard Bowman | ||
- Matthew Wherry | ||
- Christian Paul | ||
- York Schmidtke | ||
- Gerrit Niezen | ||
- Christian Winkler | ||
- Farshid Tavakolizadeh | ||
- Kunihiko Toumura | ||
- Dilara Serif Oglu | ||
- Luca Barbato | ||
- Owen Battye | ||
- Daniel Peintner | ||
|
||
### :scroll: Agenda | ||
|
||
- News from the CG | ||
- Introduction of the Speaker | ||
- Presentation | ||
- Q&A | ||
- Discussion | ||
|
||
:writing_hand: **Scribe:** Ege | ||
|
||
:computer: **Intro Slides:** https://docs.google.com/presentation/d/1gz5SQmVnOVMZdzN2rziaQBp8ES_gO7XP96hBvZZ28Sc/edit?usp=sharing | ||
|
||
## Meetup | ||
|
||
### Introduction | ||
|
||
Cristiano Aguzzi: Hi everyone. We have an agenda | ||
|
||
Cristiano Aguzzi: (intro) | ||
|
||
Cristiano Aguzzi: You can join the CG, Discord | ||
|
||
Cristiano Aguzzi: Here are the next meetups: | ||
|
||
- Meetup 14: with Ben Francis: Webthings.io and Krellian for Smart Buildings | ||
- Meetup 15: with Timoteus Ruotsalainen. Link and topic to be made public soon. | ||
- Meetup 16: with Deutsche Telekom: Matter and WoT | ||
- Let us know if you are interested to give a talk! | ||
|
||
#### Speaker Introduction | ||
|
||
Cristiano Aguzzi: Richard works on microscopy and experimental automation, including the development of a 3D printable translation stage with sub-micron accuracy. He has transferred a number of technologies to commercial partners, and leads the OpenFlexure project. | ||
|
||
Cristiano Aguzzi: He will talk about how he learned about WoT and how he applied it in his use cases. | ||
|
||
### Presentation | ||
|
||
Richard Bowman: This is not a toy! It is a serious piece of equipment that is an automated microscope. | ||
|
||
Richard Bowman: You can fit everything together. You can reduce the cost. It is replicable. That means you can improve. | ||
|
||
Richard Bowman: Why do everyone need a microscope? This is the parasite that causes malaria. 500k deaths, mostly children in sub saharan africa. | ||
|
||
Richard Bowman: Quality assurance is a problem, so is training new technicians. | ||
|
||
Richard Bowman: OpenFlexure can help you to produce it locally. Our engineering partners can build it without an error prone supply chain. | ||
|
||
Richard Bowman: Many countries have built it and without much interaction with us. | ||
|
||
Richard Bowman: I do not have to worry about how to sell it to help everyone. | ||
|
||
Richard Bowman: We have managed to build a community | ||
|
||
Richard Bowman: This is another image from our microscope | ||
|
||
Richard Bowman: This is an illustration of what the community is doing. | ||
|
||
Richard Bowman: Another interesting part is that someone can send images without sending the samples. | ||
|
||
Richard Bowman: Community in Argentina is using to understand the soil to suggest better farming practices. | ||
|
||
Richard Bowman: The hardware assembly instructions pipeline has become its own open source project. | ||
|
||
Richard Bowman: Also, an API is available so that you can use interactions and avoid the UI. | ||
|
||
Richard Bowman: here is a UI built with Vue. You can use as an electron app which also does mdns to find the microscope. | ||
|
||
Richard Bowman: We distribute the UI from the microscope so that they are always in sync. | ||
|
||
#### LabThings | ||
|
||
Richard Bowman: Now into the sw architecture. | ||
|
||
Richard Bowman: We have different types of users. | ||
|
||
Richard Bowman: We have a RPi based hardware. Also RPi camera. Motors are XXXX. | ||
|
||
Richard Bowman: You can attach a screen via HDMI screen. | ||
|
||
Richard Bowman: A phone would also work but that is problematic. It can be stolen. There are many variations. You cannot leave it around for 3h. | ||
|
||
Richard Bowman: You can pop up the same interface remotely. | ||
|
||
Richard Bowman: Here is a more detailed diagram. An HTTP API is exposed that is WoT compliant. | ||
|
||
Richard Bowman: The server publishes via mDNS so that it is simple to use it. No need guarantee DHCP. | ||
|
||
Richard Bowman: If you know the IP address, you can just use a browser. | ||
|
||
Richard Bowman: You can use the same API via scripting. Python and matlab are both available. | ||
|
||
Richard Bowman: UI and script can run at the same time. | ||
|
||
Richard Bowman: If you do a simple script, it is fine. More complicated cases are much more difficult to do it via script. The HW talks to only one process at the time. | ||
|
||
Richard Bowman: The client code can be moved, there can be many clients. | ||
|
||
Richard Bowman: You can start the script and detach or turn off your computer. That way if your computer reboots, you do not lose your experiment. | ||
|
||
Richard Bowman: Now we have switched to FastAPI. It was flask before but we were in version 1. Instead of updating the version, we have now updated to FastAPI. | ||
|
||
Richard Bowman: At the same time, we have added the WoT integration. | ||
|
||
Richard Bowman: Microscope is now a composed Thing. Each Thing is a Python class. | ||
|
||
Richard Bowman: Signature of the Thing and ThingClient are same thanks to WoT. | ||
|
||
Richard Bowman: That has been really helpful. We can work in a friendly environment. We can now run the same code in client and server at the same time. | ||
|
||
Richard Bowman: GUI is written in Vue.js but is a bit outdated. We use Axios. We only use HTTP, so no other protocol bindings. | ||
|
||
Richard Bowman: We have some vue components that are used to create an interface. | ||
|
||
Richard Bowman: I had hoped to use node-wot but it doesn't work with webpack? I think one of the dependencies doesn't work with webpack. | ||
|
||
Richard Bowman: We have built it into a liquid handling use case. They all had WoT style interactions. One didn't have WoT interface but at least HTTP. | ||
|
||
Richard Bowman: This also enabled to develop more friendly UIs, like blockly. | ||
|
||
### Involvement in WoT | ||
|
||
Richard Bowman: How did we learn about WoT? Thanks to Joel Collins, my post doc at the time. | ||
|
||
Richard Bowman: It has helped to design our API. | ||
|
||
Richard Bowman: In labs, there is no single OS or programming language that is used. | ||
|
||
Richard Bowman: There is nice promise about semantics. | ||
|
||
#### Pain Points | ||
|
||
Richard Bowman: It would be nice to have standardization on long running actions. An event that is associated with the action would be nice. I had to invent a bit of stuff at the same time. | ||
|
||
Richard Bowman: More details on protocol bindings would be nice. Websockets is needed. I did not invest in it since I am hoping the community | ||
|
||
Richard Bowman: An equivalent for TD would be nice. | ||
|
||
Richard Bowman: TD is not JSON Schema, not quite. I spent some time on it. I am not happy with that part of the code. | ||
|
||
Richard Bowman: There are other frameworks but they all have drawbacks... Scientists build these kind of SW and try to be one for all but it doesn't work | ||
|
||
Richard Bowman: Not trying to do everything is nice for WoT. | ||
|
||
Richard Bowman: How to align with taxonomies via semantic types is really needed in the future. With different typing, we can add more types to add more compatbility to different frameworks. | ||
|
||
Richard Bowman: I want to have a way to assert compatibility between two TDs. | ||
|
||
### Q&A | ||
|
||
Farshid Tavakolizadeh: Do you have an TD example? | ||
|
||
Richard Bowman: They are always generated on the fly, they are dynamic. I will try to find one now. | ||
|
||
> Here they are: https://gist.github.com/rwb27/7e0c0b70a2e9b32cfa35a67fe1d7ae33 | ||
Cristiano Aguzzi: We are trying to fix the node-wot problem | ||
|
||
Richard Bowman: Here are TDs. We packaged them into one JSON for convenience. | ||
|
||
Luca Barbato: One question was how to ensure interoperability. There are two routes that are evolving over time. You can add ontologies, you can also create your own ontologies. Profiles can also work so we need more feedback. | ||
|
||
Luca Barbato: You can look into SAREF, which might be good for you. You can also mix and match. | ||
|
||
Luca Barbato: You can also look into Tauri that may avoid electron problems. It can enable users to use a tablet. It sort of plays nice with anything you throw at it. | ||
|
||
Richard Bowman: Thanks. Electron app doesn't do much. | ||
|
||
Richard Bowman: FastAPI version will be moved to OpenFlexure soon. Also it is less feature rich than node-wot. LabThings Fast API is quite generic. | ||
|
||
Matthew Wherry: I am working at Waters Corporation as Chief Architect. I have tried to model a spectrometer in TD. How do you link the different TDs in that big object? | ||
|
||
Richard Bowman: There are generally no links. One example where it happens is the camera autofocus is used together with Z motor. We do this with FastAPI dependency mechanism so they can have access. You do not need to know the other of things to start. | ||
|
||
Richard Bowman: Also scanning depends on the autofocus. | ||
|
||
Matthew Wherry: We have non trivial Things, like 30000 properties. | ||
|
||
Ege Korkan: JSON Schema. We want to align and add most of the features. | ||
|
||
Cristiano Aguzzi: You can use a TDD. | ||
|
||
Richard Bowman: Yes, it would make sense. I already have a list of TDs. | ||
|
||
Matthew Wherry: Splitting TD into small TDs make sense but it can lead to inconsistency. The smallest set we managed to get was 70 Things. | ||
|
||
Matthew Wherry: We have also thought of using links to the anchors. | ||
|
||
Luca Barbato: If you expect something to change, you should use properties and not links. TD should be treated as a static resource. | ||
|
||
Ege Korkan: isn't there commercial microscopes that offer the same sw/api benefits? | ||
|
||
Richard Bowman: There is vendor lock in. You cannot control another microscope with that control sw. Sometimes you want to do an experiment that uses multiple microscope manufacturers. There is jlib that is very popular but it is not liked. | ||
|
||
Richard Bowman: Micromanager devs were interested in WoT. | ||
|
||
Richard Bowman: You cannot believe how many researcher months are wasted in getting the dev environment ready. | ||
|
||
Ege Korkan: Is your mdns mechanism also wot compliant? | ||
|
||
Richard Bowman: No. But it would be nice to align with it. | ||
|
||
Ege Korkan: Can you go into details of the extensions you mentioned? | ||
|
||
Richard Bowman: Now they dont exist. Each Thing was an extension. | ||
|
||
## :envelope_with_arrow: Feedbacks | ||
|
||
- The standard thinks that actions are short running. LabThings needs long running actions. | ||
- The fact that our Data Schema is not aligned with JSON Schema is confusing. | ||
- Websockets binding is needed |
Binary file not shown.
Binary file added
BIN
+3.65 MB
Presentations/2024/2024-02-WoTCG-Meetup13-Bowman-openflexure_and_labthings.pdf
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters