Compare commits
	
		
			5 Commits
		
	
	
		
			38610ea6ba
			...
			9718807fb7
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 9718807fb7 | |||
| fd4bc64587 | |||
| 4ac47db102 | |||
| 8b4357c5fc | |||
| 49c043f6d6 | 
							
								
								
									
										59
									
								
								protoboard.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								protoboard.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,59 @@ | ||||
| #!/usr/bin/env python | ||||
| # -*- coding: utf-8 -*- | ||||
|  | ||||
| from vestactrl import setup_digits, board_init_uart | ||||
| import textwrap | ||||
| import urllib2 | ||||
| import json | ||||
| import time | ||||
|  | ||||
| def send_sign(text): | ||||
|     """ | ||||
|     Wraps and sends text to the Vestaboard. | ||||
|     """ | ||||
|     COLS = 22 | ||||
|     ROWS = 6 | ||||
|  | ||||
|     # Wrap text to fit the board's width. | ||||
|     lines = textwrap.wrap(text, width=COLS) | ||||
|  | ||||
|     # Truncate if the message is too long for the board's height. | ||||
|     if len(lines) > ROWS: | ||||
|         lines = lines[:ROWS] | ||||
|  | ||||
|     # The board controller expects spaces to be replaced with `0 for a blank character. | ||||
|     board_lines = [line.replace(' ', '`0') for line in lines] | ||||
|  | ||||
|     # setup_digits handles displaying the lines on the board. | ||||
|     # It will also vertically center the block of text. | ||||
|     setup_digits(board_lines, left_to_right_swap=False, real_hw=True) | ||||
|  | ||||
|  | ||||
| def poll_and_display(): | ||||
|     """ | ||||
|     Polls the Protospace API and displays the sign message. | ||||
|     """ | ||||
|     last_message = "" | ||||
|     url = 'https://api.my.protospace.ca/stats/' | ||||
|  | ||||
|     while True: | ||||
|         try: | ||||
|             response = urllib2.urlopen(url) | ||||
|             data = json.load(response) | ||||
|             message = data.get('sign') | ||||
|  | ||||
|             if message and message != last_message: | ||||
|                 print "Updating sign with new message: " + message | ||||
|                 send_sign(message.encode('utf-8')) | ||||
|                 last_message = message | ||||
|  | ||||
|         except (urllib2.URLError, ValueError, KeyError) as e: | ||||
|             print "Error: {}".format(e) | ||||
|  | ||||
|         time.sleep(5) | ||||
|  | ||||
|  | ||||
| if __name__ == '__main__': | ||||
|     # Initialize communication with the board. | ||||
|     board_init_uart() | ||||
|     poll_and_display() | ||||
		Reference in New Issue
	
	Block a user