Zealota Napisano Luty 9, 2022 Udostępnij Napisano Luty 9, 2022 Tło. Korzystając z programowania komend AT dla modułów z ESP8266 dotychczasowe, pozytywne, próby opierałem na zapytaniu GET. Chodziło o komunikację z programem KODI poprzez interfejs HTTP, który jest wbudowany w tenże. Do interfejsu można dotrzeć na kilka sposobów 1. Poprzez hiperlink w takiej postaci: http://127.0.0.1/jsonrpc?request={"jsonrpc":"2.0","method":"Player.GetPlayers","id":1} 2. Poprzez metodę GET, np. za pomocą komend AT komunikując się po UART z ESP8266 i przekazując string "GET /jsonrpc?request={"jsonrpc":"2.0","method":"Player.GetPlayers","id":1} HTTP/1.1HOST: 127.0.0.1\r\n\r\n" 3. Oraz poprzez metodę POST, co nie jest ostatnim ze sposobów "POST /jsonrpc HTTP/1.1\r\nHOST: 127.0.0.1\r\nrequest={"jsonrpc":"2.0","method":"Input.ShowOSD","id":1}\r\n\r\n" 3 sposób to na razie pierwsza próba użycia tej metody, natomiast nieudana W pierwszych dwóch próbach dostaję to czego oczekuję, czyli taki string: {"id":1,"jsonrpc":"2.0","result":[{"name":"VideoPlayer","playsaudio":true,"playsvideo":true,"type":"video"},{"name":"PAPlayer","playsaudio":true,"playsvideo":false,"type":"music"}]} Z tym, że w przypadku wysłania za pomocą komendy AT to jeszcze dostaję więcej danych, co jest również poprawne Natomiast 3 sposób z POST to sam "wymyśliłem" na podstawie prób i błędów, a skorzystałem z tego opisu: https://www.guru99.com/difference-get-post-http.html#6 Jak rozumiem należy stworzyć odpowiedni "plik" wg schematu na rysunku oraz przesłać go do serwera. Spróbowałem wygenerować to w excelu na podstawie takiego schematu ale dostaję błąd "parse error" Coś ewidentnie pokręciłem, ale na "stronach www" i http nie znam się zupełnie. Może ktoś coś podpowie. Jest jeszcze inny sposób, przez Web Socket https://kodi.wiki/view/JSON-RPC_API#WebSocket Wydaje się najlepszy, bo bezpośrednio po "tcp", ale czy na pewno? Jak z niego skorzystać. 1 Link do komentarza Share on other sites More sharing options...
Zealota Luty 9, 2022 Autor tematu Udostępnij Luty 9, 2022 Znalazłem kolejny sposób uzyskania danych z Kodi, tym razem z konsoli Ubuntu. Niestety nadal nie mogę przerobić tego na komendę AT curl -X POST -H "content-type:application/json" 192.168.11.17:8080/jsonrpc -d '{"jsonrpc":"2.0","method":"Player.GetPlayers","id":1}' A oto wynik {"id":1,"jsonrpc":"2.0","result":[{"name":"VideoPlayer","playsaudio":true,"playsvideo":true,"type":"video"},{"name":"PAPlayer","playsaudio":true,"playsvideo":false,"type":"music"}]} Link do komentarza Share on other sites More sharing options...
Zealota Luty 9, 2022 Autor tematu Udostępnij Luty 9, 2022 (edytowany) No wreszcie jest sukces. Zapytanie należy przygotować w ten sposób: Ważne jest wyliczenie zapytania i wypełnienie odp wartości Content-Length. Pomocna była ta strona: https://stackoverflow.com/questions/22077802/simple-c-example-of-doing-an-http-post-and-consuming-the-response Edytowano Luty 9, 2022 przez Zealota Nowe treści Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »