การกำหนดค่าเกตเวย์ LoraWan


10

ฉันพยายามที่จะสร้างเครือข่าย LoRaWan ใช้โปรแกรมได้เซ็นเซอร์กับ Arduino และDragino Lora โล่

ฉันได้พบวิธีแก้ไขปัญหามากมายสำหรับการสร้างเกตเวย์รวมถึง Raspberry Pi ที่เชื่อมต่อกับ Dragino Lora Shield หรือiC880Aและข้อมูลที่ฉันได้รับจะถูกส่งไปยังเซิร์ฟเวอร์ในคลาวด์ ฉันสับสนมากเกี่ยวกับการเขียนโปรแกรมเกตเวย์

  • ฉันต้องบอกให้เชื่อมต่อกับโหนดและเซิร์ฟเวอร์หรือไม่ หรือรับข้อมูลโดยอัตโนมัติ
  • และฉันจะตั้งโปรแกรมเซิร์ฟเวอร์เพื่อเชื่อมต่อกับเกตเวย์หรือโดยตรงกับโหนดหรือไม่?

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

สวัสดีและขอบคุณ! ฉันเป็นผู้เริ่มต้นในเครือข่าย Iot ดังนั้นฉันจึงสร้างโหนดโดยใช้ arduino uno, เซ็นเซอร์วัดอุณหภูมิและโล่ Dragino Lora Shield ฉันพยายามส่งวันที่ไปยังเซิร์ฟเวอร์ดังนั้นฉันจึงพยายามสร้าง LoraWan Gateway โดยใช้ราสเบอร์รี่ Pi ฉันทำ งานวิจัยบางอย่างเกี่ยวกับวิธีแปลงมันเป็น LoraWan Gateway และฉันพบว่าฉันสามารถใช้ Dragino Lora Shield อื่นหรือกับโมดูล iC880A ได้และฉันก็พบซอร์สโค้ดที่จะทำ แต่ฉันยังสับสนเกี่ยวกับวิธีการเชื่อมต่อ เกตเวย์ไปยังโหนดและวิธีการส่งข้อมูลจากโหนดไปยังเซิร์ฟเวอร์ไปยังเซิร์ฟเวอร์ ขอบคุณล่วงหน้า !!
Mohamed Achref Dridi

คำตอบ:


11

ในเครือข่าย LoRaWAN ทั่วไปเกตเวย์เป็นอุปกรณ์ที่โง่ตามที่อธิบายโดย LoRa Alliance :

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

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

เกตเวย์มักจะถูกเรียกว่า "แพ็คเก็ตส่งต่อ" ดังนั้นเกตเวย์จะทำเช่นนั้น: พวกเขาส่งต่อแพ็กเก็ต LoRaWAN ที่ได้รับทั้งหมดไปยังเซิร์ฟเวอร์เครือข่ายบางตัว (ไม่ว่าโหนดใดจะส่งโหนดนั้น) และพวกเขาจะส่งสิ่งที่เซิร์ฟเวอร์เครือข่ายสั่ง ดังนั้นโหนด (end-อุปกรณ์) ไม่ได้เชื่อมต่อกับเกตเวย์บาง ; แต่พวกเขาเพียงแค่ส่งและหวังว่าหนึ่งหรือมากกว่าหนึ่งเกตเวย์จะได้รับการส่งและส่งต่อไปยังเซิร์ฟเวอร์เครือข่ายที่รู้ว่าโหนด (เกตเวย์ไม่สามารถอ่านข้อมูลที่เข้ารหัสที่ส่งต่อได้)

ในการเชื่อมต่อโหนดกับเครือข่ายพวกเขาจะ "เปิดใช้งาน" โดยใช้หนึ่งในสองตัวเลือก :

  • การเปิดใช้งานแบบ Over-The-Air (OTAA)

    ขั้นแรกให้ใช้บางเว็บไซต์หรือ API แต่ละโหนดใหม่จะลงทะเบียนในเซิร์ฟเวอร์เครือข่ายโดยใช้อุปกรณ์ที่เป็นเอกลักษณ์ EUI ( DevEUI) จากนั้นจะได้รับรหัสแอปพลิเคชันสาธารณะ ( AppEUI) และรหัสแอปพลิเคชันลับ ( AppKey) ค่าทั้งสามนี้ถูกตั้งโปรแกรมไว้ในโหนด

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

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

  • การเปิดใช้งานโดยการตั้งค่าส่วนบุคคล (ABP)

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


1
เกตเวย์พิเศษบางตัวมีเซิร์ฟเวอร์เครือข่าย LoRaWAN และสามารถทำหน้าที่เป็นเครือข่ายแบบสแตนด์อโลน แต่ส่วนใหญ่จะต้องเชื่อมต่อกับเซิร์ฟเวอร์เครือข่ายภายนอก ฉันได้ลบคำตอบของฉันซึ่งไม่ชัดเจนเพียงพอในจุดนั้น
Sylvain

0

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

คล้ายคลึง ...

You > Letter > Mailbox > Mailman > Post Office Dist > Recipient

|----------------- TX -------------------|

Node > Packet > Transmission > Gateway > Network Server > Application

|----------------- RX -------------------|

Node < Packet < Transmission < Gateway < Network Server < Application

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

ไม่ว่าคุณจะใช้ประโยชน์จากThe Things Networkหรือพยายามสร้างเซิร์ฟเวอร์ส่วนตัวของคุณเองโดยใช้สิ่งที่คล้ายกับLoRaServerคุณจะต้องมีเกตเวย์ที่เข้าถึงโหนด / mote / end-device ของคุณเพื่อส่งต่อข้อความไปมา นึกถึงคีย์ต่าง ๆ ในรหัสของโหนดเป็นที่อยู่บนตัวอักษรในการเปรียบเทียบ

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

ในการกำหนดค่าเกตเวย์ขึ้นอยู่กับไลบรารีที่คุณเลือกโดยทั่วไปคุณเพียงแค่ต้องกำหนดค่าพารามิเตอร์บางอย่างในซอร์สโค้ดหรือในไฟล์ global_conf.json หรือ local_conf.json

นี่คือตัวอย่างจากการซ่อมด้วย RFM9X (อิง SX1276) และ RPI3 B + โดยใช้single_chan_pkt_fwdbtw ใดที่จะไม่ตอบสนอง ... โปรดจำไว้ว่านี่เป็นเพียงการแก้ไข / ทดสอบ ทั้งผู้ส่งและตัวอย่าง global_conf.json ด้านล่างไม่ใช่ plug-n-play และไม่ควรเชื่อถือสำหรับการเชื่อมต่อเครือข่าย LoRaWan ที่เหมาะสม เกตเวย์ที่เข้ากันได้มี 3 วิทยุและสามารถประมวลผลหลายช่องทางและรับ / ส่งในเวลาเดียวกัน ตัวอย่างนี้เพิ่งได้รับจากโหนดบนช่องสัญญาณเดียวและไม่น่าเชื่อถือมาก แต่มีการกำหนดค่าปัจจุบัน แต่ละค่าขึ้นอยู่กับฮาร์ดแวร์ที่คุณใช้และที่คุณตั้งอยู่ ... หรือที่ตั้งของเกตเวย์เช่นสหรัฐอเมริกา, สหภาพยุโรป, ฯลฯ ... นอกจากนี้ยังควรสังเกตว่า global_conf.json นั้นไม่ใช่ขนาดเดียว เหมาะกับทุกคน ห้องสมุดที่แตกต่างกันมักจะมีตัวเลือกการกำหนดค่าเพิ่มเติมสำหรับวิทยุหลายช่องทาง ฯลฯ ... เพียงแค่ FYI

{
  "SX127x_conf": // depending on your hardware/radio this could be something like sx1301..., sx127x...., etc.. 
  {
    "freq": 903000000, // depending on whether US (900 range), EU (800 range) or other...
    "spread_factor": 7, // look this up
    "pin_nss": 10, // wiringpi value = physical pin #24
    "pin_dio0": 5, // wiringpi value = physical pin #18
    "pin_rst": 21 // wiringpi value = physical pin #29
  },
  "gateway_conf":
  {
    "ref_latitude": 0.0, 
    "ref_longitude": 0.0,
    "ref_altitude": 2,

    "name": "WHATEVER NAME",
    "email": "WHATEVER@EMAIL.TLD",
    "desc": "WHATEVER DESC",

    "servers":
    [
      {
        "address": "localhost", // this one is private so localhost, but TTN lookup address
        "port": 1700, // this one is private so localhost, but TTN lookup port
        "enabled": true
      } // you could add more... say you have a private one and TTN 
    ]
  }
}

สมมติว่าคุณกำลังสร้างโหนดด้วยอุปกรณ์และรหัส Arduino และคุณใช้บางอย่างเช่นไลบรารี LMIC-Arduino และตัวอย่างร่าง ก่อนอื่นคุณต้องพิจารณาตามฮาร์ดแวร์ของอุปกรณ์ว่าจะกำหนดค่า pinmap ให้อุปกรณ์ทำงานได้อย่างไร จากนั้นหากคุณจะใช้ TTN คุณทำตามคำแนะนำมากมายเพื่อลงทะเบียนและรับกุญแจที่จำเป็นที่คุณใส่ไว้ในรหัสร่าง คุณต้องตรวจสอบให้แน่ใจว่าคุณกำลังส่งสัญญาณความถี่ที่เหมาะสมและ ... เพื่อให้สอดคล้องกับเกตเวย์ในพื้นที่ของคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.