feat: agb de février
This commit is contained in:
parent
11aa457273
commit
8ca9a8c889
10 changed files with 61 additions and 168 deletions
|
@ -14,23 +14,11 @@
|
|||
./users.nix
|
||||
];
|
||||
|
||||
nix.settings.substituters = lib.mkForce [];
|
||||
# nix.settings.substituters = lib.mkForce [];
|
||||
|
||||
networking.hostName = "agb01"; # Define your hostname.
|
||||
|
||||
environment.systemPackages = [
|
||||
(pkgs.writeShellApplication {
|
||||
name = "run-gw";
|
||||
runtimeInputs = [
|
||||
pkgs.curl
|
||||
(pkgs.python3.withPackages (ps: [
|
||||
ps.pyjecteur
|
||||
ps.colour
|
||||
ps.requests
|
||||
]))
|
||||
];
|
||||
text = "curl -s -n https://agb.hackens.org/api/sse | python ${./script.py}";
|
||||
})
|
||||
];
|
||||
|
||||
services.openssh.enable = true;
|
||||
|
@ -50,5 +38,5 @@
|
|||
# this value at the release version of the first install of this system.
|
||||
# Before changing this value read the documentation for this option
|
||||
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
||||
system.stateVersion = "unstable"; # Did you read the comment?
|
||||
system.stateVersion = "25.05"; # Did you read the comment?
|
||||
}
|
||||
|
|
|
@ -23,10 +23,9 @@
|
|||
};
|
||||
"10-wifi" = {
|
||||
name = "wlan0";
|
||||
networkConfig.DHCPServer = "yes";
|
||||
address = [
|
||||
"192.168.55.1/24"
|
||||
];
|
||||
DHCP = "yes";
|
||||
networkConfig = {
|
||||
};
|
||||
};
|
||||
};
|
||||
netdevs = {
|
||||
|
@ -65,7 +64,7 @@
|
|||
content = ''
|
||||
chain postrouting {
|
||||
type nat hook postrouting priority 100;
|
||||
ip saddr 192.168.55.0/24 masquerade
|
||||
oifname "wlan0" masquerade;
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
@ -74,25 +73,13 @@
|
|||
firewall.allowedUDPPorts = [ 67 ];
|
||||
};
|
||||
|
||||
services.hostapd = {
|
||||
networking.wireless = {
|
||||
#userControlled.enable = true;
|
||||
enable = true;
|
||||
radios.wlan0 = {
|
||||
# countryCode = "FR";
|
||||
wifi4.enable = false;
|
||||
wifi5.enable = false;
|
||||
channel = 7; # ACS doesn't work
|
||||
networks.wlan0 = {
|
||||
settings = {
|
||||
ieee80211w = 0;
|
||||
wmm_enabled = false;
|
||||
};
|
||||
ssid = "agb - wifi";
|
||||
logLevel = 0;
|
||||
authentication = {
|
||||
mode = "wpa2-sha1";
|
||||
wpaPasswordFile = pkgs.writeText "psk" "azertyuiop"; # TODO : secret
|
||||
};
|
||||
};
|
||||
};
|
||||
networks."WLED-AGB".psk = "lateteatoto";
|
||||
extraConfig = ''
|
||||
country=FR
|
||||
'';
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -1,105 +0,0 @@
|
|||
#!/nix/store/q1p072dnnx7fh7qfcavkmpwn3rgf2xh1-python3-3.12.5-env/bin/python
|
||||
|
||||
import json
|
||||
import logging
|
||||
import sys
|
||||
|
||||
import requests
|
||||
from colour import Color
|
||||
from pyjecteur.fixtures import Blinder, LedBar48Ch, Tradi, Wash, Lyre
|
||||
from pyjecteur.lights import Universe
|
||||
from pyjecteur.widget import Widget
|
||||
|
||||
if False: # True: # True:
|
||||
logging.basicConfig(level=logging.DEBUG)
|
||||
else:
|
||||
logging.basicConfig(level=logging.INFO)
|
||||
|
||||
w = Widget("/dev/ttyUSB0")
|
||||
|
||||
DIM = {
|
||||
"blinder": 0.1,
|
||||
"led_tub": 0.3,
|
||||
"spot": 0.3,
|
||||
}
|
||||
|
||||
u = Universe(w)
|
||||
|
||||
|
||||
def strToProj(s):
|
||||
match s:
|
||||
case "spot":
|
||||
return Tradi()
|
||||
case "led_tub":
|
||||
return LedBar48Ch()
|
||||
case "blinder":
|
||||
return LedBar48Ch()
|
||||
|
||||
|
||||
r = requests.get("https://agb.hackens.org/api-docs/patch.json")
|
||||
patch = r.json()
|
||||
|
||||
lights = {}
|
||||
|
||||
update = {}
|
||||
|
||||
current_addr = 0
|
||||
|
||||
for k, v in patch["lights"].items():
|
||||
lights[k] = strToProj(v["kind"])
|
||||
u.register(lights[k], v["channels"][0]*3)
|
||||
print(v["kind"], v["channels"])
|
||||
# update dmx since some params are set before
|
||||
lights[k].update_dmx()
|
||||
logging.info(
|
||||
f"Light {k} of kind {v['kind']} is at DMX{v['channels'][0]*3+1} (PLS convention)"
|
||||
)
|
||||
for i, chan in enumerate(v["channels"]):
|
||||
update[chan] = (k, i) # put the light name
|
||||
current_addr += lights[k].address_size
|
||||
|
||||
l = Lyre()
|
||||
u.register(l, 489)
|
||||
|
||||
def update_light(address, red, green, blue):
|
||||
if address not in update:
|
||||
return
|
||||
light, chan = update[address]
|
||||
kind = patch["lights"][light]["kind"]
|
||||
r, g, b = red * DIM[kind] / 255, (green * DIM[kind]) / 255, (blue * DIM[kind]) / 255
|
||||
match kind:
|
||||
case "blinder":
|
||||
lights[light].colors[chan] = Color(rgb=(r, g, b))
|
||||
case "led_tub":
|
||||
lights[light].colors[chan] = Color(rgb=(r, g, b))
|
||||
case "spot":
|
||||
lights[light].color = Color(rgb=(r, g, b))
|
||||
|
||||
|
||||
def run():
|
||||
logging.info("Started")
|
||||
bump = False
|
||||
bump_color = None
|
||||
for line in sys.stdin:
|
||||
logging.debug(line)
|
||||
if line.startswith("data:"):
|
||||
dataStr = line[5:]
|
||||
logging.info(f"Received: {dataStr}")
|
||||
data = json.loads(dataStr)
|
||||
if data["type"] == "Color":
|
||||
if data["address"] == 90:
|
||||
|
||||
r, g, b = data["value"]["red"] /255, data["value"]["green"] /255, data["value"]["blue"] /255
|
||||
w.color = Color(rgb = (r, g, b))
|
||||
else:
|
||||
update_light(data["address"], **data["value"])
|
||||
else:
|
||||
l.pan = data["pan"]
|
||||
l.tilt = data["tilt"]
|
||||
l.dimmer = data["focus"]
|
||||
l.color = data["white_button"] *7 + 3
|
||||
|
||||
|
||||
|
||||
|
||||
run()
|
|
@ -1,11 +1,17 @@
|
|||
age-encryption.org/v1
|
||||
-> ssh-ed25519 5rrg4g Q11014nLdGOukZJV5enI4qoAqDrysWAxYtRN7VTSnTA
|
||||
oEK2C8A28KrNh4WNcGGQNB9/3ADNHgGxTzOegL49TT8
|
||||
-> ssh-ed25519 JGx7Ng NH6IB+2tB8fyvE81GF7p8SflY7HH2R3uvx9xC/5HFyQ
|
||||
4x0x1L0wv6+k04ESLIy+qY/RhVCWtOeyETo1FkAK+8A
|
||||
-> ssh-ed25519 kXobKQ 7J0f+l8+/mNQ7q8nW0jcg2LqGDARN1K63IJttdQ7JQw
|
||||
SfFDS4HgjYkp+vGmCwy0c5GIqqWcc4m7mRVQmcsW/pM
|
||||
-> ssh-ed25519 OZDL4Q M3Lztf8lPH4G7a+QPMY32u3UyhcHMoC08ZRV5UE6Gmo
|
||||
Kc7116r+3+xa2qRSe22lctbTd/a133tVZzLkWt0XI6k
|
||||
--- lsOrVi/OJ6AxtmEbB67VKvlFlDnt+sdv1TucqWqGk2w
|
||||
‚õnDÜg4ܲ¯*ßM<C39F>!ÙY¿™‘hA<68>š6‡IÝbFgö{3¢*7d¤¤¦A¬:¼×Ȫ ᓱ½}ÀˆÝ+lu·¨9Þê
|
||||
-> ssh-ed25519 ZIo4kw 1xAL0ZXu3ubwC6HK4dETN1LgtpvNFf9nH/NQQ1+s1AA
|
||||
NQUXZwkejiWJXEImndmxAsL65dKZixXQ3F8Fa5doVC8
|
||||
-> ssh-ed25519 9/PCvA zo5Ct5tIQjFYykwbTRyTHxnLlaCk/oMVLUqYKK6ry24
|
||||
g4ayvGtSZNA/80uhGpxDXeBU8F32sKPVBAWQ2qC/cr0
|
||||
-> ssh-ed25519 JGx7Ng 0ro2us2J17krgJp09P3+ArhZuQMPt6K8SQxGGb91XVc
|
||||
4wrK0+G8LkwitDcZ/WWslENOhv4Mu9JeVPivyuIm9TA
|
||||
-> ssh-ed25519 kXobKQ bwvhd2LjCYYxrtQh5ZR4OgjTi/KlFQMEOOboMv0G5SE
|
||||
U+vrBW9PIpUU9bivT1PWYYT+6bri1oFmrXFQ/D4nBxo
|
||||
-> ssh-ed25519 mrEzvA AB1zH2mbuo2JE9H8mIXdMewxADp2A5udQTPtw2dKTGA
|
||||
97zv5MreXIfFPVvpch41AkLoU/iMxSaHLLhQcq2wkcg
|
||||
-> x[6Bx[-grease +n6t(` ^E,
|
||||
kWd3Ro0LFVRTOV7umHCVJUFGRPfnITYvAG48m1OnrWNSqA2jWEU2VlO+mxixLFyt
|
||||
7ghhls3oKf7ZT7ObwKAP
|
||||
--- T8kROJrmL/+d4npmEtunYpe2tWx22uFh+IwK5v5mQHw
|
||||
峴弁堥<E5BC81>唥A\,H闉)en'卿拏譍B鯛u攃2
|
||||
D臟覐deT砽;铎噰髷S夋暫腵麗艬襼<E889AC>2v<1F>
|
|
@ -66,6 +66,7 @@
|
|||
export JWT_SECRET=$(cat $CREDENTIALS_DIRECTORY/jwt_secret)
|
||||
export BK_FILE="$STATE_DIRECTORY/data.json"
|
||||
export BIND_TCP="10.10.10.1:1235"
|
||||
export WLED_ENDPOINT="http://4.3.2.1/json"
|
||||
export RUST_LOG=debug
|
||||
${pkgs.ragb-backend}/bin/ragb-backend
|
||||
'';
|
||||
|
|
|
@ -22,6 +22,10 @@
|
|||
Destination = "10.10.10.0/24";
|
||||
Scope = "link";
|
||||
}
|
||||
{
|
||||
Gateway = "10.10.10.5";
|
||||
Destination = "4.3.2.0/24";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
|
@ -55,6 +59,7 @@
|
|||
# agb01
|
||||
AllowedIPs = [
|
||||
"10.10.10.5/32"
|
||||
"4.3.2.0/24"
|
||||
];
|
||||
PublicKey = lib.trim (builtins.readFile ../../wg-keys/agb01.pub);
|
||||
}
|
||||
|
|
|
@ -43,6 +43,7 @@ let
|
|||
url = repository.url;
|
||||
rev = revision;
|
||||
# hash = hash;
|
||||
allRefs = true;
|
||||
};
|
||||
|
||||
mkPyPiSource =
|
||||
|
|
|
@ -8,9 +8,9 @@
|
|||
"repo": "agenix"
|
||||
},
|
||||
"branch": "main",
|
||||
"revision": "f6291c5935fdc4e0bef208cfc0dcab7e3f7a1c41",
|
||||
"url": "https://github.com/ryantm/agenix/archive/f6291c5935fdc4e0bef208cfc0dcab7e3f7a1c41.tar.gz",
|
||||
"hash": "1x8nd8hvsq6mvzig122vprwigsr3z2skanig65haqswn7z7amsvg"
|
||||
"revision": "e600439ec4c273cf11e06fe4d9d906fb98fa097c",
|
||||
"url": "https://github.com/ryantm/agenix/archive/e600439ec4c273cf11e06fe4d9d906fb98fa097c.tar.gz",
|
||||
"hash": "006ngydiykjgqs85cl19h9klq8kaqm5zs0ng51dnwy7nzgqxzsdr"
|
||||
},
|
||||
"disko": {
|
||||
"type": "Git",
|
||||
|
@ -20,9 +20,9 @@
|
|||
"repo": "disko"
|
||||
},
|
||||
"branch": "master",
|
||||
"revision": "6c5ba9ec9d470c1ca29e7735762c9c366e28f7f5",
|
||||
"url": "https://github.com/nix-community/disko/archive/6c5ba9ec9d470c1ca29e7735762c9c366e28f7f5.tar.gz",
|
||||
"hash": "0l0qlwv5qxi58crv45xz9rwfz9hbdp99z70j60jri28ic89lfvpd"
|
||||
"revision": "0d8c6ad4a43906d14abd5c60e0ffe7b587b213de",
|
||||
"url": "https://github.com/nix-community/disko/archive/0d8c6ad4a43906d14abd5c60e0ffe7b587b213de.tar.gz",
|
||||
"hash": "0mwnd7vfyd2wqbrvlpjgxng83fp97lg1ihzzx9ipbj5c9l0bjgjm"
|
||||
},
|
||||
"djangonix": {
|
||||
"type": "Git",
|
||||
|
@ -58,9 +58,9 @@
|
|||
"repo": "nixpkgs"
|
||||
},
|
||||
"branch": "nixos-unstable",
|
||||
"revision": "06cf0e1da4208d3766d898b7fdab6513366d45b9",
|
||||
"url": "https://github.com/NixOS/nixpkgs/archive/06cf0e1da4208d3766d898b7fdab6513366d45b9.tar.gz",
|
||||
"hash": "0l68zz8mn2kvp9wvc6rgw7dns8vkl7w9y6z92blvgn1wnm9ib6ab"
|
||||
"revision": "b6eaf97c6960d97350c584de1b6dcff03c9daf42",
|
||||
"url": "https://github.com/NixOS/nixpkgs/archive/b6eaf97c6960d97350c584de1b6dcff03c9daf42.tar.gz",
|
||||
"hash": "0aics7ak6d6gd2fz12yq7hgs2gs8izlpmf6imhbr9amywgk1l72g"
|
||||
},
|
||||
"ragb": {
|
||||
"type": "Git",
|
||||
|
@ -68,10 +68,10 @@
|
|||
"type": "Git",
|
||||
"url": "https://git.dgnum.eu/HackENS/ragb"
|
||||
},
|
||||
"branch": "main",
|
||||
"revision": "ddfbbe50e385db3ffbf1dd1bf7ffb6102c968bf5",
|
||||
"branch": "wled_fork",
|
||||
"revision": "3e5b18677f4e37e8278c43f8fb9066d45dbdaa6e",
|
||||
"url": null,
|
||||
"hash": "00zz65qc1yzxlff65qv6818bhnqdbjnwcz00w34hiz0597ancdx0"
|
||||
"hash": "0isk56kgs8iiap2a5hl3vgy5nvqayayig45vqvn6h1c41clypmqr"
|
||||
}
|
||||
},
|
||||
"version": 3
|
||||
|
|
|
@ -1,13 +1,23 @@
|
|||
{ lib
|
||||
, rustPlatform
|
||||
, src
|
||||
, pkg-config
|
||||
, openssl
|
||||
}:
|
||||
|
||||
rustPlatform.buildRustPackage {
|
||||
pname = "ragb-backend";
|
||||
version = "0.3";
|
||||
version = "0.4";
|
||||
|
||||
src = src + "/backend";
|
||||
|
||||
cargoHash = "sha256-lyYCXjmsm12xYHk30g5PDBpQb10xaB6zpoEi2xpjeiM=";
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
openssl
|
||||
];
|
||||
|
||||
cargoHash = "sha256-Nl/FX9d0DbGWf1U6yo9YWCYxIkQQXzxG8tNLETdZ/jc=";
|
||||
}
|
||||
|
|
|
@ -1 +1 @@
|
|||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO2OaboCujXWTaLuIB6+Elrkf6IzFRJTnSZhaIhjinta
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILVMaMJZ9sNAgrMCOnYWB6FPbvb0+hQleIqCMfAyandl
|
||||
|
|
Loading…
Add table
Reference in a new issue