Advertisement
Guest User

Untitled

a guest
Apr 8th, 2020
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // navigate to the firebase directory and call it out on the cmd. so
  2. // 1.run cmd as admin
  3. // 2. cd C:\users\yourusername\AppData\Roaming\npm
  4. // 3. firebase.cmd login
  5. // or firebase login
  6. // there you go. above steps are all commands goes to your command prompt.
  7. // Deploy functions usign command: firebase deploy --only functions
  8.  
  9. // https://stackoverflow.com/questions/3733227/javascript-seconds-to-minutes-and-seconds
  10.  
  11. // Initialize libraries
  12. const functions = require('firebase-functions');
  13. const admin = require('firebase-admin');
  14. admin.initializeApp(functions.config().firebase);
  15.  
  16. // Algorithm 1 for Station 1 Determining if Requested Rate can be Supplied
  17. exports.station1_changerate = functions.database.ref('/ChargingStation1/ChargingRate').onUpdate(event => {
  18.  
  19.     let chargingRate1, chargingRate2, chargingRate3;
  20.    
  21.     // Gets charging rate of station 1
  22.     function fetchRate1(){
  23.         admin.database().ref('/ChargingStation1/ChargingRate').once('value').then((snapshot)=>{
  24.             chargingRate1 = snapshot.val();
  25.             if(Number(chargingRate1) > 0){
  26.                 fetchRate2();
  27.             }
  28.             return 1;
  29.         }).catch(error => {
  30.             console.error(error);
  31.             res.error(10);
  32.         });
  33.     }
  34.  
  35.     // Gets charging rate of station 2
  36.     function fetchRate2(){
  37.         admin.database().ref('/ChargingStation2/ChargingRate').once('value').then((snapshot)=>{
  38.             chargingRate2 = snapshot.val();
  39.             fetchRate3()
  40.             return 1;
  41.         }).catch(error => {
  42.             console.error(error);
  43.             res.error(10);
  44.         });
  45.     }
  46.  
  47.     // Gets charging rate of station 3
  48.     function fetchRate3(){
  49.         admin.database().ref('/ChargingStation3/ChargingRate').once('value').then((snapshot)=>{
  50.             chargingRate3 = snapshot.val();
  51.             check();
  52.             return 1;
  53.         }).catch(error => {
  54.             console.error(error);
  55.             res.error(10);
  56.         });
  57.     }
  58.  
  59.     // Sums all 3 charging rates and checks if sum is greater or less than 221
  60.     function check(){
  61.         let totalChargingRate = Number(chargingRate1) + Number(chargingRate2) + Number(chargingRate3)
  62.         if (totalChargingRate > 221){
  63.             admin.database().ref("/ChargingStation1/CanBeSupplied").set(0);
  64.         } else if (totalChargingRate <= 221) {
  65.             admin.database().ref("/ChargingStation1/CanBeSupplied").set(1);
  66.         }
  67.     }
  68.  
  69.     fetchRate1();
  70.    
  71. })
  72.  
  73. // Algorithm 2 for Station 1 Setting Relays and AC Dimmer Values
  74. exports.station1_values = functions.database.ref('/ChargingStation1/CanBeSupplied').onUpdate(event => {
  75.  
  76.     let chargingRate1, CanBeSupplied;
  77.  
  78.     // Checks if CanBeSupplied is true, if true sets relay on and continue
  79.     function getCanBeSupplied(){
  80.         admin.database().ref("/ChargingStation1/station1Relay").set("OFF");
  81.         admin.database().ref('/ChargingStation1/CanBeSupplied').once('value').then((snapshot)=>{
  82.             CanBeSupplied = snapshot.val();
  83.             if (CanBeSupplied === 1){
  84.                 admin.database().ref("/ChargingStation1/station1Relay").set("ON");
  85.                 getChargingRate();
  86.             }
  87.             return 1;
  88.         }).catch(error => {
  89.             console.error(error);
  90.             res.error(10);
  91.         });
  92.     }
  93.  
  94.     // Gets charging rate of station 1
  95.     function getChargingRate(){
  96.         admin.database().ref('/ChargingStation1/ChargingRate').once('value').then((snapshot)=>{
  97.             chargingRate1 = snapshot.val();
  98.             setValues()
  99.             return 1;
  100.         }).catch(error => {
  101.             console.error(error);
  102.             res.error(10);
  103.         });
  104.     }
  105.  
  106.     // Sets AC dimmer value according to charging rate
  107.     function setValues(){
  108.         if (chargingRate1 === "47"){
  109.             admin.database().ref("/ChargingStation1/AC_dimmer_value").set(110);
  110.         } else if (chargingRate1 === "67"){
  111.             admin.database().ref("/ChargingStation1/AC_dimmer_value").set(150);
  112.         } else if (chargingRate1 === "87"){
  113.             admin.database().ref("/ChargingStation1/AC_dimmer_value").set(255);
  114.         } else {
  115.             admin.database().ref("/ChargingStation1/AC_dimmer_value").set(1);
  116.         }
  117.     }
  118.  
  119.     getCanBeSupplied();
  120. })
  121.  
  122. // Algorithm 3 for Station 1 Completion Time
  123. exports.station1_time = functions.database.ref('/ChargingStation1/CanBeSupplied').onUpdate(event => {
  124.  
  125.     let startingPercentage, endingPercentage, batteryCapacity, time, chargingRate1;
  126.  
  127.     // Gets starting percentage
  128.     function fetchStartingPercentage(){
  129.         admin.database().ref('/ChargingStation1/StartingPercentage').once('value').then((snapshot)=>{
  130.             startingPercentage = snapshot.val();
  131.             fetchEndingPercentage();
  132.             return 1;
  133.         }).catch(error => {
  134.             console.error(error);
  135.             res.error(10);
  136.         });
  137.     }
  138.  
  139.     // Gets ending percentage
  140.     function fetchEndingPercentage(){
  141.         admin.database().ref('/ChargingStation1/EndingPercentage').once('value').then((snapshot)=>{
  142.             endingPercentage = snapshot.val();
  143.             fetchBatteryCapacity();
  144.             return 1;
  145.         }).catch(error => {
  146.             console.error(error);
  147.             res.error(10);
  148.         });    
  149.     }
  150.  
  151.     // Gets battery capacity
  152.     function fetchBatteryCapacity(){
  153.         admin.database().ref('/ChargingStation1/BatteryCapacity').once('value').then((snapshot)=>{
  154.             batteryCapacity = snapshot.val();
  155.             getChargingRate();
  156.             return 1;
  157.         }).catch(error => {
  158.             console.error(error);
  159.             res.error(10);
  160.         });
  161.     }
  162.  
  163.     // Gets charging rate
  164.     function getChargingRate(){
  165.         admin.database().ref('/ChargingStation1/ChargingRate').once('value').then((snapshot)=>{
  166.             chargingRate1 = snapshot.val();
  167.             computeTime()
  168.             return 1;
  169.         }).catch(error => {
  170.             console.error(error);
  171.             res.error(10);
  172.         });
  173.     }
  174.  
  175.     // Calculates time in total seconds
  176.     function computeTime(){
  177.         let startingCharge = startingPercentage * batteryCapacity;        
  178.         endingPercentage = Number(endingPercentage);
  179.         let endingCharge = endingPercentage * batteryCapacity;
  180.         let totalCharge = endingCharge - startingCharge;
  181.         time = Math.round(totalCharge / Number(chargingRate1)); // time is set in secs
  182.         admin.database().ref("/ChargingStation1/time").set(time);
  183.         computeFinishTime();
  184.     }
  185.  
  186.     // Calculates time in minutes and seconds
  187.     function computeFinishTime(){      
  188.         let minutes = Math.floor(time / 60);
  189.         let seconds = time - minutes * 60;
  190.         admin.database().ref("/ChargingStation1/minutes").set(minutes);
  191.         admin.database().ref("/ChargingStation1/seconds").set(seconds);
  192.     }
  193.  
  194.     fetchStartingPercentage();
  195.    
  196. })
  197.  
  198. // Algorithm 4 for Station 1 Payment Amount
  199. exports.station1_payment = functions.database.ref('/ChargingStation1/time').onUpdate(event => {
  200.     let chargingRate1, time;
  201.  
  202.     // Gets charging rate
  203.     function getChargingRate(){
  204.         admin.database().ref('/ChargingStation1/ChargingRate').once('value').then((snapshot)=>{
  205.             chargingRate1 = snapshot.val();
  206.             getTime();
  207.             return 1;
  208.         }).catch(error => {
  209.             console.error(error);
  210.             res.error(10);
  211.         });
  212.     }
  213.  
  214.     // Gets time in total seconds
  215.     function getTime(){
  216.         admin.database().ref('/ChargingStation1/time').once('value').then((snapshot)=>{
  217.             time = snapshot.val();
  218.             computePayment()
  219.             return 1;
  220.         }).catch(error => {
  221.             console.error(error);
  222.             res.error(10);
  223.         });
  224.     }
  225.    
  226.     // Calculates payment amount
  227.     function computePayment(){
  228.         let chargingCost = 0;
  229.         if (chargingRate1 === "87"){
  230.             chargingCost = 0.8;
  231.         } else if (chargingRate1 === "67"){
  232.             chargingCost = 0.6;
  233.         } else if (chargingRate1 === "47"){
  234.             chargingCost = 0.4;
  235.         }
  236.         let paymentAmount = (chargingCost * time).toFixed(2);
  237.         admin.database().ref("/ChargingStation1/payment").set(paymentAmount);
  238.     }
  239.  
  240.     getChargingRate();
  241. })
  242.  
  243. // Algorithm 1 for Station 2 Determining if Requested Rate can be Supplied
  244. exports.station2_changerate = functions.database.ref('/ChargingStation2/ChargingRate').onUpdate(event => {
  245.  
  246.     let chargingRate1, chargingRate2, chargingRate3;
  247.  
  248.     // Gets charging rate of station 1
  249.     function fetchRate1(){
  250.         admin.database().ref('/ChargingStation1/ChargingRate').once('value').then((snapshot)=>{
  251.             chargingRate1 = snapshot.val();
  252.             fetchRate2()
  253.             return 1;
  254.         }).catch(error => {
  255.             console.error(error);
  256.             res.error(10);
  257.         });
  258.     }
  259.  
  260.     // Gets charging rate of station 2
  261.     function fetchRate2(){
  262.         admin.database().ref('/ChargingStation2/ChargingRate').once('value').then((snapshot)=>{
  263.             chargingRate2 = snapshot.val();
  264.             if(Number(chargingRate2) > 0){
  265.                 fetchRate3();
  266.             }
  267.             return 1;
  268.         }).catch(error => {
  269.             console.error(error);
  270.             res.error(10);
  271.         });
  272.     }
  273.  
  274.     // Gets charging rate of station 3
  275.     function fetchRate3(){
  276.         admin.database().ref('/ChargingStation3/ChargingRate').once('value').then((snapshot)=>{
  277.             chargingRate3 = snapshot.val();
  278.             check();
  279.             return 1;
  280.         }).catch(error => {
  281.             console.error(error);
  282.             res.error(10);
  283.         });
  284.     }
  285.  
  286.     // Sums all 3 charging rates and checks if sum is greater or less than 221
  287.     function check(){
  288.         let totalChargingRate = Number(chargingRate1) + Number(chargingRate2) + Number(chargingRate3)
  289.         if (totalChargingRate > 221){
  290.             admin.database().ref("/ChargingStation2/CanBeSupplied").set(0);
  291.         } else if (totalChargingRate <= 221) {
  292.             admin.database().ref("/ChargingStation2/CanBeSupplied").set(1);
  293.         }
  294.     }
  295.  
  296.     fetchRate1();
  297.    
  298. })
  299.  
  300. // Algorithm 2 for Station 2 Setting Relays and AC Dimmer Values
  301. exports.station2_values = functions.database.ref('/ChargingStation2/CanBeSupplied').onUpdate(event => {
  302.     let chargingRate2, CanBeSupplied;
  303.  
  304.     // Checks if CanBeSupplied is true, if true sets relay on and continue
  305.     function getCanBeSupplied(){
  306.         admin.database().ref("/ChargingStation2/station2Relay").set("OFF");
  307.         admin.database().ref('/ChargingStation2/CanBeSupplied').once('value').then((snapshot)=>{
  308.             CanBeSupplied = snapshot.val();
  309.             if (CanBeSupplied === 1){
  310.                 admin.database().ref("/ChargingStation2/station2Relay").set("ON");
  311.                 getChargingRate();
  312.             }
  313.             return 1;
  314.         }).catch(error => {
  315.             console.error(error);
  316.             res.error(10);
  317.         });
  318.     }
  319.  
  320.     // Gets charging rate
  321.     function getChargingRate(){
  322.         admin.database().ref('/ChargingStation2/ChargingRate').once('value').then((snapshot)=>{
  323.             chargingRate2 = snapshot.val();
  324.             setValues()
  325.             return 1;
  326.         }).catch(error => {
  327.             console.error(error);
  328.             res.error(10);
  329.         });
  330.     }
  331.  
  332.  
  333.     // Sets AC dimmer value according to charging rate
  334.     function setValues(){
  335.         if (chargingRate2 === "47"){
  336.             admin.database().ref("/ChargingStation2/AC_dimmer_value").set(110);
  337.         } else if (chargingRate2 === "67"){
  338.             admin.database().ref("/ChargingStation2/AC_dimmer_value").set(150);
  339.         } else if (chargingRate2 === "87"){
  340.             admin.database().ref("/ChargingStation2/AC_dimmer_value").set(255);
  341.         } else {
  342.             admin.database().ref("/ChargingStation2/AC_dimmer_value").set(1);
  343.         }
  344.     }
  345.  
  346.     getCanBeSupplied();
  347. })
  348.  
  349. // Algorithm 3 for Station 2 Completion Time
  350. exports.station2_time = functions.database.ref('/ChargingStation2/CanBeSupplied').onUpdate(event => {
  351.  
  352.     let startingPercentage, endingPercentage, batteryCapacity, time, chargingRate2;
  353.  
  354.     // Gets starting percentage
  355.     function fetchStartingPercentage(){
  356.         admin.database().ref('/ChargingStation2/StartingPercentage').once('value').then((snapshot)=>{
  357.             startingPercentage = snapshot.val();
  358.             fetchEndingPercentage();
  359.             return 1;
  360.         }).catch(error => {
  361.             console.error(error);
  362.             res.error(10);
  363.         });
  364.     }
  365.  
  366.     // Gets ending percentage
  367.     function fetchEndingPercentage(){
  368.         admin.database().ref('/ChargingStation2/EndingPercentage').once('value').then((snapshot)=>{
  369.             endingPercentage = snapshot.val();
  370.             fetchBatteryCapacity();
  371.             return 1;
  372.         }).catch(error => {
  373.             console.error(error);
  374.             res.error(10);
  375.         });    
  376.     }
  377.  
  378.     // Gets battery capacity
  379.     function fetchBatteryCapacity(){
  380.         admin.database().ref('/ChargingStation2/BatteryCapacity').once('value').then((snapshot)=>{
  381.             batteryCapacity = snapshot.val();
  382.             getChargingRate();
  383.             return 1;
  384.         }).catch(error => {
  385.             console.error(error);
  386.             res.error(10);
  387.         });
  388.     }
  389.  
  390.     // Gets charging rate
  391.     function getChargingRate(){
  392.         admin.database().ref('/ChargingStation2/ChargingRate').once('value').then((snapshot)=>{
  393.             chargingRate2 = snapshot.val();
  394.             computeTime()
  395.             return 1;
  396.         }).catch(error => {
  397.             console.error(error);
  398.             res.error(10);
  399.         });
  400.     }
  401.  
  402.     // Calculates time in total seconds
  403.     function computeTime(){
  404.         let startingCharge = startingPercentage * batteryCapacity;        
  405.         endingPercentage = Number(endingPercentage);
  406.         let endingCharge = endingPercentage * batteryCapacity;
  407.         let totalCharge = endingCharge - startingCharge;
  408.         time = Math.round(totalCharge / Number(chargingRate2)); // time is set in secs
  409.         admin.database().ref("/ChargingStation2/time").set(time);
  410.         computeFinishTime();
  411.     }
  412.  
  413.     // Calculates time in minutes and seconds
  414.     function computeFinishTime(){      
  415.         let minutes = Math.floor(time / 60);
  416.         let seconds = time - minutes * 60;
  417.         admin.database().ref("/ChargingStation2/minutes").set(minutes);
  418.         admin.database().ref("/ChargingStation2/seconds").set(seconds);
  419.     }
  420.  
  421.     fetchStartingPercentage();
  422.    
  423. })
  424.  
  425. // Algorithm 4 for Station 2 Payment Amount
  426. exports.station2_payment = functions.database.ref('/ChargingStation2/time').onUpdate(event => {
  427.     let chargingRate2, time;
  428.    
  429.     // Gets charging rate
  430.     function getChargingRate(){
  431.         admin.database().ref('/ChargingStation2/ChargingRate').once('value').then((snapshot)=>{
  432.             chargingRate2 = snapshot.val();
  433.             fetchTime();
  434.             return 1;
  435.         }).catch(error => {
  436.             console.error(error);
  437.             res.error(10);
  438.         });
  439.     }
  440.  
  441.     // Gets time in total seconds
  442.     function fetchTime(){
  443.         admin.database().ref('/ChargingStation2/time').once('value').then((snapshot)=>{
  444.             time = snapshot.val();
  445.             computePayment()
  446.             return 1;
  447.         }).catch(error => {
  448.             console.error(error);
  449.             res.error(10);
  450.         });
  451.     }
  452.  
  453.     // Calculates payment amount
  454.     function computePayment(){
  455.         let chargingCost;
  456.         if (chargingRate2 === "87"){
  457.             chargingCost = 0.8;
  458.         } else if (chargingRate2 === "67"){
  459.             chargingCost = 0.6;
  460.         } else if (chargingRate2 === "47"){
  461.             chargingCost = 0.4;
  462.         }
  463.         let paymentAmount = chargingCost * time;
  464.         paymentAmount = paymentAmount.toFixed(2);
  465.         admin.database().ref("/ChargingStation2/payment").set(paymentAmount);
  466.     }
  467.  
  468.     getChargingRate();
  469. })
  470.  
  471. // Algorithm 1 for Station 3 Determining if Requested Rate can be Supplied
  472. exports.station3_changerate = functions.database.ref('/ChargingStation3/ChargingRate').onUpdate(event => {
  473.     let chargingRate1, chargingRate2, chargingRate3;
  474.  
  475.     function fetchRate1(){
  476.         admin.database().ref('/ChargingStation1/ChargingRate').once('value').then((snapshot)=>{
  477.             chargingRate1 = snapshot.val();
  478.             fetchRate2()
  479.             return 1;
  480.         }).catch(error => {
  481.             console.error(error);
  482.             res.error(10);
  483.         });
  484.     }
  485.  
  486.     function fetchRate2(){
  487.         admin.database().ref('/ChargingStation2/ChargingRate').once('value').then((snapshot)=>{
  488.             chargingRate2 = snapshot.val();
  489.             fetchRate3()
  490.             return 1;
  491.         }).catch(error => {
  492.             console.error(error);
  493.             res.error(10);
  494.         });
  495.     }
  496.  
  497.     function fetchRate3(){
  498.         admin.database().ref('/ChargingStation3/ChargingRate').once('value').then((snapshot)=>{
  499.             chargingRate3 = snapshot.val();
  500.             if(Number(chargingRate3) > 0){
  501.                 check();
  502.             }
  503.             return 1;
  504.         }).catch(error => {
  505.             console.error(error);
  506.             res.error(10);
  507.         });
  508.     }
  509.  
  510.     function check(){
  511.         let totalChargingRate = Number(chargingRate1) + Number(chargingRate2) + Number(chargingRate3)
  512.         if (totalChargingRate > 221){
  513.             admin.database().ref("/ChargingStation3/CanBeSupplied").set(0);
  514.         } else if (totalChargingRate <= 221) {
  515.             admin.database().ref("/ChargingStation3/CanBeSupplied").set(1);
  516.         }
  517.     }
  518.  
  519.     fetchRate1();
  520.    
  521. })
  522.  
  523. // Algorithm 2 for Station 3 Setting Relays and AC Dimmer Values
  524. exports.station3_values = functions.database.ref('/ChargingStation3/CanBeSupplied').onUpdate(event => {
  525.     let chargingRate3, CanBeSupplied;
  526.  
  527.     // Checks if CanBeSupplied is true, if true sets relay on and continue
  528.     function getCanBeSupplied(){
  529.         admin.database().ref("/ChargingStation3/station3Relay").set("OFF");
  530.         admin.database().ref('/ChargingStation3/CanBeSupplied').once('value').then((snapshot)=>{
  531.             CanBeSupplied = snapshot.val();
  532.             if (CanBeSupplied === 1){
  533.                 admin.database().ref("/ChargingStation3/station3Relay").set("ON");
  534.                 getChargingRate();
  535.             }
  536.             return 1;
  537.         }).catch(error => {
  538.             console.error(error);
  539.             res.error(10);
  540.         });
  541.     }
  542.  
  543.     // Gets charging rate
  544.     function getChargingRate(){
  545.         admin.database().ref('/ChargingStation3/ChargingRate').once('value').then((snapshot)=>{
  546.             chargingRate3 = snapshot.val();
  547.             setValues()
  548.             return 1;
  549.         }).catch(error => {
  550.             console.error(error);
  551.             res.error(10);
  552.         });
  553.     }
  554.  
  555.     // Sets AC dimmer value according to charging rate
  556.     function setValues(){
  557.         if (chargingRate3 === "47"){
  558.             admin.database().ref("/ChargingStation3/AC_dimmer_value").set(110);
  559.         } else if (chargingRate3 === "67"){
  560.             admin.database().ref("/ChargingStation3/AC_dimmer_value").set(150);
  561.         } else if (chargingRate3 === "87"){
  562.             admin.database().ref("/ChargingStation3/AC_dimmer_value").set(255);
  563.         } else {
  564.             admin.database().ref("/ChargingStation3/AC_dimmer_value").set(1);
  565.         }
  566.     }
  567.  
  568.     getCanBeSupplied();
  569. })
  570.  
  571. // Algorithm 3 for Station 3 Completion Time
  572. exports.station3_time = functions.database.ref('/ChargingStation3/CanBeSupplied').onUpdate(event => {
  573.  
  574.     let startingPercentage, endingPercentage, batteryCapacity, time, chargingRate3;
  575.  
  576.     // Gets starting percentage
  577.     function fetchStartingPercentage(){
  578.         admin.database().ref('/ChargingStation3/StartingPercentage').once('value').then((snapshot)=>{
  579.             startingPercentage = snapshot.val();
  580.             fetchEndingPercentage();
  581.             return 1;
  582.         }).catch(error => {
  583.             console.error(error);
  584.             res.error(10);
  585.         });
  586.     }
  587.  
  588.     // Gets ending percentage
  589.     function fetchEndingPercentage(){
  590.         admin.database().ref('/ChargingStation3/EndingPercentage').once('value').then((snapshot)=>{
  591.             endingPercentage = snapshot.val();
  592.             fetchBatteryCapacity();
  593.             return 1;
  594.         }).catch(error => {
  595.             console.error(error);
  596.             res.error(10);
  597.         });    
  598.     }
  599.  
  600.     // Gets battery capacity
  601.     function fetchBatteryCapacity(){
  602.         admin.database().ref('/ChargingStation3/BatteryCapacity').once('value').then((snapshot)=>{
  603.             batteryCapacity = snapshot.val();
  604.             getChargingRate();
  605.             return 1;
  606.         }).catch(error => {
  607.             console.error(error);
  608.             res.error(10);
  609.         });
  610.     }
  611.  
  612.     // Gets charging rate
  613.     function getChargingRate(){
  614.         admin.database().ref('/ChargingStation3/ChargingRate').once('value').then((snapshot)=>{
  615.             chargingRate3 = snapshot.val();
  616.             computeTime()
  617.             return 1;
  618.         }).catch(error => {
  619.             console.error(error);
  620.             res.error(10);
  621.         });
  622.     }
  623.  
  624.     // Calculates time in total seconds
  625.     function computeTime(){
  626.         let startingCharge = startingPercentage * batteryCapacity;
  627.         endingPercentage = Number(endingPercentage);
  628.         let endingCharge = endingPercentage * batteryCapacity;
  629.         let totalCharge = endingCharge - startingCharge;
  630.         time = Math.round(totalCharge / Number(chargingRate3)); // time is set in secs
  631.         admin.database().ref("/ChargingStation3/time").set(time);
  632.         computeFinishTime();
  633.     }
  634.  
  635.     // Calculates time in minutes and seconds
  636.     function computeFinishTime(){      
  637.         let minutes = Math.floor(time / 60);
  638.         let seconds = time - minutes * 60;
  639.         admin.database().ref("/ChargingStation3/minutes").set(minutes);
  640.         admin.database().ref("/ChargingStation3/seconds").set(seconds);
  641.     }
  642.        
  643.     fetchStartingPercentage();
  644.    
  645. })
  646.  
  647. // Algorithm 4 for Station 3 Payment Amount
  648. exports.station3_payment = functions.database.ref('/ChargingStation3/time').onUpdate(event => {
  649.     let chargingRate3, time;
  650.    
  651.     // Gets charging rate
  652.     function getChargingRate(){
  653.         admin.database().ref('/ChargingStation3/ChargingRate').once('value').then((snapshot)=>{
  654.             chargingRate3 = snapshot.val();
  655.             fetchTime();
  656.             return 1;
  657.         }).catch(error => {
  658.             console.error(error);
  659.             res.error(10);
  660.         });
  661.     }
  662.  
  663.     // Gets time in total seconds
  664.     function fetchTime(){
  665.         admin.database().ref('/ChargingStation3/time').once('value').then((snapshot)=>{
  666.             time = snapshot.val();
  667.             computePayment()
  668.             return 1;
  669.         }).catch(error => {
  670.             console.error(error);
  671.             res.error(10);
  672.         });
  673.     }
  674.  
  675.     // Calculates payment amount
  676.     function computePayment(){
  677.         let chargingCost = 0;
  678.         if (chargingRate3 === "87"){
  679.             chargingCost = 0.8;
  680.         } else if (chargingRate3 === "67"){
  681.             chargingCost = 0.6;
  682.         } else if (chargingRate3 === "47"){
  683.             chargingCost = 0.4;
  684.         }
  685.         let paymentAmount = chargingCost * time;
  686.         paymentAmount = paymentAmount.toFixed(2);
  687.         admin.database().ref("/ChargingStation3/payment").set(paymentAmount);
  688.     }
  689.  
  690.     getChargingRate();
  691. })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement