vccs
Vue 3용 차트 컴포넌트 모음, Recharts에서 포팅
모든 감지는 실시간 ADS‑B와 대조해 놓친 항공기와 포착된 항공기를 지도에 표시합니다. 기존 카메라에 센서를 연결해 사용합니다
Every detection is checked against live ADS-B, so the map shows the aircraft that were missed as well as the ones that were heard. Run a sensor on a camera you already own.
데이터JavaScript · PythonGitHub @MrUnluckyy온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Security cameras as acoustic sensors for aircraft and drones, with ADS-B as ground truth.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Security cameras already have microphones. SkyEar listens to them, and matches
what it hears against live aircraft positions — so every detection checks
itself. The first use case is aircraft around Vilnius airport, because ADS-B
labels them for free. The intended one is drones.README 전문 보기 ↗Live: skyear.lt
Security cameras already have microphones. SkyEar listens to them, and matches what it hears against live aircraft positions — so every detection checks itself. The first use case is aircraft around Vilnius airport, because ADS-B labels them for free. The intended one is drones.
camera microphone ──► agent (your network) ──► events ──► map
│ ▲
└── ADS-B ─────────────┘
ground truth
Early, and measured rather than claimed. A single sensor near Vilnius hears a minority of the aircraft that pass it, and wind regularly produces sounds loud enough to be mistaken for one. The map publishes the detection rate next to the share of time background noise is present, so a result can be judged rather than trusted.
The most useful thing a sensor produces right now is honest negatives: every aircraft that passes and is not heard is recorded too. That is what establishes the real range of the method, and it is what a classifier will be trained on.
agent/ Python edge agent. Runs in Docker on a NAS or Raspberry Pi.
web/ Next.js map and setup guide.
supabase/ Postgres schema, row-level security, Edge Functions.
Follow the setup guide — it asks where you are installing and shows only the steps for that. Nothing below is needed if you use it.
No account is required to try this. The agent installs and tests your camera on its own; you only sign in when you want the sensor on the map.
Add-on repository, separate so the Supervisor can read it:
https://github.com/MrUnluckyy/skyear-hassio
Settings → Add-ons → Add-on Store → ⋮ → Repositories → paste → Add. Refresh, install SkyEar, start it, and open the panel that appears in the sidebar. Ingress means there is no port to open and no address to find. Needs a 64-bit system: there is no 32-bit ARM build, because numpy publishes no wheel for it.
docker run -d --name skyear --restart unless-stopped --pull always \
-p 8088:8088 -v skyear-data:/data ghcr.io/mrunluckyy/skyear-agent:latest
Then open http://THAT-MACHINE:8088 and fill in one form: camera make, address,
password, position, and a pairing code from /devices when you want to connect.
The image is published for linux/amd64 and linux/arm64, so the same tag runs
on a Synology, a Raspberry Pi 4 or 5, and an Intel box.
Your camera's address and password are written only to that machine. There is no field anywhere on the website that asks for them.
Once a camera is saved, changing it is limited to the browser that saved it, so
an open port on your network is not an open agent. The agent prints a setup
token at startup (docker logs skyear) to unlock another browser, as
?t=<token>. The Home Assistant add-on publishes no port and needs no token:
the panel is reachable only through Home Assistant, which has already signed
you in.
There is a config.yaml, and you do not need it. The setup page writes
everything into the agent's data directory instead, which is why the guide never
mentions it. It remains supported for unattended installs:
cp agent/config.example.yaml agent/config.yaml # camera, position, height
cp agent/.env.example agent/.env # camera password lives here only
docker compose run --rm skyear --check # camera audio + ADS-B reachability
docker compose run --rm skyear --pair YOURCODE
docker compose up -d
Add them on the same setup page — a camera bar appears above the form once the first camera is saved. The agent tells the server which cameras it has on every upload, so a new one registers itself; restart the agent after adding it so it starts listening.
Sent: when a sound started and how long it lasted, how loud it was against the background, its frequency shape, which aircraft matched it, and a sensor position rounded to about 110 metres.
Never sent: your camera's address, username or password; video; audio recordings unless you opt in; your exact coordinates.
This is architectural rather than a promise. The agent runs inside your network and pushes events out; nothing reaches in. No part of the site asks for a camera address, because the servers could not use one — they cannot route to a private address, and a credential store an operator can decrypt is worth attacking.
The privacy rules live in the database, not the interface: exact sensor coordinates are readable only by their owner, the public view snaps them to a ~1 km grid, and drone detections are withheld for 30 minutes with their match details stripped.
cd agent
python3 -m venv .venv
.venv/bin/python -m pip install -r requirements-dev.txt
.venv/bin/python -m pytest # 187 tests
.venv/bin/python -m skyear.main --config config.yaml --data ./out --replay rec.wav
cd web
cp .env.example .env.local
npm install && npm run dev
The agent needs Python 3.10+ syntax but carries from __future__ import annotations, so a 3.9 environment works too — which matters, because NAS boxes
ship old Pythons. CI runs the suite on both.
Speech detection before any clip upload, a local web UI for camera onboarding, temperature correction for the speed of sound, and trajectory estimation from multiple sensors — which needs timestamps better than the current ~0.5–2 s RTSP latency.
SkyEar does not send alerts, and will not until the Fire and Rescue Department and the military have had a say in how that should work.
Apache 2.0.