diff --git a/allsky.sh b/allsky.sh
index 605380d40..03ccaa9b3 100755
--- a/allsky.sh
+++ b/allsky.sh
@@ -16,7 +16,7 @@ STOPPED_MSG="Allsky Stopped!"
ERROR_MSG_PREFIX="*** ERROR ***\n${STOPPED_MSG}\n"
#shellcheck disable=SC2086 source-path=.
-source "${ALLSKY_HOME}/variables.sh" || exit ${ALLSKY_ERROR_STOP}
+source "${ALLSKY_HOME}/variables.sh" || exit "${ALLSKY_ERROR_STOP}"
if [[ -z ${ALLSKY_CONFIG} ]]; then
MSG="FATAL ERROR: 'source variables.sh' did not work properly."
echo -e "${RED}*** ${MSG}${NC}"
@@ -25,19 +25,17 @@ if [[ -z ${ALLSKY_CONFIG} ]]; then
"${NOT_STARTED_MSG} ${MSG}"
fi
-#shellcheck disable=SC2086 source-path=scripts
-source "${ALLSKY_SCRIPTS}/functions.sh" || exit ${ALLSKY_ERROR_STOP}
-#shellcheck disable=SC2086,SC1091 # file doesn't exist in GitHub
-source "${ALLSKY_CONFIG}/config.sh" || exit ${ALLSKY_ERROR_STOP}
-#shellcheck disable=SC2086 source-path=scripts
-source "${ALLSKY_SCRIPTS}/installUpgradeFunctions.sh" || exit ${ALLSKY_ERROR_STOP}
+#shellcheck source-path=scripts
+source "${ALLSKY_SCRIPTS}/functions.sh" || exit "${ALLSKY_ERROR_STOP}"
+#shellcheck source-path=scripts
+source "${ALLSKY_SCRIPTS}/installUpgradeFunctions.sh" || exit "${ALLSKY_ERROR_STOP}"
# Make sure they rebooted if they were supposed to.
NEEDS_REBOOT="false"
reboot_needed && NEEDS_REBOOT="true"
# Make sure the settings have been configured after an installation or upgrade.
-LAST_CHANGED="$( settings ".lastChanged" )"
+LAST_CHANGED="$( settings ".lastchanged" )"
if [[ ${LAST_CHANGED} == "" ]]; then
echo "*** ===== Allsky needs to be configured before it can be used. See the WebUI."
if [[ ${NEEDS_REBOOT} == "true" ]]; then
@@ -46,12 +44,12 @@ if [[ ${LAST_CHANGED} == "" ]]; then
"Allsky needs\nconfiguration\nand the Pi needs\na reboot" \
"Allsky needs to be configured then the Pi rebooted."
else
- doExit "${EXIT_ERROR_STOP}" "ConfigurationNeeded" "" ""
"${ALLSKY_SCRIPTS}/addMessage.sh" "Error" "Allsky needs to be configured."
+ doExit "${EXIT_ERROR_STOP}" "ConfigurationNeeded" "" ""
fi
elif [[ ${NEEDS_REBOOT} == "true" ]]; then
- doExit "${EXIT_ERROR_STOP}" "RebootNeeded" "" ""
"${ALLSKY_SCRIPTS}/addMessage.sh" "Error" "The Pi needs to be rebooted."
+ doExit "${EXIT_ERROR_STOP}" "RebootNeeded" "" ""
fi
SEE_LOG_MSG="See ${ALLSKY_LOG}"
@@ -83,7 +81,10 @@ if [[ -f ${POST_INSTALLATION_ACTIONS} ]]; then
fi
fi
-USE_NOTIFICATION_IMAGES=$(settings ".notificationimages")
+USE_NOTIFICATION_IMAGES="$( settings ".notificationimages" )" || exit "${ALLSKY_ERROR_STOP}"
+UHUBCTL_PATH="$( settings ".uhubctlpath" )" || exit "${ALLSKY_ERROR_STOP}"
+UHUBCTL_PORT="$( settings ".uhubctlport" )" || exit "${ALLSKY_ERROR_STOP}"
+LOCALE="$( settings ".locale" )" || exit "${ALLSKY_ERROR_STOP}"
if [[ -z ${CAMERA_TYPE} ]]; then
MSG="FATAL ERROR: 'Camera Type' not set in WebUI."
@@ -98,7 +99,7 @@ pgrep "${ME}" | grep -v $$ | xargs "sudo kill -9" 2>/dev/null
if [[ ${CAMERA_TYPE} == "RPi" ]]; then
# "true" means use doExit() on error
- RPi_COMMAND_TO_USE="$(determineCommandToUse "true" "${ERROR_MSG_PREFIX}" )"
+ RPi_COMMAND_TO_USE="$( determineCommandToUse "true" "${ERROR_MSG_PREFIX}" )"
elif [[ ${CAMERA_TYPE} == "ZWO" ]]; then
RPi_COMMAND_TO_USE=""
@@ -122,7 +123,7 @@ elif [[ ${CAMERA_TYPE} == "ZWO" ]]; then
fi
MSG="${YELLOW}WARNING: Resetting USB ports ${REASON/\\n/ }"
- if [[ ${ON_TTY} -eq 1 ]]; then
+ if [[ ${ON_TTY} == "true" ]]; then
echo "${MSG}; restart ${ME} when done.${NC}" >&2
else
echo "${MSG}, then restarting.${NC}" >&2
@@ -136,7 +137,7 @@ elif [[ ${CAMERA_TYPE} == "ZWO" ]]; then
"${ALLSKY_SCRIPTS}/generate_notification_images.sh" --directory "${ALLSKY_TMP}" "${FILENAME}" \
"yellow" "" "85" "" "" \
"" "5" "yellow" "${EXTENSION}" "" "WARNING:\n\nResetting USB bus\n${REASON}.\nAttempt ${NUM_USB_RESETS}."
- sudo "$UHUBCTL_PATH" -a cycle -l "$UHUBCTL_PORT"
+ sudo "${UHUBCTL_PATH}" -a cycle -l "${UHUBCTL_PORT}"
sleep 3 # give it a few seconds, plus, allow the notification images to be seen
}
@@ -190,7 +191,7 @@ fi
# Make sure the settings file is linked to the camera-specific file.
if ! MSG="$( check_settings_link "${SETTINGS_FILE}" )" ; then
"${ALLSKY_SCRIPTS}/addMessage.sh" "error" "${MSG}"
- echo "ERROR: Settings file (${SETTINGS_FILE}) not linked correctly." >&2
+ echo "ERROR: ${MSG}" >&2
fi
# Make directories that need to exist.
@@ -216,8 +217,10 @@ mkdir "${ALLSKY_ABORTS_DIR}"
sudo chgrp "${WEBSERVER_GROUP}" "${ALLSKY_ABORTS_DIR}"
sudo chmod 775 "${ALLSKY_ABORTS_DIR}"
+rm -f "${ALLSKY_NOTIFICATION_LOG}" # clear out any notificatons from prior runs.
+
# Optionally display a notification image.
-if [[ $USE_NOTIFICATION_IMAGES -eq 1 ]]; then
+if [[ ${USE_NOTIFICATION_IMAGES} == "true" ]]; then
# Can do this in the background to speed up startup.
"${ALLSKY_SCRIPTS}/copy_notification_image.sh" "StartingUp" 2>&1 &
fi
@@ -225,30 +228,28 @@ fi
: > "${ARGS_FILE}"
# If the locale isn't in the settings file, try to determine it.
-LOCALE="$(settings .locale)"
if [[ -z ${LOCALE} ]]; then
if [[ -n ${LC_ALL} ]]; then
- echo "-Locale=${LC_ALL}" >> "${ARGS_FILE}"
+ echo "Locale=${LC_ALL}" >> "${ARGS_FILE}"
elif [[ -n ${LANG} ]]; then
- echo "-lOcale=${LANG}" >> "${ARGS_FILE}"
+ echo "lOcale=${LANG}" >> "${ARGS_FILE}"
elif [[ -n ${LANGUAGE} ]]; then
- echo "-loCale=${LANGUAGE}" >> "${ARGS_FILE}"
+ echo "loCale=${LANGUAGE}" >> "${ARGS_FILE}"
fi
fi
# We must pass "-config ${ARGS_FILE}" on the command line,
# and debuglevel we did above, so don't do them again.
-TAB="$( echo -e "\t" )"
-convert_json_to_tabs "${SETTINGS_FILE}" |
- grep -E -i -v "^config${TAB}|^debuglevel${TAB}" |
- sed -e 's/^/-/' -e "s/${TAB}/=/" >> "${ARGS_FILE}"
+# Only pass settings that are used by the capture program.
+"${ALLSKY_WEBUI}/includes/outputJSONwithEqual.php" --capture-only "${OPTIONS_FILE}" |
+ grep -E -i -v "^config=|^debuglevel=" >> "${ARGS_FILE}"
# When using a desktop environment a preview of the capture can be displayed in a separate window.
# The preview mode does not work if we are started as a service or if the debian distribution has no desktop environment.
-[[ $1 == "preview" ]] && echo "-preview=1" >> "${ARGS_FILE}"
+[[ $1 == "preview" ]] && echo "preview=true" >> "${ARGS_FILE}"
-echo "-version=$( get_version )" >> "${ARGS_FILE}"
-echo "-save_dir=${CAPTURE_SAVE_DIR}" >> "${ARGS_FILE}"
+echo "version=$( get_version )" >> "${ARGS_FILE}"
+echo "save_dir=${CAPTURE_SAVE_DIR}" >> "${ARGS_FILE}"
FREQUENCY_FILE="${ALLSKY_TMP}/IMG_UPLOAD_FREQUENCY.txt"
# If the user wants images uploaded only every n times, save that number to a file.
@@ -262,8 +263,6 @@ fi
CAPTURE="capture_${CAMERA_TYPE}"
-rm -f "${ALLSKY_NOTIFICATION_LOG}" # clear out any notificatons from prior runs.
-
# Clear up any flow timings
"${ALLSKY_SCRIPTS}/flow-runner.py" --cleartimings
@@ -277,7 +276,7 @@ RETCODE=$?
[[ ${RETCODE} -eq ${EXIT_OK} ]] && doExit "${EXIT_OK}" ""
if [[ ${RETCODE} -eq ${EXIT_RESTARTING} ]]; then
- if [[ ${ON_TTY} -eq 1 ]]; then
+ if [[ ${ON_TTY} == "true" ]]; then
echo "*** Can restart allsky now. ***"
NOTIFICATION_TYPE="NotRunning"
else
@@ -290,20 +289,20 @@ if [[ ${RETCODE} -eq ${EXIT_RESET_USB} ]]; then
# Reset the USB bus if possible
if [[ ${UHUBCTL_PATH} != "" ]]; then
reset_usb " (ASI_ERROR_TIMEOUTs)"
- if [[ ${ON_TTY} -eq 1 ]]; then
+ if [[ ${ON_TTY} == "true" ]]; then
echo "*** USB bus was reset; You can restart allsky now. ***"
NOTIFICATION_TYPE="NotRunning"
else
NOTIFICATION_TYPE="Restarting"
fi
- if [[ ${USE_NOTIFICATION_IMAGES} -eq 1 ]]; then
+ if [[ ${USE_NOTIFICATION_IMAGES} == "true" ]]; then
"${ALLSKY_SCRIPTS}/copy_notification_image.sh" "${NOTIFICATION_TYPE}"
fi
doExit 0 "" # use 0 so the service is restarted
else
# TODO: use ASI_ERROR_TIMEOUT message
MSG="Non-recoverable ERROR found"
- [[ ${ON_TTY} -eq 1 ]] && echo "*** ${MSG} - ${SEE_LOG_MSG}. ***"
+ [[ ${ON_TTY} == "true" ]] && echo "*** ${MSG} - ${SEE_LOG_MSG}. ***"
doExit "${EXIT_ERROR_STOP}" "Error" \
"${ERROR_MSG_PREFIX}Too many\nASI_ERROR_TIMEOUT\nerrors received!\n${SEE_LOG_MSG}" \
"${STOPPED_MSG} ${MSG} ${SEE_LOG_MSG}."
@@ -313,7 +312,7 @@ fi
# RETCODE -ge ${EXIT_ERROR_STOP} means we should not restart until the user fixes the error.
if [[ ${RETCODE} -ge ${EXIT_ERROR_STOP} ]]; then
echo "***"
- if [[ ${ON_TTY} -eq 1 ]]; then
+ if [[ ${ON_TTY} == "true" ]]; then
echo "*** After fixing, restart ${ME}.sh. ***"
else
echo "*** After fixing, restart the allsky service. ***"
@@ -323,7 +322,7 @@ if [[ ${RETCODE} -ge ${EXIT_ERROR_STOP} ]]; then
fi
# Some other error
-if [[ ${USE_NOTIFICATION_IMAGES} -eq 1 ]]; then
+if [[ ${USE_NOTIFICATION_IMAGES} == "true" ]]; then
# If started by the service, it will restart us once we exit.
doExit "${RETCODE}" "NotRunning"
else
diff --git a/config_repo/Makefile b/config_repo/Makefile
index 498b208b1..aaa5fac38 100644
--- a/config_repo/Makefile
+++ b/config_repo/Makefile
@@ -24,7 +24,8 @@ ifeq ($(PKGBUILD),)
endif
-CONFIGFILES := config.sh ftp-settings.sh
+CONFIGFILES := config.sh
+ENVFILE := env.json
UNINSTALLFILES := $(DESTDIR)$(sysconfdir)/logrotate.d/allsky $(DESTDIR)$(sysconfdir)/rsyslog.d/allsky.conf $(DESTDIR)$(sysconfdir)/systemd/system/allsky.service $(DESTDIR)$(sysconfdir)/systemd/system/allskyperiodic.service
%:
@@ -42,7 +43,6 @@ uninstall:
@echo `date +%F\ %R:%S` Complete.
@echo `date +%F\ %R:%S` NOTE: Config files were \-NOT\- removed.
@echo `date +%F\ %R:%S` To remove config files, please run \'sudo make remove_configs\'
-
.PHONY : uninstall
ifeq ($(PKGBUILD),1)
@@ -57,7 +57,6 @@ createDirs:
@if [ ! -e $(DESTDIR)$(sysconfdir)/profile.d ]; then mkdir -p $(DESTDIR)$(sysconfdir)/profile.d; fi
@if [ ! -e $(DESTDIR)$(sysconfdir)/systemd/system ]; then mkdir -p $(DESTDIR)$(sysconfdir)/systemd/system; fi
@if [ ! -e $(DESTDIR)$(sysconfdir)/udev/rules.d ]; then mkdir -p $(DESTDIR)$(sysconfdir)/udev/rules.d; fi
-
.PHONY : createDirs
$(CONFIGFILES):
@@ -67,7 +66,14 @@ $(CONFIGFILES):
fi
.PHONY : $(CONFIGFILES)
-install: createDirs $(CONFIGFILES)
+$(ENVFILE):
+ @if [ ! -e $(DESTDIR)$(sysconfdir)/allsky/$@ ]; then \
+ echo `date +%F\ %R:%S` Copying default $@; \
+ install -m 0644 $@.repo $(DESTDIR)$(sysconfdir)/allsky/$@; \
+ fi
+.PHONY : $(ENVFILE)
+
+install: createDirs $(CONFIGFILES) $(ENVFILE)
@echo `date +%F\ %R:%S` Setting up udev rules...
@install -D -m 0644 asi.rules $(DESTDIR)$(sysconfdir)/udev/rules.d/
@echo `date +%F\ %R:%S` Setting up logging...
@@ -80,18 +86,18 @@ install: createDirs $(CONFIGFILES)
@echo `date +%F\ %R:%S` Setting up home environment variable...
@echo -e "export ALLSKY_TMP=/tmp\nexport ALLSKY_CONFIG=$(DESTDIR)$(sysconfdir)/allsky\nexport ALLSKY_SCRIPTS=$(DESTDIR)$(libexecdir)\nexport ALLSKY_NOTIFICATION_IMAGES=$(DESTDIR)$(sharedir)\nexport ALLSKY_IMAGES=/home/allsky/images/" > $(DESTDIR)$(sysconfdir)/profile.d/allsky.sh
-else # Not in package build mode
+
+else ############################# Not in package build mode
remove_configs:
@echo `date +%F\ %R:%S` Removing config path and files ../config
@rm -rf ../config
-
.PHONY : remove_configs
createDirs:
@echo `date +%F\ %R:%S` Creating directory structures...
@if [ ! -e ../config ]; then mkdir -p ../config; chown $(SUDO_USER):$(SUDO_USER) ../config; fi
-
.PHONY : createDirs
+
$(CONFIGFILES):
@if [ ! -e ../config/$@ ]; then \
echo `date +%F\ %R:%S` Copying default $@; \
@@ -99,7 +105,14 @@ $(CONFIGFILES):
fi
.PHONY : $(CONFIGFILES)
-install: createDirs $(CONFIGFILES)
+$(ENVFILE):
+ @if [ ! -e ../$@ ]; then \
+ echo `date +%F\ %R:%S` Copying default .$@; \
+ install -m 0644 -o $(SUDO_USER) -g $(SUDO_USER) $@.repo ../$@; \
+ fi
+.PHONY : $(ENVFILE)
+
+install: createDirs $(CONFIGFILES) $(ENVFILE)
@echo `date +%F\ %R:%S` Setting up udev rules...
@install -D -m 0644 asi.rules $(DESTDIR)$(sysconfdir)/udev/rules.d/
@echo `date +%F\ %R:%S` Setting up logging...
diff --git a/config_repo/allskyDefines.inc.repo b/config_repo/allskyDefines.inc.repo
index 5e26dfb48..9f3f5b331 100644
--- a/config_repo/allskyDefines.inc.repo
+++ b/config_repo/allskyDefines.inc.repo
@@ -1,6 +1,7 @@
Allsky" link,
-# then, in the "Editor WebUI Page" section, open the "config.sh" sub-section.
-
-# X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*XX*X*X*X*X*X*X
-
-
-########## Images
-# Set to "true" to upload the current image to your website.
-IMG_UPLOAD="false"
-
-# Upload the image file as "image-YYYYMMDDHHMMSS.jpg" (true) or "image.jpg" (false).
-IMG_UPLOAD_ORIGINAL_NAME="false"
-
-# If IMG_UPLOAD is "true", upload images every IMG_UPLOAD_FREQUENCY frames, e.g., every 5 frames.
-# 1 uploades every frame.
-IMG_UPLOAD_FREQUENCY=1
-
-# Resize images before cropping, stretching, and saving.
-IMG_RESIZE="false"
-IMG_WIDTH=2028
-IMG_HEIGHT=1520
-
-# Crop images before stretching and saving.
-CROP_IMAGE="false"
-CROP_WIDTH=640
-CROP_HEIGHT=480
-CROP_OFFSET_X=0
-CROP_OFFSET_Y=0
-
-# Auto stretch images saved at night. The numbers below are good defaults.
-AUTO_STRETCH="false"
-AUTO_STRETCH_AMOUNT=10
-AUTO_STRETCH_MID_POINT="10%"
-
-# Resize uploaded images. Change the size to fit your sensor.
-RESIZE_UPLOADS="false"
-RESIZE_UPLOADS_WIDTH=962
-RESIZE_UPLOADS_HEIGHT=720
-
-# Create thumbnails of images. If you never look at them, consider changing this to "false".
-IMG_CREATE_THUMBNAILS="true"
-
-# Remove corrupt or too dim/bright images.
-REMOVE_BAD_IMAGES="true"
-REMOVE_BAD_IMAGES_THRESHOLD_LOW=1
-REMOVE_BAD_IMAGES_THRESHOLD_HIGH=90
-
-
-########## Timelapse
-# Set to "true" to generate a timelapse video at the end of each night.
-TIMELAPSE="true"
-
-# Set the resolution in pixels of the timelapse video.
-TIMELAPSEWIDTH=0
-TIMELAPSEHEIGHT=0
-
-# Bitrate of the timelapse video.
-TIMELAPSE_BITRATE="2000k"
-
-# Timelapse video Frames Per Second.
-FPS=25
-
-# Encoder for timelapse video.
-VCODEC="libx264"
-
-# Pixel format.
-PIX_FMT="yuv420p"
-
-# Amount of information displayed while creating a timelapse video.
-FFLOG="warning"
-
-# Set to "true" to keep the list of files used in creating the timelapse video.
-KEEP_SEQUENCE="false"
-
-# Any additional timelapse parameters. Run "ffmpeg -?" to see the options.
-TIMELAPSE_EXTRA_PARAMETERS=""
-
-# Set to "true" to upload the timelapse video to your website at the end of each night.
-UPLOAD_VIDEO="false"
-
-# Set to "true" to upload the timelapse video's thumbnail to your website at the end of each night.
-TIMELAPSE_UPLOAD_THUMBNAIL="true"
-
-###### Mini-timelapse
-# The number of images you want in the mini-timelapse. 0 disables mini-timelapse creation.
-TIMELAPSE_MINI_IMAGES=0
-
-# Should a mini-timelapse be created even if ${TIMELAPSE_MINI_IMAGES} haven't been captured yet?
-TIMELAPSE_MINI_FORCE_CREATION="false"
-
-# After how many images should the mini-timelapse be made?
-# If you have a slow Pi or short delays between images,
-# set this to a higher number (i.e., not as often).
-TIMELAPSE_MINI_FREQUENCY=5
-
-# The remaining TIMELAPSE_MINI_* variables serve the same function as the daily timelapse.
-TIMELAPSE_MINI_UPLOAD_VIDEO="true"
-TIMELAPSE_MINI_UPLOAD_THUMBNAIL="true"
-TIMELAPSE_MINI_FPS=5
-TIMELAPSE_MINI_BITRATE="1000k"
-TIMELAPSE_MINI_WIDTH=1014
-TIMELAPSE_MINI_HEIGHT=760
-
-
-########## Keogram
-# Set to "true" to generate a keogram at the end of each night.
-KEOGRAM="true"
-
-# Additional Keogram parameters.
-KEOGRAM_EXTRA_PARAMETERS="--font-size 1.0 --font-line 1 --font-color '255 255 255'"
-
-# Set to "true" to upload the keogram image to your website at the end of each night.
-UPLOAD_KEOGRAM="false"
-
-
-########## Startrails
-# Set to "true" to generate a startrails image of each night.
-STARTRAILS="true"
-
-# Images with a brightness higher than this threshold will be skipped for
-# startrails image generation.
-BRIGHTNESS_THRESHOLD=0.1
-
-# Any additional startrails parameters.
-STARTRAILS_EXTRA_PARAMETERS=""
-
-# Set to "true" to upload the startrails image to your website at the end of each night.
-UPLOAD_STARTRAILS="false"
-
-
-########## Other
-# Size of thumbnails.
-THUMBNAIL_SIZE_X=100
-THUMBNAIL_SIZE_Y=75
-
-# Set this value to the number of days images plus videos you want to keep.
-# Set to 0 to keep ALL days.
-DAYS_TO_KEEP=14
-
-# Same as DAYS_TO_KEEP, but for the Allsky Website, if installed.
-WEB_DAYS_TO_KEEP=0
-
-# See the documentation for a description of this setting.
-WEBUI_DATA_FILES=""
-
-# See the documentation for a description of these settings.
-UHUBCTL_PATH=""
-UHUBCTL_PORT=2
-
-
-# ================ DO NOT CHANGE ANYTHING BELOW THIS LINE ================
-ME2="$(basename "${BASH_SOURCE[0]}")"
-
-# CAMERA_TYPE is updated during installation
-CAMERA_TYPE=""
-if [ "${CAMERA_TYPE}" = "" ]; then
- echo -e "${RED}${ME2}: ERROR: Please set 'Camera Type' in the WebUI.${NC}"
- sudo systemctl stop allsky > /dev/null 2>&1
- exit ${EXIT_ERROR_STOP}
-fi
-
-IMG_DIR="current/tmp"
-CAPTURE_SAVE_DIR="${ALLSKY_TMP}"
-
-# Don't try to upload a mini-timelapse if they aren't using them.
-if [[ ${TIMELAPSE_MINI_IMAGES} -eq 0 ]]; then
- TIMELAPSE_MINI_UPLOAD_VIDEO="false"
- TIMELAPSE_MINI_UPLOAD_THUMBNAIL="false"
-fi
-
-if [[ -z ${SETTINGS_FILE} ]]; then # SETTINGS_FILE is defined in variables.sh
- echo -e "${RED}${ME2}: ERROR: SETTINGS_FILE variable not defined!${NC}"
- echo -e "${RED}Make sure 'variables.sh' is source'd in!${NC}"
- return 1
-fi
-if [[ ! -f ${SETTINGS_FILE} ]]; then
- echo -e "${RED}${ME2}: ERROR: Settings file '${SETTINGS_FILE}' not found!${NC}"
- sudo systemctl stop allsky > /dev/null 2>&1
- exit ${EXIT_ERROR_STOP}
-fi
-
-# Get the name of the file the websites will look for, and split into name and extension.
-FULL_FILENAME="$(settings ".filename")"
-EXTENSION="${FULL_FILENAME##*.}"
-FILENAME="${FULL_FILENAME%.*}"
-
-CAMERA_MODEL="$(settings '.cameraModel')"
-
-# So scripts can conditionally output messages.
-ALLSKY_DEBUG_LEVEL="$(settings '.debuglevel')"
-# ALLSKY_VERSION is updated during installation
-ALLSKY_VERSION="XX_ALLSKY_VERSION_XX"
-
-CONFIG_SH_VERSION=1
diff --git a/config_repo/env.json.repo b/config_repo/env.json.repo
new file mode 100644
index 000000000..e389355ff
--- /dev/null
+++ b/config_repo/env.json.repo
@@ -0,0 +1,26 @@
+{
+ "WARNING" : "Do NOT edit this file manually. Use the WebUI.",
+ "GITHUB_TOKEN" : "",
+ "REMOTEWEBSITE_HOST" : "",
+ "REMOTEWEBSITE_PORT" : "",
+ "REMOTEWEBSITE_USER" : "",
+ "REMOTEWEBSITE_PASSWORD" : "",
+ "REMOTEWEBSITE_LFTP_COMMANDS" : "",
+ "REMOTEWEBSITE_SSH_KEY_FILE" : "",
+ "REMOTEWEBSITE_AWS_CLI_DIR" : "/home/pi/.local/bin",
+ "REMOTEWEBSITE_S3_BUCKET" : "allskybucket",
+ "REMOTEWEBSITE_S3_ACL" : "private",
+ "REMOTEWEBSITE_GCS_BUCKET" : "allskybucket",
+ "REMOTEWEBSITE_GCS_ACL" : "private",
+ "REMOTESERVER_HOST" : "",
+ "REMOTESERVER_PORT" : "",
+ "REMOTESERVER_USER" : "",
+ "REMOTESERVER_PASSWORD" : "",
+ "REMOTESERVER_LFTP_COMMANDS" : "",
+ "REMOTESERVER_SSH_KEY_FILE" : "",
+ "REMOTESERVER_AWS_CLI_DIR" : "/home/pi/.local/bin",
+ "REMOTESERVER_S3_BUCKET" : "allskybucket",
+ "REMOTESERVER_S3_ACL" : "private",
+ "REMOTESERVER_GCS_BUCKET" : "allskybucket",
+ "REMOTESERVER_GCS_ACL" : "private"
+}
diff --git a/config_repo/ftp-settings.sh.repo b/config_repo/ftp-settings.sh.repo
deleted file mode 100644
index 89c91ebe3..000000000
--- a/config_repo/ftp-settings.sh.repo
+++ /dev/null
@@ -1,80 +0,0 @@
-#!/bin/bash
-
-# X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*XX*X*X*X*X*X*X
-
-# For details on these settings, click on the "Allsky Documentation" link in the WebUI,
-# then click on the "Settings -> Allsky" link,
-# then, in the "Editor WebUI Page" section, open the "ftp-settings.sh" sub-section.
-
-# X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*XX*X*X*X*X*X*X
-
-
-
- # How will files be uploaded?
-PROTOCOL=""
-
- # The directory where the current image should be copied to.
-IMAGE_DIR=""
-WEB_IMAGE_DIR=""
-
- # The directory where the timelapse video should be uploaded to.
-VIDEOS_DIR=""
-VIDEOS_DESTINATION_NAME=""
-WEB_VIDEOS_DIR=""
-
- # The directory where the keogram image should be copied to.
-KEOGRAM_DIR=""
-KEOGRAM_DESTINATION_NAME=""
-WEB_KEOGRAM_DIR=""
-
- # The directory where the startrails image should be copied to.
-STARTRAILS_DIR=""
-STARTRAILS_DESTINATION_NAME=""
-WEB_STARTRAILS_DIR=""
-
-
-############### ftp, ftps, sftp, and scp PROTOCOLS only:
- # Name of the remote server.
-REMOTE_HOST=""
-
- # Optionally enter the port required by your server.
-REMOTE_PORT=""
-
-
-############### ftp, ftps, and sftp PROTOCOLS only. REMOTE_USER is also used by the scp PROTOCOL:
- # The username of the login on the remote server.
-REMOTE_USER=""
-
- # The password of the login on your FTP server. Does not apply to PROTOCOL=scp.
-REMOTE_PASSWORD=""
-
- # If you need special commands executed when connecting to the FTP server enter them here.
-LFTP_COMMANDS=""
-
-
-############### scp PROTOCOL only:
- # The path to the SSH key.
-SSH_KEY_FILE=""
-
-
-############### S3 PROTOCOL only:
- # AWS CLI directory where the AWS CLI tools are installed.
-AWS_CLI_DIR="/home/pi/.local/bin"
-
- # Name of S3 Bucket where the files will be uploaded.
-S3_BUCKET="allskybucket"
-
- # S3 Access Control List (ACL).
-S3_ACL="private"
-
-
-############### GCS PROTOCOL only:
- # Name of the GCS bucket where the files are uploaded.
-GCS_BUCKET="allskybucket"
-
- # GCS Access Control List (ACL).
-GCS_ACL="private"
-
-
-#### DO NOT CHANGE THE NEXT LINE
-FTP_SH_VERSION=1
diff --git a/config_repo/options.json.repo b/config_repo/options.json.repo
index a8fb44207..5e10ba2db 100644
--- a/config_repo/options.json.repo
+++ b/config_repo/options.json.repo
@@ -1,50 +1,63 @@
[
{
-"name" : "daytimeSettingsHeader",
-"description" : "Daytime settings",
-"type" : "header",
-"display" : 1,
-"advanced" : 0
+"name" : "daynighttab========================================",
+"label" : "Day/Night Settings",
+"type" : "header-tab"
},
{
-"name" : "takeDaytimeImages",
-"default" : 1,
-"description" : "Activate to take daytime images.",
+"name" : "daytimesettingsheader",
+"label" : "Daytime settings",
+"type" : "header"
+},
+{
+"name" : "daynightcolumns",
+"label" : "Setting, Day Value, Description",
+"candrop" : "Description",
+"type" : "header-column"
+},
+{
+"name" : "takedaytimeimages",
+"default" : true,
+"description" : "Enable to take daytime images.",
"label" : "Daytime Capture",
"type" : "boolean",
-"display" : 1,
-"checkchanges" : 1,
-"advanced" : 1
+"usage" : "capture",
+"checkchanges" : true,
+"action" : "reload",
+"advanced" : true
},
{
-"name" : "saveDaytimeImages",
-"default" : 0,
-"description" : "Activate to save daytime images. Only applies if Daytime Capture is enabled.",
+"name" : "savedaytimeimages",
+"default" : false,
+"description" : "Enable to save daytime images.",
"label" : "Daytime Save",
"type" : "boolean",
-"display" : 1,
-"advanced" : 1
+"booldependson" : "takedaytimeimages",
+"advanced" : true
+
},
{
"name" : "dayautoexposure",
-"default" : 1,
-"description" : "Activate to enable daytime auto-exposure.",
+"default" : true,
+"description" : "Enable to use daytime auto-exposure.",
"label" : "Auto-Exposure",
"type" : "boolean",
-"display" : 1,
-"generic" : 1,
-"advanced" : 1
+"usage" : "capture",
+"booldependson" : "takedaytimeimages",
+"action" : "reload",
+"advanced" : true
},
{
"name" : "daymaxautoexposure",
"minimum" : "_min",
"maximum" : "_max",
"default" : "_default",
-"description" : "Maximum daytime Auto-Exposure time in milliseconds (1000ms = 1 sec). Only applies if daytime Auto-Exposure is enabled.",
+"description" : "Maximum daytime Auto-Exposure time in milliseconds (1000ms = 1 sec).",
"label" : "Max Auto-Exposure",
"type" : "float",
-"display" : 1,
-"advanced" : 0
+"usage" : "capture",
+"booldependson" : "takedaytimeimages AND daymaxautoexposure",
+"action" : "reload"
},
{
"name" : "dayexposure",
@@ -54,8 +67,10 @@
"description" : "Manual exposure time in milliseconds (1000ms = 1 sec). Can be a fraction. If using daytime Auto-Exposure, this number is used as a starting point.",
"label" : "Manual Exposure",
"type" : "float",
-"display" : 1,
-"advanced" : 1
+"usage" : "capture",
+"booldependson" : "takedaytimeimages",
+"action" : "reload",
+"advanced" : true
},
{
"name" : "daymean",
@@ -65,30 +80,23 @@
"description" : "The target mean brightness level when Auto-Exposure is on. 1.0 is pure white. Best used when Auto-Exposure and Auto-Gain are on. 0 disables this auto-exposure mode.",
"label" : "Mean Target",
"type" : "float",
-"display" : 1,
-"advanced" : 1
+"usage" : "capture",
+"booldependson" : "takedaytimeimages",
+"action" : "reload",
+"advanced" : true
},
{
"name" : "daymeanthreshold",
"minimum" : "day_min",
"maximum" : "day_max",
"default" : "day_default",
-"description" : "When using Mean Target this specifies how close to the target the brightness should be.",
+"description" : "When using Mean Target this specifies how close to the target the brightness should be.",
"label" : "Mean Threshold",
"type" : "float",
-"display" : 1,
-"advanced" : 1
-},
-{
-"name" : "daybrightness",
-"minimum" : "_min",
-"maximum" : "_max",
-"default" : "_default",
-"description" : "Deprecated. Use Mean Target instead. Changes the amount of light in the image. Higher numbers are brighter.",
-"label" : "Brightness",
-"type" : "float",
-"display" : "_display",
-"advanced" : 0
+"usage" : "capture",
+"booldependson" : "takedaytimeimages AND daymean",
+"action" : "reload",
+"advanced" : true
},
{
"name" : "daydelay",
@@ -98,19 +106,20 @@
"description" : "Delay between daytime images in milliseconds (1000ms = 1 sec).",
"label" : "Delay",
"type" : "integer",
-"display" : 1,
-"generic" : 1,
-"advanced" : 0
+"usage" : "capture",
+"booldependson" : "takedaytimeimages",
+"action" : "reload"
},
{
"name" : "dayautogain",
-"default" : 0,
-"description" : "Activate to enable dayime Auto-Gain.",
+"default" : false,
+"description" : "Enable to use dayime Auto-Gain.",
"label" : "Auto-Gain",
"type" : "boolean",
-"display" : 1,
-"generic" : 1,
-"advanced" : 1
+"usage" : "capture",
+"booldependson" : "takedaytimeimages",
+"action" : "reload",
+"advanced" : true
},
{
"name" : "daymaxautogain",
@@ -120,19 +129,23 @@
"description" : "Maximum gain when using Auto-Gain.",
"label" : "Max Auto-Gain",
"type" : "float",
-"display" : 1,
-"advanced" : 1
+"usage" : "capture",
+"booldependson" : "takedaytimeimages AND dayautogain",
+"action" : "reload",
+"advanced" : true
},
{
"name" : "daygain",
"minimum" : "_min",
"maximum" : "_max",
"default" : "day_default",
-"description" : "Manually sets the light sensitivity of the camera. A high number returns a brighter image but more noise too. Can normally leave at the minimum value for daytime.",
+"description" : "Manually sets the light sensitivity of the camera. A high number returns a brighter image but more noise. Can normally leave at the minimum value for daytime.",
"label" : "Gain",
"type" : "float",
-"display" : 1,
-"advanced" : 1
+"usage" : "capture",
+"booldependson" : "takedaytimeimages",
+"action" : "reload",
+"advanced" : true
},
{
"name" : "daybin",
@@ -140,22 +153,24 @@
"description" : "Binning level. 1x1 = OFF.",
"label" : "Binning",
"type" : "select",
+"usage" : "capture",
"options" : [
"bin_values"
],
-"display" : 1,
-"generic" : 1,
-"advanced" : 1
+"booldependson" : "takedaytimeimages",
+"action" : "reload",
+"advanced" : true
},
{
"name" : "dayawb",
-"default" : 0,
-"description" : "Sets Auto White Balance.",
+"default" : true,
+"description" : "Sets Auto White Balance (camera adjusts color).",
"label" : "Auto White Balance",
"type" : "boolean",
"display" : "_display",
-"generic" : 1,
-"advanced" : 0
+"usage" : "capture",
+"booldependson" : "takedaytimeimages",
+"action" : "reload"
},
{
"name" : "daywbr",
@@ -166,7 +181,9 @@
"label" : "Red Balance",
"type" : "float",
"display" : "_display",
-"advanced" : 0
+"usage" : "capture",
+"booldependson" : "takedaytimeimages AND dayawb",
+"action" : "reload"
},
{
"name" : "daywbb",
@@ -177,32 +194,37 @@
"label" : "Blue Balance",
"type" : "float",
"display" : "_display",
-"advanced" : 0
+"usage" : "capture",
+"booldependson" : "takedaytimeimages AND dayawb",
+"action" : "reload"
},
{
"name" : "dayskipframes",
"minimum" : 0,
"maximum" : "none",
"default" : 5,
-"description" : "When starting Allsky during the day, skip up to this many frames while the software gets to the correct exposure. Only applies if daytime Auto-Exposure is on.",
+"description" : "When starting Allsky during the day, skip up to this many frames while the software gets to the correct exposure.",
"label" : "Frames To Skip",
"type" : "integer",
-"display" : 1,
-"generic" : 1,
-"advanced" : 1
+"usage" : "capture",
+"booldependson" : "takedaytimeimages AND dayautoexposure",
+"action" : "reload",
+"advanced" : true
},
{
-"name" : "dayEnableCooler",
-"default" : 0,
-"description" : "Activate to use cooling (works only on cooled cameras).",
+"name" : "dayenablecooler",
+"default" : true,
+"description" : "Enable to use cooling (on cooled cameras only).",
"label" : "Cooling",
"type" : "boolean",
"display" : "_display",
-"generic" : 1,
-"advanced" : 1
+"usage" : "capture",
+"booldependson" : "takedaytimeimages",
+"action" : "reload",
+"advanced" : true
},
{
-"name" : "dayTargetTemp",
+"name" : "daytargettemp",
"minimum" : "_min",
"maximum" : "_max",
"default" : "_default",
@@ -210,47 +232,71 @@
"label" : "Target Temp.",
"type" : "integer",
"display" : "_display",
-"generic" : 1,
-"advanced" : 1
+"usage" : "capture",
+"booldependson" : "takedaytimeimages AND dayenablecooler",
+"action" : "reload",
+"advanced" : true
},
{
-"name" : "dayTuningFile",
+"name" : "daytuningfile",
"default" : "",
-"description" : "Name of the day camera tuning file to use. Omit this option to preserve the default behavior of libcamera. Please read this documentation or this document if using a Raspberry camera with libcamera. For other Raspberry cameras read the camera manual for more information.",
+"description" : "Name of the optional day camera tuning file to use. See documentation , document , or the camera manual for more information.",
"label" : "Tuning File",
"type" : "widetext",
+"usage" : "capture",
"display" : "_display",
-"checkchanges" : 1,
-"optional" : 1,
-"advanced" : 1
+"checkchanges" : true,
+"optional" : true,
+"booldependson" : "takedaytimeimages",
+"action" : "restart",
+"advanced" : true
},
+
{
-"name" : "nighttimeSettingsHeader",
-"description" : "Nighttime settings",
-"type" : "header",
-"display" : 1,
-"advanced" : 0
+"name" : "nighttimesettingsheader",
+"label" : "Nighttime settings",
+"type" : "header"
+},
+{
+"name" : "takenighttimeimages",
+"default" : true,
+"description" : "Enable to take nighttime images.",
+"label" : "Nighttime Capture",
+"type" : "boolean",
+"usage" : "capture",
+"checkchanges" : true,
+"action" : "reload",
+"advanced" : true
+},
+{
+"name" : "savenighttimeimages",
+"default" : false,
+"description" : "Enable to save nighttime images.",
+"label" : "Nighttime Save",
+"type" : "boolean",
+"booldependson" : "takenighttimeimages",
+"advanced" : true
},
{
"name" : "nightautoexposure",
-"default" : 1,
-"description" : "Activate to enable nighttime auto-exposure.",
+"default" : true,
+"description" : "Enable to use nighttime auto-exposure.",
"label" : "Auto-Exposure",
"type" : "boolean",
-"display" : 1,
-"generic" : 1,
-"advanced" : 0
+"usage" : "capture",
+"action" : "reload"
},
{
"name" : "nightmaxautoexposure",
"minimum" : "_min",
"maximum" : "_max",
"default" : "_default",
-"description" : "Maximum nighttime Auto-Exposure time in milliseconds (1000ms = 1 sec). Only applies if nighttime Auto-Exposure is enabled.",
+"description" : "Maximum nighttime Auto-Exposure time in milliseconds (1000ms = 1 sec).",
"label" : "Max Auto-Exposure",
"type" : "float",
-"display" : 1,
-"advanced" : 0
+"usage" : "capture",
+"booldependson" : "nightautoexposure",
+"action" : "reload"
},
{
"name" : "nightexposure",
@@ -260,8 +306,8 @@
"description" : "Manual exposure time in milliseconds (1000ms = 1 sec). Can be a fraction. If using nighttime Auto-Exposure, this number is used as a starting point.",
"label" : "Manual Exposure",
"type" : "float",
-"display" : 1,
-"advanced" : 0
+"usage" : "capture",
+"action" : "reload"
},
{
"name" : "nightmean",
@@ -271,30 +317,22 @@
"description" : "The target mean brightness level when Auto-Exposure is on. 1.0 is pure white. Best used when Auto-Exposure and Auto-Gain are on. 0 disables this auto-exposure mode.",
"label" : "Mean Target",
"type" : "float",
-"display" : 1,
-"advanced" : 1
+"usage" : "capture",
+"action" : "reload",
+"advanced" : true
},
{
"name" : "nightmeanthreshold",
"minimum" : "night_min",
"maximum" : "night_max",
"default" : "day_default",
-"description" : "When using Mean Target this specifies how close to the target the brightness should be.",
+"description" : "When using Mean Target this specifies how close to the target the brightness should be.",
"label" : "Mean Threshold",
"type" : "float",
-"display" : 1,
-"advanced" : 1
-},
-{
-"name" : "nightbrightness",
-"minimum" : "_min",
-"maximum" : "_max",
-"default" : "_default",
-"description" : "Deprecated. Use Mean Target instead. Changes the amount of light in the image. Higher numbers are brighter.",
-"label" : "Brightness",
-"type" : "float",
-"display" : "_display",
-"advanced" : 0
+"usage" : "capture",
+"booldependson" : "nightmean",
+"action" : "reload",
+"advanced" : true
},
{
"name" : "nightdelay",
@@ -304,19 +342,17 @@
"description" : "Delay between nighttime images in milliseconds (1000ms = 1 sec).",
"label" : "Delay",
"type" : "integer",
-"display" : 1,
-"generic" : 1,
-"advanced" : 0
+"usage" : "capture",
+"action" : "reload"
},
{
"name" : "nightautogain",
-"default" : 0,
-"description" : "Activate to enable nighttime Auto-Gain.",
+"default" : false,
+"description" : "Enable to use nighttime Auto-Gain.",
"label" : "Auto-Gain",
"type" : "boolean",
-"display" : 1,
-"generic" : 1,
-"advanced" : 0
+"usage" : "capture",
+"action" : "reload"
},
{
"name" : "nightmaxautogain",
@@ -326,19 +362,21 @@
"description" : "Maximum gain when using Auto-Gain.",
"label" : "Max Auto-Gain",
"type" : "float",
-"display" : 1,
-"advanced" : 1
+"usage" : "capture",
+"booldependson" : "nightautogain",
+"action" : "reload",
+"advanced" : true
},
{
"name" : "nightgain",
"minimum" : "_min",
"maximum" : "_max",
"default" : "night_default",
-"description" : "Manually sets the light sensitivity of the camera. A high number returns a brighter image but more noise too.",
+"description" : "Manually sets the light sensitivity of the camera. A high number returns a brighter image but more noise.",
"label" : "Gain",
"type" : "float",
-"display" : 1,
-"advanced" : 0
+"usage" : "capture",
+"action" : "reload"
},
{
"name" : "nightbin",
@@ -346,22 +384,21 @@
"description" : "Binning level. 1x1 = OFF.",
"label" : "Binning",
"type" : "select",
+"usage" : "capture",
"options" : [
"bin_values"
],
-"display" : 1,
-"generic" : 1,
-"advanced" : 0
+"action" : "reload"
},
{
"name" : "nightawb",
-"default" : 0,
-"description" : "Activate to enable Auto White Balance (camera adjusts color).",
+"default" : false,
+"description" : "Enable to use Auto White Balance (camera adjusts color).",
"label" : "Auto White Balance",
"type" : "boolean",
+"usage" : "capture",
"display" : "_display",
-"generic" : 1,
-"advanced" : 0
+"action" : "reload"
},
{
"name" : "nightwbr",
@@ -372,7 +409,9 @@
"label" : "Red Balance",
"type" : "float",
"display" : "_display",
-"advanced" : 0
+"usage" : "capture",
+"booldependsoff" : "nightawb",
+"action" : "reload"
},
{
"name" : "nightwbb",
@@ -382,60 +421,81 @@
"description" : "Blue component for the white balance. When using Auto White Balance, this number is a starting point.",
"label" : "Blue Balance",
"type" : "float",
+"usage" : "capture",
"display" : "_display",
-"advanced" : 0
+"booldependsoff" : "nightawb",
+"action" : "reload"
},
{
"name" : "nightskipframes",
"minimum" : 0,
"maximum" : "none",
"default" : 1,
-"description" : "When starting Allsky at night, skip up to this many frames while the software gets to the correct exposure. Only applies if nighttime Auto-Exposure is on.",
+"description" : "When starting Allsky at night, skip up to this many frames while the software gets to the correct exposure.",
"label" : "Frames To Skip",
"type" : "integer",
-"display" : 1,
-"generic" : 1,
-"advanced" : 1
+"usage" : "capture",
+"booldependson" : "nightautoexposure",
+"advanced" : true
},
{
-"name" : "nightEnableCooler",
-"default" : 0,
-"description" : "Activate to use cooling (works only on cooled cameras).",
+"name" : "nightenablecooler",
+"default" : false,
+"description" : "Enable to use cooling (on cooled cameras only).",
"label" : "Cooling",
"type" : "boolean",
+"usage" : "capture",
"display" : "_display",
-"generic" : 1,
-"advanced" : 1
+"action" : "reload",
+"advanced" : true
},
{
-"name" : "nightTargetTemp",
+"name" : "nighttargettemp",
"minimum" : "_min",
"maximum" : "_max",
"default" : "_default",
"description" : "Sensor's target temperature when cooler is enabled (degrees Celsius).",
"label" : "Target Temp.",
"type" : "integer",
+"usage" : "capture",
"display" : "_display",
-"generic" : 1,
-"advanced" : 1
+"booldependson" : "nightenablecooler",
+"action" : "reload",
+"advanced" : true
},
{
-"name" : "nightTuningFile",
+"name" : "nighttuningfile",
"default" : "",
"description" : "Name of the night camera tuning file to use.",
"label" : "Tuning File",
"type" : "widetext",
+"usage" : "capture",
"display" : "_display",
-"checkchanges" : 1,
-"optional" : 1,
-"advanced" : 1
+"checkchanges" : true,
+"optional" : true,
+"action" : "restart",
+"advanced" : true
},
+
{
-"name" : "DayAndNightHeader",
-"description" : "Both daytime and nighttime settings",
-"type" : "header",
-"display" : 1,
-"advanced" : 0
+"name" : "bothtab========================================",
+"label" : "24 Hours",
+"type" : "header-tab"
+},
+{
+"name" : "dayandnightheader",
+"label" : "Both day and night settings",
+"type" : "header"
+},
+{
+"name" : "daystokeep",
+"minimum" : 0,
+"maximum" : "none",
+"default" : 14,
+"description" : "Number of days of images and videos to keep on the Pi.",
+"label" : "Days To Keep",
+"type" : "integer",
+"booldependson" : "savedaytimeimages OR savenighttimeimages"
},
{
"name" : "config",
@@ -443,20 +503,23 @@
"description" : "Configuration file to use for settings.",
"label" : "Configuration File",
"type" : "widetext",
-"display" : 1,
-"checkchanges" : 1,
-"optional" : 1,
-"advanced" : 1
+"usage" : "capture",
+"checkchanges" : true,
+"optional" : true,
+"action" : "reload",
+"advanced" : true
},
{
-"name" : "extraArgs",
+"name" : "extraargs",
"default" : "",
"description" : "Extra arguments to pass to the capture program that Allsky doesn't support.",
"label" : "Extra Arguments",
"type" : "widetext",
+"usage" : "capture",
"display" : "_display",
-"optional" : 1,
-"advanced" : 1
+"optional" : true,
+"action" : "reload",
+"advanced" : true
},
{
"name" : "saturation",
@@ -466,8 +529,10 @@
"description" : "Changes the saturation level of the image. The lowest level produces a black and white image.",
"label" : "Saturation",
"type" : "float",
+"usage" : "capture",
"display" : "_display",
-"advanced" : 1
+"action" : "reload",
+"advanced" : true
},
{
"name" : "contrast",
@@ -477,8 +542,10 @@
"description" : "Changes the contrast of an image.",
"label" : "Contrast",
"type" : "float",
+"usage" : "capture",
"display" : "_display",
-"advanced" : 1
+"action" : "reload",
+"advanced" : true
},
{
"name" : "sharpness",
@@ -488,8 +555,10 @@
"description" : "Changes the sharpness of an image. Too sharp and images look unnatural.",
"label" : "Sharpness",
"type" : "float",
+"usage" : "capture",
"display" : "_display",
-"advanced" : 1
+"action" : "reload",
+"advanced" : true
},
{
"name" : "gamma",
@@ -499,8 +568,10 @@
"description" : "Changes the difference between light and dark areas. higher numbers increase contrast.",
"label" : "Gamma",
"type" : "integer",
+"usage" : "capture",
"display" : "_display",
-"advanced" : 1
+"action" : "reload",
+"advanced" : true
},
{
"name" : "offset",
@@ -510,8 +581,10 @@
"description" : "Adds about 1/10 the specified number to every pixel to brighten everything.",
"label" : "Offset",
"type" : "integer",
+"usage" : "capture",
"display" : "_display",
-"advanced" : 1
+"action" : "reload",
+"advanced" : true
},
{
"name" : "aggression",
@@ -521,19 +594,25 @@
"description" : "How much of a calculated exposure change should be made during Auto-Exposure? Lower numbers smooth out changes but take longer to react to brightness changes.",
"label" : "Aggression",
"type" : "percent",
+"usage" : "capture",
"display" : "_display",
-"advanced" : 1
+"booldependson" : "dayautoexposure OR nightautoexposure",
+"action" : "reload",
+"advanced" : true
},
{
"name" : "gaintransitiontime",
"minimum" : 0,
"maximum" : "none",
"default" : "_default",
-"description" : "Number of minutes over which to increase or decrease the gain when switching between day and night. This helps smooth brightness differences. Only works if nighttime Auto-Gain is off. 0 disables transitions.",
+"description" : "Number of minutes over which to increase or decrease the gain when switching between day and night. This helps smooth brightness differences. 0 disables transitions.",
"label" : "Gain Transition Time",
"type" : "integer",
+"usage" : "capture",
"display" : "_display",
-"advanced" : 1
+"booldependsoff" : "nightautogain",
+"action" : "reload",
+"advanced" : true
},
{
"name" : "width",
@@ -543,8 +622,8 @@
"description" : "Image width in pixels. 0 = max sensor width.",
"label" : "Image Width",
"type" : "integer",
-"display" : 1,
-"advanced" : 0
+"usage" : "capture",
+"action" : "reload"
},
{
"name" : "height",
@@ -554,8 +633,8 @@
"description" : "Image height in pixels. 0 = max sensor height.",
"label" : "Image Height",
"type" : "integer",
-"display" : 1,
-"advanced" : 0
+"usage" : "capture",
+"action" : "reload"
},
{
"name" : "type",
@@ -563,11 +642,12 @@
"description" : "'auto' uses color if possible, otherwise the best mono mode supported. RAW16 only works with PNG extension.",
"label" : "Image Type",
"type" : "select",
-"display" : 1,
+"usage" : "capture",
"options" : [
"type_values"
],
-"advanced" : 1
+"action" : "reload",
+"advanced" : true
},
{
"name" : "quality",
@@ -577,17 +657,19 @@
"description" : "JPG quality: 0-100. Higher numbers produce larger, clearer files. PNG compression: 0-9. Higher numbers produce smaller files but take longer to save.",
"label" : "Quality / Compression",
"type" : "integer",
-"display" : 1,
-"advanced" : 0
+"usage" : "capture",
+"action" : "reload"
},
{
"name" : "autousb",
-"default" : 1,
+"default" : true,
"description" : "Automatically set the USB bandwidth.",
"label" : "Auto USB Bandwidth",
"type" : "boolean",
+"usage" : "capture",
"display" : "_display",
-"advanced" : 1
+"action" : "reload",
+"advanced" : true
},
{
"name" : "usb",
@@ -597,8 +679,11 @@
"description" : "USB bandwidth. If you get ASI_ERROR_TIMEOUT errors in the log file, try changing this number.",
"label" : "USB Bandwidth",
"type" : "integer",
+"usage" : "capture",
"display" : "_display",
-"advanced" : 1
+"booldependsoff" : "autousb",
+"action" : "reload",
+"advanced" : true
},
{
"name" : "filename",
@@ -606,9 +691,11 @@
"description" : "Extensions allowed: .jpg or .png. WARNING: saving a .png file can take 10 or more seconds so be sure the time between successive images is long enough. To measure how long it takes your Pi to save a .png file, set the Debug Level to 4 and look in the log file.",
"label" : "Filename",
"type" : "text",
-"display" : 1,
-"checkchanges" : 1,
-"advanced" : 1
+<"usage" : "capture",
+"checkchanges" : true,
+"action" : "reload",
+"advanced" : true
+
},
{
"name" : "rotation",
@@ -616,11 +703,12 @@
"description" : "Set image rotation to enable proper orientation.",
"label" : "Rotation",
"type" : "select",
+"usage" : "capture",
"options" : [
"rotation_values"
],
"display" : "_display",
-"advanced" : 0
+"action" : "reload"
},
{
"name" : "flip",
@@ -628,32 +716,33 @@
"description" : "Flips the image along an axis.",
"label" : "Flip",
"type" : "select",
+"usage" : "capture",
"options" : [
{"value" : 0, "label" : "None"},
{"value" : 1, "label" : "Horizontal"},
{"value" : 2, "label" : "Vertical"},
{"value" : 3, "label" : "Both"}
],
-"display" : 1,
-"advanced" : 0
+"action" : "reload"
},
{
"name" : "notificationimages",
-"default" : 1,
-"description" : "Activate to display notification images, e.g., 'Camera is off during the day'. While these messages appear in the WebUI and Allsky Website, they are not saved so don't appear in timelapse, startrails, or keograms.",
+"default" : true,
+"description" : "Enable to display notification images, e.g., 'Camera is off during the day'. While these messages appear in the WebUI and Allsky Website, they are not saved so don't appear in timelapse, startrails, or keograms.",
"label" : "Notification Images",
"type" : "boolean",
-"display" : 1,
-"advanced" : 0
+"usage" : "capture",
+"action" : "reload"
},
{
-"name" : "consistentDelays",
-"default" : 1,
-"description" : "Activate to have the delays between images be a consistent length. The time between the start of exposures will always be (max exposure + delay).",
+"name" : "consistentdelays",
+"default" : true,
+"description" : "Enable to have the delays between images be a consistent length. The time between the start of exposures will always be (max exposure + delay).",
"label" : "Consistent Delays Between Images",
"type" : "boolean",
-"display" : 1,
-"advanced" : 1
+"usage" : "capture",
+"action" : "reload",
+"advanced" : true
},
{
"name" : "timeformat",
@@ -661,28 +750,43 @@
"description" : "Determines the format of the displayed time. Run 'man 3 strftime' to see the options.",
"label" : "Time Format",
"type" : "text",
-"display" : 1,
-"advanced" : 0
+"usage" : "capture",
+"action" : "reload"
+},
+{
+"name" : "temptype",
+"default" : "C",
+"description" : "Unit(s) to display temperature in.",
+"label" : "Temperature Units",
+"type" : "select",
+"usage" : "capture",
+"options" : [
+ {"value" : "C", "label" : "Celcius"},
+ {"value" : "F", "label" : "Fahrenheit"},
+ {"value" : "B", "label" : "Both"}
+],
+"action" : "reload",
+"advanced" : true
},
{
"name" : "latitude",
"default" : "",
-"description" : "Camera latitude - a number with a sign (-90 to +90) or a positive number with direction (N or S), for example: 60.7N.",
+"description" : "Camera latitude: a signed number from -90 to +90, or an unsigned number with direction (N or S), for example: 60.7N.",
"label" : "Latitude",
"type" : "text",
-"display" : 1,
-"checkchanges" : 1,
-"advanced" : 0
+"usage" : "capture",
+"checkchanges" : true,
+"action" : "reload"
},
{
"name" : "longitude",
"default" : "",
-"description" : "Camera longitude - a number with a sign (-180 to +180) or a positive number with a direction (E or W), for example: 135.05W.",
+"description" : "Camera longitude: a signed number from -180 to +180, or an unsigned number with a direction (E or W), for example: 135.05W.",
"label" : "Longitude",
"type" : "text",
-"display" : 1,
-"checkchanges" : 1,
-"advanced" : 0
+"usage" : "capture",
+"checkchanges" : true,
+"action" : "reload"
},
{
"name" : "angle",
@@ -690,27 +794,25 @@
"description" : "Altitude of the Sun in degrees relative to the horizon at which to switch between day and night.",
"label" : "Angle",
"type" : "float",
-"display" : 1,
-"checkchanges" : 1,
-"advanced" : 0
+"usage" : "capture",
+"checkchanges" : true,
+"action" : "reload"
},
{
-"name" : "takeDarkFrames",
-"default" : 0,
-"description" : "Activate to capture dark frames, which are used to decrease noise. Continues taking dark frames until Allsky is restarted.",
+"name" : "takedarkframes",
+"default" : false,
+"description" : "Enable to capture dark frames, which are used to decrease noise. Continues taking dark frames until Allsky is restarted.",
"label" : "Take Dark Frames",
"type" : "boolean",
-"display" : 1,
-"advanced" : 0
+"usage" : "capture",
+"action" : "stop"
},
{
-"name" : "useDarkFrames",
-"default" : 0,
+"name" : "usedarkframes",
+"default" : false,
"description" : "Enables dark frame subtraction if you have dark frames.",
"label" : "Use Dark Frames",
-"type" : "boolean",
-"display" : 1,
-"advanced" : 0
+"type" : "boolean"
},
{
"name" : "locale",
@@ -718,17 +820,19 @@
"description" : "Your locale, used to determine what the thousands and decimal separators are. Type locale at a command prompt to see your choices.",
"label" : "Locale",
"type" : "text",
-"display" : 1,
-"advanced" : 0
+"usage" : "capture",
+"action" : "reload"
},
{
-"name" : "experimentalExposure",
-"default" : 0,
-"description" : "Activate to use a newer auto-exposure algorithm at night. Initial testing indictes the images taken during the day-to-night transition as well as at night have better exposures. If you use this, please add a Discussion item describing your results - good or bad. We need the feedback.",
+"name" : "experimentalexposure",
+"default" : false,
+"description" : "Enable to use an improved auto-exposure algorithm at night. Initial testing indictes the images taken during the day-to-night transition as well as at night have better exposures. If you use this, please add a Discussion item describing your results - good or bad. We need the feedback.",
"label" : "New Exposure Algorithm",
"type" : "boolean",
+"usage" : "capture",
"display" : "_display",
-"advanced" : 1
+"action" : "reload",
+"advanced" : true
},
{
"name" : "histogrambox",
@@ -736,8 +840,31 @@
"description" : "Size of the histogram box (X and Y in pixels) and offset from left and top (0-100 percent). Sizes must be even numbers.",
"label" : "Histogram Box",
"type" : "text",
+"usage" : "capture",
"display" : "_display",
-"advanced" : 1
+"booldependson" : "dayautoexposure OR nightautoexposure",
+"action" : "reload",
+"advanced" : true
+},
+{
+"name" : "thumbnailsizex",
+"minimum" : 25,
+"maximum" : "500",
+"default" : 100,
+"description" : "Width of image and video thumbnails.",
+"label" : "Thumbnail Width",
+"type" : "integer",
+"booldependson" : "savedaytimeimages OR savenighttimeimages"
+},
+{
+"name" : "thumbnailsizey",
+"minimum" : 20,
+"maximum" : "400",
+"default" : 75,
+"description" : "Height of image and video thumbnails.",
+"label" : "Thumbnail Height",
+"type" : "integer",
+"booldependson" : "savedaytimeimages OR savenighttimeimages"
},
{
"name" : "debuglevel",
@@ -745,6 +872,7 @@
"description" : "Debug level. 0 is errors only. 4 is for Allsky developers use.",
"label" : "Debug Level",
"type" : "select",
+"usage" : "capture",
"options" : [
{"value" : 0, "label" : 0},
{"value" : 1, "label" : 1},
@@ -752,161 +880,715 @@
{"value" : 3, "label" : 3},
{"value" : 4, "label" : 4}
],
-"display" : 1,
-"advanced" : 0
+"action" : "reload"
+},
+{
+"name" : "uhubctlpath",
+"default" : "",
+"description" : "See documentation for a description of this setting",
+"label" : "Path to uhubctl",
+"type" : "text",
+"display" : "_display"
+},
+{
+"name" : "uhubctlport",
+"minimum" : 0,
+"maximum" : 10,
+"default" : 2,
+"description" : "See documentation for a description of this setting",
+"label" : "USB Port of Camera",
+"type" : "integer",
+"display" : "_display",
+"valuedependson" : "uhubctlpath!=''"
},
{
"name" : "newexposure",
-"default" : 1,
-"description" : "Activate to use the Allsky version 0.8 exposure method which decreases sensor temperature. If you see ASI_ERROR_TIMEOUTs in the log file, deactivate this.",
+"default" : true,
+"description" : "Enable to use the Allsky version 0.8 exposure method which decreases sensor temperature. If you see ASI_ERROR_TIMEOUTs in the log file, deactivate this.",
"label" : "Version 0.8 Exposure",
"type" : "boolean",
+"usage" : "capture",
"display" : "_display",
-"advanced" : 1
+"action" : "reload",
+"advanced" : true
},
{
-"name" : "useLogin",
-"default" : 1,
+"name" : "uselogin",
+"default" : true,
"description" : "Determines if you need to login to the WebUI or not. If your Pi is accessible on the Internet, do NOT turn this off!!.",
"label" : "Require WebUI Login",
"type" : "boolean",
-"display" : 1,
-"advanced" : 1
+"advanced" : true
},
{
"name" : "alwaysshowadvanced",
-"default" : 0,
-"description" : "Activate to always show the advanced options.",
+"default" : false,
+"description" : "Enable to always show the advanced options.",
"label" : "Always Show Advanced",
"type" : "boolean",
-"display" : 1,
-"advanced" : 1
+"advanced" : true
},
+
{
-"name" : "overlayHeader",
-"description" : "Image overlay settings",
-"type" : "header",
-"display" : 1,
-"advanced" : 0
+"name" : "postprocessingtab========================================",
+"label" : "Post-processing",
+"type" : "header-tab"
+},
+{
+"name" : "postprocessingheader",
+"label" : "Post-processing",
+"type" : "header"
},
{
-"name" : "overlayMethod",
+"name" : "imageuploadfrequency",
+"minimum" : 0,
+"maximum" : "none",
+"default" : 1,
+"description" : "How often should images be uploaded to an Allsky Website or remote server? 0 never uploads images, 1 uploads every frame, 2 every other frame, etc.",
+"label" : "Upload Every X Images",
+"type" : "integer",
+"booldependson" : "uselocalwebsite OR useremotewebsite OR useremoteserver"
+},
+{
+"name" : "imagecreatethumbnails",
+"default" : true,
+"description" : "Enable to create thumbnails of images. If you never look at them, unset this.",
+"label" : "Create Image Thumbnails",
+"type" : "boolean",
+"booldependson" : "savedaytimeimages OR savenighttimeimages"
+},
+{
+"name" : "imageresizewidth",
+"minimum" : 2,
+"maximum" : "none",
"default" : 0,
-"description" : "Determines how image overlays are done. module supports a visual editor. When set to module, the overlay settings below do NOT apply.",
-"label" : "Overlay Method",
+"description" : "Width of resized image before cropping. 0 means don't resize.",
+"label" : "Image Resize Width",
+"type" : "integer",
+"checkchanges" : true,
+"booldependson" : "takedaytimeimages OR takenighttimeimages",
+"action" : "reload"
+},
+{
+"name" : "imageresizeheight",
+"minimum" : 2,
+"maximum" : "none",
+"default" : 0,
+"description" : "Height of resized image before cropping. 0 means don't resize.",
+"label" : "Image Resize Height",
+"type" : "integer",
+"checkchanges" : true,
+"booldependson" : "takedaytimeimages OR takenighttimeimages",
+"action" : "reload"
+},
+{
+"name": "imagestretchamountdaytime",
+"minimum": 0,
+"maximum": 100,
+"default": 0,
+"description": "Amount to stretch daytime images.",
+"label": "Stretch Amount",
+"type": "integer",
+"booldependson": "takedaytimeimages"
+},
+{
+"name": "imagestretchmidpointdaytime",
+"minimum": 0,
+"maximum": 100,
+"default": 0,
+"description": "Mid point of image stretch. Lower numbers brighten darker parts of image; higher numbers brighten lighter parts.",
+"label": "Stretch mid point",
+"type": "percent",
+"booldependson": "takedaytimeimages"
+},
+{
+"name": "imagestretchamountnighttime",
+"minimum": 0,
+"maximum": 100,
+"default": 0,
+"description": "Amount to stretch nighttime images.",
+"label": "Stretch Amount",
+"type": "integer",
+"booldependson": "takenighttimeimages"
+},
+{
+"name": "imagestretchmidpointnighttime",
+"minimum": 0,
+"maximum": 100,
+"default": 0,
+"description": "Mid point of image stretch. Lower numbers brighten darker parts of image; higher numbers brighten lighter parts.",
+"label": "Stretch mid point",
+"type": "percent",
+"booldependson": "takenighttimeimages"
+},
+{
+"name" : "imagecroptop",
+"minimum" : 0,
+"maximum" : "_max",
+"default" : 0,
+"description" : "Number of pixels to crop off the top of image.",
+"label" : "Image Crop Top",
+"type" : "integer",
+"checkchanges": true,
+"booldependson": "takedaytimeimages OR takenighttimeimages"
+},
+{
+"name" : "imagecropright",
+"minimum" : 0,
+"maximum" : "_max",
+"default" : 0,
+"description" : "Number of pixels to crop off the right side of image.",
+"label" : "Image Crop Right",
+"type" : "integer",
+"checkchanges": true,
+"booldependson": "takedaytimeimages OR takenighttimeimages"
+},
+{
+"name" : "imagecropbottom",
+"minimum" : 0,
+"maximum" : "_max",
+"default" : 0,
+"description" : "Number of pixels to crop off the bottom of image.",
+"label" : "Image Crop Bottom",
+"type" : "integer",
+"checkchanges": true,
+"booldependson": "takedaytimeimages OR takenighttimeimages"
+},
+{
+"name" : "imagecropleft",
+"minimum" : 0,
+"maximum" : "_max",
+"default" : 0,
+"description" : "Number of pixels to crop off the left side of image.",
+"label" : "Image Crop Left",
+"type" : "integer",
+"checkchanges": true,
+"booldependson": "takedaytimeimages OR takenighttimeimages"
+},
+{
+"name" : "imageresizeuploadswidth",
+"minimum" : 0,
+"maximum" : "_max",
+"default" : 0,
+"description" : "Resized width of uploaded images.",
+"label" : "Resize Uploaded Images Width",
+"type" : "integer",
+"booldependson" : "imageupload"
+},
+{
+"name" : "imageresizeuploadsheight",
+"minimum" : 0,
+"maximum" : "_max",
+"default" : 0,
+"description" : "Resized height of uploaded images.",
+"label" : "Resize Uploaded Images Height",
+"type" : "integer",
+"booldependson" : "imageupload"
+},
+{
+"name": "imageremovebadlow",
+"minimum": 0,
+"maximum": 0.5,
+"default": 0.1,
+"description": "Delete images whose mean is below this value. 0 disables this check.",
+"label": "Remove Bad Images Threshold Low",
+"type": "float",
+"booldependson" : "savedaytimeimages OR savenighttimeimages"
+},
+{
+"name": "imageremovebadhigh",
+"minimum": 0,
+"maximum": 0.5,
+"default": 0.9,
+"description": "Delete images whose mean is above this value. 0 disables this check.",
+"label": "Remove Bad Images Threshold High",
+"type": "float",
+"booldependson" : "savedaytimeimages OR savenighttimeimages"
+},
+
+
+{
+"name" : "timelapsetab========================================",
+"label" : "Timelapses",
+"type" : "header-tab"
+},
+{
+"name" : "timelapseheader",
+"label" : "Timelapse settings",
+"type" : "header"
+},
+{
+"name" : "timelapsesubheader",
+"label" : "Daily Timelapse Settings",
+"type" : "header-sub"
+},
+{
+"name" : "timelapsegenerate",
+"default" : true,
+"description" : "Enable to generate a timelapse video at the end of night.",
+"label" : "Generate Timelapse",
+"type" : "boolean",
+"booldependson" : "savedaytimeimages OR savenighttimeimages"
+},
+{
+"name": "timelapseupload",
+"default": true,
+"description": "Enable to upload the timelapse video to an Allsky Website or remote server.",
+"label": "Upload Timelapse",
+"type": "boolean",
+"booldependson" : "timelapsegenerate"
+},
+{
+"name": "timelapseuploadthumbnail",
+"default": true,
+"description": "Enable to upload the timelapse video thumbnail.",
+"label": "Upload Timelapse Thumbnail",
+"type": "boolean",
+"booldependson" : "timelapsegenerate AND timelapseupload AND (uselocalwebsite OR useremotewebsite OR useremoteserver)"
+},
+{
+"name": "timelapsewidth",
+"minimum": 0,
+"maximum": "_max",
+"default": 0,
+"description": "Width of resized timelapse video. 0 disables resize.",
+"label": "Timelapse Width",
+"type": "integer",
+"booldependson" : "timelapsegenerate"
+},
+{
+"name": "timelapseheight",
+"minimum": 0,
+"maximum": "_max",
+"default": 0,
+"description": "Height of resized timelapse video. 0 disables resize.",
+"label": "Timelapse Height",
+"type": "integer",
+"booldependson" : "timelapsegenerate"
+},
+{
+"name": "timelapsebitrate",
+"minimum": 100,
+"maximum": 10000,
+"default": 2000,
+"description": "Bitrate (in K) of timelapse video. Higher values produce higher quality but larger files.",
+"label": "Timelapse Bitrate",
+"type" : "integer",
+"booldependson" : "timelapsegenerate"
+},
+{
+"name": "timelapsefps",
+"minimum": 1,
+"maximum": 200,
+"default": 25,
+"description": "Frames Per Second (FPS) of timelapse video.",
+"label": "Timelapse FPS",
+"type": "integer",
+"booldependson" : "timelapsegenerate"
+},
+{
+"name" : "timelapsevcodec",
+"default" : "libx264",
+"description" : "Video encoder for timelapse. Rarely changed.",
+"label" : "Timelapse VCODEC",
+"type" : "text",
+"comment": "check using ffmpeg -encoder looking at argument 2 for ' libxs264 '",
+"booldependson" : "timelapsegenerate",
+"checkchanges": true
+},
+{
+"name" : "timelapsepixfmt",
+"default" : "yuv420p",
+"description" : "Pixel format for timelapse. Rarely changed.",
+"label" : "Timelapse Pixel format",
+"type" : "text",
+"booldependson" : "timelapsegenerate",
+"comment": "check using ffmpeg -pix_fmts looking at argument 2 for ' yuv420p '",
+"checkchanges" : true
+},
+{
+"name" : "timelapsefflog",
+"default" : "Warning",
+"description" : "Amount of information to display while creating a timelapse. Rarely changed.",
+"label" : "Timelapse Log Level",
"type" : "select",
-"options" : [
- {"value" : 0, "label" : "legacy"},
- {"value" : 1, "label" : "module"}
+"options": [
+ { "value": "quiet", "label": "No output" },
+ { "value": "fatal", "label": "Fatal Errors" },
+ { "value": "error", "label": "Errors" },
+ { "value": "warning", "label": "Warnings + Errors" },
+ { "value": "info", "label": "Info + Warnings + Errors" }
],
-"display" : 1,
-"checkchanges" : 1,
-"advanced" : 0
+"booldependson" : "timelapsegenerate"
},
{
-"name" : "showTime",
-"default" : 1,
-"description" : "Activate to display the time an image was taken on the overlay.",
-"label" : "Show Time",
+"name": "timelapsekeepsequence",
+"default": false,
+"description": "Enable to keep the list of files used in creating the timelapse video. Rarely changed.",
+"label": "Keep Timelapse Sequence",
+"type": "boolean",
+"booldependson" : "timelapsegenerate"
+},
+{
+"name" : "timelapseextraparameters",
+"default" : "",
+"description" : "Optional additional timelapse creation parameters. Run ffmpeg -? to see the options.",
+"label" : "Timelapse Extra Parameters",
+"type" : "widetext",
+"optional" : true,
+"booldependson" : "timelapsegenerate"
+},
+
+{
+"name" : "minitimelapseheader",
+"label" : "Mini Timelapse Settings",
+"type" : "header-sub"
+},
+{
+"name" : "minitimelapsenumimages",
+"minimum" : 0,
+"maximum" : "none",
+"default" : 0,
+"description" : "Number of images in a mini-timelapse. 0 disables mini-timelapse creation.",
+"label" : "Number Of Images",
+"type" : "integer",
+"booldependson" : "savedaytimeimages OR savenighttimeimages"
+},
+{
+"name" : "minitimelapseforcecreation",
+"default" : false,
+"description" : "Create a mini-timelapse even if 'Number Of Images' isn't reached?",
+"label" : "Force Creation",
"type" : "boolean",
-"display" : 1,
-"advanced" : 0
+"valuedependson" : "minitimelapsenumimages=[1-9]*"
},
{
-"name" : "showTemp",
-"default" : 1,
-"description" : "Activate to display the camera sensor temperature on the overlay.",
-"label" : "Show Temperature",
+"name": "minitimelapsefrequency",
+"minimum": 1,
+"maximum": "none",
+"default": 5,
+"description": "Make a mini-timelapse every X images. If you have a slow Pi or short delays between images, set this to a higher number (i.e., not as often).",
+"label": "Mini-Timelapse Frequency",
+"type": "integer",
+"valuedependson" : "minitimelapsenumimages=[1-9]*"
+},
+{
+"name": "minitimelapseupload",
+"default": true,
+"description": "Enable to upload the mini-timelapse video to an Allsky Website or remote server.",
+"label": "Upload Mini-Timelapse",
+"type": "boolean",
+"valuedependson" : "minitimelapsenumimages=[1-9]*"
+},
+{
+"name": "minitimelapseuploadthumbnail",
+"default": true,
+"description": "Enable to upload the mini-timelapse video thumbnail.",
+"label": "Upload Mini-Timelapse Thumbnail",
+"type": "boolean",
+"booldependson" : "minitimelapseupload AND (uselocalwebsite OR useremotewebsite OR useremoteserver)",
+"valuedependson" : "minitimelapsenumimages=[1-9]*"
+},
+{
+"name": "minitimelapsewidth",
+"minimum": 0,
+"maximum": "_max",
+"default": 0,
+"description": "Width of resized mini-timelapse video. 0 disables resize.",
+"label": "Mini-Timelapse Width",
+"type": "integer",
+"valuedependson" : "minitimelapsenumimages=[1-9]*"
+},
+{
+"name": "minitimelapseheight",
+"minimum": 0,
+"maximum": "_max",
+"default": 0,
+"description": "Height of resized mini-timelapse video. 0 disables resize.",
+"label": "Mini-Timelapse Height",
+"type": "integer",
+"valuedependson" : "minitimelapsenumimages=[1-9]*"
+},
+{
+"name": "minitimelapsebitrate",
+"minimum": 100,
+"maximum": 10000,
+"default": 1000,
+"description": "Bitrate (in K) of mini-timelapse video. Higher values produce higher quality but larger files.",
+"label": "Mini-Timelapse Bitrate",
+"type": "integer",
+"valuedependson" : "minitimelapsenumimages=[1-9]*"
+},
+{
+"name": "minitimelapsefps",
+"minimum": 1,
+"maximum": 200,
+"default": 5,
+"description": "Frames Per Second (FPS) of mini-timelapse video.",
+"label": "Mini-Timelapse FPS",
+"type": "integer",
+"valuedependson" : "minitimelapsenumimages=[1-9]*"
+},
+
+{
+"name" : "keogramstartrailstab========================================",
+"label" : "Keogram and Startrails",
+"type" : "header-tab"
+},
+{
+"name" : "timelapseheader",
+"label" : "Keogram and Startrails Settings",
+"type" : "header"
+},
+{
+"name" : "keogramsubheader",
+"label" : "Keogram Settings",
+"type" : "header-sub"
+},
+{
+"name" : "keogramgenerate",
+"default" : true,
+"description" : "Enable to generate a keogram at the end of night.",
+"label" : "Generate Keogram",
"type" : "boolean",
-"display" : "_display",
-"advanced" : 0
+"booldependson" : "savedaytimeimages OR savenighttimeimages"
},
{
-"name" : "temptype",
-"default" : "C",
-"description" : "Unit(s) to display temperature in.",
-"label" : "Temperature Units",
+"name": "keogramupload",
+"default": true,
+"description": "Enable to upload the keogram to an Allsky Website or remote server.",
+"label": "Upload Keogram",
+"type": "boolean",
+"booldependson" : "keogramgenerate AND (uselocalwebsite OR useremotewebsite OR useremoteserver)"
+},
+
+{
+"name" : "keogramexpand",
+"default" : true,
+"description" : "Enable to expand keograms to the image width.",
+"label" : "Expand Keograms",
+"type" : "boolean",
+"booldependsoff" : "keogramgenerate"
+},
+{
+"name" : "keogramfontname",
+"default" : "Simplex",
+"description" : "Font name.",
+"label" : "Font Name",
"type" : "select",
"options" : [
- {"value" : "C", "label" : "Celcius"},
- {"value" : "F", "label" : "Fahrenheit"},
- {"value" : "B", "label" : "Both"}
+ {"value" : "simplex", "label" : "Simplex"},
+ {"value" : "plain", "label" : "Plain"},
+ {"value" : "duplex", "label" : "Duplex"},
+ {"value" : "complex", "label" : "Complex"},
+ {"value" : "complexsmall", "label" : "Complex Small"},
+ {"value" : "triplex", "label" : "Triplex"},
+ {"value" : "scriptsimplex", "label" : "Script Simplex"},
+ {"value" : "scriptcomplex", "label" : "Script Complex"}
],
-"display" : 1,
-"advanced" : 1
+"booldependson" : "keogramgenerate"
+},
+{
+"name" : "keogramfontcolor",
+"default" : "#fff",
+"description" : "Font color.",
+"label" : "Font Color",
+"type" : "color",
+"booldependson" : "keogramgenerate"
+},
+{
+"name" : "keogramfontsize",
+"minimum" : 1.0,
+"maximum" : 10.0,
+"default" : 2.0,
+"description" : "Font size.",
+"label" : "Font Size",
+"type" : "integer",
+"booldependson" : "keogramgenerate"
+},
+{
+"name" : "keogramlinethickness",
+"minimum" : 1,
+"maximum" : 5,
+"default" : 3,
+"description" : "Font line thickness.",
+"label" : "Font Line Thickness",
+"type" : "integer",
+"booldependson" : "keogramgenerate"
+},
+{
+"name" : "keogramextraparameters",
+"default" : "",
+"description" : "Optional additional keogram creation parameters. Run ~/allsky/bin/keogram --help for a list of options.",
+"label" : "Keogram Extra Parameters",
+"type" : "widetext",
+"optional" : true,
+"booldependson" : "keogramgenerate"
+},
+
+{
+"name" : "startrailssubheader",
+"label" : "Startrails Settings",
+"type" : "header-sub"
+},
+{
+"name" : "startrailsgenerate",
+"default" : true,
+"description" : "Enable to generate a startrails at the end of night.",
+"label" : "Generate Startrails",
+"type" : "boolean",
+"booldependson" : "savedaytimeimages OR savenighttimeimages"
+},
+{
+"name" : "startrailsbrightnessthreshold",
+"minimum" : 0.0,
+"maximum" : 1.0,
+"default" : 0.1,
+"description" : "Images with a brightness higher than this threshold will not be included in the startrails.",
+"label" : "Startrails Brightness Threshold",
+"type" : "float",
+"booldependson" : "startrailsgenerate"
+},
+{
+"name": "startrailsupload",
+"default": true,
+"description": "Enable to upload the startrails to an Allsky Website or remote server.",
+"label": "Upload Startrails",
+"type": "boolean",
+"booldependson" : "startrailsgenerate AND (uselocalwebsite OR useremotewebsite OR useremoteserver)"
+},
+{
+"name" : "startrailsextraparameters",
+"default" : "",
+"description" : "Optional additional startrails creation parameters. Run ~/allsky/bin/startrails --help for a list of options.",
+"label" : "Startrails Extra Parameters",
+"type" : "widetext",
+"optional" : true,
+"booldependson" : "startrailsgenerate"
},
+
+
{
-"name" : "showExposure",
+"name" : "overlaytab========================================",
+"label" : "Overlay",
+"type" : "header-tab"
+},
+{
+"name" : "overlayheader",
+"label" : "Image overlay settings",
+"type" : "header"
+},
+{
+"name" : "overlaymethod",
"default" : 1,
-"description" : "Activate to display the exposure length on the overlay. If Auto-Exposure is set, '(auto)' will appear after the exposure time.",
-"label" : "Show Exposure",
+"description" : "Determines how image overlays are done. module supports a visual editor and will be the only method in the next version of Allsky.",
+"label" : "Overlay Method",
+"type" : "select",
+"usage" : "capture",
+"options" : [
+ {"value" : 0, "label" : "legacy"},
+ {"value" : 1, "label" : "module"}
+],
+"checkchanges" : true,
+"action" : "reload"
+},
+{
+"name" : "showtime",
+"default" : true,
+"description" : "Enable to display the time an image was taken on the overlay.",
+"label" : "Show Time",
"type" : "boolean",
-"display" : 1,
-"advanced" : 0
+"usage" : "capture",
+"booldependsoff" : "overlaymethod",
+"action" : "reload"
},
{
-"name" : "showGain",
-"default" : 0,
-"description" : "Activate to display the camera gain on the overlay. If Auto-Gain is set, '(auto)' will appear after the gain value.",
-"label" : "Show Gain",
+"name" : "showtemp",
+"default" : true,
+"description" : "Enable to display the camera sensor temperature on the overlay.",
+"label" : "Show Temperature",
"type" : "boolean",
-"display" : 1,
-"advanced" : 0
+"usage" : "capture",
+"display" : "_display",
+"booldependsoff" : "overlaymethod",
+"action" : "reload"
},
{
-"name" : "showBrightness",
-"default" : 0,
-"description" : "Activate to display the Brightness number you set on the overlay.",
-"label" : "Show Brightness",
+"name" : "showexposure",
+"default" : true,
+"description" : "Enable to display the exposure length on the overlay. If Auto-Exposure is set, '(auto)' will appear after the exposure time.",
+"label" : "Show Exposure",
"type" : "boolean",
-"display" : 1,
-"advanced" : 0
+"usage" : "capture",
+"booldependsoff" : "overlaymethod",
+"action" : "reload"
},
{
-"name" : "showUSB",
-"default" : 0,
-"description" : "Activate to display the USB Bandwidth number on the overlay. This is primarily for troubleshooting.",
+"name" : "showgain",
+"default" : false,
+"description" : "Enable to display the camera gain on the overlay. If Auto-Gain is set, '(auto)' will appear after the gain value.",
+"label" : "Show Gain",
+"type" : "boolean",
+"usage" : "capture",
+"booldependsoff" : "overlaymethod",
+"action" : "reload"
+},
+{
+"name" : "showusb",
+"default" : false,
+"description" : "Enable to display the USB Bandwidth number on the overlay. This is primarily for troubleshooting.",
"label" : "Show USB",
"type" : "boolean",
+"usage" : "capture",
"display" : "_display",
-"advanced" : 1
+"booldependsoff" : "overlaymethod",
+"action" : "reload",
+"advanced" : true
},
{
-"name" : "showMean",
-"default" : 0,
-"description" : "Activate to display the calculated mean image brightness on the overlay.",
+"name" : "showmean",
+"default" : false,
+"description" : "Enable to display the calculated mean image brightness on the overlay.",
"label" : "Show Mean Brightness",
"type" : "boolean",
-"display" : 1,
-"advanced" : 1
+"usage" : "capture",
+"booldependsoff" : "overlaymethod",
+"action" : "reload",
+"advanced" : true
},
{
"name" : "showhistogrambox",
-"default" : 0,
-"description" : "Activate to show an outline of the histogram box, useful for determining what the 'Histogram Box' numbers should be.",
+"default" : false,
+"description" : "Enable to show an outline of the histogram box, useful for determining what the 'Histogram Box' numbers should be.",
"label" : "Show Histogram Box",
"type" : "boolean",
+"usage" : "capture",
"display" : "_display",
-"advanced" : 1
+"booldependsoff" : "overlaymethod",
+"action" : "reload",
+"advanced" : true
},
{
-"name" : "showFocus",
-"default" : 0,
-"description" : "Activate to display a focus metric to help you focus the camera. This is only usefull while focusing.",
+"name" : "showfocus",
+"default" : false,
+"description" : "Enable to display a focus metric to help you focus the camera. This is only usefull while focusing.",
"label" : "Show Focus Metric",
"type" : "boolean",
-"display" : 1,
-"advanced" : 1
-},
+"usage" : "capture",
+"booldependsoff" : "overlaymethod",
+"action" : "reload",
+"advanced" : true
+,
{
"name" : "text",
"default" : "",
"description" : "Text that appears below the optional time with the same color and size.",
"label" : "Text Overlay",
"type" : "widetext",
-"display" : 1,
-"optional" : 1,
-"advanced" : 0
+"usage" : "capture",
+"optional" : true,
+"booldependsoff" : "overlaymethod",
+"action" : "reload"
},
{
"name" : "extratext",
@@ -914,10 +1596,11 @@
"description" : "Extra Text File (enter full path to the file). Leave blank if NOT using an extra text file.",
"label" : "Extra Text File",
"type" : "widetext",
-"display" : 1,
-"checkchanges" : 1,
-"optional" : 1,
-"advanced" : 0
+"usage" : "capture",
+"checkchanges" : true,
+"optional" : true,
+"booldependsoff" : "overlaymethod",
+"action" : "reload"
},
{
"name" : "extratextage",
@@ -927,8 +1610,10 @@
"description" : "The maximum age of the Extra Text File in seconds. After this time the contents of the file will no longer be displayed. Set to 0 to always display.",
"label" : "Max Age Of Extra",
"type" : "integer",
-"display" : 1,
-"advanced" : 0
+"usage" : "capture",
+"valuedependson" : "extratext=*",
+"booldependsoff" : "overlaymethod",
+"action" : "reload"
},
{
"name" : "textlineheight",
@@ -938,8 +1623,9 @@
"description" : "The line height of the text in pixels. If increasing the font size causes the text to overlap then increase this number.",
"label" : "Line Height",
"type" : "integer",
-"display" : 1,
-"advanced" : 0
+"usage" : "capture",
+"booldependsoff" : "overlaymethod",
+"action" : "reload"
},
{
"name" : "textx",
@@ -949,8 +1635,9 @@
"description" : "Text will begin this many pixels from the left.",
"label" : "Text X",
"type" : "integer",
-"display" : 1,
-"advanced" : 0
+"usage" : "capture",
+"booldependsoff" : "overlaymethod",
+"action" : "reload"
},
{
"name" : "texty",
@@ -960,8 +1647,9 @@
"description" : "Text will begin this many pixels from the top.",
"label" : "Text Y",
"type" : "integer",
-"display" : 1,
-"advanced" : 0
+"usage" : "capture",
+"booldependsoff" : "overlaymethod",
+"action" : "reload"
},
{
"name" : "fontname",
@@ -969,6 +1657,7 @@
"description" : "Font name for the text overlay. Used for both large and small text.",
"label" : "Font Name",
"type" : "select",
+"usage" : "capture",
"options" : [
{"value" : 0, "label" : "Simplex"},
{"value" : 1, "label" : "Plain"},
@@ -979,8 +1668,8 @@
{"value" : 6, "label" : "Script Simplex"},
{"value" : 7, "label" : "Script Complex"}
],
-"display" : 1,
-"advanced" : 0
+"booldependsoff" : "overlaymethod",
+"action" : "reload"
},
{
"name" : "fontcolor",
@@ -989,8 +1678,9 @@
"description" : "Blue, Green, and Red (BGR) values of text color. NOTE: When using RAW 16 only the first two numbers are used i.e., 255 128 0.",
"label" : "Font Color",
"type" : "text",
-"display" : 1,
-"advanced" : 0
+"usage" : "capture",
+"booldependsoff" : "overlaymethod",
+"action" : "reload"
},
{
"name" : "smallfontcolor",
@@ -998,8 +1688,9 @@
"description" : "BGR value of text color. NOTE: When using RAW 16 only the first two numbers are used i.e., 255 128 0.",
"label" : "Small Font Color",
"type" : "text",
-"display" : 1,
-"advanced" : 0
+"usage" : "capture",
+"booldependsoff" : "overlaymethod",
+"action" : "reload"
},
{
"name" : "fonttype",
@@ -1007,13 +1698,14 @@
"description" : "Choose between smooth font lines (antialiased), 8-pixel, or 4 pixel connectivity (harder edges).",
"label" : "Font Smoothness",
"type" : "select",
+"usage" : "capture",
"options" : [
{"value" : 0, "label" : "Antialiased"},
{"value" : 1, "label" : "8 connected"},
{"value" : 2, "label" : "4 connected"}
],
-"display" : 1,
-"advanced" : 0
+"booldependsoff" : "overlaymethod",
+"action" : "reload"
},
{
"name" : "fontsize",
@@ -1023,8 +1715,9 @@
"description" : "Text Font Size. The time, if displayed, will use this size; other text displayed will be about 20% smaller.",
"label" : "Font Size",
"type" : "float",
-"display" : 1,
-"advanced" : 0
+"usage" : "capture",
+"booldependsoff" : "overlaymethod",
+"action" : "reload"
},
{
"name" : "fontline",
@@ -1034,77 +1727,528 @@
"description" : "How thick the text line should be.",
"label" : "Font Weight",
"type" : "integer",
-"display" : 1,
-"advanced" : 0
+"usage" : "capture",
+"booldependsoff" : "overlaymethod",
+"action" : "reload"
},
{
"name" : "outlinefont",
-"default" : 0,
+"default" : false,
"description" : "Adds a black outline to the text overlay to improve contrast.",
"label" : "Use Outline Font",
"type" : "boolean",
-"display" : 1,
-"advanced" : 0
+"usage" : "capture",
+"booldependsoff" : "overlaymethod",
+"action" : "reload"
},
+
{
-"name" : "AllskyMapHeader",
-"description" : "Allsky Map and Website Settings",
-"type" : "header",
-"display" : 1,
-"advanced" : 0
+"name" : "websitetab========================================",
+"label" : "Website",
+"type" : "header-tab"
},
{
-"name" : "displaySettings",
-"default" : 0,
-"description" : "Activate to add a link to the Allsky Website to display the settings on this page. Only applies if you have a local or remote Allsky Website.",
+"name" : "websiteheader",
+"label" : "Website and Remote Server Settings",
+"type" : "header"
+},
+{
+"name" : "displaysettings",
+"default" : false,
+"description" : "Enable to add a link on the Allsky Website to display the settings on this page.",
"label" : "Display Settings",
"type" : "boolean",
-"display" : 1,
-"checkchanges" : 1,
-"advanced" : 0
+"checkchanges" : true,
+"booldependson" : "uselocalwebsite OR useremotewebsite OR useremoteserver"
},
{
-"name" : "showonmap",
+"name" : "uselocalwebsite",
+"description" : "Enable to use the local Allsky Website. No other settings are needed.",
+"default" : false,
+"label" : "Use Local Website",
+"type" : "boolean",
+"popup-yesno" : "Do you want to remove all saved images, keograms, startrails, and videos in the local Website?",
+"popup-yesno-value" : 0
+},
+{
+"name" : "daystokeeplocalwebsite",
+"minimum" : 0,
+"maximum" : "none",
"default" : 0,
-"description" : "Activate to have your camera appear on the Allsky Map .",
-"label" : "Show on Map",
+"description" : "Number of days of images and videos to keep on the Pi's Website.",
+"label" : "Days To Keep on Pi Website",
+"type" : "integer",
+"booldependson" : "uselocalwebsite"
+},
+{
+"name" : "remotewebsiteheader",
+"label" : "Remote Website Settings",
+"type" : "header-sub"
+},
+{
+"name" : "useremotewebsite",
+"default" : false,
+"description" : "Enable to use a remote Allsky Website. See the Allsky Documentation for how to install the Website.",
+"label" : "Use Remote Website",
+"type" : "boolean",
+"checkchanges" : true
+},
+{
+"name" : "daystokeepremotewebsite",
+"minimum" : 0,
+"maximum" : "none",
+"default" : 0,
+"description" : "Number of days of images and videos to keep on the remote Website.",
+"label" : "Days To Keep on Remote Website",
+"type" : "integer",
+"booldependson" : "useremotewebsite"
+},
+{
+"name" : "remotewebsiteprotocol",
+"default" : "ftps",
+"description" : "Protocol for remote Website",
+"label" : "Protocol",
+"type" : "select",
+"options" : [
+ {"value" : "ftps", "label" : "ftps"},
+ {"value" : "ftp", "label" : "ftp"},
+ {"value" : "sftp", "label" : "sftp"},
+ {"value" : "scp", "label" : "scp"},
+ {"value" : "S3", "label" : "s3"},
+ {"value" : "GCS", "label" : "gcs"}
+],
+"checkchanges" : true,
+"booldependson" : "useremotewebsite"
+},
+{
+"name" : "REMOTEWEBSITE_HOST",
+"default" : "",
+"description" : "Name of server hosting the remote Allsky Website.",
+"label" : "Server Name",
+"type" : "widetext",
+"checkchanges" : true,
+"source" : "ALLSKY_ENV",
+"booldependson" : "useremotewebsite",
+"optional" : true
+},
+{
+"name" : "REMOTEWEBSITE_PORT",
+"default" : "",
+"description" : "Optional port required by server. Rarely required.",
+"label" : "Port",
+"type" : "integer",
+"checkchanges" : true,
+"source" : "ALLSKY_ENV",
+"booldependson" : "useremotewebsite",
+"optional" : true
+},
+{
+"name" : "REMOTEWEBSITE_USER",
+"default" : "",
+"description" : "Username of the login on the remote server.",
+"label" : "User Name",
+"type" : "text",
+"checkchanges" : true,
+"source" : "ALLSKY_ENV",
+"booldependson" : "useremotewebsite",
+"optional" : true
+},
+{
+"name" : "REMOTEWEBSITE_PASSWORD",
+"default" : "",
+"description" : "Password of the login on the remote server.",
+"label" : "Password",
+"type" : "password",
+"checkchanges" : true,
+"source" : "ALLSKY_ENV",
+"booldependson" : "useremotewebsite",
+"optional" : true
+},
+{
+"name" : "REMOTEWEBSITE_LFTP_COMMANDS",
+"default" : "",
+"description" : "Special commands needed when connecting to an FTP server.",
+"label" : "FTP Commands",
+"type" : "text",
+"checkchanges" : true,
+"source" : "ALLSKY_ENV",
+"booldependson" : "useremotewebsite",
+"valuedependson" : "remotewebsiteprotocol=*ftp*",
+"optional" : true
+},
+{
+"name" : "remotewebsiteimagedir",
+"default" : "allsky",
+"description" : "Name of the top-level remote directory where images go.",
+"label" : "Image Directory",
+"type" : "text",
+"checkchanges" : true,
+"booldependson" : "useremotewebsite",
+"valuedependson" : "remotewebsiteprotocol=*ftp*",
+"optional" : true
+},
+{
+"name" : "REMOTEWEBSITE_SSH_KEY_FILE",
+"default" : "",
+"description" : "Path on the Pi to the SSH key file.",
+"label" : "SSH Key File",
+"type" : "widetext",
+"checkchanges" : true,
+"source" : "ALLSKY_ENV",
+"booldependson" : "useremotewebsite",
+"valuedependson" : "remotewebsiteprotocol=scp",
+"optional" : true
+},
+{
+"name" : "REMOTEWEBSITE_AWS_CLI_DIR",
+"default" : "${HOME}/.local/bin",
+"description" : "AWS CLI directory where the AWS CLI tools are installed.",
+"label" : "AWS CLI Directory",
+"type" : "widetext",
+"checkchanges" : true,
+"source" : "ALLSKY_ENV",
+"booldependson" : "useremotewebsite",
+"valuedependson" : "remotewebsiteprotocol=s3",
+"optional" : true
+},
+{
+"name" : "REMOTEWEBSITE_S3_BUCKET",
+"default" : "allskybucket",
+"description" : "Name of S3 bucket where files will be upload.",
+"label" : "S3 Bucket",
+"type" : "text",
+"checkchanges" : true,
+"source" : "ALLSKY_ENV",
+"booldependson" : "useremotewebsite",
+"valuedependson" : "remotewebsiteprotocol=s3",
+"optional" : true
+},
+{
+"name" : "REMOTEWEBSITE_S3_ACL",
+"default" : "private",
+"description" : "S3 Access Control List (ACL).",
+"label" : "S3 ACL",
+"type" : "text",
+"checkchanges" : true,
+"source" : "ALLSKY_ENV",
+"booldependson" : "useremotewebsite",
+"valuedependson" : "remotewebsiteprotocol=s3",
+"optional" : true
+},
+{
+"name" : "REMOTEWEBSITE_GCS_BUCKET",
+"default" : "allskybucket",
+"description" : "Name of GCS bucket where files will be upload.",
+"label" : "GCS Bucket",
+"type" : "text",
+"checkchanges" : true,
+"source" : "ALLSKY_ENV",
+"booldependson" : "useremotewebsite",
+"valuedependson" : "remotewebsiteprotocol=gcs",
+"optional" : true
+},
+{
+"name" : "REMOTEWEBSITE_GCS_ACL",
+"default" : "private",
+"description" : "GCS Access Control List (ACL).",
+"label" : "GCS ACL",
+"type" : "text",
+"checkchanges" : true,
+"source" : "ALLSKY_ENV",
+"booldependson" : "useremotewebsite",
+"valuedependson" : "remotewebsiteprotocol=gcs",
+"optional" : true
+},
+{
+"name" : "remotewebsiteimageuploadoriginalname",
+"default" : false,
+"description" : "Enable to upload images using YYYYMMDDHHMMSS naming.",
+"label" : "Upload With Original Name",
"type" : "boolean",
-"display" : 1,
-"checkchanges" : 1,
-"advanced" : 0
+"valuedependson" : "imageuploadfrequency=[1-9]*"
+},
+{
+"name" : "remotewebsitevideodestinationname",
+"default" : "",
+"description" : "Optional name of the remote video file.",
+"label" : "Remote Video File Name",
+"type" : "text",
+"booldependson" : "useremotewebsite",
+"optional" : true
},
{
-"name" : "websiteurl",
+"name" : "remotewebsitekeogramdestinationname",
"default" : "",
-"description" : "The URL of your Allsky Website, for example: https://www.thomasjacquin.com/allsky. If your camera is not accessible on the Internet, leave this field empty. Must begin with http or https.",
+"description" : "Optional name of the remote keogram file.",
+"label" : "Remote Keogram File Name",
+"type" : "text",
+"booldependson" : "useremotewebsite",
+"optional" : true
+},
+{
+"name" : "remotewebsitestartrailsdestinationname",
+"default" : "",
+"description" : "Optional name of the remote startrails file.",
+"label" : "Remote Startrails Name",
+"type" : "text",
+"booldependson" : "useremotewebsite",
+"optional" : true
+},
+{
+"name" : "remotewebsiteurl",
+"default" : "",
+"description" : "The URL of your Allsky Website, for example: https://mywebsite.com/allsky. Must begin with http or https.",
"label" : "Website URL",
"type" : "widetext",
-"display" : 1,
-"checkchanges" : 1,
-"optional" : 1,
-"advanced" : 0
+"checkchanges" : true,
+"booldependson" : "showonmap OR useremotewebsite OR remotewebsiteimageurl",
+"optional" : true
},
{
-"name" : "imageurl",
+"name" : "remotewebsiteimageurl",
"default" : "",
-"description" : "The URL of the image on your Allsky Website, for example: https://wwww.thomasjacquin.com/allsky/image.jpg. Right-click on the image and select Copy Image Address. If your camera is not accessible on the Internet, leave this field empty. Must begin with http or https.",
+"description" : "The URL of the image on your Allsky Website, for example: https://mywebsite.com/allsky/image.jpg. Must begin with http or https.",
"label" : "Image URL",
"type" : "widetext",
-"display" : 1,
-"checkchanges" : 1,
-"optional" : 1,
-"advanced" : 0
+"checkchanges" : true,
+"booldependson" : "showonmap OR useremotewebsite OR remotewebsiteurl",
+"optional" : true
+},
+
+
+{
+"name" : "remoteserverheader",
+"label" : "Remote Server Settings",
+"type" : "header-sub"
+},
+{
+"name" : "useremoteserver",
+"default" : false,
+"description" : "This is a remote server NOT running the Allsky Website. See the documentation for the necessary directory layout.",
+"label" : "Use Remote Server",
+"type" : "boolean",
+"checkchanges" : true
+},
+{
+"name" : "remoteserverprotocol",
+"default" : "ftps",
+"description" : "Protocol for remote server",
+"label" : "Protocol",
+"type" : "select",
+"options" : [
+ {"value" : "ftps", "label" : "ftps"},
+ {"value" : "ftp", "label" : "ftp"},
+ {"value" : "sftp", "label" : "sftp"},
+ {"value" : "scp", "label" : "scp"},
+ {"value" : "S3", "label" : "s3"},
+ {"value" : "GCS", "label" : "gcs"}
+],
+"checkchanges" : true,
+"booldependson" : "useremoteserver"
+},
+{
+"name" : "REMOTESERVER_HOST",
+"default" : "",
+"description" : "Name of remote server NOT hosting an Allsky Website.",
+"label" : "Server Name",
+"type" : "widetext",
+"checkchanges" : true,
+"source" : "ALLSKY_ENV",
+"booldependson" : "useremoteserver",
+"optional" : true
+},
+{
+"name" : "REMOTESERVER_PORT",
+"default" : "",
+"description" : "Optional port required by server. Rarely required.",
+"label" : "Port",
+"type" : "integer",
+"checkchanges" : true,
+"source" : "ALLSKY_ENV",
+"booldependson" : "useremoteserver",
+"optional" : true
+},
+{
+"name" : "REMOTESERVER_USER",
+"default" : "",
+"description" : "Username of the login on the remote server.",
+"label" : "User Name",
+"type" : "text",
+"checkchanges" : true,
+"source" : "ALLSKY_ENV",
+"booldependson" : "useremoteserver",
+"optional" : true
+},
+{
+"name" : "REMOTESERVER_PASSWORD",
+"default" : "",
+"description" : "Password of the remote server login.",
+"label" : "Password",
+"type" : "password",
+"checkchanges" : true,
+"source" : "ALLSKY_ENV",
+"booldependson" : "useremoteserver",
+"optional" : true
+},
+{
+"name" : "REMOTESERVER_LFTP_COMMANDS",
+"default" : "",
+"description" : "Special commands needed when connecting to an FTP server.",
+"label" : "FTP Commands",
+"type" : "text",
+"checkchanges" : true,
+"source" : "ALLSKY_ENV",
+"booldependson" : "useremoteserver",
+"valuedependson" : "remoteserverprotocol=*ftp*",
+"optional" : true
+},
+{
+"name" : "REMOTESERVER_SSH_KEY_FILE",
+"default" : "",
+"description" : "Path on the Pi to the SSH key file.",
+"label" : "SSH Key File",
+"type" : "widetext",
+"checkchanges" : true,
+"source" : "ALLSKY_ENV",
+"booldependson" : "useremoteserver",
+"valuedependson" : "remoteserverprotocol=scp",
+"optional" : true
+},
+{
+"name" : "REMOTESERVER_AWS_CLI_DIR",
+"default" : "${HOME}/.local/bin",
+"description" : "AWS CLI directory where the AWS CLI tools are installed.",
+"label" : "AWS CLI Directory",
+"type" : "widetext",
+"checkchanges" : true,
+"source" : "ALLSKY_ENV",
+"booldependson" : "useremoteserver",
+"valuedependson" : "remoteserverprotocol=s3",
+"optional" : true
+},
+{
+"name" : "REMOTESERVER_S3_BUCKET",
+"default" : "allskybucket",
+"description" : "Name of S3 bucket where files will be upload.",
+"label" : "S3 Bucket",
+"type" : "text",
+"checkchanges" : true,
+"source" : "ALLSKY_ENV",
+"booldependson" : "useremoteserver",
+"valuedependson" : "remoteserverprotocol=s3",
+"optional" : true
+},
+{
+"name" : "REMOTESERVER_S3_ACL",
+"default" : "private",
+"description" : "S3 Access Control List (ACL).",
+"label" : "S3 ACL",
+"type" : "text",
+"checkchanges" : true,
+"source" : "ALLSKY_ENV",
+"booldependson" : "useremoteserver",
+"valuedependson" : "remoteserverprotocol=s3",
+"optional" : true
+},
+{
+"name" : "REMOTESERVER_GCS_BUCKET",
+"default" : "allskybucket",
+"description" : "Name of GCS bucket where files will be upload.",
+"label" : "GCS Bucket",
+"type" : "text",
+"checkchanges" : true,
+"source" : "ALLSKY_ENV",
+"booldependson" : "useremoteserver",
+"valuedependson" : "remoteserverprotocol=gcs",
+"optional" : true
+},
+{
+"name" : "REMOTESERVER_GCS_ACL",
+"default" : "private",
+"description" : "S3 Access Control List (ACL).",
+"label" : "S3 ACL",
+"type" : "text",
+"checkchanges" : true,
+"source" : "ALLSKY_ENV",
+"booldependson" : "useremoteserver",
+"valuedependson" : "remoteserverprotocol=gcs",
+"optional" : true
+},
+{
+"name" : "remoteserverimagedir",
+"default" : "",
+"description" : "Name of the top-level remote directory where images go.",
+"label" : "Image Directory",
+"type" : "text",
+"checkchanges" : true,
+"booldependson" : "useremoteserver",
+"optional" : true
+},
+{
+"name" : "remoteserverimageuploadoriginalname",
+"default" : false,
+"description" : "Enable to upload images using YYYYMMDDHHMMSS naming.",
+"label" : "Upload With Original Name",
+"type" : "boolean",
+"valuedependson" : "imageuploadfrequency=[1-9]*"
+},
+{
+"name" : "remoteservervideodestinationname",
+"default" : "",
+"description" : "Optional name of the remote video file.",
+"label" : "Remote Video File Name",
+"type" : "text",
+"booldependson" : "useremoteserver",
+"optional" : true
+},
+{
+"name" : "remoteserverkeogramdestinationname",
+"default" : "",
+"description" : "Optional name of the remote keogram file.",
+"label" : "Remote Keogram File Name",
+"type" : "text",
+"booldependson" : "useremoteserver",
+"optional" : true
+},
+{
+"name" : "remoteserverstartrailsdestinationname",
+"default" : "",
+"description" : "Optional name of the remote startrails file.",
+"label" : "Remote Startrails File Name",
+"type" : "text",
+"booldependson" : "useremoteserver",
+"optional" : true
+},
+
+{
+"name" : "allskymaptab========================================",
+"label" : "Map",
+"type" : "header-tab"
+},
+{
+"name" : "allskymapheader",
+"label" : "Allsky Map Settings",
+"type" : "header"
+},
+{
+"name" : "showonmap",
+"default" : false,
+"description" : "Enable to have your camera appear on the Allsky Map .",
+"label" : "Show on Map",
+"type" : "boolean",
+"checkchanges" : true,
+"booldependson" : "uselocalwebsite OR useremotewebsite"
},
+
{
"name" : "location",
"default" : "",
-"description" : "The location of your camera, for example: Whitehorse, YT. No need to enter country since it'll be obvious looking at the map. This setting and the remaining ones also appear on the Allsky Website, if installed.",
+"description" : "The location of your camera, for example: Whitehorse, YT. This setting and the remaining ones also appear on the Allsky Website, if installed.",
"label" : "Location",
"type" : "widetext",
-"display" : 1,
-"checkchanges" : 1,
-"optional" : 1,
-"advanced" : 0
+"checkchanges" : true,
+"optional" : true,
+"booldependson" : "showonmap OR useremotewebsite OR useremoteserver"
},
{
"name" : "owner",
@@ -1112,10 +2256,9 @@
"description" : "The owner of the camera. It can be your name or an association or observatory, etc.",
"label" : "Owner",
"type" : "text",
-"display" : 1,
-"checkchanges" : 1,
-"optional" : 1,
-"advanced" : 0
+"checkchanges" : true,
+"optional" : true,
+"booldependson" : "showonmap OR useremotewebsite OR useremoteserver"
},
{
"name" : "camera",
@@ -1123,10 +2266,9 @@
"description" : "The type and model of your camera, for example: ZWO 224MC or RPi HQ.",
"label" : "Camera",
"type" : "widetext",
-"display" : 1,
-"checkchanges" : 1,
-"optional" : 1,
-"advanced" : 0
+"checkchanges" : true,
+"optional" : true,
+"booldependson" : "showonmap OR useremotewebsite OR useremoteserver"
},
{
"name" : "lens",
@@ -1134,10 +2276,9 @@
"description" : "The lens you're using on your camera, for example: Arecont 1.55.",
"label" : "Lens",
"type" : "text",
-"display" : 1,
-"checkchanges" : 1,
-"optional" : 1,
-"advanced" : 0
+"checkchanges" : true,
+"optional" : true,
+"booldependson" : "showonmap OR useremotewebsite OR useremoteserver"
},
{
"name" : "computer",
@@ -1145,20 +2286,25 @@
"description" : "The computer running your allsky camera, for example: Raspberry Pi 3, 4 GB.",
"label" : "Computer",
"type" : "widetext",
-"display" : 1,
-"checkchanges" : 1,
-"optional" : 1,
-"advanced" : 0
+"checkchanges" : true,
+"optional" : true,
+"booldependson" : "showonmap OR useremotewebsite OR useremoteserver"
},
+
{
-"name" : "CameraHeading",
-"description" : "Camera Type",
+"name" : "cameratab========================================",
+"label" : "Camera Type",
+"type" : "header-tab",
+"advanced" : true
+},
+{
+"name" : "cameraheading",
+"label" : "Camera Type",
"type" : "header",
-"display" : 1,
-"advanced" : 1
+"advanced" : true
},
{
-"name" : "cameraType",
+"name" : "cameratype",
"default" : "",
"description" : "The type of camera you are using. Refresh re-sets the Camera Model and is useful if you change cameras of the same Camera Type.",
"label" : "Camera Type",
@@ -1168,32 +2314,57 @@
{"value" : "ZWO", "label" : "ZWO"},
{"value" : "Refresh", "label" : "Refresh"}
],
-"display" : 1,
-"checkchanges" : 1,
-"advanced" : 1
+"checkchanges" : true,
+"action" : "restart",
+"advanced" : true
},
{
-"name" : "cameraModel",
+"name" : "cameramodel",
"default" : "",
"description" : "The model of camera you are using. Cannot be changed here.",
"label" : "Camera Model",
"type" : "readonly",
-"display" : 1,
-"advanced" : 1
+"action" : "restart",
+"advanced" : true
},
{
-"name" : "cameraNumber",
+"name" : "cameranumber",
"minimum" : 0,
"maximum" : "none",
"default" : 0,
-"description" : "If multiple cameras are connected to the Pi, this is the camera number (starts at 0).",
+"description" : "IF multiple cameras are connected to the Pi, this is the camera number (starts at 0).",
"label" : "Camera Number",
"type" : "integer",
-"display" : "_display",
-"display" : 0,
-"checkchanges" : 1,
-"advanced" : 1
+"usage" : "capture",
+"xxxdisplay" : "_display",
+"display" : false,
+"optional" : true,
+"checkchanges" : true,
+"action" : "restart",
+"advanced" : true
+},
+
+
+{
+"name" : "webuitab========================================",
+"label" : "WebUI",
+"type" : "header-tab"
+},
+{
+"name" : "webuiheading",
+"label" : "WebUI Configuration",
+"type" : "header",
+"advanced" : true
+},
+{
+"name" : "webuidatafiles",
+"default" : "",
+"description" : "See documentation for a description of this setting",
+"label" : "Items to add to WebUI",
+"type" : "widetext",
+"optional" : true
},
+
{
"name" : "XX_END_XX"
}
diff --git a/html/documentation/basics/Pi.html b/html/documentation/basics/Pi.html
index a1b813525..9a4073f1b 100644
--- a/html/documentation/basics/Pi.html
+++ b/html/documentation/basics/Pi.html
@@ -40,7 +40,7 @@
Operating Systems
The two most common versions of Linux for the Pi are Buster,
which was released several years ago,
and Bullseye which was released late 2021.
-Allsky runs on both operating systems but use Bullseye if possible,
+Allsky runs on both operating systems but use Bullseye if possible,
especially if you have an RPi camera.
Allsky works on both the 32-bit and 64-bit versions of Bullseye;
there was no official 64-bit version of Buster and Allsky is not supported on it.
@@ -48,11 +48,13 @@
Operating Systems
There are different distributions of Linux (called "distros") from various companies.
While they are basically the same Linux,
-there can be subtle differences and the administrative commands can vary.
+there are subtle differences and the commands that Allsky uses can vary.
-The recommended Linux distro is Debian.
+The recommended operating system for Allsky is Pi OS which is based
+on the Debian distro.
We can't guarantee Allsky will run on other distros.
+ To see which operating system you have, enter lsb_release -a.
+This page describes how to prepare a remote server
+to accept uploads of the current Allsky image
+as well as startrails, keograms, and timelapse videos.
+
+
+Since this server normally is NOT running the Allsky Website software,
+setting it up is easy:
+
+
Create the necessary directories on the server.
+ The web server software needs to be able to write to these directories:
+
+
videos
+
videos/thumbnails
+
startrails
+
startrails/thumbnails
+
keograms
+
keograms/thumbnails
+
+
Go to the WebUI's Allsky Settings page
+ and fill in the settings in the
+ Remote Server Settings section.
+
+
+
+After enabling the remote server a test will will be uploaded to
+ensure it works.
+If there are any problems, visit the
+Troubleshooting -> Uploads
+page for details on how to fix the problem.
+
+
+
Allsky Setting
that several settings have different ranges on Buster versus Bullseye,
so you'll need to update them when upgrading to Bullseye.
For example, Contrast in Buster ranged from
--100 to 100, whereas in Bullseye it starts at 0.
+-100 to 100, whereas in Bullseye it's 0 to 15.99.
@@ -395,7 +395,7 @@
Allsky Setting
RAW8: 8-bit mono. RGB24: color (red, green, blue), 8 bits per channel.
RAW16: 16-bit mono.
-
Quality
+
Quality / Compression
95
For JPG images, this specifies the quality - 0 (low quality) to 100 (high quality).
Larger numbers produce higher-quality, but larger, files.
@@ -438,18 +438,36 @@
Allsky Setting
for example, every 90 seconds, regardless of how long an individual frame's exposure is.
+
Time Format
+
%Y%m%d %H:%M:%S
+
Determines the format of the displayed time.
+ Run man 3 strftime to see the options.
+
+
Temperature Units
+
Celsius
+
Determines what unit(s) the temperature will be displayed in (Celsius, Fahrenheit, or Both).
+
LatitudeAW
Latitude of the camera.
- Formats include: 123.4N, 123.4S, 123.4, or -123.4.
+ Formats include: 123.4N, 123.4S, +123.4, or -123.4.
Southern hemisphere is negative.
+ The "+" is needed for positive numbers.
LongitudeAW
Longitude of the camera.
- Formats include: 123.4E, 123.4W, 123.4, or -123.4.
+ Formats include: 123.4E, 123.4W, +123.4, or -123.4.
West is negative.
+ The "+" is needed for positive numbers.
+
+ The actual values for latitude and longitude are not displayed on the map,
+ but users can zoom in to see exactly where your camera is.
+ If that bothers you, change the latitude and/or longitude values slightly.
+ Allsky itself only uses them to determine when daytime and nighttime begin so
+ you can change the values a fair amount and not impact anything.
+
AngleAW
@@ -572,9 +590,8 @@
Allsky Setting
overlay program.
In this mode, the overlay settings below do NOT apply.
- The default will be module in the next major Allsky release,
- and in the release after that the legacy mode as well as this "Image overlay settings"
- section will be removed.
+ This setting, as well as the legacy mode and this "Image overlay settings"
+ section will be removed in the next Allsky release.
When setting to module, don't forget to enable the
@@ -587,19 +604,10 @@
Allsky Setting
Yes
Display the time the picture was taken in the overlay?
-
Time Format
-
%Y%m%d %H:%M:%S
-
Determines the format of the displayed time.
- Run man 3 strftime to see the options.
-
Show Temperature
Yes
(ZWO only) Display the camera sensor temperature in the overlay?
-
Temperature Units
-
Celsius
-
Determines what unit(s) the temperature will be displayed in (Celsius, Fahrenheit, or Both).
-
Show Exposure
Yes
Display the exposure time in the overlay? If Auto-Exposure is enabled,
@@ -694,7 +702,272 @@
Allsky Setting
Should an outline to the text overlay be added to improve contrast?
-
Allsky Map and Website Setting
+
Allsky Website and Remote Server Settings
+
Allsky supports uploading files to a local (i.e., on your Pi) Website,
+ a remote (i.e., not on your Pi) Website,
+ and a remote server that is NOT an Allsky Website.
+
+
+
Display Settings
+
No
+
People sometimes ask others what settings they are using.
+ Enable this setting to add a link to your Allsky Website's right-side
+ popout that displays your settings.
+ This only works if you are running the Allsky Website.
+
+
Use Local Website
+
No
+
Enable to use a local Allsky Website.
+ No other settings are needed for a local Website.
+
+ If you were using a local Website and disable it you will be asked if you
+ want to keep or remove the saved images, keograms, startrails, and timelapse videos.
+ Either way, the Website itself is not not removed nor are its settings so you can
+ easily re-enable it and pick up where you left off.
+
+
Remote Website Settings
+
Use Remote Website
+
No
+
Enable to use a remote Allsky Website.
+ Enable the Website BEFORE you
+ install
+ it since the installation needs the settings below.
+
+
Protocol
+
ftps
+
Specifies how files should be uploaded to the remote Website.
+
+
ftps -
+ uses secure File Transfer Protocol (FTPs) to upload to a remote server.
+
sftp -
+ uses SSH file transfer to upload to a remote server.
+
ftp -
+ uses (insecure) File Transfer Protocol (FTP) to upload to a remote server.
+
+ ftp is unsecure;
+ please use
+ ftps or
+ sftp instead.
+
+
scp -
+ uses secure cp (copy) to copy the file to a remote server.
+
s3 -
+ copies the file to an Amazon Web Services (AWS) server.
+
gcs -
+ copies the file to a Google Cloud Storage (GCS) server.
+
+
Some of the settings below only apply to certain protocols.
+
+
Server Name
+
+
Name of the remote server.
+ Note that this is normally NOT the same as the URL used to access the server.
+ If you don't know the name of the server,
+ ask the person or company supporting the server.
+
+
Port
+
+
(ftp protocols only) Optional port required by the server.
+ This is rarely needed as the software can usually determine what port to use.
+
+
User Name
+
+
The username of the login on the remote Website.
+
+
Password
+
+
The password of the login on the remote Website.
+
+
FTP Commands
+
+
(ftp protocols only) Optional colon-separated list of commands to send to the ftp server
+ prior to transfering files.
+ If you have problems uploading to an ftp server you'll often need to add
+ something to this field - see the
+ Troubleshooting -> Uploads
+ page for more information.
+
+
Image Directory
+
+
(ftp protocols only) Name of the directory the current image should be uploaded to.
+
+ This setting is a major cause of confusion for many users.
+ If you don't know what to enter,
+ ask the person or company supporting the server or look in the
+ Troubleshooting -> Uploads
+ page for more information.
+
+
+
SSH Key File
+
+
(scp protocol only) Path to the SSH key.
+
+ You need to set up SSH key authentication on your server.
+ First, generate an SSH key on your Pi:
+
ssh-keygen -t rsa
+ When prompted, leave the default filename, and use an empty passphrase.
+ Then, copy the generated key to your server:
+
ssh-copy-id remote_username@server_ip_address
+ The private SSH key will be stored in
+ ~/.ssh (default filename is id_rsa).
+
+ If you are using SSH Key with Amazon's Lightsail,
+ copy the ssh-key.pem file to your Pi,
+ for example, in ~,
+ then execute chmod 400 ~/ssh-key.pem and set:
+
+
Protocol to sftp
+
Server Name to remote host name
+
User Name to remote user name
+
Password to n/a
+
FTP Commands to
+ set sftp:connect-program 'ssh -a -x -i /home/pi/ssh-key.pem'
+
+
+
+
AWS CLI Directory
+
${HOME}/.local/bin
+
(s3 protocol only) Directory on the Pi where the AWS Command-Line Interface (CLI)
+ tools are installed.
+ You need to install tools:
+
+ When prompted, enter a valid access key ID, Secret Access Key, and Default region name,
+ for example, (e.g. "us-west-2").
+ Set the Default output format to "json" when prompted.
+
+
S3 Bucket
+
allskybucket
+
(s3 protocol only) Name of the S3 bucket where files will be uploaded to
+ (must be in Default region specified above).
+ You may want to turn off or limit bucket versioning to avoid consuming lots of
+ space with multiple versions of the "image.jpg" files.
+
+
S3 ACL
+
private
+
(s3 protocol only) S3 Access Control List (ACL).
+
+ If you want to serve your uploaded files vis http(s),
+ change this to public-read.
+ You will need to ensure the S3 bucket policy is configured to allow public access to
+ objects with a public-read ACL.
+ You may need to set a CORS policy in S3 if the files are to be accessed by
+ Javascript from a different domain.
+
+
GCS Bucket
+
allskybucket
+
(gcs protocol only) Name of the GCS bucket where files will be uploaded to.
+
+ You need to install the gsutil command which is part of the Google Cloud SDK.
+ See installation instructions
+ here.
+
+ NOTE: The gsutil command must be installed somewhere in the standard ${PATH},
+ usually in /usr/bin.
+ Make sure you authenticate the cli tool with the correct user as well.
+
+
GCS ACL
+
private
+
(gcs protocol only) GCS Access Control List (ACL).
+ You can use any one of the predefined ACL rules found
+ here.
+ To access files over https, set this to publicRead.
+
+
Remote Video File Name
+
+
The name to give to the remote timelapse video file.
+ If not specified it's the same as the file on your Pi.
+
+
Remote Keogram File Name
+
+
The name to give to the remote keogram file.
+ If not specified it's the same as the file on your Pi.
+
+
Remote Startrails File Name
+
+
The name to give to the remote startrails file.
+ If not specified it's the same as the file on your Pi.
+
+
Website URL
+
+
Your website's URL, for example: https://www.mywebsite.com/allsky.
+
+ If a Website URL is specified,
+ the Image URL must also be specified, and vice versa.
+
+
+
Image URL
+
+
The URL to your allsky image, for example: https://wwww.mywebsite.com/allsky/image.jpg.
+ Normally this will be the Website URL followed by
+ image.jpg.
+ Use the more secure "https" over "http" if possible.
+
+
Remote Server Settings
+
These settings are the same as for the Remote Website so are not described.
+
+
Use Remote Website
+
No
+
Enable to use a remote server which is NOT running the Allsky Website software.
+ Files will be copied to this server which normally will be a private website
+ where you want to display the most recent images along with other,
+ non-Allsky information.
+ For example, if you have an observatory website and want to show the latest image,
+ you would use the settings below.
+
+
Protocol
+
ftps
+
+
Server Name
+
+
+
Port
+
+
+
User Name
+
+
+
Password
+
+
+
FTP Commands
+
+
+
Image Directory
+
+
+
SSH Key File
+
+
+
AWS CLI Directory
+
${HOME}/.local/bin
+
+
S3 Bucket
+
allskybucket
+
+
S3 ACL
+
private
+
+
GCS Bucket
+
allskybucket
+
+
GCS ACL
+
private
+
+
Remote Video File Name
+
+
+
Remote Keogram File Name
+
+
+
Remote Startrails File Name
+
+
+
+
Allsky Map Settings
If you want your allsky camera's location to display on the
Allsky map,
@@ -705,45 +978,12 @@
Allsky Setting
-
-
Display Settings
-
No
-
People sometimes ask others what settings they are using.
- Enable this setting to add a link to your Allsky Website's popout that displays your
- settings in the WebUI's Allsky Settings page.
- Only works if you are running the Allsky Website.
Show on Map
No
Enable to have your camera appear on the
Allsky map.
If off, the following settings are ignored.
-
Website URL
-
-
Your website's URL, for example: https://www.thomasjacquin.com/allsky.
- If your camera is not accessible on the Internet or you do not want the
- map page to link to your website, leave this field blank.
-
- If a Website URL is specified,
- the Image URL must also be specified, and vice versa.
-
-
-
Image URL
-
-
The URL to your allsky image, for example: https://wwww.thomasjacquin.com/allsky/image.jpg.
- Right-click on the image and select Copy Image Address to determine what to
- put in this field.
-
- If you have the Allsky Website installed on your Pi and are using its image,
- you may need to set this field to
- <Pi name>/current/tmp/image.jpg or
- whatever's in the imageName field of your website's
- configuration.json file.
- Be careful of using "http" versus "https", and after enabling
- Show On Map, look at the map to ensure you can see your image.
- If your camera is not accessible on the Internet or you do not want the image
- to appear on the map page, leave this field empty.
- However, one of the main purposes of the map is to show pictures from cameras around the world,
- so adding your image URL is strongly encouraged.
+
LocationAW
The location of your camera.
@@ -762,16 +1002,6 @@
Allsky Setting
The computer runni g your allsky camera, for example: Raspberry Pi 3.
This field is required and a default value is set during Allsky installation.
-
Latitude & longitudeAW
-
-
These are described above and are
- required for your camera to appear on the Allsky Map.
-
- The actual values are not displayed on the map,
- but users can zoom in to see exactly where the camera is.
- If that bothers you, change their values slightly.
-
-
Camera Type
@@ -805,29 +1035,14 @@
Editor We
This page allows you to edit the config.sh file,
and if you have a local and/or remote Allsky Website installed, the
-ftp-settings.sh,
configuration.json, and
remote_configuration.json files can also be edited.
-Further, if you have a endOfNight_additionalSteps.sh file,
-it can also be edited.
-
-
-The endOfNight_additionalSteps.sh file will no longer
-be supported in the next version of Allsky.
-If you use this file, please move your code to the Script module
-in the Night to Day Transition Flow,
-then remove this file.
-See the Module
-documentation for more details.
-
+
The table below describes the settings in the
config.sh file.
-Settings in the ftp-settings.sh file are described in the
-ftp-settings.sh settings page.
-
Settings in the configuration.json files are described in the
Allsky Website Settings page.
@@ -843,7 +1058,6 @@
config.sh settings
Editor page, then selecting
config.sh in the drop-down list at the bottom of the page.
-
@@ -1264,7 +1478,6 @@
config.sh settings
Do not change anything lower in the file
-
+-->
diff --git a/html/documentation/settings/allskyWebsite.html b/html/documentation/settings/allskyWebsite.html
index b14d53eec..c3d907371 100644
--- a/html/documentation/settings/allskyWebsite.html
+++ b/html/documentation/settings/allskyWebsite.html
@@ -33,24 +33,19 @@
and aurora activity can be listed.
-Make sure you follow the
-Allsky Website Installation Instructions
-exactly to install the Allsky Website on your Pi and/or a remote server.
+For a local Allsky Website you only need to enable it in
+the WebUI's Allsky Settings page.
+There are no other settings on this page and no installation needed.
+To configure a local or remote Website, do the following:
In the WebUI, click on the Editor link in the menu.
-
-
If you have not already done so while installing the Website,
- in the drop-down at the bottom of the page, select
- ftp-settings.sh
- to specify the settings to upload image,
- keogram, startrails, and timelapse
- files to your local and/or remote Allsky Website.
- See the ftp-settings.sh file section below
- for the various settings and their meanings.
-
In the drop-down at the bottom of the page, select
one of the following, depending on which Website you want to configure:
@@ -58,314 +53,17 @@
remote_configuration.json (remote Allsky Website)
(only if you have a remote Website)
- See the configuration.json files section below
- for a description of the settings in those files.
-
-The sections below list all the settings, their default values, and a description.
-Information on the color scheme used by the Editor is
-here.
-
-
-
-
ftp-settings.sh file
-
-In order to upload files to your Allsky Website (on the Pi and/or a remote server),
-connection details must be specified by clicking on the WebUI's
-Editor page, then selecting
-ftp-settings.sh in the drop-down list at the bottom of the page.
-
-
-
-Notes:
-
-
- In the text below, "local" refers to an Allsky Website that's on the Pi
- and "remote" refers to an Allsky Website not on the Pi.
-
-
- Directories on the Pi are created during Allsky Website installation, but
- YOU must create the remote directories.
-
-
-
- The WEB_*_DIR
- settings below (e.g., WEB_VIDEOS_DIR)
- are only used if you have an Allsky Website on the Pi
- AND a remote Allsky Website, and you want files copied to both locations.
- In this case, see the
- example at the end of the table below
- for what settings to use.
-
- By default, the destination file name is the same as the file being uploaded.
- The *_DESTINATION_NAME settings below are used
- to specify a DIFFERENT destination name.
- For example, if the file being uploaded is
- allsky-20210710.mp4 you may want it
- called allsky.mp4 on the remote web server
- so the name is always the same.
- In that case, set
- VIDEOS_DESTINATION_NAME="allsky.mp4"
- (don't forget the file name extension like .mp4, .jpg, etc.).
- If you want the destination file name to be the same as what's being uploaded,
- leave the *_DESTINATION_NAME blank.
-
-
-
-
-
-
-
Setting
Default
Description
-
-
-
PROTOCOL
-
How the file should be uploaded:
-
-
local -
- copies the file to a local Allsky Website.
-
ftps -
- uses secure File Transfer Protocol (FTPs) to upload to a remote server.
-
sftp -
- uses SSH file transfer to upload to a remote server.
-
ftp -
- uses (insecure) File Transfer Protocol (FTP) to upload to a remote server.
-
- ftp is unsecure;
- please use
- ftps or
- sftp instead.
-
-
scp -
- uses secure cp (copy) to copy the file to a remote server.
-
s3 -
- copies the file to an Amazon Web Services (AWS) server.
-
gcs -
- copies the file to a Google Cloud Storage (GCS) server.
-
-
-
-
-
image.jpg Settings
-
IMAGE_DIR
-
The remote directory where the current image should go.
-
-
WEB_IMAGE_DIR
-
The local directory where the current image should go.
-
-
-
Timelapse Settings
-
VIDEOS_DIR
-
The remote directory where the timelapse video should go.
-
-
VIDEOS_DESTINATION_NAME
-
Remote name of the timelapse video file.
- If not specified it's the same name as the file being uploaded.
-
-
WEB_VIDEOS_DIR
-
Location on the Pi to copy the timelapse video to.
-
-
-
Keogram Settings
-
KEOGRAM_DIR
-
The remote directory where the keogram image should go.
-
-
KEOGRAM_DESTINATION_NAME
-
Remote name of the keogram image file.
- If not specified it's the same name as the file being uploaded.
-
-
WEB_KEOGRAM_DIR
-
Location on the Pi to copy the keogram file to.
-
-
-
Startrails Settings
-
STARTRAILS_DIR
-
The remote directory where the startrails image should go.
-
-
STARTRAILS_DESTINATION_NAME
-
Remote name of the startrails file.
- If not specified it's the same name as the file being uploaded.
-
-
WEB_STARTRAILS_DIR
-
Location on the Pi to copy the startrails file to.
-
-
-
ftp, ftps, sftp, and scp Settings
-
REMOTE_HOST
-
Remote server DNS name or IP address.
- If you don't know it, ask your service provider.
-
-
-
-
ftp, ftps, and sftp Settings
-
REMOTE_USER
-
Your remote user name.
-
-
REMOTE_PASSWORD
-
Your ftp / ftps / sftp password.
-
-
REMOTE_PORT
-
An optional port number for ftp and ftps. Is rarely needed.
-
-
LFTP_COMMANDS
-
An optional colon-separated (;) list of commands needed by the lftp command.
- See this page
- for example commands to enter into LFTP_COMMANDS.
-
-
-
-
scp Settings
-
REMOTE_USER
-
Your remote user name.
- This is the same setting as above.
-
-
-
SSH_KEY_FILE
-
Path to the SSH key file.
-
- You need to set up SSH key authentication on your server.
- First, generate an SSH key on your Pi:
-
ssh-keygen -t rsa
- When prompted, leave the default filename, and use an empty passphrase.
- Then, copy the generated key to your server:
-
ssh-copy-id remote_username@server_ip_address
- The private SSH key will be stored in
- ~/.ssh (default filename is id_rsa)
-
-
-
-
s3 Settings
-
- You need to install the AWS Command-Line Interface (CLI):
-
- When prompted, enter a valid access key ID, Secret Access Key, and Default region name,
- for example, (e.g. "us-west-2").
- Set the Default output format to "json" when prompted.
-
-
-
AWS_CLI_DIR
-
/home/pi/.local/bin
-
Directory on the Pi where the AWS tools are installed.
- If you used a different PATH setting above, change this setting to match it.
-
-
-
S3_BUCKET
-
allskybucket
-
Name of S3 Bucket where the files will be uploaded
- (must be in Default region specified above).
- You may want to turn off or limit bucket versioning to avoid consuming lots of
- space with multiple versions of the "image.jpg" files.
-
-
-
S3_ACL
-
private
-
S3 Access Control List (ACL).
- If you want to serve your uploaded files vis http(s),
- change this to public-read.
- You will need to ensure the S3 bucket policy is configured to allow public access to
- objects with a public-read ACL.
- You may need to set a CORS policy in S3 if the files are to be accessed by
- Javascript from a different domain.
-
-
-
-
GCS Settings
-
- You need to install the gsutil command which is part of the Google Cloud SDK.
- See installation instructions
- here.
-
- NOTE: The gsutil command must be installed somewhere in the standard $PATH,
- usually in /usr/bin.
- Make sure you authenticate the cli tool with the correct user as well.
-
GCS_BUCKET
-
allskybucket
-
Name of S3 Bucket where the files will be uploaded.
-
-
GCS_ACL
-
private
-
GCS Access Control List.
- You can use any one of the predefined ACL rules found
- here.
- To access files over https, set this to publicRead.
-
-
-
-
-
-
-
Settings for various combinations
-
-
If you have the Allsky Website only on your Pi, use these settings:
-
- If you have an Allsky Website only on a remote server, use these settings.
- For the sake of this example, assume your top-level directory on the server is
- /allsky:
-
-PROTOCOL="sftp" # or another PROTOCOL
-IMAGE_DIR="/allsky"
-VIDEOS_DIR="/allsky/videos"
-KEOGRAM_DIR="/allsky/keogram"
-STARTRAILS_DIR="/allsky/startrails"
-
-
-
- If you have an Allsky Website on your Pi AND on a remote server, use these settings.
- For the sake of this example, assume your top-level directory on the server is
- /allsky:
-
-PROTOCOL="sftp" # or another PROTOCOL
-IMAGE_DIR="/allsky"
-WEB_IMAGE_DIR=""
-VIDEOS_DIR="/allsky/videos"
-WEB_VIDEOS_DIR="${ALLSKY_WEBSITE}/videos"
-KEOGRAM_DIR="/allsky/keogram"
-WEB_KEOGRAM_DIR="${ALLSKY_WEBSITE}/keograms"
-STARTRAILS_DIR="/allsky/startrails"
-WEB_STARTRAILS_DIR="${ALLSKY_WEBSITE}/startrails"
-
-
-
-
-
-
Amazon Lightsail
-If you are using SSH Key with Amazon's Lightsail,
-copy the ssh-key.pem file to your Pi,
-for example, in ~,
-then execute
-
chmod 400 ~/ssh-key.pem
-and set:
-
-PROTOCOL="sftp"
-REMOTE_HOST="remote host name"
-REMOTE_USER="remote user name"
-REMOTE_PASSWORD="n/a"
-LFTP_COMMANDS="set sftp:connect-program 'ssh -a -x -i /home/pi/ssh-key.pem'"
-
-
-
configuration.json files
-This section describes the settings in the
-configuration.json (local Allsky Website) and
-remote_configuration.json (remote Allsky Website) files.
+This section describes the settings in the .json files,
+their default values, and a description.
+Information on the color scheme used by the Editor is
+here.
-
The settings in both files are identical (although their values may differ)
and they are split into two sections:
@@ -731,11 +429,6 @@