Toon posts:

influxdb v1 query opzetten lukt niet.

Pagina: 1
Acties:

  • bucovaina89
  • Registratie: Juli 2010
  • Laatst online: 20:41
Ik probeer mijn ESP8266 een query te laten doen op mijn influxdb server die de P1 waardes van onze digitale meter bij houdt. Ik doe ergens iets mis want ik krijg een error boodschap op de OLED:
code:
1
{"error"}:"type error 1:1-1:7: undefined identifier \"select\""}


Ik vermoed dat ik iets mis doe bij het opzetten van de query maar weet niet meteen wat. Het zit hem volgens mij al bij [mono]select[/code]. Ik heb al [mono]SELECT[/code] geprobeerd en de backslash escaping en de quotes uit CURRENT_ELECTRICITY_USAGE gehaald, maar hetzelfde probleem.
code:
1
String query = "select \"CURRENT_ELECTRICITY_USAGE\" from \"P1 values\" GROUP BY * ORDER BY DESC LIMIT 1";


Meer context:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
...
...
...

#define INFLUXDB_URL "http://10.10.10.3:8086"
#define INFLUXDB_DB_NAME "elektriciteit"

...
...
...


InfluxDBClient client(INFLUXDB_URL, INFLUXDB_DB_NAME);
void loop()
{
  /*
   * The database elektriciteit has a measurement "P1 values". That measurement has the following structure:
   * time,CURRENT_ELECTRICITY_DELIVERY,CURRENT_ELECTRICITY_USAGE,DEVICE_TYPE,ELECTRICITY_DELIVERED_TARIFF_1,ELECTRICITY_DELIVERED_TARIFF_2,ELECTRICITY_USED_TARIFF_1,ELECTRICITY_USED_TARIFF_2,INSTANTANEOUS_ACTIVE_POWER_L1_NEGATIVE,INSTANTANEOUS_ACTIVE_POWER_L1_POSITIVE,INSTANTANEOUS_CURRENT_L1
   * 
   * So the query last value of P1 to get electricity usage would look like this
   * select "CURRENT_ELECTRICITY_USAGE" from "P1 values" GROUP BY * ORDER BY DESC LIMIT 1
  */

String query = "select \"CURRENT_ELECTRICITY_USAGE\" from \"P1 values\" GROUP BY * ORDER BY DESC LIMIT 1";

FluxQueryResult result = client.query(query);

if(result.getError() != "") {
  display.clearDisplay();
  display.setCursor(0,0);
  display.println(result.getError());
  display.display();
}
delay(1 * 1000);
}


Hij geraakt in ieder geval geconnecteerd op de influx database server. Ik heb eerder een andere error gekregen dat er iets niet juist stond van influx-enabled. Dat had ik veranderd en tijdens herstarten zei de oled dat hij niet op de server geconnecteerd geraakte. Toen de server herstart was plots weer wel, maar kreeg ik natuurlijk deze error te zien.

[Voor 4% gewijzigd door bucovaina89 op 27-01-2022 07:27]


  • bucovaina89
  • Registratie: Juli 2010
  • Laatst online: 20:41
Wacht, ik heb een flauw vermoeden dat ik gewoon niet de juiste query language gebruik.

https://github.com/tobias...basic-code-for-influxdb-1
InfluxDB 2 and InfluxDB 1.7+ (with enabled flux) uses Flux to process and query data.
Er wordt verwezen naar hier:
https://www.influxdata.com/products/flux/

Probeer ik toevallig InfluxQL te gebruiken waar ik Flux moet gebruiken?

  • Jesse-
  • Registratie: Oktober 2015
  • Laatst online: 04-02 19:58
bucovaina89 schreef op donderdag 27 januari 2022 @ 07:34:
Wacht, ik heb een flauw vermoeden dat ik gewoon niet de juiste query language gebruik.

https://github.com/tobias...basic-code-for-influxdb-1

[...]


Er wordt verwezen naar hier:
https://www.influxdata.com/products/flux/

Probeer ik toevallig InfluxQL te gebruiken waar ik Flux moet gebruiken?
Welke versie is je InfluxDB? Als het 2.0 of hoger is gebruik je inderdaad de verkeerde query language.

  • bucovaina89
  • Registratie: Juli 2010
  • Laatst online: 20:41
Ik zit nu even niet thuis maar het is een 1.8 als ik me niet vergis. Iig geen 2.0 want daarmee kreeg ik mijn ESP8266 niet aan de praat.

  • SA007
  • Registratie: Oktober 2002
  • Laatst online: 03-02 23:58

SA007

Moderator Tweaking
Move naar DEV, dit heeft niks met de esp8266 zelf te maken.

Klok is stuk :(


  • bucovaina89
  • Registratie: Juli 2010
  • Laatst online: 20:41
OK, ik denk dat ik een halve stap verder ben geraakt. Met onderstaande code wordt er op z'n minst al geen error meer gegooid. Dat is al beter dan ervoor.

code:
1
2
3
 String query = "from(bucket: \"elektriciteit\") |> range(start: -1h) |> filter(fn: (r) => r._measurement == \"P1\ values\" and r._field == \"CURRENT_ELEKTRICITY_USAGE\"";
 query += "and r.device == \"ESP32\")";
 query += "|> max()";


Nu nog een waarde eruit halen en op de OLED krijgen en dan ben ik blij 8)

  • bucovaina89
  • Registratie: Juli 2010
  • Laatst online: 20:41
't is een gevecht geweest maar het laatste probleem was een data type mismatch. Ik zag heel de tijd '0' als waarde. SHOW FIELD KEYS ON "elektriciteit" gaf aan dat ik een float in tabel value terug kreeg, maar er blijkt niet direct een methode te zijn om een float terug te krijgen. Dus dan maar getRawValue() gebruikt en dat dan in een String gezet.

code:
1
2
3
  String query = "from(bucket: \"elektriciteit\") |> range(start: -1m) |> filter(fn: (r) => r._measurement == \"cv\" and r._field == \"value\"";
  query += "and r.host == \"stats\")";
  query += "|> last()";
Pagina: 1


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee