AskSin++ Wake On Radio (WoR)

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

Moderator: Co-Administratoren

stan23
Beiträge: 584
Registriert: 13.12.2016, 21:14
Wohnort: Altmühltal
Hat sich bedankt: 9 Mal
Danksagung erhalten: 11 Mal
Kontaktdaten:

Re: AskSin++ Wake On Radio (WoR)

Beitrag von stan23 » 29.03.2019, 10:30

Wir haben 2 Möglichkeiten die Registersettings zu vergleichen:
1. SPI-Mitschnitt vom Originalgerät gegen AskSin++ Code
2. SPI-Mitschnitt vom Originalgerät gegen SPI-Mitschnitt vom AskSin++ Gerät

Bei 1. tue ich mich etwas schwer, weil mir die Abläufe nicht ganz klar sind.

Was meint ihr?
Viele Grüße
Marco

RaspberryMatic
~60 Geräte (HM, HmIP, HMW, HBW, AskSin)

jp112sdl
Beiträge: 2997
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 5 Mal
Danksagung erhalten: 28 Mal
Kontaktdaten:

Re: AskSin++ Wake On Radio (WoR)

Beitrag von jp112sdl » 29.03.2019, 10:53

stan23 hat geschrieben:
29.03.2019, 10:30
Wir haben 2 Möglichkeiten die Registersettings zu vergleichen:
Du sagtest ja, dass eQ3 alle Register setzt.
Vielleicht wäre es schon mal hilfreich, wenn wir die Register aus deiner Excel-Tabelle komplett setzen.
papa hat geschrieben:
29.03.2019, 10:19
Hm - also irgendwas ist noch nicht so richtig. Mein Testssystem ist immer noch einiger Zeit (10-15min) nicht mehr erreichbar.
Ich habe das ePaper Display seit gestern Nachmittag mit WoR im Einsatz und bisher noch keine Kommunikationsstörung gehabt.
Was jedoch heut früh nicht funktioniert hat, war ein mit einem der Taster direktverknüpfter Aktor. Der sprach trotz mehrmaligem Drücken nicht an... muss ich aber erstmal schauen, ob nicht das Storage neu initialisiert wurde, durch meine Spielereien gestern.

VG,
Jérôme

stan23
Beiträge: 584
Registriert: 13.12.2016, 21:14
Wohnort: Altmühltal
Hat sich bedankt: 9 Mal
Danksagung erhalten: 11 Mal
Kontaktdaten:

Re: AskSin++ Wake On Radio (WoR)

Beitrag von stan23 » 29.03.2019, 11:02

jp112sdl hat geschrieben:
29.03.2019, 10:53
Du sagtest ja, dass eQ3 alle Register setzt.
Vielleicht wäre es schon mal hilfreich, wenn wir die Register aus deiner Excel-Tabelle komplett setzen.
Bei der Initialisierung, also nach dem Power On, richtig.
Allerdings lässt AskSin++ nur die Register weg, die eQ-3 mit dem Default-Wert beschreiben würde.

Ich dachte eher an die Register die dynamisch geschrieben werden: beim Aufwachen, zwischendrin und als WoR-Vorbereitung beim Schlafengehen.
Viele Grüße
Marco

RaspberryMatic
~60 Geräte (HM, HmIP, HMW, HBW, AskSin)

jp112sdl
Beiträge: 2997
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 5 Mal
Danksagung erhalten: 28 Mal
Kontaktdaten:

Re: AskSin++ Wake On Radio (WoR)

Beitrag von jp112sdl » 29.03.2019, 11:40

papa hat geschrieben:
29.03.2019, 10:19
Hm - also irgendwas ist noch nicht so richtig. Mein Testssystem ist immer noch einiger Zeit (10-15min) nicht mehr erreichbar.
Habs jetzt noch mal mit dem HM-LC-Sw1-BA-PCB Sketch aus dem examples-Ordner auf nem Pro Mini (8MHz ext.) laufen lassen.
Nach 45 Minute Ruhezeit ließ sich der Aktor auf Anhieb wieder schalten.

VG,
Jérôme

papa
Beiträge: 318
Registriert: 22.05.2018, 10:23
Danksagung erhalten: 1 Mal

Re: AskSin++ Wake On Radio (WoR)

Beitrag von papa » 29.03.2019, 11:47

jp112sdl hat geschrieben:
29.03.2019, 11:40
Habs jetzt noch mal mit dem HM-LC-Sw1-BA-PCB Sketch aus dem examples-Ordner auf nem Pro Mini (8MHz ext.) laufen lassen.
Nach 45 Minute Ruhezeit ließ sich der Aktor auf Anhieb wieder schalten.
Auch mit dem aktuellen Code aus dem WOR Branch ?
Anfragen zur AskSin++ werden nur im Forum beantwortet

jp112sdl
Beiträge: 2997
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 5 Mal
Danksagung erhalten: 28 Mal
Kontaktdaten:

Re: AskSin++ Wake On Radio (WoR)

Beitrag von jp112sdl » 29.03.2019, 12:00

papa hat geschrieben:
29.03.2019, 11:47
jp112sdl hat geschrieben:
29.03.2019, 11:40
Habs jetzt noch mal mit dem HM-LC-Sw1-BA-PCB Sketch aus dem examples-Ordner auf nem Pro Mini (8MHz ext.) laufen lassen.
Nach 45 Minute Ruhezeit ließ sich der Aktor auf Anhieb wieder schalten.
Auch mit dem aktuellen Code aus dem WOR Branch ?
Jap, heut früh frisch geklont. Dein commit war ja noch gestern Abend.

Code: Alles auswählen

//- -----------------------------------------------------------------------------------------------------------------------
// AskSin++
// 2016-10-31 papa Creative Commons - http://creativecommons.org/licenses/by-nc-sa/3.0/de/
//- -----------------------------------------------------------------------------------------------------------------------

// define this to read the device id, serial and device type from bootloader section
// #define USE_OTA_BOOTLOADER

// toggle a GPIO to correlate ATMega execution (e.g. wakeup) with SPI on logic analyzer
//#define DEBUG_PIN    6

#define USE_WOR
#define EI_NOTEXTERNAL
#include <EnableInterrupt.h>
#include <AskSinPP.h>
#include <LowPower.h>

#include <Switch.h>


// we use a Pro Mini
// Arduino pin for the LED
// D4 == PIN 4 on Pro Mini
#define LED_PIN 4
// Arduino pin for the config button
// B0 == PIN 8 on Pro Mini
#define CONFIG_BUTTON_PIN 8

#define RELAY1_PIN 17

// number of available peers per channel
#define PEERS_PER_CHANNEL 8

// all library classes are placed in the namespace 'as'
using namespace as;

// define all device properties
const struct DeviceInfo PROGMEM devinfo = {
    {0x42,0xA2,0xB7},       // Device ID
    "papa42a2b7",           // Device Serial
    {0x00,0x6c},            // Device Model
    0x10,                   // Firmware Version
    as::DeviceType::Switch, // Device Type
    {0x01,0x00}             // Info Bytes
};

/**
 * Configure the used hardware
 */
typedef AvrSPI<10,11,12,13> RadioSPI;
typedef AskSin<StatusLed<LED_PIN>,BatterySensor,Radio<RadioSPI,2> > Hal;

DEFREGISTER(Reg0,DREG_INTKEY,DREG_LEDMODE,MASTERID_REGS,DREG_LOWBATLIMIT)
class SwList0 : public RegList0<Reg0> {
public:
  SwList0(uint16_t addr) : RegList0<Reg0>(addr) {}
  void defaults () {
    clear();
    lowBatLimit(22);
  }
};

// setup the device with channel type and number of channels
class SwitchType : public MultiChannelDevice<Hal,SwitchChannel<Hal,PEERS_PER_CHANNEL,SwList0>,1,SwList0> {
public:
  typedef MultiChannelDevice<Hal,SwitchChannel<Hal,PEERS_PER_CHANNEL,SwList0>,1,SwList0> DevType;
  SwitchType (const DeviceInfo& i,uint16_t addr) : DevType(i,addr) {}
  virtual ~SwitchType () {}

  virtual void configChanged () {
    DevType::configChanged();
    uint8_t lowbat = getList0().lowBatLimit();
    DDECLN(lowbat);
    if( lowbat > 0 ) {
      battery().low(lowbat);
    }
  }
};

Hal hal;
SwitchType sdev(devinfo,0x20);
ConfigToggleButton<SwitchType> cfgBtn(sdev);
#ifndef USE_WOR
BurstDetector<Hal> bd(hal);
#endif

void initPeerings (bool first) {
  // create internal peerings - CCU2 needs this
  if( first == true ) {
    HMID devid;
    sdev.getDeviceID(devid);
    for( uint8_t i=1; i<=sdev.channels(); ++i ) {
      Peer ipeer(devid,i);
      sdev.channel(i).peer(ipeer);
    }
  }
}


void setup () {
  DINIT(57600,ASKSIN_PLUS_PLUS_IDENTIFIER);
  bool first = sdev.init(hal);
  sdev.channel(1).init(RELAY1_PIN);
  buttonISR(cfgBtn,CONFIG_BUTTON_PIN);
  initPeerings(first);
#ifndef USE_WOR
  // start burst detection
  bd.enable(sysclock);
#endif
  // stay on for 15 seconds after start
  hal.activity.stayAwake(seconds2ticks(15));
  // measure battery every hour
  hal.battery.init(seconds2ticks(60UL*60),sysclock);
  sdev.initDone();

  //pinMode(DEBUG_PIN, OUTPUT);
  //digitalWrite(DEBUG_PIN, HIGH);
}

void loop() {
  bool worked = hal.runready();
  bool poll = sdev.pollRadio();
  if( worked == false && poll == false ) {
    hal.activity.savePower<Sleep<> >(hal);
  }
}

VG,
Jérôme

jp112sdl
Beiträge: 2997
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 5 Mal
Danksagung erhalten: 28 Mal
Kontaktdaten:

Re: AskSin++ Wake On Radio (WoR)

Beitrag von jp112sdl » 29.03.2019, 13:18

Jetzt hat sich das ePaper Display auch verabschiedet...

Wenn das Gerät jedoch 1x sendet (Tasterbetätigung), kann ich anschließend auch wieder was zum Display schicken.
Jedoch auch nur 1x...
Ein paar Sekunden später wacht das Gerät schon wieder nicht mehr durch Burst auf. :cry:
stan23 hat geschrieben:
29.03.2019, 11:02
Ich dachte eher an die Register die dynamisch geschrieben werden: beim Aufwachen, zwischendrin und als WoR-Vorbereitung beim Schlafengehen.
Vielleicht sollten wir da ansetzen.

VG,
Jérôme

stan23
Beiträge: 584
Registriert: 13.12.2016, 21:14
Wohnort: Altmühltal
Hat sich bedankt: 9 Mal
Danksagung erhalten: 11 Mal
Kontaktdaten:

Re: AskSin++ Wake On Radio (WoR)

Beitrag von stan23 » 29.03.2019, 13:45

jp112sdl hat geschrieben:
29.03.2019, 13:18
stan23 hat geschrieben:
29.03.2019, 11:02
Ich dachte eher an die Register die dynamisch geschrieben werden: beim Aufwachen, zwischendrin und als WoR-Vorbereitung beim Schlafengehen.
Vielleicht sollten wir da ansetzen.
Gut, der SPI-Mitschnitt des Originalgeräts liegt ja schon hier:
https://github.com/pa-pa/AskSinPP/pull/108

Vom AskSin++-Gerät kann ich das heute Abend oder morgen aufzeichnen...
Viele Grüße
Marco

RaspberryMatic
~60 Geräte (HM, HmIP, HMW, HBW, AskSin)

papa
Beiträge: 318
Registriert: 22.05.2018, 10:23
Danksagung erhalten: 1 Mal

Re: AskSin++ Wake On Radio (WoR)

Beitrag von papa » 30.03.2019, 08:30

Es scheint ein Problem zu sein, wenn mal nicht empfangen werden konnte, wieder in einem funktionierenden Zustand zu kommen. Hatte gerade folgendes auf der Console

Code: Alles auswählen

 rcvData
  RX FIFO: 00
Es wurde also versucht ein Paket zu lesen und der FIFO war leer. Danach ging nichts mehr. Erst nach Schalten am Geräte und damit einem Sendevorgang ging der Empfang auch wieder.
Anfragen zur AskSin++ werden nur im Forum beantwortet

papa
Beiträge: 318
Registriert: 22.05.2018, 10:23
Danksagung erhalten: 1 Mal

Re: AskSin++ Wake On Radio (WoR)

Beitrag von papa » 30.03.2019, 08:49

Hab jetzt mal den WOR und Idle Code zusammengeführt. Im Idle war noch ein Loop drin, der wartete bis das Funkmodul in einem bestimmten Zustand ist. Vielleicht hilft das ja auch bei unserem WOR Problem.
Anfragen zur AskSin++ werden nur im Forum beantwortet

Antworten

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