PYVER := 3 VENV := .venv INODIR := .ino INO_OR_ANO := ino ARDUINO_PATH := #-d ~/Downloads/arduino-1.6.5 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 " serial -- Enter IPython session with serial opened" @ echo " bu -- build & upload firmware (with Arturo)" @ 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: ./tools/apt-install.sh ano-install: chmod +x tools/arturo-install.sh ./tools/arturo-install.sh ino-install: @ echo "Finding pip2 binary.." @PIP2=`dpkg -L python-pip | grep /usr/bin/pip | tail -1`;\ echo "Got it! PIP2=$$PIP2";\ sudo $$PIP2 install -v ino setup: apt-install venv ${INO_OR_ANO}-install 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 " "~/Downloads/arduino-1.0.1 @ echo "TOTAL SIZE: " @ du -sh ${VENV} clean-venv: rm -rf ${VENV} serial: ${VENV}/bin/ipython -i logger/init_serial.py bu: rm -rf ${INODIR} mkdir -p ${INODIR} mkdir -p ${INODIR}/src/ ${INODIR}/lib/ cp -rf meteorolog/. ${INODIR}/src/ ${INO_OR_ANO} list-models ${ARDUINO_PATH} @ echo "Getting board model from settings.yaml" $(eval MODEL := $(shell cd logger && ../${VENV}/bin/python -c "from app import Meteorologger; print(Meteorologger().CFG['ARDUINO']['BOARD_MODEL'])")) @ echo "" @ read -p "Type your board model (or hit ENTER to proceed with '${MODEL}'): " MODEL_CONF; \ cd ${INODIR}/ && ${INO_OR_ANO} build ${ARDUINO_PATH} -m $${MODEL_CONF:-${MODEL}} && ${INO_OR_ANO} upload -m $${MODEL_CONF:-${MODEL}} ${ARDUINO_PATH} bus: bu 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 "pid*|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