Skip to content

Commit

Permalink
Initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
aitormurgu committed Feb 21, 2024
1 parent abbb36e commit 4e2451d
Show file tree
Hide file tree
Showing 69 changed files with 16,395 additions and 0 deletions.
3 changes: 3 additions & 0 deletions babel.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
module.exports = {
presets: [require.resolve('@docusaurus/core/lib/babel/preset')],
};
12 changes: 12 additions & 0 deletions blog/2019-05-28-first-blog-post.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
slug: first-blog-post
title: First Blog Post
authors:
name: Gao Wei
title: Docusaurus Core Team
url: https://github.com/wgao19
image_url: https://github.com/wgao19.png
tags: [hola, docusaurus]
---

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
44 changes: 44 additions & 0 deletions blog/2019-05-29-long-blog-post.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
---
slug: long-blog-post
title: Long Blog Post
authors: endi
tags: [hello, docusaurus]
---

This is the summary of a very long blog post,

Use a `<!--` `truncate` `-->` comment to limit blog post size in the list view.

<!--truncate-->

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
20 changes: 20 additions & 0 deletions blog/2021-08-01-mdx-blog-post.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
slug: mdx-blog-post
title: MDX Blog Post
authors: [slorber]
tags: [docusaurus]
---

Blog posts support [Docusaurus Markdown features](https://docusaurus.io/docs/markdown-features), such as [MDX](https://mdxjs.com/).

:::tip

Use the power of React to create interactive blog posts.

```js
<button onClick={() => alert('button clicked!')}>Click me!</button>
```

<button onClick={() => alert('button clicked!')}>Click me!</button>

:::
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
25 changes: 25 additions & 0 deletions blog/2021-08-26-welcome/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
---
slug: welcome
title: Welcome
authors: [slorber, yangshun]
tags: [facebook, hello, docusaurus]
---

[Docusaurus blogging features](https://docusaurus.io/docs/blog) are powered by the [blog plugin](https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog).

Simply add Markdown files (or folders) to the `blog` directory.

Regular blog authors can be added to `authors.yml`.

The blog post date can be extracted from filenames, such as:

- `2019-05-30-welcome.md`
- `2019-05-30-welcome/index.md`

A blog post folder can be convenient to co-locate blog post images:

![Docusaurus Plushie](./docusaurus-plushie-banner.jpeg)

The blog supports tags as well!

**And if you don't want a blog**: just delete this directory, and use `blog: false` in your Docusaurus config.
17 changes: 17 additions & 0 deletions blog/authors.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
endi:
name: Endilie Yacop Sucipto
title: Maintainer of Docusaurus
url: https://github.com/endiliey
image_url: https://github.com/endiliey.png

yangshun:
name: Yangshun Tay
title: Front End Engineer @ Facebook
url: https://github.com/yangshun
image_url: https://github.com/yangshun.png

slorber:
name: Sébastien Lorber
title: Docusaurus maintainer
url: https://sebastienlorber.com
image_url: https://github.com/slorber.png
39 changes: 39 additions & 0 deletions docs/Tutorials/Creating a Biotz account.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
User registration is not currently available for the public. Please [contact us](https://www.biotz.io/contact-us) if you want to create an account.

# Account registration

Please not that In order to complete this tutorial you will need a valid email address.

First navigate to the [Biotz Cloud](https://auth.biotz.io/realms/biotz-platform/protocol/openid-connect/auth?client_id=biotz-platform-spa&redirect_uri=https%3A%2F%2Fapp.biotz.io%2Foverview&state=9821fae0-b8ea-4b9f-b7f2-ebe9ad3c482c&response_mode=fragment&response_type=code&scope=openid&nonce=2063c301-fb70-4d7e-81f0-5790cefcf23f&ui_locales=en&code_challenge=bj-DokiKe4Pu4Xfta9-fhtiK1qjA8--GqPnUwWXfv1Y&code_challenge_method=S256). Once here you will be presented with the login page:

![Sign In](/img/SignIn.png)

Since you do not have an account yet, hit the **Register** link at the bottom, below the **Sign In** button. This will lead you to the registration page.

![Register](/img/Register.png)

As can be seen in the image above, the registration form asks for just your **Email** address and a **Password**. Once you have entered that information, hit **Register** and you will be prompted to accept the **Terms and Conditions** of Biotz. By accepting them, an email will be sent to you to verify your email address and activate your account.

![Verifying](/img/Verifying.png)

In case you didn’t receive an email, you can try sending it again by clicking on the **Click here to resend the email** link.

# Verifying email account

The email you received will have a verification link that you have to use before the advertised expiration time to successfully validate your email address.

By navigating to the verification link you will see the following page:

![Confirm](/img/Confirm.png)

Just click on the link below **Click here to proceed** and you will have verified your email account.

![Click Here](/img/ClickHere.png)

# Creating your organisation

After verifying your email address you are ready to login into Biotz. Go back to the login page at Biotz Cloud, introduce your login credentials and hit **Sign In**. Next, you will be presented with the following page:

![Organisation](/img/organisation.png)

In order to finish the creation of your account you need to create an **Organisation**. The creation form asks for three things: the **Country**, **Legal name** and the **Tax ID** of your organisation. If you have done everything correctly you will see the **Overview page and your registration process will be finished.
29 changes: 29 additions & 0 deletions docs/Tutorials/Getting started.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
---

title: Getting started

---
This tutorial offers a comprehensive guide on establishing a seamless data ingestion flow within the Biotz platform. The process involves a systematic sequence of 7 steps that entail configuring Biotz's core components. Through these steps, you'll initiate the transmission and ingestion of data. Notably, this tutorial eliminates the necessity for a physical device to complete the procedures; all tasks associated with data transmission and ingestion will be simulated, fostering an accessible and hands-on learning experience.

# Prerequisites

To successfully finish this tutorial, you must adhere to the subsequent prerequisites:

- You must possess an operational Biotz account.
- An account in a trial state is also considered acceptable.
- Access to a terminal is essential. It will be employed for executing fundamental commands to simulate data transmission.
- A tool for initiating HTTP requests is required. This can include utilities like [cURL](https://curl.se/) or [HTTPie](https://httpie.io/).

It's important to note that this tutorial assumes familiarity with using the terminal.


## Core concepts

In this tutorial, you will be generating various resources within Biotz. As you progress, you will gradually gain a better understanding of each of these resources. However, before you commence, it's crucial to grasp a few fundamental concepts:

-**Device Type**: Biotz arranges devices into specific categories known as Device Types. This organization method serves to systematically categorize devices and, as you'll soon discover, standardizes the structure of the data they transmit to the platform.‍
- **Message Type**: Each Device Type has the capacity for multiple Message Types. Essentially, every Device Type can transmit various forms of data messages (N in total) to the platform.‍
- **Message Type Schema**: Every message adheres to a specific structure. In Biotz, this structure is termed a Schema. A Schema outlines the format of data for a given Message Type.‍
- **Device**: This refers to the tangible apparatus that dispatches data to the platform.

With these concepts clarified, your initial task will involve the <a href="http://localhost:3000/docs/Tutorials/Step%201%20-%20Creating%20a%20Device%20Type/" target="_self">creation of a Device Type</a>.
42 changes: 42 additions & 0 deletions docs/Tutorials/Step 1 - Creating a Device Type.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# Creating a Device Type

Before we start sending and ingesting data you have to configure your Biotz account to be able to know **who** is sending data and **how** to process it. The first step is to create a Device Type, which will allow you to categorise your devices. Assuming you have signed in into the application, from the sidebar, in the **Setup** section, click on **Device Type**.

![Device Type](/img/DeviceType.png)

You will be presented with the following page:

![New Device Type|10](/img/NewDeviceType.png)




If you haven’t created any Device Type yet this table should be empty. Now, on the top right corner of the table click on New Device Type. Once you have done, you will have to fill a few details about the device type such as name and optionally description as can been seen in the image below:


![Create new](/img/createNew.png)





The **Internal name** is auto-generated based on the **Name** you write. However, you can change if you desire when creating your real Device Type. But beware as it is a name used internally by the platform, so both its length and allowed character set are limited. With that said, for the sake of this tutorial, please input the following information for each field accordingly:




- **Name: My test device type**
- **Description: My test device type**



Leave the **Internal name** unchanged and click on **Save**. If there is nothing wrong, the device type should be created and you will be notified that is succeeded:


![Created](/img/Created.png)



Now that you have created a Device Type, the next step is to <a href="http://localhost:3000/docs/Tutorials/Step%202%20-%20Creating%20a%20Message%20Type/" target="_self">create a Message Type </a>.


29 changes: 29 additions & 0 deletions docs/Tutorials/Step 2 - Creating a Message Type.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
As the name implies this is a type of message your device can send. If your device outputs different information structures, each of them would be a different Message Type. In this tutorial, you will create a single Message Type for the sake of simplicity. To do so, from the sidebar, in the **Setup** section, click on **Data Ingestion Flow**. You will be presented with the following page:

![Data Ingestion Flow](/img/dataIngestionFlow.png)

This is a table listing the different Device Types you have. As per this tutorial instructions, and assuming you did not create any resources yet, you should see only one Device Type which is the one you created in the previous step, **My test device type**.

Now, click on the **My test device type**. This will lead you to another page with the listing of message types which will be empty as you do not have created any yet for the selected Device Type. Click on the button **New message type** and a form will appear to gather the details of the new Message Type.


Fill the form with the following information:

- **Name: My test message type**
- **Description: My test message type**
- **Communication protocol: HTTP**
- **Message encoding: JSON**



![Created](/img/NewMessageType.png)


To make the tutorial simpler, **HTTP communication protocol** and **JSON message encoding** are the right choices as they do not require as much to work with unlike **MQTT** and **Message Pack**. Leave the **internal name** as it is. Now click on create and you should now have a new Message Type to work with.






In the next step you will <a href="http://localhost:3000/docs/Tutorials/Step%203%20-%20Creating%20a%20Schema/" target="_self">create a Schema</a> for your newly created Message Type. Follow along.
68 changes: 68 additions & 0 deletions docs/Tutorials/Step 3 - Creating a Schema.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@

---

---
Now that you have created a Message Type, you have to define the shape of the data for that Message Type. This is what is called Schemas in Biotz. Schemas are just the definition of the structure of what your device will send to the platform. This helps Biotz ingest and process your data effectively.




Schemas have a set of data types you can choose in order to define the shape of the data you are sending. It ranges from simple types such as **Integers**, **Decimals** and **Boolean** to more complex types like **Objects/Dictionaries** and **Collection/Arrays**. Each with their own properties and restrictions. This tutorial will not dive into the intricacies of each data type but if you wish to get a more detailed explanation about them, please refer to its reference guide \<add link to message type schema reference here>\. With that said, assuming you are still in the **My test message type** page (the one you created in the previous step), click on **New schema**. Once you have done that you will see the following page:

![Data Ingestion Flow](/img/DataIngestionFlow.png)

Schemas are defined with items. They can be a single item or multiple items depending on **Item type** you select. To create your first item click on **Add new item**. This will open up a dropdown with the different item data types you can choose from. For the purpose of this tutorial select the **Object** item type.

![All Schemas](/img/AllSchemas.png)


After doing so, you will see that a new button appears below the new selected item type. That is because the **Object** item type is a complex type and can have child items. Now, click on **Add new item**.

![Add new iteem](/img/AddNewItem.png)

There is a new element on the screen now named Key name. It is a special property of Objects since they are composed of key value pairs. However, bear in mind that you are just defining the structure, not the actual values in this section. Now, select the Decimal item. This will show up yet another element on the screen named Item name. This is the name or rather the internal name that Biotz will use to store and reference your ingested data. So, keep in mind that what you can type in this input element is very restricted \<link to schema restrictions>\. With that out of the way, input the following information for each field:

&nbsp;
- **Key name: hum**

- **Item name: humidity**
&nbsp;

You might have noticed that to your right there are two checkboxes:

&nbsp;

- **Madatory?:** When this is checked, this item key is going to be always required inside the object.
- **Can be null?:** When this is checked, a null value for this key is acceptable in the object.

&nbsp;
Biotz will use this information to validate the data it receives from your device. In case the shape of the data does not fulfil the defined schema constraints, it will be rejected and discarded. For this tutorial check **Mandatory?** and leave **Can be null?** unchecked.

![Schema Definition](/img/SchemaDefinition.png)

Now, add another item and fill in the following details:


- **Item type: Decimal**
- **Key name: temp**
- **Item name: temperature**
- **Mandatory?: checked**
- **Can be null?: unchecked.**

![Schema Definition2](/img/SchemaDefinition2.png)

Last but not least, we have a special item that serves to create a reliable timeline of the data we receive from your devices. For each object created, we can add more than one timestamp, but only one with the Payload timestamp? option checked. This will mark the item as responsible for telling the time of collection by your device. In case this item is not provided, Biotz will add one, but note that this is from when we received the data and may not be as accurate as the one from the device.

For this tutorial we are not going to add this item, but in case you want to add it you will notice that when you check that option the **Mandatory?** and **Can be null?** options become **read-only** and the item name is set to **timestamp** by default, this is because Biotz makes some assumptions about this special item.



![Special item](/img/SpecialItem.png)


At this point, you have finished defining the schema you will use in this tutorial. It is now time to give it a name and finally create it. On the top of the screen, before the schema definition, you will have an input to write the name of the schema. Name it **My test schema** and click on **Create** down below. Once you have done that, you will have a schema on your list for the Message Type **My test message type**. Now you have all the basic ingredients that define your data ingestion flow. In the next step you will <a href="http://localhost:3000/docs/Tutorials/Step%204%20-%20Creating%20%20a%20device/" target="_self">create a device</a>.


Loading

0 comments on commit 4e2451d

Please sign in to comment.