SCRIPTMOTOR
Scriptexempel
13min
sensor online använder javascript för att åstadkomma avancerade tilläggsfunktioner ett js script kan anropas av till exempel en knapp eller en tidkanal men det kan också köras cykliskt eller triggas av till exempel ett larm för att läsa och skriva taggar från javascript delar sensor online med sig av ett objekt som kallas tags detta objekt innehåller ett flertal funktioner t ex read och write och här ges några exempel på hur dessa kan användas användningsexempel en dränkbar tryckgivare från keller har tryckområde 0 8 till 3 bar, med en utsignal på 4 20ma som rapporteras till servern, kunden vill ha resultatet redovisat i bar och djup detta exempel läser ett taggvärde (356441115231009) till en intern variabel (inputvalue) och skriver sedan detta värde till två andra taggar (bar och djup) i sensor online var lowvalue = 0 8; var highvalue = 3; var inputvalue = tags\["356441115231009"] read("ma formel"); var result = (((highvalue lowvalue)/(20 4)) (inputvalue 4)) + lowvalue; // write the new calculated value to a new key tags\["356441115231009"] write("bar", result); tags\["356441115231009"] write("djup", (result 10) 1 ); generella kodexempel (finns även i so) exempelkod omvandla celcius till farenheit // convert the temperature to fahrenheit var temptofahrenheit = tags\["insert deveui"] read("insert key") 9/5 + 32; // write the new value to a new key tags\["insert deveui"] write("insert new key", temptofahrenheit); exempelkod medelvärde // get the data from three sensors var temp1 = tags\["insert deveui"] read("exttemp"); var temp2 = tags\["insert deveui"] read("exttemp"); var temp3 = tags\["insert deveui"] read("exttemp"); // write the new value to a new key tags\["insert deveui"] write("averagetemp", (temp1 + temp2 + temp3) / 3); exempelkod svartis detektion var utetemp = tags\["a81758fffe0459fb"] read("temperature"); var fukt = tags\["a81758fffe0459fb"] read("humidity"); var vagtemp = tags\["a81758fffe0459fa"] read("temperature"); // set the conditions for black ice if (vagtemp < 2 && fukt > 75 && utetemp > 3) { tags\["a81758fffe0459fa"] write("black ice", 1); } else { tags\["a81758fffe0459fa"] write("black ice", 0); } exempel 4 20ma korrigering // convert the analog input value 4 20ma to the right scale var lowvalue = 0; var highvalue = 200; var inputvalue = tags\["insert deveui"] read("analogin"); var result = (((highvalue lowvalue)/(20 4)) (inputvalue 4)) + lowvalue; // write the new calculated value to a new key tags\["insert deveui"] write("actualvalue", result); exempel 0 10v korrigering // convert the analog input value 0 10v to the right scale var lowlimit = 10; var highlimit = 200; var inputvalue = tags\["insert deveui"] read("analogin"); var result = (highlimit – lowlimit) x (inputvalue / 10) + lowlimit; tags\["insert deveui"] write("analogincorrected", result); exempel downlink för mcf88 relä downlinks mcf88("insert deveui", false (or) true, "gotthardp"); exempel arbeta med tid och datum //use format 00 00 //00 00 24 00 = always on //00 00 00 00 = always off function read() { schedule defaultvalue = "0"; for (var n=0; n\<nbronoff; n++) { for (var i=1; i<=7; i++) { var day = i + n 10; var on = tagvalue(prefix + " ct" + day) replace(" ",""); var off = tagvalue(prefix + " cf" + day) replace(" ",""); on = pad(on, 4); off = pad(off, 4); if (on == "0000" && off == "0000") { // do nothing } else if (off == "2400") schedule addevent("1", on + " 0000 " + i); else schedule addevent("1", on + " " + off + " " + i); } } 	return true; } function write() { var days = \[0, 0, 0 ,0, 0, 0, 0, 0, 0]; var day = 0; 	for (var i=0; i\<schedule events count; i++) { if (schedule events\[i] value != schedule defaultvalue && schedule events\[i] time length == 11) { day = schedule events\[i] time substring(10); var d = day 1; 	 day += days\[d] 10; days\[d]++; var on = schedule events\[i] time substring(0,4); var off = schedule events\[i] time substring(5,4); if (off == "0000") off = "2400"; tagwrite(prefix + " ct" + day, on); tagwrite(prefix + " cf" + day, off); } } for (var i=1; i<=7; i++) { for (var n=days\[i 1]; n<=nbronoff; n++) { day = i + n 10; tagwrite(prefix + " ct" + day, "0000"); tagwrite(prefix + " cf" + day, "0000"); } } 	return true; } function pad(n, width) { var result = ''; for (var i=n length;i\<width;i++) { result += '0'; } result += n; return result; }