[tutorial] Raspberry Pi – Docker, Proxy, Let’s Encrypt, SUPLA, SUPLA-Scripts...

rono21
Posty: 11
Rejestracja: sob gru 05, 2020 2:09 pm

wt gru 08, 2020 8:46 pm

Im dalej tym lepiej, bardzo dziękuję użytkownikom za masę porad na tym forum.

Potrafie wyciągać już poprzez konsole linuxa dane
curl -vkH "Content-Type: application/json" -H "Accept: application/json" -X PATCH -d '{"code":"xxx","action":"read"}' https://10.10.10.200/direct/1

i dostaje
ramkę +
{"connected":true,"support":40959,"currency":"PLN","pricePerUnit":0.63,"totalCost":59.76,"phases":[{"number":1,"frequency":50,"voltage":240.9,"current":0.952,"powerActive":204.6238,"powerReactive":-81.11032,"powerApparent":224.96552,"powerFactor":0.918,"phaseAngle":158.5,"totalForwardActiveEnergy":67.56248,"totalReverseActiveEnergy":0,"totalForwardReactiveEnergy":0.55976,"totalReverseReactiveEnergy":5.181},{"number":2,"frequency":50,"voltage":241.43,"current":0.236,"powerActive":32.66876,"powerReactive":-13.8949,"powerApparent":55.98556,"powerFactor":0.595,"phaseAngle":158.6,"totalForwardActiveEnergy":7.5006,"totalReverseActiveEnergy":0,"totalForwardReactiveEnergy":0.06778,"totalReverseReactiveEnergy":2.33304},{"number":3,"frequency":50,"voltage":242.58,"current":2.026,"powerActive":373.20236,"powerReactive":-232.31304,"powerApparent":481.9549,"powerFactor":0.778,"phaseAngle":148,"totalForwardActiveEnergy":19.79984,"totalReverseActiveEnergy":0,"totalForwardReactiveEnergy":0,"totalReverseReactiveEnergy":15.111* Connection #0 to host 10.10.10.200 left intact
3}]}

Moje pytanie, czy można z linku bezpośredniego wyciągać tylko 1 wartość np. current dla L1 lub current dla L1+L2+L3 ?
Awatar użytkownika
pzygmunt
Posty: 10137
Rejestracja: wt sty 19, 2016 9:26 am
Lokalizacja: Paczków
Kontaktowanie:

wt gru 08, 2020 8:49 pm

Kwestia sparsowania jsona
rono21
Posty: 11
Rejestracja: sob gru 05, 2020 2:09 pm

wt gru 08, 2020 9:07 pm

Szanowny Panie kolego,

to zdanie mi nic nie podpowiedziało :)
Awatar użytkownika
klew
Posty: 1801
Rejestracja: czw cze 27, 2019 12:16 pm

śr gru 09, 2020 8:39 am

rono21 pisze:
wt gru 08, 2020 9:07 pm
Szanowny Panie kolego,

to zdanie mi nic nie podpowiedziało :)
Do czego chcesz wyciągnąć tą wartość? Gdzie ją chcesz przekazać?
Awatar użytkownika
pzygmunt
Posty: 10137
Rejestracja: wt sty 19, 2016 9:26 am
Lokalizacja: Paczków
Kontaktowanie:

śr gru 09, 2020 10:13 am

Albo inaczej.... Jakiego języka/skryptu używasz do wykonania requestu ?
rono21
Posty: 11
Rejestracja: sob gru 05, 2020 2:09 pm

śr gru 09, 2020 9:29 pm

Obecnie staram się napisać w QT funkcję która wyciągnie informacje:

{"connected":true,"support":40959,"currency":"PLN","pricePerUnit":0.63,"totalCost":82.13,"phases":[{"number":1,"frequency":49.96,"voltage":239.04,"current":6.088,"powerActive":1387.82562,"powerReactive":-67.27554,"powerApparent":1426.95218,"powerFactor":0.974,"phaseAngle":177.5,"totalForwardActiveEnergy":95.27792,"totalReverseActiveEnergy":0,"totalForwardReactiveEnergy":0.88046,"totalReverseReactiveEnergy":6.68022},{"number":2,"frequency":49.96,"voltage":239.72,"current":0.317,"powerActive":35.78488,"powerReactive":-51.7231,"powerApparent":74.6212,"powerFactor":0.475,"phaseAngle":126.2,"totalForwardActiveEnergy":10.27432,"totalReverseActiveEnergy":0,"totalForwardReactiveEnergy":0.09686,"totalReverseReactiveEnergy":2.91988},{"number":3,"frequency":49.96,"voltage":241.71,"current":1.759,"powerActive":321.66032,"powerReactive":-228.4168,"powerApparent":416.9679,"powerFactor":0.772,"phaseAngle":145.2,"totalForwardActiveEnergy":24.81876,"totalReverseActiveEnergy":0,"totalForwardReactiveEnergy":0,"totalReverseReact* Connection #0 to host...

próby były z:
1. https://curl.se/libcurl/
Skompilowałem bibliotekę libcurl, którą umieściłem w projekcie. Mój program zaczął coś robić tzn wytświetlał błąd 405 + informacje o stronie, (oczywiście nie działa prawidłowo)

fragment kodu
#include <curl/curl.h>
...
void MainWindow::on_qtcurl_clicked()
{
CURL *curl;
CURLcode res;

curl_global_init(CURL_GLOBAL_ALL);
std::string jsonstr = "{\"code\":\"jdNzjYiNzZJj\",\"action\":\"read\"}";

// curl -vkH "Content-Type: application/json"
// -H "Accept: application/json" -X PATCH -d '{"code":"jdNzjYiNzZJj","action":"read"}'
// https://10.10.10.200/direct/4


// CURL *curl = curl_easy_init();

// curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/api/endpoint");
// curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "{\"hi\" : \"there\"}");

// curl_easy_perform(curl);
qDebug()<<"Połączono "<<PROJECT_PATH"cc";
/* get a curl handle */
curl = curl_easy_init();
if(curl) {
/* First set the URL that is about to receive our POST. This URL can
just as well be a https:// URL if that is what should receive the
data. */

struct curl_slist *headers = NULL;

// headers = curl_slist_append(headers, "Accept: application/json");
headers = curl_slist_append(headers, "Content-Type: application/json");
// curl_easy_setopt(curl, CURLOPT_CAINFO, PROJECT_PATH"cacert.pem");
// curl_easy_setopt(curl, CURLOPT_CAPATH, PROJECT_PATH"cacert.pem");
curl_easy_setopt(curl, CURLOPT_USERPWD, "jdNzjYiNzZJj");
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, jsonstr.c_str());
curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE,jsonstr.size());
curl_easy_setopt(curl, CURLOPT_URL, "https://10.10.10.200/direct/4");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
// curl_easy_setopt(curl, CURLOPT_SSL_VERIFYSTATUS, 0);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); // enabling ssl
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
// CURLOPT_SSL_VERIFYPEER=0;
// curl_easy_setopt(curl, CURLOPT_CAINFO, "/home/ron/Projects/RON_MASTER/cacert.pem");
// curl_easy_setopt(curl, CURLOPT_CAPATH, "/home/ron/Projects/RON_MASTER/cacert.pem");
/* Now specify the POST data */

/* Perform the request, res will get the return code */
res = curl_easy_perform(curl);
/* Check for errors */
if(res != CURLE_OK)
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res));

/* always cleanup */
curl_easy_cleanup(curl);
}
curl_global_cleanup();
}

2. Próby z biblioteką QUrl Class póki co bez rezultatu
https://stackoverflow.com/questions/156 ... s-using-qt

#include <QUrlQuery>
...
QString url = "http://10.10.10.200/direct/5/2WQNkTYYDiThTY2/read";

QUrlQuery query(url);
qDebug() << query.queryItemValue("connected");

Staram się wykonać to z direct linka curl jaki wyświetlił się w supla, z konsoli dostaje informację.
Generalnie trudno znaleźć przykład w którym wykorzystywane jest szyfrowanie + klucz z podanej na supli konfiguracji

curl -s -H "Content-Type: application/json" -H "Accept: application/json" -X PATCH -d '{"code":"YOUR LINK CODE","action":"read"}' https://10.10.10.200/direct/4

oczywiście w konsoli to działa prawidłowo.

Wcześniej nie korzystałem z java, json, rest , api - dopiero przy supli poznaje te zagadnienia.
Piszę głównie w vbnet + nieco w QT C++

Jeszcze wyjaśnię dlaczego QT. Po pierwsze linux, po drugie mam w aplikacji sterowanie w gui sterownikiem PLC siemens s7 300 do obsługi automatyki domu. Cel jest taki aby spiąć wszystko w jedną aplikację.
marcinszarmach
Posty: 6
Rejestracja: śr gru 09, 2020 11:18 pm

śr gru 09, 2020 11:21 pm

Witam,
Próbuję postawić suplę w trybie proxy, standalone działa w porządku, i mam takie logi w dockerze supli oraz w nginx:
Miał ktoś taki problem?

Dziękuję z góry
Załączniki
unnamed.jpg
unnamed.jpg (1.18 MiB) Przejrzano 237 razy
Awatar użytkownika
lesny8
Posty: 1441
Rejestracja: pn gru 11, 2017 9:43 pm

śr gru 09, 2020 11:37 pm

Co masz wpisane w polu CLOUD_DOMAIN= w pliku .env?
80 port przekierowany?

Edit:
Sprawdziłem Twój request i nie masz przekierowanego poprawnie portu 80 na IP wewnętrzne RPi
ODPOWIEDZ

Wróć do „FAQ / Jak to zrobić”