{"id":8248,"date":"2023-10-30T06:52:24","date_gmt":"2023-10-30T05:52:24","guid":{"rendered":"https:\/\/dronesonen.usn.no\/?p=8248"},"modified":"2023-10-30T13:16:47","modified_gmt":"2023-10-30T12:16:47","slug":"hydroplant-subsystems-week-10","status":"publish","type":"post","link":"https:\/\/dronesonen.usn.no\/?p=8248","title":{"rendered":"Hydroplant Subsystems &#8211; Week 10"},"content":{"rendered":"\n<div class=\"wp-block-group alignwide is-vertical is-layout-flex wp-container-core-group-is-layout-fe9cc265 wp-block-group-is-layout-flex\">\n<p>Welcome back to this weeks blog! We had a demo for a local journalist on friday, and the picture bellow describes our sitiuation perfect. It was good to find out more issues with our system, this time was the network which we never have had problems with. The way we did the streaming may be a cause due to more network traffic than our raspberry pi which acts as our router can handle. We will debug more the issues next week. The demo also thought us the lesson about our most critical points of the system, since all our communication is based on our local network, the network needs carfully configuration to minimize the risk of failing.  <\/p>\n\n\n\n<p>However, we had a great demonstration of the system and we got some training to for the exam.  <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"840\" height=\"681\" src=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2023\/10\/image-178.png\" alt=\"\" class=\"wp-image-8257\" srcset=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2023\/10\/image-178.png 840w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2023\/10\/image-178-300x243.png 300w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2023\/10\/image-178-768x623.png 768w\" sizes=\"auto, (max-width: 840px) 100vw, 840px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Shahin-Ostadahmadi\">Shahin Ostadahmadi<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"Microcontroller\">Microcontroller<\/h4>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"Nutrition-regulation-Physical\">Nutrition regulation Physical<\/h5>\n\n\n\n<p>Last week I made a physical design for nutrition regulation as you can see in the diagram below.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"681\" src=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2023\/10\/image-170-1024x681.png\" alt=\"\" class=\"wp-image-8249\" srcset=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2023\/10\/image-170-1024x681.png 1024w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2023\/10\/image-170-300x200.png 300w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2023\/10\/image-170-768x511.png 768w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2023\/10\/image-170-1536x1022.png 1536w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2023\/10\/image-170.png 1623w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>This week we received most of the equipments and started to implement the solution. We are still waiting for three of the electrical valves to start testing, they will arrive next week. However, we decided to adjust the design to fit with the physical structure of the system. The changes will be as the diagram shows below. I\u2019ve started with the construction of the <strong>Nutrition-regulation-station<\/strong> and I will be finished with that next week. We will then connect all the electronics to it and test it as a whole.<br><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"641\" src=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2023\/10\/image-171-1024x641.png\" alt=\"\" class=\"wp-image-8250\" srcset=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2023\/10\/image-171-1024x641.png 1024w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2023\/10\/image-171-300x188.png 300w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2023\/10\/image-171-768x481.png 768w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2023\/10\/image-171-1536x962.png 1536w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2023\/10\/image-171.png 1616w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"Nutrition-regulation-code\">Nutrition regulation code<\/h5>\n\n\n\n<p>I have implemented the code for the nutrition regulation controller, and I will test the code when the physical construction is done. There are many variables to consider in the code, and some of the most important are:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The code has to be state machine-based so the microcontroller can do other things too<\/li>\n\n\n\n<li>All the actuators and sensors have to change their IDs with respect to the current Reservoir it regulates since we are storing the data in the database, we have to know which stage the values belong to<\/li>\n\n\n\n<li>The regulators such as pH and EC have to change the config values such as set_point(ex: EC should be 2.2 in stage 2, 1.8 in stage one etc.), upper -and lower reaction values<\/li>\n\n\n\n<li>Every time we regulate a reservoir, we have to give the system enough time to be sure that the nutrition is mixed well enough with the water before moving to the next regulator or stage, also known as \u201c<strong>Stabilization mode<\/strong>\u201d<\/li>\n\n\n\n<li>After each stage is done, we have to give the system enough time to \u201cflush\u201d the nutrition box before moving to the next stage<\/li>\n\n\n\n<li>Before each stage, the controller has to route the input and output water from\/to the correct reservoir.<\/li>\n<\/ul>\n\n\n\n<p>The state machine diagram bellow shows the states the controller can be in. There is also different states the system can be in when the system is in \u201cRegulate pH\u201c or \u201cRegulate EC\u201c, but i have excluded those state for the simplicity.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"711\" src=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2023\/10\/image-172-1024x711.png\" alt=\"\" class=\"wp-image-8251\" srcset=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2023\/10\/image-172-1024x711.png 1024w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2023\/10\/image-172-300x208.png 300w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2023\/10\/image-172-768x534.png 768w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2023\/10\/image-172-1536x1067.png 1536w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2023\/10\/image-172.png 1658w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>I&#8217;m excited to test the controller next week!<\/p>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"Communication\">Communication<\/h5>\n\n\n\n<p>We had some problems with the communication for all our nods, they lost often the connection to the network and Mqtt-broker. I implemented the solution for the issues in the library code. The nodes now check if they lost connection to either the broker or network regularly and when they are trying to communicate with outside itself, they are automatically connecting and running all necessary activities for reconnection. The solution was tested for a period of 2 hours, and the node still was connected to the system. The test is approved.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"GUI\">GUI<\/h4>\n\n\n\n<p>Testing out some visualization for reservoir overview. The goal here is to show information for all the reservoirs. As you can see in the picture below, the page shows the data for our three reservoirs with visualization for water level. The data for now is random and it is meant to be for testing. However, since the GUI is based on the framework Model-view-controller, the visual items can be controlled by changing the interface for data-input. The data will be replaced with real data and tested when we have implemented the interface.<\/p>\n\n\n\n<p>I also added some extra buttons to send commands to our camera in the system to stream.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"550\" src=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2023\/10\/image-173-1024x550.png\" alt=\"\" class=\"wp-image-8252\" srcset=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2023\/10\/image-173-1024x550.png 1024w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2023\/10\/image-173-300x161.png 300w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2023\/10\/image-173-768x412.png 768w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2023\/10\/image-173-1536x825.png 1536w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2023\/10\/image-173.png 1918w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"Commits\">Commits<\/h3>\n\n\n\n<p><em>Commits are only visible to members of the organization.<\/em><\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/hydroplantno\/library\/commit\/cdf08ba6ed095d532358f7a99589e4fe5bb11342\">https:\/\/github.com\/hydroplantno\/library\/commit\/cdf08ba6ed095d532358f7a99589e4fe5bb11342<\/a>Connect your Github account<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/hydroplantno\/gui-node\/commit\/afb3f33fae9728a18e60ba5ca379110718c9c105\">https:\/\/github.com\/hydroplantno\/gui-node\/commit\/afb3f33fae9728a18e60ba5ca379110718c9c105<\/a>Connect your Github account<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/hydroplantno\/gui-node\/commit\/ce693c84900667ef5e35c80443bf171472005958\">https:\/\/github.com\/hydroplantno\/gui-node\/commit\/ce693c84900667ef5e35c80443bf171472005958<\/a>Connect your Github account<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/hydroplantno\/water-node\/commit\/684cde97c46eb44ee3f2a3abaab66ada6e2cff67\">https:\/\/github.com\/hydroplantno\/water-node\/commit\/684cde97c46eb44ee3f2a3abaab66ada6e2cff67<\/a>Connect your Github account<\/p>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Oscar-Melby\">Oscar Melby<\/h2>\n\n\n\n<p>Tested the whole system again this week as we had an interview with a local journalist, and wanted to show a demo. Almost everything which could go wrong went wrong, but I think we learned a couple of things from it. Here\u2019s a picture of the system with running water and all lights on.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"768\" src=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2023\/10\/image-174-1024x768.png\" alt=\"\" class=\"wp-image-8253\" srcset=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2023\/10\/image-174-1024x768.png 1024w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2023\/10\/image-174-300x225.png 300w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2023\/10\/image-174-768x576.png 768w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2023\/10\/image-174-1536x1152.png 1536w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2023\/10\/image-174-2048x1536.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"Restructuring-master-controller-a-bit\">Restructuring master-controller a bit<\/h3>\n\n\n\n<p>While explaining how I imagined how autonomy should be implemented further, Shahin came up the idea of restructuring how I had done things so far. After a bit of thinking and discussing, this seemed like a better way to do things, than I had done so far. Issue is; the structure right now is a bit complex while being simple at the same time which makes things a bit tricky. It\u2019s hard to follow whats happening as everything is almost in a \u201cflat\u201d structure, which really doesn\u2019t represent how the system is set up. It was great for getting things setup and tested fast, but might not be the best structure when adding more complexity and logic to the system.<\/p>\n\n\n\n<p>As of how things were set up it looked like this:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"428\" height=\"314\" src=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2023\/10\/image-175.png\" alt=\"\" class=\"wp-image-8254\" srcset=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2023\/10\/image-175.png 428w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2023\/10\/image-175-300x220.png 300w\" sizes=\"auto, (max-width: 428px) 100vw, 428px\" \/><\/figure>\n\n\n\n<p>If you for example wanted to turn on all lights in the first floor, you would need to find every topic containing \u201cLED\u201d and \u201cfloor_1\u201d in <code>all_topics<\/code>. You would also need to filter out the \u201creceipt\u201d topics. Easy to do, but maybe not the best way to handle things when there is a lot of components, actions and receipts which is going to be dealt with.<\/p>\n\n\n\n<p>Shahin drew a sketch of how we could implement the new structure into master-controller. Somewhat like how the GUI is implemented, however this might be \u201ceasier\u201d for GUI to do as all the topics are already made for it beforehand by master.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"768\" src=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2023\/10\/image-176-1024x768.png\" alt=\"\" class=\"wp-image-8255\" srcset=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2023\/10\/image-176-1024x768.png 1024w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2023\/10\/image-176-300x225.png 300w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2023\/10\/image-176-768x576.png 768w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2023\/10\/image-176-1536x1152.png 1536w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2023\/10\/image-176-2048x1536.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>The sketch might not make so much sense, but helped me a lot to rethink how it could be done easily and dynamically.<\/p>\n\n\n\n<p>Have started to add some things, but are not done yet. The \u201cold\u201d version of master-controller still works, and will be used by the others while I\u2019ll change to the new structure and test things, so I won\u2019t halt any progress for the others (hopefully) <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/hydroplant.atlassian.net\/gateway\/api\/emoji\/312ef425-3f94-4df3-90c7-3336b4fcb865\/1f91e\/path\" alt=\":fingers_crossed:\" width=\"20\" height=\"20\"><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"Snap-on-command\">Snap-on-command<\/h3>\n\n\n\n<p>When we stream a video feed from the camera to our Flask app, we would constantly be \u201cloading\u201d in the browser. The refresh icon would load forever without finishing as we got frame after frame on stream. The stream was smooth and worked as intended, but would for some reason crash and not catch up again. We thought this could be because we looked at the \u201cembedded video stream\u201d directly and not including the stream as an embed on another page. So added this, and things seems to be working fine so far. While running the stream however, our network tends to freeze and be slow. If this is a coincidence or because of the video stream we don\u2019t know yet. Looking at the network overview the traffic doesn\u2019t look absurd and has not been an issue before.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"Commits.1\">Commits<\/h3>\n\n\n\n<p><a href=\"https:\/\/github.com\/hydroplantno\/snap-on-command\/commit\/369f80cf427a3eae8e788334575a975283a4b51c\">https:\/\/github.com\/hydroplantno\/snap-on-command\/commit\/369f80cf427a3eae8e788334575a975283a4b51c<\/a>Connect your Github account<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/hydroplantno\/master-controller\/commit\/93ed56036aeeaa87053f6a9e92569b567b609124\">https:\/\/github.com\/hydroplantno\/master-controller\/commit\/93ed56036aeeaa87053f6a9e92569b567b609124<\/a>Connect your Github account<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/hydroplantno\/master-controller\/commit\/98433725b0f5758a4fbb14612d88aae8b24f867a\">https:\/\/github.com\/hydroplantno\/master-controller\/commit\/98433725b0f5758a4fbb14612d88aae8b24f867a<\/a>Connect your Github account<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Aditi-Deshpande\">Aditi Deshpande<\/h2>\n\n\n\n<p>This week I\u2019ve mostly focused on other subjects, but on Monday, I worked with Shahin to fix the camera on the Plant Info Node. We got the Raspberry Pi, connected it to a USB camera, and attached it. Oscar and Shahin had previously figured out to how to get a live stream from the camera, and we managed to configure everything. I worked on how to combine both the movement of the PIN to the right place and also send a command to take a picture to the pi and make sure it is saved in a place. I\u2019ll be further working on the image analysis of the picture using a simple way of just counting green pixels and determining if the plant is ready to move or not. On Friday, I worked more on testing and fixing small problems around the total system. We got the PIN to move to the correct place, take a picture from the camera, and save it.<\/p>\n\n\n\n<p>Here\u2019s a picture of how we attached the camera:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"707\" src=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2023\/10\/image-177-1024x707.png\" alt=\"\" class=\"wp-image-8256\" srcset=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2023\/10\/image-177-1024x707.png 1024w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2023\/10\/image-177-300x207.png 300w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2023\/10\/image-177-768x530.png 768w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2023\/10\/image-177-1536x1061.png 1536w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2023\/10\/image-177.png 2000w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Here are the code commits:<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"1\">\n<li>Moving to the right place with switches : <a href=\"https:\/\/github.com\/hydroplantno\/plant-information-node\/commit\/f1988705669cd3558389a866a5c5607fa63cf36f\">https:\/\/github.com\/hydroplantno\/plant-information-node\/commit\/f1988705669cd3558389a866a5c5607fa63cf36f<\/a>Connect your Github account<\/li>\n\n\n\n<li>Taking a picture: <a href=\"https:\/\/github.com\/hydroplantno\/plant-information-node\/commit\/44009c37489c59a6ea4e715f5f64942e95c22c26\">https:\/\/github.com\/hydroplantno\/plant-information-node\/commit\/44009c37489c59a6ea4e715f5f64942e95c22c26<\/a>Connect your Github account<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Theo-Magnor\">Theo Magnor<\/h2>\n\n\n\n<p>This week i got the main functionality of the moveToRow function working, what remains is finalising and testing the sending of receipt. We want the master controller to revive the plant movers location after each operation. Next week the physical build of the small arm that will push the rows should be done, this means i can start testing and debugging the code i have written for lower\/raise arm and attach\/detach.<\/p>\n\n\n\n<p>Here is the the moveToRow function<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>void PlantMoverController::moveToRow(int targetSwitch){\r\n    while(true){  \r\n        \/\/ Communication\r\n        if (communication_interval + 1000 &gt; millis()){  \/\/ Check if it's time to ping\r\n            communication_interval = millis();  \/\/ Update the last communication time\r\n            m_communication-&gt;loop();  \/\/ Perform the communication loop\r\n        }\r\n        \r\n        \/\/ Moving Backward\r\n        if (backward == true){  \/\/ Check if the system should move backward\r\n            my_stepper-&gt;moveBackward(stepsToMove);  \/\/ Move the stepper motor backward\r\n            if (m_row_switch == true) {  \/\/ Check if a row switch is activated\r\n                if (targetRow == m_currentRow){  \/\/ Check if the target row is reached\r\n                    my_stepper-&gt;moveBackward(20);  \/\/ Move a bit more to deactivate the switch\r\n                    backward = false;  \/\/ Reset move backward flag\r\n                    m_row_switch = false;  \/\/ Reset row switch flag\r\n                    state = s_idle;  \/\/ Set state to idle\r\n                }\r\n                m_currentSwitch -= 1;  \/\/ Decrement the current switch count\r\n                m_row_switch = false;  \/\/ Reset row switch flag\r\n            }}\r\n                \r\n        \/\/ Moving Forward\r\n        if (forward == true) {  \/\/ Check if the system should move forward\r\n            my_stepper-&gt;moveForward(stepsToMove);  \/\/ Move the stepper motor forward\r\n            if (m_row_switch == true) {  \/\/ Check if a row switch is activated\r\n                Serial.print(\"Moving forwards, currentSwitch: \");\r\n                Serial.println(m_currentSwitch);\r\n                if (targetRow == m_currentSwitch){  \/\/ Check if the target row is reached\r\n                    my_stepper-&gt;moveBackward(20);  \/\/ Move a bit more to deactivate the switch\r\n                    forward = false;  \/\/ Reset move backward flag\r\n                    m_row_switch = false;  \/\/ Reset row switch flag\r\n                    state = s_idle;  \/\/ Set state to idle\r\n                }\r\n                m_currentSwitch += 1;  \/\/ Increment the current switch count\r\n                m_row_switch = false;  \/\/ Reset row switch flag\r\n            }}}}<\/code><\/pre>\n\n\n\n<p>In the code we can see that move direction is dependent on two bools;&#8221;backward&#8221; and &#8220;forward&#8221;. Here is the code for calculating the move direction:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>     case PlantMoverController::States::s_calculate_move_direction:\r\n    {   \r\n        if( m_currentRow &gt; m_targetRow){\r\n            Serial.println(\"backward\");\r\n            backward = true;\r\n            state = s_moving;\r\n        }\r\n\r\n\t\tif( m_currentRow &lt; m_targetRow ){\r\n            Serial.println(\"forward\");\r\n            forward = true;\r\n            state = s_moving;\r\n        }}<\/code><\/pre>\n\n\n\n<p>When the state is switched to moving, the moveToRow function is run.<\/p>\n\n\n\n<p>Next week i will test the code i have written for raising the arm, i will also have to figure out the amount of steps it takes to move the arm between its intended states.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignwide is-vertical is-layout-flex wp-container-core-group-is-layout-fe9cc265 wp-block-group-is-layout-flex\">\n<h2 class=\"wp-block-heading\" id=\"Ivan-Bergmann-Maronsen\">Ivan Bergmann Maronsen<\/h2>\n\n\n\n<p>This week I found out, that my initial design would not be able to do what I wanted it to do. So instead we are opting for a design that only has 1 LED to &#8220;show&#8221; when the sensors are on. Now that I have fixed this &#8220;issue&#8221; I am able to order my PCB this coming week.<\/p>\n\n\n\n<p>Also this week, I and the others set up the lights for the second floor, and we connected everything down back to the &#8220;Climate node&#8221;. So that all the lights are now controllable through the GUI so that they can be turned on and off individually now.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Welcome back to this weeks blog! We had a demo for a local journalist on friday, and the picture bellow describes our sitiuation perfect. It was good to find out more issues with our system, this time was the network which we never have had problems with. The way we did the streaming may be [&hellip;]<\/p>\n","protected":false},"author":99,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[99],"class_list":["post-8248","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-hydroplant"],"_links":{"self":[{"href":"https:\/\/dronesonen.usn.no\/index.php?rest_route=\/wp\/v2\/posts\/8248","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dronesonen.usn.no\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dronesonen.usn.no\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dronesonen.usn.no\/index.php?rest_route=\/wp\/v2\/users\/99"}],"replies":[{"embeddable":true,"href":"https:\/\/dronesonen.usn.no\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=8248"}],"version-history":[{"count":5,"href":"https:\/\/dronesonen.usn.no\/index.php?rest_route=\/wp\/v2\/posts\/8248\/revisions"}],"predecessor-version":[{"id":8291,"href":"https:\/\/dronesonen.usn.no\/index.php?rest_route=\/wp\/v2\/posts\/8248\/revisions\/8291"}],"wp:attachment":[{"href":"https:\/\/dronesonen.usn.no\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=8248"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dronesonen.usn.no\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=8248"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dronesonen.usn.no\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=8248"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}