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
mehrere ESP`s mit Strom versorgen?
01.01.2021, 19:37
Beitrag #17
RE: mehrere ESP`s mit Strom versorgen?
Moin Tommy,
(01.01.2021 16:53)Tommy56 schrieb:  Du solltest noch unterscheiden lernen zwischen quote und code.
[...]

Nee, den kenn ich! Undecided
Sorry, ich habe außerhalb des Browsers die Antwort verfasst und da ist mir das durchgerutscht.Angry
Soll nicht mehr vorkommen!

bis dann,
Steinspiel
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
01.01.2021, 23:41 (Dieser Beitrag wurde zuletzt bearbeitet: 01.01.2021 23:42 von nbk83.)
Beitrag #18
RE: mehrere ESP`s mit Strom versorgen?
Moin Steinspiel,
Zitat:Das Problem scheint wohl "mqtt" zu sein
Das stimmt. Du hast in Zeile 34 (PubSubClient client(espClient); ) "client" als deinen Postdienstleister ernannt, über den die gesamte MQTT-Kommunikation läuft. Ich vermute mal, dass dieser Postdienstleister in deinem BLE-Sketch "mqtt" hieß. Den kennt der neue Sketch aber nicht. Mache einfach aus mqtt.publish --> client.publish und dann lass ruhig MQTT_scantopic stehen.
Warum allerdings das publishen nach der händischen Änderung nicht funktioniert, da bin ich etwas überfragt. Versuche mal das (char*) rauszunehmen, aber das ist jetzt auch etwas stochern im Dunkeln meinerseits. Bei
Code:
client.publish(MQTT_scantopic, NachrichtJSON.c_str());
beschwert sich der Compiler zumindest auch nicht...
Aber zu dem Thema (strings, chars, arrays, umwandlungen, usw.) könnte vielleicht Tommy die Literaturhinweise geben.
Hat es denn in dem reinen BLE-Sketch funktioniert? Und hast Du in mqtt.fx die Topics einzeln angegeben oder eine Wildcard subscribed? wenn nicht, dann versuche das sonst mal.
Zitat:Ich habe in meinem schlauen Arduino Buch nichts dazu finden können, wo liegt der Unterschied? Oder warum macht "man" das unterschiedlich?
Welches Buch hast Du denn? Hast Du Dir auch schon die Code-Referenz (ganz oben hier im Forum unter dem grünen Banner) angesehen? Da steht ganz gut der Unterschied zwischen #define und const beschrieben.
Kurz:
#define: Der Compiler geht den gesamten Sketch in "Suchen/Ersetzen"-Manier durch, bevor das Programm in Maschinensprache übersetzt wird.
const: Es wird eine (unveränderliche) Variable erzeugt (die dann auch einen Speicherplatz belegt), auf die das übersetzte Programm während der Ausführung zugreift.
Zitat:Mir ist noch was aufgefallen: in dem "BME280 Sketch" gibt es einen LED Pin (const int ledPin_blau = 19) der sich per MQTT Subscribe AN und AUS schalten lässt. Das funktioniert auch gut. In der "zusammen gelegten Verion" ist es aber so das, wenn ich in Node-Red den Switch schalte dieser auch augenblicklich in MQTT.fx angezeit wird, es aber bis zum reagierender LED auf dem ESP32 bestimmt zwei,drei Sekunden dauert. Das ganze ist erst mal nebensächlich, ich wollte es nur erwähnt haben...
Was sagt denn der Serielle Monitor? Wird da die Nachricht auch verzögert angezeigt? Möglicherweise blockiert auch der BLE-Scanner irgendwas (hab diesbezüglich aber nichts gefunden...). Dachte zuerst, dass es an den delays für das LED-Blinken liegt, aber das wird ja nur alle 1/10/15 Minuten ausgeführt. Delays solltest Du grundsätzlich im loop vermeiden, da der Prozessor in dem Moment nichts anderes macht, als warten bis die Zeit rum ist und alles andere blockiert.
Des Weiteren ist mir aufgefallen, dass dein BLE Setup im WiFi_Setup gelandet ist. Funktioniert auch irgendwie, aber ich würde es ins normale Setup schreiben, bzw. in eine eigene Funktion, die im Setup aufgerufen wird.
So, ich glaub, das wars erstmal Wink
Grüße Jan
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.01.2021, 00:32
Beitrag #19
RE: mehrere ESP`s mit Strom versorgen?
Moin,

(01.01.2021 23:41)nbk83 schrieb:  Moin Steinspiel,
[...]

Angesichts der späten Stunde erst mal ein großes Danke! Ist ja wirklich Super das Du so schnell Zeit gefunden hast für meinen Kram!

Ich werde mich morgen ran setzen und versuchen alles zu berichtigen und dann Auskunft geben.

Die erwähnte Code-Referenz von oben nehme ich jetzt mit in Bett... Big Grin

bis dann,
Steinspiel
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.01.2021, 00:45
Beitrag #20
RE: mehrere ESP`s mit Strom versorgen?
Ich noch mal,

(01.01.2021 23:41)nbk83 schrieb:  [...]
Ich vermute mal, dass dieser Postdienstleister in deinem BLE-Sketch "mqtt" hieß.
[...]

Es hat mir doch keine Ruhe gelassen einfach so jetzt den Rechner runter zu fahren...Wink
Du scheinst Recht zu haben, in meinem original Sketch steht

Code:
PubSubClient mqtt(MQTT_server, 1883, wclient);

und ich habe wieder was dazu gelernt, denn diese "MQTT Sache" ist das was mich im Moment an diesen µController`n sehr interessiert.

Also, bis morgen dann...

bis dann,
Steinspiel
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.01.2021, 09:46
Beitrag #21
RE: mehrere ESP`s mit Strom versorgen?
(01.01.2021 23:41)nbk83 schrieb:  #define: Der Compiler geht den gesamten Sketch in "Suchen/Ersetzen"-Manier durch, bevor das Programm in Maschinensprache übersetzt wird.
const: Es wird eine (unveränderliche) Variable erzeugt (die dann auch einen Speicherplatz belegt), auf die das übersetzte Programm während der Ausführung zugreift.
Bist du dir sicher bezüglich Speicherplatz?

Code:
//#define ZAHL 34567
//Der Sketch verwendet 261992 Bytes (25%) des Programmspeicherplatzes. Globale Variablen verwenden 26884 Bytes (32%)

const int ZAHL {34567};
//Der Sketch verwendet 261992 Bytes (25%) des Programmspeicherplatzes. Globale Variablen verwenden 26884 Bytes (32%)

//constexpr int ZAHL {34567};
//Der Sketch verwendet 261992 Bytes (25%) des Programmspeicherplatzes. Globale Variablen verwenden 26884 Bytes (32%)

void setup() {
  Serial.begin(115200);
  delay(100);
  Serial.println(ZAHL);
}

void loop() {}

Hier hast du wohl recht.
Code:
//#define STR "Braucht_es_Speicherplatz_dafür!"
//Der Sketch verwendet 261784 Bytes (25%) Globale Variablen verwenden 26916 Bytes (32%)

//const char* STR {"Braucht_es_Speicherplatz_dafür!"};
//Der Sketch verwendet 261788 Bytes (25%) Globale Variablen verwenden 26920 Bytes (32%)

constexpr char* STR {"Braucht_es_Speicherplatz_dafür!"};
//Der Sketch verwendet 261784 Bytes (25%) Globale Variablen verwenden 26916 Bytes (32%)

void setup() {
  Serial.begin(115200);
  delay(100);
  Serial.println(STR);
}

void loop() {}

Deshalb sollte man "constexpr" den Vorzug geben.

Noch zu erwähnen, die Werte in geschweiften Klammern ermöglicht es dem Kompilier eine Überprüfung durchzuführen.

Zitat:#define GANZZAHL 345.67
constexpr int GANZZAHL = 345.67;
Wird klaglos hingenommen!

Zitat:constexpr int GANZZAHL {345.67};
warning: narrowing conversion of '3.4567000000000002e+2' from 'double' to 'const int' inside { } [-Wnarrowing]
Mit Klammern meckert der Kompilier, sofern die Warnungen eingeschaltet sind.

Gruß Fips

Meine Esp8266 & ESP32 Projekte
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.01.2021, 13:54
Beitrag #22
RE: mehrere ESP`s mit Strom versorgen?
(02.01.2021 09:46)Fips schrieb:  Bist du dir sicher bezüglich Speicherplatz?
Ich war es Wink Fand auch eigentlich die Erklärung in der Arduino-Referenz recht schlüssig....
Und Zack, wieder was dazu gelernt.
Gruß Jan
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.01.2021, 19:23
Beitrag #23
RE: mehrere ESP`s mit Strom versorgen?
Moin,

(01.01.2021 23:41)nbk83 schrieb:  Das stimmt. Du hast in Zeile 34 (PubSubClient client(espClient); ) "client" als deinen Postdienstleister ernannt,
[...]

Ich habe es ums Verrecken nicht hinbekommen! Zig mal den "Postdienstleister" angepasst - es ging nicht!Confused

Dann habe ich die beiden Ur-Sketche genommen, die MQQT Parameter in jedem einzelnen so angepasst das alle Namen, Variablen(?) die mit MQTT zu tun hatten in beide Sketche gleich hießen und beide Sketche dann zusammengeführt. Und siehe da: es lief! :-)

Zitat:Und hast Du in mqtt.fx die Topics einzeln angegeben oder eine Wildcard subscribed? wenn nicht, dann versuche das sonst mal

Den MQTT.fx dient hier nur zur schnellen Kontrolle, "eigentlich" empfange ich die MQTT Daten mit Node-Red und werte sie dann aus. Da jeder (MQTT)-Node für nur einen Topic zuständig ist, habe ich keine Wildcard genommen.

Zitat:Welches Buch hast Du denn?

Das "Arduino Kompendium" von D.Schreiter, gehört wohl Standartmäßig zum Arduino Starter Kit...

Zitat:[LED per MQTT Subscribe schalten]
Was sagt denn der Serielle Monitor? Wird da die Nachricht auch verzögert angezeigt? Möglicherweise blockiert auch der BLE-Scanner irgendwas

Schalte ich in Node-Red besagten Schalter (der dann einen MQTT Publish auslöst) so wird dieser auch umgehend in MQTT.fx angezeigt. Im seriellen Monitor kommt er meistens mit 4 - 8 Sekunden Verzögerung an, schaltet dann aber sofort.

Eigentlich ist es zu 95% so das er verzögert schaltet. :-(


Zitat:Delays solltest Du grundsätzlich im loop vermeiden

Und kannst Du mir ne Möglichkeit zeigen womit ich das im Loop ersetzen könnte ?

Code:
        digitalWrite(ledPin_gelb, HIGH);    // sets the LED on
        delay(1000);                        // waits for a second
        digitalWrite(ledPin_gelb, LOW);     // sets the LED off

Zitat:[Funktionen]
bzw. in eine eigene Funktion, die im Setup aufgerufen wird.

Das wollte ich noch einmal fragen: Diese "Funktionen" sind das so etwas, was bei mir z.B. so aussieht?

Code:
setup_wifi();
void setup_wifi() {

//-- oder --

reconnect();
void reconnect() {

Wenn ja, sind Namen und Positionen im Sketch frei wählbar?



Zitat:So, ich glaub, das wars erstmal Wink

Sehr vielen Dank für Deine Hilfe! Wirklich, Du hast mir sehr geholfen und der ganze Nachmittag mit diesen beiden Sketchen hier, hat mir einiges gezeigt!

Das mit dem Subsribe Topic werde ich aber weiter verfolgen...

bis dann,
Steinspiel
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.01.2021, 23:00
Beitrag #24
RE: mehrere ESP`s mit Strom versorgen?
Moin Steinspiel,
Zitat:Und siehe da: es lief! :-)
Sehr schön! Jedes Neu-Tippen übt auch Wink Bekommst Du denn jetzt auch dein JSON übermittelt vom Scanner?
Zitat:habe ich keine Wildcard genommen.
Das war eine Idee, um zu überprüfen, ob Du dich vielleicht nur beim Topic vertippt hast, da Du dann halt erst einmal alles mitschneidest. Ich selbst arbeite nicht mit mqtt.fx oder Node-Red, von daher kann es sein, dass auch mal eine doofe Nachfrage kommt Wink
Zitat:Im seriellen Monitor kommt er meistens mit 4 - 8 Sekunden Verzögerung an, schaltet dann aber sofort.
Hmm, versuche mal die Scantime des Scanners runter zu setzen (wenn ich recht erinnere liegt die aktuell bei 8 Sekunden), und guck, ob sich das Verhalten ändert. Wenn ja, ist der Fehler zwar nicht behoben, aber zumindest eingegrenzt.
Zitat:Und kannst Du mir ne Möglichkeit zeigen womit ich das im Loop ersetzen könnte ?
Ja, könnte ich. Da haben sich andere aber schon viel Mühe mit gegeben. Smile
Zitat:Diese "Funktionen" sind das so etwas, was bei mir z.B. so aussieht?
Genau. Die Funktionen, also z.B. void setup_wifi() {tu was}, kannst Du letztendlich überall außerhalb von anderen Funktionen hinschreiben. So wie es für Dich am übersichtlichsten ist. Der Aufruf, also setup_wifi(); kommt dann dahin, wo die Funktion ausgeführt werden soll. Bei den Namen bist Du völlig frei, es sei denn der wird schon anderweitig verwendet. Wenn Du deutsche Namen verwendest, bist Du eigentlich auf der sicheren Seite.
Zitat:Das mit dem Subsribe Topic werde ich aber weiter verfolgen...
???
Könntest Du nochmal eine aktuelle Version des Sketches posten.
Grüße Jan
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Mehrere EthernetClients/WiFiClients in verschiedenen Tasks? miq19 15 2.066 07.10.2020 18:15
Letzter Beitrag: Tommy56
  ESP32 Cam mehrere Clients nbk83 3 2.013 29.04.2020 21:22
Letzter Beitrag: nbk83
  Strom sparen bei ESPs im Batteriebetrieb ardu_arne 0 1.172 11.12.2019 20:47
Letzter Beitrag: ardu_arne
  Begrenzung 2048 Bytes: Wie mehrere Pakete? GuaAck 10 5.002 06.02.2018 17:12
Letzter Beitrag: GuaAck

Gehe zu:


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