การบีบอัดส่วนหัวบริบทแบบคงที่ (SCHC, ออกเสียงเก๋) เป็นกลไกการบีบอัด ทั่วไป สำหรับเครือข่าย LPWAN มันเป็นมาตรฐานที่ IETF
การใช้งานนี้ใช้ SCHC กับส่วนหัว COAP/UDP/IPv6 แต่สามารถขยายไปยังฟิลด์ประเภทอื่นได้
เอกสารนี้อธิบายถึงแอปพลิเคชันของกระบวนการบีบอัด/การบีบอัดทั่วไปที่กำหนดไว้ใน {{id.toutain-lpwan-ipv6-static-context-hc}} และ {{id.toutain-lpwan-coap-static-context-hc}}
ในขณะนี้การใช้งานได้รับการทดสอบเฉพาะอัปลิงค์และดาวน์ลิงก์การสื่อสารจากอุปกรณ์ (dev) ไปยังคอมเพรสเซอร์ LPWAN/decompressor (SC) ในโครงสร้างพื้นฐานที่มีเซิร์ฟเวอร์ COAP แบบง่ายที่ทำงานอยู่ด้านบนของ SCHC C/D การใช้งานอุปกรณ์เป็นคำเขียนใน Python ปัจจุบันใช้ PyCom API สำหรับ LORA และสามารถปรับให้เหมาะกับ SigFox ได้อย่างง่ายดาย
แพ็คเก็ต COAP/UDP/IPv6 ถูกสร้างขึ้นโดยอุปกรณ์อุปกรณ์จะวิเคราะห์แพ็คเก็ตนี้เพื่อให้ได้ค่าแต่ละค่าของฟิลด์ส่วนหัวจากนั้นอุปกรณ์จะค้นหากฎการบีบอัดที่ตรงกับรูปแบบแพ็กเก็ตนี้ หากมีกฎในบริบทที่ตรงกับรูปแบบส่วนหัวและค่าของแพ็กเก็ตฟิลด์ส่วนหัวจะถูกบีบอัดโดยใช้การบีบอัด/การบีบอัดการกระทำ (CDA) ที่ระบุโดยกฎนั้นและแพ็กเก็ตบีบอัดจะถูกส่งผ่านอากาศไปยังโครงสร้างพื้นฐาน C/D
เมื่อใบเสร็จรับเงินแพ็คเก็ตบีบอัดจะถูกแยกวิเคราะห์โดยโครงสร้างพื้นฐาน C/D เพื่อกำหนดตัวระบุกฎ (ไบต์แรก) แต่ละฟิลด์ส่วนหัวที่ตามมา (ตามที่ระบุโดยกฎ) และน้ำหนักบรรทุก ในที่สุด LC จะบีบอัดส่วนหัวตามที่อธิบายไว้ในกฎ ข้อความ COAP จะถูกประมวลผลและหากต้องการคำตอบการตอบสนองจะถูกบีบอัดและส่งกลับไปยังอุปกรณ์ที่บีบอัด
เพื่อจุดประสงค์นี้อุปกรณ์จะถูกนำไปใช้ในโมดูล lopy ซึ่งสามารถส่งผ่าน LORA และสามารถตั้งโปรแกรมได้อย่างง่ายดายใน micropython โครงสร้างพื้นฐาน C/S ถูกนำมาใช้กับ node.js โดยเซิร์ฟเวอร์ HTTP ซึ่งได้รับเฟรม PATLOK LPWAN ที่บีบอัด RAW แพ็คเก็ตในข้อความโพสต์ คำตอบรวมอยู่ในการรับทราบข้อความโพสต์นี้
จำเป็นต้องมีคลาสที่แตกต่างกันเพื่อใช้การบีบอัดและการบีบอัด
Rulemngt.py กำหนดคลาส Rulemanager ซึ่งรักษาบริบท SCHC
อินสแตนซ์ของผู้ปกครองถูกสร้างขึ้นด้วยการเรียกผู้ปกครอง ()
RM = RuleManager()
จากนั้นสามารถเพิ่มกฎได้โดยใช้วิธี addrule:
RM.addRule(rule_coap0)
RM.addRule(rule_coap1)
กฎถูกกำหนด OIN JSON โดยใช้รูปแบบต่อไปนี้:
rule_coap0 = {"ruleid" : 0,
"content" : [["IPv6.version", 1, "bi", 6, "equal", "not-sent"],
["IPv6.trafficClass", 1, "bi", 0x00, "equal", "not-sent"]] }
กฎประกอบด้วยรายการ (dictionnary) ของสององค์ประกอบ:
Ruleid กำหนดหมายเลขกฎ
เนื้อหามีอาร์เรย์ของคำอธิบายฟิลด์ประกอบด้วย:
วิธีการ findRuleFromID (ruleID) ส่งคืนกฎที่สอดคล้องกับ RULUID
วิธีการ findRuleFrompkt (ส่วนหัว, ทิศทาง) ส่งคืนกฎที่สอดคล้องกับรายการฟิลด์ส่วนหัวที่มีอยู่ในอาร์กิวเมนต์แรก ค่านี้มาจากการแยกวิเคราะห์ส่วนหัวของแพ็กเก็ตด้วยตัวแยกวิเคราะห์ระดับ อาร์กิวเมนต์ที่สองคือ "Up", "DW" หรือ "BI" แสดงทิศทางจากมุมมองของอุปกรณ์
สำหรับทั้งสองวิธีหากไม่พบกฎจะไม่มีการส่งคืน