- The FarmInsight Project
- Overview
- Features
- Installation
- Usage
- Screenshots and UI Design
- Contributing
- License
Welcome to the FarmInsight Project by ETCE!
The FarmInsight platform brings together advanced monitoring of "Food Production Facilities" (FPF), enabling users to document, track, and optimize every stage of food production seamlessly.
All FarmInsight Repositories:
Link to our productive System: FarmInsight.etce.isse.tu-clausthal.de
FarmInsight empowers users to manage food production facilities with precision and ease.
Key features include:
- User Management: Set up organizations with role-based access control for secure and personalized use.
- FPF Management: Configure and manage Food Production Facilities (FPFs), each equipped with sensors and cameras.
- Sensor & Camera Integration: Collect sensor data and capture images or livestreams at configurable intervals, all accessible through the web application.
- Harvest Documentation: Log and track harvests for each plant directly from the frontend interface.
- Data Visualization: Visualize sensor data with intuitive graphs and charts.
- Controllable Action: To control the FPF you can add controllable actions which can perform actions on hardware which is reachable via network.
- Weather forecast: You can configure a location for your FPF for which a weather forecast will be gathered.
- Media Display: View and manage captured images and livestreams for real-time monitoring.
The FarmInsight Dashboard Frontend is a user interface for managing and monitoring Food Production Facilities (FPFs). It serves as the frontend for a corresponding backend, which is also hosted in the ETCE-Labs GitHub repository.
The dashboard provides:
- A detailed overview of FPFs.
- Features for creating and editing organizations.
- Assignment of FPFs to organizations.
- User management.
- Management and editing of FPFs:
- Adding sensors and cameras.
- Graphical representation and analysis of sensor data.
- Creation and editing of organizations.
- Assignment of existing users to organizations.
- Promoting or removing users of an organization.
- Creation, management, and editing of FPFs.
- Adding and editing of sensors and cameras.
- Displaying and graphically analyzing sensor data in an intuitive UI.
- Adding, editing, deleting Growing Cycles.
- Adding, editing, deleting Controllable Actions and Trigger.
- Node.js (recommended: LTS version)
-
Clone the repository:
git clone https://github.com/ETCE-LAB/FarmInsight-Dashboard-Frontend.git
-
Move into directory:
cd .\smart_farm_frontend\
-
Install dependencies:
npm install
-
Set up .env-Config: Setup .env files at:
- smart_farm_frontend/src/env-config.ts
Example of .env file:
export const BACKEND_URL = "http://127.0.0.1:8000";-
Start the development server:
npm start
The development server will run by default at http://localhost:3000.
-
Set up the backend:
Please follow the instructions in the Backend Repository to set up the API.
After starting the frontend, you can either create or log in with a user account in order to create your own organizations and FPFs or manage existing ones.
To add a sensor, you need to fill in the required information in the form. The additional information is different depending on the sensor you want to add. For example: A HTTP sensor requires a http endpoint of the sensor, so the FPF can reach it on the given endpoint. The same goes for MQTT sensors. They require the name of the topic they publish the messages to. It is important to choose unique topic names per FPF and broker to distinguish between the sensors.
With controllable actions you can control hardware via an action script which is running on the Backend. This action script is a custom script which communicates an action to the hardware (e.g. via HTTP). The hardware must be reachable via HTTP in order for it to work. You can define and configure your controllable action as an admin of the FPF in the Edit-FPF-Page.
See more details about controllable actions in the Dashboard-Backend Readme.
Your action needs Trigger to be called. You have a variety of trigger types to choose from like:
- Interval (provide an interval in which the action will be called)
- Time (will trigger the action within a timeframe)
- Sensor measurement (Triggers the action by a set threshold for a sensor measurement)
- Manual
With the manual trigger you can execute an action with a click of a button in the frontend. This can only be done by admins of the FPF. Please note that the manual trigger will block the auto-trigger as long as they are active. You need to disable the manual trigger manually again, if you want to resume automatic control.
Create for one action as much trigger as you want. In most cases it is sufficient to have 1-2 automatic trigger and 2 manual trigger (simple ON/OFF). It is recommended to create manual trigger in the case of manual intervention during live production.
Example: In this example there are two hardware items ("Shelly Plug Aero System 2 Licht" and "Shelly Plug Aero System 2 Water"). Each one has one Controllable Action. In this overview, all auto-trigger are combined into the button "Auto". Everything left of "Auto" are manual buttons. You can switch between the logic for "Licht" (manual on, manual off, auto). If you want to stop the logic you can always disable the trigger or the whole controllable action.
In the following example, we have 2 manual trigger and 2 auto-time-trigger to control a light (on/off). The user has always the option it overwrite the auto-logic and execute the manual trigger which will have indefinite priority until the user turns them off by activating the "Auto" control again.
If you have hardware which can executes multiple actions but only one at a time. (e.g. a robot arm), specify a Hardware for the controllable action. (with the same name) This way no two actions will be executed at the same time and the hardware is protected against any form of overloading.
An action can block the hardware for a specified amount of time. When the action is executed all other actions for the same hardware which are being queued up will wait until its finished.
Current System Architecture:
Current Frontend File Structure:
All normal Features are located in the Feature directory.
Special UI-Components (navbar, header. landingPage) are located under ./ui/components/...
Special functions like WebSocket, APIClient, Redux Store are all located in ./utils/...
Translation: ./i18n.ts
This project is licensed under the AGPL-3.0 license.
We welcome contributions! Please follow these steps:
- Fork the repository.
- Create a new branch:
git checkout -b feature/your-feature - Make your changes and commit them:
git commit -m 'Add new feature' - Push the branch:
git push origin feature/your-feature - Create a pull request.
For more information or questions, please contact the ETCE-Lab team.




