Skocz do zawartości
Mrpatryk

Przesyłanie danych na strone WWW

Pomocna odpowiedź

Po pierwsze kazałem ci dać virtualWrite do timera, bo teraz wysyłasz na serwer BLYNKa wiele(bardzo) razy na sekundę dane, po drugie kazałem ci zmienić w aplikacji na push, a po trzecie najważniejsze 

co oznacza ten zapis millis() /1000? co zwraca? 

 

Udostępnij ten post


Link to post
Share on other sites

W apce mam na PUSH. co do timera to zrozumiałem aby wyświetlała się cyklicznie wartość to mam użyć tzw delay'a (taki zapis był na stronce z Blynka to się nim posłużyłem).  Widać nie zrozumiałem co masz na myśli... napisz proszę jak ma wyglądać ten kod bo nie czaje za bardzo jak to ma wyglądać.

Udostępnij ten post


Link to post
Share on other sites

@hazi18 pokaż gdzie użyłeś delay??? bo nie użyłeś... delay nie używamy z Blynkiem bo zrywa połączenie, to dwa, 

trzy, napisz mi co zwraca ten zapis millis() /1000???? 

Udostępnij ten post


Link to post
Share on other sites

Miałem na myśli to, że używając millis chciałem zrobić opóźnienie w wysyłaniu danych (coś jak DELAY ale nie używając go). Czytałem trochę i wiem ze delay powoduje zerwanie połączenia z Blynk.

"Funkcja delay (do wprowadzania opóźnień) to jedna z pierwszych rzeczy, której uczymy się podczas poznawania Arduino. Jej działanie może jednak generować wiele kłopotów.

Na szczęście z pomocą przychodzi nam bardziej rozbudowane rozwiązanie bazujące na funkcji millis."

Źródło: https://forbot.pl/blog/kurs-arduino-ii-wielozadaniowosc-opoznienia-z-millis-id18418

Udostępnij ten post


Link to post
Share on other sites

super, szkoda, że nie użyłeś, a teraz może mi w końcu napiszesz co zwraca ten zapis millis() /1000???

Udostępnij ten post


Link to post
Share on other sites

Funkcja ta zwraca liczbę milisekund, która upłynęła od podłączenia płytki do prądu. W sumie po przeczytaniu tego w necie faktycznie nie jest to potrzebne w programie, nie jest mi potrzebna informacja o czasie działania płytki.

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

nie @hazi18millis() /1000 nie 

22 minuty temu, hazi18 napisał:

zwraca liczbę milisekund, która upłynęła od podłączenia płytki do prądu.

jesteś blisko, ale nie, pomyśl raz jeszcze co zwraca millis() /1000....???

Wtedy okaże się coś niesamowitego, serio serio... 

Dla ułatwienia rozwiązania tej zagadki, możesz zrobić jak ci napisałem wiele godzin temu, w apce dać push, a w loop-ie, Blynk.virtualWrite() wstawić do 10 sekundowego timera, wtedy w apce wartość zacznie inaczej przyrastać... sprawdź i wyciągnij wnioski... 

Edytowano przez SOYER

Udostępnij ten post


Link to post
Share on other sites

[Fragment usunięty w związku ze złamaniem zasad PPF]

Coby nie było że OT. Kolego @hazi18 próbuj tak:

unsigned long aktualnyCzas = 0;
unsigned long zapamietanyCzas = 0;
unsigned long roznicaCzasu = 0;

a w void loop() {

 //Liczenie czasu
  aktualnyCzas = millis() / 1000;
  roznicaCzasu = aktualnyCzas - zapamietanyCzas;

i liczenie czasu

 if (roznicaczasu > 5) {
   Blynk.virtualWrite(V1, jakies_dane);
    zapamietanyCzas = aktualnyCzas;
  }

Ważne jest to: zapamietanyCzas = aktualnyCzas; czyli jakieś zdarzenie musi Ci zapisywać zapamiętany czas. Nie wiem czy nie popełniłem gdzieś błędu ale masz tu na pewno wskazówkę jak to trzeba rozgryźć. 

Udostępnij ten post


Link to post
Share on other sites

Przypominam wszystkim o Polityce Przyjaznego Forum (PPF).

@SOYER staram się rozumieć każdą ze stron i ogólnie popieram sposób nauki, który próbowałeś tutaj przeforsować. Mam wrażenie, że troszkę jednak "zapomniał wół, kiedy cielęciem był". Też jeszcze nie tak dawno miewałeś różne problemy i zagwozdki, które np. @ethanak tłumaczył Ci na forum z anielską cierpliwością linijka po linijce. Jak sam dobrze wiesz, czasami bez konkretnego przykładu ciężko początkującemu załapać o co w tym chodzi. Czasami warto jednak pokazać jakiś konkret lub inaczej sformułować swoją wypowiedź, aby naprowadzić pytającego na właściwe rozwiązanie.

@uczesie popieram fakt reagowania i chęć konkretnej pomocy. Proszę jednak o stosowanie się do zasad PPF i darowanie sobie prywatnych zaczepek i złośliwości. Cytując z PPF: "Skup się na omawianym zagadnieniu, a nie na osobach. Nie oceniaj innych, daruj sobie złośliwe zwroty, które generują nerwową atmosferę". Usunąłem zbędny fragment Twojej wiadomości.

Bardzo proszę o odpowiednie zachowanie. Szkoda czasu i energii na zbędne złośliwości i zaczepki 😉

  • Lubię! 2

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

@Treker ale skąd mogłem wiedzieć, że hazi18 to super początkujący w Arduino, który nawet kursu Forbota nie przerobił. Tytuł wątku wskazywał na kogoś lepiej obeznanego ode mnie. Chciałem pomóc w kwestii Blynka. Zorientowałem się dopiero kiedy uczesie napisał, że "doczytał co to millis". Nie wydaje mi się, by do rozwiązania millis() /1000 trzeba było dawać gotowca, a rozwiązanie tego zadania sprawiłoby(chyba), że hazi18 zobaczyłby, że Blynk od początku działa jak mu kazano... 

Edytowano przez SOYER

Udostępnij ten post


Link to post
Share on other sites

Rozumiem, że nie zawsze wiadomo komu się pomaga i może to wprowadzić zamieszanie. Jeśli są takie wątpliwości to warto zwyczajnie zapytać o stan wiedzy pytającego, można uniknąć wielu nerwów 🙂 Przypominam fragment z PPF: "Ludzie są różni. Może o radę prosi uczeń szkoły podstawowej, student elektroniki, a może emeryt. Pamiętaj, że nie wszyscy traktują elektronikę jako jedyną pasję na całe życie". Wiadomo, że najlepiej byłoby, gdyby każdy pytający miał cały miesiąc na wdrożenie się w temat. Jednak bądźmy realistami, nie każdy ma na to czas i ochotę - czasami po prostu chce się coś na szybko i jednorazowo zrobić. Oczywiście nie twierdzę, że zawsze trzeba takiej osobie dawać gotowca, ale nie krytykowałbym takiego podejścia, bo nie wiemy właściwie kto, do czego i dlaczego tego potrzebuje 🙂

Proponuję wrócić do głównego tematu rozmowy, a wszelkie wątpliwości co do sposobu dyskusji można kontynuować w temacie o PPF.

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

ok, hazi18, informuję Cię więc, że Twój program działa od początku tak jak mu kazałeś, BLYNK wyświetla 1,2,3,4 itd. bo millis() /1000 to ilość sekund jaka upłynęła od startu(millis to milisekundy, milisekundy to 0.001 sekundy, więc milisekundy podzielone przez 1000 to sekundy).

Skoro więc dałeś polecenie

Blynk. virtualWrite (1, millis() /1000); 

to Blynk odlicza w górę co sekundę. 

Teraz by Blynk wyświetlał odczyt temperatury to zamiast millis() /1000, wstaw nazwę zmiennej do której zapisujesz wynik odczytu. 

Jeśli nie wiesz co to za zmienna, to o tym napisz, to wiele uprości... 

Edytowano przez SOYER

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

Dziękuję za odpowiedź.

Wracając do konwersacji z Adminem, nie napisałem, że jestem początkujący w tym temacie, dopiero co udało mi się napisać 2 programiki, które próbuję ulepszać. Jestem cienki z programowania więc proszę o wyrozumiałość.

@SOYER dziękuję za poprzednie odpowiedzi i pomoc, jesteś troszkę surowym nauczycielem, ale nie mam Ci tego za złe 🙂 pisałem o tym "gotowcu" do Blynka bo nie wiedziałem jak ma wyglądać struktura kodu wysyłania danych i odczyt przez apkę.

Znalazłem na necie taki kod ale nie działa u mnie

BLYNK_READ(V1) //Blynk app has something on V1
{
  sensorData = digitalRead(D1); //reading the sensor on D1
  Blynk.virtualWrite(V1, sensorData); //sending to Blynk
}

READ zmieniłem na WRITE i też nic, w apce raz mam PUSH a raz 1 sec ustawione w  Reading rate. Pytanie czy ren kod ma być w Void setup czy w Loop?

Edytowano przez hazi18
dodanie kodu

Udostępnij ten post


Link to post
Share on other sites
#include "DHT.h"
#define DHTPIN D1     // what pin we're connected to
#define DHTTYPE DHT22   // DHT 22  (AM2302)
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
// You should get Auth Token in the Blynk App.
char auth[] = "_hyKFQylC32c9eUlduUNgp_oM1c9RydD";
// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "TP-LINK";
char pass[] = "";

DHT dht(DHTPIN, DHTTYPE);
int sensorData;

void setup(void)
{
  // Debug console
  Serial.begin(9600);
  Blynk.begin(auth, ssid, pass);
  
  dht.begin();
  
}
BLYNK_READ(V1) //Blynk app has something on V1
{
  sensorData = analogRead(A0); //reading the sensor on A0
  Blynk.virtualWrite(V1, sensorData); //sending to Blynk
}


void loop(void)

{ 
  Blynk.run();
}

 

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...