Aktualizacja SuplaDevice

elmaya
Posts: 1485
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: 1485
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: 13911
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 135 times
Been thanked: 137 times

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
Najlepsze suple dla Twojego domu :mrgreen:
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: 13911
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 135 times
Been thanked: 137 times

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.
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
lukfud
Posts: 2480
Joined: Thu Nov 23, 2017 11:33 pm
Location: Warszawa
Has thanked: 13 times
Been thanked: 11 times

Post

@klew,
Przy RS na kanale 0, do pliku zapisuje channelNumber = 1.
Tak ma być?
https://www.facebook.com/groups/supladiy
https://www.facebook.com/groups/suplazamel
https://www.facebook.com/groups/suplaauraton
https://smartnerzeczy.pl
User avatar
klew
Posts: 13911
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 135 times
Been thanked: 137 times

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?
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
lukfud
Posts: 2480
Joined: Thu Nov 23, 2017 11:33 pm
Location: Warszawa
Has thanked: 13 times
Been thanked: 11 times

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
https://www.facebook.com/groups/suplazamel
https://www.facebook.com/groups/suplaauraton
https://smartnerzeczy.pl

Return to “Arduino IDE”