Arduino ThinSpeak Měření teploty ze čtyř míst
Úvodní stránka › Fórum › Vaše projekty › Arduino › Arduino ThinSpeak Měření teploty ze čtyř míst
Označeno štítky: arduino w5100 ds18b20 thigspeak měření teplota internet
- Toto téma obsahuje celkem 32 odpovědí. Do diskuze (6 diskutujících) se naposledy zapojil uživatel nielda a poslední změna proběhla před 7 roky a 8 měsíci.
-
AutorPříspěvky
-
29.7.2015 v 13:44 #3885terjeÚčastník
Díky,funguje. Ještě dotaz. Dá se na thingspeak získat nějaká historie dat nebo jen to co je tam aktuálně zobrazeno.
29.7.2015 v 15:27 #3886Ondra78ÚčastníkAno, /export/-Download all of this Channel’s feeds in CSV format.
10.8.2015 v 15:20 #4043terjeÚčastníkChlapi díky. Jestli se chcete podívat na můj kanál, tak uživatel „terje_ard“. Zatím jenom ze dvou čidel.
8.12.2015 v 20:09 #5409mapeÚčastníkAhoj borci; v první řadě bych vám chtěl poděkovat, že jsem díky vám zprovoznil logování teploty na ThingSpeak. Kompilátor mi neustále házel chyby a po promarněném víkendu, kdy už jsem chtěl moduly vyhodit z okna :)) jsem si všimnul, že Ondra78 používá verzi 1.6.3 a přitom web arduina mi vnutil 1.6.5, která ten kód vyhodnotí s chybami. Takže to bych chtěl napsat pro všechny ostatní, aby neztráceli naději 😀
A teď k mojí otázce: mám takovýto testovací program#include <EtherCard.h> #define APIKEY "ZMH0T5WDETDGCY67" #include <OneWire.h> #include <DallasTemperature.h> #define ONE_WIRE_BUS 3 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); byte mymac[] = { 0xDE,0xAD,0xBE,0xEF,0xFE,0xED }; const char website[] PROGMEM = "api.thingspeak.com"; byte Ethernet::buffer[700]; uint32_t timer; Stash stash; void setup () { Serial.begin(9600); Serial.println("\n[webClient]"); sensors.begin(); if (ether.begin(sizeof Ethernet::buffer, mymac) == 0) Serial.println( "Failed to access Ethernet controller"); if (!ether.dhcpSetup()) Serial.println("DHCP failed"); ether.printIp("IP: ", ether.myip); ether.printIp("GW: ", ether.gwip); ether.printIp("DNS: ", ether.dnsip); if (!ether.dnsLookup(website)) Serial.println("DNS failed"); ether.printIp("SRV: ", ether.hisip); } void loop () { sensors.requestTemperatures(); ether.packetLoop(ether.packetReceive()); if (millis() > timer) { Serial.println(millis()); timer = millis() + 660000; delay(200); byte sd = stash.create(); stash.print("&field1="); stash.print(String(sensors.getTempCByIndex(0), DEC)); // print the value (0 to 1024) as string stash.save(); Stash::prepare(PSTR("POST /update HTTP/1.1" "\r\n" "Host: $F" "\r\n" "Connection: close" "\r\n" "X-THINGSPEAKAPIKEY: $F" "\r\n" "Content-Type: application/x-www-form-urlencoded" "\r\n" "Content-Length: $D" "\r\n" "\r\n" "$H"), website, PSTR(APIKEY), stash.size(), sd); ether.tcpSend(); } }
Funguje to, ale pouze 10 minut, pak se musí přípravek resetovat, proč? Přes sériovou linku vidim, že program žije a v intervalech nastavených v programu problikne i ethernetový modul a dioda na routeru. Vygooglil jsem, že TCP protokol má timeout 10 minut, ale moc tomu nerozumim, je to pravda? Jak tedy upravit program? A jak je možný, že vám to funguje bez problému? Neni případně problém na mojim routeru? Řeším to teď teda tak, že mám časové relé, které mi zapíná modul (nano + mini ethernet modul HR911105A) jednou za 30minut na 1minutu. Děkuji za každou radu.
11.12.2015 v 10:33 #5413AlešÚčastníkZkoušel jsi ten interval zkrátit třeba na 2 minuty? Jak se to bude chovat ?
11.12.2015 v 11:36 #5414mapeÚčastníkVypadne to po 10ti minutách, takže výsledků bude 5-6. Když udělám interval 30s, bude výsledků víc, ale zase pouze 10minut.
11.12.2015 v 12:38 #5415AlešÚčastníkTo je divné. V meteostanici http://xanadu.khnet.info/meteo.php mám ethernet shield nastavený na pevnou IP adresu, data se odesílají každou minutu, a běží to naprosto bez problému asi 2 roky. To samé přes WiFi s ESP8266 se data odesílají na ThinSpeak každých 5 minut, a také to jede v kuse třeba měsíc.
Zkusil bych nastavit pevnou IP adresu. Když to nepomůže, tak zkusit vytvořit krátký prográmek, který bude odněkud stahovat (GET) nějaká data v intervalu např. 2 minut, a sledovat, jestli to také vypadne.11.12.2015 v 13:29 #5416mapeÚčastníkJá mám ten malej ethernetovej modul, nikoliv ethernet shield. Se statickou IP adresou to funguje normálně. Ale proč s DHCP ne? Píše se o tom i tady
https://forum.arduino.cc/index.php?topic=302559.0
ale týpek to „vyřešil“ tim, že si koupil rovnou nový modul.11.12.2015 v 15:05 #5417AlešÚčastníkAha. Tak to je jasné. DHCP server má nastavený Lease time na 10minut. To je doba na kterou ti DHCP server přidělí IP adresu. Když se těch 10 minut nic neděje, tak ji odpojí, a může ji přidělit jinému zařízení. Na 10 minut se nastavuje jenom v místě, kde se připojuje hodně lidí na krátkou dobu – třeba free WiFi na nádraží apod. Běžně je nastavujena na 1440 minut, já ho mám doma nastavený na 0 – neomezeně. Takže buď přenastavit lease time, nebo to vyřešit tak, jak je to popsané v jednom z příspěvků z toho fóra:
Then try this code. It connects to a server every 30 seconds. See how long it goes.
https://playground.arduino.cc/Code/WebClient
It has the dhcp begin call commented out, but the code is there to use it.Místo čekání x minut tam udělat smyčku, která každých 30s stáhne něco odněkud z webu. Potom by měla i vydržet ta pronajatá IP adresa.
Nebo nechat nastavenou pevnou IP adresu.
11.12.2015 v 15:22 #5418AlešÚčastníkTeď ale koukám, že ten příklad je pro w5100/w5200 🙁
11.12.2015 v 15:44 #5419AlešÚčastníkTady jsem našel nějakou úpravu: http://stackoverflow.com/questions/33689096/arduino-ethercard-dhcp-leasetime
27.2.2017 v 18:52 #10627nieldaÚčastníkAhoj. Možná mám úplně hloupý dotaz, ale třeba mi pomůžeš. V oblasti Arduina jsem začátečník a programování se taky učím. Chtěl jsem si vyzkoušet tvůj program, ale nevím jak z Code uvedeném v článku to dostanu do srozumitelného stavu pro IDE. Moc dík.
28.2.2017 v 6:33 #10643Ondra78Účastníknielda > koho se ptáš? CTRLc a CTRLv nefunguje?
28.2.2017 v 10:35 #10644nieldaÚčastníkTo samozřejmě funguje. Ale pokud to takto přes schránku zkopíruji. Je vše v jednom bloku bez struktury a řádkovaní. Asi to dělám blbě.
28.2.2017 v 11:42 #10645Ondra78ÚčastníkTeď jsem to zkoušel a v pohodě.
OS: Linux Mint 17.3
prohlížeč:FireFox 51.0.1
IDE: 1.6.12 -
AutorPříspěvky
- Pro reakci na toto téma se musíte přihlásit.