more details see : http://www.rgot.org/instrumentation-modbus/
-
-
Save FRiotte/f0d416178add2b981ac21afeaf0bc0f7 to your computer and use it in GitHub Desktop.
web modBus instrumentation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[{"id":"56b42b3e.51b8d4","type":"tab","label":"Instrumentation Web modBus"},{"id":"f6195580.c4f1c8","type":"function","z":"56b42b3e.51b8d4","name":"data2obj","func":"/* \n\n╔═════════╦════════════════╦══════════╦═════════╦═════╦═════╦════════════╦═════════╗\n║ index ║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║\n╠═════════╬════════════════╬══════════╬═════════╬═════╬═════╬════════════╬═════════╣\n║ trame ║ id_appareil ║ id_unite ║ id_type ║ min ║ max ║ valEntiere ║ valDeci ║\n╠═════════╬════════════════╬══════════╬═════════╬═════╬═════╬════════════╬═════════╣\n║ exemple ║ 51966 (0xCAFE) ║ 9 ║ 3 ║ 5 ║ 95 ║ 33 ║ 90 ║\n╚═════════╩════════════════╩══════════╩═════════╩═════╩═════╩════════════╩═════════╝\n\ntableau des unité :\n╔═══════╦══════╦═════╦══════╦═══╦════╦═══╦═══╦═════════╦═══════════╦════╗\n║ index ║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║\n╠═══════╬══════╬═════╬══════╬═══╬════╬═══╬═══╬═════════╬═══════════╬════╣\n║ unité ║ sans ║ m/s ║ Km/h ║ m ║ km ║ s ║ h ║ Tours/s ║ Tours/min ║ °C ║\n╚═══════╩══════╩═════╩══════╩═══╩════╩═══╩═══╩═════════╩═══════════╩════╝\ntableau des types :\n╔═══════╦══════╦══════╦═════╦═════════╗\n║ index ║ 0 ║ 1 ║ 2 ║ 3 ║\n╠═══════╬══════╬══════╬═════╬═════════╣\n║ Type ║ Char ║ Byte ║ Int ║ decimal ║\n╚═══════╩══════╩══════╩═════╩═════════╝\npar exemple data = [ 51966, 9, 3, 5, 95, 33, 90 ]\nid = 51966 = 0xCAFE\nunité = 9 => °C\ntype = 3 => decimal\nmin = 5 => minimum indiqué sur la gauge\nmax = 95 => max indiqué sur la gauge\nvalEntiere = 33 et vaDeci = 90 => tempétature = 33.90°C\n\nformat de l'objet de sortie :\n4 propriétés : unite, valeur, min et max \n{ \"unite\": \"°C\", \"valeur\": 33.9, \"min\": 5, \"max\": 95 }\n*/\nvar data = msg.payload;\nvar obj={};\nvar unite = ['','m/s','km/h','m','km','s','h','tours/s','tours/min','°C'];\n\nif(data[0]==0xCAFE)\n{\n obj.unite=unite[data[1]];\n if(data[2]==3){\n obj.valeur= (data[5]*100 + data[6])/100.0;\n }\n obj.min=data[3];\n obj.max=data[4];\n}\nflow.set('message',obj);\nmsg.payload=obj;\nreturn msg;","outputs":1,"noerr":0,"x":474.20001220703125,"y":163.1999969482422,"wires":[["68a86d4c.b1218c"]]},{"id":"a617b638.702bc","type":"debug","z":"56b42b3e.51b8d4","name":"","active":false,"console":"false","complete":"false","x":596.2000122070312,"y":276.9999694824219,"wires":[]},{"id":"6e23cf4d.41762","type":"function","z":"56b42b3e.51b8d4","name":"getJson","func":"msg.payload=flow.get('message');\nreturn msg;","outputs":1,"noerr":0,"x":370.20001220703125,"y":325.9999694824219,"wires":[["a617b638.702bc","d8f2bd76.52e0f8"]]},{"id":"88f3daae.cb51e","type":"debug","z":"56b42b3e.51b8d4","name":"","active":false,"console":"false","complete":"payload","x":490.70001220703125,"y":98.39999389648438,"wires":[]},{"id":"343e5a41.dfd98e","type":"modbus-read","z":"56b42b3e.51b8d4","name":"add1","showStatusActivities":false,"showErrors":false,"unitid":"2","dataType":"HoldingRegister","adr":"0","quantity":"7","rate":"1","rateUnit":"s","server":"ec1c5eaa.182f58","x":207.70001220703125,"y":121.39999389648438,"wires":[["f6195580.c4f1c8","88f3daae.cb51e"],[]]},{"id":"e2ddbd0e.ccf4e8","type":"template","z":"56b42b3e.51b8d4","name":"script","field":"script","fieldType":"msg","format":"javascript","syntax":"mustache","template":"\n/**\n * Sonic Gauge jQuery Plugin v0.3.0\n * jQuery plugin to create and display SVG gauges using RaphaelJS\n * \n * Copyright (c) 2013 Andy Burton (http://andyburton.co.uk)\n * GitHub https://github.com/andyburton/Sonic-Gauge\n * \n * Licensed under the MIT license (http://andyburton.co.uk/license/mit.txt)\n */\n\n(function($){\n\t\n\tvar methods\t= {\n\t\t\n\t\t/**\n\t\t * Initialise object\n\t\t */\n\t\t\n\t\tinit : function (options)\n\t\t{\n\t\t\t\n\t\t\tif (!this.length)\n\t\t\t{\n\t\t\t\treturn this;\n\t\t\t}\n\t\t\t\n\t\t\tthis.options\t= $.extend (true, {}, $.fn.SonicGauge.defaultOptions);\n\t\t\tthis.settings\t= {};\n\t\t\t\n\t\t\tthis.SonicGauge ('setOptions', options);\n\t\t\t//this.SonicGauge ('draw');\n\t\t\t\n\t\t\treturn this;\n\t\t\t\n\t\t},\n\t\t\n\t\t/**\n\t\t * Set options\n\t\t */\n\t\t\n\t\tsetOptions : function (options)\n\t\t{\n\t\t\t\n\t\t\tif (options)\n\t\t\t{\n\t\t\t\t$.extend (true, this.options, options);\n\t\t\t}\n\t\t\t\n\t\t\tthis.settings.canvas_d\t= this.options.diameter;\n\t\t\tthis.settings.canvas_r\t= this.settings.canvas_d / 2;\n\t\t\tthis.settings.speedo_d\t= this.settings.canvas_d - this.options.margin * 2;\n\t\t\tthis.settings.speedo_r\t= this.settings.speedo_d / 2;\n\t\t\tthis.settings.increment\t= (this.options.end.angle - this.options.start.angle) / (this.options.end.num - this.options.start.num);\n\t\t\t\n\t\t\treturn this;\n\t\t\t\n\t\t},\n\t\t\n\t\t/**\n\t\t * Draw gauge\n\t\t */\n\n\t\tdraw : function ()\n\t\t{\n\t\t\t\n\t\t\t// Reference scope\n\t\t\t\n\t\t\tvar p\t= this;\n\t\t\t\n\t\t\t// Set element size\n\t\t\t// This fixes the firefox issue causing the digital dial position to be incorrect\n\t\t\t// As the raphael canvas still hasnt rendered causing incorrect width/height\n\t\t\t\n\t\t\tthis.width (this.settings.canvas_d);\n\t\t\tthis.height (this.settings.canvas_d);\n\t\t\t\n\t\t\t// Init Raphael element\n\t\t\t\n\t\t\tthis.gauge\t\t= Raphael (this.attr ('id'), this.settings.canvas_d, this.settings.canvas_d);\n\t\t\t\n\t\t\t// Set gauge outline\n\t\t\t\n\t\t\tvar outline\t\t= this.gauge.circle (this.settings.canvas_r, this.settings.canvas_r, this.settings.speedo_r).attr (this.options.style.outline);\n\t\t\t\n\t\t\t// Gauge label\n\t\t\t\n\t\t\tvar label_x\t= this.settings.canvas_r;\n\t\t\tvar label_y\t= this.settings.canvas_r - (this.settings.canvas_r / 4);\n\t\t\t\n\t\t\tif (typeof this.options.label == \"object\")\n\t\t\t{\n\t\t\t\t\n\t\t\t\tif (this.options.label.margin_x)\n\t\t\t\t{\n\t\t\t\t\tlabel_x += this.options.label.margin_x;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (this.options.label.margin_y)\n\t\t\t\t{\n\t\t\t\t\tlabel_y += this.options.label.margin_y;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t\telse if (typeof this.options.label == \"string\")\n\t\t\t{\n\t\t\t\tthis.options.label\t= {value: this.options.label};\n\t\t\t}\n\t\t\t\n\t\t\tif (this.options.label)\n\t\t\t{\n\t\t\t\tvar label\t= this.gauge.text (label_x, label_y, this.options.label.value).attr (this.options.style.label);\n\t\t\t}\n\t\t\t\n\t\t\t// Draw sectors\n\t\t\t// Thanks to Thomas M aka Arctic SnowSky\n\n\t\t\tthis.sectors\t= [];\n\n\t\t\t$.each (this.options.sectors, function (i) {\n\t\t\t\t\n\t\t\t\tthis.style = $.extend (true, p.options.style.sector, this.style);\n\n\t\t\t\tif (!(isNaN (this.start) || isNaN (this.end)))\n\t\t\t\t{\n\t\t\t\t\t\n\t\t\t\t\tvar startAngle\t= p.settings.increment * (this.start - p.options.start.num) + p.options.start.angle;\n\t\t\t\t\tvar endAngle\t= p.settings.increment * (this.end - p.options.start.num) + p.options.start.angle;\n\t\t\t\t\t\n\t\t\t\t\tvar r\t\t\t= this.radius? this.radius : p.settings.speedo_r;\n\t\t\t\t\tvar rad\t\t\t= Math.PI / 180;\n\t\t\t\t\t\n\t\t\t\t\tvar x1 = p.settings.canvas_r + r * Math.cos (startAngle * rad),\n\t\t\t\t\t\tx2 = p.settings.canvas_r + r * Math.cos (endAngle * rad),\n\t\t\t\t\t\ty1 = p.settings.canvas_r + r * Math.sin (startAngle * rad),\n\t\t\t\t\t\ty2 = p.settings.canvas_r + r * Math.sin (endAngle * rad);\n\n\t\t\t\t\tvar sect = p.gauge.path ([\n\t\t\t\t\t\t\"M\", p.settings.canvas_r, p.settings.canvas_r,\n\t\t\t\t\t\t\"L\", x2, y2,\n\t\t\t\t\t\t\"A\", r, r, 0, + (endAngle - startAngle > 180),\n\t\t\t\t\t\t0, x1, y1, \"z\"]).attr (this.style);\n\n\t\t\t\t\tp.sectors.push (sect);\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t});\n\t\t\t\n\t\t\t// Generate markers\n\t\t\t\n\t\t\tvar markers\t\t= [];\n\n\t\t\t$.each (this.options.markers, function () {\n\t\t\t\t\n\t\t\t\tif (this.line)\n\t\t\t\t{\n\t\t\t\t\t\n\t\t\t\t\tif (!this.line.width)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.line.width = 10;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif (!this.line.height)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.line.height = 1;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar line\t= p.gauge.rect (p.settings.canvas_r + p.settings.speedo_r - this.line.width, p.settings.canvas_r - Math.floor (this.line.height / 2)).attr (this.line).hide ();\n\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t// Work around JS precision problems with marker gaps < 1\n\t\t\t\t\n\t\t\t\tvar divide\t= 1;\n\t\t\t\t\n\t\t\t\twhile (this.gap < 1)\n\t\t\t\t{\n\t\t\t\t\tdivide *= 10;\n\t\t\t\t\tthis.gap *= 10;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tvar start\t= p.options.start.num * divide;\n\t\t\t\tvar end\t\t= p.options.end.num * divide;\n\t\t\t\t\n\t\t\t\t// Add marker points\n\t\t\t\t\n\t\t\t\tfor (var count = start; count <= end; count += this.gap)\n\t\t\t\t{\n\t\t\t\t\t\n\t\t\t\t\tvar val\t= divide > 1? count / divide : count;\n\t\t\t\t\t\n\t\t\t\t\tif (this.toFixed)\n\t\t\t\t\t{\n\t\t\t\t\t\tval = val.toFixed (this.toFixed);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif (this.toPrecision)\n\t\t\t\t\t{\n\t\t\t\t\t\tval = val.toPrecision (this.toPrecision);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t// Work out angle of rotation for value\n\t\t\t\t\t\n\t\t\t\t\tvar a\t= p.settings.increment * (val - start) + p.options.start.angle;\n\t\t\t\t\t\n\t\t\t\t\t// Work out relative to complete 360 rotation\n\t\t\t\t\t\n\t\t\t\t\tif (a + Math.abs (p.options.start.angle) >= 360)\n\t\t\t\t\t{\n\t\t\t\t\t\ta = (a + Math.abs (p.options.start.angle)) % 360 + p.options.start.angle;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t// Dont place multiple markers in the same location\n\t\t\t\t\t\n\t\t\t\t\tif ($.inArray (a, markers) >= 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tmarkers.push (a);\n\t\t\t\t\t\n\t\t\t\t\t// Marker line\n\t\t\t\t\t\n\t\t\t\t\tif (this.line)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar speed_marker = line.clone ().rotate (a, p.settings.canvas_r, p.settings.canvas_r);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t// Marker text\n\t\t\t\t\t\n\t\t\t\t\tif (this.text)\n\t\t\t\t\t{\n\n\t\t\t\t\t\tif (!this.text.space)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.text.space = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar txt\t= val;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (typeof this.value == \"object\")\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif (this.value.divide)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttxt /= this.value.divide;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif (this.value.multiply)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttxt *= this.value.multiply;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar rad\t\t= a.toRadians ();\n\t\t\t\t\t\tvar x\t\t= p.settings.canvas_r + (this.text.space + p.settings.speedo_r) * Math.cos (rad);\n\t\t\t\t\t\tvar y\t\t= p.settings.canvas_r + (this.text.space + p.settings.speedo_r) * Math.sin (rad);\n\t\t\t\t\t\tvar text\t= p.gauge.text (x, y, txt).attr (this.text);\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif (this.line)\n\t\t\t\t{\n\t\t\t\t\tline.remove ();\n\t\t\t\t}\n\n\t\t\t});\n\t\t\t\n\t\t\t// Create digital display\n\t\t\t\n\t\t\tif (this.options.digital)\n\t\t\t{\n\t\t\t\tthis.digital\t= $('<div>').addClass ('digital').css ({\n\t\t\t\t\t\"margin-top\"\t\t: Math.ceil (this.settings.speedo_r / 2),\n\t\t\t\t\t\"width\"\t\t\t\t: \"20%\",\n\t\t\t\t\t\"font-family\"\t\t: \"Arial\",\n\t\t\t\t\t\"font-size\"\t\t\t: 20,\n\t\t\t\t\t\"color\"\t\t\t\t: '#fff',\n\t\t\t\t\t\"text-align\"\t\t: \"center\",\n\t\t\t\t\t\"border\"\t\t\t: \"2px solid #777\",\n\t\t\t\t\t\"border-radius\"\t\t: 10,\n\t\t\t\t\t\"padding\"\t\t\t: 5,\n\t\t\t\t\t\"background-color\"\t: \"#111\"\n\t\t\t\t}).css (this.options.digital).text (this.options.default_num).appendTo (this).center ();\n\t\t\t}\n\t\t\t\n\t\t\t// Create needle indicators\n\t\t\t\n\t\t\tthis.needles\t= [];\n\t\t\t\n\t\t\t$.each (this.options.needles, function (i) {\n\t\t\t\t\n\t\t\t\tif (!this.default_num)\n\t\t\t\t{\n\t\t\t\t\tthis.default_num = p.options.default_num;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.style = $.extend (true, p.options.style.needle, this.style);\n\t\t\t\t\n\t\t\t\tvar val\t= this.default_num - p.options.start.num;\n\t\t\t\t\n\t\t\t\tif (typeof this.value == \"object\")\n\t\t\t\t{\n\t\t\t\t\t\n\t\t\t\t\tif (this.value.divide)\n\t\t\t\t\t{\n\t\t\t\t\t\tval /= this.value.divide;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.value.multiply)\n\t\t\t\t\t{\n\t\t\t\t\t\tval *= this.value.multiply;\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tvar rotate\t= p.settings.increment * val + p.options.start.angle;\n\t\t\t\t\n\t\t\t\tvar needle\t= p.gauge.rect (p.settings.canvas_r, p.settings.canvas_r, p.settings.speedo_r).attr (this.style)\n\t\t\t\t\t.transform (\"r\" + rotate + \",\" + p.settings.canvas_r + \",\" + p.settings.canvas_r);\n\t\t\t\t\n\t\t\t\tp.needles.push (needle);\n\t\t\t\t\n\t\t\t});\n\t\t\t\n\t\t\t// Set marker center point\n\t\t\t\n\t\t\tif (typeof this.options.style.center == \"object\")\n\t\t\t{\n\t\t\t\tvar center\t\t= this.gauge.circle (this.settings.canvas_r, this.settings.canvas_r, this.options.style.center.diameter).attr (this.options.style.center);\n\t\t\t}\n\t\t\t\n\t\t\tthis.trigger ('drawn');\n\t\t\t\n\t\t\treturn this;\n\t\t\t\n\t\t},\n\n\t\t/**\n\t\t * Set gauge value\n\t\t */\n\n\t\tval : function (val)\n\t\t{\n\t\t\t\n\t\t\tif (this.digital)\n\t\t\t{\n\t\t\t\tvar txt\t= val;\n\t\t\t\t\n\t\t\t\tif (this.options.digital_toFixed)\n\t\t\t\t{\n\t\t\t\t\ttxt = txt.toFixed (this.options.digital_toFixed);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (this.options.digital_toPrecision)\n\t\t\t\t{\n\t\t\t\t\ttxt = txt.toPrecision (this.options.digital_toPrecision);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.digital.text (txt);\n\t\t\t}\n\t\t\t\n\t\t\tvar p = this;\n\t\t\t\n\t\t\t$.each (this.needles, function (i) {\n\t\t\t\t\n\t\t\t\tvar new_val = val;\n\t\t\t\t\n\t\t\t\tif (typeof p.options.needles[i].value == \"object\")\n\t\t\t\t{\n\t\t\t\t\t\n\t\t\t\t\tvar val_modify\t= p.options.needles[i].value;\n\t\t\t\t\t\n\t\t\t\t\tif (val_modify.divide)\n\t\t\t\t\t{\n\t\t\t\t\t\tnew_val /= val_modify.divide;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (val_modify.multiply)\n\t\t\t\t\t{\n\t\t\t\t\t\tnew_val *= val_modify.multiply;\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.animate ({transform: \"r\" + (p.settings.increment * (new_val - p.options.start.num) + p.options.start.angle) + \",\" + p.settings.canvas_r + \",\" + p.settings.canvas_r}, p.options.animation_speed);\n\t\t\t\n\t\t\t});\n\t\t\t\n\t\t\tthis.trigger ('update', val);\n\t\t\t\n\t\t\treturn this;\n\t\t\t\n\t\t}\n\t\t\n\t};\n\t\n\t/**\n\t * Constructor\n\t */\n\t\n\t$.fn.SonicGauge = function (method) {\n\t\t\n\t\t// Call method and set options\n\n\t\tif (methods[method]){\n\t\t\treturn methods[method].apply (this, Array.prototype.slice.call (arguments, 1));\n\t\t} else if (typeof method === 'object' || !method) {\n\t\t\treturn methods.init.apply (this, arguments);\n\t\t} else {\n\t\t\t$.error ('Method ' + method + ' does not exist on jQuery.SonicGauge');\n\t\t}\n\t\t\n\t};\n\t\n\t/**\n\t * Default options\n\t */\n\t\n\t$.fn.SonicGauge.defaultOptions = {\n\t\tmargin\t\t\t: 35,\n\t\tdiameter\t\t: 350,\n\t\tstart\t\t\t: {angle: -225, num: 0},\n\t\tend\t\t\t\t: {angle: 45, num: 100},\n\t\tdefault_num\t\t: 0,\n\t\tanimation_speed\t: 1000,\n\t\tdigital\t\t\t: {},\n\t\tdigital_toFixed\t: 0,\n\t\tneedles\t\t\t: [{}],\n\t\tsectors\t\t\t: [{}],\n\t\tmarkers\t\t\t: [\n\t\t\t{\n\t\t\t\tgap: 10,\n\t\t\t\tline: {\"width\": 20, \"stroke\": \"none\", \"fill\": \"#eeeeee\"},\n\t\t\t\ttext: {\"space\": 22, \"text-anchor\": \"middle\", \"fill\": \"#333333\", \"font-size\": 18}\n\t\t\t},{\n\t\t\t\tgap: 5, \n\t\t\t\tline: {\"width\": 8, \"stroke\": \"none\", \"fill\": \"#999999\"}\n\t\t\t}\n\t\t],\n\t\tstyle\t\t\t: {\n\t\t\t\"outline\"\t: {\"fill\": \"#333333\", \"stroke\": \"#555555\", \"stroke-width\": 8},\n\t\t\t\"center\"\t: {\"fill\": \"#eeeeee\", \"diameter\": 10},\n\t\t\t\"needle\"\t: {\"height\": 1, \"stroke\": \"none\", \"fill\": \"#cc0000\"},\n\t\t\t\"label\"\t\t: {\"text-anchor\": \"middle\", \"fill\": \"#fff\", \"font-size\": 16}\n\t\t}\n\t};\n\t\n})(jQuery);\n\n/**\n * Convert decimal to radians\n */\n\nif (typeof (Number.prototype.toRadians) === \"undefined\") {\n\tNumber.prototype.toRadians = function () {\n\t\treturn this * Math.PI / 180;\n\t}\n}\n\n/**\n * Number of decimal places\n */\n\nif (typeof (Number.prototype.decimalPlaces) === \"undefined\") {\n\tNumber.prototype.decimalPlaces = function () {\n\t\treturn (this.toFixed (20)).replace (/^-?\\d*\\.?|0+$/g, '').length;\n\t}\n}\n\n/**\n * Center element position\n */\n\nif (typeof (jQuery.fn.center) === \"undefined\") {\n\tjQuery.fn.center = function (p) {\n\t\t\n\t\tif (typeof p === \"undefined\")\n\t\t{\n\t\t\tp = this.parent ();\n\t\t}\n\t\t\n\t\tp.css (\"position\", \"relative\");\n\t\t\n\t\treturn this.css (\"position\", \"absolute\").css ({\n\t\t\ttop\t\t: Math.max (0, ((p.height () - this.outerHeight ()) / 2) + p.scrollTop ()),\n\t\t\tleft\t: Math.max (0, ((p.width () - this.outerWidth ()) / 2) + p.scrollLeft ())\n\t\t});\n\t\t\n\t}\n}","x":367.70001220703125,"y":401.3999938964844,"wires":[["cd90dda3.b2b5f"]]},{"id":"cd90dda3.b2b5f","type":"template","z":"56b42b3e.51b8d4","name":"html","field":"payload","fieldType":"msg","format":"javascript","syntax":"mustache","template":"<script src=\"http://cdnjs.cloudflare.com/ajax/libs/jquery/1.9.0/jquery.min.js\"></script>\n<script src=\"http://cdnjs.cloudflare.com/ajax/libs/raphael/2.1.0/raphael-min.js\"></script>\n<script>{{{script}}}</script>\n<div id='thermometre' class=\"gauge\"></div>\n<script>\n var thermometre= $('#thermometre').SonicGauge();\n \n\t$.getJSON(\n \"/data\",\n function(data){\n var options ={};\n options.label= data.unite;\n options.start = {angle: -225, num: data.min};\n\t\toptions.end\t\t= {angle: 45, num: data.max};\n thermometre.SonicGauge('setOptions', options);\n thermometre.SonicGauge ('draw');\n });\n\t\t \n\t\t \nsetInterval(function () {\n$.getJSON(\n \"/data\",\n function(data){\n thermometre.SonicGauge('val',data.valeur);\n });\n},200);\n\n\n</script>","x":572.7000122070312,"y":401.3999938964844,"wires":[["1d547897.2b2ba7"]]},{"id":"55689dae.34a29c","type":"http in","z":"56b42b3e.51b8d4","name":"","url":"/mesure","method":"get","swaggerDoc":"","x":176.70001220703125,"y":402.3999938964844,"wires":[["e2ddbd0e.ccf4e8"]]},{"id":"1d547897.2b2ba7","type":"http response","z":"56b42b3e.51b8d4","name":"","x":786.7000122070312,"y":401.3999938964844,"wires":[]},{"id":"c0eed921.936008","type":"http in","z":"56b42b3e.51b8d4","name":"","url":"/data","method":"get","swaggerDoc":"","x":167.70001220703125,"y":327.3999938964844,"wires":[["6e23cf4d.41762"]]},{"id":"d8f2bd76.52e0f8","type":"http response","z":"56b42b3e.51b8d4","name":"","x":579.7000122070312,"y":326.3999938964844,"wires":[]},{"id":"68a86d4c.b1218c","type":"debug","z":"56b42b3e.51b8d4","name":"","active":false,"console":"false","complete":"false","x":670.7000122070312,"y":142.39999389648438,"wires":[]},{"id":"ec1c5eaa.182f58","type":"modbus-client","z":"","name":"arduino","clienttype":"simpleser","bufferCommands":true,"stateLogEnabled":false,"tcpHost":"127.0.0.1","tcpPort":"502","serialPort":"/dev/ttyACM0","serialType":"RTU-BUFFERD","serialBaudrate":"19200","serialDatabits":"8","serialStopbits":"1","serialParity":"none","serialConnectionDelay":"100","unit_id":1,"commandDelay":1,"clientTimeout":1000,"reconnectTimeout":2000}] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment