Czas, zegar, clock w SuplaDevice

winek1986
Posts: 112
Joined: Mon Dec 11, 2017 5:07 pm
Location: Kaszuby

Post

pzygmunt wrote: Sun Oct 25, 2020 1:31 pm Złą.

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql

Code: Select all

root@debian-wyse:~# SELECT @date := IFNULL(CONVERT_TZ(UTC_TIMESTAMP, 'UTC', timezone), UTC_TIMESTAMP) t, CASE CONVERT_TZ(UTC_TIMESTAMP, 'UTC', timezone) WHEN NULL THEN 'UTC' ELSE timezone END tz, YEAR(@date) y, MONTH(@date) m, DAY(@date) d, DAYOFWEEK(@date) w, HOUR(@date) h, MINUTE(@date) n, SECOND(@date) s FROM `supla_user` WHERE id = 1
bash: błąd składni przy nieoczekiwanym znaczniku `('

Code: Select all

root@debian-wyse:~# mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
bash: mysql_tzinfo_to_sql: nie znaleziono polecenia
bash: mysql: nie znaleziono polecenia
Proszę o podpowiedz jak powinna wyglądać ta komenda dla własnej instancji postawionej na Debian 12 . Obecnie zwraca nieznane polecenie .
nebraska
Posts: 204
Joined: Thu Dec 08, 2022 3:00 pm
Been thanked: 1 time

Post

Hej
Chciałem użyć Suplowego Uptime, ale nie działa. Coś się zmieniło w tym temacie?

Code: Select all

#include <supla/uptime.h>


Supla::Uptime mojeUptime;


void setup() {

  Serial.begin(115200); 


}

void loop() {
  SuplaDevice.iterate(); 
  mojeUptime.iterate(millis());
  if (mojeUptime.getUptime() > 2 * 4 * 1000) {  // 8s
   }
  }
User avatar
klew
Posts: 13905
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

A co nie działa?
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
klew
Posts: 13905
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

Z tego co pamiętam to uptime liczy sekundy a nie milisekundy.
Więc Twój warunek wykona się po ponad 2h
Najlepsze suple dla Twojego domu :mrgreen:
nebraska
Posts: 204
Joined: Thu Dec 08, 2022 3:00 pm
Been thanked: 1 time

Post

klew wrote: Wed Jun 04, 2025 2:43 pm A co nie działa?
W ogóle nie mam loga co 8s

Code: Select all

  SuplaDevice.iterate();
  mojeUptime.iterate(millis());

 if (mojeUptime.getUptime() > 2 * 4 * 1000) {
  Serial.println("####### Wykonaj co 8s #####################");

}}
User avatar
klew
Posts: 13905
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

J/w, wydaje mi się że to działa na sekundach a nie milisekundach.
Dodatkowo ten warunek będzie spełniony stale po 8s, a nie co 8s
Najlepsze suple dla Twojego domu :mrgreen:
nebraska
Posts: 204
Joined: Thu Dec 08, 2022 3:00 pm
Been thanked: 1 time

Post

klew wrote: Wed Jun 04, 2025 3:09 pm J/w, wydaje mi się że to działa na sekundach a nie milisekundach.
Dodatkowo ten warunek będzie spełniony stale po 8s, a nie co 8s
Faktycznie po 8s wchodzi w pętle. Czy można go zmodernizować, żeby wykonywał się co 8s? Czy trzeba użyć klasycznego millisa?
User avatar
vajera
Posts: 7286
Joined: Wed Oct 31, 2018 7:58 am
Location: Biedrusko
Has thanked: 289 times
Been thanked: 161 times

Post

nebraska wrote: Wed Jun 04, 2025 3:21 pm
klew wrote: Wed Jun 04, 2025 3:09 pm J/w, wydaje mi się że to działa na sekundach a nie milisekundach.
Dodatkowo ten warunek będzie spełniony stale po 8s, a nie co 8s
Faktycznie po 8s wchodzi w pętle. Czy można go zmodernizować, żeby wykonywał się co 8s? Czy trzeba użyć klasycznego millisa?

Code: Select all

if ((mojeUptime.getUptime() % 8) == 0) {
//wykona się co 8 sekund, ale również dla wartości 0
}

Code: Select all

if ((mojeUptime.getUptime() > 0) &&((mojeUptime.getUptime() % 8) == 0)) {
//wykona się co 8 sekund, począwszy od 8 sekundy 
}
Bramka Zigbee <=> SUPLA
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
User avatar
klew
Posts: 13905
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

Tam się może zdarzyć że czas przeskoczy o 2s między wykonaniami i wtedy to %8 przegapi.
Najlepsze suple dla Twojego domu :mrgreen:
nebraska
Posts: 204
Joined: Thu Dec 08, 2022 3:00 pm
Been thanked: 1 time

Post

klew wrote: Wed Jun 04, 2025 4:33 pm Tam się może zdarzyć że czas przeskoczy o 2s między wykonaniami i wtedy to %8 przegapi.
co byś proponował do przykładu @vajera?

Mam jeszcze drugie pytanie. Jak użyć uptime, żeby po zwolnieniu przycisku zaczął odliczać różnice i po czasie wykonał. Przykład ze zwykłym millis działa, ale nie wiem jak zrobić z uptime.

Code: Select all

loop(){

 mojeUptime.iterate(millis());

    if (action == MOJA_AKCJA) {
      Serial.println("Przycisk zwolniony");
      sensor2 = true;
      //lastTime = millis();
      mojeUptime.getUptime();
}
if ((sensor2)) { 
    if (mojeUptime.getUptime() > 5) {
     //if (millis() - lastTime > 5000) {
      Serial.println("<<< Wykonaj po 5s >>>");
      sensor2 = false;
    }
}

Return to “Arduino IDE”