Building
Zero
ZeroWatch
weather-dashboard
Fauna
TileMapTool
Planned Community
Planned Community

rpjios

An Accidental Data Platform
(and some other stuff)
Loading current weather data...
as of right now!

Abstract

What started as a simple hobby project has proven flexible & stable enough to continually enable the addition of many bits & bobs, accidentally creating an end-to-end platform of sorts. The aim here is to capture all those bits in one place & discuss them more thoroughly.
The primary "data bus" is redis pub/sub while implementation languages vary depending on the platform & requirements. Both Raspberry Pi and Arduino devices feature significantly, and in the fully-deployed system under discussion rely on the Bosch BME280 for T/H/P sensing & the Sensirion SPS30 for particulate matter (air quality) sensing.

The Bits & Bobs

(arranged roughly in order of where each appears in the pipeline, from sources to sinks; maturity varies widely)

RPJiOS

A sensor management & data collection/emission suite for Raspberry Pi devices written in Python 2.7 that acts as the primary data source for the platform. The namesake of the system and this site, it is a portmanteau of my initials (RPJ), "RPI" and "OS".

spheremon

Azure Sphere-based pipeline monitoring devices that inspired the creation of & consume YARL (below).

YARL

Yet Another Redis Library, this one in POSIX-compliant C.

ZeroWatch

Arduino live data display devices that inspired the creation of & consume Arduino-Redis (below).

Arduino-Redis

A Redis client library for Arduino devices written in C++11.

rhp

A rudimentary Redis-to-HTTP proxy, written in Go, that enables the Weather Dashboard (below).

weather-dashboard

A live dashboard of weather & air quality data built with vanilla Javascript/HTML/CSS (and a bit of help from Plotly). Features user-configurable plots with both historic and live data.

Air-quality index dashboard

Enabled by ThinkSpeak and the powerful MatLab integration within, this dashboard features a live air-quality index value based on data from the pipeline, as defined by the US EPA. The MatLab source is available here.

And now... for something a bit different

("games" & gamedev-related things)

fauna

A game (of sorts) that became an unintended but welcome respite during the COVID-19 quarantine(s). Not yet compelete & and unlikely to ever be, it has been a thouroughly enjoyable endeavour nonetheless.

Infinite Fauna

The video development log for the next iteration of Fauna: to be the infinite-world "massively"-multiplayer game I always intended the first version to be. Already playable and has been by family members & friends, but development is progressing at a truly glacial pace. Expected public release: sometime in the next decade.

2d sparse bitmaps library

Created for Fauna, this library for node.js is published in the hope that may help other developers who face similar challenges.

TileMapTool

Created to assit in development of Planned Community, TileMapTool is a single-file, no-dependency, offline-capable tool for exploring, annotating & exporting tilemaps (a.k.a spritesheets). Source is available here.

Planned Community

An attempt to distill the city simulation game down to its essence, in a single-file browser-based package. Still being actively developed. Source is available here.

Grab Bag

(projects I hope are
useful, but categorically
have no home)

hlte

An open, simple, self-hosted web highliter & annotator with full-featured browser extensions for Chrome & Firefox.

A Window Into

A tiny window into my internet life, showcasing the last image I saved with hlte.

SDDP

The Simple Device Drawing Protocol defines and implements a protocol allowing decoupling of logic from "display". Includes the protocol document, an Arduino display vendor implementation, a JavaScript (node) consumer library & a time-series trend display application that consumes said library.

0l0.lol

A Spring '83 server running my JavaScript implementation of this incredibly-inspiring, nostalgic & surprisingly-creative procotol. A huge thanks to Robin for bringing this wonderful thing to life.