[Rozwiązany]Przesyłanie danych do NT metodą GET

Awatar użytkownika

Topic author
pimowo
beta tester
Posty: 97
Rejestracja: ndz cze 30, 2019 11:21 pm
Postawił piwo: 2 razy
Otrzymał  piwo: 1 raz

[Rozwiązany]Przesyłanie danych do NT metodą GET

#1

Post autor: pimowo » sob lut 08, 2020 9:26 pm

Hej,
Panowie, potrzebuję pomocy bo za chwilę osiwieje...

Buduję sterownik na AVR + ESP8266, który ma posyłać dane do NetTemp. Dane z AVR chcę posyłać poprzez ESP komendami AT (proszę nie pisać, że wszytko mogę zrobić na ESP etc) Od jakiegoś czasu posyłam dane na ThingSpeak i wszytko działa jak należy, ale z NetTemp już za Chiny Ludowe działać nie chce :(

Dane Do ThingSpeak posyłam w ten sposób:
  • AT+CIPSTART="TCP","184.106.153.149",80
  • AT+CIPSEND=73
i na terminalu otrzymuję:

Kod: Zaznacz cały

AT+CIPSTART="TCP","184.106.153.149",80
                                        
CONNECT

                                                                     
                                                                                
OK
                                                                            
AT+CIPSEND=73

                                                               
                                                                                
OK
                                                                            
> 
                                                                            
Recv 73 bytes

                                                               
                                                                                
SEND OK

                                                                     
                                                                                
+IPD,4:1062CLOSED
Dane lecą na serwer w mgnieniu oka i wszytko jest OK, ale z NT już ten sposób nie chce działać i nie wiem dlaczego
  • AT+CIPSTART="TCP","192.168.1.4",80
  • AT+CIPSEND=115

Kod: Zaznacz cały

AT+CIPSTART="TCP","192.168.1.4",80
                                            
CONNECT

                                                                     
                                                                                
OK
                                                                            
AT+CIPSEND=115

                                                              
                                                                                
OK
                                                                            
> 

                                                                          
                                                                                
busy s...

                                                                   
                                                                                
Recv 115 bytes

                                                              
                                                                                
SEND OK
I żeby było ciekawiej to wklepując w przeglądarkę:

Kod: Zaznacz cały

http://192.168.1.4/receiver.php?key=HASEŁKO_NT&id=1;2&type=temp;trigger&value=3;0&ip=192.168.1.5&device=ip&name=TEST_
Wszytko działa jak należy.

Proszę o pomoc bo siedzę już drugi wieczór nad tym i nie chce to działać :(

Pozdrawiam.
Piotrek
NetTemp -> HP MicroServer N54L & Raspberry Pi 3B

uzi18
beta tester
Posty: 77
Rejestracja: czw lip 11, 2019 8:07 pm
Otrzymał  piwo: 1 raz

Re: Przesyłanie danych do NT metodą GET

#2

Post autor: uzi18 » ndz lut 09, 2020 2:44 am

a. jak. wygląda twoj request do serwera www, bo wyglada ze laczysz sie ok, pytanie co dalej z tym połączeniem robisz?

Wysłane z mojego MI MAX przy użyciu Tapatalka

Awatar użytkownika

Topic author
pimowo
beta tester
Posty: 97
Rejestracja: ndz cze 30, 2019 11:21 pm
Postawił piwo: 2 razy
Otrzymał  piwo: 1 raz

Re: Przesyłanie danych do NT metodą GET

#3

Post autor: pimowo » ndz lut 09, 2020 6:21 am

Tak naprawdę to nic więcej nie robię.
Mój zamysł był taki, że AVR robi swoje, mija minuta i posyła dane na serwer i dalej robi swoje. Nie rozumiem dlaczego na ThingSpeak mogę posyłać dane bez problemu, a na NetTemp nie? Czy z NT muszę odczarować jakieś czary?
NetTemp -> HP MicroServer N54L & Raspberry Pi 3B

uzi18
beta tester
Posty: 77
Rejestracja: czw lip 11, 2019 8:07 pm
Otrzymał  piwo: 1 raz

Re: Przesyłanie danych do NT metodą GET

#4

Post autor: uzi18 » ndz lut 09, 2020 6:48 am

to pokaz komunikacje z modulem dla tego co ci dziala i co nie dziala, tutaj wkleiles tylko fragment, tzn tylko to co odbierasz, a co wysylasz?

Wysłane z mojego MI MAX przy użyciu Tapatalka


Awatar użytkownika

Topic author
pimowo
beta tester
Posty: 97
Rejestracja: ndz cze 30, 2019 11:21 pm
Postawił piwo: 2 razy
Otrzymał  piwo: 1 raz

Re: Przesyłanie danych do NT metodą GET

#5

Post autor: pimowo » ndz lut 09, 2020 6:54 am

To już jest wszytko.
Najpierw myślałem, że coś namieszałem w AVR, więc podłączyłem sobie ESP-01 (przy AVR mam ESP-07) poprzez przejściówkę USB-UART do PC i wydając kolejno polecenia:
  • AT+CIPSTART="TCP","184.106.153.149",80
  • AT+CIPSEND=73
Dane lądują na ThingSpeak, ale wydając kolejno polecenia:
  • AT+CIPSTART="TCP","192.168.1.4",80
  • AT+CIPSEND=115
Do NetTemp nie trafia nic.

PS
Można jakoś inaczej wysłać dane do NT?
NetTemp -> HP MicroServer N54L & Raspberry Pi 3B
Awatar użytkownika

Topic author
pimowo
beta tester
Posty: 97
Rejestracja: ndz cze 30, 2019 11:21 pm
Postawił piwo: 2 razy
Otrzymał  piwo: 1 raz

Re: Przesyłanie danych do NT metodą GET

#6

Post autor: pimowo » ndz lut 09, 2020 4:57 pm

Panowie, a co oznacza taka odpowiedź z NT:
.

Kod: Zaznacz cały

Content-Type: text/html
Content-Length: 349
Connection: close
Date: Sun, 09 Feb 2020 15:55:00 GMT
Server: lighttpd/1.4.45

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 <head>
  <title>400 - Bad Request</title>
 </head>
 <body>
  <h1>400 - Bad Request</h1>
 </body>
</html>
NetTemp -> HP MicroServer N54L & Raspberry Pi 3B

uzi18
beta tester
Posty: 77
Rejestracja: czw lip 11, 2019 8:07 pm
Otrzymał  piwo: 1 raz

Re: Przesyłanie danych do NT metodą GET

#7

Post autor: uzi18 » ndz lut 09, 2020 6:20 pm

poszukaj w google pdf: esp8266 at command examples

tam. masz przyklad
brakuje ci po at+cipstart
at+cipsend=iledanych
i teraz po otrzymaniu znaku >
wysylasz dane
GET /receiver.php?key=HASEŁKO_NT&id=1;2&type=temp;trigger&value=3;0&ip=192.168.1.5&device=ip&name=TEST_


teraz mozesz cos dostac od serwera
na koniec zamykasz polaczenie
at+cipclose

Wysłane z mojego MI MAX przy użyciu Tapatalka



Awatar użytkownika

Topic author
pimowo
beta tester
Posty: 97
Rejestracja: ndz cze 30, 2019 11:21 pm
Postawił piwo: 2 razy
Otrzymał  piwo: 1 raz

Re: Przesyłanie danych do NT metodą GET

#8

Post autor: pimowo » ndz lut 09, 2020 7:27 pm

@uzi18 ale to tak właśnie już u mnie działa ;)
Po prostu NT nie dostaje/nie odbiera danych

Kod: Zaznacz cały

ready
WIFI CONNECTED
WIFI GOT IP
AT+CIPSTART="TCP","192.168.1.4",80
CONNECT

OK
AT+CIPSEND=201

OK
> 
Recv 201 bytes

SEND OK
Musi być jakoś ramka danych skonfigurowana dla NT, ale nie wiem jak.
Próbowałem z HTTP/1.0 etc. błędów brak, ale NT nie reaguje
NetTemp -> HP MicroServer N54L & Raspberry Pi 3B
Awatar użytkownika

pasiekazj
Twórca oprogramowania
Posty: 190
Rejestracja: pn lip 01, 2019 12:08 pm
Otrzymał  piwo: 14 razy
Kontakt:

Re: Przesyłanie danych do NT metodą GET

#9

Post autor: pasiekazj » ndz lut 09, 2020 8:13 pm

Dodajesz na końcu AT+CIPCLOSE ?
Rpi 4 + SSD 240 GB + nettemp.
http://mmblog.pl
Awatar użytkownika

Topic author
pimowo
beta tester
Posty: 97
Rejestracja: ndz cze 30, 2019 11:21 pm
Postawił piwo: 2 razy
Otrzymał  piwo: 1 raz

Re: Przesyłanie danych do NT metodą GET

#10

Post autor: pimowo » ndz lut 09, 2020 9:06 pm

Poszło jak w AVR zrobiłem tak:

Kod: Zaznacz cały

Cmd = "GET http://192.168.1.4/receiver.php?key=HASŁO_NT&id=1&type=trigger&value=1&ip=192.168.1.5&device=ip&name=TEST_ HTTP/1.1{013}{010}"
Cmd = Cmd + "Host: 192.168.1.4{013}{010}"
Cmd = Cmd + "Accept: */*{013}{010}"
Cmd = Cmd + "User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1){013}{010}"
Cmd = Cmd + "{013}{010}"

Kod: Zaznacz cały

ready
WIFI CONNECTED
WIFI GOT IP
AT+CIPSTART="TCP","192.168.1.4",80
CONNECT

OK
AT+CIPSEND=218

OK
> AT+CIPCLOSE

busy s...

Recv 218 bytes

SEND OK

+IPD,141:HTTP/1.1 200 OK
Content-type: text/html; charset=UTF-8
Content-Length: 1
Date: Sun, 09 Feb 2020 20:01:15 GMT
Server: lighttpd/1.4.45


CLOSED
i odczyt pojawił się w NT
NetTemp -> HP MicroServer N54L & Raspberry Pi 3B

uzi18
beta tester
Posty: 77
Rejestracja: czw lip 11, 2019 8:07 pm
Otrzymał  piwo: 1 raz

Re: Przesyłanie danych do NT metodą GET

#11

Post autor: uzi18 » ndz lut 09, 2020 9:51 pm

widze ze ostro. mieszasz
po GET nie podajemy pelnego url tylko plik na serwerze, nie wiem czemu sie na to uparles, to ze dziala to tylko kwestia serwera www pewnie to olewa
dlugosc ramki wyliczasz poprawnie?


Wysłane z mojego MI MAX przy użyciu Tapatalka

Awatar użytkownika

Topic author
pimowo
beta tester
Posty: 97
Rejestracja: ndz cze 30, 2019 11:21 pm
Postawił piwo: 2 razy
Otrzymał  piwo: 1 raz

Re: Przesyłanie danych do NT metodą GET

#12

Post autor: pimowo » ndz lut 09, 2020 10:07 pm

uzi18 pisze:widze ze ostro. mieszasz
Prawdę mówiąc to zrobiłem to troszkę po omacku, metodą prób i błędów.
uzi18 pisze:po GET nie podajemy pelnego url tylko plik na serwerze, nie wiem czemu sie na to uparles, to ze dziala to tylko kwestia serwera www pewnie to olewa
Możesz podpowiedzieć jak to teraz poprawić aby było zgodnie ze sztuką?
uzi18 pisze:dlugosc ramki wyliczasz poprawnie?
Tego jestem pewny, że jest OK
NetTemp -> HP MicroServer N54L & Raspberry Pi 3B

uzi18
beta tester
Posty: 77
Rejestracja: czw lip 11, 2019 8:07 pm
Otrzymał  piwo: 1 raz

Re: Przesyłanie danych do NT metodą GET

#13

Post autor: uzi18 » pn lut 10, 2020 6:48 am

najprościej na rpi wywolaj komende:
curl -v "http...pełen..adres...dla..zapytania..NT"
pokaze ci co wysyla i co odbiera z serwera
odpowiednio za znakami > i <
useragent mozesz podac krótko np. pogodynka

Wysłane z mojego MI MAX przy użyciu Tapatalka

Awatar użytkownika

Topic author
pimowo
beta tester
Posty: 97
Rejestracja: ndz cze 30, 2019 11:21 pm
Postawił piwo: 2 razy
Otrzymał  piwo: 1 raz

Re: Przesyłanie danych do NT metodą GET

#14

Post autor: pimowo » pn lut 10, 2020 7:29 am

Dzięki, wrócę z pracy to będę dalej testował ;)
Muszę jeszcze pomęczyć temat bo mi tylko pięć zmiennych posyła(tu raczej problem w AVR) a na dzień dzisiejszy potrzebuję dziesięć - docelowo dużo więcej.
Najważniejsze, że w końcu to ruszyło.

Czyli po "User-Agent:" mogę sobie wpisać co chcę? Muszę poczytać na ten temat co i jak.
NetTemp -> HP MicroServer N54L & Raspberry Pi 3B

uzi18
beta tester
Posty: 77
Rejestracja: czw lip 11, 2019 8:07 pm
Otrzymał  piwo: 1 raz

Re: Przesyłanie danych do NT metodą GET

#15

Post autor: uzi18 » pn lut 10, 2020 11:35 am

to tylko identyfikator klienta, mozesz sobie tam napisac pimowo =)

nie wiem jak duzy bufor ma esp ale pewnie to gdzies w dokumentacji jest od at firmware

poza tym zainteresuj sie lepiej otwartym firmwarem At by LoBo, on przynajmniej ma wsparcie jakies =)

Wysłane z mojego MI MAX przy użyciu Tapatalka


Awatar użytkownika

Topic author
pimowo
beta tester
Posty: 97
Rejestracja: ndz cze 30, 2019 11:21 pm
Postawił piwo: 2 razy
Otrzymał  piwo: 1 raz

Re: Przesyłanie danych do NT metodą GET

#16

Post autor: pimowo » pn lut 10, 2020 12:10 pm

Wydaje mi się, że problem będzie po stronie AVR ponieważ ja to wszytko upycham do jednej zmiennej string. Wieczorkiem będę testował dalej ;)
NetTemp -> HP MicroServer N54L & Raspberry Pi 3B

uzi18
beta tester
Posty: 77
Rejestracja: czw lip 11, 2019 8:07 pm
Otrzymał  piwo: 1 raz

Re: Przesyłanie danych do NT metodą GET

#17

Post autor: uzi18 » pn lut 10, 2020 12:38 pm

to nie o to. chodzi, jesli przekroczysz bufor przewidziany w esp, czyli wyślesz wiecej danych niz mozna to bedzie problem
jaka najwieksza wartosc miales po at+cipdata=x ?

Wysłane z mojego MI MAX przy użyciu Tapatalka

Awatar użytkownika

Topic author
pimowo
beta tester
Posty: 97
Rejestracja: ndz cze 30, 2019 11:21 pm
Postawił piwo: 2 razy
Otrzymał  piwo: 1 raz

Re: Przesyłanie danych do NT metodą GET

#18

Post autor: pimowo » pn lut 10, 2020 12:53 pm

Może to i bufor ESP, ale zmienna string ma też swoją pojemność - jak się nie mylę to 254 znaki ASCII

CIPDATA chyba pokazywał coś około 230-240
NetTemp -> HP MicroServer N54L & Raspberry Pi 3B

uzi18
beta tester
Posty: 77
Rejestracja: czw lip 11, 2019 8:07 pm
Otrzymał  piwo: 1 raz

Re: Przesyłanie danych do NT metodą GET

#19

Post autor: uzi18 » pn lut 10, 2020 1:05 pm

jesli tak to. faktycznie bedziesz mial kombinacje

fakt 254 max

Wysłane z mojego MI MAX przy użyciu Tapatalka


Awatar użytkownika

Topic author
pimowo
beta tester
Posty: 97
Rejestracja: ndz cze 30, 2019 11:21 pm
Postawił piwo: 2 razy
Otrzymał  piwo: 1 raz

Re: Przesyłanie danych do NT metodą GET

#20

Post autor: pimowo » pn lut 10, 2020 2:03 pm

Najwyżej "potnę" dane na części - chociaż wolałbym wszytko wysyłać na raz, ale jak się nie da to będę kombinował.
NetTemp -> HP MicroServer N54L & Raspberry Pi 3B
Awatar użytkownika

Topic author
pimowo
beta tester
Posty: 97
Rejestracja: ndz cze 30, 2019 11:21 pm
Postawił piwo: 2 razy
Otrzymał  piwo: 1 raz

Re: Przesyłanie danych do NT metodą GET

#21

Post autor: pimowo » pn lut 10, 2020 11:16 pm

OK, już jestem po małych testach i to co wyszło:
- problemem było ograniczenie długości znaków w zmiennej BASCOM
- "podzieliłem" sobie swój string na pół i wysyłałem pierwszą paczkę, po 30s drugą paczkę i znów po 30s pierwszą paczkę - wszytko działało jak należy
- zacząłem dalej kombinować i wszytko skracać do minimum i wszystko się pomieściło, wszystkie 10 zmiennych w jednym stringu ;)

Koniec, końców swój string zakańczam:

Kod: Zaznacz cały

Cmd = Cmd + "&name=TEST_"
Cmd = Cmd + "{032}HTTP/1.1{013}{010}"
Cmd = Cmd + "Host:{032}192.168.1.4{013}{010}{013}{010}"
Moje hasło do NT jest czterocyfrowe i BASCOM z takim hasłem, oraz gdy wszystkie dane są ustawione z maksymalną wartością wyliczył mi:

Kod: Zaznacz cały

AT+CIPSEND=225

Czyli jeszcze ociupinkę zostało miejsca na ewentualne dłuższe hasło.

Dzięki za pomoc, bez Was to by się nie udało ;)
NetTemp -> HP MicroServer N54L & Raspberry Pi 3B
ODPOWIEDZ