Restart Aplikacji po dodaniu czujników ds18b20

alankedzior
Posts: 69
Joined: Mon Jun 18, 2018 5:38 pm

Thu Sep 06, 2018 5:05 pm

Witam mam taki problem, dodałem do mojego programu czujniki temp. ds18b20 aplikacja po chwili zalogowania widzi je, chwię działa reaguje na wszystkie przyciski, lecz po chwili następuje restart i cała procedura łączenia trwa na nowo, przy okazji mam jeszcze pytanie jak zrobić (jaki kanał stworzyć do czujnika zamknięcia bramy garażowej)
User avatar
pzygmunt
Posts: 4986
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Contact:

Thu Sep 06, 2018 5:33 pm

Wrzuć kod
alankedzior
Posts: 69
Joined: Mon Jun 18, 2018 5:38 pm

Thu Sep 06, 2018 7:24 pm

Code: Select all


#include <SPI.h>
#include <Ethernet.h>
#include <SuplaDevice.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define BTN_COUNT 20


OneWire oneWire(41);
DallasTemperature sensors(&oneWire);

DeviceAddress DS18B20_1 = { 0x28, 0xAA, 0x28, 0xB, 0x12, 0x13, 0x2, 0xDF };       // termometr szafa sterownicza
DeviceAddress DS18B20_2 = { 0x28, 0xAA, 0x52, 0x8, 0x12, 0x13, 0x2, 0x87 };       // termometr garaż
DeviceAddress DS18B20_3 = { 0x28, 0xF9, 0x4B, 0x55, 0x1A, 0x13, 0x1, 0xFD };      // termometr front
DeviceAddress DS18B20_4 = { 0x28, 0xFF, 0x99, 0x4B, 0x60, 0x17, 0x4, 0x3E };       // termometr 
DeviceAddress DS18B20_5 = { 0x28, 0xFF, 0x82, 0x52, 0x60, 0x17, 0x4, 0x99 };       // termometr 
DeviceAddress DS18B20_6 = { 0x28, 0xFF, 0x76, 0x52, 0x60, 0x17, 0x4, 0x20 };      // termometr 


// DS18B20 Sensor read implementation
double get_temperature(int channelNumber, double last_val) {

    double t = -275;
    
    if ( sensors.getDeviceCount() > 0 )
      {
         sensors.requestTemperatures();
         switch(channelNumber)

          {
            case 0:
                   
                    t = sensors.getTempC(DS18B20_1); 
                    break;
            case 1:
                    t = sensors.getTempC(DS18B20_2);
                    break;
            case 2:
                    t = sensors.getTempC(DS18B20_3);
                    break;

            case 3:
                  t = sensors.getTempC(DS18B20_4);
                    break;  
              case 4:
                    t = sensors.getTempC(DS18B20_5);
                    break;
              case 5:
                    t = sensors.getTempC(DS18B20_6);
                    break;
              
          
             };
      };

    return t;  
}

typedef struct {
  int pin;
  int relay_pin;
  int channel;
  char last_val;
  unsigned long last_time;
} _btn_t;

_btn_t btn[BTN_COUNT];

void supla_timer() {
  char v;
  unsigned long now = millis();
  
  
  for(int a=0;a<BTN_COUNT;a++)
    if (btn[a].pin > 0) {
        v = digitalRead(btn[a].pin);
        if (v != btn[a].last_val && now - btn[a].last_time ) {
           btn[a].last_val = v;
           btn[a].last_time = now;
           if (v==0)
             {
                 if ( digitalRead(btn[a].relay_pin) > 0 ) {
                  SuplaDevice.relayOff(btn[a].channel);
                 } else {
                  SuplaDevice.relayOn(btn[a].channel, 0);
                 }        
             }
        }
  
    }
}

void supla_btn_init() {
  for(int a=0;a<BTN_COUNT;a++)
    if (btn[a].pin > 0) {
        pinMode(btn[a].pin, INPUT_PULLUP); 
        btn[a].last_val = digitalRead(btn[a].pin);
        btn[a].last_time = millis();
    }
}



void setup() {

  Serial.begin(9600);
  

  // Init DS18B20 library 
  sensors.begin();
  
  // Set temperature callback
  SuplaDevice.setTemperatureCallback(&get_temperature);
 
 
 
  // Replace the falowing GUID
  char GUID[SUPLA_GUID_SIZE] = {GUID};
  // with GUID that you can retrieve from https://www.supla.org/arduino/get-guid


  // Ethernet MAC address
  uint8_t mac[6] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05};


SuplaDevice.addDS18B20Thermometer();                        // kanał 0 termometr szafa sterownicza
SuplaDevice.addDS18B20Thermometer();                        // kanał 1 termometr garaż
SuplaDevice.addDS18B20Thermometer();                        // kanał 2 termometr front
SuplaDevice.addDS18B20Thermometer();                        // kanał 3 termometr 
SuplaDevice.addDS18B20Thermometer();                        // kanał 4 termometr 
SuplaDevice.addDS18B20Thermometer();                        // kanał 5 termometr 
SuplaDevice.addRollerShutterRelays(0, 1, true);                // kanal 6 testowy 
SuplaDevice.addRelay(2);                                      // kanal 7    lampa front k12
SuplaDevice.addRelay(3);                                      // kanal 8    lampa taras  k11
SuplaDevice.addRelay(4);                                      // kanal  9   lampa kotłownia k14
SuplaDevice.addRelay(5);                                      // kanal 10    kinkiety salon k15
SuplaDevice.addRelay(6);                                      // kanal 11    lampa piwnica k16
SuplaDevice.addRelay(7,true);                                      // kanal 12   lampa płot k01
SuplaDevice.addRelay(8);                                      // kanal 13    kuchnia Led k17
SuplaDevice.addRelay(21);                                      // kanal 14    salon led k21
SuplaDevice.addRelay(11,true);                                      // kanal 15   girlanda k02
SuplaDevice.addRelay(12);                                      // kanal 16    brama wjazd otworz kdc11
SuplaDevice.addRelay(13);                                      // kanal 17    brama wjazd zamknij  kdc12 
SuplaDevice.addRelay(14);                                      // kanal 18    akwarium k22
SuplaDevice.addRelay(15);                                      // kanal 19    brama wjazd 2 otworz 
SuplaDevice.addRelay(16);                                      // kanal 20    brama wjazd 2 zamknij kdc14
SuplaDevice.addRelay(17);                                      // kanal 21   gniazdo salon 1 (lampa)
SuplaDevice.addRelay(18);                                      // kanal 22   gniazdo salon 2 (choinka ) k24
SuplaDevice.addRelay(42);                                      // kanal 23   taras led k25
SuplaDevice.addRelay(28);                                      // kanal 24   brama garaz kdc22
SuplaDevice.addRelay(39);                                      // kanal 25   furtka kdc21
SuplaDevice.addRelay(40,true);                                      // kanal 26   lampy zewnetrzne k03

                           




   
  SuplaDevice.begin(GUID,              // Global Unique Identifier 
                    mac,               // Ethernet MAC address
                    "svr10.supla.org",  // SUPLA server address
                    ----,                // Location ID 
                    "----");           // Location Password 


  
  memset(btn, 19, sizeof(btn));
  
  btn[0].pin = 20;                       // przycisk front s2
  btn[0].relay_pin = 2;                 // przekaznik front k12   
  btn[0].channel = 7;                    // numer kanału

  btn[1].pin = 19;                       // przycisk lampa taras  s1
  btn[1].relay_pin = 3;                 // przekaznik lampa taras  k11  
  btn[1].channel = 8;                    // numer kanału

  btn[2].pin = 43 ;                       // przycisk lampa kotłownia s18
  btn[2].relay_pin = 4;                 // przekaznik lampa kotłownia k14  
  btn[2].channel = 9;                    // numer kanału

   btn[3].pin = 22 ;                       // przycisk kinkiety salon s7
  btn[3].relay_pin = 5;                 // przekaznik kinkiety salon k15  
  btn[3].channel = 10;                    // numer kanału

 btn[4].pin = 44 ;                       // przycisk piwnica s17
  btn[4].relay_pin = 6;                 // przekaznik lampa piwnica k16  
  btn[4].channel = 11;                    // numer kanału

  btn[5].pin =9  ;                       // przycisk lampa płot s4
  btn[5].relay_pin = 7;                 // przekaznik lampa plot k01  
  btn[5].channel = 12;                    // numer kanału

    btn[6].pin =23  ;                       // przycisk kuchnia led s8
  btn[6].relay_pin = 8;                 // przekaznik kuchnia led k17  
  btn[6].channel = 13;                    // numer kanału

btn[7].pin =24  ;                       // przycisk salon led s9
  btn[7].relay_pin = 21;                 // przekaznik salon led  k21 
  btn[7].channel = 14;                    // numer kanału

  btn[8].pin =46  ;                       // przycisk girlanda s6
  btn[8].relay_pin = 11;                 // przekaznik girlanda k02
  btn[8].channel = 15;                    // numer kanału


   btn[9].pin =0  ;                       // przycisk brama 
  btn[9].relay_pin = 0;                 // przekaznik brama wirtualny
  btn[9].channel =16 ;                    // numer kanału


  btn[10].pin =0  ;                       // przycisk brama
  btn[10].relay_pin = 0;                 // przekaznik brama wirtualny
  btn[10].channel = 17;                    // numer kanału

btn[11].pin =29  ;                       // przycisk akwarium s11
  btn[11].relay_pin =14 ;                 // przekaznik akwarium k22
  btn[11].channel = 18;                    // numer kanału

   btn[12].pin =0  ;                       // przycisk brama 
  btn[12].relay_pin = 0;                 // przekaznik brama wirtualny
  btn[12].channel =19 ;                    // numer kanału


  btn[13].pin =0  ;                       // przycisk brama
  btn[13].relay_pin = 0;                 // przekaznik brama wirtualny
  btn[13].channel = 20;                    // numer kanału

   btn[14].pin =48  ;                       // przycisk gniazdo salon 1 (lampa)s12
  btn[14].relay_pin = 17;                 // przekaznik gniazdo salon 1(lampa) k23
  btn[14].channel = 21;                    // numer kanału

  btn[15].pin =47  ;                       // przycisk gniazdo salon 2 (choinka )s13
  btn[15].relay_pin = 18;                 // przekaznik gniazdo salon 2( choinka) k24
  btn[15].channel = 22;                    // numer kanału

    btn[16].pin =49  ;                       // przycisk taras led s14
  btn[16].relay_pin = 42;                 // przekaznik taras led k25
  btn[16].channel = 23;                    // numer kanału

  
    btn[17].pin =0  ;                       // przycisk brama garaz wirtualny
  btn[17].relay_pin = 0;                 // przekaznik brama garaz wirtualny
  btn[17].channel = 24;                    // numer kanału

btn[18].pin =45  ;                       // przycisk furtki 
  btn[18].relay_pin = 39;                 // przekaznik furtka kdc21
  btn[18].channel = 25;                    // numer kanału

  
btn[19].pin =25  ;                       // przycisk lampy zewnatrz s10 
  btn[19].relay_pin = 40;                 // przekaznik lampy zewnetrzne k03
  btn[19].channel = 26;                    // numer kanału


  
 
  



  
  supla_btn_init();
  SuplaDevice.setTimerFuncImpl(&supla_timer);
        
  
 
    
}

void loop() {
  SuplaDevice.iterate();
  

}
alankedzior
Posts: 69
Joined: Mon Jun 18, 2018 5:38 pm

Thu Sep 06, 2018 7:40 pm

Zauważyłem, że aplikacja nie restaruje się gdy nie używam żadnego przycisku w aplikacji. Po dłuższym nie użytkowaniu wystarczy niekiedy włączyć jeden odbionik i następuje restart, gdy nic nie robię termometry trzymają wartości.
alankedzior
Posts: 69
Joined: Mon Jun 18, 2018 5:38 pm

Wed Sep 19, 2018 11:16 am

Nikt nic?
User avatar
slawek
Posts: 2075
Joined: Mon Mar 14, 2016 11:48 pm
Location: Biała Podlaska

Wed Sep 19, 2018 5:49 pm

alankedzior wrote:
Wed Sep 19, 2018 11:16 am
Nikt nic?
Zobacz to:
viewtopic.php?f=11&t=3759&start=70
Gdy wszystkie możliwe sposoby zawiodą - pozostaje przeczytać instrukcję...
alankedzior
Posts: 69
Joined: Mon Jun 18, 2018 5:38 pm

Wed Sep 19, 2018 7:53 pm

tylko, że ja nie używam ESP
User avatar
slawek
Posts: 2075
Joined: Mon Mar 14, 2016 11:48 pm
Location: Biała Podlaska

Wed Sep 19, 2018 8:04 pm

alankedzior wrote:
Wed Sep 19, 2018 7:53 pm
tylko, że ja nie używam ESP
Fakt - nie zwróciłem uwagi na ten "szczegół"... :oops:
Gdy wszystkie możliwe sposoby zawiodą - pozostaje przeczytać instrukcję...
alankedzior
Posts: 69
Joined: Mon Jun 18, 2018 5:38 pm

Wed Sep 26, 2018 7:38 pm

czy problem mogą robić dodane termometry, lecz fizycznie nie podłączone ?
Dodałem 6 czujek ds18b20 z czego narazie podłączonych miałem tylko 3 reszta narazie czeka na podłączenie a są wrzucone do programu, żeby nie przestawiać znowu póżniej kanałów w cloudzie ich narazie nie konfigurowałem

Sam program bez obsługi termometrów się nie restartował.
User avatar
pzygmunt
Posts: 4986
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Contact:

Thu Sep 27, 2018 7:30 am

Może blokujesz procesor zbyt długi czas przy odczycie. To powoduje brak czasu na obsługę Ethernetu.
Post Reply