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.
To meet the project requirements, we developed a complete solution composed of:
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.
The project involved a combination of technologies:
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.
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.
Through this project, I strengthened my skills in:
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.