Skip to content

Instantly share code, notes, and snippets.

Evan D. Hoffman evandhoffman

Block or report user

Report or block evandhoffman

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
#!/usr/bin/env python
"""Simple HTTP Server With Upload.
This module builds on BaseHTTPServer by implementing the standard GET
and HEAD requests in a fairly straightforward manner.
View inovelli.txt
evan@lunix /hass/config % grep Node006 OZW_Log.txt
2018-02-26 10:59:17.849 Detail, Node006, Received: 0x01, 0x18, 0x00, 0x04, 0x00, 0x06, 0x12, 0x32, 0x02, 0xa1, 0x6c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b
2018-02-26 11:49:24.528 Detail, Node006, Received: 0x01, 0x18, 0x00, 0x04, 0x00, 0x06, 0x12, 0x32, 0x02, 0xa1, 0x6c, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e
2018-03-01 19:02:28.974 Info, Node006, Network Key Not Set - Secure Option is not required
2018-03-01 19:02:28.976 Info, Node006, Basic device class (0x04) - Routing Slave
2018-03-01 19:02:28.976 Info, Node006, Generic device Class (0x10) - Binary Switch
2018-03-01 19:02:28.976 Info, Node006, Specific device class (0x01) - Binary Power Switch
2018-03-01 19:02:28.976 Info, Node006, COMMAND_CLASS_BASIC will be mapped to COMMAND_CLASS_SWITCH_BINARY
2018-03-01 19:02:28.976 Info, Node006, Mandatory Command Classes for Node 6:
2018-03-01 19:
evandhoffman /
Created Jan 30, 2018
Read a file in and put its contents in a JSON param
import json
import sys
with open(sys.argv[1],"r") as myfile:
myjson = { "filename": sys.argv[1], "contents": data }
print json.dumps(myjson, indent=2)
View core-8f7092d0539f93e721211e2ee881a5f7.js
!function(){"use strict";function e(e,t){function n(s,i,r){var o=new WebSocket(e),a=!1,d=function(){if(a)r(u);else if(0!==s){var e=-1===s?-1:s-1;setTimeout(function(){return n(e,i,r)},1e3)}else r(c)},f=function(e){switch(JSON.parse({case"auth_required":"authToken"in t?o.send(JSON.stringify(function(e){return{type:"auth",api_password:e}}(t.authToken))):(a=!0,o.close());break;case"auth_invalid":a=!0,o.close();break;case"auth_ok":o.removeEventListener("message",f),o.removeEventListener("close",d),i(o)}};o.addEventListener("message",f),o.addEventListener("close",d)}return new Promise(function(e,s){return n(t.setupRetry||0,e,s)})}function t(e){return e.result}function n(t,n){return void 0===n&&(n={}),e(t,n).then(function(e){var s=new a(t,n);return s.setSocket(e),s})}function s(e,t){return e._subscribeConfig?e._subscribeConfig(t):new Promise(function(n,s){var i=null,r=null,o=[],c=null;t&&o.push(t);var u=function(e){i=Object.assign({},i,e);for(var t=0;t<o.length;t++)o[t](i)},a=function(e,t){return u({se
View blerg.log
Jan 15 23:52:40 lunix e83280a5087e[2680]: #033[32m2018-01-15 23:52:40 INFO (MainThread) [homeassistant.core] Bus:Handling <Event state_changed[L]: entity_id=zwave.gumbo, old_state=<state zwave.gumbo=initializing; node_id=2, node_name=gumbo, manufacturer_name=Aeotec, product_name=ZW100 MultiSensor 6, old_entity_id=zwave.gumbo_2, new_entity_id=zwave.gumbo, query_stage=Probe, is_awake=True, is_ready=False, is_failed=False, is_info_received=False, max_baud_rate=40000, is_zwave_plus=True, capabilities={'routing', 'beaming', 'listening'}, sentCnt=2, sentFailed=1, retries=0, receivedCnt=0, receivedDups=0, receivedUnsolicited=0, sentTS=2018-01-15 23:52:32:423 , receivedTS=2018-01-15 23:52:32:374 , lastRequestRTT=0, averageRequestRTT=0, lastResponseRTT=0, averageResponseRTT=0, battery_level=100, wake_up_interval=240, friendly_name=gumbo @ 2018-01-15T23:52:32.483495-05:00>, new_state=<state zwave.gumbo=initializing; node_id=2, node_name=gumbo, manufacturer_name=Aeotec, product_name=ZW100 MultiSensor 6, old_entity_id=zw
evandhoffman / .zshrc
Last active Jan 15, 2018
How to make home & end keys work on zsh (Linux)
View .zshrc
# From here:
# key bindings
bindkey "\e[1~" beginning-of-line
bindkey "\e[4~" end-of-line
bindkey "\e[5~" beginning-of-history
bindkey "\e[6~" end-of-history
bindkey "\e[3~" delete-char
bindkey "\e[2~" quoted-insert
bindkey "\e[5C" forward-word
bindkey "\eOc" emacs-forward-word
View smartctl.txt
root@lunix:~# smartctl -a /dev/sdc
smartctl 6.5 2016-01-24 r4214 [x86_64-linux-4.4.0-62-generic] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke,
Model Family: HGST Deskstar NAS
Device Model: HGST HDN724040ALE640
Serial Number: PK1334PEKxxxxx
LU WWN Device Id: 5 000cca 250f01657
Firmware Version: MJAOA5E0
evandhoffman / smb.conf
Created Feb 9, 2017
smb.conf with ZFS volumes mapped to Previous Versions
View smb.conf
# other stuff here...
shadow: snapdir = .zfs/snapshot
shadow: sort = desc
shadow: format = snap_%Y-%m-%d-%H%M
comment = Files for all
browseable = yes
evandhoffman /
Last active Mar 10, 2018
Ubuntu Nginx Zoneminder php-fpm config

Zoneminder provides instructions for setting up Zoneminder on Ubuntu, but they assume you're using Apache:

I've moved away from Apache for webserving and wanted to see if there was a way to configure Zoneminder to work using Nginx and php-fpm. After a lot of trial and error I got it working. Include the snippet above in your nginx config to get it working at http:///zoneminder/ .

evandhoffman /
Last active Jun 6, 2017
Collectd collection3 nginx config for Ubuntu 14.04


apt-get install libconfig-general-perl libregexp-common-perl collectd collectd-utils lm-sensors \
libcgi-fast-perl librrds-perl libhtml-parser-perl libjson-perl fcgiwrap nginx

Changing collection3 chart size:

You can’t perform that action at this time.