This is an ASCOM Alpaca Server implementation for ESP32. The following devices are supported:
- Cover Calibrator V1
- Observing Conditions V1
- Switch V2
- Focuser V3
This library is more or less a new implementation. But it's primary based on the great ideas and work of:
My primary motivation was:
- To have a state of the art compact and robust platform for the rework of my ESP32 based devices with propritary network protocols and .NET based ASCOM drivers.
- Learn and understand ASCOM Alpaca API
- Work with embedded systems and web technologies
-
Easy to use platform for Alpaca Self Contained Device & Driver
-
Templates for CoverCalibrator, Switch and ObservingConditions (Focuser in future)
-
Support ASCOM auto discovery
-
Optimized for ESP32
-
Improved robustness, error handling and debugging
-
Device service counter for diagnosis
-
Published as library
-
Multi ASCOM devices on one ESP32
-
Support for several client connections per device
-
Connection watch dog
- if no request for a certain time (ALPACA_CLIENT_CONNECTION_TIMEOUT_SEC)
- impliziet device specific disconnect
-
Pass ASCOM Conform Universal validation with zero errors and issues (ConformU 3.0.0)
-
Addapted for ArduinoJason V7 (https://github.com/bblanchon/ArduinoJson.git)
-
Test with N.I.N.A 3.1 - with ASCOM Alpaca Discovery (https://nighttime-imaging.eu/)
-
Suported ASCOM devices:
- CoverCalibrator.h, CoverCalibrator.cpp
- ObservingConditions.h, ObservingConditions.cpp
- Switch.h, Switch.cpp
- Focuser.h, Focuser.cpp
-
Support of ASCOM Methods: action, commandblind, commandbool, commandstring
- Full implementation for CoverCalibrator
-
Logging using SLog: "https://github.com/npeter/SLog"
-
Configuration via dynamicaly created webpages as developed by (https://github.com/elenhinan/ESPAscomAlpacaServer)
- For this project "platformio" (https://platformio.org/) is used as development system
- Library dependencies:
- ESP32AlpacaDevices:
- "bblanchon/ArduinoJson": "^7.0.2",
- "me-no-dev/ESP Async WebServer": "^1.2.4",
- "SLog": "https://github.com/npeter/SLog",
- "AsyncElegantOTA": "https://github.com/npeter/AsyncElegantOTA"
Remark: https://github.com/ayushsharma82/ElegantOTA produces some chrashes inside AsyncTCP (to be investigated)
- ESP32AlpacaDevices:
- Webpage data has to be stored in the SPIFF-Filesystem of the ESP32
- platformio/Build Filesystem image
- platformio/Upload Filesystem Image
- Let your class inherit the relevant AscomDevice-derived class (e.c. AscomSwitch, AscomCoverCalibrator, AscomObservingConditions)
- Implement all pure virtual functions
- Implement all your device specific functions
- See demo application .\Examples*
ESP32AlpacaDevices class diagram
Demo Application: Alpaca Discovery Map generated with **Conform Universal **
- Concept for AlpacaConfig.h
- Test device specific interface with real device implementation
- Already done for CoverCalibrator CoFlat