Last active
May 27, 2021 00:36
-
-
Save Kyborg2011/1963343e61732d043ee9b8253fc3f606 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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