Advertisement
mike2545

kiosk

Oct 29th, 2013
251
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
QBasic 26.80 KB | None | 0 0
  1. _quality = "Best";
  2. fscommand("Fullscreen", "true");
  3. STOP();
  4. import tinypixels.file.*;
  5. ssCore.init();
  6. FUNCTION GetClock() {
  7.     var my_time = new Date();
  8.     var zhour:Number = my_time.getHours();
  9.     var zmin:Number = my_time.getMinutes();
  10.     var zsec:Number = my_time.getSeconds();
  11.     my_time.getTime();
  12.     IF (zsec<10) {
  13.         osec = ("0"+zsec.toString());
  14.     } ELSE {
  15.         osec = zsec.toString();
  16.     }
  17.     IF (zmin<10) {
  18.         omin = ("0"+zmin.toString());
  19.     } ELSE {
  20.         omin = zmin.toString();
  21.     }
  22.     IF (zhour<1) {
  23.         ohour = 12;
  24.         tag = " AM";
  25.     } ELSE IF (zhour>0 && zhour<12) {
  26.         ohour = zhour;
  27.         tag = " AM";
  28.     } ELSE IF (zhour == 12) {
  29.         ohour = zhour;
  30.         tag = " PM";
  31.     } ELSE IF (zhour>12) {
  32.         ohour = zhour-12;
  33.         tag = " PM";
  34.     }
  35.     _root.TimeBoxMovie.TimeBox = ohour+":"+omin+":"+osec+tag+"  "+my_time.toString().slice(0, 10);
  36. }
  37. var HourLog:Array = new Array();
  38. var FosGal:Array = new Array();
  39. var SolGal:Array = new Array();
  40. var FosBTU:Array = new Array();
  41. var SolBTU:Array = new Array();
  42. FOR (i=0; i<24; i++) {
  43.     HourLog.push(0);
  44.     FosGal.push(0);
  45.     SolGal.push(0);
  46.     FosBTU.push(0);
  47.     SolBTU.push(0);
  48. }
  49. var wattcounter:Array = new Array();
  50. var GGALcounter:Array = new Array();
  51. var BGALcounter:Array = new Array();
  52. var GBTUcounter:Array = new Array();
  53. var BBTUcounter:Array = new Array();
  54. var datasheet:Array = new Array();
  55. var rov:Array = new Array();
  56. var dadasheet:Array = new Array();
  57. var vor:Array = new Array();
  58. var KiloTracker:Array = new Array();
  59. var GreenTracker:Array = new Array();
  60. var BlueTracker:Array = new Array();
  61. var SolBTUTracker:Array = new Array();
  62. var FosBTUTracker:Array = new Array();
  63. _global.Meat0 = 0;
  64. _global.Meat1 = 0;
  65. _global.Meat2 = 0;
  66. _global.Meat3 = 0;
  67. _global.Meat4 = 0;
  68. _global.Meat5 = 0;
  69. _global.Meat6 = 0;
  70. _global.Meat7 = 0;
  71. _global.Meat8 = 0;
  72. _global.Meat9 = 0;
  73. _global.Meat10 = 0;
  74. _global.Meat11 = 0;
  75. _global.Meat12 = 0;
  76. _global.Meat13 = 0;
  77. _global.GreenGalCheck = 0;
  78. _global.BlueGalCheck = 0;
  79. _global.GreenBTUCheck = 0;
  80. _global.BlueBTUCheck = 0;
  81. FUNCTION StartDay() {
  82.     var myDate_date:Date = new Date();
  83.     var currentYear:Number = myDate_date.getFullYear();
  84.     var currentMonth:Number = myDate_date.getMonth()+1;
  85.     var currentDate:Number = myDate_date.getDate();
  86.     _global.logDate = currentDate-1;
  87.     var currentHour:Number = myDate_date.getHours();
  88.     IF (currentMonth<10 && currentDate<10) {
  89.         _global.FileHandle = "C:/SunnyData/"+currentYear+"-0"+currentMonth+"-0"+currentDate+".csv";
  90.     } ELSE IF (currentMonth<10 && currentDate>=10) {
  91.         _global.FileHandle = "C:/SunnyData/"+currentYear+"-0"+currentMonth+"-"+currentDate+".csv";
  92.     } ELSE IF (currentMonth>=10 && currentDate<10) {
  93.         _global.FileHandle = "C:/SunnyData/"+currentYear+"-"+currentMonth+"-0"+currentDate+".csv";
  94.     } ELSE IF (currentMonth>=10 && currentDate>=10) {
  95.         _global.FileHandle = "C:/SunnyData/"+currentYear+"-"+currentMonth+"-"+currentDate+".csv";
  96.     }
  97.     ssCore.FileSys.getTimeStamp({path:"C:/577Kiosk/Data/HOURLY.txt"},{callback:GotTimeStamp});//this checks TO see IF the hourly file IS current FOR the day
  98.     FUNCTION GotTimeStamp(ret_obj, cb_obj, err_obj) {
  99.         IF (ret_obj.result.substring(8, 10) != logDate+1) {
  100.             ssCore.FileSys.writeToFile({path:"C:/577Kiosk/Data/HOURLY.txt", DATA:HourLog+"\r\n"+FosGal+"\r\n"+SolGal+"\r\n"+FosBTU+"\r\n"+SolBTU+"\r\n"},{callback:"Done", scope:this});
  101.         } ELSE {
  102.             LoadHours();
  103.         }
  104.     }
  105.     _global.mom = 0;
  106.     _global.OldGallonRead = 0;
  107.     _global.OldTimeStamp = 00;
  108.     _global.RedFlag = 0;
  109.     _global.StartHour = currentHour;
  110.     _global.WattHours = 0;
  111.     _global.FosBTUSum = 0;
  112.     _global.SolBTUSum = 0;
  113.     BootFlag = false;
  114.     LoadBTUHistory();
  115.     ////////////////////////////////////////the below checks AND builds the month LOG FILES//////////////////////////////                                                
  116.     _global.logHandle = "C:/577Kiosk/Data/"+currentYear+"_"+currentMonth+".csv";
  117.     IF (currentMonth<10) {
  118.         logCompare = currentYear+"/0"+currentMonth;
  119.     } ELSE {
  120.         logCompare = currentYear+"/"+currentMonth;
  121.     }
  122.     ssCore.FileSys.getTimeStamp({path:"C:/577Kiosk/Data/"+currentYear+"_"+currentMonth+".csv"},{callback:GotMonthStamp});//this checks TO see IF the month file IS already there
  123.     FUNCTION GotMonthStamp(ret_obj, cb_obj, err_obj) {
  124.         IF (ret_obj.result.substring(0, 7) != logCompare) {///create a new month file, fill it with 0s
  125.             ssCore.FileSys.writeToFile({path:logHandle, DATA:"0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r\n"},{callback:"Done", scope:this});
  126.         }
  127.     }
  128. }
  129. /////////////////////////////////////////////////////////////////////////////////////////////////////////
  130. FUNCTION LoadHours() {
  131.     Grunt = new TP_SimpleCsvLoader("C:/577Kiosk/Data/HOURLY.txt", onBasicFileLoaded);
  132.     Grunt.loadCVS();
  133.     FUNCTION onBasicFileLoaded() {
  134.         HourLog = Grunt.getRowAsArray([0]);
  135.         HourLog.split(",");
  136.         FosGal = Grunt.getRowAsArray([1]);
  137.         FosGal.split(",");
  138.         SolGal = Grunt.getRowAsArray([2]);
  139.         SolGal.split(",");
  140.         FosBTU = Grunt.getRowAsArray([3]);
  141.         FosBTU.split(",");
  142.         SolBTU = Grunt.getRowAsArray([4]);
  143.         SolBTU.split(",");
  144.     }
  145. }
  146. FUNCTION LoadBTUHistory() {
  147.     THERM = new TP_SimpleCsvLoader("C:/577Kiosk/Data/BTU_Hist.txt", onBasicFileLoaded);
  148.     THERM.loadCVS();
  149.     FUNCTION onBasicFileLoaded() {
  150.         OldBtuLog = THERM.getRowAsArray([0]);
  151.         OldBtuLog.split(",");
  152.         NEWGBTU = Number(OldBtuLog[0]);
  153.         NEWBBTU = Number(OldBtuLog[1]);
  154.         _root.YtoDWatts = Number(OldBtuLog[2]);
  155.     }
  156.     //_root.YtoDWatts = OldYtoDWatts;
  157.     _root.TKHText = YtoDWatts+" KwH";
  158. }
  159. FUNCTION KillRoy() {
  160.     ssDebug.trace("KillRoy should be dead");
  161. }
  162. FUNCTION KillSys() {
  163.     ssCore.App.forceExitWindows({method:"reboot"},{callback:KillRoy});
  164. }
  165. ////////////////////////////////////////////////////////////////////////////////////////////////////////
  166. FUNCTION SunnyNoReport() {
  167.     _root.AquireData.gotoAndStop(164);
  168.     _global.Meat0 = 0;
  169.     _global.Meter0DataText = "OFF";
  170.     _root.TKHText = YtoDWatts+" KwH";
  171.     wattcounter.push(0);
  172.     _root.Meter0Text = Meter0DataText;
  173.     _root.WattMeter._x = (60+(Meat0*.475));
  174. }
  175. FUNCTION SunnyGoodReport() {
  176.     _global.Meter0DataText = SunnyCurrentWatts;
  177.     //_root.OldYtoDWatts = _root.YtoDWatts;
  178.     _root.TKHText = YtoDWatts+" KwH";//this displays the Solar Watts in Hourly Chart Text Panel//
  179.     _global.Meat0 = parseInt(SunnyCurrentWatts);//this displays positions the Solar Meter//
  180.     wattcounter.push(Meat0);
  181.     _root.Meter0Text = Meter0DataText;
  182.     _root.WattMeter._x = (60+(Meat0*.475));
  183. }
  184. FUNCTION SolWavReport() {
  185.     IF (Meat13 != 0 && Meat13 != OldGallonRead && OldGallonRead != 0) {
  186.         GallonsUsed = Number((Meat13-OldGallonRead)/151.4);///this IS true based ON Solar Wave DATA, ready TO divide by BTU DATA PROVIDED BY SOLAR WAVE..
  187.         BADBTU = Number(Meat11+Meat12);
  188.         GOODBTU = Number(Meat10+0);
  189.         IF (GOODBTU>0) {
  190.             SUMMYBTU = Number(BADBTU+GOODBTU);
  191.             Mplex = 100/SUMMYBTU;
  192.             Mplex = Math.round(Mplex*1000/1000);
  193.             GreenGalNumber = GallonsUsed/100*GOODBTU*Mplex;///GOODBTU*(100/SUMMYBTU);
  194.             BlueGalNumber = GallonsUsed/100*BADBTU*Mplex;///BADBTU*(100/SUMMYBTU);
  195.         } ELSE {
  196.             GreenGalNumber = 0;
  197.             BlueGalNumber = GallonsUsed;
  198.         }
  199.         GGALcounter.push(GreenGalNumber);///Good TO go ?
  200.         BGALcounter.push(BlueGalNumber);///Good TO go ?
  201.         GBTUcounter.push(GOODBTU);///Meat 10 DATA provided by Solar wave, a rather cryptic sum (NOT documented) but provided by Solar Wave, no idea how this value was derived, I question value shown here(MP).
  202.         BBTUcounter.push(BADBTU);///This IS a rather cryptic sum (Meat11+Meat12)provided by Solar Wave, no idea how this value was derived AND NOT documented, I question value shown here(MP).
  203.         FOR (i=0; i<GGALcounter.length; i++) {
  204.             IF (i == 0) {
  205.                 GGALtemp = Number(GGALcounter[i]);
  206.                 BGALtemp = Number(BGALcounter[i]);
  207.                 GBTUtemp = Number(GBTUcounter[i]);
  208.                 BBTUtemp = Number(BBTUcounter[i]);
  209.             } ELSE {
  210.                 GGALtemp = GGALtemp+Number(GGALcounter[i]);
  211.                 BGALtemp = BGALtemp+Number(BGALcounter[i]);
  212.                 GBTUtemp = GBTUtemp+Number(GBTUcounter[i]);
  213.                 BBTUtemp = BBTUtemp+Number(BBTUcounter[i]);
  214.             }
  215.         }
  216.         GGALavg = Math.round(GGALtemp*100)/100;///GGALtemp;///Math.round(GGALtemp*10000/10000);
  217.         BGALavg = Math.round(BGALtemp*100)/100;
  218.         GBTUavg = Math.round(GBTUtemp*100)/100;
  219.         BBTUavg = Math.round(BBTUtemp*100)/100;
  220.         OldGallonRead = Number(Meat13);///RESET FOR NEXT READ, otherwise a 0///
  221.     } ELSE {
  222.         OldGallonRead = Number(Meat13);
  223.         GGALcounter.push(0);
  224.         BGALcounter.push(0);
  225.         GBTUcounter.push(0);
  226.         BBTUcounter.push(0);
  227.         FOR (i=0; i<GGALcounter.length; i++) {
  228.             IF (i == 0) {
  229.                 GGALtemp = Number(GGALcounter[i]);
  230.                 BGALtemp = Number(BGALcounter[i]);
  231.                 GBTUtemp = Number(GBTUcounter[i]);
  232.                 BBTUtemp = Number(BBTUcounter[i]);
  233.             } ELSE {
  234.                 GGALtemp = GGALtemp+Number(GGALcounter[i]);
  235.                 BGALtemp = BGALtemp+Number(BGALcounter[i]);
  236.                 GBTUtemp = GBTUtemp+Number(GBTUcounter[i]);
  237.                 BBTUtemp = BBTUtemp+Number(BBTUcounter[i]);
  238.             }
  239.         }
  240.         GGALavg = Math.round(GGALtemp*100)/100;
  241.         BGALavg = Math.round(BGALtemp*100)/100;
  242.         GBTUavg = Math.round(GBTUtemp*100)/100;
  243.         BBTUavg = Math.round(BBTUtemp*100)/100;
  244.         IF (isNaN(GGALavg)) {
  245.             GreenGalCheck = 2;
  246.             GGALavg = 0;
  247.         }
  248.         IF (isNaN(BGALavg)) {
  249.             BlueGalCheck = 2;
  250.             BGALavg = 0;
  251.         }
  252.         IF (isNaN(GBTUavg)) {
  253.             GreenBTUCheck = 2;
  254.             GBTUavg = 0;
  255.         }
  256.         IF (isNaN(BBTUavg)) {
  257.             BlueBTUCheck = 2;
  258.             BBTUavg = 0;
  259.         }
  260.     }
  261. }
  262. XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXBEGIN READING SOLAR WAVE DATA HEREXXXXXXXXXXXXX
  263. FUNCTION XMLSYS1() {
  264.     datasheet.length = 0;
  265.     rov.length = 0;
  266.     var myXML:XML = new XML();
  267.     myXML.ignoreWhite = true;
  268.     myXML.onLoad = FUNCTION(success:Boolean) {
  269.         wavefile = this.firstChild.childNodes;
  270.         FOR (var i = 0; i<wavefile.length; i++) {
  271.             sysdata.push(wavefile[i].childNodes);
  272.             rov[1] = wavefile[i].childNodes[1].childNodes[0].nodeValue;//1 IS device ID
  273.             rov[2] = wavefile[i].childNodes[5].childNodes[0].nodeValue;//5 IS time stamp
  274.             rov[3] = wavefile[i].childNodes[6].childNodes[0].nodeValue;//6 IS device reading
  275.             datasheet[i] = rov[1]+"&"+rov[2]+"&"+rov[3];
  276.         }
  277.         //////the above IS the first parse operation AND loads only ID, Timestamp AND Reading from XML///////
  278.         datasheet.sort();///array contents now by device AND timestamp
  279.         datasheet.reverse();///array contents timestamp order
  280.         FOR (var i = 0; i<datasheet.length; i++) {
  281.             WHILE (datasheet[i].substring(0, 16) == datasheet[i+1].substring(0, 16)) {
  282.                 datasheet.splice(i+1,1);
  283.             }
  284.         }
  285.         //////the above IS the final parse operation AND leaves only the most current reading FOR each device///
  286.         FOR (var i = 0; i<datasheet.length; i++) {
  287.             IF (datasheet[i].substring(0, 16) == STRING("263D32B1000000DF")) {//Sun Intensity DONE///
  288.                 _global.Meter1DataText = Math.round(datasheet[i].substring(28, 36));
  289.                 _global.Meat1 = parseInt(datasheet[i].substring(28, 36));
  290.             } ELSE IF (datasheet[i].substring(0, 16) == STRING("28ED9B910100007F")) {//Dome Air Temp DONE///
  291.                 _global.Meter2DataText = Math.round(datasheet[i].substring(28, 36))*1.8+32;
  292.                 _global.Meat2 = parseInt(datasheet[i].substring(28, 36))*1.8+32;
  293.             } ELSE IF (datasheet[i].substring(0, 16) == STRING("26DD02650000007D")) {//Dome Humidity DONE///
  294.                 _global.Meter3DataText = Math.round(datasheet[i].substring(28, 36));
  295.                 _global.Meat3 = parseInt(datasheet[i].substring(28, 36));
  296.             } ELSE IF (datasheet[i].substring(0, 16) == STRING("28EF04E5000000C4")) {//Dome Soil Temp DONE///
  297.                 _global.Meter4DataText = Math.round(datasheet[i].substring(28, 36))*1.8+32;
  298.                 _global.Meat4 = parseInt(datasheet[i].substring(28, 36))*1.8+32;
  299.             } ELSE IF (datasheet[i].substring(0, 16) == STRING("28AF09E50000005D")) {//Dome Pond Temp DONE///
  300.                 _global.Meter5DataText = Math.round(datasheet[i].substring(28, 36))*1.8+32;
  301.                 _global.Meat5 = parseInt(datasheet[i].substring(28, 36))*1.8+32;
  302.             } ELSE IF (datasheet[i].substring(0, 16) == STRING("28DC5D910100001B")) {//Outdoor Temp DONE///
  303.                 _global.Meter6DataText = Math.round(datasheet[i].substring(28, 36))*1.8+32;
  304.                 _global.Meat6 = parseInt(datasheet[i].substring(28, 36))*1.8+32;
  305.             } ELSE IF (datasheet[i].substring(0, 16) == STRING("2678AB6400000085")) {//Outdoor Humidity DONE///
  306.                 _global.Meter7DataText = Math.round(datasheet[i].substring(28, 36));
  307.                 _global.Meat7 = parseInt(datasheet[i].substring(28, 36));
  308.             }
  309.         }
  310.     };
  311.     myXML.load("C:/SolWavData/dome/sysdata.xml");
  312.     _root.SunIntensity._x = (25+(Meat1*.475));
  313.     _root.DomeAirTemp._x = (-18+(Meat2*4.07));
  314.     _root.DomeHumidMeter._x = (136+(Meat3*4.75));
  315.     _root.DomeSoilMeter._x = (55+(Meat4*4.07));
  316.     _root.DomePondTemp._x = (20+(Meat5*4.07));
  317.     _root.DomeTextMovie.OutdoorTempMeter._x = (396+(Number(Meat6)*3.1));
  318.     _root.DomeTextMovie.OutdoorHumidityMeter._x = (486+(Number(Meat7)*4.24));
  319.     _root.Meter1Text = Meter1DataText;//Sun Intensity
  320.     _root.Meter2Text = Meter2DataText;//Dome Air Temp
  321.     _root.Meter3Text = Meter3DataText;//Dome Humidity
  322.     _root.Meter4Text = Meter4DataText;//Dome Soil Temp
  323.     _root.Meter5Text = Meter5DataText;//Dome Pond Temp
  324.     _root.DomeTextMovie.Meter6Text = Meter6DataText;//Outdoor Temp
  325.     _root.DomeTextMovie.Meter7Text = Meter7DataText;//Outdoor Humidity
  326. }
  327. FUNCTION XMLSYS2() {
  328.     dadasheet.length = 0;
  329.     vor.length = 0;
  330.     var msXML:XML = new XML();
  331.     msXML.ignoreWhite = true;
  332.     msXML.onLoad = FUNCTION(success:Boolean) {
  333.         solwavefile = this.firstChild.childNodes;
  334.         FOR (var i = 0; i<solwavefile.length; i++) {
  335.             sysdata.push(solwavefile[i].childNodes);
  336.             vor[1] = solwavefile[i].childNodes[1].childNodes[0].nodeValue;//1 IS device ID
  337.             vor[2] = solwavefile[i].childNodes[5].childNodes[0].nodeValue;//5 IS time stamp
  338.             vor[3] = solwavefile[i].childNodes[6].childNodes[0].nodeValue;//6 IS device reading
  339.             dadasheet[i] = vor[1]+"&"+vor[2]+"&"+vor[3];
  340.         }
  341.         //////the above IS the first parse operation AND loads only ID, Timestamp AND Reading from XML///////
  342.         dadasheet.sort();///array contents now by device AND timestamp
  343.         dadasheet.reverse();///array contents timestamp order
  344.         FOR (var i = 0; i<dadasheet.length; i++) {
  345.             WHILE (dadasheet[i].substring(0, 16) == dadasheet[i+1].substring(0, 16)) {
  346.                 dadasheet.splice(i+1,1);
  347.             }
  348.         }
  349.         //////the above IS the final parse operation AND leaves only the most current reading FOR each device///
  350.         FOR (var i = 0; i<dadasheet.length; i++) {
  351.             IF (dadasheet[i].substring(0, 16) == STRING("28A3D7C800000031")) {//Solar Water Panel Temp  
  352.                 _global.Meter8DataText = Math.round(dadasheet[i].substring(28, 36))*1.8+32;
  353.                 _root.ThermPanText = parseInt(dadasheet[i].substring(28, 36))*1.8+32+" Degrees F";
  354.                 _global.Meat8 = parseInt(dadasheet[i].substring(28, 36))*1.8+32;
  355.             } ELSE IF (dadasheet[i].substring(0, 16) == STRING("28FD89C000000027")) {//Water tank Temp28FD89C000000027
  356.                 _global.Meter9DataText = Math.round(dadasheet[i].substring(28, 36))*1.8+32;
  357.                 _root.TankPanText = parseInt(dadasheet[i].substring(28, 36))*1.8+32+" Degrees F";
  358.                 _global.Meat9 = parseInt(dadasheet[i].substring(28, 36))*1.8+32;
  359.             } ELSE IF (dadasheet[i].substring(0, 16) == STRING("FE00000D000000FF")) {//Solar BTU
  360.                 _global.Meat10 = Number(dadasheet[i].substring(28, 36));
  361.             } ELSE IF (dadasheet[i].substring(0, 16) == STRING("FE000010000000FF")) {//Gas BTU
  362.                 _global.Meat11 = Number(dadasheet[i].substring(28, 36));
  363.             } ELSE IF (dadasheet[i].substring(0, 16) == STRING("FE000011000000FF")) {//Elec BTU
  364.                 _global.Meat12 = Number(dadasheet[i].substring(28, 36));
  365.             } ELSE IF (dadasheet[i].substring(0, 16) == STRING("1DEA440B00000047")) {//WATER FLOW
  366.                 _global.Meat13 = Number(dadasheet[i].substring(28, 36));
  367.             }
  368.         }
  369.     };
  370.     msXML.load("C:/SolWavData/solar/sysdata.xml");
  371.     _root.WaterPanelTemp._x = (133+(Meat8*2.65));
  372.     _root.WaterTankTemp._x = (131+(Meat9*2.64));
  373.     _root.Meter8Text = Meter8DataText;//Solar Water Panel Temp
  374.     _root.Meter9Text = Meter9DataText;//Water Tank Temp
  375. }
  376. XXXXXXXXXXXXXXXXXXXXXXXXXXXXEND READING AND PARSING OF SOLAR WAVR DATAXXXXXXXXXXX
  377. XXXXXXXXXXXXXXXXXXXXXXXXXXXXBEGIN SUNNY WEB BOX READ AND PARSEXXXXXXXXXXXXXXXXX
  378. FUNCTION CSVSYS1() {
  379.     myCSV_Basic = new TP_SimpleCsvLoader(FileHandle, onBasicFileLoaded);
  380.     myCSV_Basic.loadCVS();
  381.     FUNCTION onBasicFileLoaded() {
  382.         LastLog = myCSV_Basic.rowCount;//this finds the last entry//
  383.         ThisTimeStamp = myCSV_Basic.getRowAsArray(Number(LastLog-1))[0];//this gets the current time stamp from file//
  384.         IF (ThisTimeStamp == LastTimeStamp) {
  385.             RedFlag = RedFlag+1;
  386.         } ELSE {
  387.             RedFlag = 0;
  388.         }
  389.         ////////////the above checks TO see IF the SunnyBox IS still writing DATA///////////  
  390.         var ThisHour:Date = new Date();
  391.         var StuffThisHour:Number = ThisHour.getHours();
  392.         IF (StuffThisHour == 23) {
  393.             BootFlag = true;
  394.         }
  395.         IF (StuffThisHour == 0 && BootFlag == true) {///RESET SYSTEM at Midnight///
  396.             ssCore.FileSys.deleteFile({path:"C:/577Kiosk/Data/HOURLY.txt"},{callback:KillSys, scope:this});
  397.         }
  398.         /////////////////the above forces the SYSTEM TO restart at Midnight//////////////////                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
  399.         IF (StartHour == StuffThisHour && RedFlag>=4) {
  400.             SunnyNoReport();
  401.             SolWavReport();
  402.         }
  403.         //////////the above forces "0" s into the array FOR this hour UNTIL Sunny Box comes back TO life///                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
  404.         IF (StartHour != StuffThisHour && RedFlag>=4) {
  405.             NEWGBTU = Number(NEWGBTU+GBTUavg);
  406.             NEWBBTU = Number(NEWBBTU+BBTUavg);
  407.             wattcounter.length = 0;
  408.             GGALcounter.length = 0;
  409.             BGALcounter.length = 0;
  410.             GBTUcounter.length = 0;
  411.             BBTUcounter.length = 0;
  412.             wattemp = 0;
  413.             wattavg = 0;
  414.             GGALavg = 0;
  415.             BGALavg = 0;
  416.             GBTUavg = 0;
  417.             BBTUavg = 0;
  418.             StartHour = StuffThisHour;
  419.             SunnyNoReport();
  420.             SolWavReport();
  421.         }
  422.         ///////////the above forces "0" s into the array FOR new hour UNTIL Sunny Box comes back TO life///                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
  423.         IF (StartHour == StuffThisHour && RedFlag<4) {//this confirms the hour has NOT changed//
  424.             SunnyCurrentWatts = myCSV_Basic.getRowAsArray(Number(LastLog-1))[9];
  425.             porkchop = myCSV_Basic.getRowAsArray(Number(LastLog-1))[2];//this captures the last entry in the Sunny Box file//
  426.             IF (porkchop>YtoDWatts) {
  427.                 YtoDWatts = porkchop;
  428.             }
  429.             IF (SunnyCurrentWatts == NAN) {
  430.                 SunnyNoReport();
  431.                 SolWavReport();
  432.             } ELSE {
  433.                 SunnyGoodReport();
  434.                 SolWavReport();
  435.             }
  436.         }
  437.         ///////////////the above routine IS used IF Suuny Box IS reporting O.K.////////////////////////                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
  438.         IF (StuffThisHour != StartHour && RedFlag<4) {//this confirms the hour has changed, must purge array//
  439.             NEWGBTU = Number(NEWGBTU+GBTUavg);///LOG FOR history file
  440.             NEWBBTU = Number(NEWBBTU+BBTUavg);///LOG FOR history file
  441.             wattcounter.length = 0;
  442.             GGALcounter.length = 0;
  443.             BGALcounter.length = 0;
  444.             GBTUcounter.length = 0;
  445.             BBTUcounter.length = 0;
  446.             wattemp = 0;
  447.             wattavg = 0;
  448.             GGALavg = 0;
  449.             BGALavg = 0;
  450.             GBTUavg = 0;
  451.             BBTUavg = 0;
  452.             StartHour = StuffThisHour;
  453.             SunnyCurrentWatts = myCSV_Basic.getRowAsArray(Number(LastLog-1))[9];
  454.             porkchop = myCSV_Basic.getRowAsArray(Number(LastLog-1))[2];//this captures the last entry in the Sunny Box file//
  455.             IF (porkchop>YtoDWatts) {
  456.                 YtoDWatts = porkchop;
  457.             }
  458.             IF (SunnyCurrentWatts == NAN) {
  459.                 SunnyNoReport();
  460.                 SolWavReport();
  461.             } ELSE {
  462.                 SunnyGoodReport();
  463.                 SolWavReport();
  464.             }
  465.         }
  466.         FOR (i=0; i<wattcounter.length; i++) {///this the accum-average routine FOR hourly averages///
  467.             IF (i == 0) {
  468.                 wattemp = Number(wattcounter[i]);
  469.             } ELSE {
  470.                 wattemp = wattemp+Number(wattcounter[i]);
  471.             }
  472.         }
  473.         wattavg = Math.round(wattemp/wattcounter.length*100/100);
  474.         HourLog.splice(StuffThisHour,1,wattavg);
  475.         FosGal.splice(StuffThisHour,1,BGALavg);
  476.         //ssDebug.trace("FosGal "+FosGal);
  477.         SolGal.splice(StuffThisHour,1,GGALavg);
  478.         //ssDebug.trace("SolGal "+SolGal);
  479.         FosBTU.splice(StuffThisHour,1,BBTUavg);
  480.         SolBTU.splice(StuffThisHour,1,GBTUavg);
  481.         FOR (z=StuffThisHour; z<24; z++) {
  482.             HourLog.push(0);
  483.             FosGal.push(0);
  484.             SolGal.push(0);
  485.             FosBTU.push(0);
  486.             SolBTU.push(0);
  487.         }
  488.         HourLog.length = 24;
  489.         FosGal.length = 24;
  490.         SolGal.length = 24;
  491.         FosBTU.length = 24;
  492.         SolBTU.length = 24;
  493.         LastTimeStamp = ThisTimeStamp;
  494.         //////////////////////////////////////////////////////////////////////////////////////////////////////
  495.         FOR (i=0; i<24; i++) {//this routine builds the daily kilowatt total FOR the monthly file///
  496.             IF (i == 0) {
  497.                 WattHours = Math.round(HourLog[i]);
  498.                 FosGalSum = Math.round(FosGal[i]*100/100);
  499.                 SolGalSum = Math.round(SolGal[i]*100/100);
  500.                 FosBTUSum = Math.round(FosBTU[i]*100/100);
  501.                 SolBTUSum = Math.round(SolBTU[i]*100/100);
  502.             } ELSE {
  503.                 WattHours = Math.round(WattHours+Number(HourLog[i]));
  504.                 FosGalSum = Math.round(FosGalSum+Number(FosGal[i])*100/100);
  505.                 SolGalSum = Math.round(SolGalSum+Number(SolGal[i])*100/100);
  506.                 FosBTUSum = Math.round(FosBTUSum+Number(FosBTU[i])*100/100);
  507.                 SolBTUSum = Math.round(SolBTUSum+Number(SolBTU[i])*100/100);
  508.             }
  509.             IF (isNaN(SolGalSum)) {
  510.                 GreenGalCheck = 4;
  511.             }
  512.             IF (isNaN(FosGalSum)) {
  513.                 BlueGalCheck = 4;
  514.             }
  515.             IF (isNaN(SolBTUSum)) {
  516.                 GreenBTUCheck = 4;
  517.             }
  518.             IF (isNaN(FosBTUSum)) {
  519.                 BlueBTUCheck = 4;
  520.             }
  521.             _root.ChartPanText = WattHours+" Watts";///the sum FOR the day, displayed in the text panel ON Volt Chart page
  522.             FosGalText = FosGalSum+" Gallons";
  523.             SolGalText = SolGalSum+" Gallons";
  524.             FosBText = FosBTUSum+" BTU";
  525.             SolBText = SolBTUSum+" BTU";
  526.         }
  527.     }
  528. }
  529. //////////////////////////////////////////////////////////////////////////////////////
  530. FUNCTION HOUR_WRITER() {
  531.     _root.DataLogMovie.gotoAndStop(2);
  532.     ssCore.FileSys.writeToFile({path:"C:/577Kiosk/Data/HOURLY.txt", DATA:HourLog+"\r\n"+FosGal+"\r\n"+SolGal+"\r\n"+FosBTU+"\r\n"+SolBTU+"\r\n"},{callback:"Done", scope:this});
  533. }
  534. FUNCTION HistLog() {
  535.     _root.DataLogMovie.gotoAndStop(2);
  536.     ssCore.FileSys.writeToFile({path:"C:/577Kiosk/Data/BTU_Hist.txt", DATA:NEWGBTU+","+NEWBBTU+","+YtoDWatts+"\r\n"},{callback:"Done", scope:this});
  537. }
  538. FUNCTION MonthLog() {
  539.     _root.DataLogMovie.gotoAndStop(2);
  540.     KiloTracker.length = 0;
  541.     GreenTracker.length = 0;
  542.     BlueTracker.length = 0;
  543.     SolBTUTracker.length = 0;
  544.     FosBTUTracker.length = 0;
  545.     Marco = new TP_SimpleCsvLoader(logHandle, onBasicFileLoaded);
  546.     Marco.loadCVS();
  547.     FUNCTION onBasicFileLoaded() {
  548.         KiloTracker = Marco.getRowAsArray([0]);
  549.         GreenTracker = Marco.getRowAsArray([1]);
  550.         BlueTracker = Marco.getRowAsArray([2]);
  551.         SolBTUTracker = Marco.getRowAsArray([3]);
  552.         FosBTUTracker = Marco.getRowAsArray([4]);
  553.         KiloTracker.split(",");
  554.         GreenTracker.split(",");
  555.         BlueTracker.split(",");
  556.         SolBTUTracker.split(",");
  557.         FosBTUTracker.split(",");
  558.         KiloTracker.splice(logDate,1,WattHours/1000);///the division by 1000 converts sum TO kilowatt hours///
  559.         GreenTracker.splice(logDate,1,SolGalSum);
  560.         BlueTracker.splice(logDate,1,FosGalSum);
  561.         SolBTUTracker.splice(logDate,1,SolBTUSum);
  562.         FosBTUTracker.splice(logDate,1,FosBTUSum);
  563.         FOR (z=KiloTracker.length; z<32; z++) {
  564.             KiloTracker.push(0);
  565.             GreenTracker.push(0);
  566.             BlueTracker.push(0);
  567.             SolBTUTracker.push(0);
  568.             FosBTUTracker.push(0);
  569.         }
  570.         KiloTracker.length = 31;
  571.         GreenTracker.length = 31;
  572.         BlueTracker.length = 31;
  573.         SolBTUTracker.length = 31;
  574.         FosBTUTracker.length = 31;
  575.         ssCore.FileSys.writeToFile({path:logHandle, DATA:KiloTracker+"\r\n"+GreenTracker+"\r\n"+BlueTracker+"\r\n"+SolBTUTracker+"\r\n"+FosBTUTracker+"\r\n"},{callback:"Done", scope:this});
  576.     }
  577. }
  578. FUNCTION FileForWeb() {
  579.     _root.DataLogMovie.gotoAndStop(2);
  580.     ssCore.FileSys.writeToFile({path:"C:/577Kiosk/Data/Current.txt", DATA:Meat0+","+Meat1+","+Meat2+","+Meat3+","+Meat4+","+Meat5+","+Meat6+","+Meat7+","+Meat8+","+Meat9+","+YtoDWatts+","+NEWGBTU+","+NEWBBTU+","+GreenGalCheck+","+BlueGalCheck+","+GreenBTUCheck+","+BlueBTUCheck+"\r\n"},{callback:"Done", scope:this});
  581. }
  582. FUNCTION Done() {
  583.     _root.DataLogMovie.gotoAndStop(1);
  584. }
  585. XXXXXXXXXXXXXXXTHIS IS WHERE THE DATA FILE READING INTERVAL IS CONTROLLEDXXXXXX
  586. FUNCTION MOM_LOOP() {
  587.     GetClock();
  588.     mom = mom+1;
  589.     IF (mom == 5) {
  590.         _root.AquireData.gotoAndPlay(110);
  591.         XMLSYS1();
  592.     } ELSE IF (mom == 10) {
  593.         _root.AquireData.gotoAndPlay(56);
  594.         XMLSYS2();
  595.     } ELSE IF (mom == 20) {
  596.         _root.AquireData.gotoAndPlay(2);
  597.         CSVSYS1();
  598.     } ELSE IF (mom == 30) {
  599.         HOUR_WRITER();
  600.     } ELSE IF (mom == 45) {
  601.         MonthLog();
  602.     } ELSE IF (mom == 60) {
  603.         HistLog();
  604.     } ELSE IF (mom == 75) {
  605.         FileForWeb();
  606.     } ELSE IF (mom == 90) {
  607.         loadMovieNum("FTP_Inter.swf", 5);
  608.     } ELSE IF (mom == 303) {
  609.         mom = 4;
  610.     }
  611. }
  612. //////////////////Updater With Time Interval...includes 1st RUN//////////////////////////////////////
  613. StartDay();
  614. var MasterControl;
  615. _global.MasterControl = setInterval(MOM_LOOP, 1000);///updates every second///
  616. //////////////////////////////////////////////////////////////////////////
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement