# <center><i class="fa fa-edit"></i>Smarthome</center>
###### tags: `Hentai`
<h1>
Ide Dasar
</h1>
<div class="pala" >
<h2 class="judul-pala">Fungsi Indikator Smarthome</h2>
<ol>
<li>Smart lamp</li>
<li>Trash detector</li>
<li>Fire Extinguisher</li>
<li>Temperature Detector</li>
<li>Smart Fridge</li>
<li>Smart Garden</li>
<li>Smart Bell</li>
<li>Smart Lock</li>
<li>Smart Garage</li>
<li>Smart Curtain</li>
</ol>
</div>
<style>
.button{
margin-bottom: 12px;
}
.button > span{
border: 1px solid black;
padding: 4px 8px;
background-color:
}
.pala{
background-color: #3EB489;
width:80%;
color: white;
padding : 5px;
transition: 0.4s ease-out;
z-index : 1;
}
.pala:hover{
background-color: #406343;
}
.proto{
background-color: grey ;
padding: 5px;
flex:display;
color:white;
width: 80%;
height: auto;
margin-top: 20px;
transition : 1s;
}
.hardware{
width: 80%;
height: auto;
background-color:#14279B;
color:white;
padding : 5px;
font-style : sarif;
margin-top : 20px;
}
.software{
width: 80%;
height: auto;
background-color:#ecb653;
color:white;
padding : 5px;
font-style : sarif;
margin-top : 20px;
}
.software:hover{
transfrom: rotate(180deg);
}
.utility{
width: 80%;
height: auto;
background-color:#d580ff;
color:white;
padding : 5px;
font-style : sarif;
margin-top : 20px;
}
h2 {
text-align: center;
}
</style>
<div class ="proto">
<h2 class="proto-judul">
Prototyping Iot
</h2>
<ol>
<li>integrasi web/mobile</li>
<li>design interior/arsitek untuk tahap pemasangan</li>
<li>cari orang marketing buat promosi</li>
<li> center command</li>
</ol>
</div>
<div class = "hardware">
<h2 class="hardware-judul">
Hardware
</h2>
<ol>
<li> Raspberry PI 3B+ </li>
<li> Arduino </li>
<li> NodeMCU </li>
<li> Sensor</li>
<li> Aktuator</li>
</ol>
</div>
<div class="software">
<h2>
Software
</h2>
<ol>
<li>C# as Microcontroller Programming</li>
<li>Nosql for storing data (preferences MongoDB)</li>
<li>Next & React for Web Dev</li>
<li>Xamarin/React Native for Mobile Dev</li>
</ol>
</div>
<div class="utility">
<h2>
Utility
</h2>
<ol>
<li>Github for storing code</li>
<li>Discord for developer talk & discussion</li>
<li>HackMD for documentation</li>
</ol>
</div>
<h1>
Penjelasan Detail
</h1>
<div>
<ol>
<li>Smart Lamp</li>
<span>
Product yang menawarkan kemudahan dalam mengontrol lampu dirumah. Fitur yang tersedia ada :
<ol>
<li>Pengontrolan melalui smartphone (manual)</li>
<li>Pengontrolan melalui terang/gelap cahaya di ruangan (Otomatis)</li>
<li>Pengontrolan melalui motion detector, apabila penghuni rumah memasuki suatu ruangan lampu ruangan tersebut akan otomatis menyala dan jika ruangan ditinggalkan lampu akan otomatis mati (otomatis)</li>
</ol>
</span>
<li>Trash Detector</li>
<span> alat pendeteksi sampah , melalui sensor didepan tempat sampah , alat akan memindai tipe sampah organik atau anorganik </span>
<ul>
<li>Sensor Ultrasonik</li>
<li>Servo</li>
<li>Mikrokontroller</li>
<li>algoritma pengolahan gambar </li>
</ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li>Smart Lock</li>
<span>
product security berbasis (face detection dan password kovensional ) service yang dapat diberikan:
<ul>
<li>hanya bisa diimplementasikan ke pintu masuk</li>
<li>jika lupa password, bisa melakukan pengaduan ke website kami karena kami tidak mengintegrasikan smart lock kami ke internet dengan alasan keamanan</li>
<li>smart lock memiliki batre tambahan dan lubang kunci khusus agar pintu tetap dapat dibuka walaupun terjadi pemadamam </li>
</ul>
</span>
<li>Smart Garage</li>
<span>Product yang menawarkan dalam automisasi gerbang dan pintu garasi otomatis. Memiliki kemampuan dalam mendeteksi lokasi melalui GPS untuk membuka pintu garasi tersebut. User diharapkan menyalakan fitur ini melalui smartphone nya agar pintu garasi dapat melakukan pendeteksiannya.</span>
<li>Smart Curtain</li>
<span>Product yang menawarkan automisasi dalam menutup dan membuka gorden otomatis atau manual
<ol>
<li>Membuka manual melalui smartphone</li>
<li>Menutup otomatis ketika jam tertentu (User dapat memilih jam sendiri)</li>
<li>Menutup otomatis apabila smart lamp menyala (integrasi dengan product smart lamp)</li>
</ol>
</span>
</ol>
</div>
<h1>Resource Pembelajaran</h1>
[Raspberry interactive module by Microsoft Dotnet](https://docs.microsoft.com/id-id/learn/modules/create-iot-device-dotnet/)
[Playlist Fundamental IoT dengan Dotnet (C#)](https://youtube.com/playlist?list=PLdo4fOcmZ0oVZN5yrJbnJ70tMe9itQ10W)
[Official Documentation IoT by Microsoft Dotnet](https://docs.microsoft.com/id-id/dotnet/iot/)
[Official Github Dotnet/IoT (Sample code)](https://github.com/dotnet/iot)
# Setup First Time
## Koneksi IoT ke Laptop
Ada **3 opsi** yang dapat digunakan untuk konek ke laptop dan menampilkan GUI serta memodifikasi filenya.
:::info
by default username dan password adalah **pi** dan **raspberry**
:::
1. **Melalui Ethernet Cable**
1. Hubungkan Raspi ke Laptop/PC menggunakan RJ45/LAN cable
2. Buka Network and Sharing Center
3. Pilih koneksi Wifi -> Properties -> menu Sharing -> ceklis sharing (ada di paling atas biasanya)
4. Cari IP laptop lu dan lanjutin seperti cara 2 no.3
2. **Melalui SSH&VNC (Yang gua pake)**
1. Ke setting -> konfigurasi Raspi -> Interface/Antarmuka -> Enable SSH dan VNC
2. Konek ke wifi
3. **OPSI 1**. Ke portal wifi -> cari device yg konek -> cari Raspi copy IP nya. Jika males/gatau website portal router bisa ketik **ipconfig** di console terus cari IP wifi, nah setelah itu bisa pake aplikasi IPscanner nti scan aja dengan format misal (di kasus gua): 192.168.100.1-254, yang dimana artinya scan IP itu yg belakangnya 1-254. Setelah itu cari IP Raspi diantara IP itu semua. Copy IP Raspi nya
4. **OPSI 2**. Cari aja Hostname di Konfigurasi Raspi -> Sistem -> Hostname. Copy hostnamenya
5. Terserah kalian mau make metode **IP** atau **Hostname**, lakukan login SSH bisa menggunakan Console/Pws/Bash lakukan log dengan format `ssh user@IP/Hostname` **/** artinya pilih salah satu, nanti tinggal masukin password. Untuk Putty langsung aja masukin **Hostname/IP** di kolom yg disediakan sisanya seperti Port dll itu by default.
6. Untuk Displaynya bisa pake [VNC](https://www.realvnc.com/en/connect/download/viewer/), nti tinggal masukin aja IP nya.
3. **Menggunakan Teamviewer**
Ini gausah gua jelasin lah ya, semudah install Teamviewer di keduabelah pihak dan connect.
Cara **kedua** langsung OTS di Raspinya (Tapi ini ga rekomen karena resource di Raspi ga sebagus di lepi/pc pribadi kalian)
## Software Rekomendasi Selama Development
1. Visual Studio/Visual Studio Code (IDE/TE rekomen untuk C#)
2. Winscp/Filezilla (Transfer File SSH)
3. CMD/Bash/Pws/Putty (Console untuk SSH Raspi)
4. VNC/Teamviewer (Display GUI di laptop)
## Library yang digunakan C# untuk IoT
1. Iot.Device.Bindings (Library by community untuk ngehandle sensor2)
2. System.Device.Gpio (Library by official .Net untuk ngehandle GPIO)
## Approach Coding
Ada 2 approach yang bisa dipilih dalam ngoding, **Pertama** : Headless (koding di laptop -> kirim codingan yang udah di publish melalui SSH -> execute di Raspi), sebagai catatan bagaimana kita nge publish codingan kita ke Raspi?
1. execute di .NET CLI kalo make VsCode `dotnet publish -r linux-arm` / Klik kanan di folder projectnya -> publish -> Target "Folder" -> Specific target "Folder" -> Location default -> Publish -> Configuration -> cari linux-arm
2. cari file `bin\Debug\net5.0\linux-arm\publish` lalu copy folder `publish` dan pindahkan ke direktori di `home\pi` folder boleh di rename
3. cd ke dalam direktori -> `chmod +x nama_projectnya`
4. eksekusi filenya di raspi dengan cli `./nama_projectnya`