Skip to content

Instantly share code, notes, and snippets.

View CrazyCoder's full-sized avatar

Serge Baranov CrazyCoder

View GitHub Profile
@CrazyCoder
CrazyCoder / hex2bin.pl
Created November 23, 2010 10:44
Extracts pl3 and hermes payloads from psgroove hex files (to be used in psfreedom)
#!/usr/bin/perl
use strict;
my $VERSION = '1.0';
my $PL_START = "000000000000FACEB003AABBCCDD";
my $PL3_START ="505347726F6F7665";
my $PL3_END = "1201000200000008AAAABBBB";
my $PL_SIZE = 3822;
my $in;
@CrazyCoder
CrazyCoder / hex2bin.c
Created November 23, 2010 11:24
Extracts pl3 and hermes payloads from psgroove hex files (to be used in psfreedom)
static const char *PL_START = "000000000000FACEB003AABBCCDD";
static const char *PL3_START = "505347726F6F7665";
static const char *PL3_END = "1201000200000008AAAABBBB";
unsigned int PL_SIZE = 3822;
int hex2bin(char *hex_file, char *bin_file) {
FILE *infile, *outfile;
char line[100];
char buffer[50*1024];
char outc = 0;
@CrazyCoder
CrazyCoder / add_files_from_require_paths.patch
Created May 24, 2011 23:50
Patch for Ocra issue #26 (Gem files not detected correctly with recent RubyGems)
Index: bin/ocra
===================================================================
--- bin/ocra (revision 2cb11c915af52197f90abd944d84219305d8c602)
+++ bin/ocra (revision )
@@ -181,7 +181,7 @@
IGNORE_GEMFILES = %r{(
# Auxiliary files in the root of the gem
- ^(\.\/)?(History|Install|Manifest|README|Licen[sc]e|Contributors|ChangeLog|BSD|GPL).*$ |
+ ^(\.\/)?(History|Install|Manifest|README|CHANGES|Licen[sc]e|Contributors|ChangeLog|BSD|GPL).*$ |
#include <gtk/gtk.h>
#include <glib.h>
#include <glib/gprintf.h>
void map_cb(GtkWidget *widget, gpointer data)
{
gtk_window_set_keep_above(GTK_WINDOW(widget), TRUE);
g_print("gtk fullscreen window active\n");
FILE *fp = fopen("/var/tmp/crfswin.running", "w");
fclose(fp);
# 1. Open https://link.springer.com/search/page/1?facet-content-type=%22Book%22&package=mat-covid19_textbooks
# 2. Click on the button on the top right of the table to save results into CSV file (SearchResults.csv)
# 3. Run: python springer.py SearchResults.csv
# Note: Python 3 is needed, `pip install requests` if the module is missing
import sys
import csv
import requests
from pathlib import Path
from os import path
local logger = require("logger")
local Device = require("device")
Device.input.rotation_map = nil
logger.info("Hardware button rotation disabled by user patch")
@CrazyCoder
CrazyCoder / zigbee2mqtt_aqara_wireless_switch.yaml
Last active December 9, 2022 19:14 — forked from rhl2401/zigbee2mqtt_aqara_wireless_switch.yaml
Aqara Wireless Switch (single, double, hold, release)
blueprint:
name: Aqara Wireless Switch (single, double, hold, release)
description: 'Control anything using Aqara Wireless Switch.
Customizable actions for each press.
This version of the blueprint is for buttons supporting single, double, hold and
release actions. '
domain: automation
@CrazyCoder
CrazyCoder / zigbee2mqtt_hue_dimmer_v2.yaml
Last active October 13, 2024 11:20
Philips Hue Dimmer switch v2 (Zigbee2MQTT)
blueprint:
name: Philips Hue Dimmer switch v2 (Zigbee2MQTT)
description:
"Tested with Philips Hue Smart Wireless Dimmer Switch V2 (929002398602).
\n\n
To have different actions on short press and on hold (long press), use 'button release' (`*_press_release`) and 'button hold once' (`*_hold_once`) commands,
as 'press' (`*_press`) will always trigger before 'button hold' (`*_hold`).
\n\n
When you hold a button, 'button hold' (`*_hold`) command is repeated roughly once per second. This may not work as desired with actions like toggling light/switch.
If you want an action to run only once when the button hold action is registered, use 'button hold once' (`*_hold_once`). It's better than using 'button hold release'
@CrazyCoder
CrazyCoder / zigbee2mqtt_sengled_light_switch.yaml
Last active February 18, 2024 10:42
Sengled light switch (Zigbee2MQTT)
blueprint:
name: Sengled light switch (Zigbee2MQTT)
description: 'Control anything using Sengled E1E-G7F smart light switch / dimmer.
Customizable actions for each press.
Supported actions: on, on_double, on_long, up, up_long, down, down_long, off, off_double, off_long.
Note: up/down actions always trigger before up_long/down_long. This is not the case for on/off actions.
'