airQ空气质量监测数据(印度)采集系统,用Python3编写。
airQ的Python项目详细描述
airQ v0.3.3版
近实时空气质量指示数据收集服务(适用于印度),由:心脏:
考虑将:star:放在“表示爱和支持”
Companion repo位于:airQ-insight,用于增强可视化
它有什么作用?在
- 空气质量数据采集器,收集自180+地面监测站(遍布印度)
- 不可靠的JSON数据集是从here获取的,该数据集提供来自所有监测站的当前小时污染物统计数据,分布在India,然后将其对象化、清理、处理和重组为正确的格式,并将其推送到*.JSON文件中
- 由minim,max&;max$max&;average给出的空气质量数据,给出的空气质量数据由^{{
},^{{ PM10, CO
,NH3
,OZONE
,{{}&{{ {{{em1}$timesta戳提供,与{em1}$timeStamp提供,与{em1}$timesta戳提供,在{{em1}$(从那里收集的) - 使用systemd(每小时)
安装
airQ可以使用pip从PyPI轻松安装。在
$ pip install airQ --user # or may be use pip3 $ python3 -m pip install airQ --user # if previous one doesn't work
使用
安装airQ之后,使用以下命令运行它
^{pr2}$自动化
- 我的计划是自动化这个数据收集服务,这样它就可以保持每小时运行一次,并不断刷新数据集
- 为此,我使用了
systemd
,它将使用systemd.timer
每小时触发一次{str 1}$airQ的执行,即在延迟1h之后,周期性地执行airQ - 为此,我们需要添加两个文件,
*.service
&;*.timer
(放在./systemd/
)
在航空服务
我们的服务不应该一直运行,只有当计时器触发器要求它运行时,它才会运行。所以在[Unit]
部分,它声明了它Wants,airQ.timer
[Unit]
Description=Air Quality Data collection service
Wants=airQ.timer
您需要在[Service]
单元声明的WorkingDirectory
字段中设置当前工作目录的绝对路径
ExecStart
是在airQ.timer
调用此服务单元时要执行的命令,因此需要airQ的绝对安装路径和绝对sink路径(*.json)
确保根据您的系统更新User
字段,以正确反映更改。在
如果您只需在[Service]
单元下添加一个Restart
字段,并给它一个值always
,我们可以使这个脚本始终运行,这对运行服务器很有帮助,但是我们将使用systemd.timer
来触发脚本的执行,这与cron
非常相似,但在几乎所有基于linux的发行版中使用和支持的更多
[Service]
User=anjan
WorkingDirectory=/absolute-path-to-current-working-directory/
ExecStart=/absolute-path-to-airQ /home/user/data/data.json
此声明使此服务成为multi-user.target
的必需依赖项
[Install]
WantedBy=multi-user.target
在空气定时器
与airQ.service
非常相同,只有需要,airQ.service
作为一个强依赖项,因为这是在该计时器过期时要运行的服务
[Unit]
Description=Air Quality Data collection service
Requires=airQ.service
Unit字段指定计时器过期时要执行的服务文件。
如果您创建了一个与./systemd/*.timer
同名的./systemd/*.service
文件,则可以跳过此字段
因为我们希望每隔1h(相对于上一次执行航空服务),我们将OnUnitActiveSec
字段指定为1h
[Timer]
Unit=airQ.service
OnUnitActiveSec=1h
使其成为timers.target
的依赖项,以便可以安装此计时器
[Install]
WantedBy=timers.target
自动化运行
需要将当前文件./systemd/*
放入/etc/systemd/system/
,以便systemd
可以轻松找到这些服务和计时器。在
$ sudo cp ./systemd/* /etc/systemd/system/
我们需要重新加载systemd
daemon,让它探索新添加的服务和计时器单元。在
$ sudo systemctl daemon-reload
让我们启动定时器我会确保我们的计时器即使在系统重新启动后也能继续运行
$ sudo systemctl enable airQ.timer
开始计时的时间到了
$ sudo systemctl start airQ.timer
所以要立即执行我们的脚本,并且在完成So之后,它将在1h之后再次执行,这样我们就得到了刷新的数据集。在
检查此计时器的状态
$ sudo systemctl status airQ.timer
检查此服务的状态
$ sudo systemctl status airQ.service
考虑在云上运行airQ
的实例,我的实例运行在AWS LightSail
上
可视化
这个服务应该只收集数据并正确地构造它,但是可视化部分是在airQ-insight完成的
希望它有帮助:眨眼:
- 项目
标签: