- Neil Gresham's Climbing Masterclass (32-part series)
- REI's Rock Climbing series (articles) - https://www.rei.com/learn/c/rock-climbing
- Team BMC
- Indoor Climbing - https://www.youtube.com/playlist?list=PLTodUXkQjZwyerKDXT9qrA4bTeQ6aJ3wu
- Sport Climbing - https://www.youtube.com/playlist?list=PLTodUXkQjZww17nrNYQiG0fpiTTZPBpsN
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
import ssl, sys, json, base64 | |
import paho.mqtt.client, msgpack, influxdb_client | |
from influxdb_client import InfluxDBClient, Point | |
from influxdb_client.client.write_api import SYNCHRONOUS | |
ufire_server = "" | |
mqtt_port = 8883 | |
mqtt_username = "" | |
mqtt_password = "" | |
influx_bucket = "" |
On low memory devices like the arduino and esp8266 you do not want strings to be stored in RAM. This occurs by default on these systems. Declare a string const char * xyz = "this is a string"
and it will use up RAM.
The solution on these devices is to allow strings to be stored in read only memory, in Arduino this is the PROGMEM macro. Most of my experience is with the ESP8266 which is a 32bit micros controller. This device stores PROGMEM data in flash. The macro PROGMEM on ESP8266 is simply
#define PROGMEM ICACHE_RODATA_ATTR
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
import os | |
import time | |
import re | |
import subprocess | |
from watchdog.observers import Observer | |
from watchdog.events import FileSystemEventHandler | |
def get_relative_path(path): | |
return os.path.relpath(path) |