Makefile 5.06 KB
Newer Older
1
2
PYVER := 3
VENV := .venv
3
INODIR := .ino
4
5
6
7

all: help

help:
8
	@ echo "USAGE: make <command>"
9
	@ echo ""
10
	@ echo "COMMANDS:"
11
	@ echo ""
12
13
	@ echo "  install          --  Install required tools, build and upload firmware, and"
	@ echo "                       deploy logger daemon (background process)"
14
	@ echo ""
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
	@ 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=<C>  --  Uses Gnuplot to plot last modified datalog file"
	@ echo ""
	@ echo "  help             --  Shows the full help"

help-full:
	@ echo "USAGE: make <command>"
	@ echo ""
	@ echo "COMMANDS:"	
	@ echo ""	
	@ echo "  install          --  setup & bu & deploy-logger"
	@ echo "  uninstall        --  undeploy-logger & clean-venv & clean-ino"
	@ echo ""	
32
33
34
	@ 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"
35
	@ echo ""
36
37
38
39
40
	@ 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"
41
	@ echo ""
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
	@ 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=<C>  --  Uses Gnuplot to plot last modified datalog file"
	@ echo "                         Replace <C> 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" 
58
59
	@ echo ""

60
61
62
63
install: setup bu deploy-logger

uninstall: undeploy-logger clean-venv clean-ino

64
apt-install:
65
	sudo apt-get install python python3 python3-pip supervisor python-pip
66
67
	sudo pip${PYVER} install virtualenv
	sudo pip2 install ino
68
69

setup: apt-install venv
70
	
71
venv: clean-venv
72
73
74
75
76
77
	@ 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 "-------------------------------------------------------"
Nelso Jost's avatar
Nelso Jost committed
78
	${VENV}/bin/pip install -r logger/requirements.pip
79
80
81
82
83
84
85
86
87
88
	@ echo "-------------------------------------------------------"
	@ echo "Virtualenv is ready at ${VENV}!"
	@ echo " "
	@ echo "TOTAL SIZE: "
	@ du -sh ${VENV}

clean-venv:
	rm -rf ${VENV}

build:
89
90
91
92
93
	$(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)
94
95
	
upload:
96
	$(eval MODEL := $(shell ${VENV}/bin/python -c "from logger.app import Meteorologger; print(Meteorologger().CFG['ARDUINO']['BOARD_MODEL'])"))
97
	cd ${INODIR}/ && ino upload -m $(MODEL)
98
99

serial:
100
	${VENV}/bin/ipython -i logger/init_serial.py
101
102
103
104
105
106
107
108
109
110
111

bu: build upload

bus: build upload serial

sync-rtc:
	${VENV}/bin/python${PYVER} run.py --syncrtc
 
run-logger:
	${VENV}/bin/python logger/run.py

112
deploy-logger: undeploy-logger
113
114
115
116
117
118
	mkdir -p logger/logs
	sudo ${VENV}/bin/python${PYVER} logger/deploy.py

undeploy-logger:
	sudo ${VENV}/bin/python${PYVER} logger/deploy.py -u

Nelso Jost's avatar
Nelso Jost committed
119
tail-log:
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
	$(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