@Andreas erzählte neulich noch von einem Repo, das @einsiedlerkrebs ausgegraben hatte. Es soll Funk von ner Wetterstation mit einem ESP32 und RFMxx einfangen und (per MQTT?) ins Netz weiterleiten können.
Hatte mit @Andreas am Telefon kurz darüber gequatscht, dann war meine Vorstellung weiter als die Realität, hab’s wohl falsch verstanden, dachte da gibt es irgendwo schon eine code base, wenn auch beta …
Etwas recht Ähnliches, allerdings mit reiferer library-Basis ist der Folgende. Hier hat jemand ausgewählte Betriebsarten und Protokolle der rtl_433 -lib genommen und sie auf eine kleinere Platform (ESP32 u. SX127x(RFM9x) bzw. CC1101) anstelle RTL2832-USB-Stick als HF-Basis portiert:
Das hier sind unsere Neuigkeiten zum Thema. Leider scheint der Heltec WiFi LoRa 32 v3 ungeeignet:
^^ Unabhängig davon…
… konnten wir aber in diesem Repository keine Dekodierungsroutinen für die Bresser Stationen finden, bzw. Ansätze, diese aus der rtl_433_ESP Bibliothek zu nutzen. OpenMQTTGateway scheint also wirklich ausschließlich eine Any-to-Any Funkgateway-Lösung zu sein, ohne dass es sich um weitere Details wie die Dekodierung der Daten kümmert? Eigentlich kaum vorstellbar…
Vielleicht ergeben sich hier gegensätzliche positivere Sichtweisen, aber bis dahin haben wir erstmal wieder mit BresserWeatherSensorReceiver weitergemacht, und zwar mit einem Pycom LoPy 1 aus dem Fundus von @einsiedlerkrebs, der einen SX1272 an Bord hat.
Hier war die Hauptg’schicht, dass der LoRa Chip des LoPy nicht am (aus Arduino Sicht) “Standard” SPI Port des ESP32 angeschlossen ist, so dass es die Möglichkeit geben muss, das entsprechende Busadapter Objekt des HAL, meist "SPI" genannt, passend zu konfigurieren und MISO MOSI CLK frei zu belegen. Das sah die dort verwendete Bibliothek RadioLib: Universal wireless communication library for Arduino leider out-of-the-box nicht vor.
Weitere Details, welche Werte belegt werden müssen, kann @einsiedlerkrebs vielleicht noch nachträglich beitragen. Ich glaube sie stammen aus dem entsprechenden Pinbelegungsplan lopy-pinout.png.
RTL_433_ESP ist (bislang) für SX127x und CC1101, leider nicht für SX126x, daher bis auf Weiteres nicht für den Heltec WiFi LoRa 32 v3 (HTIT-WB32LAF).
Außerdem: die erwähnte Bresser-Station moduliert nicht in OOK/ASK, sondern FSK. RTL_433_ESP beherrscht OOK (also ASK), die Versuche des Autors mit FSK sind inzwischen zwei Jahre alt und wurden v.a. eingestellt, weil ihm kein Gerät mit FSK zum Testen zur Verfügung steht.
Dennoch enthält das letzte tag release v0.2.0 (gerade ein paar Tage alt) wieder den FSK-Modus (noch mehr oder weniger undokumentiert):
Includes FSK decoders as an undocumented feature, as the receiver modules need tuning for FSK modulation, and testing.
Die OpenMQTTGateway-community wird sicher drängeln, daher wird aus rtl_433_ESP die FSK-Betriebsart bestimmt auch nicht mehr verschwinden.
Das hilft @einsiedlerkrebs beim HTIT-WB32LAF leider noch nicht, auch wenn mit FSK eine wichtige Voraussetzung erfüllt wäre.
Das verstehe ich nicht, denn es ist doch kein ESP32-S3 (da wäre es erklärlich), sondern ein ‘alter’ ESP32-D0 ?! das war Unsinn von mir; ich wollte schreiben:
“frei zu konfigurieren” verstehe ich nicht.
MOSI, MISO und SCLK sind intern fest verdrahtet (stellen den Kern des SPI peripheral dar), die müssen halt nur dem SX1272 im LoPy 1 entsprechend definiert und nicht mehr überschrieben werden. SS (oder CS), “LoRa IRQ” und “LoRa Reset” sind auch nicht frei, da auch mit dem SX1272-Modul verbunden.
Vielen Dank für die Recherchen und die Bestätigung, dass diese Betriebsart mit dem Heltec WiFi LoRa 32 v3 (HTIT-WB32LAF) derzeit nicht möglich ist, und dass es am SX126x liegt.
Wir könnten das ja per Software mglw. auch wieder zurückmappen, auch an RadioLib vorbei. @einsiedlerkrebs: Eigentlich sollte es reichen, die jeweiligen HAL Definitionen im Programmcode zu überschreiben, wenn das tatsächlich falsch in der Boarddefinition für das lopy Modell steht. Danke, @weef.
Zum Vergleich die Softwarebelegung beim LoPy4:
Was mich stutzig macht, ist, dass bei beiden “SX1276” dran steht. Wir dachten, der LoPy1 hätte einen SX1272 an Bord [1]. Mglw. ist es nur ein Tippfehler?
Als wir dran waren, haben wir gar nicht an die Boarddefinition gedacht, sondern hatten vor allem die Bibliotheken vor Augen. Und daher haben wir dann eben den Eingriff dort in RadioLib gemacht, und _spi->begin(li, la, lu); hingeschrieben, statt den Initialisierer, wie an dieser Stelle zu sehen, “leer” zu lassen.
Bleibt die Frage:
… also wer oder was definiert sonst irgendwo was um?
Danke Dir vielmals! Ich glaube wir müssen erst sehen, was @einsiedlerkrebs in den Initializer bei spi->begin(li, la, lu) de facto reingeschrieben hat, bevor wir weiter mutmaßen können, wie wo was falsch sein könnte. Vielleicht tut er uns auch nochmal die originale Fehlermeldung dazu. Das hilft auch ein wenig weiter, wenn man nur von der Ferne auf den Code schaut.