สารบัญ:

PINt@t10n: ระบบตรวจสอบโรงงานอัจฉริยะ: 9 ขั้นตอน
PINt@t10n: ระบบตรวจสอบโรงงานอัจฉริยะ: 9 ขั้นตอน

วีดีโอ: PINt@t10n: ระบบตรวจสอบโรงงานอัจฉริยะ: 9 ขั้นตอน

วีดีโอ: PINt@t10n: ระบบตรวจสอบโรงงานอัจฉริยะ: 9 ขั้นตอน
วีดีโอ: Kant10t - Pain | Official Music Video 2024, กรกฎาคม
Anonim
PINt@t10n: ระบบตรวจสอบโรงงานอัจฉริยะ
PINt@t10n: ระบบตรวจสอบโรงงานอัจฉริยะ

โปรเจ็กต์นี้สร้างขึ้นเพื่อทดสอบ ibm iot cloud เราใช้ esp-8266 เพื่อส่งและรับข้อมูลเข้าและออกจาก ibm cloud การสื่อสารระหว่าง esp และ ibm cloud เกิดขึ้นผ่าน MQTT

เพื่อจัดการข้อมูลทั้งหมดและนำเสนอผู้ใช้ด้วยอินเทอร์เฟซผู้ใช้ เราใช้โหนดสีแดง เป็นมิตรกับผู้เริ่มต้นมาก

ในการเริ่มต้นคุณต้อง:

  • Esp-8266
  • dht 11/22 เซ็นเซอร์อุณหภูมิ/ความชื้น
  • ไดโอดไวแสง (การวัดแสง)
  • ออด
  • เซ็นเซอร์ความชื้นพื้นดิน
  • บัญชีไอบีเอ็มคลาวด์

ขั้นตอนที่ 1: เชื่อมต่อเซ็นเซอร์ของคุณ

เชื่อมต่อเซ็นเซอร์ของคุณ
เชื่อมต่อเซ็นเซอร์ของคุณ
เชื่อมต่อเซ็นเซอร์ของคุณ
เชื่อมต่อเซ็นเซอร์ของคุณ
เชื่อมต่อเซ็นเซอร์ของคุณ
เชื่อมต่อเซ็นเซอร์ของคุณ

ดังที่เราได้กล่าวไว้ก่อนหน้านี้ เราจะใช้ esp8266 เพื่ออ่านและส่งข้อมูลเซ็นเซอร์ สำหรับบทช่วยสอนนี้ เราจะถือว่าคุณรู้วิธีเชื่อมต่อเซ็นเซอร์กับไมโครคอนโทรลเลอร์ คุณต้องรู้วิธีอัปโหลดโค้ดไปยัง esp8266 อยู่แล้วด้วย

โมเดล esp ของเรามีพอร์ตแอนะล็อกเพียงพอร์ตเดียว เราจึงเลือกรับข้อมูลแอนะล็อกจากเซ็นเซอร์วัดแสงของเรา เพราะเราจะสามารถตรวจสอบปริมาณแสงที่โรงงานได้รับ

เซ็นเซอร์อื่นๆ ทั้งหมดเชื่อมต่อแบบดิจิทัล เซ็นเซอร์ DHT11 ของเราจะส่งข้อมูลแบบดิจิทัล และเราใช้ไลบรารี dht เพื่อตีความข้อมูลเซ็นเซอร์

ด้านบนคุณจะพบแผนภาพวงจรสำหรับเซ็นเซอร์ที่เราใช้ แต่โปรดทราบว่าเซ็นเซอร์ที่เราใช้มักจะมาพร้อมกับโมดูล ดังนั้นคุณจึงสามารถเชื่อมต่อกับไมโครคอนโทรลเลอร์ของคุณได้อย่างง่ายดายโดยไม่ต้องใช้ตัวต้านทานเพิ่มเติมทั้งหมดที่เรารวมไว้ในไดอะแกรม

ขั้นตอนที่ 2: รหัส

นี่คือภาพร่าง Arduino ที่เราใช้ คุณสามารถเรียนรู้เกี่ยวกับวิธีการทำงานของโค้ดได้หากคุณอ่านความคิดเห็น

#รวม ArduinoJson.h#รวม DHT_U.h #รวม DHT.h #รวม ESP8266WiFi.h #รวม ESP8266WiFiMulti.h #รวม PubSubClient.h

#define STASSID "ucll-projectweek-IoT" #define STAPSK "Foo4aiHa" #define DHTPin 5 #define moisturePin 4 #define DHTType DHT11 DHT dht(DHTPin, DHTType); ESP8266 WiFi มัลติ WiFi มัลติ; อุณหภูมิลอย = 0; ความชื้นลอย = 0; ความชื้นบูลีน = เท็จ; แสงภายใน = 0; อักขระ const* ssid = STASSID; รหัสผ่าน const char* = STAPSK; const char* mqtt_server = "cmfwqk.messaging.internetofthings.ibmcloud.com"; WiFiClient espClient; ไคลเอนต์ PubSubClient (espClient); LastMsg = 0; ผงชูรสอักขระ[50]; ค่า int = 0; #define MQTT_HOST "cmfwqk.messaging.internetofthings.ibmcloud.com" #define MQTT_PORT 1883 #define MQTT_DEVICEID "d:cmfwqk:ESP8266:ESP" #define MQTT_USER "use-token-auth" #define MQUTC2018ll_TOKEN " iot-2/evt/status/fmt/json" #define MQTT_TOPIC_DISPLAY "iot-2/cmd/update/fmt/json" #include "pitches.h" // โน้ตในทำนอง: // ระยะเวลาโน้ต: 4 = ไตรมาส โน้ต 8 = โน้ตที่แปด ฯลฯ: int shortTone = 80; int ลองโทน = 200; int standardDelay = 50; int ล่าช้าระหว่างบาร์ = 50; เป็นโมฆะ setup_wifi () { ล่าช้า (10); // เราเริ่มต้นด้วยการเชื่อมต่อกับเครือข่าย WiFi Serial.println(); Serial.print("กำลังเชื่อมต่อกับ "); Serial.println(ssid); WiFi.begin(ssid, รหัสผ่าน); ในขณะที่ (WiFi.status () != WL_CONNECTED) { ล่าช้า (500); Serial.print("."); } Serial.println(""); Serial.println ("เชื่อมต่อ WiFi"); Serial.println("ที่อยู่ IP:"); Serial.println(WiFi.localIP()); } การโทรกลับเป็นโมฆะ (หัวข้อ ถ่าน * เพย์โหลด ไบต์ * ความยาว int ที่ไม่ได้ลงชื่อ) { Serial.print ("ข้อความมาถึง ["); Serial.print(หัวข้อ); Serial.print("] "); สำหรับ (int i = 0; i < length; i++) { Serial.print((char) payload); } Serial.println(); StaticJsonDocument jsonBuffer; deserializeJson(jsonBuffer, เพย์โหลด); ราก JsonObject = jsonBuffer.as (); if(root["song"]=="darude"){ darude(); } if(root["song"]=="starwars"){ starwars(); } if(root["song"]=="jacques"){ Serial.println("jakakakakakkakaka"); จาคส์(); } } void reconnected() { // วนซ้ำจนกว่าเราจะเชื่อมต่อใหม่ในขณะที่ (!client.connected()) { Serial.print("Attempting MQTT connection…"); // พยายามเชื่อมต่อ if (client.connect (MQTT_DEVICEID, MQTT_USER, MQTT_TOKEN)) { Serial.println ("connected"); client.subscribe(MQTT_TOPIC_DISPLAY); } อื่น ๆ { Serial.print("failed, rc="); Serial.print(client.state()); Serial.println(" ลองอีกครั้งใน 5 วินาที"); // รอ 5 วินาทีก่อนที่จะลองดีเลย์อีกครั้ง (5000); } } } การตั้งค่าเป็นโมฆะ () { Serial.begin (9600); pinMode (ความชื้นพิน, INPUT); dht.begin(); โหมดพิน(0, เอาต์พุต); setup_wifi(); client.setServer(mqtt_server, MQTT_PORT); client.setCallback(โทรกลับ); ล่าช้า (20); } void loop() { if (!client.connected()) { เชื่อมต่อใหม่ (); } client.loop(); ความชื้น = digitalRead (moisturePin); แสง = อนาล็อกอ่าน (A0); อุณหภูมิ = dht.readTemperature(); ความชื้น = dht.readHumidity(); Serial.println("Temperature =" + String(temp, 1) + "\nHumidity =" + String(humidity, 1) + "\nMoisture: "+String(moisture)+"\nLight: "+String(light)); ส่วนของข้อมูลสตริง = "{"ts\":{"t\": "+String(temp, 1)+", \"h\": "+String(humidity, 1)+"}, \"ms \":{"m\": "+สตริง(ความชื้น)+"}, \"ls\":{"l\":"+สตริง(แสง)+"}}"; Serial.println (เพย์โหลด); if (client.publish(MQTT_TOPIC, (char*) payload.c_str()))) { Serial.println("เผยแพร่ ok"); } อื่น ๆ { Serial.println ("เผยแพร่ล้มเหลว"); } ล่าช้า (2000); } โมฆะ darude(){ โทน(0, NOTE_B3, shortTone); ล่าช้า (ชอร์ตโทน); ไม่มีโทน(0); ล่าช้า (standardDelay); โทน(0, NOTE_B3, ชอร์ตโทน); ล่าช้า (ชอร์ตโทน); ไม่มีโทน(0); ล่าช้า (standardDelay); โทน(0, NOTE_B3, ชอร์ตโทน); ล่าช้า (ชอร์ตโทน); ไม่มีโทน(0); ล่าช้า (standardDelay); โทน(0, NOTE_B3, ชอร์ตโทน); ล่าช้า (ชอร์ตโทน); ไม่มีโทน(0); ล่าช้า (standardDelay); โทน(0, NOTE_B3, ลองโทน); ล่าช้า (longTone); ไม่มีโทน(0); ล่าช้า (delayBetweenBars); โทน(0, NOTE_B3, ชอร์ตโทน); ล่าช้า (ชอร์ตโทน); ไม่มีโทน(0); ล่าช้า (standardDelay); โทน(0, NOTE_B3, ชอร์ตโทน); ล่าช้า (ชอร์ตโทน); ไม่มีโทน(0); ล่าช้า (standardDelay); โทน(0, NOTE_B3, ชอร์ตโทน); ล่าช้า (ชอร์ตโทน); ไม่มีโทน(0); ล่าช้า (standardDelay); โทน(0, NOTE_B3, ชอร์ตโทน); ล่าช้า (ชอร์ตโทน); ไม่มีโทน(0); ล่าช้า (standardDelay); โทน(0, NOTE_B3, ชอร์ตโทน); ล่าช้า (ชอร์ตโทน); ไม่มีโทน(0); ล่าช้า (standardDelay); โทน(0, NOTE_B3, ชอร์ตโทน); ล่าช้า (ชอร์ตโทน); ไม่มีโทน(0); ล่าช้า (standardDelay); โทน(0, NOTE_B3, ลองโทน); ล่าช้า (longTone); ไม่มีโทน(0); ล่าช้า (standardDelay); โทน(0, NOTE_E4, ชอร์ตโทน); ล่าช้า (ชอร์ตโทน); ไม่มีโทน(0); ล่าช้า (standardDelay); โทน(0, NOTE_E4, ชอร์ตโทน); ล่าช้า (ชอร์ตโทน); ไม่มีโทน(0); ล่าช้า (standardDelay); โทน(0, NOTE_E4, ชอร์ตโทน); ล่าช้า (ชอร์ตโทน); ไม่มีโทน(0); ล่าช้า (standardDelay); โทน(0, NOTE_E4, ชอร์ตโทน); ล่าช้า (ชอร์ตโทน); ไม่มีโทน(0); ล่าช้า (standardDelay); โทน(0, NOTE_E4, ชอร์ตโทน); ล่าช้า (ชอร์ตโทน); ไม่มีโทน(0); ล่าช้า (standardDelay); โทน(0, NOTE_E4, ชอร์ตโทน); ล่าช้า (ชอร์ตโทน); ไม่มีโทน(0); ล่าช้า (standardDelay); โทน(0, NOTE_E4, ลองโทน); ล่าช้า (longTone); ไม่มีโทน(0); ล่าช้า (standardDelay); โทน(0, NOTE_D4, ชอร์ตโทน); ล่าช้า (ชอร์ตโทน); ไม่มีโทน(0); ล่าช้า (standardDelay); โทน(0, NOTE_D4, ชอร์ตโทน); ล่าช้า (ชอร์ตโทน); ไม่มีโทน(0); ล่าช้า (standardDelay); โทน(0, NOTE_D4, ชอร์ตโทน); ล่าช้า (ชอร์ตโทน); ไม่มีโทน(0); ล่าช้า (standardDelay); โทน(0, NOTE_D4, ชอร์ตโทน); ล่าช้า (ชอร์ตโทน); ไม่มีโทน(0); ล่าช้า (standardDelay); โทน(0, NOTE_D4, ชอร์ตโทน); ล่าช้า (ชอร์ตโทน); ไม่มีโทน(0); ล่าช้า (standardDelay); โทน(0, NOTE_D4, ชอร์ตโทน); ล่าช้า (ชอร์ตโทน); ไม่มีโทน(0); ล่าช้า (standardDelay); โทน(0, NOTE_D4, ลองโทน); ล่าช้า (longTone); ไม่มีโทน(0); ล่าช้า (standardDelay); โทน(0, NOTE_A3, ลองโทน); ล่าช้า (longTone); ไม่มีโทน(0); ล่าช้า (standardDelay); โทน(0, NOTE_B3, ชอร์ตโทน); ล่าช้า (ชอร์ตโทน); ไม่มีโทน(0); ล่าช้า (standardDelay); โทน(0, NOTE_B3, ชอร์ตโทน); ล่าช้า (ชอร์ตโทน); ไม่มีโทน(0); ล่าช้า (standardDelay); โทน(0, NOTE_B3, ชอร์ตโทน); ล่าช้า (ชอร์ตโทน); ไม่มีโทน(0); ล่าช้า (standardDelay); โทน(0, NOTE_B3, ชอร์ตโทน); ล่าช้า (ชอร์ตโทน); ไม่มีโทน(0); ล่าช้า (standardDelay); โทน(0, NOTE_B3, ลองโทน); ล่าช้า (longTone); ไม่มีโทน(0); ล่าช้า (delayBetweenBars); โทน(0, NOTE_B3, ชอร์ตโทน); ล่าช้า (ชอร์ตโทน); ไม่มีโทน(0); ล่าช้า (standardDelay); โทน(0, NOTE_B3, ชอร์ตโทน); ล่าช้า (ชอร์ตโทน); ไม่มีโทน(0); ล่าช้า (standardDelay); โทน(0, NOTE_B3, ชอร์ตโทน); ล่าช้า (ชอร์ตโทน); ไม่มีโทน(0); ล่าช้า (standardDelay); โทน(0, NOTE_B3, ชอร์ตโทน); ล่าช้า (ชอร์ตโทน); ไม่มีโทน(0); ล่าช้า (standardDelay); โทน(0, NOTE_B3, ชอร์ตโทน); ล่าช้า (ชอร์ตโทน); ไม่มีโทน(0); ล่าช้า (standardDelay); โทน(0, NOTE_B3, ชอร์ตโทน); ล่าช้า (ชอร์ตโทน); ไม่มีโทน(0); ล่าช้า (standardDelay); โทน(0, NOTE_B3, ลองโทน); ล่าช้า (longTone); ไม่มีโทน(0); ล่าช้า (standardDelay); โทน(0, NOTE_E4, ลองโทน); ล่าช้า (longTone); ไม่มีโทน(0); ล่าช้า (standardDelay); โทน(0, NOTE_B3, ชอร์ตโทน); ล่าช้า (ชอร์ตโทน); ไม่มีโทน(0); ล่าช้า (standardDelay); โทน(0, NOTE_B3, ชอร์ตโทน); ล่าช้า (ชอร์ตโทน); ไม่มีโทน(0); ล่าช้า (standardDelay); โทน(0, NOTE_B3, ชอร์ตโทน); ล่าช้า (ชอร์ตโทน); ไม่มีโทน(0); ล่าช้า (standardDelay); โทน(0, NOTE_B3, ชอร์ตโทน); ล่าช้า (ชอร์ตโทน); ไม่มีโทน(0); ล่าช้า (standardDelay); โทน(0, NOTE_B3, ลองโทน); ล่าช้า (longTone); ไม่มีโทน(0); ล่าช้า (delayBetweenBars); โทน(0, NOTE_B3, ชอร์ตโทน); ล่าช้า (ชอร์ตโทน); ไม่มีโทน(0); ล่าช้า (standardDelay); โทน(0, NOTE_B3, ชอร์ตโทน); ล่าช้า (ชอร์ตโทน); ไม่มีโทน(0); ล่าช้า (standardDelay); โทน(0, NOTE_B3, ชอร์ตโทน); ล่าช้า (ชอร์ตโทน); ไม่มีโทน(0); ล่าช้า (standardDelay); โทน(0, NOTE_B3, ชอร์ตโทน); ล่าช้า (ชอร์ตโทน); ไม่มีโทน(0); ล่าช้า (standardDelay); โทน(0, NOTE_B3, ชอร์ตโทน); ล่าช้า (ชอร์ตโทน); ไม่มีโทน(0); ล่าช้า (standardDelay); โทน(0, NOTE_B3, ชอร์ตโทน); ล่าช้า (ชอร์ตโทน); ไม่มีโทน(0); ล่าช้า (standardDelay); โทน(0, NOTE_B3, ลองโทน); ล่าช้า (longTone); ไม่มีโทน(0); ล่าช้า (standardDelay); โทน(0, NOTE_E4, ลองโทน); ล่าช้า (longTone); ไม่มีโทน(0); ล่าช้า (standardDelay); } เป็นโมฆะ starwars () { beep (NOTE_A4, 500); เสียงบี๊บ (NOTE_A4, 500); เสียงบี๊บ (NOTE_A4, 500); เสียงบี๊บ (NOTE_F4, 350); เสียงบี๊บ (NOTE_C5, 150); เสียงบี๊บ (NOTE_A4, 500); เสียงบี๊บ (NOTE_F4, 350); เสียงบี๊บ (NOTE_C5, 150); เสียงบี๊บ (NOTE_A4, 650); ล่าช้า (500); เสียงบี๊บ (NOTE_E5, 500); เสียงบี๊บ (NOTE_E5, 500); เสียงบี๊บ (NOTE_E5, 500); เสียงบี๊บ (NOTE_F5, 350); เสียงบี๊บ (NOTE_C5, 150); เสียงบี๊บ (NOTE_GS4, 500); เสียงบี๊บ (NOTE_F4, 350); เสียงบี๊บ (NOTE_C5, 150); เสียงบี๊บ (NOTE_A4, 650); } เสียงบี๊บเป็นโมฆะ (โน้ต int, ระยะเวลา int) {// เล่นเสียงบนเสียงกริ่งพิน (0, บันทึก, ระยะเวลา); ล่าช้า(ระยะเวลา); ไม่มีโทน(0); ล่าช้า (standardDelay); } โมฆะ heartOfCourage(){ } โมฆะ jacques(){ beep(NOTE_C4, 500); เสียงบี๊บ (NOTE_D4, 500); เสียงบี๊บ (NOTE_E4, 500); เสียงบี๊บ (NOTE_C4, 500); เสียงบี๊บ (NOTE_C4, 500); เสียงบี๊บ (NOTE_D4, 500); เสียงบี๊บ (NOTE_E4, 500); เสียงบี๊บ (NOTE_C4, 500); เสียงบี๊บ (NOTE_E4, 500); เสียงบี๊บ (NOTE_F4, 500); เสียงบี๊บ (NOTE_G4, 500); เสียงบี๊บ (NOTE_E4, 500); เสียงบี๊บ (NOTE_F4, 500); เสียงบี๊บ (NOTE_G4, 500); เสียงบี๊บ (NOTE_G4, 500); เสียงบี๊บ (NOTE_A4, 500); เสียงบี๊บ (NOTE_G4, 500); เสียงบี๊บ (NOTE_F4, 500); เสียงบี๊บ (NOTE_E4, 500); เสียงบี๊บ (NOTE_C4, 500); เสียงบี๊บ (NOTE_G4, 500); เสียงบี๊บ (NOTE_A4, 500); เสียงบี๊บ (NOTE_G4, 500); เสียงบี๊บ (NOTE_F4, 500); เสียงบี๊บ (NOTE_E4, 500); เสียงบี๊บ (NOTE_C4, 500); เสียงบี๊บ (NOTE_C4, 500); เสียงบี๊บ (NOTE_G4, 500); เสียงบี๊บ (NOTE_C4, 500); เสียงบี๊บ (NOTE_C4, 500); เสียงบี๊บ (NOTE_G4, 500); เสียงบี๊บ (NOTE_C4, 500); }

ขั้นตอนที่ 3: IBM Cloud

ไอบีเอ็ม คลาวด์
ไอบีเอ็ม คลาวด์

คุณต้องตั้งค่าอินสแตนซ์ IBM-cloud คุณสามารถค้นหาข้อมูลเกี่ยวกับสิ่งนี้ผ่านลิงค์นี้: github

ขั้นตอนที่ 4: Node-RED

เราใช้ node-red เพื่อจัดการกับตรรกะทางธุรกิจทั่วไปของเรา และเพื่อให้เห็นภาพข้อมูลนี้ในอินเทอร์เฟซผู้ใช้ที่ใช้งานง่าย

ขั้นตอนที่ 5: การตั้งค่า Node-RED: Light

การตั้งค่า Node-RED: Light
การตั้งค่า Node-RED: Light

นำเข้ารหัสต่อไปนี้ในโครงการของคุณ

[{"id":"deb0d57.1c46528", "type":"tab", "label":"Light", "disabled":false, "info":""}, {"id":"8a0fcaac. 4e54", "type": "ibmiot in", "z": "deb0d57.1c46528", "authentication": "boundService", "apiKey": "", "inputType": "evt", "logicalInterface": ", "ruleId":"", "deviceId":"ESP", "applicationId":"", "deviceType":"ESP8266", "eventType":"+", "commandType":"", "format":"json", "name":"รับข้อมูลจาก ESP", "service":"registered", "allDevices":false, "allApplications":"", "allDeviceTypes":false, "allLogicalInterfaces":"", "allEvents":true, "allCommands":"", "allFormats":"", "qos":0, "x":120, "y":62, "wires":

ขั้นตอนที่ 6: การตั้งค่า Node-RED: อุณหภูมิ

การตั้งค่าโหนด-RED: อุณหภูมิ
การตั้งค่าโหนด-RED: อุณหภูมิ

นำเข้ารหัสต่อไปนี้ในโครงการของคุณ

[{"id":"fbad3799.f0e0e", "type":"tab", "label":"Temperature", "disabled":false, "info":""}, {"id":"b8618eb9. 1c9288", "type":"ibmiot in", "z":"fbad3799.f0e0e", "authentication":"boundService", "apiKey":"", "inputType":"evt", "logicalInterface":" ", "ruleId":"", "deviceId":"ESP", "applicationId":"", "deviceType":"ESP8266", "eventType":"+", "commandType":"", "format":"json", "name":"รับข้อมูลจาก ESP", "service":"registered", "allDevices":false, "allApplications":"", "allDeviceTypes":false, "allLogicalInterfaces":"", "allEvents":true, "allCommands":"", "allFormats":"", "qos":0, "x":145.5, "y":49, "wires":

ขั้นตอนที่ 7: การตั้งค่า Node-RED: ความชื้น

การตั้งค่า Node-RED: ความชื้น
การตั้งค่า Node-RED: ความชื้น

นำเข้ารหัสต่อไปนี้ในโครงการของคุณ

[{"id":"144cd53b.c00473", "type":"tab", "label":"Humidity", "disabled":false, "info":""}, {"id":"d958f58b. 2678e", "type":"ibmiot in", "z":"144cd53b.c00473", "authentication":"boundService", "apiKey":"", "inputType":"evt", "logicalInterface":" ", "ruleId":"", "deviceId":"ESP", "applicationId":"", "deviceType":"ESP8266", "eventType":"+", "commandType":"", "format":"json", "name":"รับข้อมูลจาก ESP", "service":"registered", "allDevices":false, "allApplications":"", "allDeviceTypes":false, "allLogicalInterfaces":"", "allEvents":true, "allCommands":"", "allFormats":"", "qos":0, "x":142, "y":87, "wires":

ขั้นตอนที่ 8: การตั้งค่า Node-RED: ความชื้น

การตั้งค่าโหนด-RED: ความชื้น
การตั้งค่าโหนด-RED: ความชื้น

นำเข้ารหัสต่อไปนี้ในโครงการของคุณ

[{"id":"4ee73536.ec6fc4", "type":"tab", "label":"Moisture", "disabled":false, "info":""}, {"id":"a6daac3e. 2d5268", "type":"ibmiot out", "z":"4ee73536.ec6fc4", "authentication":"boundService", "apiKey":"", "outputType":"cmd", "deviceId":" ESP", "deviceType": "ESP8266", "eventCommandType": "update", "format": "json", "data": "msg", "qos":0, "name":"ส่งคำสั่งไปยัง ESP ", "service":"จดทะเบียน", "x":804.1944580078125, "y":383.0000305175781, "wires":}, {"id":"4134fdb7.18e9b4", "type":"ibmiot in", "z":"4ee73536.ec6fc4", "authentication":"boundService", "apiKey":"", "inputType":"evt", "logicalInterface":"", "ruleId":"", "deviceId":"ESP", "applicationId":"", "deviceType":"ESP8266", "eventType":"update", "commandType":"", "format":"json", "name":"รับข้อมูล จาก ESP", "service":"registered", "allDevices":false, "allApplications":"", "allDeviceTypes":false, "allLogicalInterfaces":"", "allEvents":true, "allCommands":"", "allFormats":false, "qos":0, "x":115, "y":76, "wires":

ขั้นตอนที่ 9: คุณทำเสร็จแล้ว

ยินดีด้วย! ตอนนี้คุณมีระบบสังเกตการณ์โรงงานที่ทำงานแล้ว

หากคุณมีคำถามใด ๆ อย่าลังเลที่จะติดต่อเรา!