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
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
, i ten tryb to trochę jakby po kilogram jabłek jechać ciężarówką
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