Intertechno Codes von unbekanntem Gerät - wie senden?

Begonnen von Lavamat, 12 Oktober 2020, 14:00:44

Vorheriges Thema - Nächstes Thema

Lavamat

Hallo Forum,

ich hoffe, jemand kann mir helfen.

Problem: Ich habe eine Funksteckdose 4-fach, die ich über ein nanoCUL mit neuster culfw ansteuern will.
Die original FB sendet folgende Codes (z.B.).
Für Taste "A":
p 7  304  864  912  288  1  3 0 49 000008
p 7  288  864  880  320  1  3 0 4B 000008
p 7  256  864  880  256  1  3 0 4B 000008
p 7  304  864  928  240  1  3 0 4B 000008
p 7  256  864  896  240  1  3 0 4C 000008

Für Taste "B"
.... 000004

Für "C"
.... 000002

und für "D"
.... 000001

Mittels Sendebefehl
is0000 0000 00F0 (Leerzeichen nur zur besseren Lesbarkeit eingefügt) kann ich Taste "B" emulieren
und mittels
is0000 0000 000F  die Taste "D" emulieren.

Bekanntlich ist ja "F" die Doppelbit-Kombination 01

Der Befehl "is" erlaubt laut Dokumentation nur die Zeichen 0, 1 und F. "1" ist aber offenbar das Doppelbit 11. Um den Code meiner Steckdosen zu Emulieren benötige ich aber 10.
Hat jemand eine Idee?

Ich habe übrigens auch versucht aus den o.g. Daten mittels RAW-Befehl "G" die Tasten zu emulieren. Leider auch ohne Erfolg.

GssNnprHHLLhhllDDDD...
    Send raw data, only if HAS_RAWSEND is enabled.
        Everything after the command G is hex.
        ss Number of sync bits. Sync is always 0, followed by exactly one 1-bit.
        N Number of data bytes (exclusive the last byte if it is not complete)
        n Number of bits in the last byte
        p Number of ms pause between repeats
        r Number of repeats (e.g. FS20: 3)
        HH High-Time for the 0-bit, Unit is 16us (!)
        LL Low- Time for the 0-bit, Unit is 16us (!)
        hh High-Time for the 1-bit, Unit is 16us (!)
        ll Low- Time for the 1-bit, Unit is 16us (!)
        DDDDD... Databytes


Aus den o.g. Daten habe ich folgenden Befehl gebaut (wieder mit Leerzeichen nur zur Verdeutlichung)

G01 3 0 7 5 12 36 37 12 000008

Leider reagiert die Steckdose darauf nicht (die LED auf dem Empfangsmodul der Steckdose blinkt, aber sie schaltet nicht).
Ein Variieren der Pause hat auch nichts gebracht. Nur eine Wiederholung (so bekomme ich das Schalten mit dem is0000000000F0 Befehl hin) hilft auch nicht.


Was mache ich bei dem G-Befehl falsch?

Gruß
Lavamat



KölnSolar

ZitatUm den Code meiner Steckdosen zu Emulieren benötige ich aber 10.
Dann probier es mal mit D bei den 10er-Codes. Das sollte klappen. Die 10er-Codes werden von IT-Derivaten(welches hast Du ?) benutzt und es wurde irgendwann mal in 10_IT implementiert. Steht aber auch in der commandref zu 10_IT. ??? ;)
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

Lavamat

#2
Hallo KölnSolar,

danke erstmal für den Tipp.

Wenn ich mit meinem PC & Hterm den Befehl is0000000000D0 eingebe, dann erhalte ich im "Received Data"-Fenster is0000000000F0 zurück und es schaltet auch die entprechende "falsche" Steckdose  ???

ZitatDann probier es mal mit D bei den 10er-Codes. Das sollte klappen. Die 10er-Codes werden von IT-Derivaten(welches hast Du ?) benutzt und es wurde irgendwann mal in 10_IT implementiert. Steht aber auch in der commandref zu 10_IT

Ich habe in der FHEM commandref zu "IT" nachgesehen. Da wird D erwähnt. Soweit so gut.
Aber, ich verwenden den CUL (culfw 1.67) mit meinem PC & HTerm bzw. soll es in die Raspberrymatic integriert werden.

Wo kann ich rausfinden, wie der Code für das "D" am CUL erzeugt wird bzw. was da an den CUL von FHEM gesendet wird?
(Ich hätte auch noch einen CUL mit a-culfw und neuester FW.)

Die Gartensteckdose ist so ein "Stein" für Ausseneinsatz aus China. Marke vidaXL auch bei manomano.de zu finden. Und die FB ist ein recht lausiges Ding, welches gelegentlich dazu neigt sich aufzuhängen...
(Heitronic hat ein ähnliches Produkt mit einer anderen FB)

Gruß
Lavamat

KölnSolar

ZitatAber, ich verwenden den CUL (culfw 1.67) mit meinem PC & HTerm bzw. soll es in die Raspberrymatic integriert werden.

Wo kann ich rausfinden, wie der Code für das "D" am CUL erzeugt wird bzw. was da an den CUL von FHEM gesendet wird?
Das solltest Du nicht probieren, denn vermutlich hapert es bei der culfw 1.67. Die ist grundsätzlich eher ungeeignet für Derivate und gänzlich für das "modernere" IT-V3-Protokoll.

ZitatIch hätte auch noch einen CUL mit a-culfw und neuester FW.
Na bestens. Der ist so was von geeignet.  :) Die aculfw wurde genau wegen den IT-Protokollen u. Derivaten entwickelt. Also nimm den einfach....

Grüße Markus
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

Lavamat

Hallo Markus,

danke für deine Geduld.
Also der CUL mit der aculfw 1.26.08 versteht das "D" anscheinend auch nicht. Im received data Fenster vom HTerm erhalte ich auch wieder ein F statt des Ds und die Steckdose schaltet nicht.

Ich habe von der Github-Seite die commandref der aculfw herunter geladen. Ist es richtig, daß es da keinen Unterschied zur commandref der culfw (hier auf der FHEM-Seite) gibt?
Offenbar übersehe ich etwas. :(

Gruß
Roland

KölnSolar

Hallo Roland,

ZitatAlso der CUL mit der aculfw 1.26.08 versteht das "D" anscheinend auch nicht.
Hmm, das sollte er aber. Nimm es als gegeben hin, dass Du jetzt auf jeden Fall die richtige firmware hast.

ZitatIst es richtig, daß es da keinen Unterschied zur commandref der culfw (hier auf der FHEM-Seite) gibt?
wahrscheinlich ist das so. Bzgl. der Befehle hat sich ja auch nichts verändert. Es gibt lediglich ein paar mehr Protokolle.

ZitatIm received data Fenster vom HTerm erhalte ich auch wieder ein F statt des Ds und die Steckdose schaltet nicht.
Da kann ich Dir leider so gar nichts zu sagen.  :'( Warum machst Du es nicht mit FHEM ? Ich ahne da was.....

Grüße Markus
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

Lavamat

Hallo Markus,

Ich bin schon ziemlich weit mit der Raspberrymatic und habe - bis auf dieses verflixte Ding - bisher alles zum Laufen gebracht.
So schalte ich auch einige orignal IT-Komponenten problemlos mit meiner HmIP-Fernbedienung und über die das eine oder andere Programm.
Mit FHEM hab ich mich noch garnicht beschäftigt.

Magst du deine Ahnung mit mir teilen?

Gruß
Roland

KölnSolar

ZitatMit FHEM hab ich mich noch garnicht beschäftigt.
war die Ahnung.  :'(
ZitatWo kann ich rausfinden, wie der Code für das "D" am CUL erzeugt wird bzw. was da an den CUL von FHEM gesendet wird?
weder culfw noch aculfw machen das. Da werden nur die bits weitergegeben. Die Interpretation erfolgt bei "uns" paarweise in der 10_IT.pm. Tri(Quad)-States 0/1/F/D werden beim senden VOR Übergabe an den CUL übersetzt. Übertragen werden  also 24 bits, die 10_IT.pm übersetzt in die 12 Tri(Quad)-States.

Grüße Markus
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

Lavamat

Hallo Markus,

danke für die Erläuterung.
Zitatweder culfw noch aculfw machen das. Da werden nur die bits weitergegeben. Die Interpretation erfolgt bei "uns" paarweise in der 10_IT.pm. Tri(Quad)-States 0/1/F/D werden beim senden VOR Übergabe an den CUL übersetzt. Übertragen werden  also 24 bits, die 10_IT.pm übersetzt in die 12 Tri(Quad)-States.
Das hatte ich mir schon fast gedacht.

Ich werde mir mal den Sourcecode von dem Modul ansehen und versuchen nachzuvollziehen was da gemacht wird.

Ich melde mich dann wieder.

Danke für deine Hilfe soweit.

Gruß
Roland

KölnSolar

Ich versuche es Dir etwas zu vereinfachen(code bezieht sich auf den Empfang)
my %bintotristate=(
  "00" => "0",
  "01" => "F",
  "10" => "D",
  "11" => "1"
);
my %bintotristateV3=(
  "10" => "1",
  "01" => "0",
  "00" => "D",
  "11" => "2"
);


  } else { # IT
    if (length($msg) > 10) {
Log3 $hash,4,"$ioname IT: Wrong IT message received: $msg";
return undef;
} else {
$bin=sprintf("%024b",hex(substr($msg,1,length($msg)-1)));
}
  }

else {
    while (length($bin)>=2) {
      if (length($msg) == 7) {
        if (substr($bin,0,2) != "10") {
          $msgcode=$msgcode.$bintotristate{substr($bin,0,2)};
        } else {
          if (length($msgcode) >= 10) {
            Log3 $hash,5,"$ioname IT Parse bintotristate: msgcode=$msgcode, unknown tristate in onoff-code. is evtl a EV1527 sensor";
            # $msgcode = substr($msgcode,0,10) . '00';
            $msgcode = substr($msgcode,0,10) . $bintotristate{substr($binorg,20,2)} . $bintotristate{substr($binorg,22,2)};
          } else {
            $msgcode = "";
          }
          last;
          #Log3 $hash,4,"$ioname IT:unknown tristate in \"$bin\"";
          #return "unknown tristate in \"$bin\""
        }
      } elsif (length($msg) == 20 && (substr($msg, 1, 1)) eq 'h') { # HomeEasy EU
        $msgcode=$msgcode.$bintotristateHE{substr($bin,0,2)};
      } else {
        $msgcode=$msgcode.$bintotristateV3{substr($bin,0,2)};
      }
      $bin=substr($bin,2,length($bin)-2);
    }
  }

Grüße Markus
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

Lavamat

Hallo Markus,

vielen Dank für deine Unterstützung.
Allerdings hilft mit der Empfangscode nicht viel weiter. Ich versuche zu verstehen, was ich senden muss, um z.B. den Code 000008 im CUL zu erzeugen.

Da stehe ich aber erst am Anfang mit PERL.

Gruß
Roland