INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
LoRa zu MQTT
26.01.2021, 22:33
Beitrag #1
Question LoRa zu MQTT
Hey Leute Wink

Ich habe versucht meine LoRa Sensordaten an meinen MQTT Server zu senden leider fehlt mir da noch was

Der Code funktioniert bisher perfekt bis auf das senden an MQTT ich weis nicht so recht wie ich die empfangen Daten aufteilen kann und dann im richtigen Format an MQTT sende.

Hier mal der aktuelle Sketch:

Code:
#include <WiFi.h>
#include <PubSubClient.h>
#include <Wire.h>
#include <SPI.h>
#include <LoRa.h>
#include <U8x8lib.h>


U8X8_SSD1306_128X64_NONAME_SW_I2C u8x8(/* clock=*/ 15, /* data=*/ 4, /* reset=*/ 16); // Oled


#define ss 18             // NSS   Pin LoRa
#define rst 14            // Reset Pin LoRa
#define dio0 26           // dio0  Pin LoRa


const char* ssid = "xxxxxxxxxxxxxxx";       // Wlan SSID
const char* password = "xxxxxxxxxx";       // Wlan Passwort


const char* mqtt_server = "xxxxxxxxxx";    // MQTT Server IP Adresse

WiFiClient espClient;
PubSubClient client(espClient);


char msg[50];


void setup() {
  
  Serial.begin(115200);

  setup_wifi();
  client.setServer(mqtt_server, 1883);   // MQQT Port
  client.setCallback(callback);

}



void setup_wifi() {                       // Setup Wifi
  
  delay(10);
  
  while (!Serial);
  Serial.println("LoRa Empfänger");

  
  LoRa.setPins(ss, rst, dio0);           // LoRa Setup
  

  while (!LoRa.begin(866E6)) {           // Netzauswahl - Europa
    Serial.println(".");
    delay(500);
  }


  LoRa.setSpreadingFactor(7);                     // Spreading Faktor 7 - 12
  LoRa.setSignalBandwidth(125E3);                 // Bandwidth zb. 125Kbaud - (125E3)
  LoRa.setCodingRate4(5);                         // CodingRate 5 -
  LoRa.enableCrc();                               // Crc Check
  LoRa.setSyncWord(0x34);                         // sync word ( 0-0xFF ) ****  (0x34); für LoRaWan ****
  LoRa.setFrequency(868100000);                   // Frequenz / Kanal
  Serial.println("LoRa OK!");

  
    u8x8.begin();
    u8x8.setFont(u8x8_font_chroma48medium8_r);
    u8x8.drawString(4, 0, "LoRa OK ");

  
  Serial.println();
  Serial.print("verbinden zu ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("");
  Serial.println("WiFi verbunden");
  Serial.println("IP Adresse: ");
  Serial.println(WiFi.localIP());
  
     u8x8.setCursor(2,1);
     u8x8.print("IP Adresse");
     u8x8.setCursor(0,2);
     u8x8.print(WiFi.localIP());
     delay(500);
    
}

void callback(char* topic, byte* message, unsigned int length) {
  Serial.print("Message arrived on topic: ");
  Serial.print(topic);
  Serial.print(". Nachricht: ");
  String messageTemp;
  
  for (int i = 0; i < length; i++) {
    Serial.print((char)message[i]);
    messageTemp += (char)message[i];
  }
  Serial.println();

}

void reconnect() {
  
  while (!client.connected()) {
    Serial.print("versuche MQTT zu verbinden...");
    
    if (client.connect("ESP8266Client")) {
      Serial.println("verbunden");
      
       u8x8.setCursor(0,3);
       u8x8.print("MQTT verbunden");
      
      client.subscribe("esp32/output");
    } else {
      Serial.print("failed, rc=");
      Serial.print(client.state());
      Serial.println(" erneuter Versuch in 6 Sekunden");

       u8x8.setCursor(0,3);
       u8x8.print("            ");
       u8x8.setCursor(0,3);
       u8x8.print("MQTT Fehler");
      
      delay(6000);
    }
  }
}


void loop() {
  
  if (!client.connected()) {
      

      reconnect();    
  }
  
       client.loop();


   int packetSize = LoRa.parsePacket();
  
  if (packetSize) {
  
    Serial.println("empfangenes Packet '");


    while (LoRa.available()) {
      
      String LoRaData = LoRa.readString();
      Serial.print(LoRaData);
      
       u8x8.setCursor(0,4);
       u8x8.print("Lora Packet:");
       u8x8.setCursor(0,5);
       u8x8.print(LoRaData);

  
      client.publish("esp32/lora", LoRaData);
    
      
    }

  
    Serial.print("' mit der RSSI ");
    Serial.println(LoRa.packetRssi());
      
       u8x8.setCursor(0,7);
       u8x8.print("RSSI: ");
       u8x8.setCursor(6,7);
       u8x8.print(LoRa.packetRssi());
  }
}



Ich denke das geht so nicht:

Code:
client.publish("esp32/lora", LoRaData);

Im Seriellen Monitor bekomme ich die Daten lesbar angezeigt die in LoRaData sind.
aktuell verwende ich einfach hallo 1
Wobei sich die zahl mit jedem Paket fortlaufend ändert 1, 2 ,3 usw...
Aber das Problem ist jetzt genau wie beim endgültigen Code das ich dann pro Sensor eine ID Sende und Werte für Temperatur und Luftfeuchte sowie Batteriespannung.

Hat jemand eine Idee was ich ändern könnte ?

Grüße

Shy
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  LoRa-Datenpaket "aufbrechen"? 4711engel 1 213 27.03.2021 19:27
Letzter Beitrag: Tommy56
  LoRa mit Ra-02 SX1278 4711engel 29 1.067 23.03.2021 22:41
Letzter Beitrag: Tommy56
  Arduino Messstation mit Lora Murdock 10 1.873 12.10.2019 13:28
Letzter Beitrag: hotsystems
  LoRa Shield Temperaturmesser Murdock 6 1.497 03.10.2019 10:35
Letzter Beitrag: hotsystems
  mqtt subscribe abfragen guenni71 4 3.789 03.07.2018 21:01
Letzter Beitrag: guenni71
  Arduino Wetterstation mqtt iobroker heli-freak66 56 21.299 27.05.2018 12:29
Letzter Beitrag: heli-freak66
  Lora uint8_t Potiwerte übergeben gandalf7588 1 1.497 08.04.2018 13:23
Letzter Beitrag: Tommy56
  MQTT ausgabe auf ili9341 wird flasch dargestellt merz 13 4.741 03.04.2018 11:30
Letzter Beitrag: merz

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste