Advertisement
ViliusJ93

Untitled

Sep 8th, 2017
1,281
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2. Garažo programa su vonios kaitinimu
  3. 4 vnt temperatūros jutikliu
  4. vieno laipsnio tikslumu temperaturos atvaizdavimas blynk
  5. Vonios išjungimas pasiekus perkaitimu skaiciu
  6.  
  7. */
  8.  
  9. #include <ESP8266WiFi.h>
  10. #include <BlynkSimpleEsp8266.h>
  11.  
  12. #include <OneWire.h>
  13. #include <DallasTemperature.h>
  14. #include <SimpleTimer.h>
  15.  
  16. //      BLYNK SPALVOS
  17. #define BLYNK_GREEN     "#23C48E"
  18. #define BLYNK_BLUE      "#04C0F8"
  19. #define BLYNK_YELLOW    "#ED9D00"
  20. #define BLYNK_RED       "#D3435C"
  21. #define BLYNK_DARK_BLUE "#5F7CD8"
  22.  
  23. //f2a9c05ce8424633968c11a99a937db4 // Viliaus telefone
  24. //f22248caf6924878aae411ce93deb463 // Pauliaus garazo programa
  25. // Wi-Fi Ryšys BLYNK
  26.  
  27. //Paulius
  28. char auth[] = "f22248caf6924878aae411ce93deb463";
  29. char ssid[] = "ScaryLab";
  30. char pass[] = "1GarazaS";
  31.  //
  32.  
  33.  /*Vilius
  34. char auth[] = "f2a9c05ce8424633968c11a99a937db4";
  35. char ssid[] = "Horse_home";
  36. char pass[] = "samsung1993";
  37.  */
  38.  
  39. //  Pinai
  40. byte  ds_temp = 5;             //D1 Visi trys termometrai
  41. byte  dht_temp = 4;            //D2 Oro termometras ir drėgnomatis
  42. byte  gaisro_pin = 0;             //D3 Gaisro jutiklis
  43. byte  led = 2;                 //D4 Vidinis ledas
  44. byte  teno_valdymas = 15;      //D8 Teno įjungimas/ išjungimas
  45.  
  46. //  Kintamieji
  47. float dvt = 0;
  48. float mvt = 0;
  49. float tt = 0;
  50. float garazas_t = 0;
  51. float T_riba_virs = 45;        // reles isjungimo riba pagal temperatūra
  52. float T_riba_apac = 20;        // reles įjungimo riba pagal temperatūra
  53. float perkaitimo_temperatura = 0;
  54. float dvt_suma = 0;
  55. float mvt_suma = 0;
  56. float tt_suma = 0;
  57. float garazas_t_suma = 0;
  58.  
  59.  
  60.  
  61. boolean ged_dvt = 0;
  62. boolean ged_mvt = 0;
  63. boolean ged_tt = 0;
  64. boolean ged_garazas_t = 0;
  65.  
  66. boolean sistema_veikia;                         //įvyko gedimas, užgesinamas vidinis led
  67. boolean tenas_ijungtas = true;
  68. boolean ivyko_perkaitimas = false;
  69. boolean suveike_gaisras = false;
  70. boolean nebuvo_gaisro = true;
  71. boolean buves_led = false;
  72.  
  73.  
  74. byte surastu_ds18_kiekis = 0;
  75. byte perkaitimu_sk = 0;
  76. byte perkaitimu_auto_reset = 5;           // kiek sykiu pabandyti automatiškai ijungti teną nukritus temperatūrai iki apatines ribos
  77. byte praleidimo_nr = 0;
  78. byte perkaitimo_kodas = 0;                // 0 - nera perkaitimo, 1 - >T-riba, 2 - tt_gedimas, 3 - ir perkaito ir gedimas (neįvykdoma dėl -127)
  79. byte praleidimo_nr_t= 0;
  80.  
  81. int reset_mygtukas = 0;
  82. int suma_n = 0;
  83.  
  84. //  BLYNK "buve" kintamieji
  85. int delta_t=-1;      // minimalus temperatūros pokytis prieš siunčiant
  86. int buvo_v0=0;
  87. int buvo_v1=0;
  88. int buvo_v2=0;
  89. int buvo_v3=0;
  90. boolean buvo_v4=0;
  91. boolean buvo_v5=0;
  92. boolean buvo_v6=0;
  93. boolean buvo_v8=0;
  94. boolean buvo_v9=0;
  95. boolean buvo_v10=0;
  96.  
  97. /*-----( Declare objects )-----*/
  98. // Setup a oneWire instance to communicate with any OneWire devices
  99. OneWire oneWire(ds_temp);
  100.  
  101. // Pass our oneWire reference to Dallas Temperature.
  102. DallasTemperature sensors(&oneWire);
  103.  
  104. /*-----( Declare Variables )-----*/
  105. // Assign the addresses of your 1-Wire temp sensors.
  106. // See the tutorial on how to obtain these addresses:
  107. // http://www.hacktronics.com/Tutorials/arduino-1-wire-address-finder.html
  108.  
  109. DeviceAddress Did_v_t = { 0x28, 0x33, 0xE5, 0x5C, 0x06, 0x00, 0x00, 0xB9 };
  110. DeviceAddress Maz_v_t = { 0x28, 0xFE, 0xBA, 0x5B, 0x06, 0x00, 0x00, 0x10 };
  111. DeviceAddress Ten_t = { 0x28, 0xE6, 0x2B, 0x5C, 0x06, 0x00, 0x00, 0x16 };
  112. DeviceAddress Garazo_t = { 0x28, 0x8A, 0xB2, 0x6A, 0x06, 0x00, 0x00, 0xAD };
  113.  
  114. WidgetLED led1(V4);   //ivyko gaisras ledas
  115. WidgetLED led2(V5);   //Veikia teno rele
  116. WidgetLED led3(V6);   //Pasiekta automatiniu po perkaitime atstatymų riba
  117.  
  118. BLYNK_WRITE (V7) {
  119.   reset_mygtukas = param.asInt();
  120. }
  121.  
  122. SimpleTimer timer_blynk;
  123. SimpleTimer timer_serial_print;
  124.  
  125.  
  126. void setup() {
  127.     digitalWrite(led, HIGH);
  128.     digitalWrite(led, LOW);
  129.     delay(1000);
  130.     digitalWrite(led, HIGH);
  131.  
  132.   Serial.begin(250000);
  133.   // put your setup code here, to run once:
  134.   Serial.println("blynk auth");
  135.  
  136.   Blynk.begin(auth, ssid, pass); //pradedamas ryšys su blynk
  137.   Serial.println("TS auth ok");
  138.  
  139.   timer_blynk.setInterval(5000L, To_Blynk);
  140.   timer_serial_print.setInterval(2000L, Serial_spausdinimas);
  141.  
  142.  
  143.  
  144.   Serial.print("Initializing Temperature Control Library Version ");
  145.   Serial.println(DALLASTEMPLIBVERSION);
  146.  
  147.   // Initialize the Temperature measurement library
  148.   sensors.begin();
  149.  
  150.   // set the resolution to 10 bit (Can be 9 to 12 bits .. lower is faster)
  151.   sensors.setResolution(Did_v_t, 10);
  152.   sensors.setResolution(Maz_v_t, 10);
  153.   sensors.setResolution(Ten_t, 10);
  154.   sensors.setResolution(Garazo_t, 10);
  155.  
  156.  
  157.   // PinMode nustatymai
  158.   pinMode(gaisro_pin, INPUT);
  159.   pinMode(led, OUTPUT);
  160.   pinMode(teno_valdymas, OUTPUT);
  161.  
  162.  digitalWrite(led, HIGH);
  163.     digitalWrite(led, LOW);
  164.     delay(100);
  165.     digitalWrite(led, HIGH);
  166.  
  167. }
  168.  
  169. void loop() {
  170.  
  171.   // put your main code here, to run repeatedly:
  172.   //Serial.println("pradejo loop");
  173.   sistema_veikia = true;
  174.   Blynk.run(); // Initiates Blynk
  175.   timer_blynk.run();
  176.   timer_serial_print.run();
  177.  
  178.   // Tikrinama ar prisijungė, įjungiamas vidinis led
  179.   if (  !Blynk.connected() ) {
  180.     sistema_veikia = false;
  181.   }
  182.  
  183.   Temperaturos();
  184.        suma_n++;
  185.       dvt_suma += dvt;
  186.       mvt_suma += mvt;
  187.       tt_suma += tt;
  188.       garazas_t_suma += garazas_t;
  189.      
  190.  
  191.   // reles valdymas
  192.  
  193.   if (reset_mygtukas == 1) {
  194.     perkaitimu_sk = 0;
  195.   }
  196.  
  197.   suveike_gaisras = !digitalRead(gaisro_pin); //invertuojamas, kai 0 tai suveike jutiklis
  198.   if (Perkaitimas() == true || suveike_gaisras  == true  ) {
  199.     tenas_ijungtas = false ;
  200.   } else {
  201.    tenas_ijungtas = true ;
  202.   }
  203.  
  204.   if (tenas_ijungtas == true ){
  205.     digitalWrite(teno_valdymas, HIGH);
  206.   } else {
  207.     digitalWrite(teno_valdymas, LOW);
  208.   }
  209.  
  210.  
  211.   // gedimu pavaizdavimas su vidiniu led
  212.  
  213.   if (sistema_veikia == true) {
  214.     digitalWrite(led, LOW);
  215.   } else {
  216.     digitalWrite(led, HIGH);
  217.   }
  218.  
  219.  
  220.  
  221. }
  222.  
  223. int apvalinimas_i_int(float x){
  224.   int y=0;
  225.   if (x > 0){
  226.     x = x+0.5;
  227.   }
  228.   if (x < 0)
  229.    {
  230.     x = x-0.5;
  231.   }
  232.   x=round(x);
  233.   y = int(x);
  234.  
  235.   return y;
  236.  
  237.   }
  238.  
  239. boolean Perkaitimas() {
  240.  
  241.   boolean perkaito = false;
  242.  
  243.   // apsauga nuo perkaitimu
  244.   if (ivyko_perkaitimas == true) {          // tikrinama ar galima vel ijungti
  245.  
  246.     if (  tt < T_riba_apac && ged_tt == false   && perkaitimu_sk <= perkaitimu_auto_reset  ) {
  247.       perkaito = false;
  248.       ivyko_perkaitimas = false;
  249.       //Serial.println("tikrinama ar galima vel ijungti");
  250.     }
  251.  
  252.  
  253.  
  254.  
  255.   } else {                                //tikrinama ar reikia isjungti
  256.     /*
  257.       if (  tt  > T_riba_virs ||  ged_tt == true ) {
  258.       perkaito = true;
  259.       perkaitimu_sk = perkaitimu_sk + 1;
  260.       ivyko_perkaitimas = true;
  261.       //Serial.println("tikrinama ar reikia isjungti");
  262.       }*/
  263.  
  264.  
  265.     if (tt  > T_riba_virs) {
  266.       perkaitimo_kodas = 1;
  267.       perkaitimo_temperatura = tt;
  268.       perkaito = true;
  269.       perkaitimu_sk = perkaitimu_sk + 1;
  270.       ivyko_perkaitimas = true;
  271.     }
  272.     if (ged_tt == true) {
  273.       perkaitimo_kodas = 2;
  274.       perkaito = true;
  275.       perkaitimu_sk = perkaitimu_sk + 1;
  276.       ivyko_perkaitimas = true;
  277.  
  278.     }
  279.     if (  tt  > T_riba_virs &&  ged_tt == true ) {
  280.       perkaitimo_kodas = 3;
  281.     }
  282.   }
  283.  
  284.   return perkaito;
  285. }
  286.  
  287. void To_Blynk() {
  288.   /*
  289.      V0       DVT
  290.      V1       MVT
  291.      V2       TT
  292.      V3       garazas_t
  293.      V4       //ivyko gaisras ledas
  294.      V5       //Veikia teno rele
  295.      V6       //Pasiekta automatiniu po perkaitime atstatymų riba
  296.      V7
  297.      V8
  298.      V9
  299.      V10
  300.   */
  301.  
  302.  
  303.   String Pranesimas = "Klaidos: ";
  304.   boolean siusti_pranesima = false;
  305.  
  306.  
  307.   byte praleidmu_sk = 5; // praleidimu_sk*5s - kas kiek siunciami notification
  308.  
  309.   //    * Išvedimas i BLYNK
  310.  
  311. /*----------------------------------------  LED --------------------------------*/
  312. if (true){
  313.   if (suveike_gaisras ) {
  314.     led1.on();
  315.     siusti_pranesima = true;
  316.     Pranesimas = String(Pranesimas + " Gaisras | "  );
  317.   } else {
  318.     led1.off();
  319.   }
  320.  
  321.   if (tenas_ijungtas ) {
  322.     led2.on();
  323.  
  324.   } else {
  325.     siusti_pranesima = true;
  326.     // Pranesimas = String(Pranesimas + " Tenas_OFF | "  );
  327.     led2.off();
  328.   }
  329.  
  330.   if (perkaitimu_sk >= perkaitimu_auto_reset ) {
  331.     led3.on();
  332.     siusti_pranesima = true;
  333.     Pranesimas = String(Pranesimas + "Prtksito  " + perkaitimu_sk + " kartus | "  );
  334.   } else {
  335.     led3.off();
  336.   }
  337.  
  338. }
  339.  
  340. /*----------------------------------------  TEMPERATŪROS --------------------------------*/
  341.   if (praleidimo_nr_t > 6) {
  342.     praleidimo_nr_t = 0;
  343.  
  344.  
  345.  
  346. if(true){
  347.   int skirtumas = 0;
  348.   int vid_dvt = 0;
  349.   int vid_mvt = 0;
  350.   int vid_tt = 0;
  351.   int vid_garazas_t = 0;
  352.  
  353.   vid_dvt = apvalinimas_i_int(dvt_suma / suma_n);
  354.   vid_mvt = apvalinimas_i_int(mvt_suma / suma_n);
  355.   vid_tt = apvalinimas_i_int(tt_suma / suma_n);
  356.   vid_garazas_t = apvalinimas_i_int(garazas_t_suma / suma_n);
  357.  
  358.   dvt_suma=0;
  359.   mvt_suma=0;
  360.   tt_suma=0;
  361.   garazas_t_suma=0;
  362.   suma_n=0;
  363.  
  364.   if (ged_dvt) {
  365.     siusti_pranesima = true;
  366.     Pranesimas = String(Pranesimas + " DVT |"  );
  367.   } else {
  368.     skirtumas = vid_dvt - buvo_v0;
  369.    if ( abs(skirtumas) > delta_t ){
  370.     Blynk.virtualWrite(V0, vid_dvt);
  371.     buvo_v0=vid_dvt;
  372.     }
  373.     //Blynk.virtualWrite(V0, dvt);
  374.   }
  375.  
  376.   if (ged_mvt) {
  377.     siusti_pranesima = true;
  378.     Pranesimas = String(Pranesimas + " MVT |"  );
  379.   } else {
  380.         skirtumas = vid_mvt - buvo_v1;
  381.    if ( abs(skirtumas) > delta_t ){
  382.     Blynk.virtualWrite(V1, vid_mvt);
  383.     buvo_v1=vid_mvt;
  384.    }
  385.     //Blynk.virtualWrite(V1, mvt);
  386.   }
  387.  
  388.  
  389.   if (ged_tt) {
  390.     siusti_pranesima = true;
  391.     Pranesimas = String(Pranesimas + " TT |"  );
  392.   } else {
  393.         skirtumas = vid_tt - buvo_v2;
  394.    if ( abs(skirtumas) > delta_t ){
  395.     Blynk.virtualWrite(V2, vid_tt);
  396.     buvo_v2=vid_tt;
  397.   }
  398.     //Blynk.virtualWrite(V2, tt);
  399.   }
  400.  
  401.   if (ged_garazas_t) {
  402.     siusti_pranesima = true;
  403.     Pranesimas = String(Pranesimas + " GaT |"  );
  404.   } else {
  405.         skirtumas = vid_garazas_t - buvo_v3;
  406.    if ( abs(skirtumas) > delta_t ){
  407.     Blynk.virtualWrite(V3, vid_garazas_t);
  408.     buvo_v3=vid_garazas_t;
  409.   }
  410.     //Blynk.virtualWrite(V3, garazas_t);
  411.   }
  412.  
  413. }
  414.  
  415.  } else {
  416.     praleidimo_nr_t++;
  417.  
  418.   }
  419.  
  420. /*----------------------------------------  KITI PRANEŠIMAI --------------------------------*/
  421. if(true){
  422.  
  423.   if (praleidimo_nr > praleidmu_sk) {
  424.     praleidimo_nr = 0;
  425.     if (siusti_pranesima) {
  426.       Blynk.notify(Pranesimas);
  427.     }
  428.   } else {
  429.     praleidimo_nr = praleidimo_nr + 1;
  430.  
  431.   }
  432.  
  433.  
  434.  
  435.  
  436. }
  437.  
  438. }
  439.  
  440. void Temperaturos() {
  441.   ged_dvt = 0;
  442.   ged_mvt = 0;
  443.   ged_tt = 0;
  444.   ged_garazas_t = 0;
  445.   float gedimo_riba = -127;
  446.   //float gedimo_t=333;
  447.  
  448.  
  449.  
  450.   // Command all devices on bus to read temperature
  451.  
  452.   sensors.requestTemperatures();
  453.   surastu_ds18_kiekis = sensors.getDeviceCount();
  454.  
  455.   dvt = sensors.getTempC(Did_v_t);
  456.   mvt = sensors.getTempC(Maz_v_t);
  457.   tt = sensors.getTempC(Ten_t);
  458.   garazas_t = sensors.getTempC(Garazo_t);
  459.  
  460.  
  461.   if (dvt == gedimo_riba) {
  462.     ged_dvt = 1;
  463.     //dvt=gedimo_t;
  464.   }
  465.   if (mvt == gedimo_riba) {
  466.     ged_mvt = 1;
  467.     //mvt=gedimo_t;
  468.   }
  469.   if (tt == gedimo_riba) {
  470.     ged_tt = 1;
  471.     //tt=gedimo_t;
  472.   }
  473.   if (garazas_t == gedimo_riba) {
  474.     ged_garazas_t = 1;
  475.     //garazas_t=gedimo_t;
  476.   }
  477.  
  478. }
  479.  
  480. void Serial_spausdinimas() {
  481.  
  482.   //apie temperatūras
  483.   Serial.println();
  484.   Serial.print("1. Surasta prietaisu:  ");
  485.   Serial.println(surastu_ds18_kiekis);
  486.  
  487.   Serial.print("2. Surasti termometrai: ");
  488.   Serial.print("Did.v.t: ");
  489.   Serial.print(ged_dvt);
  490.   Serial.print(" | Maz.v.t: ");
  491.   Serial.print(ged_mvt);
  492.   Serial.print(" | Teno.t: ");
  493.   Serial.print(ged_tt);
  494.   Serial.print(" | Garazo.t: ");
  495.   Serial.println(ged_garazas_t);
  496.  
  497.  
  498.   Serial.print("3. Did.v.t: ");
  499.   Serial.print(dvt);
  500.   Serial.print(" | Maz.v.t: ");
  501.   Serial.print(mvt);
  502.   Serial.print(" | Teno.t: ");
  503.   Serial.print(tt);
  504.   Serial.print(" | Garazo.t: ");
  505.   Serial.println(garazas_t);
  506.  
  507.   Serial.println("4.");
  508.  
  509.   Serial.print("5. Perkaitimu skaicius ");
  510.   Serial.println(perkaitimu_sk);
  511.   Serial.println("6.");
  512.   Serial.print("7. Perkaitimo priezastis ");
  513.   Serial.print(perkaitimo_kodas);
  514.   switch (perkaitimo_kodas) {               // 0 - nera perkaitimo, 1 - >T-riba, 2 - tt_gedimas, 3 - ir perkaito ir gedimas (neįvykdoma dėl -127) perkaitimo_temperatura
  515.     case 0:
  516.       break;
  517.     case 1:
  518.       Serial.print(" Temperatura -  ");
  519.       Serial.println(perkaitimo_temperatura);
  520.       perkaitimo_kodas = 0;
  521.       break;
  522.     case 2:
  523.       Serial.println("Dingo Teno termojutiklis");
  524.       perkaitimo_kodas = 0;
  525.       break;
  526.     case 3:
  527.       Serial.println("Dingo Teno termojutiklis ir virsyta riba ");
  528.       perkaitimo_kodas = 0;
  529.       break;
  530.   }
  531.   /*
  532. Serial.println("8.");
  533. Serial.println("9.");
  534. Serial.println("10.");
  535. Serial.println("11.");
  536. Serial.println("12.");
  537. Serial.println("13.");
  538. Serial.println("14.");
  539. */
  540. Serial.println();
  541. Serial.println();
  542. Serial.println();
  543. Serial.println();
  544. Serial.println();
  545. Serial.println();
  546. Serial.println(".");
  547. }
Advertisement
RAW Paste Data Copied
Advertisement