ESP8266 Primary GUI v2

User avatar
pzygmunt
Posts: 20302
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Been thanked: 59 times

Post

@michael chyba to jakoś mechanicznie rozwiązał
SUPLA.... Nareszcie w domu.
NetAs
Posts: 138
Joined: Mon May 28, 2018 7:06 am
Location: Wrocław

Post

On miał otwieranie do wewnątrz :?
Zybi
Posts: 1511
Joined: Sun Jun 26, 2016 4:24 pm

Post

NetAs wrote: Sat Oct 26, 2019 12:24 pm a jak zablokować stan czujnika poczty, aby jego stan był cały czas taki sam, dopóki nie naciśnie się buttona resetującego?
Scenariusz.
- ikonka poczty zamknięta
- ktoś wrzuca list, kontaktron jest na klapce od poczty (niestety klapka otwierana na zewnątrz),
- ikonka poczty zmienia stan na "jest list"
- po zamknięciu klapki od poczty ikonka się nie zmienia
- kliknięcie w button resetujący powoduje zmianę ikonki na zamkniętą
Byłą taka kompilacja softu GATE MEM, czyli sensor otwarcia z pamięcią stanu (do rygli otwarcia furtki z pamięcią). Może coś takiego by Ci pasowało?
User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 135 times
Been thanked: 137 times

Post

NetAs wrote: Sat Oct 26, 2019 12:51 pm On miał otwieranie do wewnątrz :?
W skrzynce na pewno jest klapka i drzwiczki. Możesz zrobić dwa kontaktrony: jeden do klapki aktywujący stan "jest list" i drugi na drzwiczkach zmieniający stan na "nie ma listu".
Jest to dość proste do implementacji.

Natomiast resetowanie stanu z aplikacji będzie bardziej skomplikowane - chyba żeby to podpiąć pod np otwieranie furtki. Ale trzeba by też trochę pokombinować
Najlepsze suple dla Twojego domu :mrgreen:
NetAs
Posts: 138
Joined: Mon May 28, 2018 7:06 am
Location: Wrocław

Post

już sobie poradziłem, zmieniłem trochę w kodzie i działa. Muszę poszukać gdzie zapisywany jest stan zapamiętania przekaźnika bo coś mi nie działa ten "Pamiętaj stan" :x
krycha88
Posts: 5575
Joined: Fri Nov 16, 2018 7:25 am
Been thanked: 5 times

Post

NetAs wrote: Sat Oct 26, 2019 3:02 pm już sobie poradziłem, zmieniłem trochę w kodzie i działa. Muszę poszukać gdzie zapisywany jest stan zapamiętania przekaźnika bo coś mi nie działa ten "Pamiętaj stan" :x
To pokaż co zmieniłeś, może komuś innemu się przyda :)

A dla jakiego GPIO ustawiasz przekaźnik?
https://gui-generic-builder.supla.io/
NetAs
Posts: 138
Joined: Mon May 28, 2018 7:06 am
Location: Wrocław

Post

To może od początku, po co to?
Chciałem zrobić otwieranie furtki (załączanie elektromagnesu na 6 sekund) oraz kontaktron aby wiedzieć czy furtka jest otwarta czy zamknięta. Niestety córka nie zamyka za sobą drzwi :oops: Na tym samym układzie czyli wemos D1 mini przy okazji czujnik skrzynki pocztowej z podświetleniem na niebiesko :lol: Skrzynka na listy ma klapkę otwieraną na zewnątrz więc otwieranie wykrywam przez drugi kontaktron. W środku przycisk resetujący stan czujnika poczty i dioda LED. Doprowadzenie do skrzynki na listy 6 żyłowy przewód od instalacji alarmowej, choć wykorzystane tylko 4 (dioda, kontaktron, button, masa).

PINY:
15 - relay (choć tutaj jest podpięta niebieska dioda LED do podświetlania)
4 - button resetujący monostabilny
16 - fizyczny relay, wyzwalany HIGH
99 - button wirtualny - nie używany
12 - kontaktron dla furtki
5 - kontaktron dla poczty

supla_board_configuration:

Code: Select all

add_Relay_Button(15, 4, CHOICE_TYPE);
add_Relay_Button(16, 99, CHOICE_TYPE);
add_Sensor(12);
add_Sensor(5);
Primary_GUI:

Code: Select all

int blokada = 0 //domyślny stan blokady czujnika poczty

int supla_DigitalRead(int channelNumber, uint8_t pin) {

  int result = digitalRead(pin);
  if(result ==  1 && pin == 5){
    blokada = 1;
    digitalWrite(15,1);
    return 1;
  }
  else
  if(result == 0 && pin == 5){
    if(blokada == 1){
      return 1;
    }
    else{
      return 0;
    }
  }
  else
  {
    return result;
  }
}

void supla_DigitalWrite(int channelNumber, uint8_t pin, uint8_t val) {

  if (pin == 4 && val == 0){ //reset
    SuplaDevice.channelValueChanged(3, 0); //na 3 kanale mam czujnik poczty
    digitalWrite(15, 0);
    blokada = 0;
  }
  else{
    digitalWrite(pin,val);
  }  
}

To tyle zmian, chciałem jeszcze wykryć "Pamiętaj stan" aby odpowiednio to obsłużyć, ale nie miałem czasu tego szukać.
Powiem Wam, że efekt wieczorem z podświetleniem na niebiesko robi wrażenie :lol:
Nie dawałem przycisku otwierającego furtkę ponieważ mam w domu button, a drugi mógłby być na słupku koło furtki, ale nie daję złodziejowi ułatwienia, że przeskoczy przez płot i sam sobie otworzy. Oczywiście każdorazowe otworzenie furki powoduje że Alexa do mnie mówi :)
krycha88
Posts: 5575
Joined: Fri Nov 16, 2018 7:25 am
Been thanked: 5 times

Post

to odczytania możesz użyć:
read_supla_relay_flag(nr kanału)
read_supla_relay_state(nr kanału)
https://gui-generic-builder.supla.io/
krycha88
Posts: 5575
Joined: Fri Nov 16, 2018 7:25 am
Been thanked: 5 times

Post

martinok wrote: Thu Oct 24, 2019 6:30 am Witam.
Mam takie pytanie.
Jak zrobić programową blokadę przycisku fizycznego za pomocą wirtualnego GPIO?
Chodzi o blokadę na przykład przycisku na posesji do otwierania furtki z poziomu aplikacji.
pozdrawiam
Blokadę możecie zrealizowaćw sposób nasępujący

w supla_board_configuration ustawiacie:

Code: Select all

#define PIN_RELAY 4
#define PIN_BUTTON 0
#define VIRTUAL_PIN_LOCK 99

void supla_board_configuration(void) {
  add_Relay_Button(PIN_RELAY, PIN_BUTTON, CHOICE_TYPE, 500);
  add_Relay(VIRTUAL_PIN_LOCK);
}
w Primary_GUI:

Code: Select all

uint8_t state_lock;

int supla_DigitalRead(int channelNumber, uint8_t pin) {
  if (pin == VIRTUAL_PIN_LOCK) {
    return state_lock;
  }

   if (pin == PIN_BUTTON && state_lock == 1) {
   return state_lock;
   }
   
  return digitalRead(pin);
}

void supla_DigitalWrite(int channelNumber, uint8_t pin, uint8_t val) {
  if (pin == VIRTUAL_PIN_LOCK && val != state_lock) {
    state_lock = val;
    return;
  }
  
  digitalWrite(pin, val);
}
  
w setup trzeba odkomentować jeszcze:

Code: Select all

  SuplaDevice.setDigitalReadFuncImpl(&supla_DigitalRead);
  SuplaDevice.setDigitalWriteFuncImpl(&supla_DigitalWrite);
https://gui-generic-builder.supla.io/
Arek.kandula
Posts: 411
Joined: Mon Dec 24, 2018 8:52 am

Post

Czy jakiś miły kolega zrobi bo kod pod bme280. będę bardzo wdzięczny.

Return to “Nowości”