PYVER := 3 VENV := .venv INODIR := .ino all: help help: @ echo "USAGE: make " @ echo "" @ echo "COMMANDS:" @ echo "" @ echo " install -- Install required tools, build and upload firmware, and" @ echo " deploy logger daemon (background process)" @ echo "" @ echo " uninstall -- Remove daemon process (if present) and clean this folder" @ echo "" @ echo " tail-log -- Exibits and follow last modified execution log file" @ echo " tail-data -- Exibits and follow last modified datalog file" @ echo "" @ echo " plot-data col= -- Uses Gnuplot to plot last modified datalog file" @ echo "" @ echo " help -- Shows the full help" help-full: @ echo "USAGE: make " @ echo "" @ echo "COMMANDS:" @ echo "" @ echo " install -- setup & bu & deploy-logger" @ echo " uninstall -- undeploy-logger & clean-venv & clean-ino" @ echo "" @ echo " apt-install -- Uses Debian's apt to install required system tools" @ echo " venv -- Creates a Python local virtual environment at ${VENV}" @ echo " setup -- apt-install & venv" @ echo "" @ echo " build -- Compile the sketch usin Ino Tool" @ echo " upload -- Send the compiled sketch to the board using Ino Tool" @ echo " serial -- Enter IPython session with serial opened" @ echo " bu -- build & upload" @ echo " bus -- build & upload & serial" @ echo "" @ echo " sync-rtc -- Synchronizes the board's clock with the system's" @ echo "" @ echo " run-logger -- Starts the logger. Keep log at logger/logs" @ echo " deploy-logger -- Activate logger daemon. Keep log at logger/logs/" @ echo " undeploy-logger -- Deactivate logger daemon" @ echo "" @ echo " tail-log -- Exibits and follow last modified execution log file" @ echo " tail-data -- Exibits and follow last modified datalog file" @ echo "" @ echo " plot-data col= -- Uses Gnuplot to plot last modified datalog file" @ echo " Replace with the column number to plot as y axis" @ echo " clean-venv -- Remove Python's virtual environment directory" @ echo " clean-ino -- Remove Ino folder" @ echo " clean-data -- !!! CAUTION !!! Remove all datalog files" @ echo " clean-logs -- !!! CAUTION !!! Remove all execution log files" @ echo " clean-all -- Performs all the above cleans" @ echo "" install: setup bu deploy-logger uninstall: undeploy-logger clean-venv clean-ino apt-install: sudo apt-get install python python3 python3-pip supervisor python-pip sudo pip${PYVER} install virtualenv sudo pip2 install ino setup: apt-install venv venv: clean-venv @ echo "-------------------------------------------------------" virtualenv -v --python='python${PYVER}' ${VENV} @ echo "Virtualenv with 'python${PYVER}' interpreter was created at ${VENV}" @ echo "-------------------------------------------------------" ${VENV}/bin/pip install --upgrade pip @ echo "-------------------------------------------------------" ${VENV}/bin/pip install -r logger/requirements.pip @ echo "-------------------------------------------------------" @ echo "Virtualenv is ready at ${VENV}!" @ echo " " @ echo "TOTAL SIZE: " @ du -sh ${VENV} clean-venv: rm -rf ${VENV} build: $(eval MODEL := $(shell ${VENV}/bin/python -c "from logger.app import Meteorologger; print(Meteorologger().CFG['ARDUINO']['BOARD_MODEL'])")) mkdir -p ${INODIR} mkdir -p ${INODIR}/src/ ${INODIR}/lib/ cp -rf meteorolog/. ${INODIR}/src/ cd ${INODIR}/ && ino build -m $(MODEL) upload: $(eval MODEL := $(shell ${VENV}/bin/python -c "from logger.app import Meteorologger; print(Meteorologger().CFG['ARDUINO']['BOARD_MODEL'])")) cd ${INODIR}/ && ino upload -m $(MODEL) serial: ${VENV}/bin/ipython -i logger/init_serial.py bu: build upload bus: build upload serial sync-rtc: ${VENV}/bin/python${PYVER} run.py --syncrtc run-logger: ${VENV}/bin/python logger/run.py deploy-logger: undeploy-logger mkdir -p logger/logs sudo ${VENV}/bin/python${PYVER} logger/deploy.py undeploy-logger: sudo ${VENV}/bin/python${PYVER} logger/deploy.py -u tail-log: $(eval TMP := $(shell ls -t -I stdout* logger/logs/ | head -n 1)) @ echo "Last log file updated: logger/logs/$(TMP)" @ echo "File size: `du -h logger/logs/$(TMP) | cut -f1`" @ echo "" @ tail -F logger/logs/$(TMP) plot-data: @ echo "Quit by closing the window with Q and hitting Ctrl+C here to end the process" @ cd tools && gnuplot -persist -e "config='config.plt'; col=${col}" loop.plt tail-data: $(eval TMP := $(shell ls -t -I outgoing* data/ | head -n 1)) @ echo "Last datalog file updated: data/$(TMP)" @ echo "Number of lines/points: `cat data/$(TMP) | wc -l`" @ echo "File size: `du -h data/$(TMP) | cut -f1`" @ echo "" @ head -1 data/$(TMP) @ echo "" @ tail -F data/$(TMP) clean-data: rm -rfv data/*.csv data/outgoing/*.json clean-logs: rm -rfv logger/logs/* clean-ino: rm -rf ${INODIR} clean-all: clean-data clean-logs clean-ino clean-venv cd logger && sudo py3clean app