Ich habe eine gute Nachricht. Mit Hilfe des
FreqTest.ino Sketches konnte ich alle mir zugesandten Funkmodule zum Laufen bringen.
Das ganze funktioniert wie folgt. Der Testsketch versucht ausgehend von der Standardfrequenz ein gültiges Paket zu empfangen. Wenn nichts empfangen wurde, wird die Frequenz geändert und es wird wieder versucht. Dabei wird jeweils versucht den Bereich oberhalb und unterhalb der Standardfrequenz zu erweitern. Wenn irgendwo ein Paket empfangen wurde, wird von dort ausgehend die obere und untere Grenze ermittelt. Am Schluss wird dann die Frequenz, die in der Mitte zwischen oberer und unterer Grenze liegt, in den vorher ungenutzten Bereich des EEPROM geschrieben.
Wenn jetzt ein "normaler" Sketch geflasht wird, wird beim Start geprüft, ob eine Frequenz im EEPROM abgelegt wurde und gegebenenfalls das Funkmodul damit initialisiert. Somit kann für jedes Gerät die Frequenz ermittelt werden.
Die Ausgabe beim Scann sieht dann wie folgt aus:
AskSin++ V3.1.7 (Jan 29 2019 21:23:22)
CC init1
CC Version: 14
- ready
Start searching ...
Freq 0x21656A: 0/0
Freq 0x2165BA: 0/0
Freq 0x21651A: 0/0
Freq 0x21660A: 996699. 1/88
Search for upper bound
Freq 0x21661A: 996699. 1/88
Freq 0x21662A: 996699. 1/89
Freq 0x21663A: 996699. 1/89
Freq 0x21664A: 996699. 1/87
Freq 0x21665A: 996699. 1/88
Freq 0x21666A: 996699. 1/89
Freq 0x21667A: 996699. 1/88
Freq 0x21668A: 996699. 1/88
Freq 0x21669A: 996699. 1/88
Freq 0x2166AA: 996699. 1/88
Freq 0x2166BA: 996699. 1/86
Freq 0x2166CA: 0/0
Search for lower bound
Freq 0x2165FA: 996699. 1/89
Freq 0x2165EA: 996699. 1/87
Freq 0x2165DA: 0/0
Done: 0x2165EA - 0x2166BA
Calculated Freq: 0x216652
Store into config area: 6652
Der Start mit einem "normalen" Sketch dann so:
AskSin++ V3.1.7 (Jan 29 2019 21:53:51)
Address Space: 32 - 242
CC init1
CC Version: 14
- ready
Bat: 25
Config Freq: 0x216652
Es gibt eine Ausgabe, wenn eine andere Frequenz benutzt wird.
Der Testsketch verhält sich im Standardfall passiv. Da bedeutet, dass nur versucht wird, Pakete zu empfangen. Wurde nach einer Minute (einstellbar durch
SCANTIME) nichts empfangen, wird die Frequenz gewechselt. Um sicher zu stellen, dass auch Nachrichten empfangen werden können, sollten während des Scans irgendein Gerät geschaltet werden.
Durch Setzen des
ACTIVE_PING Defines, kann der aktive Modus eingeschaltet werden. Dann sendet der Sketch jede Sekunde eine Statusmessage. Hierzu sind sind die
PING_FROM und
PING_TO IDs entsprechend der eigenen Umgebung anzupassen.
PING_FROM sollte eine gepairtes Geräte sein - z.B. Steckdose.
PING_TO ist die Zentrale/FHEM/CCU. Das Scannen sollte jetzt viel schneller gehen, da eine Antwort von der Zentrale angefordert wird.
Bedanken möchte ich mich bei tndx und dartrax für die schnelle Bereitstellung der problematischen Module