Skip to content

Instantly share code, notes, and snippets.

@flaviut
flaviut / Setting up Emporia Vue 2 with ESPHome.md
Last active Aug 10, 2022
Setting up Emporia Vue 2 with ESPHome
View Setting up Emporia Vue 2 with ESPHome.md

Setting up Emporia Vue 2 whole-home power monitor with ESPHome

Changelog
  • 2022-07-30: add home assistant instructions & MQTT FAQ.
  • 2022-07-16: mention using UART adaptor's RTS pin, thanks to @PanicRide
  • 2022-07-02: mention mqtt is now supported
  • 2022-04-30: bump software version number to 2022.4.0
  • 2022-05-04: mention 64-bit ARM issues in FAQ
View parse_hrmonitor.py
import sys
import datetime
"""
Dumps the data from a bluetooth-connected PC-60FW fingertip oximeter to a CSV
on stdout.
# Getting started
Make sure you have CMake, gcc, and python 3.7+ installed.
View Interrupts in standard C++.md

Interrupts in standard C++

Jul 23, 2018

by Mikael Rosbacke

Introduction

@flaviut
flaviut / console.log
Created Sep 15, 2021
uses of settings.get in octoprint plugins
View console.log
$ comby -ripgrep '-g*.py' -match-only ':[~_?]settings:[~[()]*].get:[~_?([iI]nt|[fF]loat|[bB]oolean)?](:[_])' ''
OctoPrint-TheSpaghettiDetective-master/octoprint_thespaghettidetective/plugin_apis.py:48:_settings.get(["auth_token"])
OctoPrint-TheSpaghettiDetective-master/octoprint_thespaghettidetective/plugin_apis.py:49:_settings.get(["sentry_opt"])
OctoPrint-TheSpaghettiDetective-master/octoprint_thespaghettidetective/plugin_apis.py:58:_settings.get(["sentry_opt"])
OctoPrint-TheSpaghettiDetective-master/octoprint_thespaghettidetective/janus.py:53:_settings.get(["auth_token"])
OctoPrint-TheSpaghettiDetective-master/octoprint_thespaghettidetective/janus.py:56:_settings.get(["disable_video_streaming"])
Octoprint-Filament-Revolutions-master/octoprint_filamentrevolutions/__init__.py:40:_settings.get(["runout_pin"])
Octoprint-Filament-Revolutions-master/octoprint_filamentrevolutions/__init__.py:44:_settings.get(["jam_pin"])
Octoprint-Filament-Revolutions-master/octoprint_filamentrevolutions/__init__.py:48:_settings.
View gist:fc30f2697cb3ed94ecf6d593d634f432
Sep 27 14:34:07 tight-seat kernel: Fixing recursive fault but reboot is needed!
Sep 27 14:34:07 tight-seat kernel: CR2: 00007f98264ad0a0 CR3: 00000007f340a000 CR4: 00000000003406e0
Sep 27 14:34:07 tight-seat kernel: CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
Sep 27 14:34:07 tight-seat kernel: FS: 00007f9825772400(0000) GS:ffffa0947efc0000(0000) knlGS:0000000000000000
Sep 27 14:34:07 tight-seat kernel: R13: 0000000000000024 R14: 00000000ffffffff R15: ffffa0947b807640
Sep 27 14:34:07 tight-seat kernel: R10: 0000000000000018 R11: 0000000000000018 R12: 651927072fe29674
Sep 27 14:34:07 tight-seat kernel: RBP: 0000000000000dc0 R08: ffffa0947b807640 R09: ffffa08eaed0cd3c
Sep 27 14:34:07 tight-seat kernel: RDX: 0000000054211e0f RSI: 0000000054211e0f RDI: 00000000000310a0
Sep 27 14:34:07 tight-seat kernel: RAX: 651927072fe29694 RBX: 0000000000000000 RCX: 00000000000310a0
Sep 27 14:34:07 tight-seat kernel: RSP: 0018:ffffb4fe0c4bbbb8 EFLAGS: 00010202
View sockJsWebsocket.ts
// generates a websocket for a sockjs endpoint, as defined in
// https://sockjs.github.io/sockjs-protocol/sockjs-protocol-0.3.3.html
//
// This websocket works just like a regular websocket, and is compatible with
// stompjs.
//
// `onmessage` and `send()` are modified to transparently handle converting to and
// from sockjs messages
//
// (c) 2020, Flaviu Tamas
View build-arm-pypy.sh
export CHROOT_DIR=/home/user/tmp/armhf-linux
mkdir -p "$CHROOT_DIR/usr/bin"
sudo cp /usr/bin/qemu-arm-static "$CHROOT_DIR/usr/bin"
sudo debootstrap --arch=armhf stable "$CHROOT_DIR" http://mirror.us.leaseweb.net/debian
sudo mount --bind /dev "$CHROOT_DIR/dev"
sudo mount --bind /sys "$CHROOT_DIR/sys"
sudo mount --bind /proc "$CHROOT_DIR/proc"
sudo chroot "$CHROOT_DIR"
export HOME=/root LC_ALL=C LANG=C.UTF-8 TERM=xterm-256color
View hid description
$ sudo usbhid-dump -s1:17 | grep -v : | xxd -r -p | hidrd-convert -o spec
Usage Page (FF00h), ; FF00h, vendor-defined
Usage (01h),
Collection (Application),
Report ID (16),
Report Count (6),
Report Size (8),
Logical Minimum (0),
Logical Maximum (255),
Usage (01h),
View wordid.py
import random
from pystrich.datamatrix import DataMatrixEncoder
ADJECTIVES = [
"used", "every", "large", "popular", "able", "basic", "known", "various",
"several", "united", "hot", "useful", "mental", "scared", "old", "similar",
"healthy", "medical", "federal", "entire", "strong", "actual", "poor",
"happy", "cute", "helpful", "recent", "willing", "nice", "serious", "huge",
"rare", "typical", "aware", "global", "legal", "capable", "foreign",
View Animate.d.ts
declare module 'preact-fluid/Animate' {
import { Component } from 'preact'
export type AnimateProps = {
component: JSX.Element;
animation?: {
active?: boolean;
duration?: number;
timingFunction?: string;
delay?: string;