Skip to content

Instantly share code, notes, and snippets.

@Kyborg2011
Last active May 27, 2021 00:36
Show Gist options
  • Save Kyborg2011/1963343e61732d043ee9b8253fc3f606 to your computer and use it in GitHub Desktop.
Save Kyborg2011/1963343e61732d043ee9b8253fc3f606 to your computer and use it in GitHub Desktop.
#!/usr/bin/env python3
### INSTALLATION REQUIREMENTS:
### sudo apt-get update
### sudo apt-get install python3-pip
### sudo python3 -m pip install --upgrade pip setuptools wheel
### sudo pip3 install Adafruit_DHT
### BUG FIXES:
### On RPI4 you need to add in file /usr/local/lib/python3.7/dist-packages/Adafruit_DHT/platform_detect.py at line 112:
### elif match.group(1) == 'BCM2711':
### return 3
import time
import argparse
import requests
import json
import threading
### Old (deprecated) library is more stable!
#import adafruit_dht
#from board import *
import Adafruit_DHT
from luma.led_matrix.device import max7219
from luma.core.interface.serial import spi, noop
from luma.core.legacy import show_message
from luma.core.legacy.font import proportional, SINCLAIR_FONT, CP437_FONT
from requests.auth import HTTPDigestAuth
SERVERS = {'list': [
['ASIC #1', 'http://192.168.68.100/', 'root', 'pass'],
['ASIC #2', 'http://192.168.68.101/', 'root', 'pass2'],
['ASIC #4', 'http://192.168.68.102/', 'root', 'pass3']
]}
cascaded = 4
block_orientation = -90
rotate = 2
reverse_order = False
#SENSOR_PIN = D12
#dht22_device = adafruit_dht.DHT22(SENSOR_PIN, use_pulseio=False)
DHT_SENSOR = Adafruit_DHT.DHT22
DHT_PIN = 12
PROBE_NAME = "PI4"
serial = spi(port=0, device=0, gpio=noop())
device = max7219(serial, cascaded=cascaded, block_orientation=block_orientation,
rotate=rotate, blocks_arranged_in_reverse_order=reverse_order)
def output(text):
print(text)
show_message(device, text, fill="white", font=proportional(CP437_FONT), scroll_delay=.07)
time.sleep(1)
def get_asics_info():
threading.Timer(180, get_asics_info).start()
try:
#SENSOR_PIN = D12
#dht22 = adafruit_dht.DHT22(SENSOR_PIN, use_pulseio=False)
#temperature = dht22_device.temperature
#humidity = dht22_device.humidity
humidity, temperature = Adafruit_DHT.read_retry(DHT_SENSOR, DHT_PIN)
if humidity is not None and temperature is not None:
output(f"Temperature = {temperature:.2f}C")
output(f"Humidity = {humidity:.2f}%")
else:
print("Failed to retrieve data from humidity sensor")
except:
print("Unexpected error: ", sys.exc_info()[0])
for s in SERVERS['list']:
response = requests.get('%s/cgi-bin/stats.cgi' % (s[1]), auth=HTTPDigestAuth(s[2], s[3]))
res = json.loads(response.content)
if 'STATS' in res:
stats = res['STATS'][0]
try:
s_result = '%s: %s%s || Temp: %sC | %sC | %sC' % (s[0], stats['rate_avg'],
stats['rate_unit'],
'C, '.join(map(str, stats['chain'][0]['temp_chip'])),
'C, '.join(map(str, stats['chain'][1]['temp_chip'])),
'C, '.join(map(str, stats['chain'][2]['temp_chip']))
)
output(s_result)
except KeyboardInterrupt:
pass
if __name__ == "__main__":
get_asics_info()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment