Here's some docs on how I connected to OCTOI using a Raspberry Pi, an icE1usb, and my Cisco 2921 voice router.
I contacted LaF0rge from #retronetworking on libera.chat. He asked me to email him at (redacted).
Contact ID, Ademco High Speed, Ademco Express: | |
-dualtone handshake | |
-1400hz acknowledgement | |
-10 digits per second dtmf data | |
Acron, Scancom/Scantronic 4+3+3, FBI Superfast, DSC/SG 4+3: | |
-2300hz handshake | |
-2300hz acknowledgement | |
-10 digits per second dtmf data |
#!/usr/bin/env python3 | |
import secrets | |
import sys | |
letters = [ | |
'abc', | |
'def', | |
'ghi', | |
'jkl', | |
'mno', |
#!/usr/bin/env python3 | |
""" | |
Failover between T-1s for an Adit 600. | |
When called with no arguments, connect to Adit 600 mgmt | |
via Telnet, introspect the current status of both A T-1s, | |
and update connections to PRIMARY/SECONDARY T-1. | |
When called with "snmptrap" as argument, first update the | |
state internally based on the issued alarms, then blindly |
#!/usr/bin/env python | |
# downloads a list of BulkVS phone numbers and writes them out as a CSV to stdout | |
# developed on python3.11, but should work in any modern python3 | |
# before running, install deps: | |
# virtualenv venv | |
# source ./venv/bin/activate | |
# pip install --upgrade aiohttp aiohttp-client-cache | |
# supply env vars with your BULKVS_EMAIL and BULKVS_APIKEY | |
# delete "cache.sqlite" to clear the HTTP cache, otherwise it's indefinite | |
# this takes hours to run, downloads 500MB to 30GB, and makes 30k+ network requests to BulkVS |
#!/usr/bin/python2 | |
import collections | |
import hashlib | |
import json | |
import logging | |
import os | |
import time | |
import websocket |
#!/usr/bin/env python3 | |
# Uses flipper as an IR blaster to drive my Bionaire window fan into the desired state | |
# Also uses my Kasa plug to reset the fan into a known starting state | |
# deps: pip install pyflipper | |
# the remote protocol does on-off keying (i.e. ASK) of an IR carrier | |
# the carrier is a 38 KHz square wave with a 33% duty cycle | |
# (the fan still seems to work with a 50% duty cycle as well) | |
# the signal has a base period time T that I have rounded to 400ms | |
# the following symbols are used: |
#!/usr/bin/python | |
# Get Duke Energy electricity usage information. Needs lxml and requests. Supply info in envvars | |
import os | |
import json | |
import re | |
import datetime | |
import requests | |
import lxml.etree |
#!/usr/bin/python3 | |
# Only requirement: pip install pyusb | |
# Run as root | |
# Might need to detach from the kernel driver? | |
import sys | |
import json | |
import usb.core | |
import usb.util | |
def init(dev): |
#!/usr/bin/python3 | |
import datetime | |
import hashlib | |
import itertools | |
import os | |
import socket | |
from pprint import pprint | |
import dateutil.parser | |
import lxml.etree |