Unitec EIM-826 Funksteckdosen - quad-state Signale?

Begonnen von mister1980, 12 Februar 2014, 00:31:26

Vorheriges Thema - Nächstes Thema

mister1980

Hallo zusammen,
ich versuche meine unitec EIM-826 billig funk Steckdosen über einen CUL868Mhz anzusteuern. Die Steckdosen haben keine DIP Schalter.
Da ich im Internet keine passenden Ansteuercodes finden konnte, hab ich die Signale über die Fernbedienung + Soundkarte aufgezeichnet und ausgewertet (http://avr.börke.de/E-Funk.htm).

Die Auswertung läuft ja wie folgt:
<kurz> <kurz> "0"
<kurz> <lang> "F"
<lang> <lang> "1"

Blöderweise habe ich aber auch eine Pulsfolge <lang> <kurz> !?  (von mir nachfolgend mit ,,Q" bezeichnet).

Irgendwie arbeitet unitec nicht mit tri-state sondern mit quad-state Pulsfolgen.
(scheint es ja sogar öfters zu geben: http://physudo.blogspot.de/2013/08/home-automation-mit-dem-arduino-und-433_17.html).

Auswertungen der Fernbedienungssignale:
1on:      0000000000 11
1off:    0000000000 1Q
2on:      0000000000 F1
2off:      0000000000 FQ
3on:      0000000000 Q1
3off:      0000000000 QQ
4on:      0000000000 01
4off:      0000000000 0Q
All-on:   0000000000 1F
All-off:    0000000000 10

Über FHEM kann ich alles wo kein "Q" enthalten ist ansteuern.
Beispiel:
define unitec IT 0000000000 1F 10
attr unitec IODev CUL

Gibt es schon ein Protokoll bei FHEM das "quad-state" kann b.z.w. wäre es denkbar dies in ,,Intertechno" zu Integrieren?

sissiwup

Hallo,

das kannst du durch hinzufügen eines vierten States in der intertechno.c lösen.
Siehe dazu meinen Post zu diesem Thema von heute.

/*
* 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

robudus

Hallo Zusammen,

bin ein Anfänger und hoffe auf etwas Hilfe.
Es geht um die UNITEC Steckdosen von hellweg. Diese werden laut Forum mit einem quadstate betrieben. Habe meinen CUL mit der verännderten Firmware von https://forum.fhem.de/index.php/topic,20107.html geflasht. Aber leider klappt das ganze damit auch nicht: der CUL sagt

2016.11.19 18:02:58 4: CUL_Parse: nanoCUL i00000C19 -61.5
2016.11.19 18:02:58 5: nanoCUL dispatch i00000c
2016.11.19 18:02:58 4: nanoCUL IT: message "i00000c" (7)
2016.11.19 18:02:58 4: nanoCUL IT: msgcode "000000000010" (12) bin = 000000000000000000001100
2016.11.19 18:02:58 5: nanoCUL IT: V1 housecode = 0000000000  onoffcode = 10
2016.11.19 18:02:58 3: nanoCUL IT: Code 10 not supported by IT_0000000000.
2016.11.19 18:02:58 4: nanoCUL IT: message "i00000c" (7)
2016.11.19 18:02:58 4: nanoCUL IT: msgcode "000000000010" (12) bin = 000000000000000000001100
2016.11.19 18:02:58 5: nanoCUL IT: V1 housecode = 0000000000  onoffcode = 10
2016.11.19 18:02:58 3: nanoCUL IT: Code 10 not supported by IT_0000000000.
2016.11.19 18:02:58 3: nanoCUL: Unknown code i00000c, help me!
2016.11.19 18:02:58 5: CUL/RAW: /i00000
2016.11.19 18:02:58 5: CUL/RAW: i00000/C19

2016.11.19 18:02:58 4: CUL_Parse: nanoCUL i00000C19 -61.5
2016.11.19 18:02:58 5: nanoCUL dispatch i00000c
2016.11.19 18:02:58 4: nanoCUL IT: message "i00000c" (7)
2016.11.19 18:02:58 4: nanoCUL IT: msgcode "000000000010" (12) bin = 000000000000000000001100
2016.11.19 18:02:58 5: nanoCUL IT: V1 housecode = 0000000000  onoffcode = 10
2016.11.19 18:02:58 3: nanoCUL IT: Code 10 not supported by IT_0000000000.
2016.11.19 18:02:58 4: nanoCUL IT: message "i00000c" (7)
2016.11.19 18:02:58 4: nanoCUL IT: msgcode "000000000010" (12) bin = 000000000000000000001100
2016.11.19 18:02:58 5: nanoCUL IT: V1 housecode = 0000000000  onoffcode = 10
2016.11.19 18:02:58 3: nanoCUL IT: Code 10 not supported by IT_0000000000.
2016.11.19 18:02:58 3: nanoCUL: Unknown code i00000c, help me!
2016.11.19 18:03:22 2: nanoCUL IT_set: IT_0000000000 off
2016.11.19 18:03:22 5: SW: is0000000000F0
2016.11.19 18:03:22 5: CUL/RAW (ReadAnswer): i
2016.11.19 18:03:22 5: CUL/RAW (ReadAnswer): s0000000000F0

Was kann ich da noch machen? Ideen? Es ist die Version    
V 1.66 nanoCUL433 mit der umgebauten intertechno.c

Vielen Dank für Tips

g ROBUdus

monkye

Hallo Zusammen,

ich weiß - der Beitrag ist alt.

Den vorgeschlagenen Patch habe ich übernommen für die Steuerung der Unitec EIM-826. Allerdings mosert logischerweise FHEM bei der Eingabe dieser Zeile rum:

define unitec.2 IT 0000000000 F1 F2

Zulässige Argumente sind halt 0, 1, F, D

Wahrscheinlich muss auch der Teil noch angepasst werden?

Ein Hinweis genügt mir, lesen/umsetzen mache ich dann schon.

Besten Dank,

Uwe

KölnSolar

Quadstate ist seit langem in der aculfw implementiert. Die hast Du nicht geflashed ?
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

monkye

Nein , sondern eine CULFW 1.67 auf einen ,,fliegenden" nanoCUL - Arduino pro Mini 3,3V 8MHz + FTDI + CC1101 433MHz.
Das funktioniert eben nur teilweise, auch die Erkennung (empfangen) von IT Codes ist so la-la.

Ist die Darstellung des vierten Bit-Typs dann mit ,,D" gekennzeichnet bei der Konfiguration?

KölnSolar

RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

monkye

OK, es klappt alles außer das Brennen. Wahrscheinlich wird ein anderer Chip erwartet. Ist ja kein Atmega32U4, sondern ein Atmega328p + FTDI...

"dfu-programmer: no device present"

Kann auch sein dass ich nur flash.sh anpassen muss.

KölnSolar

RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

monkye

Tut mir wirklich leid, der Kasper - also ich - ist das Problem.

Anstatt das Verzeichnis "nanoCUL" auszuwählen bin ich (copy & paste) direkt zum Verzeichnis "CUL"....

So, jetzt teste ich die Funktionen mit FHEM.

DANKESCHÖN im Besonderen @KölnSolar

monkye

Soooo: Prinzipiell geht es erstmal. Vermutlich lohnt der Aufwand nicht, dass die Signalisierung (On/Off) auf Grund der immer gleichen Adresse.
Was mir technisch noch nicht ganz klar ist: Das Gerät sendet die Bits 25-5 immer mit ,,1", danach kommen 3 Adressbits für die Schalter 1, 2, 3, 4, Alle und das vorletzte Bit repräsentiert den Schaltzustand (0=On, 1=Off) - das letzte Bit ist immer 1.
Wenn ich 2 Bit zu einem Quad-Bit zusammenziehe, dann habe ich ein IT Bit?

Irgendwie passt das nicht.

KölnSolar

Poste mal das ganze Paket. Der Begriff bit ist im Zusammenhang mit IT ja mehrdeutig.
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

monkye

Bin mit dem Begriff ,,das ganze Paket" überfordert: Meinst Du den Eintrag aus dem Log-File oder den RAW-Wert oder das Empfangsdiagramm aus dem Logikanalyzer?

KölnSolar

Die Bitfolge eines Befehls, also 12 Quadstates(Tristates) od. 24 "bits"(z. B. Unknown code iabcdef aus dem Log) od. 48 Pulse
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

monkye


KölnSolar

Ich dachte Du zählst es aus oder postest einfach das, was im Log steht  ::)

0000000000 FD/F1
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

monkye

...OK, mache ich beim nächsten Test.

Sorry, hatte ich schlicht nicht so verstanden.

monkye

Hu, jetzt sehe ich gerade das es nur 25 Impulse sind - nicht 26...

Das würde auch das ,,wackeln" der Raw-Werte erklären. Die Bilder habe ich ja mit dem Sender in direkter Nähe zum Empfänger aufgenommen, mit einem LA.

PS: Den Server kann ich erst heute Abend wieder befragen bzgl. Log-File.

monkye

Das Ergebnis:

RAW - i000007F3 oder i000007FD oder i000007FF oder i000007FA

Und hier das letzte Stück des Log-Files:

2018.01.23 19:42:28 3: nanoCUL IT: WZ.Fernb.2 on->on
2018.01.23 19:42:28 3: nanoCUL IT: Code F1 not supported by WZ.Fernb.Alle.
2018.01.23 19:42:28 3: nanoCUL IT: Code F1 not supported by WZ.Fernb.3.
2018.01.23 19:42:28 3: nanoCUL IT: Code F1 not supported by WZ.Fernb.1.
2018.01.23 19:43:04 1: /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_00000000-if00-port0 disconnected, waiting to reappear (nanoCUL)
2018.01.23 19:43:04 3: Setting nanoCUL serial parameters to 38400,8,N,1
2018.01.23 19:43:05 3: nanoCUL: Possible commands: ABCeFfGiKLlMNRTtUVWXx
2018.01.23 19:43:05 1: /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_00000000-if00-port0 reappeared (nanoCUL)


Die Definition habe ich mit:
DEFINE WZ.Fernb.2 IT 0000000000 F1 FD

Diese Kombination funktioniert auch.

KölnSolar

Irgendwie haben wir ein Kommunikationsproblem  :-\

mein
Zitat0000000000 FD/F1
funktioniert also ?
aber wieso hast Du 4 Befehle in unmittelbarer zeitlicher Folge ?
Zitat2018.01.23 19:42:28 3: nanoCUL IT: WZ.Fernb.2 on->on
2018.01.23 19:42:28 3: nanoCUL IT: Code F1 not supported by WZ.Fernb.Alle.
2018.01.23 19:42:28 3: nanoCUL IT: Code F1 not supported by WZ.Fernb.3.
2018.01.23 19:42:28 3: nanoCUL IT: Code F1 not supported by WZ.Fernb.1.

Und wo hast Du
ZitatRAW - i000007F3 oder i000007FD oder i000007FF oder i000007FA
her ?
Das sind ja 8 "bits" bzw. 4 Tristates zu viel für das IT-V1-Protokoll :o

Zum Verständnis: 0000000000F1  entspräche i000007 entspräche WZ.Fernb.2 on->on

ZitatF1 not supported
würd ich normalerweis so interpretieren, dass F1 nicht als on/off-code definiert ist. Nur in diesem etwas unsystematischem Kontext  :-\
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

monkye

Ja, die Kombi F1/FD funktioniert - das war vielleicht nicht rübergekommen. Einzig die Signalisierung für EIN/AUS funktioniert nicht, weil ja die Adresse einheitlich 10x ,,0" ist.

Warum der Quark 4x wiederholt wird? Kann ich nur mutmaßen, manchmal sind es auch 2x oder 3x.

Die RAW-Values habe ich erhalten, in dem ich auf dem nanoCUL oben ein Get raw absetze und innerhalb von 1...2 Sekunden die Sendetaste an der UNITEC-Fernbedienung drücke (besagte Taste 2 ON).
Das da ein Impuls mehr von der FB kommt ist ja auch auf dem Logicanalyzer zu sehen.

Am Wochenende werde ich nochmal einen nanoCUL bauen, dann mit der normalen CULFW und die RAW Values vergleichen. Dann kann ich beide vergleichen.

KölnSolar

Es ist u. bleibt für mich aus der Ferne nicht nachvollziehbar  :(

ZitatAm Wochenende werde ich nochmal einen nanoCUL bauen, dann mit der normalen CULFW und die RAW Values vergleichen.
Das wird Dir nichts bringen. Die culfw hat einfach nur einen "alten" Stand bzgl. IT-Protokoll. Die Weiterentwicklung ist in der aculfw enthalten.

ZitatDie RAW-Values habe ich erhalten, in dem ich auf dem nanoCUL oben ein Get raw absetze und innerhalb von 1...2 Sekunden die Sendetaste an der UNITEC-Fernbedienung drücke (besagte Taste 2 ON).
Das hab ich noch nie gemacht.

Mach doch mal die "normale" Vorgehensweise:
- CUL auf verbose 5 einstellen und dann die Tasten der FB systematisch drücken; erst einmal nur on u. off EINES Tastenpaars
- findet sich nichts im Log(was ich kaum glaube) kannst Du noch den CUL mit set DeinCUL raw X67 in den Debugmodus setzen. Dann kommt sicherlich was(u.U. viel zu viel, deshalb schnellstmöglich nach dem Test auch wieder ein set DeinCUL raw X21 zum Abschalten des Debugmodus)

ZitatWarum der Quark 4x wiederholt wird? Kann ich nur mutmaßen, manchmal sind es auch 2x oder 3x.
Möglicherweise werden mehrere u. unterschiedliche Telegramme versendet. Vielleicht sind es aber auch nur Wiederholungen, wo ein bit gekippt ist.  :-\

Schreib beim nächsten mal auch kurz die defines der 4 Tasten.
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

monkye

Zitat von: KölnSolar am 24 Januar 2018, 12:42:07

Das hab ich noch nie gemacht.

Mach doch mal die "normale" Vorgehensweise:
- CUL auf verbose 5 einstellen und dann die Tasten der FB systematisch drücken; erst einmal nur on u. off EINES Tastenpaars
- findet sich nichts im Log(was ich kaum glaube) kannst Du noch den CUL mit set DeinCUL raw X67 in den Debugmodus setzen. Dann kommt sicherlich was(u.U. viel zu viel, deshalb schnellstmöglich nach dem Test auch wieder ein set DeinCUL raw X21 zum Abschalten des Debugmodus)
Möglicherweise werden mehrere u. unterschiedliche Telegramme versendet. Vielleicht sind es aber auch nur Wiederholungen, wo ein bit gekippt ist.  :-\

Schreib beim nächsten mal auch kurz die defines der 4 Tasten.

Ja, es ist programmatisch vorgesehen - also warum nicht. Der Kontext stimmt.

VERBOSE liefert (1) Taste 2 ON (2) Taste 2 OFF

2018.01.25 06:22:03 4: CUL_Parse: nanoCUL i000007F4 -80
2018.01.25 06:22:03 5: nanoCUL: dispatch i000007
2018.01.25 06:22:03 4: nanoCUL IT: message "i000007" (7)
2018.01.25 06:22:03 4: nanoCUL IT: msgcode "0000000000F1" (12) bin = 000000000000000000000111
2018.01.25 06:22:03 5: nanoCUL IT: V1 housecode = 0000000000  onoffcode = F1
2018.01.25 06:22:03 3: nanoCUL IT: Code F1 not supported by WZ.Fernb.1.
2018.01.25 06:22:03 3: nanoCUL IT: WZ.Fernb.2 off->on
2018.01.25 06:22:03 3: nanoCUL IT: Code F1 not supported by WZ.Fernb.3.
2018.01.25 06:22:03 3: nanoCUL IT: Code F1 not supported by WZ.Fernb.Alle.
2018.01.25 06:22:16 5: CUL/RAW: /s4B905840DB;  208: 9776

2018.01.25 06:22:16 4: CUL_Parse: nanoCUL s4B905840DB;  208: 9776
2018.01.25 06:22:16 5: nanoCUL: dispatch s4B905840DB;  208: 9776
2018.01.25 06:22:16 4: nanoCUL: CUL_TCM97001 using longid: 1 model: Mebus
2018.01.25 06:22:43 5: CUL/RAW: /i000006E
2018.01.25 06:22:43 5: CUL/RAW: i000006E/E

2018.01.25 06:22:43 4: CUL_Parse: nanoCUL i000006EE -83
2018.01.25 06:22:43 5: nanoCUL: dispatch i000006
2018.01.25 06:22:43 4: nanoCUL IT: message "i000006" (7)
2018.01.25 06:22:43 5: nanoCUL IT Parse bintotristate: msgcode=0000000000F, unknown tristate in onoff-code. is evtl a EV1527 sensor
2018.01.25 06:22:43 4: nanoCUL IT: msgcode "0000000000FD" (12) bin = 000000000000000000000110
2018.01.25 06:22:43 5: nanoCUL IT: V1 housecode = 0000000000  onoffcode = FD
2018.01.25 06:22:43 3: nanoCUL IT: Code FD not supported by WZ.Fernb.1.
2018.01.25 06:22:43 3: nanoCUL IT: WZ.Fernb.2 on->off
2018.01.25 06:22:43 3: nanoCUL IT: Code FD not supported by WZ.Fernb.3.
2018.01.25 06:22:43 3: nanoCUL IT: Code FD not supported by WZ.Fernb.Alle.


Die Defines der 5 Tasten:
1: DEFINE WZ.Fernb.1 IT 0000000000 11 1D
2: DEFINE WZ.Fernb.2 IT 0000000000 F1 FD
3: DEFINE WZ.Fernb.3 IT 0000000000 D1 DD

5: DEFINE WZ.Fernb.Alle IT 0000000000 1F 10

PS: Leider bin ich nur am WE zu Hause und damit direkt an der Hardware, deshalb dauert es manchmal bis daheim meine Familie das Zeug hochfährtund ich antworten kann...

KölnSolar

Jeeetzt versteh ich  ;D

Wie wir schon festgestellt hatten, ist der Code zu lang. Wird dann aber irgendwo auf IT-V1-Länge gekürzt. Und weil Du 4 devices mit dem selben devicecode 0000000000 definiert hast, wird der Code bei allen 4 devices geprüft.

Da kommen also 2 Dinge zusammen: kein IT-V1-Code und eigentlich hätte das IT-Modul die Anlage von 3 devices mit selbem Code verhindern müssen.

Guck Dir mal das attr userV1setcodes an. So könntest Du alle Tasten in einem device definieren. Wenn Du dann unbedingt einzelne devices benötigst, könntest Du die über Dummies realisieren, die über notifys mit dem "Sende-/Empfangsdevice" "verbunden" werden.
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

monkye

@KölnSolar, ich Danke Dir. Die Idee über Dummies hatte ich auch, wusste aber nicht ob diese Unterscheidung (verbal) auch bei den Adressen berücksichtigt  wird.

Wenn ich ZWave Geräte anlernen will benutze ich auch einen Dummy zur Abkürzung der ganzen Prozedur....

Wenn es geht, dann stelle ich das Ergebnis vor.

monkye

Hier noch die RAW Commands, die funktionieren super (jeweils pro Schalter)

G00364936151536FFFFF0FF   EIM-286 s1 on
G00364936151536FFFFF1FF           s1 off
G00364936151536FFFFF8FF           s2 on
G00364936151536FFFFF9FF           s2 off
G00364936151536FFFFF4FF           s3 on
G00364936151536FFFFF5FF           s3 off
G00364936151536FFFFFCFF           s4 on
G00364936151536FFFFFDFF           s4 off
G00364936151536FFFFF2FF           all on
G00364936151536FFFFF3FF           all off


Den Rest baue ich gleich noch nach...