Skip to content

Instantly share code, notes, and snippets.


Matthew Macdonald-Wallace proffalken

View GitHub Profile
View OctoprintDriver.groovy
metadata {
definition (name: "OctoPrint", namespace: "OctoPrint", author: "MC", importUrl: "") {
capability "Initialize"
capability "Switch"
capability "PresenceSensor"
attribute "state", "enum", ["Operational", "Printing", "Pausing","Paused", "Cancelling", "Error", "Offline"]
attribute "completion", "string"
attribute "printTimeLeft", "string"
View whitelist.txt
View Error Message
Parsing recipes...done.
Parsing of 2161 .bb files complete (0 cached, 2161 parsed). 3128 targets, 152 skipped, 0 masked, 0 errors.
WARNING: No bb files matched BBFILE_PATTERN_meta-telegraf '^/media/yocto/jenkins/jenkins-meta/jenkins-meta/workspace/eway-os_feature_install_telegraf/lora-gateway-os/build/../../mbc-layers/meta-telegraf/'
NOTE: Resolving any missing task queue dependencies
proffalken / Makefile
Created Mar 28, 2019
Platformio Makefile
View Makefile
# Uncomment lines below if you have problems with $PATH
#SHELL := /bin/bash
#PATH := /usr/local/bin:$(PATH)
platformio -f run
platformio -f run --target upload

Five things your organisation can do to improve Collaborative Working

Collaborative working can be hard to get right, here's our top 5 tips to encourage a culture of success.

Building multi-discipinary teams is a great way to get the best out of your staff

“Collaborative Working is hard“. We’ve heard this from so many of our clients over the years, and often they really struggle with the conflict between [Generalism vs. Specialism][1], and even how to start working in a collaborative manner.

If you go into hospital for a major operation you wouldn’t expect the ward receptionist to administer the anaesthetic, nor would you expect a nurse to carry out the procedure, or the surgeon to perform post-operative care – so why do we expect so many of our software engineers to be “full stack developers”, or our operations teams to have a complete understanding of everything that happens in the process before our product reaches them?

Start by analysing your prod

proffalken /
Last active Mar 13, 2019
OTA using MQTT

OTA Firmware Updates for ESP-based devices using MQTT

Use the above as a template for your code.

The device will register with the MQTT server on startup under the topic devices/state/<device_type>/<device_mac> with a device type and a client id.

Use these values to publish JSON with the content {"update_available": 1} to devices/control/<device_type>/<device_mac> when you want to update the firmware.

The firmware should be stored on a webserver under /devices/<device_type>/firmware.bin - this needs work as it means you can only store/deploy a single version of firmware at any given time.

proffalken /
Created Feb 27, 2019
Monitoring LoRa Gateway Bridge with DataDog

Monitoring LoRa Gateway Bridge using DataDog

  • Install the DataDog Agent following the instructions on the DataDog website
  • Update the lora-gateway-bridge configuration file with the lines on this gist
  • Create /etc/datadog-agent/conf.d/prometheus.d/conf.yaml with the content from this gist
  • Restart the lora-gateway-bridge and datadog-agent services
  • Check that the metrics are being collected by running datadog-agent check prometheus
View HeltecGPS.ino
#include <lmic.h>
#include <hal/hal.h>
#include <SPI.h>
#include <U8x8lib.h>
#include <CayenneLPP.h>
#include "TinyGPS++.h"
#include <HardwareSerial.h>
#define BUILTIN_LED 25
View HeltecLoRaMonitoringNode.ino
#include <lmic.h>
#include <hal/hal.h>
#include <SPI.h>
#include <U8x8lib.h>
#define BUILTIN_LED 25
// the OLED used
U8X8_SSD1306_128X64_NONAME_SW_I2C u8x8(/* clock=*/ 15, /* data=*/ 4, /* reset=*/ 16);
View CarDoorMount.scad
// Rotate the entire assembly for printing
rotate([90,0,0]) {
// Create the main beam and cut a cylinder that's
// wide enough for the SMA connector to pass through
// Main beam, 90x15x5mm
// Hole for SMA connector, radius of 5mm,
// smooth the edges by a factor of 200,