Last year, I modified my home doorbell to be powered by ChatGPT. RinGPT 1.0 was capable of sending notifications via Telegram and engaging visitors in long conversations using an LLM. It could also use pre-programmed responses based on specific keywords.
For version 2.0, I wanted to give it more autonomy using something called AI Agents. But what exactly is an AI Agent?
An AI agent is an autonomous entity that perceives its environment through sensors, processes information, and takes actions to achieve specific goals. It can be software-based (e.g., a chatbot or recommendation system) or embodied in hardware (e.g., a robot or self-driving car).
The goal was to provide RinGPT with tools like access to a schedule, sensor readings, and more—allowing the agent to decide which tools to use, execute them, and make decisions based on their results and pre-set reception rules.
This project is experimental and relatively simple. Despite using AI agents, it does not rely on a specialized agent framework but instead runs on plain Python with OpenAI's API. A key detail that might interest some makers is that it interacts with both software-based and physical tools—such as reading sensors and unlocking doors.
The project is built around a Unihiker board. For reference, you can think of the Unihiker as a Raspberry Pi with built-in storage, a touchscreen, and onboard sensors such as a microphone, light sensor, accelerometer, and buttons. It comes pre-installed with a Debian-based OS.
To connect Unihiker to WiFi, plug in the USB cable and open 10.1.2.3
in a browser. Once connected, you can access it via SSH and FTP using the credentials:
Connect the servo to PO del IO Board
Connect the button to P23 of the Unihiker
The project uses specific Unihiker libraries (which require no installation). Additional dependencies include:
pip install openai speech_recognition edge_tts art asyncio textwrap
To connect a Bluetooth speaker, first find its MAC address using a scan or by checking the device settings. Then run the following commands:
bluetoothctl default-agent power on scan on trust 00:00:00:00:00:00 pair 00:00:00:00:00:00 connect 00:00:00:00:00:00
(Replace 00:00:00:00:00:00
with the actual MAC address.)
The AI agent has access to the following tools:
def agenda(nombre): def getDayTime(): def getLightConditions():
Additional tools, like unlocking the door or sending Telegram notifications, are triggered by the system’s logic but are not yet assigned to the AI agent (though they could be in future versions).
The agenda currently uses hardcoded event names, but it can easily be modified to pull real data from Google Calendar. The light conditions tool is fairly arbitrary—it was included mainly to make use of the Unihiker’s light sensor.
Not all OpenAI API calls are the same:
For example, the visitor’s name is retained and sent again during the third LLM call.
The system keeps a log of all actions taken, making it easier to monitor performance and debug issues.
RinGPT 2.0 AI Agent powered Doorbell
There are no datasets linked
There are no datasets linked