{"id":263,"date":"2025-04-26T22:42:57","date_gmt":"2025-04-27T03:42:57","guid":{"rendered":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb3\/?p=263"},"modified":"2025-04-27T00:00:30","modified_gmt":"2025-04-27T05:00:30","slug":"team-status-report-for-04-26-2025","status":"publish","type":"post","link":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb3\/2025\/04\/26\/team-status-report-for-04-26-2025\/","title":{"rendered":"Team Status Report for 04\/26\/2025"},"content":{"rendered":"<p><span style=\"font-weight: 400\">This week, we finished implementing the mister actuator, the heater actuator, and the LED matrix display. We also tested the late fusion machine learning model for plant health classification, fixed several WebApp bugs, and added new functionality to improve usability. Integration between the WebApp, the actuators, and the control system is progressing smoothly, and the automatic control logic has been successfully tested under manual and automatic modes.<\/span><\/p>\n<p><b>Progress:<\/b><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Mister actuator implemented and functional<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Heater actuator implemented and functional<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">LED matrix displays actuator statuses and plant health classification<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Late fusion ML model tested successfully<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">WebApp bugs fixed and new features added<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Sensors and actuators integrated with WebApp<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Automatic and manual control tested<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">System operating in current greenhouse setup<\/span><\/li>\n<\/ul>\n<p><b>Significant Risks:<\/b><span style=\"font-weight: 400\"> The most significant risk at this point is transporting the greenhouse from our current room in HH to the demo room in UC. There is a chance that something could get displaced or broken during the move, and it would be difficult to quickly fix major issues because we only have about 30 minutes to set up. To mitigate this, we plan to arrive early on the day of the demo to carefully move the greenhouse, perform a full functionality test, and ensure everything is working before entering the demo area. We will bring backup materials, tools, and spare sensors just in case.<\/span><\/p>\n<p><b>Design Changes:<\/b><span style=\"font-weight: 400\"> No major changes were made to the overall system design, requirements, or block diagram this week. The system has now fully met the original specifications, and all actuators and sensors are operational. Any small adjustments were purely for bug fixes and user interface improvements on the WebApp. These had minimal cost impacts and were necessary for improving the reliability and user experience of the system.<\/span><\/p>\n<p><b>Next Steps:<\/b><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Finish testing stabilization times of the greenhouse system<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Fix a few minor WebApp bugs<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Finalize WebApp user interface<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Complete the final poster, demonstration video, and written report<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Prepare and practice for the final demo presentation<\/span><\/li>\n<\/ul>\n<p><b>Testing:<\/b><\/p>\n<p><span style=\"font-weight: 400\">The following are the tests we carried out over the system:<\/span><\/p>\n<p><span style=\"font-weight: 400\">Unit Tests:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Sensor Accuracy tests (Zara)<\/span>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">We compared the temperature and humidity sensors to calibrated measuring equipment and found that the sensors were within 1.51%<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">For the other sensors we could not afford calibrated equipment within our budget for testing, so we opted to test relative changes of collected data in response to changes in the system by actuators. We found that light, and soil sensors responded appropriately to changes in the environment, (e.g. for each step of light intensity there was a change of at least 200 lux consistently, soil moisture responded differently for each plant, but consistently deceased when not watered for days, and increased after regular watering)<\/span><\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Sensor Latency (Zara)\u00a0<\/span>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">We sent data from our hardware to webapp and compared timestamps to find the latency<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">We found that sensors connected directly to the raspberry pi had a 0.5s latency from sensor to webapp<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Sensors connected to the arduino had a 2.8s latency as information travelled from sensor to arduino to raspberry pi to the webapp<\/span><\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Actuator Accuracy (Zara)<\/span>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">We compared set values to actual values reached after stabilization<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">We found that for all cases in light intensity, increasing heat, increasing humidity we are able to reach target values 100%. But if the greenhouse required a cooler temperature plant than room temperature, as we do not have a cooling system we could not cool to reach the target temperature. As we do not have the time to implement a new system for this we aim for cooling naturally through the mister.<\/span><\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Actuator Stabilization time (Zara)<\/span>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">We plan to measure the time between the set time and the time it takes for the system to stabilize<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">This is still in testing as we are collecting data to measure this time<\/span><\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Webapp User Experience (Yuna)<\/span>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">We plan to have users rate 1-5 on ease of use, design, functionality, performance<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">This is yet to be tested<\/span><\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Live Streaming Latency (Jana):<\/span>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">We tested the live streaming latency by comparing the timestamp of when a frame was captured by the RPi camera to the timestamp of when it was displayed on the WebApp. We tested this for about 1670 frames, and found that the average latency is 1.95 seconds, which is below our requirement of latency &lt; 2 seconds.<\/span><\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Plant Identification API (Jana)<\/span>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">We tested the Plant Identification API on our dataset of 746 images of plants (applying random transformations such as rotation, noise, blur, etc), and it correctly identified each of the 4 species every single time (TPR of 100%, Recall of 100%).\u00a0<\/span><\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">ML Plant Health Model (Jana)<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400\">I tested the ML Plant Health model in 4 stages:<\/span><\/p>\n<p><span style=\"font-weight: 400\">Stage 1: Image model (online data)<\/span><\/p>\n<p><span style=\"font-weight: 400\">I tested the 3 models (ResNet18, ResNet50, and MobileNetV2) on 2 different online datasets (PlantDoc, and an open source houseplant dataset on roboflow).<\/span><\/p>\n<p><span style=\"font-weight: 400\">I got the following results:<\/span><\/p>\n<p><span style=\"font-weight: 400\">Houseplant dataset:<\/span><\/p>\n<p><span style=\"font-weight: 400\">ResNet18:\u00a0<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">True Positive Rate (TPR): 0.8302<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">True Negative Rate (TNR): 0.9491<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">False Positive Rate (FPR): 0.0509<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">False Negative Rate (FNR): 0.1698<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400\">ResNet50:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">True Positive Rate (TPR): 0.8302<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">True Negative Rate (TNR): 0.8889<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">False Positive Rate (FPR): 0.1111<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">False Negative Rate (FNR): 0.1698<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400\">MobileNetV2:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">True Positive Rate (TPR): 0.8774<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">True Negative Rate (TNR): 0.9537<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">False Positive Rate (FPR): 0.0463<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">False Negative Rate (FNR): 0.1226<\/span><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">PlantDoc dataset:<\/span><\/p>\n<p><span style=\"font-weight: 400\">ResNet18:\u00a0<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">True Positive Rate (TPR): 0.9653<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">True Negative Rate (TNR): 0.9176<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">False Positive Rate (FPR): 0.0824<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">False Negative Rate (FNR): 0.0347<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400\">ResNet50:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">True Positive Rate (TPR): 0.9422<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">True Negative Rate (TNR): 0.8824<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">False Positive Rate (FPR): 0.1176<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">False Negative Rate (FNR): 0.0578<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400\">MobileNetV2:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">True Positive Rate (TPR): 0.9538<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">True Negative Rate (TNR): 0.8941<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">False Positive Rate (FPR): 0.1059<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">False Negative Rate (FNR): 0.0462<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400\">Based on these results, I chose the ResNet18 model trained with the PlantDoc dataset.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Stage 2: Sensor Model (online data)<\/span><\/p>\n<p><span style=\"font-weight: 400\">I trained a simple MLP classifier on online plant sensor data, and achieved the following results:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">True Positive Rate (TPR): 0.9778<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">True Negative Rate (TNR): 0.9333<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">False Positive Rate (FPR): 0.0667<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">False Negative Rate (FNR): 0.0222<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400\">Stage 3: Late Fusion Model (our collected dataset)<\/span><\/p>\n<p><span style=\"font-weight: 400\">Our dataset consists of 746 images and sensor data points of 14 different plants across 4 plant species. I fine-tuned the image and sensor models with our dataset, and trained a classifier using the concatenated sensor and image features from the pretrained image and sensor models. This achieved the following results:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">True Positive Rate (TPR): 0.9091<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">True Negative Rate (TNR): 0.9496<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">False Positive Rate (FPR): 0.0504<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">False Negative Rate (FNR): 0.0909<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400\">Stage 4: Multi-Class Classification (online data):<\/span><\/p>\n<p><span style=\"font-weight: 400\">We initially planned on developing a model that can predict specific plant health labels such as \u2018overwatered\u2019 or \u2018underwatered\u2019. Despite the limitations in available datasets, I decided to train a multi-class model using one of the more suitable datasets (houseplant dataset on roboflow) to see if further classification into more specific categories could be possible. The results show significant variation in performance across different categories, which is why I decided against using it in our project:<\/span><\/p>\n<p><span style=\"font-size: 1rem\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 TPR \u00a0 \u00a0 \u00a0 FPR \u00a0 \u00a0 \u00a0 FNR \u00a0 \u00a0 \u00a0 TNR<\/span><\/p>\n<p><span style=\"font-weight: 400\">healthy \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 0.986111\u00a0 0.207547\u00a0 0.013889\u00a0 0.792453<\/span><\/p>\n<p><span style=\"font-weight: 400\">bacterial spot\u00a0 \u00a0 \u00a0 0.888889\u00a0 0.000000\u00a0 0.111111\u00a0 1.000000<\/span><\/p>\n<p><span style=\"font-weight: 400\">dehydration \u00a0 \u00a0 \u00a0 \u00a0 0.687500\u00a0 0.003268\u00a0 0.312500\u00a0 0.996732<\/span><\/p>\n<p><span style=\"font-weight: 400\">mineral deficiency\u00a0 0.666667\u00a0 0.003165\u00a0 0.333333\u00a0 0.996835<\/span><\/p>\n<p><span style=\"font-weight: 400\">sunburn \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 0.680000\u00a0 0.010101\u00a0 0.320000\u00a0 0.989899<\/span><\/p>\n<p><span style=\"font-weight: 400\">late blight \u00a0 \u00a0 \u00a0 \u00a0 0.571429\u00a0 0.000000\u00a0 0.428571\u00a0 1.000000<\/span><\/p>\n<p><span style=\"font-weight: 400\">leaf curl \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 1.000000\u00a0 0.000000\u00a0 0.000000\u00a0 1.000000<\/span><\/p>\n<p><span style=\"font-weight: 400\">overwatering\u00a0 \u00a0 \u00a0 \u00a0 0.571429\u00a0 0.003175\u00a0 0.428571\u00a0 0.996825<\/span><\/p>\n<p><span style=\"font-weight: 400\">rust\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 0.562500\u00a0 0.009804\u00a0 0.437500\u00a0 0.990196<\/span><\/p>\n<p><span style=\"font-weight: 400\">powdery mildew\u00a0 \u00a0 \u00a0 1.000000\u00a0 0.003175\u00a0 0.000000\u00a0 0.996825<\/span><\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-medium wp-image-275\" src=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb3\/wp-content\/uploads\/sites\/345\/2025\/04\/ResNet18_normalized_confusion_matrix-300x250.png\" alt=\"\" width=\"300\" height=\"250\" srcset=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb3\/wp-content\/uploads\/sites\/345\/2025\/04\/ResNet18_normalized_confusion_matrix-300x250.png 300w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb3\/wp-content\/uploads\/sites\/345\/2025\/04\/ResNet18_normalized_confusion_matrix-768x640.png 768w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb3\/wp-content\/uploads\/sites\/345\/2025\/04\/ResNet18_normalized_confusion_matrix-1024x853.png 1024w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb3\/wp-content\/uploads\/sites\/345\/2025\/04\/ResNet18_normalized_confusion_matrix.png 1200w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<p><span style=\"font-weight: 400\">So overall, our ML plant health classification model has a FPR of 5.04%, and a FNR of 9.09%. We had initially stated that we wanted a FPR of less than 10% (which was achieved), and a FNR of less than 5% (which was not achieved). Given that these were the best results achieved, I will have to update the design requirements to reflect that. Our new targets are a FPR &lt;10% and a FNR &lt;10%.\u00a0<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">Overall Tests:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">For overall systems testing we manually performed end to end testing the following systems\u00a0<\/span>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Plant Identification through webapp (Jana and Yuna)<\/span>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Fully testing the process of inserting a plant and having it display on the webapp for the user if they do not know the plant\u00a0<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Initial tests found this working successfully with the API, however, sometimes delays in MQTT protocol cause the API to timeout, to fix this we increased the timeout for the call and ensured faster MQTT times buy not overloading the RPI\u2019s memory and implementing threading for MQTT calls<\/span><\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Plant Health Classification through webapp (Jana and Yuna)<\/span>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Fully testing the user being able to get a recent health status of the plant through the webapp<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">A successful classification is visible on the webapp of the plant\u2019s health through a capture of the plant&#8217;s image and classification within ~5s<\/span><\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Manual actuator control through webapp (Yuna, Jana, and Zara)<\/span>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Testing turning on and off all the actuators through the webapp<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">All work with a latency of &lt;0.5s<\/span><\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Automatic actuator control through webapp (Yuna and Zara)<\/span>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Testing switching to automatic control of the system and whether it controls<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Successfully works and the user is able to changes the automatic schedule<\/span><\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Sensor data collecting through webapp (Yuna and Zara)<\/span>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Test to see whether sensor data successfully appears on the webapp for the past 24 hours<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Successfully viewed on the webapp with graphs displaying all data<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>This week, we finished implementing the mister actuator, the heater actuator, and the LED matrix display. We also tested the late fusion machine learning model for plant health classification, fixed several WebApp bugs, and added new functionality to improve usability. Integration between the WebApp, the actuators, and the control system is progressing smoothly, and the &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb3\/2025\/04\/26\/team-status-report-for-04-26-2025\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Team Status Report for 04\/26\/2025&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1012,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[8],"tags":[6],"_links":{"self":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb3\/wp-json\/wp\/v2\/posts\/263"}],"collection":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb3\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb3\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb3\/wp-json\/wp\/v2\/users\/1012"}],"replies":[{"embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb3\/wp-json\/wp\/v2\/comments?post=263"}],"version-history":[{"count":5,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb3\/wp-json\/wp\/v2\/posts\/263\/revisions"}],"predecessor-version":[{"id":276,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb3\/wp-json\/wp\/v2\/posts\/263\/revisions\/276"}],"wp:attachment":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb3\/wp-json\/wp\/v2\/media?parent=263"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb3\/wp-json\/wp\/v2\/categories?post=263"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb3\/wp-json\/wp\/v2\/tags?post=263"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}