Skip to content

Instantly share code, notes, and snippets.

View njh's full-sized avatar

Nicholas Humfrey njh

View GitHub Profile
@njh
njh / convert-label-to-mono.sh
Created September 23, 2024 18:58
Shell script to convert 4x6 label from PDF to monochrome PNG on Mac OS
#!/bin/sh
#
# Bash script to convert 4x6 label from PDF to a monochrome PNG on Mac OS
#
# I wrote this because I was unhappy with the print quality, printing
# directly to a Zebra GX420d using the system print drivers (CUPS).
# In particular dithering could stop barcodes from being scanned.
#
# By scaling and converting to monochrome first, I found that the print quality
# was much better.
@njh
njh / mitsubishi-imiev-wican-filters.json
Last active August 16, 2024 20:24
Mitsubishi i-Miev filters for WiCAN
{
"can_flt": [
{
"CANID": 905,
"Name": "ac_volts",
"PID": -1,
"PIDIndex": 1,
"StartBit": 8,
"BitLength": 8,
"Expression": "V",
@njh
njh / format_as_columns.rb
Last active July 24, 2024 00:07
Ruby function to display an array of strings as columns on a text terminal
#!/usr/bin/env ruby
#
# Ruby function to display an array of strings
# as columns on a text terminal.
#
# Author: Nicholas Humfrey
# License: https://unlicense.org/
#
require 'io/console'
@njh
njh / check-for-fttp.rb
Created June 27, 2024 07:10
Ruby script that checks if FTTP is available at an address using the AAISP CHAOS API
#!/usr/bin/env ruby
require 'net/http'
require 'json'
require 'uri'
options = {
new_account: true,
new_line: true,
api: 'fttp-checker',
@njh
njh / meshtastic.rb
Created June 21, 2024 09:02
Homebrew formula for meshtastic CLI
class Meshtastic < Formula
include Language::Python::Virtualenv
desc "Python CLI client for use with Meshtastic devices"
homepage "https://meshtastic.org/"
url "https://files.pythonhosted.org/packages/9c/0b/ba9a21a0580b5da8c7cb67b6a6da5862092dad5eb8be9c942781572b0de7/meshtastic-2.3.11.tar.gz"
sha256 "66d2b71fd0b007cf479763a237aa07043518683e1affe440104c8dbe1676133e"
license "Apache-2.0"
head "https://github.com/meshtastic/python.git", branch: "master"
@njh
njh / check-hsbc-tracker-rate.rb
Created June 4, 2024 12:09
Script to parse the HSBC mortgage rate page
#!/usr/bin/env ruby
#
# Script to parse the HSBC mortgage rate page
# to see if they have chanegd the 2 Year Term Tracker Fee Saver
#
# Subtracts the Bank of England rate from the HSBC advertised rates
#
require 'net/http'
require 'nokogiri'
@njh
njh / start-ipv6-tcp-ppp-server.sh
Last active May 2, 2024 21:09
Start an IPv6-only PPP server, that accepts connections over TCP
#!/bin/bash
#
#
pppd='pppd'
pppd+=' debug'
pppd+=' logfd 2'
pppd+=' nodetach'
pppd+=' noauth'
pppd+=' noip'
@njh
njh / extract-daily-temperature.rb
Created January 18, 2024 09:37
Get one year of historical daily temperatures for a single location from Meteosource
#!/usr/bin/env ruby
require 'date'
require 'json'
today = Date.today
start = today - 365
(start...today).each do |date|
json = File.read("weather/#{date}.json")
data = JSON.parse(json, :symbolize_names => true)
@njh
njh / .gitignore
Created May 3, 2023 22:36
Ruby script to backup the raw data written to Emoncms
*.csv
*.gz
*.bz2
@njh
njh / RS485_Serial_Echo.ino
Created April 8, 2023 22:07
Arduino sketch to receive bytes from Serial Port 1 and print them in hex to the Serial Monitor
/*
This simple sketch receives bytes on the hardware serial port
and echos it to the Arduino Serial Monitor (over USB)
The bytes are printed out as a hexadecimal string
This sketch requires an Arduino that has a separate
serial port for the USB port - such as the Arduino Leonardo
Serial: Serial Monitor (USB)
Serial1: Hardward serial (Pins 0 and 1) connected