กราฟสถานะของเซ็นเซอร์ที่เชื่อมต่อกับ Internet of Things IoT
ข้อดีอย่างหนึ่งของการเชื่อมต่อเครือข่ายเซ็นเซอร์กับ Internet of Things คือสามารถวิเคราะห์ข้อมูลที่ได้รับได้ ด้วยการนำเสนอข้อมูลนี้ในรูปแบบกราฟิก บุคคล (ซึ่งตรงข้ามกับโปรแกรม) สามารถเข้าใจความหมายของปริมาณที่ได้รับการตรวจสอบได้ง่ายขึ้น เช่น โดยการเปรียบเทียบระหว่างกันหรือติดตามการพัฒนาเมื่อเวลาผ่านไป
บทความนี้จะเริ่มต้นซีรีส์ที่ประกอบด้วยสี่ส่วนที่อธิบายข้อเสนอง่ายๆ สำหรับการแสดงข้อมูลแบบกราฟิกที่ได้รับจากเซ็นเซอร์ที่เชื่อมต่อกับ IoT ด้วยปรัชญาเดียวกันกับบทความอื่นๆ วิธีการที่แนะนำนี้ใช้งานได้อย่างสมบูรณ์แบบ แม้ว่าวัตถุประสงค์หลักจะเป็นการสอนก็ตาม เนื่องจากเป็นลักษณะทางเทคนิคของประชาชนทั่วไปซึ่ง บล็อกของ polaridad.esและข้อความนี้เป็นเรื่องเกี่ยวกับอิเล็กทรอนิกส์ไม่ใช่การพัฒนาเว็บ แต่ละส่วนทำหน้าที่เป็นการแนะนำภาษาหรือเทคโนโลยีที่ใช้: HTML, CSS, SVG y JavaScript.
บทความในชุดก่อนหน้านี้เกี่ยวกับ วิธีจัดเก็บข้อมูลที่ได้รับจากอุปกรณ์ที่เชื่อมต่อกับ Internet of Things (IoT) ปิดท้ายด้วยการอธิบายวิธีการเข้าถึงข้อมูลที่เก็บไว้ในฐานข้อมูล ในตัวอย่างของซีรีส์นี้ เพื่อให้กระบวนการง่ายขึ้น เว็บเซิร์ฟเวอร์ถูกใช้เป็นตัวกลางที่รับผิดชอบในการรับข้อมูลผ่านการร้องขอ POST ของโปรโตคอล HTTP จัดเก็บไว้ในฐานข้อมูลและแสดงข้อมูลบนหน้าเว็บ
แม้ว่าข้อเสียเปรียบหลักของระบบนี้คือประสิทธิภาพ (ซึ่งสามารถบรรเทาได้ด้วยทางเลือกอื่น เช่น Node.js และ MongoDB ซึ่งจะอธิบายในบทความต่อๆ ไป) แต่กลับให้ข้อดีสองประการที่ยอดเยี่ยม นั่นคือ การใช้งานนั้นง่ายมาก (รวมถึงความพร้อมใช้งานด้วย ของบริการสาธารณะ) และสามารถแสดงข้อมูลในเบราว์เซอร์ได้ กล่าวคือ ไม่จำเป็นต้องมีแอปพลิเคชันเฉพาะ (เช่น แอปสำหรับอุปกรณ์เคลื่อนที่) ในการนำเสนอข้อมูลที่เก็บไว้ซึ่งจะแสดงสถานะในอดีตของอุปกรณ์ที่เชื่อมต่อกับอินเทอร์เน็ตของ สิ่งของ.
การใช้ประโยชน์จากความสามารถในการนำเสนอข้อมูลที่เก็บไว้ในระบบนี้บนหน้าเว็บได้อย่างง่ายดายเกี่ยวกับสถานะของอุปกรณ์ที่เชื่อมต่อกับ IoT บทความนี้จะอธิบายวิธีการแสดงข้อมูลนี้ในรูปแบบกราฟิกโดยใช้รูปแบบ SVG จาก JavaScript เพื่อสร้างหน้าเว็บแบบไดนามิก HTML.
มีร้านหนังสือมากมาย JavaScript ซึ่งใช้ในการแก้ปัญหาการนำเสนอข้อมูลแบบกราฟิก บทความเหล่านี้ไม่ได้ตั้งใจจะพัฒนาบทความอื่น วัตถุประสงค์ของข้อความนี้คือเพื่อทำความเข้าใจกระบวนการและสามารถพัฒนาการใช้งานของคุณเองได้ วัตถุประสงค์ในการสอนเช่นเดียวกับวัตถุประสงค์ที่มีประสิทธิผล หากคุณสนใจที่จะใช้ผลิตภัณฑ์แทนที่จะพัฒนาด้วยตัวเอง ฉันขอแนะนำให้คุณดูไลบรารีที่ยอดเยี่ยมสำหรับการสร้างกราฟิกด้วย JavaScript พร้อมใบอนุญาตฟรีเช่น Charts.js, Highcharts, เครื่องมือแผนภูมิของ Google, ยุค, ราฟาเอล, กราฟฟิค (ขึ้นอยู่กับ ราฟาเอล), ดีซี.เจส, Chartist.js, D3.js (คำแนะนำของฉัน) C3.js (ขึ้นอยู่กับ D3.js), NVD3 (กราฟิกที่ใช้ซ้ำได้สำหรับ D3.js) ...
โครงสร้างเอกสาร HTML พร้อมกราฟิก SVG
ในข้อเสนอของบทความนี้เพื่อนำเสนอข้อมูลเซ็นเซอร์แบบกราฟิก หน้าเว็บที่จะแสดงประกอบด้วย:
- เอกสารที่ทำหน้าที่เป็นคอนเทนเนอร์ถูกเขียนไว้ HTML,
- ลักษณะที่ปรากฏของเพจถูกกำหนดด้วยโค้ด CSS,
- การวาดกราฟทำได้โดยใช้ภาษา SVG y
- การอ่านข้อมูลจากเซิร์ฟเวอร์และการแสดงกราฟถูกตั้งโปรแกรมไว้ JavaScript
องค์ประกอบทั้งหมด โดยเฉพาะโค้ด HTML ของหน้าสามารถสร้างได้บนเซิร์ฟเวอร์ด้วย PHP ตามที่อธิบายไว้ในบทความเรื่อง ภาษาโปรแกรม PHP จากซีรีส์เกี่ยวกับ การจัดเก็บข้อมูลจากอุปกรณ์ที่เชื่อมต่อกับ Internet of Things.
รหัส CSS y JavaScript สามารถโหลด (นำเข้า) ในโค้ดได้ HTML แทนที่จะเขียนเป็นส่วนหนึ่งของเอกสารโดยตรง HTML. มีข้อดีคือสามารถนำเอกสารเดิมกลับมาใช้ซ้ำได้ในหลายหน้า และแก้ไขได้สะดวกยิ่งขึ้น แต่บางทีความไม่สะดวกในการโหลดนานขึ้นนิดหน่อยก็ขึ้นอยู่กับว่าคุณสามารถใช้โค้ดที่มีอยู่ในแคช (โหลดในครั้งก่อน) หรือแม้แต่ CDN. ในขั้นตอนการผลิต การรวมโค้ดทั้งหมดจาก PHP เข้าด้วยกันเพื่อสร้างเอกสารฉบับเดียวนั้นเป็นเรื่องเล็กน้อย HTML พร้อมข้อมูลทั้งหมดหากคุณเลือกตัวเลือกนี้ เพื่อความชัดเจนตลอดทั้งบทความชุดนี้ ถือว่าเรากำลังดำเนินการกับเอกสารแยกต่างหาก
เพื่อวัตถุประสงค์ที่เราสนใจเพื่อใช้เป็นคอนเทนเนอร์กราฟิกและเนื้อหาในระดับแรกของโครงสร้างของเอกสารโดยคร่าวๆ HTML จะ:
1 2 3 4 5 6 7 | <!DOCTYPE html> <html lang=“es”> <!– El código del documento HTML está escrito en español –> <head> </head> <body onload=“funcion();”> </body> </html> |
บรรทัดแรกทำหน้าที่ระบุให้เว็บเบราว์เซอร์ทราบว่ามีการเขียนเอกสารที่กำลังอ่านอยู่ HTMLโดยเฉพาะในเวอร์ชัน 5 (เรียกว่า HTML5). รุ่นก่อนหน้าของ HTML, ขึ้นอยู่กับ เอสจีเอ็มแอล (ภาษามาร์กอัปมาตรฐานทั่วไป) รวมคำจำกัดความประเภทเอกสาร (DTD) ซึ่งมีการประกาศประเภทของกฎที่ใช้ในภาษาเพื่ออธิบายเอกสาร
บรรทัดที่สองและบรรทัดสุดท้ายมีโค้ด HTML ท่ามกลางคำสั่ง <html>
y </html>
ซึ่งทำหน้าที่เป็นการเปิดและปิดตามลำดับ คำสั่ง HTML โดยใส่ชื่อและคุณลักษณะไว้ระหว่างเครื่องหมาย "น้อยกว่า" และ "มากกว่า" ทำให้เกิดเครื่องหมาย "วงเล็บเฉียบพลัน" องค์ประกอบต่างๆ HTML ที่ล้อมรอบเนื้อหามีคำสั่งปิดที่มีเครื่องหมายทับหน้าชื่อเหมือนใน </html>
.
คุณสมบัติหรือคุณลักษณะขององค์ประกอบจะถูกคั่นด้วยช่องว่างจากชื่อและจากกัน และแสดงเป็นข้อความธรรมดาหรือบ่อยครั้งกว่านั้นแสดงเป็นข้อความ (ชื่อของคุณสมบัติ) ตามด้วยเครื่องหมายเท่ากับและค่าที่อยู่ในเครื่องหมายคำพูด ในกรณีของคำสั่งการเปิดรหัส HTML มีการใช้ทรัพย์สินแล้ว lang
ด้วยค่า es
, lang="es"
เพื่อระบุว่าข้อความในเอกสาร HTML ที่ใช้ภาษาสเปน
ความคิดเห็นถูกรวมไว้หลังคำสั่งเปิดของโค้ด HTML ความเห็นใน HTML พวกเขาสามารถครอบครองหลายบรรทัดและใช้รหัสเป็นสัญญาณเปิด <!--
และเป็นการปิดท้าย -->
รหัส HTML ประกอบด้วยสองช่วงตึก: ส่วนหัว <head>
และร่างกาย <body>
. ประการแรกมีวัตถุประสงค์เพื่อแจ้งเกี่ยวกับตัวเอกสารเอง รวมถึงข้อมูลเกี่ยวกับเอกสารนั้น (meta-information) และประการที่สองคือเพื่อสนับสนุนเนื้อหาของเอกสาร
ในคำสั่ง <body>
รวมกิจกรรมแล้ว onload
เพื่อเรียกใช้ฟังก์ชันโดยอัตโนมัติ JavaScript เมื่อโหลดเนื้อหาแล้ว ทรัพยากรนี้ช่วยให้คุณสามารถเริ่มการทำงานของโค้ดที่จะกำหนดออบเจ็กต์กราฟิกและอัปเดตเมื่อมีการโหลดข้อมูลจากเซิร์ฟเวอร์เกี่ยวกับสถานะของเซ็นเซอร์ที่แสดงถึงกราฟิกเหล่านี้
ข้อมูลสำคัญทั้งหมดที่สามารถรวมไว้ในส่วนหัวของเอกสารได้ HTMLเราสนใจเป็นอย่างยิ่งที่จะรู้ว่าสิ่งที่อธิบายไว้ในคำสั่งต่อไปนี้:
-
<title>
ซึ่งทำหน้าที่ตั้งชื่อหัวข้อให้กับเอกสาร โดยปกติแล้วจะปรากฏในหน้าต่างเบราว์เซอร์หรือบนแท็บที่เกี่ยวข้อง และจะช่วยเราระบุกราฟิกที่มีอยู่ -
<charset>
ประกาศชุดอักขระที่ใช้ในการเข้ารหัสเอกสาร เป็นสิ่งสำคัญอย่างยิ่งสำหรับสัญญาณ "พิเศษ" เช่น eñes หรือสำเนียง -
<link>
อนุญาตให้สร้างความสัมพันธ์ระหว่างเอกสาร HTML ปัจจุบันและภายนอกอื่น ๆ มันจะช่วยให้เราโหลดสไตล์ชีทในรูปแบบ CSS ด้วยรูปลักษณ์ของเอกสาร -
<script>
มีสคริปต์พร้อมรหัสปฏิบัติการ การใช้คำสั่งนี้เราจะโหลดฟังก์ชันต่างๆ JavaScript ซึ่งใช้ในการสร้างหรือแก้ไขกราฟิก SVG.
1 2 3 4 5 6 7 8 9 10 11 | <!DOCTYPE html> <html lang=“es”> <!– El código del documento HTML está escrito en español… –> <head> <meta charset=“utf-8”> <!– …y codificado en el juego de caracteres UTF-8 –> <title>Gáfico SVG de sensores conectados a la IoT</title> <link href=“https://polaridad.es/grafica-sensor-internet-de-las-cosas-iot/aspecto.css” type=“text/css” rel=“stylesheet” media=“all”> <script src=“graficos.js” type=“text/javascript”></script> </head> <body onload=“funcion();”> </body> </html> |
ดังที่เห็นได้จากตัวอย่าง. HTML ด้านบนชื่อ (และเส้นทาง ถ้ามี) ของเอกสารที่มีสไตล์ CSS ถูกระบุด้วยแอตทริบิวต์ href
ในขณะที่ในกรณีของรหัส JavaScript มันถูกใช้ src
. ทั้งสองมีกรรมสิทธิ์ร่วมกัน type
ด้วยค่า text/css
y text/javascript
ตามลำดับ
ในส่วนที่เกี่ยวข้องกับเนื้อหาของเอกสารส่วนที่สอดคล้องกับองค์ประกอบ <body>
, HTML5 ช่วยให้คุณสร้างโครงสร้างเฉพาะสำหรับส่วนประกอบที่พบบ่อยที่สุดบนเว็บเพจ เช่น ส่วนท้าย ส่วนด้านข้าง หรือแถบนำทาง แต่สิ่งที่เราสนใจคือการใช้เอกสารเป็นคอนเทนเนอร์กราฟิก SVG เป็นองค์ประกอบ <div>
ที่ทำหน้าที่เป็นบล็อกอิสระที่ช่วยให้สามารถกำหนดโครงสร้างลำดับชั้นโดยการซ้อนบางส่วน <div>
ภายในผู้อื่น
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <!DOCTYPE html> <html lang=“es”> <!– El código del documento HTML está escrito en español… –> <head> <meta charset=“utf-8”> <!– …y codificado en el juego de caracteres UTF-8 –> <title>Gáfico SVG de sensores conectados a la IoT</title> <link href=“https://polaridad.es/grafica-sensor-internet-de-las-cosas-iot/aspecto.css” type=“text/css” rel=“stylesheet” media=“all”> <script src=“graficos.js” type=“text/javascript”></script> </head> <body onload=“funcion();”> <div id=“padre” class=“aspecto_de_padre”> <div id=“primer_hijo” class=“aspecto_de_hijo”> </div> <div id=“segundo_hijo” class=“aspecto_de_hijo”> </div> </div> </body> </html> |
ในตัวอย่างก่อนหน้านี้มีการใช้องค์ประกอบ <div>
ซึ่งมีอีกสองคน ตัวอย่างนี้จะแนะนำคุณสมบัติที่สำคัญมากสองประการสำหรับการใช้งานที่เราต้องการสร้างโค้ด HTML: id
ซึ่งใช้เพื่อกำหนดตัวระบุเฉพาะให้กับองค์ประกอบ HTML ( <div>
ในกรณีนี้) และ class
โดยจะมีการกำหนดหมวดหมู่ที่เราจะใช้เพื่อสร้างลักษณะที่ปรากฏ หมวดหมู่ คลาส ไม่จำเป็นต้องมีเอกลักษณ์เฉพาะตัว ที่จริงแล้ว ประสิทธิภาพส่วนใหญ่อยู่ที่องค์ประกอบหลายอย่างที่มีมุมมองเดียวกัน
องค์ประกอบ (หรือแท็ก) <p>
ทำหน้าที่กำหนดย่อหน้าที่โดยปกติจะมีข้อความ (แม้ว่าจะอยู่ใน HTML ไม่มีข้อจำกัดในเรื่องนี้) เพื่อจัดกลุ่มภายในย่อหน้า (หรือก <div>
และไม่มีข้อจำกัด) มีการใช้แท็ก <span>
. ด้วยองค์ประกอบนี้ คุณสามารถรวมข้อความภายในย่อหน้าเพื่อให้มีลักษณะที่แตกต่างกันได้ เช่น ขีดเส้นใต้หรือตัวหนา
คำจำกัดความของคุณลักษณะกราฟิกและลักษณะการทำงานโดยทั่วไปที่เกี่ยวข้องกับองค์ประกอบ HTML การระบุแหล่งที่มาของคลาสเสร็จสิ้นในโค้ด CSS; ในกรณีตัวอย่างก่อนหน้าในเอกสาร aspecto.css
.
เพื่อเพิ่มประสิทธิภาพการกำหนดคุณลักษณะ CSS เป็นไปได้ว่าธาตุเดียวกัน HTML อยู่ในหลายคลาสจึงมีลักษณะหรือพฤติกรรมที่กำหนดโดยพวกเขา ในการทำงานนี้ ให้เขียนชื่อของคลาสต่างๆ โดยคั่นด้วยลูกน้ำทางด้านขวาของคุณสมบัติ class
9 10 11 12 13 14 15 16 | <body onload=“funcion();”> <div id=“padre” class=“aspecto_de_padre”> <div id=“primer_hijo” class=“aspecto_de_hijo aspecto_raro tipografia_grande”> </div> <div id=“segundo_hijo” class=“aspecto_de_hijo”> </div> </div> </body> |
ในตัวอย่างก่อนหน้านี้ องค์ประกอบ <div>
ซึ่งได้รับการระบุว่าเป็น primer_hijo
ได้รับการมอบหมายสามชั้นเรียน: aspecto_de_hijo
, aspecto_raro
y tipografia_grande
ซึ่งควรจะร่วมกันกำหนดลักษณะที่ปรากฏและพฤติกรรมขององค์ประกอบ ตามที่อธิบายไว้ในบทความต่อไปนี้เกี่ยวกับ การกำหนดรูปลักษณ์เว็บของกราฟิกเซ็นเซอร์ IoT ด้วย CSSเมื่อใช้หลายคลาส หากคุณสมบัติใด ๆ ที่กำหนดลักษณะถูกกำหนดไว้ในทั้งสองคลาส คุณสมบัติสุดท้ายที่อ้างอิงจะมีผลเหนือกว่า
ดังที่ได้เห็นองค์ประกอบต่างๆ <div>
อาจมีองค์ประกอบอื่น ๆ รวมถึงองค์ประกอบอื่น ๆ <div>
. กรณีที่ง่ายกว่าจะเป็น <div>
ที่มีข้อความอยู่ รูปลักษณ์ที่กำหนดสไตล์ CSS จะส่งผลต่อข้อความที่อยู่ในองค์ประกอบด้วย
เพื่อเพิ่มประสิทธิภาพการกำหนดคุณลักษณะ CSS เป็นไปได้ว่าธาตุเดียวกัน HTML อยู่ในหลายคลาสจึงมีลักษณะหรือพฤติกรรมที่กำหนดโดยพวกเขา ในการทำงานนี้ ให้เขียนชื่อของคลาสต่างๆ โดยคั่นด้วยลูกน้ำทางด้านขวาของคุณสมบัติ class
9 10 11 12 13 14 15 16 17 | <body onload=“funcion();”> <div id=“padre” class=“aspecto_de_padre”> <div id=“primer_hijo” class=“aspecto_de_hijo aspecto_raro tipografia_grande”> Este hijo de aspecto raro tiene la tipografía grande </div> <div id=“segundo_hijo” class=“aspecto_de_hijo”> </div> </div> </body> |
ในตัวอย่างก่อนหน้านี้ สามคลาสที่เกี่ยวข้องกับ <div>
primer_hijo
พวกเขาจะกำหนดลักษณะที่ปรากฏขององค์ประกอบและข้อความที่มีอยู่ เช่น ทำให้แบบอักษรที่ใช้เขียนมีขนาดใหญ่ (หากวัตถุประสงค์ที่ระบุด้วยชื่อในคลาสสุดท้ายเป็นจริง)
ตั้งแต่เวอร์ชัน 5 (HTML5) สามารถรวมโค้ดกราฟิกในรูปแบบได้ SVG ภายในโค้ดนั้นเอง HTML เป็นอีกหนึ่งองค์ประกอบ จากมุมมองของโค้ด HTML, หัวข้อ SVG มันเป็นองค์ประกอบ <svg>
ซึ่งมีองค์ประกอบกราฟิกต่างๆ (เส้น วงกลม สี่เหลี่ยม...
9 10 11 12 13 14 15 16 17 18 19 20 | <body onload=“funcion();”> <div id=“padre” class=“aspecto_de_padre”> <div id=“primer_hijo” class=“aspecto_de_hijo aspecto_raro tipografia_grande”> Este hijo de aspecto raro tiene la tipografía grande </div> <div id=“segundo_hijo” class=“aspecto_de_hijo”> <svg id=“dibujo” class=“grafico” width=“100%” height=“100%” viewBox=“0 0 100 100” preserveAspectRatio=“none”> <circle cx=“100” cy=“200” r=“50”> </svg> </div> </div> </body> |
แม้ว่าจะมีการกล่าวกันว่าลักษณะกราฟิกขององค์ประกอบต่างๆ HTML ถูกกำหนดไว้อย่างมีสไตล์ CSS และเชื่อมโยงกับมันผ่านคลาส นอกจากนี้ยังสามารถกำหนดบางส่วนให้กับองค์ประกอบโดยตรงได้สองวิธี ในด้านหนึ่งคุณสามารถใช้ทรัพย์สินได้ style
และกำหนดลักษณะกราฟิกต่างๆ ของวัตถุเป็นค่าของมัน ตามหลักเหตุผลแล้ว ควรใช้เทคนิคที่กล่าวมาข้างต้นในการกำหนดลักษณะให้กับคลาส แต่ด้วยความเป็นไปได้นี้ คุณสามารถเพิ่มการแก้ไขเล็กๆ น้อยๆ ให้กับองค์ประกอบ (ข้อยกเว้นเฉพาะอย่างยิ่ง) โดยไม่ต้องสร้างคลาสใหม่
ในทางกลับกันองค์ประกอบบางอย่าง HTML อนุญาตให้คุณใช้คุณสมบัติเฉพาะที่กำหนดลักษณะที่ปรากฏ โดยทั่วไป แม้ว่าจะมีคุณสมบัติเหล่านี้อยู่ แต่ก็ควรใช้คลาสมากกว่า แต่น่าเสียดายที่องค์ประกอบบางส่วนไม่ได้เสนอทางเลือกนี้ บางส่วนคาดว่าค่าบางอย่างจะถูกระบุโดยตรงกับคุณสมบัติเฉพาะเหล่านั้น แทนที่จะอ้างอิงถึงคลาสที่เกี่ยวข้อง องค์ประกอบหนึ่งที่มีพฤติกรรมประเภทนี้คือโค้ดอย่างแม่นยำ SVGซึ่งเราต้องกำหนดค่าเปอร์เซ็นต์ของความกว้างและความสูงในคุณสมบัติ width
y height
ตามลำดับ แทนที่จะเป็นคลาส
ดังจะเห็นรายละเอียดเพิ่มเติมใน บทความที่พูดถึงโค้ด SVGเพื่อที่จะใช้วิธีการง่ายๆ ที่เสนอ แนะนำให้พิจารณาขนาดของกราฟเป็นเปอร์เซ็นต์ ในกรณีขนาดรวมของวัตถุโดยระบุค่าความกว้างและความสูง 100% จะเป็นคอนเทนเนอร์ที่กำหนดขนาดสุดท้าย ( <div>
กับ id="dibujo"
ในตัวอย่างก่อนหน้านี้)
ในกรณีส่วนประกอบต่าง ๆ ของกราฟ SVG (เส้น วงกลม สี่เหลี่ยม...) ให้รวมอยู่ในพื้นที่ขนาด 100×100 (หน่วยใดก็ได้) และขยายเป็นรูปสี่เหลี่ยมผืนผ้าโดยไม่คงสัดส่วนไว้ คุณสมบัติ viewBox
y preserveAspectRatio
ขององค์ประกอบ SVG พวกเขามีหน้าที่รับผิดชอบในการสร้างค่านิยมเหล่านี้ ในกรณีแรกด้วยมุมมองสี่เหลี่ยมที่เปลี่ยนจากจุดพิกัด (0,0) ไปยังจุดพิกัด (100,100) และแสดงเป็น "0 0 100 100"
และในวินาทีที่มีค่า none
.
14 15 16 17 18 | <div id=“segundo_hijo” class=“aspecto_de_hijo”> <svg viewBox=“0 0 100 100” preserveAspectRatio=“none” width=“100%” height=“100%” id=“dibujo” class=“grafico”> <circle cx=“100” cy=“200” r=“50”> </svg> </div> |
จากทั้งหมดที่กล่าวมา ตอนนี้คุณสามารถกำหนดโค้ดที่สมบูรณ์ซึ่งจะทำหน้าที่เป็นคอนเทนเนอร์กราฟิกได้ SVG ที่สร้างหรือดัดแปลงจาก JavaScript. ตัวอย่างด้านล่างนี้ประกอบด้วยบล็อกกราฟิกสี่บล็อกที่ใช้รูปแบบนี้ HTML ของข้อเสนอการเป็นตัวแทนที่เราจะใช้
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | <!DOCTYPE html> <html lang=“es”> <!– Inicio del documento HTML con el idioma –> <head> <!– Cabecera del documento HTML –> <meta charset=“utf-8”> <!– Se utiliza el juego de caracteres UTF8 –> <title>Temperaturas Nave E1</title> <!– Título del documento y seguramente de la ventana del navegador –> <link rel=“stylesheet” href=“https://polaridad.es/grafica-sensor-internet-de-las-cosas-iot/estilo.css” type=“text/css” media=“all”> <!– Cargar el estilo “https://polaridad.es/grafica-sensor-internet-de-las-cosas-iot/estilo.css” guardado en la misma carpeta que este documento HTML –> <script type=“text/javascript” src=“graficos.js”></script> <!– Cargar el código JavaScript del documento “graficos.js” guardado en la misma carpeta que este documento HTML –> </head> <!– Final de la cabecera del documento HTML –> <body onload=“iniciar_graficos();”> <!– Cuerpo del documento HTML. Al cargar el contenido llama a la función JavaScript iniciar_graficos() –> <div id=“temperatura_frigorifico_a” class=“bloque_sensor”> <!– Bloque de datos del primer sensor –> <div id=“titulo_temperatura_frigorifico_a” class=“bloque_titulo”>Temperatura frigorífico 01A</div> <!– Título del bloque de datos del sensor –> <div id=“descripcion_temperatura_frigorifico_a” class=“bloque_descripcion”>Media de las sondas de temperatura del frigorífico 01A</div> <!– Descripción del bloque de datos del sensor –> <div id=“fecha_temperatura_frigorifico_a” class=“bloque_fecha”>Cargando emperaturas</div> <!– Fecha de la última lectura de datos del sensor. Por ahora vacío, luego se rellenará con la aplicación JavaScript –> <div id=“bloque_temperatura_frigorifico_a” class=“bloque_grafico”> <!– Bloque con el gráfico –> <svg id=“grafico_temperatura_frigorifico_a” class=“grafico” width=“100%” height=“100%” viewBox=“0 0 100 100” preserveAspectRatio=“none”> <path id=“linea_temperatura_frigorifico_a” d=“” style=“fill:none;stroke:#205587;stroke-width:4;stroke-opacity:1;” vector-effect=“non-scaling-stroke” /> </svg> <!– Gráfico de los datos –> </div> <!– Final del bloque que contiene el gráfico –> </div> <!– Final del bloque de datos del primer sensor –> <div id=“temperatura_frigorifico_b” class=“bloque_sensor”> <div id=“titulo_temperatura_frigorifico_b” class=“bloque_titulo”>Temperatura frigorífico 01B</div> <div id=“descripcion_temperatura_frigorifico_b” class=“bloque_descripcion”>Media de las sondas de temperatura del frigorífico 01B</div> <div id=“fecha_temperatura_frigorifico_b” class=“bloque_fecha”>Cargando emperaturas</div> <div id=“bloque_grafico_temperatura_frigorifico_b” class=“bloque_grafico”> <svg id=“grafico_temperatura_frigorifico_b” class=“grafico” width=“100%” height=“100%” viewBox=“0 0 100 100” preserveAspectRatio=“none”> <path id=“linea_temperatura_frigorifico_b” d=“” style=“fill:none;stroke:#205587;stroke-width:4;stroke-opacity:1;” vector-effect=“non-scaling-stroke” /> </svg> </div> </div> <div id=“temperatura_frigorifico_c” class=“bloque_sensor”> <div id=“titulo_temperatura_frigorifico_c” class=“bloque_titulo”>Temperatura frigorífico 01C</div> <div id=“descripcion_temperatura_frigorifico_c” class=“bloque_descripcion”>Media de las sondas de temperatura del frigorífico 01C</div> <div id=“fecha_temperatura_frigorifico_c” class=“bloque_fecha”>Cargando emperaturas</div> <div id=“bloque_grafico_frigorifico_c” class=“bloque_grafico”> <svg id=“grafico_temperatura_frigorifico_c” class=“grafico” width=“100%” height=“100%” viewBox=“0 0 100 100” preserveAspectRatio=“none”> <path id=“linea_temperatura_frigorifico_c” d=“” style=“fill:none;stroke:#205587;stroke-width:4;stroke-opacity:1;” vector-effect=“non-scaling-stroke” /> </svg> </div> </div> <div id=“temperatura_frigorifico_d” class=“bloque_sensor”> <div id=“titulo_temperatura_frigorifico_d” class=“bloque_titulo”>Temperatura frigorífico 01D</div> <div id=“descripcion_temperatura_frigorifico_d” class=“bloque_descripcion”>Media de las sondas de temperatura del frigorífico 01D</div> <div id=“fecha_temperatura_frigorifico_d” class=“bloque_fecha”>Cargando emperaturas</div> <div id=“bloque_grafico_frigorifico_d” class=“bloque_grafico”> <svg id=“grafico_temperatura_frigorifico_d” class=“grafico” width=“100%” height=“100%” viewBox=“0 0 100 100” preserveAspectRatio=“none”> <path id=“linea_temperatura_frigorifico_d” d=“” style=“fill:none;stroke:#205587;stroke-width:4;stroke-opacity:1;” vector-effect=“non-scaling-stroke” /> </svg> </div> </div> </body> <!– Final del cuerpo del documento HTML –> </html> <!– Final del documento HTML –> |
ด้านล่างนี้คุณจะเห็นว่าโค้ดก่อนหน้าจะมีลักษณะอย่างไร โดยจัดรูปแบบตามสไตล์ CSS สอดคล้องกัน, สร้างด้วย JavaScript กราฟิก SVG ด้วยการอ่านข้อมูลที่เซิร์ฟเวอร์จัดเก็บโดยเซ็นเซอร์ที่เชื่อมต่อกับ IoT ยกเว้นว่าข้อมูลไม่ได้ถูกโหลดจากเซิร์ฟเวอร์ แต่ถูกสร้างขึ้นแบบสุ่มในไคลเอนต์ (เบราว์เซอร์ของคุณ) โค้ดที่เหลือคือสิ่งที่จะใช้ในข้อเสนอที่กำหนดไว้ในบทความชุดนี้
บทความถัดไปในชุดนี้จะอธิบาย วิธีกำหนดสไตล์ CSS เพื่อให้ปรากฏโค้ด HTML ที่ทำหน้าที่เป็นคอนเทนเนอร์สำหรับกราฟิก SVG โดยเพื่อแสดงสถานะของเซ็นเซอร์ที่เชื่อมต่อกับ Internet of Things (IoT)
ความคิดเห็น 1