Odświeżanie stanu ikony arduino ide
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.
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.
A może zamiast EEPROM wykorzystać do tego SPIFFS?
https://starter-kit.nettigo.pl/2018/02/ ... eci-flash/
https://gui-generic-builder.supla.io/
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.
Ostatnio zmieniony czw lip 25, 2019 11:52 am przez vajera, łącznie zmieniany 1 raz.
Ale to nie wiele zmienia EEPROM czy Flash ma ograniczona liczę zapisów , zamówiłem fram’y
W elektronice jak nie wiadomo o co chodzi to zwykle chodzi o zasilanie
Wezmę udział w Supla Offline Party 2024
Wezmę udział w Supla Offline Party 2024
W oczekiwaniu na kości fram'ów spróbowałem zapamiętać i odczytać tan za pomocą SPIFFS'a,.krystianmen pisze: ↑czw lip 25, 2019 8:54 amA może zamiast EEPROM wykorzystać do tego SPIFFS?
https://starter-kit.nettigo.pl/2018/02/ ... eci-flash/
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");
}
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
}
}
Ale jeżeli zrobie coś takiego :
Kod: Zaznacz cały
void supla_timer() {
if (digitalRead(14)==0) {
SuplaDevice.channelValueChanged (0,1);
Serial.println("timer");
}
}
Dlaczego nie działa w pętli loop a w timerze działa ?
W elektronice jak nie wiadomo o co chodzi to zwykle chodzi o zasilanie
Wezmę udział w Supla Offline Party 2024
Wezmę udział w Supla Offline Party 2024
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
Zainicjalizuj initialRelay = 2 i potem dekrementuj aż initialRelay != 0
Każde urządzenie elektryczne działa o wiele lepiej jeśli podłączysz je do prądu.
Nic z tego , próbowałem nawet 10 razy
W elektronice jak nie wiadomo o co chodzi to zwykle chodzi o zasilanie
Wezmę udział w Supla Offline Party 2024
Wezmę udział w Supla Offline Party 2024