IOT dalam hidup saya. Cara membuat kantor yang cerdas, serta melacak pertumbuhan kentang di apartemen Anda berkat IoT

Saya menyambut Anda, para Khabrovchia!

Pada tahun 2020, kita semua tahu apa itu Internet of Things dan mengapa dibutuhkan. Tetapi berapa banyak dari kita yang mengenal platform cloud yang mewakili salah satu layer paling signifikan di IoT? Mari kita perbaiki.

Bukan rahasia lagi bahwa heterogenitas protokol secara signifikan mempersulit proses menghubungkan perangkat pintar, konfigurasi dan pemrosesan data. Masalah serupa sedang ditangani melalui cloud Internet of Things. Hari ini, dengan menggunakan salah satu platform Internet of Things Rusia sebagai contoh, saya akan menunjukkan betapa mudahnya menghubungkan perangkat dengan protokol yang berbeda, serta menggunakan informasi yang diterima untuk membangun proses otomasi.

Dalam platform yang biasanya saya gunakan untuk tugas-tugas saya, saya sudah mengimplementasikan interaksi dengan perangkat yang bekerja menggunakan protokol seperti MQTT, Wialon Combine, Wialon IPS, Galileosky, Modbus dan beberapa lainnya.

Selain menggunakan protokol yang disajikan, untuk perangkat yang tidak memiliki akses Internet, dimungkinkan untuk menulis agen perangkat lunak - beberapa perantara antara peralatan dan platform yang diinstal pada perangkat lain (misalnya, Raspberry Pi) dan terhubung ke peralatan ini.

Misalkan Anda ingin memastikan interaksi dengan perangkat yang berfungsi pada salah satu protokol yang disajikan. Dalam hal ini, cukup untuk menyelesaikan tiga langkah:

  1. konfigurasikan model dengan parameter dan perintah yang diinginkan;
  2. membuat objek dengan pengidentifikasi unik di platform;
  3. konfigurasikan perangkat untuk terhubung ke platform.

Mari kita menganalisis beberapa kasus dan melihat bagaimana semuanya terhubung.

Kasing No. 1 Agile-gong


Untuk memulainya, suatu hari tim kami secara serius memikirkan cara mengotomatiskan proses kerja di kantor.

Jadi, sesuai dengan konsep Agile, pada siang hari, semua karyawan berkumpul di rapat harian. Sangat mudah untuk kehilangan notifikasi di Slack tentang pertemuan yang akan datang selama bekerja dan itu tidak nyaman untuk terganggu oleh jam tangan ... Jadi ide itu lahir untuk menciptakan Agile-gong - sistem pemberitahuan suara otomatis.

Bagaimana penerapannya? Besi adalah NodeMCU (analog mini Arduino dengan modul Wi-Fi built-in), drive servo dan kapasitor. Setiap hari kerja pada jam 12 Anda perlu memastikan bahwa poros output dari servo drive dengan peralatan impak pada akhirnya diputar pada sudut yang cukup untuk membunyikan gong dan memberi tahu semua orang tentang kenaikan tersebut.

Diagram koneksi untuk besi cukup sederhana:

gambar

Kode berkabel di NodeMCU menyediakan:

  1. pemasangan koneksi Wi-Fi dan koneksi ke platform menggunakan protokol MQTT;
  2. mengatur posisi awal servo dalam 0 derajat;
  3. publikasi pesan dengan data tentang situasi saat ini;
  4. berlangganan perintah dan memutar sudut servo dengan perintah.

#include "Arduino.h"
#include "EspMQTTClient.h" /* https://github.com/plapointe6/EspMQTTClient */
// Servo library
#include <Servo.h>

// Object Servo with name myservo
Servo myservo;
int pos;

EspMQTTClient client(
  "<wifi-ssid>",
  "<wifi-password>",

  "<MQTT Broker server ip>",
  "<ric-mqtt-client-id>"
  );


void setup() {
  Serial.begin(9600);
  move(0);
}

void onConnectionEstablished() {
  Serial.println("connected");
  client.subscribe("move", [] (const String& payload)  {
	int angle = payload.toInt();
	if (angle != pos) {
  	move(angle);
	}
	client.publish("position", payload);
  });
}

void loop() {
  client.loop();
}

void move(const int angle)
{
	myservo.attach(5);
	myservo.write(angle);
	delay(800);
	myservo.detach();
	pos = angle;
}


Di sisi platform, model perangkat telah dikembangkan. Ini menjelaskan parameter yang dapat diterima dari perangkat, dan perintah yang dapat dikirim kepadanya. Dalam menafsirkan perintah MQTT, ini adalah pesan untuk klien dengan topik dan data tertentu, dalam kasus kami, data berisi sudut rotasi yang diperlukan.

gambar

Kemudian sebuah objek dibuat dengan pengidentifikasi tempat otorisasi pada platform terjadi. Setelah menyambungkan, tampilan akan terlihat sebagai berikut:

gambar

Dalam tim ada opsi untuk mengirim perintah rotasi pada sudut 0 dan 90 derajat.

gambar

Sekarang Anda perlu menambahkan skrip otomatisasi. Kami akan membuat mesin otomatis yang, ketika waktu yang tepat tiba, akan masuk ke kondisi rotasi 90 derajat, kemudian dalam siklus untuk jumlah repetisi yang dapat dikonfigurasi, itu akan membuat jumlah pukulan yang diperlukan dan kembali ke keadaan menunggu awal 12 jam.

Setiap skenario otomatisasi adalah diagram blok tertentu yang menentukan logika perilaku objek. Setelah mendaftarkan skenario seperti itu, Anda dapat memperhitungkan semua perubahan yang terjadi pada perangkat, dan berdasarkan perubahan yang terjadi, perangkat akan dapat melakukan tindakan yang sesuai secara otomatis, tanpa mengirim perintah kepada pengguna.
Mesin yang dihasilkan dapat digunakan tidak hanya untuk perangkat tertentu.

Misalnya, Anda dapat membuat sistem yang sama persis dengan gong dan memasangnya di kantor lain di kantor Anda. Kemudian Anda akan memiliki model yang sama, dua objek berbeda dan satu mesin berjalan pada dua objek.

gambar

Kasus No. 2 Sensor Karbon Dioksida


Solusi kedua yang bermanfaat bagi kami adalah menghubungkan sensor karbon dioksida. Juga terhubung melalui MQTT. Sekali lagi, skema perakitan besi itu sepele.

gambar

Ya, ngomong-ngomong, kami terlibat dalam implementasi kasus pertama dan kedua dalam hackathon di dalam perusahaan. Dan tidak ada di antara kita yang tenggelam dalam pekerjaan besi, dan tidak perlu untuk ini.

gambar

Lebih lanjut prosedurnya sama. Model ini mencakup parameter ppm (1000 ppm = 0,1% dari konten 2), yang ditransmisikan oleh perangkat, tetapi tidak terlalu jelas, oleh karena itu, parameter lain segera ditampilkan dalam model - persentase konten CO2. Ini dihitung sebagai ppm dibagi 10.000.

gambar

Di sini Anda juga dapat melihat dua perintah untuk menyalakan bola lampu. Mereka memutuskan untuk menggunakannya sebagai indikasi. Dan kami mengelolanya, tentu saja, dari mesin platform. Setelah menghubungkan perangkat, tampilan parameter adalah sebagai berikut. Nilai-nilai ini diterima dan ditampilkan secara waktu nyata, tetapi Anda juga dapat melihat paket yang telah terakumulasi sebelumnya dalam sejarah atau menampilkan grafik perubahan parameter selama periode tertentu.

gambar

Otomat untuk objek ini berfungsi sebagai berikut. Di negara bagian atas, lampu mati. Di bagian bawah - mulai timer selama satu menit dan nyalakan bola lampu. Transisi dari kondisi pertama ke kondisi kedua terjadi ketika menerima data dari perangkat dengan ketentuan bahwa nilai ppm lebih dari 600 unit. Kembali (transisi dari keadaan kedua ke yang pertama) terjadi ketika timer dipicu.

gambar

Anda mungkin memiliki dua pertanyaan.

  1. Mengapa otomatis? Bukankah lebih mudah untuk mendaftarkan kondisi seperti itu pada perangkat keras itu sendiri? Bagaimanapun, semuanya sangat sederhana di sini.
  2. Kenapa ada timer?

Bahkan, manfaat mesin itu bahkan dalam kasus yang sangat sederhana. Saya meletakkan sensor ini dengan bola lampu di meja saya untuk debugging, dan setiap kali saya datang untuk bekerja, lampu menyala, karena nilai ambang di mesin cukup rendah. Untuk sementara saya mencoba nilai yang berbeda di mesin dan hasilnya saya mencapai nilai optimal 600 unit. Untuk memilih nilai yang diinginkan, saya hanya perlu mengubah nilai di mesin dan menyimpannya. Tidak ada flashing perangkat. Dan jika kita mentransfer perangkat ini ke kantor di mana perlu untuk menjaga kondisi udara terbaik dan ventilasi sering diperlukan, maka nilainya dapat diubah lagi. Cepat dan nyaman.

Ini adalah penghitung waktu selama satu menit. Hal ini diperlukan agar selama semenit kita berada dalam keadaan CO2 tinggi dan tidak bereaksi terhadap kenyataan bahwa untuk sementara waktu nilainya tinggi terus datang. Jika tidak, kami akan terus mengedipkan bola lampu, melakukan transisi hingga kondisi udara menjadi normal. Anda sudah bisa menebak bahwa mungkin untuk melakukan transisi ke keadaan awal dengan cara yang berbeda. Juga pada saat menerima data, tetapi di mana kondisi sebaliknya benar - ppm <600. Kemudian kita akan berada dalam keadaan kedua tepat sampai nilai normal datang.

Kasus No. 3 ACS


Contoh paling kompleks adalah deskripsi bekerja dengan kontrol akses dan sistem manajemen, yang merupakan modul elektronik yang dirancang untuk mengontrol akses ke bangunan, menghitung waktu dan peristiwa bagian.

gambar

Pengontrol memproses informasi yang datang dari pembaca dengan antarmuka keluaran Wiegand dan, menggunakan relai bawaan, menggerakkan aktuator - kunci elektromagnetik. Tidak memiliki koneksi internet dan tidak ada konektivitas yang terlihat ke platform. Namun, ia memiliki protokol sendiri untuk bertukar data dengan komputer kontrol, berkat itu dimungkinkan untuk mengirim perintah ke controller, seperti membaca dari controller, menulis ke controller, membuka / menutup kunci, dan lain-lain. Oleh karena itu, dalam hal ini, pendekatan non-standar diselenggarakan - penggunaan agen, yang saya sebutkan di awal artikel.

Bekerja pada protokol pengontrol diimplementasikan dalam kode C ++ dan diluncurkan untuk dieksekusi pada Raspberry Pi, yang pada gilirannya terhubung ke pengontrol melalui RS-485 melalui konverter antarmuka. Tugas utama dari program ini adalah untuk terhubung ke platform, membuat serialisasi perintah, dan menghapus data yang diterima dari pengontrol. Dengan demikian, kami dapat membuat perangkat "pintar" menggunakan lapisan perangkat lunak kecil.

Model perangkat adalah sebagai berikut:

gambar

Informasi utama dari controller adalah peristiwa. Itu datang ke platform dalam format JSON dan termasuk bidang:

  • waktu acara,
  • kode acara
  • nomor kartu karyawan.

Model juga digunakan untuk mem-parsing bidang JSON untuk berbagai parameter.

gambar

Di antarmuka objek, tampilannya seperti ini:

gambar

Dan ini adalah antarmuka untuk mengirim perintah:

gambar

Anda mungkin memperhatikan bahwa ada perintah tidak hanya untuk membaca buffer acara, tetapi juga untuk menulis batasan baru. Batas buffer disimpan dalam memori pengontrol - awal dan akhir. Ketika perintah baca tiba di perangkat, batas-batas ini dibaca dan dalam batas-batas ini, pembacaan dari buffer acara berlangsung. Akhir batas buffer digeser secara otomatis pada pengontrol saat acara baru diterima. Tetapi batas awal buffer perlu ditulis ulang (menunjukkan batas akhir setelah membaca terakhir) agar tidak membaca data yang sama lagi. Tetapi ini perlu dilakukan hanya setelah data acara telah berhasil dikirim ke platform. Juga mudah untuk mengunci tanda terima data dan kemudian mengirim perintah untuk menulis ulang batas-batas dalam mesin.

gambar

Proyek ini menemukan kelanjutannya dalam integrasi dengan sistem CRM internal kami, di mana pada halaman informasi tentang karyawan kami selalu melihat informasi terkini tentang siapa yang ada atau tidak di kantor. Juga, waktu masuk / keluar dari kantor ditampilkan, jumlah total jam per bulan dipertimbangkan.

gambar

gambar

Data diambil dari platform menggunakan RESTful API. Platform API menyediakan kemampuan untuk bekerja, berinteraksi dan menggunakan entitas platform dan data mereka dalam sistem eksternal seperti portal web, aplikasi seluler dan web, atau, seperti dalam kasus kami, sistem CRM.

Ada juga kasus-kasus ketika seorang tamu pengiriman makanan / atau orang lain yang perlu membuka pintu telah datang ke perusahaan. Agar tidak menggunakan kartu Anda dan dengan demikian tidak mengirimkan bacaan yang salah tentang status Anda, Anda dapat menggunakan tombol "Buka Kunci" pada platform. Dan jika seseorang perlu bertemu di depan pintu, maka lebih mudah untuk melakukan hal yang sama dari aplikasi seluler.

Kasus No. 4 Smart Garden


Kisah pribadi saya dengan taman di apartemen mulai dengan latar belakang panik orang gila dan membeli produk. Sekali lagi, pergi ke toko dan melihat rak kosong di mana kentang seharusnya berada, saya memutuskan untuk menggunakan kentang yang ditemukan terakhir di lemari es bukan untuk tujuan yang dimaksudkan. Saya menanam kentang ini dalam pot besar. Dengan eksperimen naif seperti itu, kebun saya di ambang jendela dimulai, yang dua bulan kemudian sudah terlihat seperti ini:

gambar

Karena saya tidak tahu petani mana, dan kebun bahkan membutuhkan lebih banyak air daripada bunga, saya dengan cepat menemukan masalah yang saya lupa untuk menyiraminya. Saya tidak akan berbicara tentang sistem irigasi otomatis, ini terlalu banyak topik, dan cukup sulit untuk mengatur kerjanya secara kualitatif. Sebagai gantinya, saya memiliki ide-ide berikut:

  1. - , - . , .
  2. , , , β€” . , , , . , .
  3. – 18:00, 6:00. , β€” . , , / , .

Antarmuka akan terlihat seperti ini:

gambar

Mesin untuk kasus pertama terlihat seperti ini. Transisi ke keadaan di mana pemberitahuan dikirim dibuat dalam kondisi yang sulit - di salah satu pabrik kelembaban di bawah normal. Tautan antara kondisi adalah OR.

gambar

Kembali ke keadaan awal terjadi sesuai dengan kondisi - di semua tanaman kelembaban tanah lebih tinggi dari biasanya, sekelompok I.

gambar

Mesin untuk kasus kedua adalah sebagai berikut. Transisi dilakukan sesuai dengan scheduler, reset adalah transisi tanpa syarat.

gambar

Dan akhirnya, mesin untuk kasus terakhir:

gambar

Mesin-mesin ini berjalan pada objek yang sama dan bekerja secara paralel.

gambar

Mungkin ini yang ingin saya bahas di artikel saya. Gagasan utama yang ingin saya sampaikan adalah bahwa bekerja dengan platform Internet of Things membuatnya sangat mudah untuk menciptakan proses bisnis dengan kompleksitas apa pun, karena dalam hal ini Anda hanya perlu mempelajari satu antarmuka - antarmuka platform, yang menghindari perendaman mendalam dalam karya besi dan pemrogramannya.

All Articles