树莓派显示博客网站实时在线人数

烂漫树林
发布于 2020-11-11 17:16
浏览
0收藏

用树莓派做了一个博客网站实时访问显示器,用三个LED的不同状态来显示网站实时访客的人数,同时还在终端中显示网站当前在线人数、网页今日浏览量、数据库大小和页面平均生成时间。以下是教程。

开发语言使用的是python,数据通过科技爱好者网站统计提供的API实现。先看下成品图。

树莓派显示博客网站实时在线人数-鸿蒙开发者社区

树莓派网站计数器

树莓派显示博客网站实时在线人数-鸿蒙开发者社区

显示当前在线人数、网页今日浏览量、数据库大小和页面平均生成时间
下面是实现方法:

我使用自建的网站访问统计软件Matomo统计博客的访问人数,其提供了API供二次开发。

树莓派显示博客网站实时在线人数-鸿蒙开发者社区

Matomo提供的API


所以我在树莓派上用python获得网站当前在线人数、网页今日浏览量、数据库大小和页面平均生成时间,然后展现出来,并连接了三个LED灯。连接灯可以参考这篇文章:树莓派GPIO控制RGB彩色LED灯。

 

连接好led灯后,在树莓派上编写代码。

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import requests
import time
import RPi.GPIO as GPIO

R,Y,G =  14,15,18
visits = 0
GPIO.setmode(GPIO.BCM) 
GPIO.setup(R, GPIO.OUT)
GPIO.setup(Y, GPIO.OUT)
GPIO.setup(G, GPIO.OUT)

def printSiteInfo ():
	actions_url = 'https://tongji.lxx1.com/index.php?module=API&method=Actions.get&idSite=3&period=day&date=today&format=JSON&token_auth=***'
	db_status_url = 'https://tongji.lxx1.com/index.php?module=API&method=DBStats.getGeneralInformation&format=JSON&token_auth=***'
	live_visits_url = 'https://tongji.lxx1.com/index.php?module=API&method=Live.getCounters&idSite=3&lastMinutes=3&format=json&token_auth=***'

	r = requests.get(actions_url)	
	database_response = requests.get(db_status_url)
	live_visits = requests.get(live_visits_url)

	info = r.json()
	database_list = database_response.json()
	database = database_list[2] / 1024 / 1024 

	visits_json = live_visits.json()
	visits_list = visits_json[0]
	global visits
	visits = visits_list['visits']

	localtime = time.asctime( time.localtime(time.time()) )
 	
	print ""
	print "当前时间 :", localtime 
	print 'live visits: ' , visits
	print 'pageviews: ', info['nb_pageviews']
	print 'avg_time_generation :',info['avg_time_generation'] , 's'
	print 'database size: ' , database ,' M'

	return
i = 1
while i == 1:
	t = 0
	printSiteInfo()
	visits = int(visits)

	if visits == 0 :
		GPIO.output(R,0)
		GPIO.output(Y,0)
		GPIO.output(G,0)
		
	elif visits == 1 :
		GPIO.output(R,1)
		GPIO.output(Y,0)
		GPIO.output(G,0)

	elif visits == 2:
		GPIO.output(R,1)
		GPIO.output(Y,1)
		GPIO.output(G,0)
		
	elif visits == 3:
		GPIO.output(R,1)
		GPIO.output(Y,1)
		GPIO.output(G,1)
		time.sleep(20)
	else :
		while t < visits :
			GPIO.output(R,0)
			GPIO.output(Y,0)
			GPIO.output(G,0)
			time.sleep(0.7)
			GPIO.output(R,1)
			GPIO.output(Y,1)
			GPIO.output(G,1)
			time.sleep(0.3)
			t = t + 1
		time.sleep(10)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.
  • 80.

这里要注意 :python获得网站实时在线人数 visits 的变量类型为 Unicode ,在 if 语句进行比较前,要将其转换为 int 型,否则会出错。

这样网站访客显示器就完成啦。

树莓派显示博客网站实时在线人数-鸿蒙开发者社区

原文作者:科技爱好者

 

分类
已于2020-11-11 17:16:16修改
收藏
回复
举报


回复
    相关推荐