إنتل إديسون العمل مع Intel IoT Analytics Cloud: إدارة الأجهزة

إدارة جهاز Intel IoT Analytics

سيركز العمل المتواصل مع Intel IoT Analytics cloud على التعليقات الواردة من الجهاز ، وإرسال الأوامر لإدارة الجهاز. الجزء الأول من إنتل إديسون. العمل مع السحابة Intel IoT Analytics: التسجيل وإرسال البيانات . ندرك عملية تشغيل / إيقاف تشغيل LED والترحيل. للتظاهر ، اتخذ موقفًا من وظيفة سابقة.
لإرسال أوامر إلى الجهاز ، يتم استخدام نوع مكون خاص - تفعيل . في مقالة سابقة ، أخذنا في الاعتبار نوع "المستشعر" الذي يسمح لك بإرسال البيانات من الجهاز. يشتغل ينقل البيانات عبر بروتوكول MQTT وWebSocket. يستدعي هذا النوع من المكونات أمر سلسلة الأوامر ومعلمات الاسم / القيمة الخاصة به.

تسجيل التشغيل في Intel IoT Analytics Cloud
ضع في اعتبارك الإصدار الافتراضي ، والذي سيتناسب مع LED. افتح قسم الحساب ، قسم الكتالوج ، مكون Powerswitch.v1.0 .
إدارة جهاز Intel IoT Analytics
نافذة الخصائص
إدارة جهاز Intel IoT Analytics
لمكون Powerswitch.v1.0 . نوع مكون المحرك . لان يمكن أن يكون LED في حالتين فقط ، ثم يكون نوع البيانات منطقيًا . LED.v1.0 - أمر LED. المفتاح / القيمة ، الاسم - LED ، القيمة المقبولة هي 0 أو 1 .
التتابع هو نفس نوع المكون مع LED ، لذلك نقوم أيضًا بإنشاء مشغل للتتابع.
إدارة جهاز Intel IoT Analytics
تم إنشاء أنواع المكونات.

تكوين عامل iotkit على Intel Edison
الآن تحتاج إلى تسجيل الدخول عبر SSH إلى Intel Edison. في منشور سابق ، تم تكوين Wi-Fi ، حتى تتمكن من الاتصال بالجهاز عبر شبكة LAN. تم الإعلان عن دعم
مكون التشغيل فقط مع إصدار الوكيل 1.5.2 وأعلى. من المستحسن ترقية الوكيل إلى أحدث إصدار حالي.

اكتشف إصدار الوكيل:
# iotkit-admin -V
Agent update command:
# npm update iotkit-agent

في أحدث إصدار للوكيل ، أصبح من الممكن العمل على WebSocket. للعمل على WebSocket ، تحتاج إلى تكوين الوكيل باستخدام الأمر:
# بروتوكول بروتوكول iotkit-admin rest + ws التبديل

إلى وضع MQTT:
# iotkit-admin protocol mqtt

قم بتسجيل المحرك الخاص بمصابيح LED والتتابع على Intel Edison.
يتم تسجيل المستشعرات بواسطة الأمر # iotkit-admin register [sensor_name] [sensor_type] . نقوم بتنفيذ الأوامر:
# تسجيل iotkit-admin led1 powerswitch.v1.0
# تسجيل iotkit-admin relay1 relay.v1.0
إدارة جهاز Intel IoT Analytics

تحضير رسم لاردوينو
يتم تسجيل المكونات. سنقوم الآن بإعداد رسم تخطيطي لـ Arduino ، ونأخذ IoTKitActuationExample كمثال .

فكر في الرمز: لا تختلف
وظيفة void setup () عن المثال السابق.
في دالة void loop () ، يتم تقديم وظيفة للتحقق دوريًا من الرسائل المستلمة ، حيث يكون json مؤشرًا لرسالة بتنسيق JSON.
void loop() {
  iotkit.receive(callback);
  delay(5000);
}

وظيفة رد اتصال باطلة (char * json)
void callback(char* json) {
  Serial.println(json);
  aJsonObject* parsed = aJson.parse(json);
  if (&parsed == NULL) {
    // invalid or empty JSON
    Serial.println("recieved invalid JSON");
    return;
  }

إذا كانت البيانات المستلمة موجودة ، فإننا نقوم بتحليلها بشكل إضافي.
  aJsonObject* component = aJson.getObjectItem(parsed, "component");
  aJsonObject* command = aJson.getObjectItem(parsed, "command");
  aJsonObject* argv = aJson.getObjectItem(parsed, "argv");
  aJsonObject* argvArray = argv->child;
  aJsonObject* name = argvArray->child; // name : on
  aJsonObject* value = name->next; // value: 1/0

التحقق من أوامر LED.v1.0 المستلمة والقيم "0" أو "1"
  if ((component != NULL)) {
    if (strcmp(component->valuestring, "power") == 0) {
      if ((command != NULL)) {
        if (strcmp(command->valuestring, "LED.v1.0") == 0 && strcmp(value->valuestring, "0") == 0) {
          Serial.println("Light Off!");
          pinMode(13, OUTPUT);
          digitalWrite(13, false);
        }
        if (strcmp(command->valuestring, "LED.v1.0") == 0 && strcmp(value->valuestring, "1") == 0) {
          Serial.println("Light on!");
          pinMode(13, OUTPUT);
          digitalWrite(13, true);
        }
      }
    }
  }


رسم نهائي مع أجهزة استشعار وضوابط:
//LCD 
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
#define LCD_I2C_ADDR    0x20 // Define I2C Address where the PCF8574T is
#define BACKLIGHT     7
#define LCD_EN  4
#define LCD_RW  5
#define LCD_RS  6
#define LCD_D4  0
#define LCD_D5  1
#define LCD_D6  2
#define LCD_D7  3
LiquidCrystal_I2C       lcd(LCD_I2C_ADDR,LCD_EN,LCD_RW,LCD_RS,LCD_D4,LCD_D5,LCD_D6,LCD_D7);
//BMP085 Barometric Pressure & Temp Sensor
#include <Wire.h>
#include <Adafruit_BMP085.h>
Adafruit_BMP085 bmp;

//for Intel Cloud
#include <IoTkit.h>    // include IoTkit.h to use the Intel IoT Kit
#include <Ethernet.h>  // must be included to use IoTkit
// create an object of the IoTkit class
IoTkit iotkit;
float temperature1;
int pressure1;
int moisturevalue1;
bool led1,relay1;

void setup() {  
  iotkit.begin();
  Serial.begin(9600);
  bmp.begin();
  //init LCD
  lcd.begin (20,4);
  lcd.setBacklightPin(BACKLIGHT,NEGATIVE); // init the backlight
  lcd.setBacklight(HIGH); // Backlight on
  lcd.home ();                  // go home
  lcd.setCursor ( 0, 0 );        
  lcd.print("Edison. Habrahabr");
  //Current state Actiator
  //LED  DFRobot  
  pinMode(8, OUTPUT);
  digitalWrite(8, !false);
  pinMode(9, OUTPUT);
  digitalWrite(9, false);
  //Send state Actiator
  iotkit.send("led1", 0);
  iotkit.send("relay1", 0);
}

void loop() {
  lcd.setCursor ( 0, 1 );  
  lcd.print("Tempera. = ");
  lcd.print(bmp.readTemperature());
  lcd.print(" *C");
  //
  lcd.setCursor ( 0, 2 );        
  lcd.print("Pressure = ");
  lcd.print(bmp.readPressure());
  lcd.print(" Pa");
  //
  lcd.setCursor ( 0, 3 );        
  lcd.print("Moisture Value = ");
  lcd.print(analogRead(0));
  //read
  temperature1=bmp.readTemperature();
  pressure1=bmp.readPressure();
  moisturevalue1=analogRead(0);
  //Console and Send to Intel Cloud
  Serial.println("Sensors");
  Serial.print("temperature1=");
  Serial.println(temperature1);
  iotkit.send("temperature1", temperature1);
  delay(2000); 
  Serial.print("pressure1=");
  Serial.println(pressure1);
  iotkit.send("pressure1", pressure1);
  delay(2000); 
  Serial.print("moisturevalue1=");
  Serial.println(moisturevalue1);
  moisturevalue1=20;
  iotkit.send("moisturevalue1", moisturevalue1);
  //Get command for Actiator
  iotkit.receive(callback);
  //
  delay(1000);               // wait for a second
}

void callback(char* json) {
  Serial.println(json);
  aJsonObject* parsed = aJson.parse(json);
  if (&parsed == NULL) {
    // invalid or empty JSON
    Serial.println("recieved invalid JSON");
    return;
  }   
  aJsonObject* component = aJson.getObjectItem(parsed, "component");
  aJsonObject* command = aJson.getObjectItem(parsed, "command"); 
  aJsonObject* argv = aJson.getObjectItem(parsed, "argv");
  aJsonObject* argvArray = argv->child;
  aJsonObject* name = argvArray->child; // name : on
  aJsonObject* value = name->next; // value: 1/0
  //LED
  if ((component != NULL)) {
    if (strcmp(component->valuestring, "led1") == 0) {
      if ((command != NULL)) {
        if (strcmp(command->valuestring, "LED.v1.0") == 0 && strcmp(value->valuestring, "0") == 0) {
          Serial.println("Light Off!");
          digitalWrite(8, !false);
          //Send state Actiator
          iotkit.send("led1", 0);
        }
        if (strcmp(command->valuestring, "LED.v1.0") == 0 && strcmp(value->valuestring, "1") == 0) {
          Serial.println("Light on!");
          digitalWrite(8, !true);
          //Send state Actiator
          iotkit.send("led1", 0);
        }
      }
    }
  }
  //RELAY
  if ((component != NULL)) {
    if (strcmp(component->valuestring, "relay1") == 0) {
      if ((command != NULL)) {
        if (strcmp(command->valuestring, "RELAY.v1.0") == 0 && strcmp(value->valuestring, "0") == 0) {
          Serial.println("Relay Off!");
          digitalWrite(9, false);
          //Send state Actiator
          iotkit.send("relay1", 0);
        }
        if (strcmp(command->valuestring, "RELAY.v1.0") == 0 && strcmp(value->valuestring, "1") == 0) {
          Serial.println("Relay on!");
          digitalWrite(9, true);
          //Send state Actiator
          iotkit.send("relay1", 0);
        }
      }
    }
  }  
}


إرسال
فرق الإدارة إرسال فرق الإدارة من Intel IoT Analytics cloud. افتح قسم التحكم . اختر جهازًا ومكونًا.
إدارة جهاز Intel IoT Analytics

أضف إجراءات لتشغيل LED وإيقاف تشغيله. بعد ملء الحقول ، انقر فوق الزر إضافة إجراء.
إدارة جهاز Intel IoT Analytics

نفعل نفس الشيء للمرحلات. نتيجة لذلك ، تظهر أربعة إدخالات في الجدول. لتشغيل LED ، حدد السطر الأخير وانقر على رابط إرسال .
إدارة جهاز Intel IoT Analytics

بعد بضع ثوانٍ ، سيضيء مصباح LED.
إدارة جهاز Intel IoT Analytics

للتلخيص ،
إدارة الأجهزة ليست أكثر تعقيدًا من تلقي البيانات من أجهزة الاستشعار. مطلوب من المطور تحليل الطلب الوارد بتنسيق JSON وتطبيق المنطق المناسب.

المراجع
  1. IoTkit رمز رسم القائمة
  2. github.com - Enableiotcom
  3. اديسون دليل البدء - ويندوز
  4. امض انتل اديسون (سلكي) - ويندوز
  5. سحابة إنتل تحليلات إنترنت الأشياء
  6. مجموعة أدوات Intel Internet of Things (IoT) Developer Kit IoT Cloud-Based Cloud نوفمبر 2014

Source: https://habr.com/ru/post/ar384631/


All Articles