FHEM Forum

CUL - Entwicklung => Fehlerberichte => Thema gestartet von: Enginiana Jones am 22 November 2016, 21:57:31

Titel: Erkennung RFM69HCW-Jeelink in "LaCrosseITPlusReader" fehlerhaft?
Beitrag von: Enginiana Jones am 22 November 2016, 21:57:31
Hallo Zusammen

hoffe ich bin hier im richtigen Abschnitt auch für JeeLinks. Hab leider keine bessere Ecke gefunden.

Nach dem ich mit meinen Jeelink bei den Funksteckdosen gerade feststecke, habe ich mich mal näher damit beschäftigt warum mein DIY-Jeelink (Arduino Nano Clone + Adafruit RFM69HCW (https://learn.adafruit.com/adafruit-rfm69hcw-and-rfm96-rfm95-rfm98-lora-packet-padio-breakouts/overview)) keinerlei Temperatursensoren erkennt.

Ich hab mit der Arduino-Umgebung und dem Sketch aus dem Sourceforge-repository (http://sourceforge.net/p/fhem/code/HEAD/tree/trunk/fhem/contrib/arduino/) von FHEM mal angefangen.
Debugging an im Sketch und auf Arduino geladen.

Erste Antwort im Serial Monitor:
[LaCrosseITPlusReader.10.1q (RFM12 f:868300 r:17241)]


Dann im Code mal gegraben und die Init-Kette für die RFM-ICs im Code verfolgt.
Bin dann in der RFMxx.cpp auf den Abschnitt gestoßen, der die Erkennung des RFM-ICs ausführt.


...
  // No radio found until now
  m_radioType = RFMxx::None;

  // Is there a RFM69 ?
  WriteReg(REG_PAYLOADLENGTH, 0xA);
  if (ReadReg(REG_PAYLOADLENGTH) == 0xA) {
    WriteReg(REG_PAYLOADLENGTH, 0x40);
    if (ReadReg(REG_PAYLOADLENGTH) == 0x40) {
      m_radioType = RFMxx::RFM69CW;
    }
  }

  // Is there a RFM12 ?
  if (m_radioType == RFMxx::None) {
    if (isPrimary) {
      m_radioType = RFMxx::RFM12B;
    }
    else {
      spi16(0x820C); // Osc. + LBD
      for (int i = 0; i < 1000; i++) {
        asm("nop");
      }

      spi16(0xC04F); // LBD=3.7V
      for (int i = 0; i < 1000; i++) {
        asm("nop");
      }
      if ((spi16(0x0000) & 0x0400) == 0x0400) {
        spi16(0xC040);  // LBD = 2.2V
        for (int i = 0; i < 1000; i++) {
          asm("nop");
        }

        if ((spi16(0x0000) & 0x0400) == 0) {
          m_radioType = RFMxx::RFM12B;
        }
      }
    }
  }
...


Nachdem ich ja neugierig war, warum mein RFM69HCW vom sketch als RFM12B identifiziert wird, hab cih dort mal ein paar Serial.println zum debugging reingepackt.


...
// No radio found until now
  m_radioType = RFMxx::None;

  Serial.println("Teststring um Zeit zu gewinnen für Konsole");

  // Is there a RFM69 ?
  WriteReg(REG_PAYLOADLENGTH, 0xA);
  if (ReadReg(REG_PAYLOADLENGTH) == 0xA) {
   
    Serial.println("A1 PayloadLength: " && ReadReg(REG_PAYLOADLENGTH));
   
    WriteReg(REG_PAYLOADLENGTH, 0x40);
    if (ReadReg(REG_PAYLOADLENGTH) == 0x40) {
     
      Serial.println("A2 PayloadLength: " && ReadReg(REG_PAYLOADLENGTH));
     
      m_radioType = RFMxx::RFM69CW;
    }
  }

  // Is there a RFM12 ?
  if (m_radioType == RFMxx::None) {
    Serial.println("A3");
    if (isPrimary) {
      Serial.println("A4");
      m_radioType = RFMxx::RFM12B;
    }

...


Damit sollte man rausfinden was beim Init und Identifizierung so alles passiert.

Auf Arduino laden, SerialMonitor an und folgende Ausgabe:



Teststring um Zeit zu gewinnen
A3
A4
Teststring um Zeit zu gewinnen
A3
*** LaCrosse weather station wireless receiver for IT+ sensors ***
Radio is: RFM12
Radio setup complete. Starting to receive messages

[LaCrosseITPlusReader.10.1q (RFM12 f:868300 r:17241)]



Ich bin jetzt kein wirklicher Arduino-/ATMega-Hexer und nur stümperhafter Code-Verstümmler, aber was ich aus der Ausgabe meine zu lernen:


Mein Schluss:
Da läuft irgendwas im Code komplett schief weil die RFM69xx Erkennung komplett übersprungen wird?

Wenn es irgendwie geht, unterstütze ich gerne weiterhin beim Debuggen des Codes mit meinen bescheidenen Möglichkeiten.

Wenn ich irgendwo einen Denkfehler habe (Init/Identify RFMxx kommt vielleicht vor Setup-Schleife des Arduino in der Serial-Interface überhaupt erst konfiguriert wird? -> Warum dann überhaupt Ausgaben bei eingefügten Serial.prints ???)

Dank fürs Lesen und die Mühe!

Grüße
Titel: Antw:Erkennung RFM69HCW-Jeelink in "LaCrosseITPlusReader" fehlerhaft?
Beitrag von: Trinidad am 17 März 2017, 19:40:42
Habe das selbe Problem. Gibt es Lösungen?
Titel: Antw:Erkennung RFM69HCW-Jeelink in "LaCrosseITPlusReader" fehlerhaft?
Beitrag von: KölnSolar am 17 März 2017, 20:20:35
vermutlich nicht. Dieses Subforum trägt die Überschrift CUL-Entwicklung (vs. Jeelink-Entwicklung). Du kannst also warten bis der Thread-Author in das richtige Subforum verschiebt oder dort ein neues Thema aufmachen. Ich würde es mal mit "Sonstige Systeme" versuchen.