Project: Geekhouse

Overview Geekhouse is a smart dollhouse project that combines IoT devices with Large Language Models to create a natural language interface for controlling physical devices. Users can control LEDs, motors, and sensors using commands in any language, which are automatically translated into REST API calls by an LLM. Features Natural language control of physical devices Multilingual support (demonstrated with English, Russian, Spanish) HATEOAS-compliant REST API for device discovery Real-time sensor monitoring Support for various actuators: LEDs (multiple colors and locations) DC motors Servo motors Human-friendly responses from sensors Technical Stack Hardware Raspberry Pi Pico W (main controller) Keyestudio Smart House Kit components: Light sensors Rain sensors LED arrays DC motors Servo motors Software MicroPython with Microdot framework for REST API Python client application Anthropic Claude (Haiku-3.5) for natural language processing HATEOAS-based API architecture Implementation Details REST API Design The API follows HATEOAS principles, providing self-documenting endpoints: ...

2024-12-10 · 2 min · 348 words · Pavel Anni

Project: Time Control Panel

Overview A hardware project that creates a multi-functional time control panel using modern microcontrollers and Go programming language. The system uses two Raspberry Pi Picos to manage different time displays, complete with sound effects and persistent memory. Features Three time displays (Target, Current, Previous) Real-time clock functionality Rotary encoder input for time setting Sound effects via DFPlayer Mini Persistent memory for time settings Inter-controller communication via UART Time travel simulation with visual and audio feedback Technical Stack Hardware 2× Raspberry Pi Pico 7-segment LED displays with TM1637 chip Rotary encoders for time setting DFPlayer Mini for audio playback SD card for sound storage Software TinyGo compiler for microcontrollers Go standard library features: Goroutines for concurrent operations Channels for event handling Time and date manipulation UART communication protocol Flash memory operations Implementation Details Multi-Controller Architecture Left Pico: Handles target time setting and display Right Pico: Manages current time and previous time UART communication for time synchronization Time Management RFC3339 time format for inter-controller communication Real-time clock implementation Persistent storage in flash memory Gray code implementation for rotary encoders Sound Integration MP3 playback via DFPlayer Mini Sound effects triggered by time travel events UART commands for audio control Current Status Core functionality working Time setting and display operational Sound effects implemented Flash memory persistence working Future Plans Add GPS integration for actual speed detection Implement speed-based trigger for time travel Create DIY kit version Add Pomodoro timer mode Develop chess clock functionality Improve sound effect timing Similar projects I found several similar projects using LED displays for time and various method to set the date/time. ...

2024-10-07 · 2 min · 349 words · Pavel Anni

Project: SSH Login Monitor

Overview A Go program that monitors SSH login events in system logs, matches login/logout pairs, and identifies users by their SSH key fingerprints. The project demonstrates practical use of Go for system administration tasks and showcases how AI can assist in development. Features Parses /var/log/secure for SSH login events Matches login and logout events by port numbers Identifies users via SSH key fingerprints Calculates session durations Supports CSV-based user database Command-line argument support Comprehensive test coverage Technical Stack Platform Requirements Linux system with SSH server Access to system logs (/var/log/secure) Go runtime environment Software Components Go standard library github.com/spf13/pflag for command-line parsing Regular expressions for log parsing CSV handling for user database Implementation Details Log Parsing Regular expressions to extract: Timestamps IP addresses Port numbers SSH key fingerprints Login/logout events User Identification CSV database format: username,fingerprint Fingerprint matching for user identification Support for multiple users with different keys Session Tracking Port-based login/logout matching Duration calculation Source IP tracking Current Status Core functionality complete Command-line interface implemented Test suite in place Two versions available: Original Go implementation ChatGPT-generated version Future Plans Add real-time monitoring mode Implement log rotation handling Add support for different log formats Create configuration file support Add output formatting options Implement statistics collection Updates 2024-12-23: Documentation Update Converted to new documentation format Added detailed technical specifications Reorganized project structure Read the full story about this project ...

2023-04-27 · 2 min · 228 words · Pavel Anni