Erweiterung CUL für Baumarktsteckdosen

Begonnen von sissiwup, 31 Januar 2016, 19:47:40

Vorheriges Thema - Nächstes Thema

sissiwup

Hallo,

ich habe eine Baumarktsteckdose, basierend auf EIM-826 (UNITEC) die es in jeden Baumarkt für 10-15 Euro inkl 3 Schaltdosen im Betrieb.
Das funktioniert auch so ganz gut. Um meine Brennenstuhl Funksteckdosen zu steuern habe ich mir eine nanoCUL selbst (nach Anleitung hier) gebaut und diese an meiner CCU2 angeschlossen. Mit diesen Steckdosen gab es auch keine weiteren Probleme.

Im Intertechno-Modus gib es ja drei Signale:
0 = LOW LOW = 0 0
1 = HIGH HIGH = 1 1
F = LOW HIGH = 0 1
Es fehlt:
? = HIGH LOW = 1 0

Diese billigen Dinger aus dem Baumarkt nutzen aber zum Ausschalten genau diesen fehlenden Code.

(Die Fernbedienung lifert z.B. ...F für ein und ...E für aus.
F = 1111 => 1 1 im Intertechno-Sprechweise
E = 1110 => 1 ? gibt es nicht in Intertechno.

Ich habe nun das Modul intertechno.c angepaßt, so dass auch diese Teile funktionieren.
Für ? habe ich 2 gewählt. Also
E = 1110 => 12 im "Quad-Modus"

Was ist zu tun:

die Datei intertechno.c anpassen:

/*
* Copyright by O.Droegehorn /
*              DHS-Computertechnik GmbH
* License: GPL v2
*/

#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdio.h>
#include <util/parity.h>
#include <string.h>

#include "board.h"

#ifdef HAS_INTERTECHNO

#include "delay.h"
#include "rf_send.h"
#include "rf_receive.h"
#include "led.h"
#include "cc1100.h"
#include "display.h"
#include "fncollection.h"
#include "fht.h"
#include "intertechno.h"

#ifdef HAS_ASKSIN
#include "rf_asksin.h"
#endif

#ifdef HAS_MORITZ
#include "rf_moritz.h"
#endif

static uint8_t intertechno_on = 0;

const PROGMEM const uint8_t CC1100_ITCFG[EE_CC1100_CFG_SIZE] = {
// CULFW   IDX NAME     RESET STUDIO COMMENT
   0x0D, // 00 IOCFG2   *29   *0B    GDO2 as serial output
   0x2E, // 01 IOCFG1    2E    2E    Tri-State
   0x2D, // 02 IOCFG0   *3F   *0C    GDO0 for input
   0x07, // 03 FIFOTHR   07   *47   
   0xD3, // 04 SYNC1     D3    D3   
   0x91, // 05 SYNC0     91    91   
   0x3D, // 06 PKTLEN   *FF    3D   
   0x04, // 07 PKTCTRL1  04    04   
   0x32, // 08 PKTCTRL0 *45    32   
   0x00, // 09 ADDR      00    00   
   0x00, // 0A CHANNR    00    00   
   0x06, // 0B FSCTRL1  *0F    06    152kHz IF Frquency
   0x00, // 0C FSCTRL0   00    00   
   0x10, // 0D FREQ2    *1E    21    433.92 (InterTechno Frequency)
   0xb0, // 0E FREQ1    *C4    65   
   0x71, // 0F FREQ0    *EC    e8   
   0x55, // 10 MDMCFG4  *8C    55    bWidth 325kHz
   0xe4, // 11 MDMCFG3  *22   *43    Drate:1500 ((256+228)*2^5)*26000000/2^28
   0x30, // 12 MDMCFG2  *02   *B0    Modulation: ASK
   0x23, // 13 MDMCFG1  *22    23   
   0xb9, // 14 MDMCFG0  *F8    b9    ChannelSpace: 350kHz
   0x00, // 15 DEVIATN  *47    00   
   0x07, // 16 MCSM2     07    07   
   0x00, // 17 MCSM1     30    30   
   0x18, // 18 MCSM0    *04    18    Calibration: RX/TX->IDLE
   0x14, // 19 FOCCFG   *36    14   
   0x6C, // 1A BSCFG     6C    6C   
   0x07, // 1B AGCCTRL2 *03   *03    42 dB instead of 33dB
   0x00, // 1C AGCCTRL1 *40   *40   
   0x90, // 1D AGCCTRL0 *91   *92    4dB decision boundery
   0x87, // 1E WOREVT1   87    87   
   0x6B, // 1F WOREVT0   6B    6B   
   0xF8, // 20 WORCTRL   F8    F8   
   0x56, // 21 FREND1    56    56   
   0x11, // 22 FREND0   *16    17    0x11 for no PA ramping
   0xE9, // 23 FSCAL3   *A9    E9   
   0x2A, // 24 FSCAL2   *0A    2A
   0x00, // 25 FSCAL1    20    00
   0x1F, // 26 FSCAL0    0D    1F   
   0x41, // 27 RCCTRL1   41    41   
   0x00, // 28 RCCTRL0   00    00   
};

uint16_t it_interval = 420;
uint16_t it_interval_v3 = 260;
uint16_t it_repetition = 6;
uint8_t restore_asksin = 0;
uint8_t restore_moritz = 0;
unsigned char it_frequency[] = {0x10, 0xb0, 0x71};

static void
it_tunein(void)
{
  int8_t i;
 
EIMSK &= ~_BV(CC1100_INT);                 
  SET_BIT( CC1100_CS_DDR, CC1100_CS_PIN ); // CS as output

  CC1100_DEASSERT;                           // Toggle chip select signal
  my_delay_us(30);
  CC1100_ASSERT;
  my_delay_us(30);
  CC1100_DEASSERT;
  my_delay_us(45);

  ccStrobe( CC1100_SRES );                   // Send SRES command
  my_delay_us(100);

  CC1100_ASSERT;                             // load configuration
  cc1100_sendbyte( 0 | CC1100_WRITE_BURST );
  for(uint8_t i = 0; i < 13; i++) {
    cc1100_sendbyte(__LPM(CC1100_ITCFG+i));
  } // Tune to standard IT-Frequency
  cc1100_sendbyte(it_frequency[0]); // Modify Freq. for 433.92MHZ, or whatever
  cc1100_sendbyte(it_frequency[1]);
cc1100_sendbyte(it_frequency[2]); 
for (i = 16; i<EE_CC1100_CFG_SIZE; i++) {
    cc1100_sendbyte(__LPM(CC1100_ITCFG+i));
}
  CC1100_DEASSERT;

  uint8_t *pa = EE_CC1100_PA;
  CC1100_ASSERT;                             // setup PA table
  cc1100_sendbyte( CC1100_PATABLE | CC1100_WRITE_BURST );
  for (uint8_t i = 0;i<8;i++) {
    cc1100_sendbyte(erb(pa++));
  }
  CC1100_DEASSERT;

  ccStrobe( CC1100_SCAL );
  my_delay_ms(1);
  cc_on = 1; // Set CC_ON
}

static void
send_IT_bit(uint8_t bit)
{
if (bit == 1) {
  CC1100_OUT_PORT |= _BV(CC1100_OUT_PIN);         // High H
  my_delay_us(it_interval * 3);
  CC1100_OUT_PORT &= ~_BV(CC1100_OUT_PIN);       // Low
  my_delay_us(it_interval);

  CC1100_OUT_PORT |= _BV(CC1100_OUT_PIN);         // High H
  my_delay_us(it_interval * 3);
  CC1100_OUT_PORT &= ~_BV(CC1100_OUT_PIN);       // Low
  my_delay_us(it_interval);
  } else if (bit == 0) {
  CC1100_OUT_PORT |= _BV(CC1100_OUT_PIN);         // High
  my_delay_us(it_interval);
  CC1100_OUT_PORT &= ~_BV(CC1100_OUT_PIN);       // Low L
  my_delay_us(it_interval * 3);

  CC1100_OUT_PORT |= _BV(CC1100_OUT_PIN);         // High
  my_delay_us(it_interval);
  CC1100_OUT_PORT &= ~_BV(CC1100_OUT_PIN);       // Low L
  my_delay_us(it_interval * 3);
// Quad-State
  } else if (bit == 2) {
      CC1100_OUT_PORT |= _BV(CC1100_OUT_PIN);         // High H
      my_delay_us(it_interval * 3);
      CC1100_OUT_PORT &= ~_BV(CC1100_OUT_PIN);       // Low
      my_delay_us(it_interval);
     
      CC1100_OUT_PORT |= _BV(CC1100_OUT_PIN);         // High L
      my_delay_us(it_interval);
      CC1100_OUT_PORT &= ~_BV(CC1100_OUT_PIN);       // Low
      my_delay_us(it_interval * 3);
// Quad-State
  } else {
  CC1100_OUT_PORT |= _BV(CC1100_OUT_PIN);         // High
  my_delay_us(it_interval);
  CC1100_OUT_PORT &= ~_BV(CC1100_OUT_PIN);       // Low L
  my_delay_us(it_interval * 3);

  CC1100_OUT_PORT |= _BV(CC1100_OUT_PIN);         // High H
  my_delay_us(it_interval * 3);
  CC1100_OUT_PORT &= ~_BV(CC1100_OUT_PIN);       // Low
  my_delay_us(it_interval); 
  }
}

static void
send_IT_start_V3(void) {
  CC1100_OUT_PORT |= _BV(CC1100_OUT_PIN);         // High
my_delay_us(it_interval);
  CC1100_OUT_PORT &= ~_BV(CC1100_OUT_PIN);       // Low
  my_delay_us(it_interval_v3 * 10);
}

static void
send_IT_stop_V3(void) {
  CC1100_OUT_PORT |= _BV(CC1100_OUT_PIN);         // High
my_delay_us(it_interval_v3);
  CC1100_OUT_PORT &= ~_BV(CC1100_OUT_PIN);       // Low
  my_delay_us(it_interval_v3 * 40);
}

static void
send_IT_bit_V3(uint8_t bit)
{
if (bit == 1) {
  CC1100_OUT_PORT |= _BV(CC1100_OUT_PIN);         // High
  my_delay_us(it_interval_v3);
  CC1100_OUT_PORT &= ~_BV(CC1100_OUT_PIN);       // Low
  my_delay_us(it_interval_v3 * 5);

  CC1100_OUT_PORT |= _BV(CC1100_OUT_PIN);         // High
  my_delay_us(it_interval_v3);
  CC1100_OUT_PORT &= ~_BV(CC1100_OUT_PIN);       // Low
  my_delay_us(it_interval_v3);
  } else if (bit == 0) {
  CC1100_OUT_PORT |= _BV(CC1100_OUT_PIN);         // High
  my_delay_us(it_interval_v3);
  CC1100_OUT_PORT &= ~_BV(CC1100_OUT_PIN);       // Low
  my_delay_us(it_interval_v3);

  CC1100_OUT_PORT |= _BV(CC1100_OUT_PIN);         // High
  my_delay_us(it_interval_v3);
  CC1100_OUT_PORT &= ~_BV(CC1100_OUT_PIN);       // Low
  my_delay_us(it_interval_v3 * 5);
  } else {
  CC1100_OUT_PORT |= _BV(CC1100_OUT_PIN);         // High
  my_delay_us(it_interval_v3);
  CC1100_OUT_PORT &= ~_BV(CC1100_OUT_PIN);       // Low
  my_delay_us(it_interval_v3);

  CC1100_OUT_PORT |= _BV(CC1100_OUT_PIN);         // High
  my_delay_us(it_interval_v3);
  CC1100_OUT_PORT &= ~_BV(CC1100_OUT_PIN);       // Low
  my_delay_us(it_interval_v3); 
  }
}

static void
it_send (char *in) {
  int8_t i, j, k;

LED_ON();

    #if defined (HAS_IRRX) || defined (HAS_IRTX) //Blockout IR_Reception for the moment
      cli();
    #endif

// If NOT InterTechno mode
if(!intertechno_on)  {
#ifdef HAS_ASKSIN
if (asksin_on) {
restore_asksin = 1;
asksin_on = 0;
}
#endif
#ifdef HAS_MORITZ
if(moritz_on) {
restore_moritz = 1;
moritz_on = 0;
}
#endif
it_tunein();
my_delay_ms(3);             // 3ms: Found by trial and error
    }
  ccStrobe(CC1100_SIDLE);
  ccStrobe(CC1100_SFRX );
  ccStrobe(CC1100_SFTX );

  ccTX();                       // Enable TX

    int8_t sizeOfPackage = strlen(in)-1; // IT-V1 = 14, IT-V3 = 33
 
for(i = 0; i < it_repetition; i++)  {
      if (sizeOfPackage == 33) {     
        send_IT_start_V3();
      }
  for(j = 1; j < sizeOfPackage; j++)  {
  if(in[j+1] == '0') {
          if (sizeOfPackage == 33) {
  send_IT_bit_V3(0);
          } else {
send_IT_bit(0);
          }     
} else if (in[j+1] == '1') {
          if (sizeOfPackage == 33) {
  send_IT_bit_V3(1);
          } else {
send_IT_bit(1);
          } 
// Quad
                } else if (in[j+1] == '2') {
          if (sizeOfPackage == 33) {
                       send_IT_bit_V3(2);
          } else {
                        send_IT_bit(2);
          }

// Quad
                } else {
          if (sizeOfPackage == 33) {
  send_IT_bit_V3(3);  // Quad 2->3
} else {
send_IT_bit(3);       // Quad 2->3
}
}
}
      if (sizeOfPackage == 33) { 
        send_IT_stop_V3();
      } else {
// Sync-Bit
  CC1100_OUT_PORT |= _BV(CC1100_OUT_PIN);         // High
  my_delay_us(it_interval);
  CC1100_OUT_PORT &= ~_BV(CC1100_OUT_PIN);       // Low
  for(k = 0; k < 31; k++)  {
  my_delay_us(it_interval);
}
      }
} //Do it n Times

  if(intertechno_on) {
if(tx_report) {                               // Enable RX
    ccRX();
  } else {
  ccStrobe(CC1100_SIDLE);
}
  }
  #ifdef HAS_ASKSIN
      else if (restore_asksin) {
restore_asksin = 0;
    rf_asksin_init();
asksin_on = 1;
    ccRX();
 
  #endif
#ifdef HAS_MORITZ
else if (restore_moritz) {
restore_moritz = 0;
rf_moritz_init();
}
#endif
  else {
    set_txrestore();
  }

    #if defined (HAS_IRRX) || defined (HAS_IRTX) //Activate IR_Reception again
      sei();
    #endif  

LED_OFF();

DC('i');DC('s');
for(j = 1; j < sizeOfPackage; j++)  {
if(in[j+1] == '0') {
DC('0');
} else if (in[j+1] == '1') {
                DC('1');
            } else if (in[j+1] == '2') {  // Quad
                DC('2');                  // Quad
} else {
DC('F');
}
}
DNL();
}


void
it_func(char *in)
{
if (in[1] == 't') {
fromdec (in+2, (uint8_t *)&it_interval);
DU(it_interval,0); DNL();
} else if (in[1] == 's') {
if (in[2] == 'r') { // Modify Repetition-counter
fromdec (in+3, (uint8_t *)&it_repetition);
DU(it_repetition,0); DNL();
} else {
it_send (in); // Sending real data
} //sending real data
} else if (in[1] == 'r') { // Start of "Set Frequency" (f)
#ifdef HAS_ASKSIN
if (asksin_on) {
restore_asksin = 1;
asksin_on = 0;
}
#endif
#ifdef HAS_MORITZ
if (moritz_on) {
restore_moritz = 1;
moritz_on = 0;
}
#endif
it_tunein ();
intertechno_on = 1;
} else if (in[1] == 'f') { // Set Frequency
  if (in[2] == '0' ) {
  it_frequency[0] = 0x10;
  it_frequency[1] = 0xb0;
  it_frequency[2] = 0x71;
  } else {
fromhex (in+2, it_frequency, 3);
}
DC('i');DC('f');DC(':');
  DH2(it_frequency[0]);
  DH2(it_frequency[1]);
  DH2(it_frequency[2]);
  DNL();
} else if (in[1] == 'x') {                     // Reset Frequency back to Eeprom value
if(0) { ;
#ifdef HAS_ASKSIN
} else if (restore_asksin) {
restore_asksin = 0;
rf_asksin_init();
asksin_on = 1;
ccRX();
#endif
#ifdef HAS_MORITZ
} else if (restore_moritz) {
restore_moritz = 0;
rf_moritz_init();
#endif
} else {
ccInitChip(EE_CC1100_CFG); // Set back to Eeprom Values
if(tx_report) {                               // Enable RX
ccRX();
} else {
ccStrobe(CC1100_SIDLE);
}
}
intertechno_on = 0;
} else if (in[1] == 'c') { // Modify Clock-counter
        fromdec (in+1, (uint8_t *)&it_interval);
    }
}

#endif


=> alle Stellen sind mit Quad gekennzeichnet.
Ich hätte es auch gerne in das Repositorie eingepflegt, leider habe ich das aber nicht hinbekommen.

mahowi

Meine C-Kenntnisse sind leider sehr bescheiden.  :-\

Läßt sich das auch in der a-culfw einbauen? Hier sieht intertechno.c nämlich etwas anders aus: https://github.com/heliflieger/a-culfw/blob/master/culfw/clib/intertechno.c
CUBe (MAX): HT, FK | CUBe (SlowRF): ESA2000WZ
JeeLink: LaCrosse | nanoCUL433: Smartwares SHS-51001-EU, EM1000GZ
ZME_UZB1: GreenWave PowerNode, Popp Thermostat | SIGNALDuino: HE877, X10 MS14A, Revolt NC-5462,  IT Steckdosen + PIR
tado° | Milight | HUE, Lightify | SmarterCoffee

sissiwup

Hallo,

der Code ist nahezu exakt identisch. Sollte also kein Problem sein. Nutze halt nur die normale CULFW.
Bin halt noch recht neu dabei und habe erst später erfahren das es eine a(lternative) culfw gibt.

Was sind denn die Vorteile von a-culfw?

mahowi

Der Vorteil ist die Unterstützung von zusätzlichen Protokollen. Außerdem läßt sich damit auch der Max Cube zum CUL flashen.
CUBe (MAX): HT, FK | CUBe (SlowRF): ESA2000WZ
JeeLink: LaCrosse | nanoCUL433: Smartwares SHS-51001-EU, EM1000GZ
ZME_UZB1: GreenWave PowerNode, Popp Thermostat | SIGNALDuino: HE877, X10 MS14A, Revolt NC-5462,  IT Steckdosen + PIR
tado° | Milight | HUE, Lightify | SmarterCoffee

mahowi

Zitat von: sissiwup am 05 Februar 2016, 17:18:27
Hallo,

der Code ist nahezu exakt identisch. Sollte also kein Problem sein. Nutze halt nur die normale CULFW.
Bin halt noch recht neu dabei und habe erst später erfahren das es eine a(lternative) culfw gibt.

Hallo,
so identisch ist der Code nicht wirklich, zumindest nicht für mich als C-Laien. Den ersten Teil Deiner Änderung einzubauen ist kein Problem:
--- intertechno.c.orig  2016-02-05 14:56:36.379968848 +0100
+++ intertechno.c       2016-02-10 18:28:09.549999375 +0100
@@ -177,6 +177,18 @@
        my_delay_us(it_interval);
          CC1100_CLEAR_OUT;       // Low
          my_delay_us(it_interval * 3);
+// Quad-State
+  } else if (bit == 2) {
+       CC1100_SET_OUT;         // High
+       my_delay_us(it_interval * 3);
+       CC1100_CLEAR_OUT;       // Low
+       my_delay_us(it_interval);
+
+       CC1100_SET_OUT;         // High
+       my_delay_us(it_interval);
+       CC1100_CLEAR_OUT;       // Low
+       my_delay_us(it_interval * 3);
+// Quad-State
   } else {
        CC1100_SET_OUT;         // High
        my_delay_us(it_interval);


Aber wo bau ich den Rest Deiner Änderungen ein (ab Zeile 285)?
// Quad
                } else if (in[j+1] == '2') {
          if (sizeOfPackage == 33) {
                       send_IT_bit_V3(2);
          } else {
                        send_IT_bit(2);
          }

// Quad
                } else {
          if (sizeOfPackage == 33) {
  send_IT_bit_V3(3);  // Quad 2->3
} else {
send_IT_bit(3);       // Quad 2->3
}


Der Code müsste ja irgendwo ab Zeile 385 in der a-culfw eingefügt werden.
CUBe (MAX): HT, FK | CUBe (SlowRF): ESA2000WZ
JeeLink: LaCrosse | nanoCUL433: Smartwares SHS-51001-EU, EM1000GZ
ZME_UZB1: GreenWave PowerNode, Popp Thermostat | SIGNALDuino: HE877, X10 MS14A, Revolt NC-5462,  IT Steckdosen + PIR
tado° | Milight | HUE, Lightify | SmarterCoffee

sidi

HAllo,

ich hätte auch Interesse an einer modifizierten a-culfw. Habe auch ein paar Geräte, die 10 benötigen.

Gruß,
sidi

bjoernh

Zitat von: sidi am 18 Februar 2016, 18:15:42
HAllo,

ich hätte auch Interesse an einer modifizierten a-culfw. Habe auch ein paar Geräte, die 10 benötigen.

Gruß,
sidi

Ich kann mir das mal anschauen, es muss aber einer von euch testen.

sidi

ich würde es mit meinen Geräten testen.

Tatsu

Ich habe ich hier auch Unitec Funksteckdosen die ich gerne mit der a-culfw nutzen würde und wäre bereit zu testen... :)

sidi


bjoernh

#10
Hallo,

ich habe mir gerade mal den Code in der a-culfw angesehen.

Den wert '2' habe ich bereits belegt.
Das einzige was ich anbieten kann ist die 3 zu nehmen.
Ich werde das jetzt mal einbauen, kann dass dan jemand bitte testen?

Gruß
Björn

Ralf9

Zitat von: bjoernh am 26 November 2016, 19:53:24
Das spezielle Bit ist dann die '3'
Was mich noch interessieren würde, wäre mal ein Empfang eines Handsenders. Ich denke da muss noch etwas im Fhem Modul angepasst werden.

Ich habe es für den Signalduino schon eingebaut, ich habe für "10" aber "D" verwendet. Die Änderung von "D" nach "3" im IT-Modul ist eine Kleinigkeit, bedeutet dann aber, daß diejenigen die das beim Signalduino bereits verwenden, den on/off Code anpassen müssen.

my %bintotristate=(
  "00" => "0",
  "01" => "F",
  "10" => "D",
  "11" => "1"
);


    return "Define $a[0]: wrong OFF format: specify a 2 digits 0/1/f/d "
    if( ($a[4] !~ m/^[df0-1]{2}$/i) );


Gruß Ralf
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

Ralf9

Zitat von: bjoernh am 26 November 2016, 22:04:50
damit kann ich auch leben.
Ich werde es dann in der a-culfw auf D ändern.

OK, lokal geht es schon. Jetzt muss nur noch das FHEM Modul angepasst werden. Das sehe ich doch richtig, oder?

Mit dem aktuellen IT-Modul hat das Empfangen seither schon funktioniert. Mit Deinem patch in der a-culfw müsste jetzt auch das senden funktionieren.

Zum anlegen mit autocreate 2 mal auf "on" drücken:
2016.11.27 11:47:37.753 5: sduinoD dispatch i0D0C0F
2016.11.27 11:47:37.753 4: sduinoD IT: message "i0D0C0F" (7)
2016.11.27 11:47:37.753 4: sduinoD IT: msgcode "001F00100011" (12) bin = 000011010000110000001111
2016.11.27 11:47:37.753 5: sduinoD IT: V1 housecode = 001F001000  onoffcode = 11
2016.11.27 11:47:37.753 4: sduinoD IT: 001F001000 not defined (Switch code: 11)
2016.11.27 11:47:37.755 2: autocreate: define IT_001F001000 IT 001F001000 0F F0


Nun auf "off" drücken:
2016.11.27 11:48:32.004 5: sduinoD dispatch i0D0C0E
2016.11.27 11:48:32.004 4: sduinoD IT: message "i0D0C0E" (7)
2016.11.27 11:48:32.004 4: sduinoD IT: msgcode "001F0010001D" (12) bin = 000011010000110000001110
2016.11.27 11:48:32.004 5: sduinoD IT: V1 housecode = 001F001000  onoffcode = 1D
2016.11.27 11:48:32.004 3: sduinoD IT: Code 1D not supported by IT_001F001000.


Da dies keine Intertechno Steckdose ist passt der on/off code im define nicht und muss angepasst werden
001F001000 11 1D

Gruß Ralf
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

sasel

#13
Hallo,

ich möchte als Neuling höflich nachfragen ob das Thema Unitec aus eurer Sicht abgeschlossen ist. Ich habe mir die Unitec 48110 ohne DIP Schalter bei Hornbach besorgt.
Aufgrund der Foreneinträge habe ich meinen nanoCUL auf die FW 1.23.03 geflasht und zu Sicherheit gestern auch noch einmal FHEM geupdatet. Leider komme ich hier nicht zum Erfolg. Ich habe das Loglevel des nanoCUL auf Verbose 5 gesetzt und erhalten im Log folgende Einträge wenn ich mit der Fernbedienung schalte.


2016.12.10 12:16:44 4: CUL_Parse: nanoCUL i6556996A969A959615 -63.5
2016.12.10 12:16:44 5: nanoCUL: dispatch i6556996a969a9596
2016.12.10 12:16:44 4: nanoCUL IT: message "i6556996a969a9596" (17)
2016.12.10 12:16:44 4: nanoCUL ITv3: bin message "0110010101010110100110010110101010010110100110101001010110010110" (64)
2016.12.10 12:16:44 4: nanoCUL IT: msgcode "01000001101001111001101110001001" (32) bin = 0110010101010110100110010110101010010110100110101001010110010110
2016.12.10 12:16:53 5: CUL/RAW: /s5E
2016.12.10 12:16:53 5: CUL/RAW: s5E/880
2016.12.10 12:16:53 5: CUL/RAW: s5E880/5513
2016.12.10 12:16:53 5: CUL/RAW: s5E8805513/028;
2016.12.10 12:16:53 5: CUL/RAW: s5E8805513028;/  48
2016.12.10 12:16:53 5: CUL/RAW: s5E8805513028;  48/0: 9
2016.12.10 12:16:53 5: CUL/RAW: s5E8805513028;  480: 9/184
2016.12.10 12:16:53 5: CUL/RAW: s5E8805513028;  480: 9184



Autocreate legt "natürlich" nichts an. Auf mich als Laie wirkt es, als wenn der Code nur zur Hälfte erkannt/verarbeitet wird.
Da ich bis jetzt durch forschen im Forum so ziemlich alles ans laufen gebracht habe, habe ich die Hoffnung, dass ich hier mit einem kleinen Hinweis Eurerseits vielleicht schon weiterkommen kann.

Vorab schon einmal vielen Dank und Gruß

sasel

Ralf9

Hast Du die Taste innerhalb 30 sek zwei mal gedrückt?

Wenn ich es bei mir mit Deinen Daten mit einem Dummy simuliere, wird es sauber per autocreate angelegt:
2016.12.10 19:29:55.003 4: sduinoD/msg get dispatch: i6556996a969a9596
2016.12.10 19:29:55.003 5: sduinoD dispatch i6556996a969a9596
2016.12.10 19:29:55.015 4: sduinoD IT: message "i6556996a969a9596" (17)
2016.12.10 19:29:55.015 4: sduinoD ITv3: bin message "0110010101010110100110010110101010010110100110101001010110010110" (64)
2016.12.10 19:29:55.015 4: sduinoD IT: msgcode "01000001101001111001101110001001" (32) bin = 0110010101010110100110010110101010010110100110101001010110010110
2016.12.10 19:29:55.015 2: sduinoD IT: 0100000110100111100110111001001 not defined (Address: 01000001101001111001101110 Group: 0 Unit: 1001 Switch code: 0)
2016.12.10 19:30:22.039 4: sduinoD/msg get dispatch: i6556996a969a9596
2016.12.10 19:30:22.040 5: sduinoD dispatch i6556996a969a9596
2016.12.10 19:30:22.040 4: sduinoD IT: message "i6556996a969a9596" (17)
2016.12.10 19:30:22.040 4: sduinoD ITv3: bin message "0110010101010110100110010110101010010110100110101001010110010110" (64)
2016.12.10 19:30:22.040 4: sduinoD IT: msgcode "01000001101001111001101110001001" (32) bin = 0110010101010110100110010110101010010110100110101001010110010110
2016.12.10 19:30:22.040 2: sduinoD IT: 0100000110100111100110111001001 not defined (Address: 01000001101001111001101110 Group: 0 Unit: 1001 Switch code: 0)
2016.12.10 19:30:22.042 2: autocreate: define IT_0100000110100111100110111001001 IT 01000001101001111001101110 0 1001
2016.12.10 19:30:22.043 2: autocreate: define FileLog_IT_0100000110100111100110111001001 FileLog ./log/IT_0100000110100111100110111001001-%Y-%m.log IT_0100000110100111100110111001001
2016.12.10 19:30:22.901 4: sduinoD/msg get dispatch: i6556996a969a9596
2016.12.10 19:30:22.901 5: sduinoD dispatch i6556996a969a9596
2016.12.10 19:30:22.901 4: sduinoD IT: message "i6556996a969a9596" (17)
2016.12.10 19:30:22.901 4: sduinoD ITv3: bin message "0110010101010110100110010110101010010110100110101001010110010110" (64)
2016.12.10 19:30:22.901 4: sduinoD IT: msgcode "01000001101001111001101110001001" (32) bin = 0110010101010110100110010110101010010110100110101001010110010110
2016.12.10 19:30:22.901 3: sduinoD IT: IT_0100000110100111100110111001001 ???->off


Gruß Ralf
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

sasel

Hallo Ralf,

ich habe die on Taste noch einmal in Abständen von 1 - 5 Sekunden hintereinander gedrückt, anschließend die off Taste. Das Ergebnis ist das Gleiche. Zur Sicherheit habe ich das autocreate device noch einmal gelöscht und wieder neu angelegt

define autocreate autocreate

Dies hat jedoch auch nichts am Ergebnis geändert.
Seltsam ist auch, dass ich auf 1 - 2 Meter mit der Fernbedienung an den nanoCUL ran muss. Bin ich weiter weg, dann erscheint im LOG gar nichts. Bisher hatte ich bei keiner Komponente Probleme mit dem Empfang.

Besten Dank und Gruß

sasel

Ralf9

welche Version des IT-Modul hast Du?
Du kannst auch mal ein fhem neustart versuchen
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

sasel

Hallo,

Neustart habe ich bereits aus anderen Gründen heute mehrfach durchgeführt. Den Punkt kann ich somit ausschließen.
Die Version des IT Moduls lautet:

10_IT.pm            12179 2016-09-19 19:26:01Z dancer0705

Gruß

Florian

Ralf9

Diese Version des IT Moduls habe ich auch. Ich habe nun keine Idee mehr.
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

sasel

Trotzdem vielen Dank für Deine Mühe.  :)

Ralf9

Mit den Daten aus meinem log kannst Du sie natürlich auch ohne autocreate anlegen:
define IT_0100000110100111100110111001001 IT 01000001101001111001101110 0 1001
define FileLog_IT_0100000110100111100110111001001 FileLog ./log/IT_0100000110100111100110111001001-%Y-%m.log IT_0100000110100111100110111001001

FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

sasel

Hallo,

das habe ich bereits versucht. Die Dosen lassen sich damit weder pairen noch nach dem pairen schalten. Keine Ahnung, ob ich nicht vielleicht einen neue Version gekauft habe oder bei meiner Installation etwas schief gelaufen ist. >:(

Gruß

sasel