Add Adafruit MagTag display of weather data

This commit is contained in:
2024-01-11 16:21:57 -05:00
parent ba5a71a134
commit 843e5c61bc
40 changed files with 20054 additions and 0 deletions

156
MagTag/code.py Normal file
View File

@@ -0,0 +1,156 @@
import alarm
import board
import time
from secrets import secrets
from adafruit_datetime import datetime
from adafruit_magtag.magtag import MagTag
TIME_BETWEEN_REFRESHES = 60 * 15 # Seconds
DATA_SOURCE = "http://172.23.10.3/api/weather/readings/recent?tz=%s" % secrets["timezone"].replace("/", "%2F")
TEMPERATURE_LOCATION = ["temperature"]
HUMIDITY_LOCATION = ["humidity"]
PRESSURE_LOCATION = ["pressure"]
LIGHT_LOCATION = ["lightLevel"]
TIMESTAMP_LOCATION = ["timestamp"]
DISPLAY_WIDTH = 296
DISPLAY_HEIGHT = 128
def temperature_transform(temperatureValue):
return "%d°" % temperatureValue
def humidity_icon_transform(dummyValue):
return "\uf07a"
def humidity_transform(humidityValue):
return "%d%%" % humidityValue
def pressure_icon_transform(dummyValue):
return "\uf079"
def pressure_transform(pressureValue):
return "%.2f\"" % (pressureValue / 3386)
def light_icon_transform(dummyValue):
return "\uf00d"
def light_transform(lightValue):
return "%d lx" % lightValue
def timestamp_transform(timestampValue):
date = datetime.fromisoformat(timestampValue[:19])
return "%04d-%02d-%02d %02d:%02d" % (date.year, date.month, date.day, date.hour, date.minute)
def battery_transform(dummyValue):
return "Battery: %.2fV" % magtag.peripherals.battery
magtag = MagTag(
url=DATA_SOURCE,
json_path=(
TEMPERATURE_LOCATION,
HUMIDITY_LOCATION,
HUMIDITY_LOCATION,
PRESSURE_LOCATION,
PRESSURE_LOCATION,
LIGHT_LOCATION,
LIGHT_LOCATION,
TIMESTAMP_LOCATION,
TIMESTAMP_LOCATION,
),
)
magtag.add_text(
text_font="/fonts/SourceSansPro-Regular-80.bdf",
text_anchor_point=(0.5, 0.5),
text_position=(DISPLAY_WIDTH / 4 + 10, DISPLAY_HEIGHT / 2 - 15),
text_transform=temperature_transform,
)
magtag.add_text(
text_font="/fonts/WeatherIcons-Regular-25.bdf",
text_anchor_point=(0.0, 0.0),
text_position=(DISPLAY_WIDTH / 2 + 20, 10),
text_transform=humidity_icon_transform,
)
magtag.add_text(
text_font="/fonts/Lato-Bold-ltd-25.bdf",
text_anchor_point=(0.0, 0.0),
text_position=(DISPLAY_WIDTH / 2 + 50, 12),
text_transform=humidity_transform,
)
magtag.add_text(
text_font="/fonts/WeatherIcons-Regular-25.bdf",
text_anchor_point=(0.0, 0.0),
text_position=(DISPLAY_WIDTH / 2 + 20, 43),
text_transform=pressure_icon_transform,
)
magtag.add_text(
text_font="/fonts/Lato-Bold-ltd-25.bdf",
text_anchor_point=(0.0, 0.0),
text_position=(DISPLAY_WIDTH / 2 + 50, 43),
text_transform=pressure_transform,
)
magtag.add_text(
text_font="/fonts/WeatherIcons-Regular-25.bdf",
text_anchor_point=(0.0, 0.0),
text_position=(DISPLAY_WIDTH / 2 + 16, 75),
text_transform=light_icon_transform,
)
magtag.add_text(
text_font="/fonts/Lato-Bold-ltd-25.bdf",
text_anchor_point=(0.0, 0.0),
text_position=(DISPLAY_WIDTH / 2 + 50, 75),
text_transform=light_transform,
)
magtag.add_text(
text_position=(4, DISPLAY_HEIGHT - 4),
text_anchor_point=(0.0, 1.0),
text_transform=battery_transform,
)
magtag.add_text(
text_position=(DISPLAY_WIDTH - 4, DISPLAY_HEIGHT - 4),
text_anchor_point=(1.0, 1.0),
text_transform=timestamp_transform,
)
try:
magtag.network.connect()
value = magtag.fetch()
print("Response is", value)
except (ValueError, RuntimeError, ConnectionError, OSError) as e:
print("Some error occurred, retrying! -", e)
# Wait for display to refresh
time.sleep(2)
# Setup timer alarm
time_alarm = alarm.time.TimeAlarm(monotonic_time=time.monotonic() + TIME_BETWEEN_REFRESHES)
# Setup button alarms
magtag.peripherals.buttons[0].deinit()
pin_alarm_a = alarm.pin.PinAlarm(pin=board.BUTTON_A, value=False, pull=True)
# Deep sleep on all alarms
alarm.exit_and_deep_sleep_until_alarms(time_alarm, pin_alarm_a)

6068
MagTag/fonts/Arial-12.bdf Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,817 @@
STARTFONT 2.1
FONT -FontForge-Source Sans Pro-Book-R-Normal-SansPro--80-770-75-75-P-394-ISO10646-1
SIZE 77 75 75
FONTBOUNDINGBOX 62 56 1 -1
COMMENT "Generated by fontforge, http://fontforge.sourceforge.net"
COMMENT "Copyright 2010, 2012, 2014 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'."
STARTPROPERTIES 37
FOUNDRY "FontForge"
FAMILY_NAME "Source Sans Pro"
WEIGHT_NAME "Book"
SLANT "R"
SETWIDTH_NAME "Normal"
ADD_STYLE_NAME "SansPro"
PIXEL_SIZE 80
POINT_SIZE 770
RESOLUTION_X 75
RESOLUTION_Y 75
SPACING "P"
AVERAGE_WIDTH 394
CHARSET_REGISTRY "ISO10646"
CHARSET_ENCODING "1"
FONTNAME_REGISTRY ""
CHARSET_COLLECTIONS "ISO10646-1"
FONT_NAME "SourceSansPro-Regular"
FACE_NAME "Source Sans Pro"
COPYRIGHT "Copyright 2010, 2012, 2014 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'."
FONT_VERSION "2.0"
FONT_ASCENT 60
FONT_DESCENT 20
UNDERLINE_POSITION -8
UNDERLINE_THICKNESS 4
RAW_ASCENT 750
RAW_DESCENT 250
NORM_SPACE 16
RELATIVE_WEIGHT 40
RELATIVE_SETWIDTH 50
SUPERSCRIPT_X 0
SUPERSCRIPT_Y 28
SUPERSCRIPT_SIZE 48
SUBSCRIPT_X 0
SUBSCRIPT_Y 6
SUBSCRIPT_SIZE 48
FIGURE_WIDTH 40
AVG_UPPERCASE_WIDTH 580
ENDPROPERTIES
CHARS 15
STARTCHAR space
ENCODING 32
SWIDTH 200 0
DWIDTH 16 0
BBX 1 1 0 0
BITMAP
00
ENDCHAR
STARTCHAR percent
ENCODING 37
SWIDTH 824 0
DWIDTH 66 0
BBX 60 54 3 -1
BITMAP
00FE0000003C0000
03FF8000007C0000
07FFE00000780000
0FFFF00000F80000
1FC3F00000F00000
3F01F80001F00000
3E00FC0001E00000
7C007C0003E00000
7C007C0003C00000
7C003E0007C00000
F8003E0007800000
F8003E000F800000
F8003E001F000000
F8003E001E000000
F8001F003E000000
F8001F003C000000
F8001F007C000000
F8001F0078000000
F8003F00F8000000
F8003E00F0000000
F8003E01F0000000
F8003E01E007F000
F8003E03E01FFC00
7C003E03C07FFE00
7C007C07C0FFFF00
7E007C0781FC3F80
3E00FC0F01F80FC0
3F01F81F03F007C0
1FC3F01E03E007E0
0FFFF03E07E003E0
07FFE03C07C003E0
03FF807C07C003F0
00FE007807C001F0
000000F807C001F0
000000F00F8001F0
000001F00F8001F0
000001E00F8001F0
000003E00F8001F0
000003C00F8001F0
000007C00F8001F0
00000F800F8001F0
00000F0007C001F0
00001F0007C001F0
00001E0007C003F0
00003E0007C003E0
00003C0007E003E0
00007C0003E007E0
0000780003F007C0
0000F80001F80FC0
0000F00001FC3F80
0001F00000FFFF00
0001E000007FFE00
0003E000001FFC00
0007C0000007F000
ENDCHAR
STARTCHAR hyphen
ENCODING 45
SWIDTH 311 0
DWIDTH 25 0
BBX 19 5 3 18
BITMAP
FFFFE0
FFFFE0
FFFFE0
FFFFE0
FFFFE0
ENDCHAR
STARTCHAR zero
ENCODING 48
SWIDTH 497 0
DWIDTH 40 0
BBX 32 53 4 -1
BITMAP
000FF000
007FFC00
00FFFF00
03FFFF80
03FFFFC0
07FC3FE0
0FF00FF0
1FE007F0
1FC003F8
3F8001F8
3F8001FC
3F0000FC
7F0000FC
7E0000FE
7E00007E
7E00007E
FE00007E
FC00007F
FC00007F
FC00007F
FC00003F
FC00003F
FC00003F
FC00003F
FC00003F
FC00003F
FC00003F
FC00003F
FC00003F
FC00003F
FC00003F
FC00003F
FC00003F
FC00007F
FC00007F
FE00007F
FE00007E
7E00007E
7E00007E
7E0000FE
7F0000FC
3F0000FC
3F8001FC
3F8001F8
1FC003F8
1FE007F0
0FF00FF0
07FC7FE0
03FFFFC0
01FFFF80
00FFFF00
003FFC00
000FF000
ENDCHAR
STARTCHAR one
ENCODING 49
SWIDTH 497 0
DWIDTH 40 0
BBX 29 53 6 -1
BITMAP
0007E000
001FE000
00FFE000
0FFFE000
1FFFE000
1FFFE000
1FFFE000
1FFFE000
000FE000
000FE000
000FE000
000FE000
000FE000
000FE000
000FE000
000FE000
000FE000
000FE000
000FE000
000FE000
000FE000
000FE000
000FE000
000FE000
000FE000
000FE000
000FE000
000FE000
000FE000
000FE000
000FE000
000FE000
000FE000
000FE000
000FE000
000FE000
000FE000
000FE000
000FE000
000FE000
000FE000
000FE000
000FE000
000FE000
000FE000
000FE000
000FE000
000FE000
FFFFFFF8
FFFFFFF8
FFFFFFF8
FFFFFFF8
FFFFFFF8
ENDCHAR
STARTCHAR two
ENCODING 50
SWIDTH 497 0
DWIDTH 40 0
BBX 33 53 3 -1
BITMAP
001FF00000
00FFFE0000
03FFFF0000
07FFFFC000
1FFFFFE000
3FF8FFF000
7FC01FF000
FF0007F800
7E0003F800
7C0001FC00
380001FC00
100000FC00
000000FC00
000000FE00
000000FE00
000000FE00
000000FE00
000000FC00
000000FC00
000000FC00
000001FC00
000001F800
000003F800
000003F800
000007F000
000007F000
00000FE000
00001FE000
00001FC000
00003F8000
00007F8000
0000FF0000
0000FE0000
0001FC0000
0003FC0000
0007F80000
000FF00000
001FE00000
003FC00000
007F800000
00FF800000
01FF000000
01FE000000
03FC000000
07F8000000
0FF0000000
1FE0000000
3FC1FFFF80
7FFFFFFF80
FFFFFFFF80
FFFFFFFF80
FFFFFFFF80
FFFFFFFF80
ENDCHAR
STARTCHAR three
ENCODING 51
SWIDTH 497 0
DWIDTH 40 0
BBX 34 53 2 -1
BITMAP
000FF80000
007FFF0000
01FFFFC000
03FFFFF000
0FFFFFF800
1FFE3FFC00
3FE007FC00
1F8001FE00
0F0000FE00
060000FE00
0400007F00
0000007F00
0000007F00
0000007F00
0000007F00
0000007F00
0000007E00
000000FE00
000000FE00
000001FC00
000003F800
00000FF800
0000FFE000
001FFFC000
001FFF0000
001FFE0000
001FFFC000
001FFFF000
00007FF800
000007FC00
000001FE00
000000FF00
0000007F00
0000003F80
0000003F80
0000001F80
0000001FC0
0000001FC0
0000001FC0
0000001FC0
0000001FC0
0000003F80
1000003F80
3C00007F80
7E00007F00
FF0001FF00
7FE003FE00
3FFF7FFC00
1FFFFFF800
0FFFFFF000
03FFFFE000
00FFFF8000
000FFC0000
ENDCHAR
STARTCHAR four
ENCODING 52
SWIDTH 497 0
DWIDTH 40 0
BBX 37 53 1 -1
BITMAP
000003FC00
000007FC00
000007FC00
00000FFC00
00001FFC00
00001FFC00
00003FFC00
00007EFC00
00007EFC00
0000FCFC00
0001FCFC00
0001F9FC00
0003F1FC00
0007F1FC00
0007E1FC00
000FE1FC00
000FC1FC00
001F81FC00
003F81FC00
003F01FC00
007E01FC00
00FE01FC00
00FC01FC00
01F801FC00
03F801FC00
03F001FC00
07F001FC00
07E001FC00
0FC001FC00
1FC001FC00
1F8001FC00
3F0001FC00
7F0001FC00
7FFFFFFFF8
FFFFFFFFF8
FFFFFFFFF8
FFFFFFFFF8
FFFFFFFFF8
000001FC00
000001FC00
000001FC00
000001FC00
000001FC00
000001FC00
000001FC00
000001FC00
000001FC00
000001FC00
000001FC00
000001FC00
000001FC00
000001FC00
000001FC00
ENDCHAR
STARTCHAR five
ENCODING 53
SWIDTH 497 0
DWIDTH 40 0
BBX 34 53 2 -1
BITMAP
03FFFFFE00
03FFFFFE00
03FFFFFE00
03FFFFFE00
03FFFFFE00
07FFFFFE00
07F0000000
07E0000000
07E0000000
07E0000000
07E0000000
07E0000000
07E0000000
07E0000000
07E0000000
07E0000000
07E0000000
07E0000000
07C0000000
07C3FC0000
0FDFFF8000
0FFFFFE000
0FFFFFF800
0FFFFFFC00
0FF80FFE00
07C003FE00
018000FF00
0000007F00
0000007F80
0000003F80
0000003F80
0000001FC0
0000001FC0
0000001FC0
0000001FC0
0000001FC0
0000001FC0
0000001FC0
0000001FC0
0000001F80
0000003F80
0000003F80
3000007F80
3800007F00
7E0000FF00
FF0001FE00
FFC007FC00
3FFF7FFC00
1FFFFFF800
0FFFFFE000
03FFFFC000
00FFFF0000
001FF80000
ENDCHAR
STARTCHAR six
ENCODING 54
SWIDTH 497 0
DWIDTH 40 0
BBX 33 53 4 -1
BITMAP
0001FE0000
000FFFC000
003FFFF000
007FFFFC00
00FFFFFE00
01FFFFFF00
03FE00FE00
07F8003C00
0FF0001800
0FE0000000
1FC0000000
1F80000000
3F80000000
3F80000000
3F00000000
7F00000000
7E00000000
7E00000000
7E00000000
FE00000000
FE00000000
FC01FC0000
FC0FFF8000
FC3FFFE000
FC7FFFF000
FCFFFFF800
FDFC0FFC00
FFF003FC00
FFC000FE00
FF8000FE00
FF00007F00
FE00007F00
FC00003F00
FC00003F00
FC00003F00
FE00003F80
FE00003F80
7E00003F80
7E00003F00
7F00003F00
3F00003F00
3F00003F00
3F80007F00
1F80007E00
1FC000FE00
0FE001FC00
07F003FC00
07FE0FF800
03FFFFF000
01FFFFE000
007FFFC000
003FFF0000
0007F80000
ENDCHAR
STARTCHAR seven
ENCODING 55
SWIDTH 497 0
DWIDTH 40 0
BBX 32 53 4 -1
BITMAP
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFE
000000FE
000000FC
000001F8
000003F8
000003F0
000007E0
000007E0
00000FC0
00001FC0
00001F80
00003F80
00003F00
00007F00
00007E00
00007E00
0000FC00
0000FC00
0001FC00
0001F800
0001F800
0003F800
0003F000
0003F000
0007F000
0007E000
0007E000
0007E000
000FE000
000FE000
000FC000
000FC000
000FC000
000FC000
001FC000
001FC000
001FC000
001FC000
001FC000
001F8000
001F8000
001F8000
003F8000
003F8000
003F8000
003F8000
003F8000
003F8000
ENDCHAR
STARTCHAR eight
ENCODING 56
SWIDTH 497 0
DWIDTH 40 0
BBX 33 53 3 -1
BITMAP
0007F80000
003FFF0000
00FFFFC000
01FFFFE000
03FFFFF000
07FC07F800
0FF003FC00
0FE000FC00
0FC000FE00
1FC0007E00
1F80007E00
1F80003E00
1F80003F00
1F80003F00
1F80003F00
1F80003E00
1F80003E00
0FC0007E00
0FE0007E00
07F000FC00
07F800FC00
03FE01F800
01FF83F000
00FFE7E000
007FFFC000
007FFF8000
00FFFF8000
03FBFFE000
07F0FFF000
0FC01FF800
1F8007FC00
1F8003FE00
3F0000FF00
7E00007F00
7E00003F80
7E00003F80
FC00001F80
FC00001F80
FC00001F80
FC00001F80
FC00001F80
FE00001F80
7E00001F80
7F00003F80
7F00007F00
3F8000FF00
1FE001FE00
1FF807FE00
0FFFFFFC00
03FFFFF000
01FFFFE000
007FFF8000
000FFC0000
ENDCHAR
STARTCHAR nine
ENCODING 57
SWIDTH 497 0
DWIDTH 40 0
BBX 33 53 3 -1
BITMAP
001FE00000
007FFC0000
01FFFF0000
03FFFF8000
07FFFFC000
0FF83FE000
1FE00FF000
3FC003F800
3F8001F800
7F0001FC00
7F0000FC00
7E0000FE00
7E00007E00
FE00007E00
FC00007F00
FC00003F00
FC00003F00
FC00003F00
FC00003F00
FE00003F80
FE00003F80
7E00003F80
7F00007F80
7F0000FF80
3F8001FF80
3FC007FF80
1FF01FDF80
0FFFFF9F80
07FFFF1F80
03FFFC3F80
00FFF83F80
003FC03F00
0000003F00
0000003F00
0000003F00
0000003F00
0000007E00
0000007E00
0000007E00
000000FE00
000000FC00
000001FC00
000001F800
000003F800
0C0007F000
1E000FF000
3F803FE000
7FFBFFC000
3FFFFF8000
1FFFFF0000
0FFFFC0000
03FFF80000
007FC00000
ENDCHAR
STARTCHAR M
ENCODING 77
SWIDTH 727 0
DWIDTH 58 0
BBX 44 54 7 -1
BITMAP
FF0000000FF0
FF8000001FF0
FF8000001FF0
FF8000001FF0
FFC000003FF0
FFC000003FF0
FFC000003FF0
FFE000007FF0
FBE000007DF0
FBF000007FF0
FDF00000FBF0
FDF00000FBF0
FDF80000FBF0
FCF80001F3F0
FCF80001F3F0
FCFC0001F3F0
FC7C0003E3F0
FC7C0003E3F0
FC7E0007E3F0
FC3E0007C3F0
FC3E0007C3F0
FC3F000FC3F0
FC1F000F83F0
FC1F000F83F0
FC1F801F83F0
FC0F801F03F0
FC0FC01F03F0
FC0FC03F03F0
FC07C03E03F0
FC07E03E03F0
FC07E07E03F0
FC03E07C03F0
FC03F07C03F0
FC01F0F803F0
FC01F0F803F0
FC01F8F803F0
FC00F9F003F0
FC00F9F003F0
FC00FDF003F0
FC007DE003F0
FC007FE003F0
FC007FE003F0
FC003FC003F0
FC003FC003F0
FC003FC003F0
FC001F8003F0
FC001F8003F0
FC000F0003F0
FC00000003F0
FC00000003F0
FC00000003F0
FC00000003F0
FC00000003F0
FC00000003F0
ENDCHAR
STARTCHAR degree
ENCODING 176
SWIDTH 331 0
DWIDTH 26 0
BBX 20 21 3 34
BITMAP
00F000
07FE00
0FFF80
1FFFC0
3F07C0
7C03E0
7801F0
7800F0
F800F0
F000F0
F000F0
F000F0
F000F0
7800F0
7801F0
7C03E0
3F07C0
1FFFC0
0FFF80
07FE00
00F000
ENDCHAR
ENDFONT

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

Binary file not shown.

Binary file not shown.

View File

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
MagTag/lib/neopixel.mpy Normal file

Binary file not shown.

BIN
MagTag/lib/simpleio.mpy Normal file

Binary file not shown.

14
MagTag/secrets.py Normal file
View File

@@ -0,0 +1,14 @@
# SPDX-FileCopyrightText: 2020 Adafruit Industries
#
# SPDX-License-Identifier: Unlicense
# This file is where you keep secret settings, passwords, and tokens!
# If you put them in the code you risk committing that info or sharing it
secrets = {
'ssid' : 'Home',
'password' : '***REMOVED***',
'aio_username' : 'ckaczor',
'aio_key' : '***REMOVED***',
'timezone' : "America/New_York", # http://worldtimeapi.org/timezones
}