ESP8266 Primary GUI

krycha88
Posty: 620
Rejestracja: pt lis 16, 2018 7:25 am

pn sie 19, 2019 11:57 pm

Patryk pisze:
pn sie 19, 2019 7:59 pm
Prośba o pomoc.
Co należy zmienić (zmodyfikować), aby przycisk monostabilny, włączał przekaźnik podczas "wciśnięcia". a nie dopiero jak się go zwalnia.

Kod: Zaznacz cały

void SuplaDeviceClass::iterate_relaybutton(SuplaChannelPin *pin, TDS_SuplaDeviceChannel_B *channel, unsigned long time_diff, int channel_number) {  
  
   if ( channel->Type == SUPLA_CHANNELTYPE_RELAY ){
     int state;
    
     uint8_t val = suplaDigitalRead(channel->Number, pin->pin2);
         
       if ( pin->start == 0) {
         if ( pin->flag == RELAY_FLAG_RESTORE && Params.cb.read_supla_relay_state != 0) {
          state = Params.cb.read_supla_relay_state(channel->Number);
          channelSetValue(channel->Number, state, 0);
          //Serial.print("channel->Number-"); Serial.print(channel->Number); Serial.print("=="); Serial.println(state); 
         }
         else {
          uint8_t val1 = suplaDigitalRead(channel->Number, pin->pin1);
          //channelValueChanged(channel->Number, val1 == HIGH ? 1 : 0); 
          channelSetValue(channel->Number, val1 == HIGH ? 1 : 0, 0);
         }
        pin->start = 1; 
        
       } else {
        if ( val != pin->last_val && millis()-pin->time_left >= 200 ) {
          if(val == 1 && val != pin->last_val){   
       
            relaySwitch(channel->Number, pin->pin1);  
              
          }
          else if (val == 0 && val != pin->last_val){
       
            if(pin->type == INPUT_TYPE_BTN_BISTABLE){
        
            relaySwitch(channel->Number, pin->pin1);
                
            }     
          } 
        pin->time_left = millis();
        pin->last_val = val;
      }
    }   
  }   
}
Nie masz co modyfikować tylko zaloguj się na IP urządzenia i zmień tryb pracy przycisku.
Patryk
Posty: 631
Rejestracja: pn sty 07, 2019 7:51 pm

wt sie 20, 2019 1:11 am

krystianmen pisze:
pn sie 19, 2019 11:57 pm
Patryk pisze:
pn sie 19, 2019 7:59 pm
Prośba o pomoc.
Co należy zmienić (zmodyfikować), aby przycisk monostabilny, włączał przekaźnik podczas "wciśnięcia". a nie dopiero jak się go zwalnia.

Kod: Zaznacz cały

void SuplaDeviceClass::iterate_relaybutton(SuplaChannelPin *pin, TDS_SuplaDeviceChannel_B *channel, unsigned long time_diff, int channel_number) {  
  
   if ( channel->Type == SUPLA_CHANNELTYPE_RELAY ){
     int state;
    
     uint8_t val = suplaDigitalRead(channel->Number, pin->pin2);
         
       if ( pin->start == 0) {
         if ( pin->flag == RELAY_FLAG_RESTORE && Params.cb.read_supla_relay_state != 0) {
          state = Params.cb.read_supla_relay_state(channel->Number);
          channelSetValue(channel->Number, state, 0);
          //Serial.print("channel->Number-"); Serial.print(channel->Number); Serial.print("=="); Serial.println(state); 
         }
         else {
          uint8_t val1 = suplaDigitalRead(channel->Number, pin->pin1);
          //channelValueChanged(channel->Number, val1 == HIGH ? 1 : 0); 
          channelSetValue(channel->Number, val1 == HIGH ? 1 : 0, 0);
         }
        pin->start = 1; 
        
       } else {
        if ( val != pin->last_val && millis()-pin->time_left >= 200 ) {
          if(val == 1 && val != pin->last_val){   
       
            relaySwitch(channel->Number, pin->pin1);  
              
          }
          else if (val == 0 && val != pin->last_val){
       
            if(pin->type == INPUT_TYPE_BTN_BISTABLE){
        
            relaySwitch(channel->Number, pin->pin1);
                
            }     
          } 
        pin->time_left = millis();
        pin->last_val = val;
      }
    }   
  }   
}
Nie masz co modyfikować tylko zaloguj się na IP urządzenia i zmień tryb pracy przycisku.
Z Wielkim SZACUNKIEM, chciałbym Ci  PODZIĘKOWAĆ , za modyfikacje biblioteki SUPLADEVICE.
Wgrałem soft do sonoffa th16, i przycisk ( oryginalny) dopiero przełącza przekaźnik po "puszczeniu".
Dlatego  moje pytanie, jak "zrobić", żeby  zmiana przekaźnika następowała w chwili "wciśnięcia" przycisku ( wybrałem w konfiguracji " monostabilny " ),  a nie dopiero  jak go " puszczam"
krycha88
Posty: 620
Rejestracja: pt lis 16, 2018 7:25 am

wt sie 20, 2019 7:21 pm

Patryk pisze:
wt sie 20, 2019 1:11 am
krystianmen pisze:
pn sie 19, 2019 11:57 pm
Patryk pisze:
pn sie 19, 2019 7:59 pm
Prośba o pomoc.
Co należy zmienić (zmodyfikować), aby przycisk monostabilny, włączał przekaźnik podczas "wciśnięcia". a nie dopiero jak się go zwalnia.

Kod: Zaznacz cały

void SuplaDeviceClass::iterate_relaybutton(SuplaChannelPin *pin, TDS_SuplaDeviceChannel_B *channel, unsigned long time_diff, int channel_number) {  
  
   if ( channel->Type == SUPLA_CHANNELTYPE_RELAY ){
     int state;
    
     uint8_t val = suplaDigitalRead(channel->Number, pin->pin2);
         
       if ( pin->start == 0) {
         if ( pin->flag == RELAY_FLAG_RESTORE && Params.cb.read_supla_relay_state != 0) {
          state = Params.cb.read_supla_relay_state(channel->Number);
          channelSetValue(channel->Number, state, 0);
          //Serial.print("channel->Number-"); Serial.print(channel->Number); Serial.print("=="); Serial.println(state); 
         }
         else {
          uint8_t val1 = suplaDigitalRead(channel->Number, pin->pin1);
          //channelValueChanged(channel->Number, val1 == HIGH ? 1 : 0); 
          channelSetValue(channel->Number, val1 == HIGH ? 1 : 0, 0);
         }
        pin->start = 1; 
        
       } else {
        if ( val != pin->last_val && millis()-pin->time_left >= 200 ) {
          if(val == 1 && val != pin->last_val){   
       
            relaySwitch(channel->Number, pin->pin1);  
              
          }
          else if (val == 0 && val != pin->last_val){
       
            if(pin->type == INPUT_TYPE_BTN_BISTABLE){
        
            relaySwitch(channel->Number, pin->pin1);
                
            }     
          } 
        pin->time_left = millis();
        pin->last_val = val;
      }
    }   
  }   
}
Nie masz co modyfikować tylko zaloguj się na IP urządzenia i zmień tryb pracy przycisku.
Z Wielkim SZACUNKIEM, chciałbym Ci  PODZIĘKOWAĆ , za modyfikacje biblioteki SUPLADEVICE.
Wgrałem soft do sonoffa th16, i przycisk ( oryginalny) dopiero przełącza przekaźnik po "puszczeniu".
Dlatego  moje pytanie, jak "zrobić", żeby  zmiana przekaźnika następowała w chwili "wciśnięcia" przycisku ( wybrałem w konfiguracji " monostabilny " ),  a nie dopiero  jak go " puszczam"
Myślę, że inni wnieśli dużo dużo więcej w rozwój niż ja ;)

Wrzuciłem Ci poprawkę zobacz sobie jak to działa:
https://github.com/krycha88/SuplaDevice/tree/dev
Patryk
Posty: 631
Rejestracja: pn sty 07, 2019 7:51 pm

wt sie 20, 2019 7:53 pm

Działa !!!.
Dziękuję. :D
Może "wrzuć" całą bibliotekę na oficjalny github (pull requests).
Awatar użytkownika
uchnast.michal
Posty: 195
Rejestracja: wt cze 04, 2019 11:37 am
Lokalizacja: Czeladź
Kontaktowanie:

śr sie 21, 2019 4:35 pm

Przyłączę się do dyskusji, mam 2 pytania.
1. Jak wprowadza się w tryb konfiguracji?
2. By pominąć etap konfiguracji, uzupełniłem Config_Wifi_name, Config_Wifi_pass, SUPLA server addres, Location ID i hasło. Niestety to nie działa :( W logach portu "Connection fail. Server: xxx". Serwer i hasło jako string w "" natomiast id jako int.
Z góry dzięki za odp.
George2002
Posty: 121
Rejestracja: pn maja 01, 2017 2:00 am

śr sie 21, 2019 5:36 pm

Niby dwa razy reset szybki przyciskiem ale nie potwierdzę bo działam na Sonoff touch a tam nie ma przycisku reset :D
krycha88
Posty: 620
Rejestracja: pt lis 16, 2018 7:25 am

czw sie 22, 2019 8:40 am

George2002 pisze:
śr sie 21, 2019 5:36 pm
Niby dwa razy reset szybki przyciskiem ale nie potwierdzę bo działam na Sonoff touch a tam nie ma przycisku reset :D
Jak chcesz mogę Ci przygotować kod gdzie będzie możliwość uruchomienia trybu konfiguracji po przez przytrzymania np. 5 sekund przycisku i nie będzie musiał być to reset ;)
Patryk
Posty: 631
Rejestracja: pn sty 07, 2019 7:51 pm

czw sie 22, 2019 8:58 am

Jak Byś mógł, również by mnie to interesowało.
cino111
Posty: 710
Rejestracja: pn maja 07, 2018 8:00 pm

czw sie 22, 2019 9:00 am

Ja tez, ja tez.
Rafaello
Posty: 67
Rejestracja: ndz maja 29, 2016 1:34 pm

czw sie 22, 2019 9:12 am

Panowie pomóżcie

Skrypt kompiluje się, ładnie wgrywa, przechodzi do trybu konfiguracji, wszystko się zapisuje, łączy się z punktem dostępowym a za chwilkę zrywa połączenie i tak w kółko, oczywiście nie widać go w Cloudzie. Mam różnych układów działających na Supli chyba kilkadziesiąt, większość na gotowym firmware, jednakże dla konkretnych potrzeb lepsze jest tworzenie własnego tak aby nie zaśmiecać w Cloud niepotrzebnymi wyjściami. Obecny skrypt to dwa przekaźniki w tym jeden RELAYBUTTON, jeden sensor oraz DALLAS, testuje na MEMOS D1 Mini.

z góry dzięki za wszelakie wskazówki.
ODPOWIEDZ