Projects

    Domonald.

    Image of the "Domonald" project
    Icon of the "C language" tagC language
    Icon of the "Laravel" tagLaravel
    Icon of the "React" tagReact
    Icon of the "PHP" tagPHP
    Personal project
    Finished
    Development of a real-time control platform for a simulated smart house.

    Project description

    Introduction

    As part of my academic curriculum, I worked on a project called Domonald, developed in a team of three students. The project focused on home automation and aimed to create a full communication system between a simulated smart house and an external web interface.

    We were provided with a Java-based simulator that emulated a connected house with various devices, allowing direct interaction through clicks on the interface. However, the objective was to build a system that could interact with the simulator externally, without using the Java application interface directly.


    Project Overview

    To meet the project requirements, we developed a complete solution composed of:

    • A web interface allowing users to monitor and control the smart house remotely.
    • A web server to handle requests, data synchronization, and real-time updates.
    • A C application acting as a bridge between the Java simulator and the web server.

    The C program was responsible for listening to events generated by the smart house, transmitting them to the web server, and sending back user commands from the web interface to the simulator, ensuring real-time synchronization between all systems.


    Technologies Used

    The project involved a combination of technologies:

    • Laravel for the server-side development and API creation.
    • React for building a dynamic and responsive web interface.
    • Pusher for managing real-time communication between the server and the web interface via WebSockets.
    • C language for the development of the communication bridge between the Java simulator and the web server.

    Development Process

    Our work began with analyzing the architecture of the Java simulator and understanding how to intercept and transmit events externally, thanks to Wireshark.

    We developed a C application capable of establishing a communication link with the simulator, listening for device status changes, and forwarding them to the server via HTTP requests. It also processed user commands received from the server to control the connected devices in the simulation.

    On the web side, we built a Laravel-based backend that exposed a set of APIs for the C bridge and the React interface. To ensure real-time updates without requiring manual page refreshes, we integrated Pusher into the backend and frontend, enabling instant synchronization of device states through WebSocket communications.

    The React frontend allowed users to view the real-time status of devices and control them remotely through a clean and intuitive interface.

    Collaboration was essential throughout the project, and we distributed tasks efficiently to deliver a fully working system that integrated hardware simulation, communication layers, and a user-friendly frontend.


    Challenges Faced

    One of the first challenges we encountered was understanding the internal workings of the Java simulator. Since no documentation was provided, we had to directly analyze the network traffic using Wireshark to identify events, communication protocols, and underlying mechanisms.

    Once this initial step was completed, one of the main technical challenges was designing a robust and reliable communication system between three different components (Java simulator, C bridge, and web server).

    We had to carefully manage data synchronization, real-time updates, and connection stability, while ensuring that user actions were accurately and quickly reflected in the simulation.

    Finally, designing an intuitive and responsive web interface while maintaining smooth real-time interactions required close coordination between frontend and backend development.


    Key Learnings

    Through this project, I strengthened my skills in:

    • Systems integration, working across different technologies and communication layers.
    • Web application development with Laravel and React.
    • Real-time communication management using Pusher and WebSockets.
    • Low-level programming with C, focusing on network communication and event handling.
    • Team collaboration and task distribution under academic deadlines.

    Conclusion

    The Domonald project gave me hands-on experience in building a real-time communication system between a hardware simulator and a web platform. It taught me how to design reliable event flows, synchronize different technologies, and handle live updates with minimal latency.