LoRa- Messstation mit Cayenne Payload


#1

Habe das Projekt von Verena (@Verena) nachgebaut und läuft auch nach anfängichen Schwierigkeiten. Ich habe das Projekt erweitert auf 9 Messwerte in üblicher Reihenfolge.
Hier der entsprechende Ausschnitt ais dem Programm

void do_send(osjob_t* j){
    // Check if there is not a current TX/RX job running
    if (LMIC.opmode & OP_TXRXPEND) {
        Serial.println(F("OP_TXRXPEND, not sending"));
    } else {
        lpp.reset();
        lpp.addTemperature(1, hdc.getTemperature());
        lpp.addRelativeHumidity(2, hdc.getHumidity());
        lpp.addBarometricPressure(3, bmp_sensor.getPressure());
        lpp.addLuminosity(4, tsl.getIlluminance());
        lpp.addLuminosity(5, veml.getUvIntensity());
        lpp.addAnalogInput(6, my_sds.getPm25());
        lpp.addAnalogInput(7, my_sds.getPm10());
        lpp.addAnalogInput(8, getSoundValue());
        lpp.addAnalogInput(9, my_sds.getPm25());    // soll CO2 werden


        // Prepare upstream data transmission at the next possible time.
        LMIC_setTxData2(1, lpp.getBuffer(), lpp.getSize(), 0);
        Serial.println(F("Packet queued"));

Die Sensorwerte in der openSensemap sind in der gleichen Reihenfolge:
Temperatur
Feuchte
Druck
Helligkeit
UV
PM2,5
PM10
Lautstärke
CO2

Schaue ich bei TTN nach kommen folgende Daten:

Manche Wete sind plausibel manche nicht.
Die Reihenfolge erscheint sehr willkürlich.

Warum?


#2

Hallo @altprog,

vorweg: ich habe deinen Post etwas angepasst dass man den Code besser lesen kann.

An sich müsste es egal sein in welcher Reihenfolge die Daten bei TTN angezeigt werden. Ich glaube das wird bei TTN in alphabetischer Reihenfolge angezeigt. Es ist nur wichtig, dass die Daten korrekt sind, dann wird das auch bei der openSenseMap korrekt dargestellt.

Warum manche Werte nicht passen schau ich mir im laufe der Woche nochmal mit einem Testaufbau an.

Zur Info: man muss nicht für jeden Messwert einen eigenen Channel anlegen. Das ist nur nötig, wenn man mehrere Messungen vom gleichen Datentyp schicken möchte. Temperatur, Luftfeuchte und Luftdruck könntest du also beispielsweise jeweils über Channel 1 schicken. Helligkeit dann über Channel 1 und 2 und Analog Input über Channel 1 - 4. So wie es bei dir implementiert ist geht es aber natürlich auch.


#3

Ich habe gerade eine Teststation aufgebaut mit folgendem Code:

} else {

    float co2 = 800;
    
    lpp.reset();
    lpp.addTemperature(1, hdc.getTemperature());
    lpp.addRelativeHumidity(1, hdc.getHumidity());
    lpp.addBarometricPressure(1, (bmp_sensor.getPressure() / 100));
    lpp.addLuminosity(1, tsl.getIlluminance());
    lpp.addLuminosity(2, veml.getUvIntensity());
    lpp.addAnalogInput(1, getSoundValue());
    lpp.addAnalogInput(2, my_sds.getPm25());
    lpp.addAnalogInput(3, my_sds.getPm10());
    lpp.addLuminosity(4, co2);

    // Prepare upstream data transmission at the next possible time.
    LMIC_setTxData2(1, lpp.getBuffer(), lpp.getSize(), 0);
    Serial.println(F("Packet queued"));
  }

Beim Luftdruck muss man den Messwert (in Pa) durch 100 teilen (in hPa) damit der Wertebereich passt. Ebenfalls muss man bei den analogen Werten aufpassen, dass man nicht aus dem Wertebereich fällt. Was die genauen Grenzen von addAnalogInput sind muss ich nochmal herausfinden. Jedenfalls könnte man den CO2 Wert als Helligkeitswert verschicken, da dieser ja auch nicht negativ sein kann. Weitere Infos findest du hier: https://www.thethingsnetwork.org/forum/t/cayenne-lpp-format-analog-data-wrong/14676


#4

Danke für die Antwort, werde die Änderungen gleich mal ausprobieren.


#5

@Felix

hat zum Teil funktioniert, die Temperatur liegt noch bei 0 obwohl sie in den Payloaddaten korrekt mit 21 Grad übertragen wird. Die Feinstaubwerte und der Sound sind ja im Moment noch nicht angeschlossen. Du kannst ja mal bei tigerlora_cayenne vorbeischauen.


#6

Hi @Felix
die folgenden Daten habe ich bei TTN runtergeladen:


Spielt die Reihenfolge wirklich keinen Rolle?
Stutzig macht mich besonders der letzte Wert “Temperatur” der auf der Webseite “tigerlora_cayenne” mit 0 angzeigt wird, während in den TTN-Daten er einen vernünftigen Wert hat.


#7

Kannst du nochmal in den Einstellungen der openSenseMap zu der Box “tigerlora_cayenne” schauen? Also ob in den Einstellungen auch die Temperatur mit dem richtigen Channel angegeben ist