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
Sensorausgabe mit MQTT publishen ?
12.12.2020, 23:54
Beitrag #9
RE: Sensorausgabe mit MQTT publishen ?
(12.12.2020 22:36)nbk83 schrieb:  [...]

ich hätte jedoch gedacht, dass es nur die Anzahl der gefundenen BLE-Geräte angibt und nicht die MAC-Adressen....

Die MAC Adressen ist eigentlich das was ich brauche, ich will bestimmte BT-Geräte herausfiltern...

Die Ausgabe sieht in etwa so aus:
Code:
[...]
23:43:17.025 -> Advertised Device: Name: , Address: 23:0b:9c:26:f2:00, serviceUUID: 0000fd6f-0000-1000-8000-00805f9b34fb
23:43:17.353 -> Devices found: 10
23:43:17.353 -> Scan done!
Zitat:Versuch mal client.publish("esp/test",char(foundDevices.getCount()));
(wenn das nicht funktioniert, muss ich es selbst mal ausprobieren Wink )
Ich merke grad, dass ich bisher immer nur float zu char umwandeln musste, das geht mit dtostrf, wenn ich Werte per MQTT verschicke...

Hat leider nicht funktioniert. Ich hatte erst die "Ausführliche Ausgabe" aktiviert, aber das ist IMO zuviel Textwüste...!

Code:
Arduino: 1.8.13 (Windows 10), Board: "ESP32 Dev Module, Disabled, No OTA (2MB APP/2MB FATFS), 240MHz (WiFi/BT), QIO, 80MHz, 4MB (32Mb), 921600, None"

D:\NA_Projekte\Projekt_ESP_32\Sketches\MAN_ble_scanner_an_mqtt\MAN_ble_scanner_a​n_mqtt.ino: In function 'void loop()':

MAN_ble_scanner_an_mqtt:82:58: error: invalid conversion from 'char' to 'const char*' [-fpermissive]

   client.publish("esp/test",char(foundDevices.getCount()));

                                                          
In file included from D:\NA_Projekte\Projekt_ESP_32\Sketches\MAN_ble_scanner_an_mqtt\MAN_ble_scanner_a​n_mqtt.ino:9:0:

C:\Users\User\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:151:12: note:   initializing argument 2 of 'boolean PubSubClient::publish(const char*, const char*)'

    boolean publish(const char* topic, const char* payload);

            ^

Mehrere Bibliotheken wurden für "WiFi.h" gefunden

Benutzt: C:\Users\User\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\librar​ies\WiFi

Nicht benutzt: C:\Program Files (x86)\Arduino\libraries\WiFi

Mehrere Bibliotheken wurden für "BLEDevice.h" gefunden

Benutzt: C:\Users\User\Documents\Arduino\libraries\ESP32_BLE_Arduino

Nicht benutzt: C:\Users\User\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\librar​ies\BLE

exit status 1

invalid conversion from 'char' to 'const char*' [-fpermissive]

Dieser Bericht wäre detaillierter, wenn die Option
"Ausführliche Ausgabe während der Kompilierung"
in Datei -> Voreinstellungen aktiviert wäre.

"float zu char" , das Zeichenformat?

Obwohl ich bisher noch nicht viel Erfolg hatte mit meiner Sache, muss ich sagen das es trotzdem "etwas Erfolgreich" war heute. Ich bekomme auf jeden Fall mehr Routine...

bis dann,
Steinspiel
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.12.2020, 22:52 (Dieser Beitrag wurde zuletzt bearbeitet: 13.12.2020 22:57 von nbk83.)
Beitrag #10
RE: Sensorausgabe mit MQTT publishen ?
Moin Steinspiel,
jetzt hab ich es doch noch selbst ausprobiert. Zunächst gibt getCount Dir tatsächlich nur die Anzahl der gefundenen Geräte aus. Die Macadressen (und sämtlichen anderen Krams wie Name, UUID usw.) kommen aus folgender Zeile:
Serial.printf("Advertised Device: %s \n", advertisedDevice.toString().c_str());
Diesen Teil habe ich abgeändert, so dass er nur die MAC-Adresse ausgibt und dann per MQTT versendet:
Code:
Serial.printf("Advertised Device: %s \n", advertisedDevice.getAddress().toString().c_str());
      client.publish("ble/Adressen", advertisedDevice.getAddress().toString().c_str());
Desweiteren habe ich trotzdem noch die Anzahl der gefundenen Geräte per MQTT rausschicken lassen, guck am besten selbst mal durch den Sketch durch, was ich da gemacht habe (ist möglicherweise nicht ganz sauber, aber scheint offensichtlich zu funktionieren):
Code:
//WLAN und MQTT
#include <WiFi.h>
#include <PubSubClient.h>

const char* ssid = "xxxxxxxxxxxxxxxxxxxxxxx";
const char* password = "xxxxxxxxxxxxxxxxxxxxxxx";
const char* mqtt_server = "192.168.178.200";

WiFiClient BLEScanner;
PubSubClient client(BLEScanner);
char Anzahl[2];

//BLE
#include <BLEDevice.h>
#include <BLEUtils.h>
#include <BLEScan.h>
#include <BLEAdvertisedDevice.h>

int scanTime = 5; //In seconds
BLEScan* pBLEScan;

class MyAdvertisedDeviceCallbacks: public BLEAdvertisedDeviceCallbacks {
    void onResult(BLEAdvertisedDevice advertisedDevice) {
      Serial.printf("Advertised Device: %s \n", advertisedDevice.getAddress().toString().c_str());
      client.publish("ble/Adressen", advertisedDevice.getAddress().toString().c_str());
    }
};

void setup() {
  Serial.begin(115200);
  setup_wifi();
  client.setServer(mqtt_server, 1883);
  Serial.println("Scanning...");

  BLEDevice::init("");
  pBLEScan = BLEDevice::getScan(); //create new scan
  pBLEScan->setAdvertisedDeviceCallbacks(new MyAdvertisedDeviceCallbacks());
  pBLEScan->setActiveScan(true); //active scan uses more power, but get results faster
  pBLEScan->setInterval(100);
  pBLEScan->setWindow(99);  // less or equal setInterval value
}

void setup_wifi() {

  delay(10);
  // We start by connecting to a WiFi network
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

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

  
  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
}

void reconnect() {
  // Loop until we're reconnected
  while (!client.connected()) {
    Serial.print("Attempting MQTT connection...");
    // Attempt to connect
    // If you do not want to use a username and password, change next line to
    // if (client.connect("BLE")) {
    if (client.connect("BLE")) {
      Serial.println("connected");
    } else {
      Serial.print("failed, rc=");
      Serial.print(client.state());
      Serial.println(" try again in 5 seconds");
      // Wait 5 seconds before retrying
      delay(5000);
    }
  }
}

void loop() {
  // put your main code here, to run repeatedly:
  if (!client.connected()) {
    reconnect();
  }
  client.loop();
  BLEScanResults foundDevices = pBLEScan->start(scanTime, false);
  Serial.print("Devices found: ");
  Serial.println(foundDevices.getCount());
  dtostrf(foundDevices.getCount(), 2, 0, Anzahl);
  client.publish("ble/Anzahl",Anzahl);
  Serial.println("Scan done!");
  pBLEScan->clearResults();   // delete results fromBLEScan buffer to release memory
  delay(2000);
}
Angehängt noch zwei Screenshots aus IOBroker, wo der MQTT-Krempel ankommt.

Hoffe, das hilft jetzt ein wenig weiter.
Grüße Jan


Angehängte Datei(en) Thumbnail(s)
       
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.12.2020, 21:02
Beitrag #11
RE: Sensorausgabe mit MQTT publishen ?
Moin,
(13.12.2020 22:52)nbk83 schrieb:  jetzt hab ich es doch noch selbst ausprobiert. Zunächst gibt getCount Dir tatsächlich nur die Anzahl der gefundenen Geräte aus. Die Macadressen (und sämtlichen anderen Krams wie Name, UUID usw.) kommen aus folgender Zeile:
[...]

Ja, das haut gut hin!

[Bild: bed2ZqM.png]

Es gefällt mir das es kein JSON Object ist, für mich ist das im Moment noch flexibler...
Auf jeden Fall schon mal Danke!

Ich denke das ist erst mal für meine Zwecke ausreichend, ich werde Deinen Code erst mal bei mir laufen lassen... ;-)

Schönen Abend noch.

bis dann,
Steinspiel
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.12.2020, 21:23 (Dieser Beitrag wurde zuletzt bearbeitet: 14.12.2020 21:24 von nbk83.)
Beitrag #12
RE: Sensorausgabe mit MQTT publishen ?
schön, dass es läuft und danke fürs Feedback.
Womit wertest Du da aus? Ist das Node-Red?
Gruß Jan
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.12.2020, 20:05
Beitrag #13
RE: Sensorausgabe mit MQTT publishen ?
Moin,
(14.12.2020 21:23)nbk83 schrieb:  Womit wertest Du da aus? Ist das Node-Red?

Ja, erst mal mit Node-Red. Aber auch nur um in Zukunft den Schalter für Präsenzerkennung in openHAB zu schalten...:

Bisher läuft diese über die Bluetooth Erkennung im Raspberry -> REST API -> openHAB und das ziemlich unzuverlässig. :-( Die Verbindung zum BT Signal bricht zig mal hintereinander ab und wieder an usw. usf. Ob das aber am Raspberry liegt, an der Umsetzung über die REST API oder openHAB selbst, vermag ich nicht zu sagen.

Nun bin ich durch die ct`auf den ESP32 gekommen und die Verbindung zum BT Signal ist bisher kein einziges mal abgebrochen! :-) Über die Feiertage will ich mir dann den passenden Flow basteln und dann los..! ;-)

bis dann,
Steinspiel
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.12.2020, 20:54
Beitrag #14
RE: Sensorausgabe mit MQTT publishen ?
Moin Steinspiel,
dann bin ich mal auf die Langzeittests gespannt. Ich habe bei meiner ESP32-basierten MQTT-Wetterstation unregelmäßig das Problem, dass sie komplett abschmiert oder sich zwar noch anpingen lässt, aber keine Werte mehr an den Broker schickt. Wie ich hier im Forum gelesen habe, ist der ESP32 wohl nicht für außerordentlich stabiles Verhalten berühmt. Wobei ich sagen muss, dass meine ESP32Cam deutlich weniger Ausfälle hat. Möglichweise hängt es auch mit dem WLAN-Empfang zusammen.
Wenn Du ähnliche Probleme bekommen solltest, wäre evtl. ein D1 mini (ESP8266) plus BT-Modul eine Alternative. Mit den D1minis habe ich keinerlei Probleme bezüglich WLAN.
Viel Erfolg!
Gruß Jan
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.12.2020, 13:06
Beitrag #15
RE: Sensorausgabe mit MQTT publishen ?
(15.12.2020 20:54)nbk83 schrieb:  Moin Steinspiel,
dann bin ich mal auf die Langzeittests gespannt. Ich habe bei meiner ESP32-basierten MQTT-Wetterstation unregelmäßig das Problem, dass sie komplett abschmiert oder sich zwar noch anpingen lässt, aber keine Werte mehr an den Broker schickt. Wie ich hier im Forum gelesen habe, ist der ESP32 wohl nicht für außerordentlich stabiles Verhalten berühmt.

Das lässt sich ja ganz einfach umgehen, indem man den ESP32 in den Deepsleep schickt. Macht ohnehin Sinn, weil es Strom spart. Ich habe im Gartenhaus einen ESP32, der die Gartenbewässerung ansteuert - selbst wird er via openhab/MQTT gesteuert. Zusätzlich hängen da mehrere Sensoren dran. Die messe ich aber nur alle fünf Minuten - dazwischen langweilt sich der ESP. Die Anbindung erfolgt per Ethernet und wenn der ESP im Deepsleep ist, wird das ETH-Modul gleich ebenfalls ausgeschaltet (zweistufige Mosfet-Schaltung). Ob der ESP in Deepsleep gehen soll oder dauerhaft online bleibt, das steuert man auch per MQTT. D.h. in openhab habe ich sowas wie "Deepsleep aktiv" und das landet dann in einem MQTT-Topic, das retained ist. Wacht der ESP auf, fragt er am Ende dieses Topic ab. Je nachdem, was drinsteht, geht er dann wieder für 5min in Deepsleep oder bleibt halt wach.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Nano-nRF wie ESP für MQTT? AnFi 7 194 20.07.2021 21:09
Letzter Beitrag: hotsystems
  ESP32Cam und MQTT tenor 1 348 30.06.2021 21:00
Letzter Beitrag: tenor
  Wemos d1 Ph Sonde - Hilfe bei Daten per MQTT senden SoerenKaiser99 23 2.418 10.05.2021 21:25
Letzter Beitrag: SoerenKaiser99
  Einer RGB-LED am ESP Werte aus MQTT zuweisen. Manny 2 661 15.04.2021 16:50
Letzter Beitrag: Manny
  Erfahrungen mit ESP32 und WLAN/MQTT oder was ich beobachtet habe... Arduino4Fun 23 5.535 09.04.2021 16:15
Letzter Beitrag: amshh
  BUILTIN_LED vom ESP mit MQTT und NodeRed schalten. Manny 7 1.046 22.03.2021 18:24
Letzter Beitrag: Manny
  MQTT Topic abbonieren? Steinspiel 32 3.715 21.01.2021 22:50
Letzter Beitrag: Tommy56
  433MHz-WiFi-MQTT-Sender nbk83 25 3.020 04.01.2021 16:35
Letzter Beitrag: nbk83
  Wo MQTT LogIn Daten einfügen? Steinspiel 10 1.632 28.12.2020 14:32
Letzter Beitrag: Tommy56
  Hilfe bei async-mqtt-client für ESP32 amshh 7 1.567 12.11.2020 09:19
Letzter Beitrag: amithlon

Gehe zu:


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