Current collected state Current
Observed since 20 Oct, 18:14 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
.. figure:: ./docs/ackack.jpg
:width: 200px
(Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 License, Author Wonder Waffle https://www.deviantart.com/wonder-waffle/art/ACK-ACK-Mars-Attacks-359710975 )
|pypi| |release| |downloads| |python_versions| |pypi_versions| |actions|
.. |pypi| image:: https://img.shields.io/pypi/l/ackack
.. |release| image:: https://img.shields.io/librariesio/release/pypi/ackack
.. |downloads| image:: https://img.shields.io/pypi/dm/ackack
.. |python_versions| image:: https://img.shields.io/pypi/pyversions/ackack
.. |pypi_versions| image:: https://img.shields.io/pypi/v/ackack
.. |actions| image:: https://github.com/XayOn/ackack/workflows/CI%20commit/badge.svg
:target: https://github.com/XayOn/ackack/actions
**Have fun with your vaccuum robot!**
AckAck is a simple control API to manually controll weback vacuum robots.
Paired with its web interface, and a RTPS (in my case, I'm using an old yi ants
camera with `yi-hack <https://github.com/fritz-smh/yi-hack>`_)
This way you can remotely-scare your cats!
.. image:: ./docs/screenshot.png
Keys
----
Use your arrow keys to move the robot left, right, go front or turn backwards.
Enter will start cleaning and backspace will stop.
Environment variables
---------------------
You'll need to setup your weback username and password.
Usually, this will be your phone + the password you use on the control app.
Besides that, only RTSP_URL is required.
=============== =====================================
KEY Description
=============== =====================================
RTSP_URL Yi camera's RTSP stream URL
WEBACK_USERNAME Your weback's username (phone number)
WEBACK_PASSWORD Your weback's password
BASE_URL Base URL, for reverse proxies
=============== =====================================
Installation
------------
Docker
++++++
With docker, just setup the specified env vars and launch the image.
You can use the following docker-compose.yml example.
Setting base_url is useful in reverse proxy scenarios (like traefik).
.. code:: yaml
version: "3.3"
services:
ackack:
image: XayOn/ackack
restart: unless-stopped
ports:
- 8080:8080
environment:
RTSP_URL: http://192.168.1...
WEBACK_USERNAME: +33-123123123
WEBACK_PASSWORD: yourpassword
BASE_URL: /ackack
Manual setup
++++++++++++
Install the project, set your environment variables, launch ffmpeg to create a
m3u8 file in static/playlist.m3u8 from your rtsp.
Requires ffmpeg. Check your distro's instructions on how to install ffmpeg
You can checkout docker-entrypoint.sh and use its ffmpeg command
.. code:: bash
pip install ackack
WEBACK_USERNAME="+34-XXXX" WEBACK_PASSWORD="XXXX" poetry run uvicorn ackack:app
How does it work?
-----------------
Ackack is simply an API for movement commands on python's `weback unofficial
library <https://github.com/opravdin/weback-unofficial>`_, with an interface in
plain html + js (with just videojs, minimal), paired with an ffmpeg command
that converts the rtsp output of the yi camera to a format playable by your
browser.
pypistats · 42 observations shown. Missing days are unknown. Source category: overall: without mirrors.
| Date / source period | Value | Observed at |
|---|---|---|
| 2026-10-17 – 2026-10-17 | 1 | 2026-10-20T21:41:58.1423802Z |
| 2026-10-13 – 2026-10-13 | 2 | 2026-10-20T21:41:58.1423802Z |
| 2026-10-09 – 2026-10-09 | 1 | 2026-10-20T21:41:58.1423802Z |
| 2026-10-08 – 2026-10-08 | 4 | 2026-10-20T21:41:58.1423802Z |
| 2026-10-06 – 2026-10-06 | 2 | 2026-10-20T21:41:58.1423802Z |
| 2026-10-03 – 2026-10-03 | 1 | 2026-10-20T21:41:58.1423802Z |
| 2026-10-02 – 2026-10-02 | 1 | 2026-10-20T21:41:58.1423802Z |
| 2026-10-01 – 2026-10-01 | 1 | 2026-10-20T21:41:58.1423802Z |
| 2026-09-30 – 2026-09-30 | 3 | 2026-10-20T21:41:58.1423802Z |
| 2026-09-28 – 2026-09-28 | 1 | 2026-10-20T21:41:58.1423802Z |
| 2026-09-27 – 2026-09-27 | 2 | 2026-10-20T21:41:58.1423802Z |
| 2026-09-26 – 2026-09-26 | 1 | 2026-10-20T21:41:58.1423802Z |
| 2026-09-24 – 2026-09-24 | 1 | 2026-10-20T21:41:58.1423802Z |
| 2026-09-21 – 2026-09-21 | 1 | 2026-10-20T21:41:58.1423802Z |
| 2026-09-17 – 2026-09-17 | 1 | 2026-10-20T21:41:58.1423802Z |
| 2026-09-12 – 2026-09-12 | 1 | 2026-10-20T21:41:58.1423802Z |
| 2026-09-10 – 2026-09-10 | 1 | 2026-10-20T21:41:58.1423802Z |
| 2026-09-09 – 2026-09-09 | 2 | 2026-10-20T21:41:58.1423802Z |
| 2026-09-07 – 2026-09-07 | 1 | 2026-10-20T21:41:58.1423802Z |
| 2026-09-06 – 2026-09-06 | 2 | 2026-10-20T21:41:58.1423802Z |
| 2026-09-03 – 2026-09-03 | 1 | 2026-10-20T21:41:58.1423802Z |
| 2026-09-01 – 2026-09-01 | 1 | 2026-10-20T21:41:58.1423802Z |
| 2026-08-31 – 2026-08-31 | 2 | 2026-10-20T21:41:58.1423802Z |
| 2026-08-24 – 2026-08-24 | 8 | 2026-10-20T21:41:58.1423802Z |
| 2026-08-23 – 2026-08-23 | 4 | 2026-10-20T21:41:58.1423802Z |
| 2026-08-22 – 2026-08-22 | 1 | 2026-10-20T21:41:58.1423802Z |
| 2026-08-20 – 2026-08-20 | 1 | 2026-10-20T21:41:58.1423802Z |
| 2026-08-18 – 2026-08-18 | 43 | 2026-10-20T21:41:58.1423802Z |
| 2026-08-17 – 2026-08-17 | 4 | 2026-10-20T21:41:58.1423802Z |
| 2026-08-14 – 2026-08-14 | 6 | 2026-10-20T21:41:58.1423802Z |
| 2026-08-13 – 2026-08-13 | 2 | 2026-10-20T21:41:58.1423802Z |
| 2026-08-09 – 2026-08-09 | 1 | 2026-10-20T21:41:58.1423802Z |
| 2026-08-07 – 2026-08-07 | 1 | 2026-10-20T21:41:58.1423802Z |
| 2026-08-06 – 2026-08-06 | 1 | 2026-10-20T21:41:58.1423802Z |
| 2026-08-04 – 2026-08-04 | 3 | 2026-10-20T21:41:58.1423802Z |
| 2026-08-03 – 2026-08-03 | 4 | 2026-10-20T21:41:58.1423802Z |
| 2026-08-02 – 2026-08-02 | 1 | 2026-10-20T21:41:58.1423802Z |
| 2026-08-01 – 2026-08-01 | 1 | 2026-10-20T21:41:58.1423802Z |
| 2026-07-29 – 2026-07-29 | 1 | 2026-10-20T21:41:58.1423802Z |
| 2026-07-27 – 2026-07-27 | 1 | 2026-10-20T21:41:58.1423802Z |
| 2026-07-23 – 2026-07-23 | 3 | 2026-10-20T21:41:58.1423802Z |
| 2026-07-20 – 2026-07-20 | 1 | 2026-10-20T21:41:58.1423802Z |
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.1.0 | 16 Jan 2022 | 5 |
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 18:14 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:24d8a977dc362268fea35082eb925480aac70399f034c623989ceda247781423