mirror of
https://gitlab.fdmci.hva.nl/technische-informatica-sm3/ti-projectten/rooziinuubii79.git
synced 2025-08-05 12:54:57 +00:00
Compare commits
23 Commits
82c4381143
...
Develop_te
Author | SHA1 | Date | |
---|---|---|---|
|
606506e40c | ||
|
6efd95fb32 | ||
|
5eff7fccba | ||
|
a03894e52e | ||
dd2a1b56c4 | |||
|
1563528b67 | ||
|
2e5af52ba8 | ||
|
eb04d35d40 | ||
|
80fcb1ccc3 | ||
|
62cdf98098 | ||
|
db6fa156c9 | ||
|
048790ec8b | ||
|
aca6644c02 | ||
|
492f506aa2 | ||
c76ba93e82 | |||
0bfba0bffe | |||
|
8a5b349040 | ||
|
a41ea1b70c | ||
eb804c888c | |||
a028a6f88f | |||
47b29a1c55 | |||
528de4f3f4 | |||
|
c16ba3cf9d |
10
docs/code/code-requirements.md
Normal file
10
docs/code/code-requirements.md
Normal file
@@ -0,0 +1,10 @@
|
||||
# Requirements
|
||||
|
||||
1. Het compileerd op x86 en ARM architechturen
|
||||
2. Geen dubbele code
|
||||
3. commentaar bij lastige code
|
||||
4. Doxygen comments bij elke functie, behalve als het duidelijk is in de functienaam
|
||||
5. Hou je code leesbaar
|
||||
6. Geen dode code
|
||||
7. Gebruik TODO comments (TODO TREE)
|
||||
8.
|
@@ -1,13 +1,20 @@
|
||||
# Daily stand ups
|
||||
|
||||
??? note "Daily Stand-ups Sprint 4"
|
||||
| Day | Submitted by | What did you do yesterday | What will you do today | Any blockers? |
|
||||
| ---------- | ------------ | ----------------------------- | -------------------------------------------------- | ----------------------- |
|
||||
| 18/11/2024 | Ishak | --- | Engels, Repo fixen, beginnen met nieuwe user story | --- |
|
||||
| 18/11/2024 | Sam | --- | Engels, Feedback verwerken medium stake | None |
|
||||
| 18/11/2024 | Yannick | --- | Engels, Documentatie, Code samenvoegen | None |
|
||||
| 18/11/2024 | Mees | --- | Engels, Onderzoek | None |
|
||||
| 19/11/2024 | Ishak | Engels, Repo fixen | workshop | --- |
|
||||
| 19/11/2024 | Sam | Engels, Feedback verwerken | workshop | None |
|
||||
| 19/11/2024 | Yannick | code samenvoegen,schema maken | workshop, documentatie | None |
|
||||
| 19/11/2024 | Mees | niks | workshop, fixen include path | include path werkt niet |
|
||||
| Day | Submitted by | What did you do yesterday | What will you do today | Any blockers? |
|
||||
| ---------- | ------------ | ----------------------------- | -------------------------------------------------- | ------------------------------------ |
|
||||
| 18/11/2024 | Ishak | --- | Engels, Repo fixen, beginnen met nieuwe user story | --- |
|
||||
| 18/11/2024 | Sam | --- | Engels, Feedback verwerken medium stake | None |
|
||||
| 18/11/2024 | Yannick | --- | Engels, Documentatie, Code samenvoegen | None |
|
||||
| 18/11/2024 | Mees | --- | Engels, Onderzoek | None |
|
||||
| 19/11/2024 | Ishak | Engels, Repo fixen | workshop | --- |
|
||||
| 19/11/2024 | Sam | Engels, Feedback verwerken | workshop | None |
|
||||
| 19/11/2024 | Yannick | code samenvoegen,schema maken | workshop, documentatie | None |
|
||||
| 19/11/2024 | Mees | niks | workshop, fixen include path | include path werkt niet |
|
||||
| 26/11/2024 | Ishak | Workshop | database, engels video opnemen | phpmyadmin werkt niet(weet probleem) |
|
||||
| 26/11/2024 | Sam | opencv | opencv | --- |
|
||||
| 26/11/2024 | Yannick | ziek | ziek | --- |
|
||||
| 26/11/2024 | Mees | Engels video | stepper motor | vscode werkt niet |
|
||||
| 02/12/2024 | Ishak | database | database | --- |
|
||||
| 02/12/2024 | Sam | opencv | camera beeld op website | --- |
|
||||
| 02/12/2024 | Yannick | ziek, documentatie | behuizing voor esp | --- |
|
12
docs/scrum/review_feedback.md
Normal file
12
docs/scrum/review_feedback.md
Normal file
@@ -0,0 +1,12 @@
|
||||
# sprint review 4 feedback
|
||||
|
||||
- Definition of done SMART maken
|
||||
- Uitgebreider beschrijven wat er voor de definition of done nodig is
|
||||
- Testen van de software niet meer dan een halve A4
|
||||
- Acceptatie criteria beter uitschrijven( vragen aan ed)
|
||||
- Meer software ontwikkelen
|
||||
- kijken of we met een punten systeem kunnen werken in user stories. zo kan je zien hoe groot een user story is.
|
||||
- read.me file aanpassen
|
||||
- meer aan documentatie doen.
|
||||
- technisch iets te uitdagend
|
||||
- planning beter maken
|
@@ -535,6 +535,8 @@ void CKobuki::goToXy(long double xx, long double yy) {
|
||||
return;
|
||||
}
|
||||
|
||||
/// @brief Makes the robot move forward for 3 seconds
|
||||
/// @param speedvalue How fast it will drive forward from 0 - 1024
|
||||
void CKobuki::forward(int speedvalue) {
|
||||
// Use the goStraight logic to determine the speed and distance
|
||||
|
||||
@@ -572,10 +574,10 @@ void CKobuki::Rotate(int degrees) {
|
||||
float radians = degrees * PI / 180.0;
|
||||
|
||||
// Calculate the rotation speed in radians per second
|
||||
double radpersec = 1;
|
||||
double RADS_PER_SEC = 1;
|
||||
|
||||
// calculator rotation time and give absolute value
|
||||
float rotation_time = std::abs(radians / radpersec);
|
||||
float rotation_time = std::abs(radians / RADS_PER_SEC);
|
||||
|
||||
// Use original function to set the rotation speed in mm/s
|
||||
setRotationSpeed(radians);
|
||||
@@ -588,6 +590,10 @@ void CKobuki::Rotate(int degrees) {
|
||||
setRotationSpeed(0);
|
||||
}
|
||||
|
||||
|
||||
/// @brief Robot safety function to be ran in another thread. Makes sure the robot does not throw inteself from the table. Only use this when the speed is lower than 350
|
||||
/// @param pointerToMessage Set this pointer to the control message and then it attempts to reset it when it bumps into something so it doesnt keep trying to do the past commant
|
||||
// TODO: make this return bool so it can be used in the control part
|
||||
void CKobuki::robotSafety(std::string *pointerToMessage) {
|
||||
while (true) {
|
||||
|
||||
@@ -602,6 +608,7 @@ void CKobuki::robotSafety(std::string *pointerToMessage) {
|
||||
}
|
||||
}
|
||||
|
||||
/// @brief Robot safety function to be ran in another thread. Makes sure the robot does not throw inteself from the table. Only use this when the speed is lower than 350
|
||||
void CKobuki::robotSafety() {
|
||||
while (true) {
|
||||
|
||||
@@ -614,6 +621,7 @@ void CKobuki::robotSafety() {
|
||||
}
|
||||
}
|
||||
|
||||
/// @brief When called the robot gets a control message to stop whatever its doing
|
||||
void CKobuki::sendNullMessage() {
|
||||
|
||||
unsigned char message[11] = {
|
||||
|
@@ -2,6 +2,7 @@
|
||||
|
||||
MqttClient::MqttClient(const std::string& address, const std::string& clientId, const std::string& username, const std::string& password)
|
||||
//client_ is the connection
|
||||
//here all the @PARAMS are getting set for the connection
|
||||
: client_(address, clientId), username_(username), password_(password), callback_(*this) {
|
||||
client_.set_callback(callback_);
|
||||
options.set_clean_session(true);
|
||||
|
@@ -1,5 +1,5 @@
|
||||
#include "MqttClient.h"
|
||||
|
||||
//example file for testing
|
||||
int main(){
|
||||
MqttClient client("mqtt://localhost:1883", "raspberry_pi_client", "ishak", "kobuki");
|
||||
client.connect();
|
||||
|
@@ -9,7 +9,8 @@ using namespace std;
|
||||
CKobuki robot;
|
||||
std::string readMQTT();
|
||||
void parseMQTT(std::string message);
|
||||
MqttClient client("mqtt://145.92.224.21:1883", "KobukiRPI", "ishak", "kobuki"); // create a client object
|
||||
//ip, clientID, username, password
|
||||
MqttClient client("mqtt://145.92.224.21:1884", "KobukiRPI", "rpi", "rpiwachtwoordofzo"); // create a client object
|
||||
std::string message = "stop";
|
||||
std::string serializeKobukiData(const TKobukiData &data);
|
||||
void sendKobukiData(TKobukiData &data);
|
||||
@@ -18,6 +19,7 @@ void setup()
|
||||
{
|
||||
unsigned char *null_ptr(0);
|
||||
robot.startCommunication("/dev/ttyUSB0", true, null_ptr);
|
||||
//connect mqtt server and sub to commands
|
||||
client.connect();
|
||||
client.subscribe("home/commands");
|
||||
}
|
||||
@@ -149,6 +151,64 @@ void logToFile()
|
||||
}
|
||||
}
|
||||
|
||||
void sendIndividualKobukiData(const TKobukiData &data) {
|
||||
while (true) {
|
||||
client.publishMessage("kobuki/data/timestamp", std::to_string(data.timestamp));
|
||||
client.publishMessage("kobuki/data/BumperCenter", std::to_string(data.BumperCenter));
|
||||
client.publishMessage("kobuki/data/BumperLeft", std::to_string(data.BumperLeft));
|
||||
client.publishMessage("kobuki/data/BumperRight", std::to_string(data.BumperRight));
|
||||
client.publishMessage("kobuki/data/WheelDropLeft", std::to_string(data.WheelDropLeft));
|
||||
client.publishMessage("kobuki/data/WheelDropRight", std::to_string(data.WheelDropRight));
|
||||
client.publishMessage("kobuki/data/CliffCenter", std::to_string(data.CliffCenter));
|
||||
client.publishMessage("kobuki/data/CliffLeft", std::to_string(data.CliffLeft));
|
||||
client.publishMessage("kobuki/data/CliffRight", std::to_string(data.CliffRight));
|
||||
client.publishMessage("kobuki/data/EncoderLeft", std::to_string(data.EncoderLeft));
|
||||
client.publishMessage("kobuki/data/EncoderRight", std::to_string(data.EncoderRight));
|
||||
client.publishMessage("kobuki/data/PWMleft", std::to_string(data.PWMleft));
|
||||
client.publishMessage("kobuki/data/PWMright", std::to_string(data.PWMright));
|
||||
client.publishMessage("kobuki/data/ButtonPress1", std::to_string(data.ButtonPress1));
|
||||
client.publishMessage("kobuki/data/ButtonPress2", std::to_string(data.ButtonPress2));
|
||||
client.publishMessage("kobuki/data/ButtonPress3", std::to_string(data.ButtonPress3));
|
||||
client.publishMessage("kobuki/data/Charger", std::to_string(data.Charger));
|
||||
client.publishMessage("kobuki/data/Battery", std::to_string(data.Battery));
|
||||
client.publishMessage("kobuki/data/overCurrent", std::to_string(data.overCurrent));
|
||||
client.publishMessage("kobuki/data/IRSensorRight", std::to_string(data.IRSensorRight));
|
||||
client.publishMessage("kobuki/data/IRSensorCenter", std::to_string(data.IRSensorCenter));
|
||||
client.publishMessage("kobuki/data/IRSensorLeft", std::to_string(data.IRSensorLeft));
|
||||
client.publishMessage("kobuki/data/GyroAngle", std::to_string(data.GyroAngle));
|
||||
client.publishMessage("kobuki/data/GyroAngleRate", std::to_string(data.GyroAngleRate));
|
||||
client.publishMessage("kobuki/data/CliffSensorRight", std::to_string(data.CliffSensorRight));
|
||||
client.publishMessage("kobuki/data/CliffSensorCenter", std::to_string(data.CliffSensorCenter));
|
||||
client.publishMessage("kobuki/data/CliffSensorLeft", std::to_string(data.CliffSensorLeft));
|
||||
client.publishMessage("kobuki/data/wheelCurrentLeft", std::to_string(data.wheelCurrentLeft));
|
||||
client.publishMessage("kobuki/data/wheelCurrentRight", std::to_string(data.wheelCurrentRight));
|
||||
client.publishMessage("kobuki/data/digitalInput", std::to_string(data.digitalInput));
|
||||
client.publishMessage("kobuki/data/analogInputCh0", std::to_string(data.analogInputCh0));
|
||||
client.publishMessage("kobuki/data/analogInputCh1", std::to_string(data.analogInputCh1));
|
||||
client.publishMessage("kobuki/data/analogInputCh2", std::to_string(data.analogInputCh2));
|
||||
client.publishMessage("kobuki/data/analogInputCh3", std::to_string(data.analogInputCh3));
|
||||
client.publishMessage("kobuki/data/frameId", std::to_string(data.frameId));
|
||||
client.publishMessage("kobuki/data/extraInfo/HardwareVersionPatch", std::to_string(data.extraInfo.HardwareVersionPatch));
|
||||
client.publishMessage("kobuki/data/extraInfo/HardwareVersionMinor", std::to_string(data.extraInfo.HardwareVersionMinor));
|
||||
client.publishMessage("kobuki/data/extraInfo/HardwareVersionMajor", std::to_string(data.extraInfo.HardwareVersionMajor));
|
||||
client.publishMessage("kobuki/data/extraInfo/FirmwareVersionPatch", std::to_string(data.extraInfo.FirmwareVersionPatch));
|
||||
client.publishMessage("kobuki/data/extraInfo/FirmwareVersionMinor", std::to_string(data.extraInfo.FirmwareVersionMinor));
|
||||
client.publishMessage("kobuki/data/extraInfo/FirmwareVersionMajor", std::to_string(data.extraInfo.FirmwareVersionMajor));
|
||||
client.publishMessage("kobuki/data/extraInfo/UDID0", std::to_string(data.extraInfo.UDID0));
|
||||
client.publishMessage("kobuki/data/extraInfo/UDID1", std::to_string(data.extraInfo.UDID1));
|
||||
client.publishMessage("kobuki/data/extraInfo/UDID2", std::to_string(data.extraInfo.UDID2));
|
||||
|
||||
if (!data.gyroData.empty()) {
|
||||
const auto& latestGyro = data.gyroData.back();
|
||||
client.publishMessage("kobuki/data/gyroData/x", std::to_string(latestGyro.x));
|
||||
client.publishMessage("kobuki/data/gyroData/y", std::to_string(latestGyro.y));
|
||||
client.publishMessage("kobuki/data/gyroData/z", std::to_string(latestGyro.z));
|
||||
}
|
||||
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
|
||||
}
|
||||
}
|
||||
|
||||
std::string serializeKobukiData(const TKobukiData &data) {
|
||||
std::string json = "{\"timestamp\":" + std::to_string(data.timestamp) +
|
||||
",\"BumperCenter\":" + std::to_string(data.BumperCenter) +
|
||||
@@ -212,4 +272,4 @@ void sendKobukiData(TKobukiData &data) {
|
||||
client.publishMessage("kobuki/data", serializeKobukiData(data));
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -3,14 +3,16 @@ import paho.mqtt.client as mqtt
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
kobuki_message = "empty"
|
||||
def on_message(client, userdata, message):
|
||||
global kobuki_message #set scope for this variable
|
||||
kobuki_message = str(message.payload.decode("utf-8"))
|
||||
print(kobuki_message)
|
||||
|
||||
# Create an MQTT client instance
|
||||
mqtt_client = mqtt.Client()
|
||||
mqtt_client.username_pw_set("ishak", "kobuki")
|
||||
mqtt_client.connect("localhost", 1883, 60)
|
||||
mqtt_client.username_pw_set("server", "serverwachtwoordofzo")
|
||||
mqtt_client.connect("localhost", 80, 60)
|
||||
mqtt_client.loop_start()
|
||||
mqtt_client.subscribe("kobuki/data")
|
||||
mqtt_client.on_message = on_message # this lines needs to be under the function definition otherwise it cant find which function it needs to use
|
||||
@@ -43,6 +45,10 @@ def move():
|
||||
def data():
|
||||
return kobuki_message
|
||||
|
||||
@app.route('/phpmyadmin/<path:path>')
|
||||
def phpmyadmin_passthrough(path):
|
||||
# Laat Apache deze route direct afhandelen
|
||||
return "", 404
|
||||
|
||||
|
||||
|
||||
|
BIN
src/Python/flask/web/static/images/logo.png
Normal file
BIN
src/Python/flask/web/static/images/logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 200 KiB |
@@ -23,6 +23,22 @@ body {
|
||||
right: 0%;
|
||||
}
|
||||
|
||||
.footer{
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
max-width: 80%;
|
||||
background-color: #fff;
|
||||
border: 1px solid #f0f0f0;
|
||||
border-radius: 50px;
|
||||
align-items: center;
|
||||
margin: 1.5rem auto 0 auto;
|
||||
padding: 0 30px;
|
||||
top: 0%;
|
||||
bottom: auto;
|
||||
left: 0%;
|
||||
right: 0%;
|
||||
}
|
||||
|
||||
.imgNav {
|
||||
height: 50px;
|
||||
border-radius: 20px;
|
||||
@@ -73,6 +89,18 @@ body {
|
||||
transition: transform 0.2s ease, background-color 0.2s ease;
|
||||
}
|
||||
|
||||
.text{
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
.image{
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.sectionHeight{
|
||||
height: 200px;
|
||||
}
|
||||
|
||||
/* Direction buttons */
|
||||
.btn:nth-child(1) {
|
||||
/* Left */
|
||||
|
@@ -43,16 +43,6 @@ section h2 {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
footer {
|
||||
background-color: #333;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
padding: 1rem 0;
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
bottom: 0;
|
||||
}
|
||||
|
||||
form {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
@@ -8,8 +8,9 @@
|
||||
{% block head %}{% endblock %}
|
||||
</head>
|
||||
<body>
|
||||
{% include 'navbar.html' %}
|
||||
{% include 'navbar.html' %}
|
||||
{% block content %}
|
||||
{% endblock %}
|
||||
|
||||
</body>
|
||||
</html>
|
21
src/Python/flask/web/templates/footer.html
Normal file
21
src/Python/flask/web/templates/footer.html
Normal file
@@ -0,0 +1,21 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Document</title>
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
|
||||
</head>
|
||||
<body>
|
||||
<footer class="footer">
|
||||
<img src="{{url_for('static', filename='images/logo_kobuki.png')}}" alt="logo" class="imgNav" />
|
||||
<h3>© 2024 Kobuki Robot Project. All rights reserved.</h3>
|
||||
<div class="buttonContainer">
|
||||
<a href="{{ url_for('control') }}" target="_blank">
|
||||
<button class="click connectButton">Controller</button>
|
||||
</a>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</body>
|
||||
</html>
|
@@ -1,58 +1,58 @@
|
||||
{% extends 'base.html' %} {% block head %}
|
||||
<link rel="stylesheet" href="../static/style.css" />
|
||||
{% endblock %} {% block content %}
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Kobuki Robot Project</title>
|
||||
<link rel="stylesheet" href="../static/styleIndex.css" />
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<h1>Welcome to the Kobuki Robot Project</h1>
|
||||
<nav>
|
||||
<ul>
|
||||
<li><a href="#home">Home</a></li>
|
||||
<li><a href="#about">About</a></li>
|
||||
<li><a href="#contact">Contact</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<section id="home">
|
||||
<h2>Introduction</h2>
|
||||
<p>The Kobuki Robot Project is an innovative initiative aimed at developing a versatile and intelligent robot platform. Our goal is to create a robot that can navigate autonomously, interact with its environment, and perform various tasks.</p>
|
||||
<img src="static/kobuki.jpg" alt="Kobuki Robot">
|
||||
<link rel="stylesheet" href="../static/style.css" />
|
||||
</head>
|
||||
<body>
|
||||
<section class="container sectionHeight">
|
||||
<p class="text">
|
||||
The Kobuki Robot Project is an innovative initiative aimed at developing
|
||||
a versatile and intelligent robot platform. Our goal is to create a
|
||||
robot that can navigate autonomously, interact with its environment, and
|
||||
perform various tasks.
|
||||
</p>
|
||||
<img src="{{url_for('static', filename='images/logo.png')}}" alt="logo" class="image" />
|
||||
</section>
|
||||
|
||||
<section id="about">
|
||||
<h2>About the Project</h2>
|
||||
<p>This project is a collaborative effort involving engineers, researchers, and enthusiasts. The Kobuki robot is equipped with various sensors, including bumpers, cliff sensors, and gyroscopes, to help it navigate and interact with its surroundings.</p>
|
||||
<p>Key features of the Kobuki Robot:</p>
|
||||
<ul>
|
||||
<li>Autonomous navigation</li>
|
||||
<li>Obstacle detection and avoidance</li>
|
||||
<li>Real-time data processing</li>
|
||||
<li>Remote control and monitoring</li>
|
||||
</ul>
|
||||
<section class="container sectionHeight" id="about">
|
||||
<h2>About the Project</h2>
|
||||
<p>
|
||||
This project is a collaborative effort involving engineers, researchers,
|
||||
and enthusiasts. The Kobuki robot is equipped with various sensors,
|
||||
including bumpers, cliff sensors, and gyroscopes, to help it navigate
|
||||
and interact with its surroundings.
|
||||
</p>
|
||||
<p>Key features of the Kobuki Robot:</p>
|
||||
<ul>
|
||||
<li>Autonomous navigation</li>
|
||||
<li>Obstacle detection and avoidance</li>
|
||||
<li>Real-time data processing</li>
|
||||
<li>Remote control and monitoring</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section id="contact">
|
||||
<h2>Contact Us</h2>
|
||||
<form id="contact-form" action="/contact" method="post">
|
||||
<label for="name">Name:</label>
|
||||
<input type="text" id="name" name="name" required>
|
||||
<label for="email">Email:</label>
|
||||
<input type="email" id="email" name="email" required>
|
||||
<label for="message">Message:</label>
|
||||
<textarea id="message" name="message" required></textarea>
|
||||
<button type="submit">Send</button>
|
||||
</form>
|
||||
<section class="container" id="contact">
|
||||
<h2>Contact Us</h2>
|
||||
<form id="contact-form" action="/contact" method="post">
|
||||
<label for="name">Name:</label>
|
||||
<input type="text" id="name" name="name" required />
|
||||
<label for="email">Email:</label>
|
||||
<input type="email" id="email" name="email" required />
|
||||
<label for="message">Message:</label>
|
||||
<textarea id="message" name="message" required></textarea>
|
||||
<button type="submit">Send</button>
|
||||
</form>
|
||||
</section>
|
||||
|
||||
<footer>
|
||||
<p>© 2023 Kobuki Robot Project. All rights reserved.</p>
|
||||
</footer>
|
||||
{% include 'footer.html' %}
|
||||
|
||||
<script src="static/script.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
</body>
|
||||
</html>
|
||||
{% endblock %}
|
||||
|
@@ -11,13 +11,9 @@
|
||||
<img src="{{url_for('static', filename='images/logo_kobuki.png')}}" alt="logo" class="imgNav" />
|
||||
<h3>Kobuki</h3>
|
||||
<div class="buttonContainer">
|
||||
<a
|
||||
href="https://gitlab.fdmci.hva.nl/propedeuse-hbo-ict/onderwijs/2023-2024/out-a-se-ti/blok-3/vuupoofeehoo27"
|
||||
target="_blank"
|
||||
>
|
||||
<button class="click connectButton">Placeholder</button>
|
||||
<a href="{{ url_for('control') }}" target="_blank">
|
||||
<button class="click connectButton">Controller</button>
|
||||
</a>
|
||||
<!-- <a href="./signup.html">sign in</a> -->
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
7
src/Python/wsgi.py
Normal file
7
src/Python/wsgi.py
Normal file
@@ -0,0 +1,7 @@
|
||||
import sys
|
||||
import logging
|
||||
|
||||
logging.basicConfig(stream=sys.stderr)
|
||||
sys.path.insert(0, "/home/ishak/rooziinuubii79/src/Python/flask/web")
|
||||
|
||||
from app import app as application
|
42
teamdocumentatie/Ishak/hoofd-deelvraag.md
Normal file
42
teamdocumentatie/Ishak/hoofd-deelvraag.md
Normal file
@@ -0,0 +1,42 @@
|
||||
# Hoofd en deelvragen
|
||||
|
||||
**Wat is de aanleiding?**
|
||||
De aanleiding is de de behoefte aan veilige communicatie tussen apparaten. Dit is belangrijk omdat onbeveiligde dataoverdracht kan leiden tot datalekken.
|
||||
|
||||
**wat is het probleem/behoefte en waaruit blijkt dat?**
|
||||
Het probleem is dat data die tussen apparaten wordt verstuurd kwetsbaar kan zijn. Dit blijkt nadat wij te horen hebben gekregen dat er niet goed was omgegaan met communicatie tussen apparaten.
|
||||
|
||||
**Wie heeft het probleem/behoefte?**
|
||||
ons groepje, maar ook bijvoorbeeld grote bedrijven waar het heel belangrijk is dat data veilig wordt verstuurd zonder dat het in de verkeerde handen valt.
|
||||
|
||||
**Wanneer is het probleem/behoefte ontstaan?**
|
||||
Het probleem is ontstaan nadat wij te horen hebben gekregen dat er niet goed was omgegaan met communicatie tussen apparaten.
|
||||
|
||||
**Waarom is het een probleem?**
|
||||
Het is een probleem omdat onbeveiligde communicatie kan leiden tot datalekken waaronder privacy. Hiermee kunnen bedrijven in de problemen komen.
|
||||
|
||||
**Waar doet het probleem/behoefte zich voor (afbakening)?**
|
||||
Het probleem komt voor in verschillende sectoren waar data tussen apparaten wordt verstuurd. Dit kan zijn in de zorg, industrie, op kantoor, maar ook met IoT projecten wat je thuis kan hebben.
|
||||
|
||||
## Hoofdvraag
|
||||
|
||||
Welke communicatieprotocol geeft de mogelijkheid om veilig en betrouwbaar te communiceren tussen IoT apparaten?
|
||||
|
||||
## Deelvragen
|
||||
|
||||
1. Wat houdt veilige en betrouwbare communicatie tussen apparaten in?
|
||||
2. Welke protocollen zijn er om veilig en betrouwbaar te communiceren tussen apparaten?
|
||||
3. Wat zijn de voor- en nadelen van de verschillende protocollen?
|
||||
|
||||
## Bronnen
|
||||
|
||||
- Singh, S., & Jyoti. (2024, June 7). Secure Communications Protocols for IoT networks: a survey. https://journal.ijprse.com/index.php/ijprse/article/view/1082
|
||||
- Nguyen, K. T., Laurent, M., Oualha, N., CEA, & Institut Mines-Telecom. (2015). Survey on secure communication protocols for the Internet of Things. In Ad Hoc Networks (Vol. 32, pp. 17–31) [Journal-article]. http://dx.doi.org/10.1016/j.adhoc.2015.01.006
|
||||
- Miorandi, D., Sicari, S., De Pellegrini, F., & Imrich Chlamtac. (2012). Internet of things: Vision, applications and research challenges. In Ad Hoc Networks (Vol. 10, pp. 1497–1516) [Journal-article]. Elsevier B.V. http://dx.doi.org/10.1016/j.adhoc.2012.02.016
|
||||
- Christiano, P. (2023, November 5). Top 9 IoT communication protocols & their features in 2024: An In-Depth guide - ExpertBeacon. Expertbeacon. https://expertbeacon.com/iot-communication-protocol/
|
||||
- Yugha, R., & Chithra, S. (2020). A survey on technologies and security protocols: Reference for future generation IoT. Journal of Network and Computer Applications, 169, 102763. https://doi.org/10.1016/j.jnca.2020.102763
|
||||
- De Mendizábal, I. (2022, June 16). IoT Communication Protocols—IoT Data Protocols. Technical Articles. https://www.allaboutcircuits.com/technical-articles/internet-of-things-communication-protocols-iot-data-protocols/
|
||||
- IoT-technologieën en -protocollen | Microsoft Azure. (n.d.). https://azure.microsoft.com/nl-nl/solutions/iot/iot-technology-protocols
|
||||
- Het IoT verbinden: wat is MQTT en waarin verschilt het van CoAP? (n.d.). https://www.onlogic.com/nl/blog/het-iot-verbinden-wat-is-mqtt-en-waarin-verschilt-het-van-coap/
|
||||
- Nader, K. (2023, October 30). Wat zijn de voordelen van het gebruik van WebSocket voor IoT-communicatie? AppMaster - Ultimate All-in No-code Platform. https://appmaster.io/nl/blog/websocket-voor-iot-communicatie
|
||||
- Sidna, J., Amine, B., Abdallah, N., & Alami, H. E. (2020). Analysis and evaluation of communication Protocols for IoT Applications. Karbala International Journal of Modern Science. https://doi.org/10.1145/3419604.3419754
|
BIN
teamdocumentatie/Ishak/hoofd-deelvraag.pdf
Normal file
BIN
teamdocumentatie/Ishak/hoofd-deelvraag.pdf
Normal file
Binary file not shown.
Reference in New Issue
Block a user