Giter VIP home page Giter VIP logo

cb-lock / shockcell Goto Github PK

View Code? Open in Web Editor NEW
12.0 2.0 1.0 906 KB

This project is about creating an internet-controlled electronic key safe with additional control functions. The key safe uses Wi-Fi to connect to the internet and provides a Telegram messenger chat bot for interaction with remote users. A major additional function of the key safe is to trigger shocks using a shock device for remote controlled punishments.

License: MIT License

C 1.44% C++ 98.56%
chastity bdsm shock cage

shockcell's Introduction

The ShockCell Project

Overview

This project is about creating an internet-controlled electronic key safe with additional control functions. The key safe uses Wi-Fi to connect to the internet and provides a Telegram messenger chat bot for interaction with remote users.

A major additional function of the key safe is to trigger shocks using a shock device for remote controlled punishments.

Use Case

Chastity play between a remote holder and a chastity device wearer requires secure management of the keys allowing to unlock the chastity device. This key safe is meant to serve the purpose of allowing the holder to decide when keys are returned to the wearer.

I use a chastity assembly consisting of a special chastity cage with an integrated shock device and an electronically controlled, Wi-Fi enabled key safe for my chastity keys with an integrated remote control for the shock device. With this project, I want to give others the opportunity to do the same or exchange ideas and improve the concept.

Description

The key safe consists of a flat box with a hinged cover that automatically locks once pressed shut. It incorporates a microcontroller board hosting the entire software of this project. The microcontroller board connects to several sensors and actors:

  • Actor activating the keypad button of the remote control for the shock device,
  • servo motor for pulling open the locking bracket of the cover ratchet mechanism,
  • sensor of the state of the cover (open/closed) and
  • display for information about the current state of the key safe. The key safe encloses a compartment for storing the keys as well as all other components.

It is connected to the LAN as a Wi-Fi based client and powered over USB.

Shocker description (light version)

Instead of the full safe with integrated shocker control, a light version with the shocker control only can be realized. In this version, the internet connectivity and app control is identical. The advantage is significantly reduced complexity building this.

The schematic and board design is provided below labeled as "light" version.

Operation

To begin a session, you put all the chastity device keys into the key safe and close it. The ratchet mechanism keeps the lock box now closed until a valid unlock command is sent to the Telegram bot.


How to prepare the software for use with the Arduino IDE

  • Rename the file Defs_template.h to Defs.h
  • This is necessary to customize the creadentials for Wi-Fi/WLAN access und connecting the Telegram bot.

How to do the Telegram setup

Telegram bot

The ShockCell key safe runs a bot for the Telegram Messenger App. The bot is the only interface to the key safe. It can be added to a group chat to control the key safe. While the group chat can be used for general communication between the holder, wearer and other users. the following commands are available to control the key safe. Any command must be send as a separate message and should not contain any other text. The prefix for each command is a slash "/".

Create the bot

https://telegrambots.github.io/book/1/quickstart.html

Result

This step provides as a result the bot authentication token. It has the following pattern:

1234567:4TT8bAc8GHUspu3ERYn-KGcvsvGB9u_n4ddy

This token is needed in the source code in file Defs.h

Roles

The ShockCell key safe knows four different roles in the group chat.

  1. Wearer - the one person being controlled and wearing a chastity device with a lock and shock device.
  2. Holder - the one person controlling (holding) the key safe storing the keys to that lock. She/he also controls the shocks for the wearer.
  3. Guest - additional people in the group chat without special rights
  4. Teaser - additional people who support the holder with the rights to send shocks to the wearer (this right can be controlled by the holder).

Every member in the group chat can have only one role. However, the following role transitions are possible.

New role: -> Holder -> Teaser -> Guest -> Wearer
Holder - yes, setting the wearer free automatically yes, setting the wearer free automatically no
Teaser yes, if there is currently no holder - yes no
Guest yes, if there is currently no holder yes - no
Wearer no no no -

Rules for role changes

  • The wearer cannot change roles.

  • A guest may become holder if there is currently no holder. The holder can become guest again and give up his privileges.

  • A guest may become teaser. A teaser can become guest again and give up his privileges.

Start communication/overview

/start

The /start command lists all commands available for the role

#define BOT_COMMANDS_GENERAL "/start - Start communication\n/state - Report the cover state\n/roles - List roles\n/users - List users in chat\n" #define BOT_COMMANDS_SHOCKS "/shock1 - Shock for 1 seconds\n/shock3 - Shock for 3 seconds\n/shock5 - Shock for 5 seconds\n/shock10 - Shock for 10 seconds\n/shock30 - Shock for 30 seconds\n" #define BOT_COMMANDS_RANDOM "/random_5 - Switch on random shock mode with 5 shocks per hour (other intervals work with corresponding numbers)\n/random_off - Switch off random shock mode\n" #define BOT_COMMANDS_TEASING "/teasing_on - Enable teasing\n/teasing_off - Disable teasing\n" #define BOT_COMMANDS_UNLOCK "/unlock - Unlock key safe\n" #define BOT_COMMANDS_ROLES "/holder - Adopt holder role\n/teaser - Adopt teaser role\n/guest - Adopt guest role\n" #define BOT_COMMANDS_WAITING "/waiting - Make wearer waiting to be captured by the holder\n/free - Make wearer free again (stops waiting for capture)\n" #define BOT_COMMANDS_CAPTURE "/capture - Capture wearer as a sub\n/release - Release wearer as a sub" #define BOT_COMMANDS_EMERGENCY "/thisisanemergency - Release the wearer in case of an emergency\n"


How to setup the components of the light version of this project

Schematic

Board design

Hardware components

The key safe consists of mechanic hardware and electronics. The mechanics are probably something individual, but I would like to share the electronics part listing and schematics.

Parts Listing

  • ESP32 board. Probably any ESP32 board will do. I use the DOIT ESP32 DEVKIT V1. It is available from different suppliers. I got mine from Aliexpress, https://de.aliexpress.com/item/32992390199.html
  • 0,96 zoll IIC display - I2C interface seems easier to me, but the U8g2 library supports a wide range of display types. Mine is this: https://de.aliexpress.com/item/32899149458.html
  • Transistor BC547 - needed to activate the button of the remote control for the shock device (shock collar)
  • 10 kOhm resistor for the transistor base
  • Dog shock collar - Any truly waterproof device will do with a good range and a remote control with buttons. I use https://de.aliexpress.com/item/32915272728.html
  • A switch sensor - needed to detect if the key safe is open or closed
  • USB cable for the power supply (micro USB)

Software components

I use the Arduino ISE to build and uploaded the project to the device. The software of this project relies on the following libraries:

Reference

shockcell's People

Contributors

cb-lock avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

givingcontrol

shockcell's Issues

Wake up message

When it says "wake up boy" change that to "Good morning Charly boi. Time to wake up."

Change credit system

With the random earning

The 1st hour won't earn you anything

But every hour after will

How much self shocking for 1 credit?

10 total seconds I think 🤔

Check if wearer is at home (connected to Wi-Fi/WLAN)

The safe checks continuously, if the wearer is in reach of the WLAN.

A message is issued, every time the wearer leaves the home and returns home.

The status message shows, if the wearer is at home.

Überprüfung der Anwesenheit im LAN

Request raised 10 May:

Wie weiß ich eigentlich, ob Du in Reichweite der Fernsteuerung bist?

  • Ja da bist du derzeit darauf angewiesen, dass ich mich an- und abmelde.

Aber jetzt wo wir darüber sprechen hätte ich eine Idee. Der Safe könnte tracken, ob mein Smartphone im WLAN eingeloggt ist

Das könnte der Safe melden, wenn ich das WLAN verlasse oder wieder zurückkomme

Gute Idee 👍. Das wäre ein weiteres Stück Kontrolle

Queue shock commands

Shock commands given at night and while away from home are queued.

Queued shocks will be delivered in a row once the wearer returns home or when the sleeping time is over.

Credits to reset every week

Because we will use those as odds for you being unlocked

Those were the original purpose of them

You have to gain them to earn a chance of freedom

100 credits is a definite unlock

1 is 1/100 chance

They should reset everytime the unlock command is said

Add task system

  • single

  • reoccurring

  • automatically closing when completed

  • Wear nipple clamps (minutes)

  • Toothpaste on penis head (minutes)

  • Shocks (seconds)

  • Wear rubber donut ring (minutes)

  • slap balls with hand (count)

  • hit balls with cooking spoon (count)

Add game play allowance and requirements

Was mir noch fehlt ist ein Modus wo DU spielen kannst (um Freilassung) und wenn Du verlierst gibt es eine Strafe.

  • Also so, dass ich spielen MUSS?

Beides. Also ein Modus wobei kannst (wenn Du frei kommen willst). Und ein Modus wo einspielen musst, sonst wirst Du bestraft.

  • Wie werden die Strafen festgelegt? Sind die fix? Z.B. 1..10 Sekunden Schock per Zufall für das Verlieren?

Add lock timer for solo play

After the timer is set, the unlock command is generally disabled until the timer expires. Only a holder can delete the timer.

Add random number with verification requests

Ich hätte übrigens noch eine Anregung für die Software. Ich habe das bei mir so programmiert, als wir auch viel mit dem Latowski gespielt haben. Und zwarHabe ich den Bord eine Zufallszahl zwischen null und 999 erzeugen lassen, die beide gleichzeitig aufs Handy bekamen. Ich musste dann ein Foto mit der Zahl drauf machen und als Beweis senden, dass der Gürtel verschlossen ist.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.