npeter / ESP32AlpacaDevices2

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ASCOM Alpaca Server for ESP32 based devices

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:



Motivation

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

Features

  • 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)





Remarks



  • Webpage data has to be stored in the SPIFF-Filesystem of the ESP32
    • platformio/Build Filesystem image
    • platformio/Upload Filesystem Image

Usage

  • 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 **

Useful Links

Open Topics

  • Concept for AlpacaConfig.h
  • Test device specific interface with real device implementation
    • Already done for CoverCalibrator CoFlat

About

License:MIT License


Languages

Language:C++ 82.2%Language:C 8.0%Language:JavaScript 7.1%Language:HTML 1.9%Language:CSS 0.9%