AskSin++ Library

Begonnen von papa, 08 September 2016, 11:11:25

Vorheriges Thema - Nächstes Thema

sn2k

Wie ist es möglich im Arduino Sketch "HM-SEC-SCO" die Statusänderungen open bez. close direkt per Code zu senden?
Danke

papa

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

sn2k

Hallo papa

Kannst du mir einwenig mehr helfen, wie kann ich ohne in die Libary die Werte senden?

void Send_Open() {
      uint8_t count, state;
      state = 100;
      SensorEventMsg& msg = (sdev.SensorEventMsg&)sdev.channel.device().message();
      //sdev.msg.init(dev.channel.device().nextcount(),sdev.channel.number(),count++,state,sdev.channel.device().battery().low());
      sdev.channel.device().sendPeerEvent(msg,sdev.channel);
}
Geht leider nicht so einfach ;(

Vielen Dank

jp112sdl

Innerhalb der Device Klasse musst du zunächst festlegen, auf welchem Kanal du deine Message senden möchtest.
Ungetestet.

class SCOType : public ThreeStateDevice<Hal,ChannelType,1,SCOList0, CYCLETIME> {
private:
  uint8_t count, state;
public:
  typedef ThreeStateDevice<Hal,ChannelType,1,SCOList0, CYCLETIME> TSDevice;
  SCOType(const DeviceInfo& info,uint16_t addr) : TSDevice(info,addr), count(0), state(255) {}
  virtual ~SCOType () {}

  void Send_Open_ch1() {
    ChannelType& c1 = this->channel(1);
    SensorEventMsg& msg = (SensorEventMsg&)c1.device().message();
    msg.init(c1.device().nextcount(),c1.number(),count++,state,c1.device().battery().low());
    c1.device().sendPeerEvent(msg,c1);
  }
...

sn2k

Jetzt hab's ich es verstanden, vielen Dank jp112sdl

Funktioniert:



class SCOType : public ThreeStateDevice<Hal,ChannelType,1,SCOList0, CYCLETIME> {
private:
  uint8_t count, state;
public:
  typedef ThreeStateDevice<Hal,ChannelType,1,SCOList0, CYCLETIME> TSDevice;
  SCOType(const DeviceInfo& info,uint16_t addr) : TSDevice(info,addr), count(0), state(255) {}
  virtual ~SCOType () {}

void Send_State_ch1(bool bstate) {
    if(bstate == 1){state=200;}else{state=0;}
    ChannelType& c1 = this->channel(1);
    SensorEventMsg& msg = (SensorEventMsg&)c1.device().message();
    msg.init(c1.device().nextcount(),c1.number(),count++,state,c1.device().battery().low());
    c1.device().sendPeerEvent(msg,c1);
  }
...


Mit Send_State_ch1(0 oder 1) kann man nun direkt Open oder Closed senden, perfekt.

Xent

Ich versuch mich gerade an OTA.

Leider haperts irgendwie beim Bootloader.
Ich habe den Bootloader mit der makeota.html und mit cygwin und dem makeota.sh erstellt.

Bei der html Datei kommt ne 98,4 kb große Datei raus bei der .sh ist die Datei 11 kb groß.

Das schreiben des Bootloaders funktioniert mit beiden Dateien.
Allerdings scheint der Bootloader niht zu laufen.
Wenn ich den Arduino Pro Mini dann an einen FTDI Adapter aber ich bekomme überhaupt keine Ausgabe.

papa

Welche Hardware hast Du ? Welche Einstellungen hast Du im makeota.html verwendet ?
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Xent

Hab nen Pro Mini 3.3V.
In der Makeota.html hab ich den Typ für den RGB Stripe Sketch von Jerome eingetragen.
Seriennummer und ID wurden zufällig erstellt.
Als Datei habe ich die hex des Bootloaders für ATmega328P genommen

papa

Du brauchts für den reinen Bootloader gar keine Datei angeben. Optional kann das Anwendungs-Hex - also die LED Stripe Firmware - angegeben werden. Dann ist das Gerät sofort lauffähig.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Xent

Hatte ich auch irgendwo gelesen.
Allerdings steht in der Anleitung bei dir im Repo
ZitatThe specific boot loader can created by using the makeota.html page. Load the "Bootloader-OTA-atmega328.hex" into the web browser and fill all fields. After pressing the "Create" button the bootloader can be downloaded to the loacl disk. The complete page runs inside your web browser. There is no internet access needed.

Das makeota.sh Script hat den Bootloader mit den Modifizierten Parametern ausgespuckt.
Hab das auch nochmal per diff mit dem originalen Bootloader verglichen.

Werde jetzt nochmal die komplette Firmware reinladen und flashen.
Da sollte ja auf jedenfall ne Ausgabe kommen.

papa

Hm - muss ich wohl mal anpassen :-( Doku ist echt lästig.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Xent

Also irgendwie will das nicht ...

Hier mal beide Firmwares. Vielleicht könntest du die mit dem Bootloader ja mal bei dir testen ob es da tut.
Muss eigentlich nen Funkmodul dran hängen damit der Bootloader weitermacht und die eigentliche Firmware startet?

Bei der Firmware ohne den Bootloader bekomme ich ne Ausgabe vom Sketch beim Start.
Beide Firmwares wurden mit den gleichen Befehlen übertragen.

papa

Ich denke ohne Funkmodul geht da nichts.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Xent

Auch mit Modul kommt keine Ausgabe.

Könntest du vielleicht mal die Firmware bei dir flashen und schauen ob bei dir was kommt?

jp112sdl

Check mal die Fuses. Boot Size muss 2k sein. (High 0xD0)