Fehler beim Übersetzen papa/HM-SEN-MDIR-WM55 (ledMode)

Entwicklung und Bau von Hardware aller Art, die im HM-Umfeld eingesetzt werden kann

Moderator: Co-Administratoren

Antworten
harvey
Beiträge: 88
Registriert: 01.12.2013, 13:19

Fehler beim Übersetzen papa/HM-SEN-MDIR-WM55 (ledMode)

Beitrag von harvey » 19.01.2019, 11:48

Hi,

beim experimentieren mit PIR habe ich mir erstmal den papa Sketch "HM-SEN-MDIR-WM55" geschnappt.

Meine Umgebung ist aktuell, also arduino-ide 1.8.8. und papa-library 3.1.5.

Der unveränderte Sketch (ok, ich habe genau und nur den sensors/Tsl2561.h auskommentiert) übersetzt nicht mit folgendem Fehler:

Code: Alles auswählen

n file included from Arduino\libraries\AskSinPP-master/MultiChannelDevice.h:9:0,
                 from Arduino\ORIG_papa_hm-sen-mdir-wm55\ORIG_papa_hm-sen-mdir-wm55.ino:16:
Arduino\libraries\AskSinPP-master/Device.h: In instantiation of 'bool as::Device<HalType, List0Type>::send(as::Message&) [with HalType = Hal; List0Type = BtnPirList0]':
Arduino\libraries\AskSinPP-master/Device.h:280:16:   required from 'bool as::Device<HalType, List0Type>::send(as::Message&, const as::HMID&) [with HalType = Hal; List0Type = BtnPirList0]'
Arduino\libraries\AskSinPP-master/Device.h:383:9:   required from 'void as::Device<HalType, List0Type>::sendInfoActuatorStatus(const as::HMID&, uint8_t, ChannelType&, bool) [with ChannelType = as::VirtBaseChannel<Hal, BtnPirList0>; HalType = Hal; List0Type = BtnPirList0; uint8_t = unsigned char]'
Arduino\libraries\AskSinPP-master/MultiChannelDevice.h:177:9:   required from 'bool as::ChannelDevice<HalType, ChannelType, ChannelCount, List0Type>::pollRadio() [with HalType = Hal; ChannelType = as::VirtBaseChannel<Hal, BtnPirList0>; int ChannelCount = 3; List0Type = BtnPirList0]'
Arduino\ORIG_papa_hm-sen-mdir-wm55\ORIG_papa_hm-sen-mdir-wm55.ino:162:30:   required from here
Arduino\libraries\AskSinPP-master/Device.h:286:34: error: 'class BtnPirList0' has no member named 'ledMode'
     bool ledmode = list0.ledMode();
                                  ^
exit status 1
Fehler beim Kompilieren für das Board Arduino Pro or Pro Mini.
Hmmmm, LED_PIN ist definert (Zeile 23) und verwendet (Zeile 57).
Das bemängelte BtnPirList0 existiert NUR in HM-SEN-MDIR-WM55.ino, sonst nirgendwo innerhalb der Library.

Nur zur Info: die Zeile 72 (Orig!): uint8_t LocalResetDisbale : 1; // 0x18 - 24
sollte bestimmt auch "LocalResetDisable" lauten!?!

Meine eigentliche Idee war, einen Innensensor mit Tasten (Toggle Lampe an/aus, Lampe Zeit an), PIR Sensor und
Aktor (Halbleiter-)Relay zur Lampensteuerung. Dann noch eine konfigurierbare Bewegungs-LED, konfigurierbare Zeitsteuerung
und "fast fertig" ist die Kellertreppenanbindung. Jaja, ich weiß, dass das ein HB-Sensor/Aktor ist und ich auch noch das
firmware-Paket schreiben muss, aber erste Schritte zuerst :-)

Und meine Hoffnung war, das als Basis der Sketch HM-SEN-MDIR-WM55 schon mal ein Anfang wäre.

Für mich kann ich weiter kommen (anderer Basis-Sketch), aber es wäre super und für alle hilfreich, wenn ein
unveränderter Sketch (ohne weitere Libraryabhängigkeiten) sich ohne Fehler übersetzen lässt.

Nichts dringendes, ich komme schon weiter. Aber vielen Dank, wenn mal jemand mit tieferem KnowHow drauf schaut!

ciao
Harvey

PS: ich habe mal geändert (ohne Sinn und Verstand - Testen und Arbeiten kommt später):
73:
uint8_t ledMode : 1;
114+115 (Inhalt IST UNFUG, just to please the compiler!!!):
bool ledMode () const { return isBitSet(sizeof(List0Data) + 2,0x01); }
bool ledMode (bool value) const { return setBit(sizeof(List0Data) + 2,0x01,value); }
122:
ledMode(true);

Ich vermute mal, dass papa genau wie ich eine Bewegungs-LED konfigurierbar ansteuern wollte und irgendwo andere Prios hatte.
Bei dem Volumen an AskSinPP habe ich größte Hochachtung von dem Einsatz, und aktuell waren ja andere Baustellen..
Homematic raspberrymatic, iobroker, Asksinpp und Arduinos - rund 40 Geräte

jp112sdl
Beiträge: 3217
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 25 Mal
Danksagung erhalten: 49 Mal
Kontaktdaten:

Re: Fehler beim Übersetzen papa/HM-SEN-MDIR-WM55 (ledMode)

Beitrag von jp112sdl » 19.01.2019, 12:16

Füge nach Zeile 112 mal ein:

Code: Alles auswählen

  uint8_t ledMode () const { return getByte(sizeof(List0Data) + 2); }
  bool ledMode (uint8_t value) const { return setByte(sizeof(List0Data) + 2,value);}
und ändere die Klasse BtnPirList0Data in :

Code: Alles auswählen


class BtnPirList0Data : public List0Data {
  uint8_t CycleInfoMsg      : 8;   // 0x09 - 09
  uint8_t TransmitDevTryMap : 8;   // 0x14 - 20
  uint8_t LocalResetDisbale : 1;   // 0x18 - 24

public:
  static uint8_t getOffset(uint8_t reg) {
    switch (reg) {
      case 0x09: return sizeof(List0Data) + 0;
      case 0x14: return sizeof(List0Data) + 1;
      case 0x18: return sizeof(List0Data) + 2;
      case 0x05: return sizeof(List0Data) + 3;
      default:   break;
    }
    return List0Data::getOffset(reg);
  }

  static uint8_t getRegister(uint8_t offset) {
    switch (offset) {
      case sizeof(List0Data) + 0:  return 0x09;
      case sizeof(List0Data) + 1:  return 0x14;
      case sizeof(List0Data) + 2:  return 0x18;
      case sizeof(List0Data) + 3:  return 0x05;
      default: break;
    }
    return List0Data::getRegister(offset);
  }
};
Der Code ist sicher in einem frühen Stadium entstanden. Das Lesen und Schreiben der Register geht mittlerweile wesentlich einfacher.
Aber um schnell zum Ergebnis zu kommen, sollten die 4 Zeilen Änderung reichen.

VG,
Jérôme

harvey
Beiträge: 88
Registriert: 01.12.2013, 13:19

Re: Fehler beim Übersetzen papa/HM-SEN-MDIR-WM55 (ledMode)

Beitrag von harvey » 19.01.2019, 12:53

Vielen Dank @Jerome

soooo schnell, das ist ... Spitze!

ja, das an diesen Stellen hatte ich ja meine in PS geschriebenen Änderungen versucht.

Ja, ich versuche auch immer erst mal selbst eine Lösung, und nein, ich meckere nicht (oder versuche wenigstens produktiv zu meckern:.-)

Alles hat zwei Seiten:
Einmal ist es so, dass es kein kommerzielles Produkt ist, anderseits ist die Community sowas von schnell, kompetent und hilfreich.
Meinen Dank kann ich nur wiederholen!

Das führt aber auch dazu, dass manche Dinge nur "fast fertig" werden. Kleines Beispiel, ist wirklich keine Kritik und auch bereits auf andere Weise gelöst:

Code: Alles auswählen

HM-SenWa-OD:
// here we do the measurement
    void measure () {
      fill = 170;
}
Ja, hier geschieht ein Wunder! Der unbedarfte Anfänger denkt möglicherweise, wow, ein Sketch ... und erkennt gar nicht, dass
zur inhaltlichen Benutzbarkeit die Variable "fill" halt irgendwie noch in Hardware gemessen und mit Werten versorgt werden muss.
Der (keinen echten Füllungszustand messende) Sketch ist wunderbar als Demo und Basis für eigene Versuche geeignet, und es heißt
ja auch "Examples" und nicht "blind abkopierbare 100% immer laufende Fertigsoftware", das schafft eq3 ja auch nicht so ganz.
Also voll und ganz in Ordnung, ich kann prima damit leben.

Aber leider fließen aktuelle Erkentnisse wie Auslagerung Device-ID und Device-Serial, die BI Batterymessungen für StepUp/StepDown
und auch die hier angesprochene "geht mittlerweise wesentlich einfacher" nicht in frühe Sketche ein, wer soll es denn
noch zusätzlich in seiner Freizeit machen? Jeder greife an seine eigene Nase!

Das geht mit Doku natürlich besser. Daher vielen Dank an die neue Übersichtsseite. Ich habe ja auch schon winzge Teile
beigetragen. Anregen möchte ich, dass vielleicht noch kleine Code-Schnipsel in kommentierter Form auf einer Seite landen.
Vielleicht getrennt nach Sketch-Schnipseln und nach Firmware(WebUI)-Schnipseln.

Leider ist hier so ein supergeiler superblauer Himmel, das ich nach den dunkeln Tagen echt RAUS muss, heute kein asksinpp mehr.
Und das empfehle ich allen Lesern hier, hey, es gibt eine reale Welt draußen, hmmmm hust, hust, mit 91% Feuchtigkeit, -0,4° und 1620Lux :-)))

Danke und ein schönes Wochenende!
cu
Harvey
Homematic raspberrymatic, iobroker, Asksinpp und Arduinos - rund 40 Geräte

Antworten

Zurück zu „Hardwareentwicklung und Selbstbau von Aktoren und Sensoren“