With the completion of #13 video capturing is now possible
With #6 we can control the motor with the device
Next a proof of concept implementation of actually recording the plants is required:
[x] Setup of the Gateway Server, see #33
[x] The Gateway Server must have a way to configure secrets, which are preserved, see #34
[x] The images should be streamed to the browser in the preview. It should not be important, whether the computer is in the same network as the devices. The Gatewayserver should forward the images to the client. See: #37
When streaming over WLAN it is preferable, that the Gatewayserver creates its own WLAN and the devices are directly connected to the Gatewayserver without a router
Picture transmission performance is roughly doubled, when the picture stream is displayed on the Gatewayserver compared to another device in the WLAN
When a device streams to another device, the packets still go through the Gatewayserver, increasing the transmission load of the WLAN by factor 2
[x] A replay of the movement should be possible in the browser with simple setting of start step cout, end step count and intermediate step count to briefly pause on
c76340d1b0b4fded87e68184b3968c6ccea90a21 added scripts to install the gateway server on the server.
You can find in Install.md some instructions to configure a debian server.
For the actual gatewayserver a dummy webservice is currently used. This was to test whether the nginx setup does work in docker-compose
173a29fa8b72a2fca1fd1151abce9ca597194b3b building in svelte is only possible when prerender is set in this case.
It does not make sense for the server to know about certificates, it should just serve static files and the ip is known by the client anyway
89d63ed9fe811569fea2646bcaa4efef25094e85 npm build files are now correctly moved to the static files folder of the server
9d298cc7812a62a27f0d26f42ec9550d9d6a6733 docker compose should now work on linux aswell
c6b620c99ed79ddaa7122f5c284b162b7a2a3fde added commands to enable a wifi hotspot on debian bookworm. The default network-manager is uninstalled and a more compatible approach is used via hostapd, iptables and dnsmasq.
The certificate does now use ips on 192.168.0 and 192.168.1 to be compatible between different networks.
765058df7dead36d3a958b4a1ad7da97bd344f31 docker container should be always restarted
d955fd440632fbb14dedd3e0f092d953599160e8 More Logging when IP pinging is happening and more usable names for the docker container
48b0a76f6aeca6cdb4750380f651080a65de1af1 update nginx settings to work with websockets to communicate with webssh
20cd8dd6e491d2c23193a4b9a95ec5d81462d8c8 Removal of debug fetching of feature branch.
This finishes the first step of this ticket to setup a gateway server. A current limitation is, that the ip/password/username of the devices must be entered manually for a connection, because they cannot be commited to the project.
A user configuration option for the server is needed, which persists between updates of the server.
a484c3d6f743d013d15bade4557a168cf4a6400d Moved the ip scan range configuration and device configuration to a designated configuration file in json format.
The app initially initializes the configuration file with default settings - if not yet existing.
The user should then have the possibility to change data like ip range, device connection settings, database settings and so on
f8dc9a1b5f2c53a0620dedd706cf5fd45db9d21b The gateway server should never sleep, hibernate, suspend. It should just run all the time
See https://wiki.debian.org/Suspend
0118574cfc51144c1668c6ab2247005ea0841fac added some improved prettier options
560950fbddc016057d920249bb612f732ad68980 Added an endpoint to change the ip range aswell.
Furthermore a filter is introduced, which formats responses properly, if a model error validation error has occured.
The frontend transforms the backend results accordingly and shows an alert with the current time.
This makes error reporting much easier.
a5a708411bed7f8c810d6a5e8e28c94f6306af97 added generic input controls, which are used to set the configuration data in Bootstrap Floating Label design
1b7afc1f8a6ed3b765b70e8af9235c884aa21a63 The certificate must be added in the container aswell.
The host system is not enough.
Chrome does not use the same certificate storage under debian as curl. This means the certificate has to be installed under 2 places during host setup
eeb6e7054d0a59fd085f2320cf6b8464dd3d3887 Streaming is now possible via the gateway server.
No direct connection is needed to the device to stream it. The gateway server relays the stream to the client.
08b05a16d99c0bbf9190b53b6da354244bc773c4 All device functions are now only available over the gatewayserver.
The device is automatically scaffolded by NSwag as a C# client
8d2f5834c23a3fa2252cc419bd31e2efc56c000e Motor will be engaged during the whole scan - else the wires will turn the arm by itself manipulating the position.
Added 2 endpoints, one to read the current position and an endpoint to toggle the engage state of the motor
74165dcd08bbb7fa5163acc58878e6fa08d2a75d During setup of the gateway machine a database env file is created, which holds the root password for the postgres database. The password is then passed to the postgres container and the plantmonitor container
f9b14d6c3ed33391c07f2d23d483dc56bfc1db37 added npgsql as datasource provider for postgres.
The project automatically initializes a new schema plantmonitor - if not found.
It stores the current patch number in the ConfigurationData table and if there is a newer patch ready, the patch is automatically applied.
It is up to the developer to create patches, which are backwards compatible
c5538e043265c7781490859bc7dfe087dae98a07 Mapped the jsonb table movementplan to a concrete class for easier handling
3d2d769180f7395222582a60ee760a6c7d21f85e Fixed some nasty problems with import order in typescript. The development url must be in another class, else import order becomes important.
When navigating, signalr streams are closed, but the camera is still accessed by the raspberry pi.
16ed1ec2ded3f4ea341fd927cd06bee708de87b9 when a device connection is cut, then the corresponding camera process is killed
0ff044091968b1cb527bfd1de8024cafeec7fd06 env file already passes variables into the running container, no need to declare environment variables aswell.
Additional IPs can now be declared when the Setup script is run.
b239cfc5744614ebfcbbedc0efa756fb5e51df1d Vite configuration to do some tests and basic buggy storing of movement plans is now possible in the database
9fcb0578d46acecad727330b813b3e51a30afb61 Storing and moving the motor according to stored positions works now. Also another way to integrate extension methods is shown here, aswell of how to test those extension methods via vitest.
Replaying of the whole movement works aswell. This concludes the proof of concept work.