Aktualizacja SuplaDevice

elmaya
Posts: 1484
Joined: Wed Jun 27, 2018 5:48 pm
Location: El Saucejo - Sevilla

Post

you have to use: arduino esp8266 core 2.6.3
dogu18
Posts: 259
Joined: Thu Oct 11, 2018 8:35 pm

Post

elmaya wrote: Sun Apr 26, 2020 12:44 pm you have to use: arduino esp8266 core 2.6.3
Używam.
Może problemem jest to ze wgrywałem na Sonoff Basic z Generic ESP
Pozdrawiam
Grzegorz Labudda
elmaya
Posts: 1484
Joined: Wed Jun 27, 2018 5:48 pm
Location: El Saucejo - Sevilla

Post

Test adding "delay (50);" after "SuplaDevice.iterate ();" in the main loop.

Code: Select all

void loop() {
  SuplaDevice.iterate();
  delay(50);
}
User avatar
Herrero
Posts: 26
Joined: Wed Sep 25, 2019 7:29 am
Location: Wrocław

Post

Mam pytanie jak w nowej bibliotece przywróć status przekaźników po restarcie/utracie połączenia?

Teraz mam:

Code: Select all

SuplaDevice.setStatusFuncImpl(&status_func); 
i

Code: Select all

void status_func(int status, const char *msg) {
  if (status == 17) {
    Serial.println("status_func - start");
    Serial.print("GLOBAL_STATE -> ");
    Serial.println(GLOBAL_STATE);    
    SuplaDevice.channelValueChanged(0, GLOBAL_STATE);
    if (activeSection) {
      Serial.print("activeSection -> ");
      Serial.println(activeSection + 1);      
      SuplaDevice.channelValueChanged(activeSection + 1, 1);
    }
    Serial.println("status_func - stop");
  }
}
Jak używam własnego callback'a w starej wersji to nie wyświetla mi statusów przy połączeniu itp. Jak to zrobić porządnie w nowej, aby było przywrócenie stanów i jednocześnie statusy?
User avatar
klew
Posts: 10457
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

Statusy jeszcze będą przepisywane.
Ten callback raczej służy do napisania własnej metody obsługującej status. Podpinanie tam zmiany stanów przekaźników jest mało eleganckie.

Do biblioteki będzie dodane zapamiętywanie stanu i możliwość przywrócenia stanu przekaźnika pi resecie
rysiulg
Posts: 1
Joined: Wed May 27, 2020 1:53 am

Post

Witam
Jak skompilować kod Supli dla ESP32?
Na str. 26 było już zapytanie o błąd -mam taki sam:

Code: Select all

SuplaDevice_klew\src\supla\timer.cpp:74:19: error: reference to 'esp_timer' is ambiguous

   timerAlarmWrite(esp_timer, 10 * 1000, false);          // set time in us
In file included from C:\Users\Rysza\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.3/tools/sdk/include/freertos/freertos/portmacro.h:82:0,

                 from C:\Users\Rysza\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.3/tools/sdk/include/freertos/freertos/portable.h:94,

                 from C:\Users\Rysza\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.3/tools/sdk/include/freertos/freertos/FreeRTOS.h:105,

                 from C:\Users\Rysza\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.3\cores\esp32/Arduino.h:32,

                 from C:\Users\Rysza\Documents\Arduino\libraries\SuplaDevice_klew\src\supla\timer.cpp:17:

C:\Users\Rysza\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.3/tools/sdk/include/esp32/esp_timer.h:53:16: note: candidates are: struct esp_timer

 typedef struct esp_timer* esp_timer_handle_t;
Dla wersji 1.0.4 bibliotek ESP32 jest taki sam błąd ;(

PS. Dla pobierania wartości odczytu z czujników może dopisać do bibliotek sensorów w classach by uniknąć odczytywania bezpośrednio wartości by je wykorzystać w kodzie do sterowania czy też wyświetlania wyników na stronie www:
Najprościej dla pojedynczych wartości z odczytów z czujników:

Code: Select all

  double getlast() {
	return lastValidValue;
  }
i w części protected dopisać:

Code: Select all

double lastValidValue;
a gdy w części double getValue() nie ma zapisu to uzupełnić:

Code: Select all

lastValidValue = wartość z odczytu czujnika

Wówczas możemy łatwo pobrać dane ostatniego pomiaru:

Code: Select all

pomiar=bmTempS->getlast();
oczywiście wcześniej w setupie dodawania sensorów do Supli przypisujemy zmienna:
wykorzystujac wlasne przedefiniowanie klasy :

Code: Select all

bmTempS = new bmTemp(); 

lub
wykorzystując bibliotekę sensors:

Code: Select all

coThermometerS = new Supla::Sensor::DS18B20(ONE_WIRE_BUS, sts[0].ssn); 

;)
User avatar
klew
Posts: 10457
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

rysiulg wrote: Wed May 27, 2020 2:02 am Witam
Jak skompilować kod Supli dla ESP32?
Na str. 26 było już zapytanie o błąd -mam taki sam:
Dzięki za przypomnienie. Chyba była jakaś zmiana w sofcie do obsługi płytek i nam się nazwa zduplikowała.
Zmieniłem nazwy zmiennych w bibliotece i teraz już się kompiluje poprawnie.

Odczyt wartości obiektów z biblioteki będę dorabiał, dzięki za podpowiedzi.
User avatar
lukfud
Posts: 2305
Joined: Thu Nov 23, 2017 11:33 pm
Location: Warszawa

Post

@klew,
Przy RS na kanale 0, do pliku zapisuje channelNumber = 1.
Tak ma być?
https://www.facebook.com/groups/supladiy/
User avatar
klew
Posts: 10457
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

lukfud wrote: Tue Jun 09, 2020 8:34 am @klew,
Przy RS na kanale 0, do pliku zapisuje channelNumber = 1.
Tak ma być?
Nie wiem o co chodzi. Co to jest "RS"? I do jakiego pliku zapisuje 1?
User avatar
lukfud
Posts: 2305
Joined: Thu Nov 23, 2017 11:33 pm
Location: Warszawa

Post

klew wrote: Tue Jun 09, 2020 10:04 am
lukfud wrote: Tue Jun 09, 2020 8:34 am @klew,
Przy RS na kanale 0, do pliku zapisuje channelNumber = 1.
Tak ma być?
Nie wiem o co chodzi. Co to jest "RS"? I do jakiego pliku zapisuje 1?
Wybacz skróty. RollerShutter i funkcja:

Code: Select all

supla_rs_SavePosition(int channelNumber, int position)
Zapis robię do pliku i wartość dla channelNumber wstawia 1, choć jest to kanał 0 w moim szkicu.

Code: Select all

void supla_rs_SavePosition(int channelNumber, int position) {
  File rs_file_write = SPIFFS.open("/rs_settings.txt", "w");
  if (!rs_file_write) {
    Serial.println("# Error opening file for writing");
    return;
  }
  Serial.print("# File was written: ");
  Serial.println(rs_file_write.print(channelNumber));
  rs_file_write.close();
}
https://www.facebook.com/groups/supladiy/

Return to “Arduino IDE”