report:conc

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
report:conc [2026/06/14 14:36] – [8.2.2 Back-end] team1report:conc [2026/06/14 14:55] (current) – [8.2.2 Back-end] team1
Line 169: Line 169:
  
 Thirdly, Supabase allows for realtime table changes to be read from the front-end. This makes is very simple to display the live sensor data from the plant pot to the application. This functionality is called Supabase Realtime [(supabase2026realtime)]. Thirdly, Supabase allows for realtime table changes to be read from the front-end. This makes is very simple to display the live sensor data from the plant pot to the application. This functionality is called Supabase Realtime [(supabase2026realtime)].
 +
 +== 8.2.2.3 Push notifications using Firebase Cloud Messaging ==
 +
 +Push notifications are implemented by combining Supabase as the backend system with Firebase Cloud Messaging (FCM) as the delivery service. Supabase itself does not directly send push notifications to mobile devices. Instead, it is used to detect when a notification should be triggered, while FCM is responsible for delivering the notification to the user’s device.
 +
 +In this architecture, sensor data from the microcontroller is continuously stored in a Supabase database. When a new sensor reading is inserted, Supabase evaluates whether the value meets a predefined condition (for example, a temperature or humidity value falling below a safe threshold). This evaluation is typically handled using database triggers or server-side logic such as Edge Functions.
 +
 +Once a critical condition is detected, Supabase executes a server-side action that prepares a notification payload. This payload usually includes information such as the type of alert, sensor ID, timestamp, and severity level. Supabase then sends a request to Firebase Cloud Messaging using a secure server-to-server API call.
 +
 +Firebase Cloud Messaging acts as the messaging intermediary between the backend and the mobile application. It receives the notification request from Supabase and routes it to the correct device using a unique device token stored in the Supabase database. The device token is generated when the Flutter application first registers the user’s device with FCM and is linked to the user account in Supabase.
 +
 +FCM is capable of delivering notifications even when the application is closed or running in the background, as it operates at the operating system level. This ensures that critical sensor alerts are reliably delivered regardless of the application state. When the user receives the notification, they can tap it to open the application and navigate directly to the relevant sensor data or alert handling screen.
 +
 +This approach separates responsibilities clearly: Supabase manages data storage, real-time evaluation, and trigger logic, while Firebase Cloud Messaging handles cross-platform notification delivery.
 +=== 8.3 Flow charts ===
 +Using flow charts, the developer displays how the product flow goes for various functions. The functions are the ones listed below.
 +
 +  * Starting a focus session.
 +  * Manual watering of the plant.
 +  * Automated watering of the plant.
 +  * Switching the plant pot mode between manual and automated.
 +  * Reading data from the plant pot's sensors.
 +  * Sending a notification when the data read hits the danger zone.
 +  * Making a post for the garden.
 +
 +Figure {{ref>fig:flowchart_focus_session}} displays the flow chart for starting a focus session which keeps the plant growing and adds time to the user's focus time.
 +
 +<WRAP centeralign>
 +<figure fig:flowchart_focus_session>
 +{{ :report:app:flowchart_focus_session.png?nolink&600 |}}
 +<caption>Flow chart for starting a focus session in the app.</caption>
 +</figure>
 +</WRAP>
 +
 +Figure {{ref>fig:flowchart_manual_watering}} displays the flow chart for manually watering the plant when the moisture sensor detects low levels of moisture.
 +
 +<WRAP centeralign>
 +<figure fig:flowchart_manual_watering>
 +{{ :report:app:flowchart_manual_watering.png?nolink&600 |}}
 +<caption>Flow chart for manually watering the plant pot.</caption>
 +</figure>
 +</WRAP>
 +
 +Figure {{ref>fig:flowchart_automated_watering}} displays the flow chart for automated watering of the plant.
 +<WRAP centeralign>
 +<figure fig:flowchart_automated_watering>
 +{{ :report:app:flowchart_automated_watering.png?nolink&600 |}}
 +<caption>Flow chart for automatically watering the plant pot.</caption>
 +</figure>
 +</WRAP>
 +
 +Figure {{ref>fig:flowchart_mode_switch}} displays the flow chart for switching between watering mode of the plant.
 +
 +<WRAP centeralign>
 +<figure fig:flowchart_mode_switch>
 +{{ :report:app:flowchart_mode_switch.png?nolink&600 |}}
 +<caption>Flow chart for switching between manual and automated mode.</caption>
 +</figure>
 +</WRAP>
 +
 +Figure {{ref>fig:flowchart_read}} displays the flow chart for continuously reading from the sensors in the plant pot and sending the data to the database.
 +
 +<WRAP centeralign>
 +<figure fig:flowchart_read>
 +{{ :report:app:flowchart_reading_data.png?nolink&600 |}}
 +<caption>Flow chart for reading data from the sensors as a live stream.</caption>
 +</figure>
 +</WRAP>
 +
 +Figure {{ref>fig:flowchart_push}} displays the flow chart for sending a push notification to the user's phone when the sensors read data that's in the danger zone.
 +
 +<WRAP centeralign>
 +<figure fig:flowchart_push>
 +{{ :report:app:flowchart_push_notification.png?nolink&600 |}}
 +<caption>Flow chart for sending notifications to the user's phone.</caption>
 +</figure>
 +</WRAP>
 +
 +Figure {{ref>fig:flowchart_social_media}} displays the flow chart for posting an update on your plant to the social garden zone of the application.
 +
 +<WRAP centeralign>
 +<figure fig:flowchart_social_media>
 +{{ :report:app:flowchart_social_media.png?nolink&600 |}}
 +<caption>Flow chart for creating a post for the garden.</caption>
 +</figure>
 +</WRAP>
 +
 ===== 9. Conclusions ===== ===== 9. Conclusions =====
  
  • report/conc.1781444178.txt.gz
  • Last modified: 2026/06/14 14:36
  • by team1