Pomoc se výkladem kodu
Re: Pomoc se výkladem kodu
Ale tu knihovnu stejně potřebuješ - odkud by se vzal ten ntpClient?
Nikoho plánovaně neurážím. Jestli se Vám nelíbí co píšu, tak to nečtěte. A ostatně, třeba za to nemůžu - Researchers believe that dark humor can be a significant symptom of dementia.
Re: Pomoc se výkladem kodu
Ahoj
zase bych potřeboval trochu poradit s kodem tentokrát je to z této stránky
https://lastminuteengineers.com/esp32-n ... -tutorial/
kdy kod co tam má autor funguje ale když si ho chci přenést do svého projektu a smostatně dosadit hodiny minuty a vteřiny tak mi to vypíše chybu.
Nelíbí se mu toto jako hodiny
%H
zkoušl jsem ho přiřadit ke stringu floatu a dalším typům ale nic asi tako
hodiny = %H,
přitom celkový výraz funguje
Serial.println(&timeinfo, "%A, %B %d %Y %H:%M:%S");
Prosím mohl by mi někdo nějak polopatě vysvětlit proč se to zdráhá fungovat? Díky
zase bych potřeboval trochu poradit s kodem tentokrát je to z této stránky
https://lastminuteengineers.com/esp32-n ... -tutorial/
kdy kod co tam má autor funguje ale když si ho chci přenést do svého projektu a smostatně dosadit hodiny minuty a vteřiny tak mi to vypíše chybu.
Nelíbí se mu toto jako hodiny
%H
zkoušl jsem ho přiřadit ke stringu floatu a dalším typům ale nic asi tako
hodiny = %H,
přitom celkový výraz funguje
Serial.println(&timeinfo, "%A, %B %d %Y %H:%M:%S");
Prosím mohl by mi někdo nějak polopatě vysvětlit proč se to zdráhá fungovat? Díky
Re: Pomoc se výkladem kodu
a jak by poznal, že to jsou hodiny z timeinfo?
Hledáš něco jako:
Hledáš něco jako:
hodiny = sprintf(&timeinfo,"%H")
Za pravopisné chyby v této zprávě může moje učitelka češtiny.
Re: Pomoc se výkladem kodu
Hádat, jakou chybu máš v kódu když nevidím ten kód je těžký. Sice jsme to s Jendou úspěšně ve Waldkirchu dělali, on programoval, na pozadí spouštěl kompilaci a já z výstupu kompilátoru do vedlejšího okna radil, co má opravit, aniž bych ten kód viděl, ale to bylo v situaci, kdy jsme měli asi dvě minuty na přeprogramování a je to jen omezeně použitelná metoda.
Po rychlopřečtení toho článku se mi to jeví takhle: V tom ukázkovém kódu se čas schovává ve struktuře pojmenované
Po rychlopřečtení toho článku se mi to jeví takhle: V tom ukázkovém kódu se čas schovává ve struktuře pojmenované
tm
, resp. v její instanci v proměnné timeinfo
. Funkce println pak vezme tu proměnnou a podle formátu v druhém parametr (ten řetězec s procentama) vypíše čas. Jestli chceš získat nějaký časový údaj pro jiné účely, tak si sáhni rovnou do té proměnné, například hodiny = timeinfo.tm_hour;
Nikoho plánovaně neurážím. Jestli se Vám nelíbí co píšu, tak to nečtěte. A ostatně, třeba za to nemůžu - Researchers believe that dark humor can be a significant symptom of dementia.
Re: Pomoc se výkladem kodu
Ahoj pánové
moc děkuji za rychlou reakci. Jo tak to jsem potřeboval.
Bohužel tohle mi nefungovalo
ale od Davida to funguje skvěle. Ještě jednou dik
moc děkuji za rychlou reakci. Jo tak to jsem potřeboval.
Bohužel tohle
Kód: Vybrat vše
hodiny = sprintf(&timeinfo,"%H")
ale od Davida to funguje skvěle. Ještě jednou dik
Re: Pomoc se výkladem kodu
Opět bych potřeboval trochu pomoci (no trochu spíš dost ).
Jde o tento kod co je i v odkazu co jsem uvedl výše jen tady je trochu pravený
Jde o to že zhruba tento kod jsem implementoval do svého domácího ovládání a doladuje mi to hodiny, které ale stejně běží odvozené od millis jen se to doladuje každou minutu. A v tom je ten problém, když odpojím internet tak server hodně dlouho čeká na hodnoty a tím se zasekne ovládání.
Jde mi o to jestli by nešlo napsat nějaký příkaz timeout kdy prostě, když třeba do 500ms nezískám data o čase ,tak se jede dál a zkusím to zase příště. Ted to umí čekat i 20s a v tom čase nejde ovládání. Prosím nenapadá někoho jak to udělat?
Jde o tento kod co je i v odkazu co jsem uvedl výše jen tady je trochu pravený
Kód: Vybrat vše
#include <WiFi.h>
#include "time.h"
const char* ssid = "YOUR_SSID";
const char* password = "YOUR_PASS";
const char* ntpServer = "pool.ntp.org";
const long gmtOffset_sec = 3600;
const int daylightOffset_sec = 3600;
void printLocalTime()
{
struct tm timeinfo;
if(!getLocalTime(&timeinfo)){
Serial.println("Failed to obtain time");
return;
}
Serial.println(&timeinfo, "%A, %B %d %Y %H:%M:%S");
}
void setup()
{
Serial.begin(115200);
//connect to WiFi
Serial.printf("Connecting to %s ", ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println(" CONNECTED");
//init and get the time
configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
printLocalTime();
//disconnect WiFi as it's no longer needed
// WiFi.disconnect(true); - toto tam nemohu mít protože server bude ovládán dálkově
// WiFi.mode(WIFI_OFF);
}
void loop()
{
delay(1000);
printLocalTime();
}
Jde mi o to jestli by nešlo napsat nějaký příkaz timeout kdy prostě, když třeba do 500ms nezískám data o čase ,tak se jede dál a zkusím to zase příště. Ted to umí čekat i 20s a v tom čase nejde ovládání. Prosím nenapadá někoho jak to udělat?
Re: Pomoc se výkladem kodu
Přesně tenhle program se ti zasekává, anebo jiný? (jestli chceš, abychom ti radili s tvým programem, tak nám neukazuj tenhle ale ten, který má problém).
Nikoho plánovaně neurážím. Jestli se Vám nelíbí co píšu, tak to nečtěte. A ostatně, třeba za to nemůžu - Researchers believe that dark humor can be a significant symptom of dementia.
Re: Pomoc se výkladem kodu
Tak jsem ten problém ještě nevyřešil.
A chci se zeptat zda by bylo možné ukončit hledání času na internetu pokud tento není připojen?
Měl jsem na mysli něco jako
což je jen jako příklad a nefunguje to, ale existuje něco takového? POtřeboval bych totiž aby hlavní funkce domácího ovládání nebyla narušena latencemi vzniklými hledáním na odpojeném internetu.
Díky
A chci se zeptat zda by bylo možné ukončit hledání času na internetu pokud tento není připojen?
Měl jsem na mysli něco jako
Kód: Vybrat vše
struct tm timeinfo abort;
Díky
Re: Pomoc se výkladem kodu
Ne sice přesně takhle, ale "ano, existuje něco takového".existuje něco takového?
Ale dokud sem nenahraješ sem celý kód a nenapíšeš, kterou konkrétní verzi knihoven, kterou verzi podpory pro ESP32 a kterou verzi Arduino IDE používáš, bude to zase věštění naslepo a ztráta času všech diskutujících.
Nikoho plánovaně neurážím. Jestli se Vám nelíbí co píšu, tak to nečtěte. A ostatně, třeba za to nemůžu - Researchers believe that dark humor can be a significant symptom of dementia.
Re: Pomoc se výkladem kodu
Dobře Davide
dám sem svoji verzi mnou nově vyvíjeného ovládání, ale nemohu se zbavit dojmu, že to nechceš ani tak pro to aby jsi mi pomohl odhalit ten problém jako spíš pro ukázku kodu studentům "jak se to nemá dělat"
Ano nejsem žádný vystudovaný programátor a tedy kod asi obsahuje mnoho chyb případně nedostatků , jsem si toho vědom ale je to vývoj.
NO knihovy co používám jsou
wifi 1.2.7
wificlient 1.0.0
webserver 1.0.0
DHT 1.3.4
dám sem svoji verzi mnou nově vyvíjeného ovládání, ale nemohu se zbavit dojmu, že to nechceš ani tak pro to aby jsi mi pomohl odhalit ten problém jako spíš pro ukázku kodu studentům "jak se to nemá dělat"
Ano nejsem žádný vystudovaný programátor a tedy kod asi obsahuje mnoho chyb případně nedostatků , jsem si toho vědom ale je to vývoj.
NO knihovy co používám jsou
wifi 1.2.7
wificlient 1.0.0
webserver 1.0.0
DHT 1.3.4