# OpenWebNet
OpenWebNet คือ โพรโทคอลสำหรับการสื่อสารซึ่งได้รับการพัฒนาโดย Bticino ตั้งแต่ปี 2000

สำหรับ โพรโทคอล OpenWebNet นี้ ถูกเสริมให้มีการจัดการในระดับสูง ระหว่างยูนิตรีโมต กับบัส SCS ในระบบ MyHome domotic ซิสเต็ม

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

ทั้งนี้ โพรโทคอล OpenWebNet ได้ถูกบรรจุใน MyOpen community ไว้แล้ว

 โพรโทคอล OpenWebNet 
โพรโทคอลนี้ถูกคิดให้เป็นอิสระจากเทคโนโลยีที่เคยใช้งานอยู่ ยกตัวอย่างเช่น เป็นไปได้ที่จะใช้ซอฟต์แวร์ supervisor เชื่อมต่อกันโดย อีเทอร์เน็ต, โดย serial RS232 หรือ โดย USB ไปยังเกตเวย์ที่ถูกเชื่อมต่อโดยตรงกับระบบ domotic ซิสเต็ม

ความต้องการเพียงเล็กน้อย คือ ความเป็นไปได้ในการใช้งาน DTMF tones บนสายโทรศัพท์พื้นฐาน PSTN เพื่อการส่งข้อความ

ทุกคนสามารถที่จะเพิ่มเติมโพรโทคอล message ตามความต้องการ เพียงแค่นำเสนอ RFC ของตัวเอง จะมีการตรวจสอบอย่างอัตโนมัติและถูกใส่ไว้ให้ถ้าหากข้อเพิ่มเติมนั้นตรงตามเงื่อนไขของ OpenWebNet syntax

 Syntax 
OpenWebNet message มีโครงสร้างประกอบด้วย ความยาว field ตัวแปร และถูกคั่นโดยตัวอักษรพิเศษ '*' จากนั้นจะถูกปิดท้ายด้วยเครื่องหมาย '##'

ตัวอักษรที่จะถูกยอมรับค่าใน field จะเป็นตัวเลข และเครื่องหมาย '#'

โครงสร้างของ message ที่ได้จะมีลักษณะดังนี้:
field1*field2…*fieldN##

fields ดังตัวอย่างด้านล่างถูกรับค่าโดย:
WHO
WHERE
WHAT
DIMENSION
VALUE

WHO

เป็นตัวระบุว่าฟังก์ชันใดในระบบ domotic ซิสเต็ม ที่ถูก OpenWebNet message อ้างอิงถึง
ตัวอย่าง: WHO = 1, เป็นการระบุ message ว่าต้องการจัดการในระบบ lighting ซิสเต็ม

WHERE

เป็นการระบุถึงกลุ่มของอ็อบเจกต์ที่ถูกอ้างอิงถึงใน OpenWebNet message ซึ่งสามารถเป็น
อ็อบเจกต์เดียว หรือกลุ่มของอ็อบเจกต์หรือ environment ที่ต้องการระบุจำเพาะหรือระบุทั้งระบบก็ได้

สำหรับทุก WHO (หรือสำหรับทุกๆฟังก์ชัน) จะมีตารางค่า WHERE ที่ถูกกำหนดไว้โดยเฉพาะ

ทั้งนี้ tag ของ WHERE สามารถมีพารามิเตอร์เพิ่มเติมได้: WHERE#PAR1#PAR2… #PARn.

ตัวอย่าง where: ไฟทุกดวงของ กลุ่ม 1, เซนเซอร์ 2 ของโซน 1 ของระบบเตือนภัย, ...ฯลฯ
--all the lights of group 1, sensor 2 of zone 1 of alarm system, etc…

WHAT

เป็นการระบุถึงแอคชั่นที่ต้องการทำ หรือสถานะสำหรับการอ่าน สำหรับทุก WHO (หรือสำหรับทุกๆฟังก์ชัน) จะมีตารางค่า WHAT ที่ถูกกำหนดไว้โดยเฉพาะ

ทั้งนี้ WHAT สามารถมีพารามิเตอร์เพิ่มเติมได้: WHAT#PAR1#PAR2… #PARn.

ตัวอย่างแอคชั่นที่ต้องการทำ: เปิดไฟ, ให้ความสว่างเป็น 75%, ปิดชัทเตอร์, เปิดวิทยุ, ...ฯลฯ
--switch ON light, dimmer to 75%, switch DOWN shutter, radio ON, etc…
ตัวอย่างของสถานะ: ไฟสว่าง, ระบบเตือนภัยทำงาน, แบตเตอรี่อันโหลด, ...ฯลฯ
--light ON, active alarm, battery unload, etc…

DIMENSION

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

สามารถที่จะร้องขอ, อ่านหรือเขียนค่าของ value ในแต่ละ dimension ได้ โดยสำหรับแต่ละ dimension จะมี prefixed number สำหรับค่า value ที่ถูกกำหนดใน VALUE field

ตัวอย่าง dimension: อุณหภูมิของเซนเซอร์, ระดับเสียงของลำโพง, เวอร์ชันเฟิร์มแวร์ของอุปกรณ์, ...ฯลฯ
--sensor temperature, loudspeaker volume, firmware version of a device, etc.

VALUE

เป็นการระบุค่า อ่าน/เขียน สำหรับ value ใน dimension

 Message 
มี 4 ประเภทของ OpenWebNet Message:

ข้อความคำสั่ง/ สถานะ --(Command/Status Message)

ข้อความสถานะที่ต้องการร้องขอ --(Status Request Message)

ข้อความร้องขอ/อ่าน/เขียน dimension --(Request/Read/Write Dimension Message)

ข้อความแจ้ง --(Acknowledge Message)

ข้อความคำสั่ง/สถานะ --(Command/Status Message) :
 *WHO*WHAT*WHERE##
ข้อความสถานะที่ต้องการร้องขอ --(Status Request Message) :
 *#WHO*WHERE##
ข้อความร้องขอ/อ่าน/เขียน dimension --(Request/Read/Write Dimension Message) :
 *#WHO*WHERE*DIMENSION##
อ่าน: --Read
 *#WHO*WHERE*DIMENSION*VALUE1*…*VALUEn##
เขียน: --Write
 *#WHO*WHERE*#DIMENSION*VALUE1*…*VALUEn##

ข้อความแจ้ง --(Acknowledge Message ACK) :
 *#*1##
ข้อความไม่ถูกต้อง --(NACK) :
 *#*0##

 เกตเวย์ OpenWebNet 
สามารถเป็นไปได้ที่จะสื่อสารกับบัส SCS home automation โดยการใช้ เกตเวย์ ที่เฉพาะเจาะจง
มี เกตเวย์ 2 ประเภทที่อนุญาตการเชื่อมต่อกับ field บัส โดยการใช้ โพรโทคอลstandard ที่แตกต่างกัน
 เกตเวย์ อีเทอร์เน็ต (Linux based)
 เกตเวย์ USB / RS232

เกตเวย์อีเทอร์เน็ต
ระบบที่ได้รับการติดตั้งในปัจจุบันโดย BTicino จะเป็นแบบ embedded web server ซึ่งทำงานในฐานะตัวแปลระหว่าง OpenWebNet message โดยใช้ TCP/IP และ SCS message ส่งผ่านต่อข้อมูลโดยทางบัส SCS

ในความเป็นจริงแล้วสามารถที่จะควบคุม 3 ชนิดของบัสที่แตกต่างกัน:
 บัส SCS
 KNX
 DMX

เกตเวย์ USB / RS232
เกตเวย์เป็นตัว interface โดยทำงานในฐานะตัวแปลระหว่าง OpenWebNet message และส่งผ่านโดย USB หรือ Serial จากนั้น SCS message จะส่งผ่านต่อข้อมูลโดยทาง บัส SCS

 ตัวอย่าง 
ตัวอย่าง OpenWebNet message

ข้อความคำสั่ง --(Command Message)

ปิดไฟดวงที่ 77 --(Switch Off of light 77)
 *1*0*77##
WHO = 1
WHAT = 0
WHERE = 77

ข้อความสถานะ --(Status Message)

ทำการ activate ส่วน scenario 1 ของ scenario unit 23 --(Scenario 1 of scenario unit 23 activated)
 *0*1*23##
WHO = 0
WHAT = 1
WHERE = 23

ข้อความร้องขอ --(Request status message)

สถานะร้องขอสำหรับ probe 1 --(Status request of probe 1)
 *#4*1##
WHO = 4
WHERE = 1

ข้อความร้องขอ dimension --(Request Dimension Message)

Request of Temperature Measured, probe 44 (ร้องขอสำหรับการวัดอุณหภูมิ, probe 44)
 *#4*44*0##
WHO = 4
WHERE = 44
DIMENSION = 0

ข้อความอ่าน dimension --(Read Dimension Message)

วัดอุณหภูมิ, probe 44 --(Temperature Measured, probe 44)
 *#4*44*0*0251*2##
WHO = 4
WHERE = 44
DIMENSION = 0
VALUE1 = 0251 (T=+25,1◦ C)
VALUE2 = 2 (System in "cooling mode")

ข้อความเขียน dimension --(Write Dimension Message)

เซต volume ที่ 50% ณ environment 2 --(Volume set at 50%, environment 2)
 *#16*#2*#1*16*##
WHO = 4
WHERE = #1
DIMENSION = 1
VALUE1 = 16