Direkt-Verknüfungen - HB-UNI-SenAct-4-4-RC

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

Moderator: Co-Administratoren

Antworten
Cybertron
Beiträge: 112
Registriert: 08.12.2014, 09:31

Direkt-Verknüfungen - HB-UNI-SenAct-4-4-RC

Beitrag von Cybertron » 15.04.2019, 15:10

Hallo zusammen,

ich habe mir gerade den HB-UNI-SenAct-4-4-RC vorgenommen.
Irgendwie scheitere ich aber gerade am anlegen von Direktverknüpfungen.
Ich wollte eigentlich, dass jeder Taster dem enstsprechenden Relais zugeordnet ist.

Egal wie ich es anstelle, sehe ich die Verknüfungen nach dem Anlegen nicht in der Übersicht.
Sie sind aber offensichtlich teilweise vorhanden.

Ich habe Channel 5/6 (Taster) genommen und als Partner Channel 1 (Relais A0) ausgewählt.
Bei "Anlegen und Bearbeiten" habe ich die Verknüpfung Ch5-Ch1 als "Schalter ein/aus" definiert
und die 2. Verknüpfung Ch6-Ch1 gelöscht.
Nach dem "Löschen" bin ich sofort wieder in der Übersicht.
Allerdings wird keine Verknüpfung angezeigt.

Wenn ich dann 5/6 mit 2 verknüpfen will sagt er mir es wären schon Verknüfpungen vorhanden und das diese überschrieben würden.
Ich mach dann genau das gleiche wie im ersten Schritt, lösche diesmal allerdings Ch5-Ch2.
Gleiches Bild... sofort wieder Übersicht ohne neue Verknüpfung.

Taste 1 schaltet jetzt Relais 1, Taste 2 ist jedoch ohne Funktion.

Habe ich hier irgendwie einen Denkfehler ?
oder muss ich die Tasten wirklich über Programme verknüpfen?


Gruss
Silvio
--------------------------------------------
770 Kanäle und 3439 Datenpunkte in 223 Geräten:

jp112sdl
Beiträge: 3021
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 6 Mal
Danksagung erhalten: 31 Mal
Kontaktdaten:

Re: Direkt-Verknüfungen - HB-UNI-SenAct-4-4-RC

Beitrag von jp112sdl » 15.04.2019, 15:17

Hi, nimm einfach den HM-LC-SWX-SM Sketch.
Da sind die Taster schon intern mit den Ausgängen gepeert.

Der SenAct ist eher dafür gedacht, Taster und Relais getrennt zu nutzen.

VG,
Jérôme

Cybertron
Beiträge: 112
Registriert: 08.12.2014, 09:31

Re: Direkt-Verknüfungen - HB-UNI-SenAct-4-4-RC

Beitrag von Cybertron » 15.04.2019, 17:37

Super... Vielen lieben Dank.
Damit funzt es genau wie ich es wollte..


Gruss
Silvio
--------------------------------------------
770 Kanäle und 3439 Datenpunkte in 223 Geräten:

Cybertron
Beiträge: 112
Registriert: 08.12.2014, 09:31

Re: Direkt-Verknüfungen - HB-UNI-SenAct-4-4-RC

Beitrag von Cybertron » 18.08.2019, 15:18

Hallo zusammen,

ich muss hier nochmal nachhaken.
Bis dato hat das ganze super funktioniert.
Leider ist mir ein Arduino abgebannt, und ich musste das Teil neu bauen.

Seither reagiert keines der Relais mehr auf einen Tastendruck.

Ich kann den Tastendruck im Monitor sehen (kurz und auch lang)
es erfolgt jedoch keine Reaktion der Ausgänge. Über das WebIf kann ich die Relaisausgänge problemlos steuern.

Als Code habe ich folgenden genutzt:

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

// number of relays by defining the device
#define HM_LC_SW1_SM 0x00,0x02
#define HM_LC_SW2_SM 0x00,0x0a
#define HM_LC_SW4_SM 0x00,0x03

#define CFG_LOWACTIVE_BYTE 0x00
#define CFG_LOWACTIVE_ON   0x01
#define CFG_LOWACTIVE_OFF  0x00

#define DEVICE_CONFIG CFG_LOWACTIVE_OFF

#define HM_SENSOR_RELAY

#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

#ifdef HM_SENSOR_RELAY
  // relay pins for the HMSensor Relay Board
  #define RELAY1_PIN 14
  #define RELAY2_PIN 15
  #define RELAY3_PIN 16
  #define RELAY4_PIN 17
  #define BUTTON1_PIN 5
  #define BUTTON2_PIN 6
  #define BUTTON3_PIN 7
  #define BUTTON4_PIN 9
#else
  // relay output pins compatible to the HM_Relay project
  #define RELAY1_PIN 5
  #define RELAY2_PIN 6
  #define RELAY3_PIN 7
  #define RELAY4_PIN 3
#endif

// 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 = {
    {0x12,0x34,0x56},       // Device ID
    "HBLCSW4_01",           // Device Serial
    {HM_LC_SW4_SM},         // Device Model
    0x16,                   // 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>,NoBattery,Radio<RadioSPI,2> > Hal;

// setup the device with channel type and number of channels
typedef MultiChannelDevice<Hal,SwitchChannel<Hal,PEERS_PER_CHANNEL,List0>,4> SwitchType;

Hal hal;
SwitchType sdev(devinfo,0x20);
#ifdef HM_SENSOR_RELAY
ConfigButton<SwitchType> cfgBtn(sdev);
InternalButton<SwitchType> btn1(sdev,1);
InternalButton<SwitchType> btn2(sdev,2);
InternalButton<SwitchType> btn3(sdev,3);
InternalButton<SwitchType> btn4(sdev,4);
#else
ConfigToggleButton<SwitchType> cfgBtn(sdev);
#endif

// if A0 and A1 connected
// we use LOW for ON and HIGH for OFF
bool checkLowActive () {
  pinMode(14,OUTPUT); // A0
  pinMode(15,INPUT_PULLUP);  // A1
  digitalWrite(15,HIGH);
  digitalWrite(14,LOW);
  bool result = digitalRead(15) == LOW;
  digitalWrite(14,HIGH);
  return result;
}

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 initModelType () {
  uint8_t model[2];
  sdev.getDeviceModel(model);
  if( model[1] == 0x02 ) {
    sdev.channels(1);
    DPRINTLN(F("HM-LC-SW1-SM"));
  }
  else if( model[1] == 0x0a ) {
    sdev.channels(2);
    DPRINTLN(F("HM-LC-SW2-SM"));
  }
  else {
    DPRINTLN(F("HM-LC-SW4-SM"));
  }
}


void setup () {
  DINIT(57600,ASKSIN_PLUS_PLUS_IDENTIFIER);
  bool first = sdev.init(hal);
#ifdef HM_SENSOR_RELAY
  bool low = false;
#else
  bool low = (sdev.getConfigByte(CFG_LOWACTIVE_BYTE) == CFG_LOWACTIVE_ON) || checkLowActive();
#endif
  DPRINT("Invert ");low ? DPRINTLN("active") : DPRINTLN("disabled");
  sdev.channel(1).init(RELAY1_PIN,low);
  sdev.channel(2).init(RELAY2_PIN,low);
  sdev.channel(3).init(RELAY3_PIN,low);
  sdev.channel(4).init(RELAY4_PIN,low);

  buttonISR(cfgBtn,CONFIG_BUTTON_PIN);
#ifdef HM_SENSOR_RELAY
  buttonISR(btn1,BUTTON1_PIN);
  buttonISR(btn2,BUTTON2_PIN);
  buttonISR(btn3,BUTTON3_PIN);
  buttonISR(btn4,BUTTON4_PIN);
#endif
  initModelType();
  initPeerings(first);
  sdev.initDone();
}

void loop() {
  bool worked = hal.runready();
  bool poll = sdev.pollRadio();
  if( worked == false && poll == false ) {
    hal.activity.savePower<Idle<> >(hal);
  }
}
Habe ich was übersehen?
--------------------------------------------
770 Kanäle und 3439 Datenpunkte in 223 Geräten:

jp112sdl
Beiträge: 3021
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 6 Mal
Danksagung erhalten: 31 Mal
Kontaktdaten:

Re: Direkt-Verknüfungen - HB-UNI-SenAct-4-4-RC

Beitrag von jp112sdl » 18.08.2019, 15:23

Mach nochmal einen RESET (also Config 6 Sekunden drücken), manchmal werden die internen Peerings nicht angelegt.

Und ggf. einen neuen Thread... da es hier eigentlich um ein anderes Gerät geht.

VG,
Jérôme

Antworten

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