HM-LC-Bl1-FM-2 lasst sich nicht anlernen

Begonnen von heidepower, 09 August 2019, 21:42:55

Vorheriges Thema - Nächstes Thema

heidepower

Hallo zusammen, komme eig von der Homematicwelt aber ich denke das in dem Sketch ein Bug drin ist!!! Da hier ha der Ersteller des codes Zuhause ist, hoffe ich das ich hier mehr Erfolg habe.

ich habe mir den 2 Kanal Rollladenaktor HM-LC-Bl1-FM-2 nachgebaut doch leider bekommen ich ihn nicht angelernt. Dachte es liegt an einem Layout oder Hardwarefehler. Doch als ich den Sketch HM-LC-Bl1-FM 1Kanal Rollladenaktor aufspielte, konnte ich ihn anlernen!!!

Ich muss dazusagen, dass ich ein paar PINS geändert habe. Und zwar die Status LED PIN 4 auf 5 und die Tastereingänge Untereinader.

Woran kann es liegen?

Grüße heidepower

PeMue

Magst Du nicht mal einen Link zum Sketch posten?

Gruß Peter
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

papa

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


papa

Ist 00FFFF die Zentrale ?
Wenn nicht bitte mal nen RESET (min. 5 Sekunden den Config-Button drücken) machen.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

heidepower

Hey, weis ich nicht ob das die Zentrale ist! Wie kann ich das herrausfinden?
Ein reset habe ich auch schon gemacht, brachte auch nichts!

Grüße heidepower

papa

Ist das die Adresse, die bei der VCCU in FHEM steht - oder was auch immer Du als IO benutzt.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

heidepower

#7
Hmm kann leider in miener Zentrale nichts finde, dass mir das bestätigt. Aber ich habe mal einen vergleich der serial Monitoren gemacht. Beide sketche wurden auf den gleichen aktor aufgespielt. Wobei sich der 1k Rolladenaktor (links) anlernen läst.

Die aktulle ASKSINPP LIP habe ich auch noch installiert, brachte auch nichts :(

Grüße heidepower

heidepower

@ papa könnte sein das aich ein bug in die Software eingeschlichen hat? Hast du evtl eine ältere Version die mach mal testen könnte?

Gruß heidepower

papa

Das ist eher unwahrscheinlich. Dann müssten ja alle Probleme haben. Irgendwie sehen für mich beide nicht richtig gepaired aus. Also um hier mal vorwärts zu kommen, bitte mal den Sketch, so wie er geflasht wird, hier rein. Außerdem die Logs nochmal als Text (in Code Tags) und nicht als Bild. Außerdem ein List deines Homematic IO. Dann schauen wir mal weiter.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

heidepower

Hallo, in dem Vergleichsbild sind beide nicht gepaird gewesen. Habe ich absichtlich so gemacht, dass man einen einheitlichen Vergleicht hat!

Ich habe jetzt herrausgefunden, wenn ich die Device ID von 0x00, 0x05, 0xaf in 0x59,0x32,0xaf ändere sich der Aktor anlernen läst! Er wird dan zwar die Aktorbezeichnung HM-LC-Bl1-FM mit zwei Kanälen angezeigt.

Folgenden Sketch benutze ich. Es handelt sich um den HM-LC-Bl1-FM-2 in dem ich ein paar Pin Anpassungen vorgenommen habe.
//- -----------------------------------------------------------------------------------------------------------------------
// AskSin++
// 2017-12-14 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

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

#include <Blind.h>

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

#define ON_RELAY_PIN 14
#define DIR_RELAY_PIN 15

#define ON_RELAY2_PIN 16
#define DIR_RELAY2_PIN 17

#define UP_BUTTON_PIN 7
#define DOWN_BUTTON_PIN 6

#define UP_BUTTON2_PIN 5
#define DOWN_BUTTON2_PIN 3

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

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

// define all device properties
const struct DeviceInfo PROGMEM devinfo = {
  {0x00, 0x05, 0xaf},            // Device ID
  "AskSinPP0A",                  // Device Serial
  {0x00, 0x05},                  // Device Model
  0x24,                          // Firmware Version
  as::DeviceType::BlindActuator, // 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;

DEFREGISTER(BlindReg0, MASTERID_REGS, DREG_INTKEY, DREG_CONFBUTTONTIME, DREG_LOCALRESETDISABLE)

class BlindList0 : public RegList0<BlindReg0> {
  public:
    BlindList0 (uint16_t addr) : RegList0<BlindReg0>(addr) {}
    void defaults () {
      clear();
      // intKeyVisible(false);
      confButtonTime(0xff);
      // localResetDisable(false);
    }
};


class BlChannel : public ActorChannel<Hal, BlindList1, BlindList3, PEERS_PER_CHANNEL, BlindList0, BlindStateMachine> {
  private:
    uint8_t on_relay_pin;
    uint8_t dir_relay_pin;
  public:
    typedef ActorChannel<Hal, BlindList1, BlindList3, PEERS_PER_CHANNEL, BlindList0, BlindStateMachine> BaseChannel;

    BlChannel () : on_relay_pin(0), dir_relay_pin(0) {}
    virtual ~BlChannel () {}

    virtual void switchState(uint8_t oldstate, uint8_t newstate, uint32_t stateDelay) {
      BaseChannel::switchState(oldstate, newstate, stateDelay);
      if ( newstate == AS_CM_JT_RAMPON && stateDelay > 0 ) {
        motorUp();
      }
      else if ( newstate == AS_CM_JT_RAMPOFF && stateDelay > 0 ) {
        motorDown();
      }
      else {
        motorStop();
      }
    }

    void motorUp () {
      digitalWrite(dir_relay_pin, HIGH);
      digitalWrite(on_relay_pin, HIGH);
    }

    void motorDown () {
      digitalWrite(dir_relay_pin, LOW);
      digitalWrite(on_relay_pin, HIGH);
    }

    void motorStop () {
      digitalWrite(dir_relay_pin, LOW);
      digitalWrite(on_relay_pin, LOW);
    }

    void init (uint8_t op, uint8_t dp) {
      on_relay_pin = op;
      dir_relay_pin = dp;
      pinMode(on_relay_pin, OUTPUT);
      pinMode(dir_relay_pin, OUTPUT);
      motorStop();
      BaseChannel::init();
    }
};


// setup the device with channel type and number of channels
typedef MultiChannelDevice<Hal, BlChannel, 2, BlindList0> BlindType;

Hal hal;
BlindType sdev(devinfo, 0x20);
ConfigButton<BlindType> cfgBtn(sdev);
InternalButton<BlindType> btnup(sdev, 1);
InternalButton<BlindType> btndown(sdev, 2);
InternalButton<BlindType> btnup2(sdev, 3);
InternalButton<BlindType> btndown2(sdev, 4);

void initPeerings (bool first) {
  // create internal peerings - CCU2 needs this
  if ( first == true ) {
    HMID devid;
    sdev.getDeviceID(devid);
    Peer p1(devid, 1);
    Peer p2(devid, 2);
    Peer p3(devid, 3);
    Peer p4(devid, 4);
    sdev.channel(1).peer(p1, p2);
    sdev.channel(2).peer(p3, p4);
  }
}

void setup () {
  DINIT(57600, ASKSIN_PLUS_PLUS_IDENTIFIER);
  //storage().setByte(0,0);
  bool first = sdev.init(hal);
  sdev.channel(1).init(ON_RELAY_PIN, DIR_RELAY_PIN);
  sdev.channel(2).init(ON_RELAY2_PIN, DIR_RELAY2_PIN);

  buttonISR(cfgBtn, CONFIG_BUTTON_PIN);
  buttonISR(btnup, UP_BUTTON_PIN);
  buttonISR(btndown, DOWN_BUTTON_PIN);
  buttonISR(btnup2, UP_BUTTON2_PIN);
  buttonISR(btndown2, DOWN_BUTTON2_PIN);

  initPeerings(first);
  sdev.initDone();
}

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


Device List
HM-RC-19 (CUX2801001)
HM-PB-4-WM (CUX4000001)
HM-RC-19 (CUX4000002)
HM-WDS100-C6-O (CUX9002001)
HM-LC-Bl1-FM (AskSinPP00)
HM-LC-Sw1-Pl-DN-R1 (AskSinPP01)
HM-PB-2-WM55 (AskSinPP02)
HB-UNI-SenAct-4-4-RC (AskSinPP03)
HM-Sec-MDIR (AskSinPP04)
HM-LC-Dim1PWM-CV (AskSinPP05)
HM-LC-Sw2-FM (AskSinPP06)
HM-LC-Sw1-FM (AskSinPP07)
HM-LC-Sw1-FM (AskSinPP08)
HM-LC-Sw2-FM (AskSinPP09)
HM-RCV-50 (BidCoS-RF)
HM-LC-RGBW-WM (PEQ1604370)
HmIP-HEATING (INT0000001)
HmIP-HEATING (INT0000002)
HMIP-SWDO (0000D8A9979755)
HmIP-STHD (000E9709930E1D)
HmIP-SWDM-B2 (0015599396548B)
HMIP-SWDO (0000D8A99791C3)
HmIP-SRH (0007D8A99FC569)
HMIP-SWDO (0000D8A99791E6)
HmIP-SRH (0007D8A99FC56E)
HMIP-SWDO (0000D8A997920A)
HmIP-eTRV-2 (000A18A996F87B)
HmIP-eTRV-2 (000A18A996F857)
HmIP-WTH-2 (000A98A9A232A6)
HmIP-SWDM-B2 (0015599396542B)



Grüße heidepower

heidepower

#11
Hey,

@papa Also anlernen kann ich ihn jetzt. Anscheinend benutz irgend ein anderes Gerät die Device ID schon! Aber trotzdem wird er nur als 1Kanal Rolladenaktor ( HM-LC-Bl1-FM) erkannt. Im Sketch ist auch genau an der Stelle ein Fehler. Dort steht unter Device Model : {0x00,0x05} ändert man dies jetzt auf {0x00,0xD2} Stimmt zwar die Typenbezeichnung (HM-LC-Bl1-FM-2) aber unter der Bezeichnung steht er immer noch als 1Kanal drin.

Im Anhang findest du zwei Bilder.
Bild 1 Sketch wie im übrigen Post von mir.
Bild 2 Sketch mit angepasstem Device Model

Grüße heidepower

frank

beide models haben original auch nur 1 channel. 0x00D2 ist nur eine neuere hardware variante, deshalb hinten eine 2.
da es keinen 2-kanal aktor original gibt, musst du dir wohl ein eigenes model kreieren.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

papa

Die CCU unterstützt eine variable Anzahl von Kanälen, die der Aktor beim Pairen mitschickt.
<channel index="1" type="BLIND" count_from_sysinfo="23.0:1.0">
Deshalb gibt es auf der CCU 2 Kanäle. FHEM unterstützt das leider nicht. Deshalb wird es in FHEM immer nur einen Kanal geben.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

LuckyDay

@papa

Ich denke ihr nutzt da einen Bug der ccu aus.

in Fhem lassen sich durchaus auch von Hand weitere Kanäle anlegen