Universelle Hardware-Basis für 868MHz Funksensoren und Aktoren

Begonnen von papa, 05 Juli 2017, 22:12:42

Vorheriges Thema - Nächstes Thema

papa

Zitat von: Living am 19 März 2018, 22:27:37
Hi,
jetzt habe ich es geschafft.
Mit keinem meiner HM-SEN-MDIR-WM55.ino Dateien liefert mir mein Modul den brightness-Wert.
Motion funktioniert!
Auch meine Lösung aus Antwort 326 funktioniert nicht mehr.
Habe deshalb Arduino neu installiert. Auch danach kein brightness-Wert.
In Fhem wird immer 0 angezeigt.
Bei Rolf funktioniert es doch auch und ein Testlauf mit der sensorapi.ino war auch erfolgreich.
Wo ist mein Fehler??
Kann ich in die HM-SEN-MDIR-WM55.ino etwas einfügen, damit ich im Monitor etwas sehe?

Hast Du den "Addr Sel" Pin vom TSL2561 auf GND ? Sonst hat er eine andere Adresse als im Code angenommen.
Ausgaben kommen in sensors/Tsl2561.h eingefügt werden.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Living

#361
Addr Pin ist an Gnd. Die sensorapi.ino zeigte Werte.

In Antwort 321 hast du mir diesen Tip gegeben
ZitatKannst Du bitte mal ein paar Ausgaben in die Tsl2561::measure() Methode einbauen. Mal sehen was wir da so für Wert kriegen.
Was sollte ich hier wo eingeben?

Plötzlich nach Änderung der Stromversorgung (nicht mehr über den angeschlossenen USBASP) zeigt er ab 11:26 Werte an .
Rätselhaft!!

12:11 Uhr keine brighness Werte mehr. Ich sehe keine schlechten Kontakte..............

Living

Hi Papa,
ich habe in sensors/Tsl2561.h folg. eingefügt:
Zitatvoid measure (__attribute__((unused)) bool async=false)   
  {
    if( present() == true ) {   
      uint16_t b = _tsl.getLuminosity(TSL2561_VISIBLE);
     Serial.print(b); Serial.println("  1Lux");
      if( b > 63000 && _x16 == true ) {
        _x16 = false;
        _tsl.setGain(TSL2561_GAIN_0X);
        b = _tsl.getLuminosity(TSL2561_VISIBLE);
      Serial.print(b); Serial.println("  2Lux");
      }
      else if ( b < 500 && _x16 == false ) {
        _x16 = true;
        _tsl.setGain(TSL2561_GAIN_16X);
        b = _tsl.getLuminosity(TSL2561_VISIBLE);
   Serial.print(b); Serial.println("  3Lux");
      }
      _brightness = b;
     Serial.print("b= ");Serial.print(b); Serial.print("   TSL2561_VISIBLE= ");Serial.print(TSL2561_VISIBLE);Serial.println("  4Lux");
    }
  }
jeweils LUX am Ende.
und erhalte im Monitor folgende Info
ZitatMotion
0  1Lux
b= 0   TSL2561_VISIBLE= 2  4Lux
<- 0D 06 86 41 907890 000000 03 06 00 60  - 4327
minInterval End
d.h. der Sensor hat nichts oder?

papa

Tja - der Sensor gibt einfach 0 zurück. Wenn es ja zwischen durch schon mal geklappt hat, wird es mit großer Wahrscheinlichkeit nicht am Code liegen. Das schöne am Computern ist halt, dass sie alle Befehle immer exakt gleich ausführen. Es muss irgendwie mit Deinem Aufbau zusammenhängen. Wackelkontakt ? Hast Du auch die Pullups für den I2C Bus angeschlossen ?
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Living

Wenn der Sketch sensorapi.ino läuft und Lux Werte anzeigt -> Hardware ist o.k.!
Ich lade dann nur den HM-SEN-MDIR-WM55.ino und die Hardware hat dann einen Fehler?
Ich habe leider den Sketch mit dem die Baugruppe bereits lief nicht mehr.
Ich suche weiter.

jp112sdl

Nabend...
Ich wollte jetzt auch mal mit dem HM-SEN-MDIR-WM55.ino experimentieren.
Jedoch bekomme ich ihn (den mitgelieferten Beispiel-Sketch) nicht mal an die CCU angelernt.
<- 1A 02 84 00 907890 000000 0B 00 DB 70 61 70 61 31 31 31 33 33 33 81 03 01 00  - 3448
Das ist alles... und die LED an Pin 4 blinkt dann.

Im RFD-Log der CCU sehe ich
2018/03/21 22:24:46.580  RX SERIAL: fd 00 20 01 26 05 00 ff 46 0b 84 00 90 78 90 00 00 00 0b 00 db 70 61 70 61 31 31 31 33 33 33 81 03 01 00 cc 06
2018/03/21 22:24:46.581  RX FRAME: 01 26 05 00 ff 46 0b 84 00 90 78 90 00 00 00 0b 00 db 70 61 70 61 31 31 31 33 33 33 81 03 01 00
2018/03/21 22:24:46.581  (LEQ0556383) CCU2CommController::handleIncomingSerialFrame(): Handling event telegram as event.


Hat jemand einen Tipp für mich?

papa

Vielleicht passt der Typ "MotionDetector" in der DeviceInfo nicht.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

jp112sdl

Hmm, habe mal DeviceType::Sensor probiert, aber der geht auch nicht.
Anderen Typen scheinen nicht plausibel.

Mit peering_sysinfo_expect_channel="false" in der Firmware-XML wirds wohl nix zu tun haben!?

papa

Probiere mal FirmwareVersion auf 0x11

const struct DeviceInfo PROGMEM devinfo = {
    {0x90,0x78,0x90},       // Device ID
    "papa111333",           // Device Serial
    {0x00,0xdb},            // Device Model
    0x11,                   // Firmware Version
    as::DeviceType::MotionDetector, // Device Type
    {0x01,0x00}             // Info Bytes
};
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

jp112sdl

Zitat von: papa am 22 März 2018, 08:36:57
Probiere mal FirmwareVersion auf 0x11

Geht leider auch nicht. Werd heut Nachmittag sonst mal daheim schauen, dort habe ich 2 originale HM MDIR-WM55.
Die möchte ich zwar nicht aus meinem produktiven System entfernen, aber ein Druck auf den Anlernknopf sollte das Gerät ja trotzdem dazu veranlassen, eine Message in Richtung CCU zu senden.

papa

BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Living

Hi Papa,
ich habe eine neue Bgr mit dem HM-Sen-MDIR-WM55 geflashed und alle läuft auch brightness wird angezeigt.
Scheinbar hat meine andere Bgr einen Hardwarefehler in der CPU ??
Gibt es einen Test für den Atmega 328?
Danke für deine "geduldige" Unterstützung!

jp112sdl

Zitat von: papa am 22 März 2018, 08:49:19
Ja - mach mal. Dann sehen wir vielleicht mehr.

Beim Drücken des Anlerntasters des HM-SEN-MDIR-WM55 unterscheiden sich die Bytes 2 und 3 von hinten:

Original:
1A 41 84 00 4E6AE9 1282D5 12 00 DB 4E 45 51 30 39 36 30 37 39 31 81 23 00 00

Sketch:
1A 04 84 00 4E6AE9 000000 12 00 DB 4E 45 51 30 39 36 30 37 39 31 81 03 01 00

papa

Zitat von: jp112sdl am 22 März 2018, 16:40:37
Beim Drücken des Anlerntasters des HM-SEN-MDIR-WM55 unterscheiden sich die Bytes 2 und 3 von hinten:

Original:
1A 41 84 00 4E6AE9 1282D5 12 00 DB 4E 45 51 30 39 36 30 37 39 31 81 23 00 00

Sketch:
1A 04 84 00 4E6AE9 000000 12 00 DB 4E 45 51 30 39 36 30 37 39 31 81 03 01 00

Die 01 lässt sich gut austauschen. Das steht am Ende der DeviceInfo und kann im Sketch einfach durch 0 ersetzt werden. Die 03 wird automatisch durch das Device eingesetzt und ist die Anzahl der Channel. Das passiert in Device::getDeviceInfo.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

jp112sdl

Zitat von: papa am 22 März 2018, 19:39:44
Die 01 lässt sich gut austauschen. Das steht am Ende der DeviceInfo und kann im Sketch einfach durch 0 ersetzt werden.

Danke, das war es!

So gehts jetzt (falls du es in deinem example noch ändern möchtest):

const struct DeviceInfo PROGMEM devinfo = {
    {0x90,0x78,0x90},       // Device ID
    "papa111333",           // Device Serial
    {0x00,0xdb},            // Device Model
    0x12,                   // Firmware Version
    as::DeviceType::MotionDetector, // Device Type
    {0x00,0x00}             // Info Bytes
};