ESP8266 Primary GUI

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

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.
https://gui-generic-builder.supla.io/
Patryk
Posty: 2692
Rejestracja: pn sty 07, 2019 7:51 pm
Lokalizacja: Rybnik

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: 5199
Rejestracja: pt lis 16, 2018 7:25 am
Kontakt:

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
https://gui-generic-builder.supla.io/
Patryk
Posty: 2692
Rejestracja: pn sty 07, 2019 7:51 pm
Lokalizacja: Rybnik

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

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.
e-talking............
Byłem tam - Supla Offline Party 2023
George2002
Posty: 188
Rejestracja: pn maja 01, 2017 2:00 am

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

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 ;)
https://gui-generic-builder.supla.io/
Patryk
Posty: 2692
Rejestracja: pn sty 07, 2019 7:51 pm
Lokalizacja: Rybnik

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

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

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

Wróć do „Nowości”