Adding Control Panel
This PR adds control panel functionality for indiwebmanager. I.e. using this PR, one can configure the locally running indiserver. The control panel lacks blob support.
Features implemented:
- Real-time property value display and editing
- Form-based value input with submission to backend
- INDI property enumeration and control
- Responsive web interface for device management
- Display of key interface log messages
- Same look and feel as indiwebmanager
Key additions:
- New INDI Client (indi_client.py): A full INDI client using PyIndi, enabling real-time device property monitoring and control
- Device Control Interface (device_control.tpl): Providing an interactive control panel for INDI devices with property display and editing capabilities
- Enhanced Backend (main.py): Extended the web server with device control endpoints, form handling, and backend communication with INDI servers
- CSS Styling (device_control.css): Styling for the control panel interface
- Add JavaScript (indi.js): Enumerate devices.
This PR has been created using Claude Code Pro.
This is great! Awesome work! Let me test it and I'll get back to you!
Ok, I checked your PR and great work on getting this done. Here is my feedback:
- There should be a single window for all devices, not window per each device. This is similar to how INDI Control Panel from KStars work.
- There is a lot of unnecessary information that might be helpful during development process, but not useful for end users like property status and property permissions display.
- Property type should not be included. I think range sliders are not used for some numeric properties where there is a reasonable step size.
- Why is polling used? with INDI client, it's event-driven as properties are updated from server side.
- There should be more optimizations regarding space used to try to view more properties. For example, right now for telescope simulator, I just see three properties only before I have to scroll down.
Ok, acknowledged. This will take some time.
1 ) I believe having multiple windows (one per decive), which one can arrange, is a plus for a web client. 2+3 ) I added a "--development" switch, displaying additional infos relevant for developers and removed it from normal display. 4 ) polling removed and using websockets.
- [x] Optimize space.
- [ ] Range sliders for entries with reasonable step size
Not all indi clients use sliders for entries with "reasonable" step sizes, most notably CdC.
The current implementation uses numeric entries with spin buttons, which I believe is more flexible.
Here's the more condensed layout:
@knro Hi Jasem, could you please have a look and let me know, if this achieves rough consensus in the RFC7282 sense? If not, what is the truely problematic part?
Sure, let me take a look
- Need to add websockets to requirements.
- Should not log property changes in message box (it's spamming too much)
- UI layout still needs work. For example, no spaces between tabs or navigation back to main page. There is a still lot of vertical padding between properties. Need a more grid-like structure.