Strona 2 z 3

Re: Odświeżanie stanu ikony arduino ide

: śr lip 24, 2019 3:48 pm
autor: Zybi
Pamięć stanu nic do tego nie ma, a z jakiej funkcji skorzystać podał Przemek trochę wcześniej.

Re: Odświeżanie stanu ikony arduino ide

: śr lip 24, 2019 4:01 pm
autor: cino111
Podał podal, ale nie wiem jak to zastosować. W sofcie espablo tego nie widzę, a soft dziala prawidlowo.

Re: Odświeżanie stanu ikony arduino ide

: śr lip 24, 2019 5:06 pm
autor: vajera
ESP8266 nie ma, w przeciwieństwie do Arduino, dedykowanej pamięci EEPROM. Biblioteka EEPROM emuluje tą pamięć za pomocą jednego sektora pamięci Flash (stąd maksymalna wielkość EEPROM = 4 kB).
Metoda begin przydziela pamięć RAM do buforowania EEPROM, commit zapisuje bufor do pamięci Flash.
Metoda end dodatkowo zwalnia pamięć RAM przydzieloną przez begin.
I tu jest chyba Twój problem:
begin w setup jest ok , ale później zapis powinien odbywać się za pomocą metody commit - bez end. End zwolni bufor RAM i metoda read niczego nie odczyta.

Re: Odświeżanie stanu ikony arduino ide

: czw lip 25, 2019 8:54 am
autor: krycha88
pzygmunt pisze: śr lip 24, 2019 3:12 pm Panowie. Zapisywanie to nie problem. Problemem jest to, że ta pamięć długo nie wytrzyma.
A może zamiast EEPROM wykorzystać do tego SPIFFS?

https://starter-kit.nettigo.pl/2018/02/ ... eci-flash/

Re: Odświeżanie stanu ikony arduino ide

: czw lip 25, 2019 10:58 am
autor: vajera
krystianmen pisze: czw lip 25, 2019 8:54 am
A może zamiast EEPROM wykorzystać do tego SPIFFS?
Tak jak pisałem jeden post wyżej - w przypadku ESP8266 pamieć EEPROM jest emulowana poprzez zapis jednego sektoru pamieci Flash modułu ESP - tej samej pamięci, w której przechowywane są pliki w systemie SPIFFS. Tak czy inaczej pamięć flash w teorii powinna wytrzymać ok. 10 000 cykli zapisu - jeżeli zapisujesz stan 2x dziennie = 5000 dni = 13 lat.

Re: Odświeżanie stanu ikony arduino ide

: czw lip 25, 2019 11:13 am
autor: shimano73
Ale to nie wiele zmienia EEPROM czy Flash ma ograniczona liczę zapisów , zamówiłem fram’y

Re: Odświeżanie stanu ikony arduino ide

: czw lip 25, 2019 11:52 am
autor: buli
A jak to jest zrobione w oficjalnym supla-espressif-esp? Jak jest zapamietywany stan przekaźnika oraz jak jest zapamiętana pozycja rolety?

Re: Odświeżanie stanu ikony arduino ide

: pn lip 29, 2019 5:52 pm
autor: shimano73
krystianmen pisze: czw lip 25, 2019 8:54 am
pzygmunt pisze: śr lip 24, 2019 3:12 pm Panowie. Zapisywanie to nie problem. Problemem jest to, że ta pamięć długo nie wytrzyma.
A może zamiast EEPROM wykorzystać do tego SPIFFS?

https://starter-kit.nettigo.pl/2018/02/ ... eci-flash/
W oczekiwaniu na kości fram'ów spróbowałem zapamiętać i odczytać tan za pomocą SPIFFS'a,.
Potrzebuję zapamiętać na początek jeden stan - jeden bit :D , i ten tryb to trochę jakby po kilogram jabłek jechać ciężarówką :lol:
Udało się, ale jest pewien problem bo odświeżanie nie działa, aby nie zaśmiecać całym kodem pokażę najważniejsze jego elementy.
Zmodyfikowałem metodę supla_DigitalWrite

Kod: Zaznacz cały

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

char Relay[5];
  
    digitalWrite(pin, val);  
     if  (val==1) strcpy(Relay,"HIGH");     
     else strcpy(Relay,"LOW");
    Serial.println("Zapisywanie stanu przekaznika");
    DynamicJsonBuffer jsonBufferRelay;
    JsonObject& jsonState = jsonBufferRelay.createObject();
    jsonState["RelayState"] = Relay;
    File StateRelayFile = SPIFFS.open("/state.json", "w");
    if (!StateRelayFile) {
      Serial.println("Nie udaó się otworzyć pliku z zapisem stanu przekaźnika");
    }
    jsonState.printTo(StateRelayFile);
    StateRelayFile.close();
    Serial.println();
    Serial.println("Stan przekaźnika zapisany");
    
}
w pętli loop wstawiłem :

Kod: Zaznacz cały

// State initial relay's
  if (initialRelay == false) {
      initialRelay = true;    // aby wykonało sie tylko raz i/ lub po resecie/zaniku zasilania
      int st = strcmp(Relay_State,"HIGH");
      if (st == 0){
          Serial.println("Przywrócono stan przekaźnika ");
          digitalWrite(RelayPin,HIGH);
          SuplaDevice.channelValueChanged(0,1); // kanał 0, wartość 1       
      }
  }
Jak wspomniałem wyżej stan wejścia jest przywrócony ale ikona się nie uaktualnia.
Ale jeżeli zrobie coś takiego :

Kod: Zaznacz cały

void supla_timer() {
   if (digitalRead(14)==0) {
      SuplaDevice.channelValueChanged (0,1);
      Serial.println("timer");
   }
  } 
to podanie masy na gpio14 zmienia stan ikony .
Dlaczego nie działa w pętli loop a w timerze działa ?

Re: Odświeżanie stanu ikony arduino ide

: pn lip 29, 2019 6:34 pm
autor: Espablo
Wykonaj ta pętle co najmniej 2 razy. SuplaDevice.channelValueChanged(0,1) wykonuje się za wcześnie i chyba nie trafia do serwera.
Zainicjalizuj initialRelay = 2 i potem dekrementuj aż initialRelay != 0

Re: Odświeżanie stanu ikony arduino ide

: pn lip 29, 2019 7:29 pm
autor: shimano73
Espablo pisze: pn lip 29, 2019 6:34 pm Wykonaj ta pętle co najmniej 2 razy. SuplaDevice.channelValueChanged(0,1) wykonuje się za wcześnie i chyba nie trafia do serwera.
Zainicjalizuj initialRelay = 2 i potem dekrementuj aż initialRelay != 0
Nic z tego :( , próbowałem nawet 10 razy :?