Selbstlernende Intertechno Codecs mit CUL auslesen

Begonnen von rizzir, 02 Dezember 2015, 00:31:44

Vorheriges Thema - Nächstes Thema

rizzir

Servus erstmal an alle  :)

Eines vorweg: Ich beziehe mich hier auf die "alternative" CulFW (a-culfw) von BjörnH (die es hier gibt). Ob alles auch mit der "normalen" CulFW geht, weiß ich nicht.
Ich bin selber kein FHEM-Nutzer, daher verzeit mir bitte wenn ich hier in völliger Unwissenheit irgendwelche Sachen schreibe die für euch ohnehin trivial sind.

Gebrauchen kann man diese Anleitung vor allem, wenn man seine selbstlernenden Intertechno Geräte bereits mit einer Fernbedienung angelernt hat und sie mit einer CUL ansteuern möchte, ohne dafür extra die Unterputzdosen wieder öffnen zu müssen.

Seit einiger Zeit habe ich hier eine NanoCUL rumliegen und wollte damit lediglich unter Linux per Bash meine Geräte schalten können.
Im Wiki bin ich dann auf einen Eintrag gestoßen wie man sich bei selbstlernenden Geräten einen Code "ausdenken" kann. Man kann, sofern man denn die Geräte bereits mit einer Fernbedienung angelernt hat, die Codes der Fernbedienung jedoch auch einfach auslesen.

Dazu öffnet man einfach ein Terminal und verbindet sich mit dem CUL, z.B. mit picocom, minicom oder wie sie alle heißen.
Dann bewegt man den CUL per "X21" Befehl dazu, empfangene Daten auszuspucken.
Nun drückt man auf seiner angelernten Fernbedienung die Taste, welche man "decodieren" möchte.

Das ganze sieht dann in etwas so aus:


christian@rechenknecht  ~  picocom -b 38400 /dev/ttyUSB0 -c
picocom v1.7

port is        : /dev/ttyUSB0
flowcontrol    : none
baudrate is    : 38400
parity is      : none
databits are   : 8
escape is      : C-a
local echo is  : yes
noinit is      : no
noreset is     : no
nolock is      : no
send_cmd is    : sz -vv
receive_cmd is : rz -vv
imap is        :
omap is        :
emap is        : crcrlf,delbs,

Terminal ready
X21
i59966A9A995A965660


Was jetzt hier von Bedeutung ist, ist der String i59966A9A995A965660. Im Prinzip steckt in den 16 zeichen nach dem "i" der komplette Code als Manchester-Coding im Hex-Format. Möchte man jetzt mit dem CUL etwas schalten kann man jedoch nicht einfach den selben String auf die serielle Schnittstelle schicken und gut ist. Die CulFW erwartet einen String wie z.B. is00101001011110111010001110010001.
Um ebendiesen aus einer Antwort der CUL zu extrahieren habe ich mal ein kurzes Python-Script geschrieben. Dieses gibt zum einen den kompletten String aus, den man dann auf die serielle Schnittstelle schicken kann und zum anderen spuckt es noch ein paar weitere Informationen aus, welcher Teil des Strings eigentlich was bedeutet. Wen es interessiert, der kann gerne im Homeeasy Hacking Wiki nachschauen.

Nun zum eigentlichen, dem Skript:
Am einfachsten ihr holt es euch mit wget oder git oder ihr ladet es hier oder aus dem Anhang herunter:

wget https://raw.githubusercontent.com/ChristianRinn/cul_scripts/master/cul_decode_itv3.py
oder
git clone https://github.com/ChristianRinn/cul_scripts

Dann muss man lediglich den empfangenen String von der CUL dem Skript als Argument übergeben und man bekommt den String, mit welchem man schalten kann zurück:


python cul_decode_itv3.py i59966A9A995A965660


Das Skript antwortet dann in etwa so:



The string to enter in your serial terminal is:
is00101001011110111010001110010001

The id of your remote control is:
00101001011110111010001110

The group flag is:
0

Your device was set to:
1

The group code is:
0001


Sooo, das war jetzt viel mehr als ich eigentlich dazu schreiben wollte und von meiner Seite sind da auch noch ein paar Fragen, z.B. warum das nicht direkt in der CUL-FW implementiert ist aber ich vermute mal, dass es mit FHEM und dem "alten" Intertechno-Protokoll zusammenhängt.
Nun ja, ich hoffe das es irgendjemand nützlich sein wird.

Viele Grüße

Christian

Edit: Skript angehängt

cs-online

Hallo,

erstmal: Das sieht sehr cool aus ! Und nach viel Mühe, die Du dir damit gemacht hast !

Aber das lange IT-Protokoll (V3 ?) kann zumindest die "normale" Cul-FW doch auch schon (und ich meine Björn hat das in seiner a-FW auch drin) und wenn ich das neulich bei einem Kollegen richtig gesehen habe, dann geht mit Autocreate mit einem Druck auf die Fernbedienung auch das Anlernen und automatische Anlegen in FHEM... Deshalb sehe ich leider im Moment außer den Zusatzinfos wie z.B. Gruppencode und so den Sinn Deiner Mühen nicht ganz, magst Du uns noch ein wenig mehr Hintergründe beschreiben ?

Grüße

Christian
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Shelly1,2 und 2.5,Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV mit Speicher, alles auf einem RPI und da geht noch mehr

rizzir

Der eigentliche Sinn war, dass ich direkt per Bash, z.B. mit

$ printf "is00101001011110111010001110010001\n" > /dev/ttyUSB0

ein Gerät anschalten kann (ohne FHEM).
Da mir aber bei einem Druck auf die Fernbedienung die CulFW nur folgendes zurückgibt

$ i59966A9A995A965660

habe ich das Script zusammengeschustert um an die Binärkodierung zu kommen.

Wie ich bereits vermutete ist das wohl schon alles in FHEM implementiert, allerdings nicht direkt in der CulFW.

Viele Grüße

Bibi.b

Hi rizzir,

ich nutze kein FHEM, sondern die CUL am CCU2 mit Homematic. Ich habe tagelang (!!!!!) nach genau der "Übersetzung" des langen Codes gesucht und jetzt gefunden :-) Danke Dir!!! Die Eingabe des übersetzten Codes steuert jetzt z.B. meinen Intertechno ITDM-250 ! Das ist genial.
Danke

sasquuatch

danke für deine anleitung. ich habe mir mal selbstlernende funksteckdosen vom hornbach geholt. auf der verpackung steht unitec bzw. intertek drauf
irgendeine nummer 48110, eventuell das modell. zudem noch receiver und transmitter nummern:
Receiver 55006x10
Transmitter 50074

leider bekomme ich da was anderes als du raus, kannst du damit was anfangen?


sudo picocom -b 38400 /dev/ttyUSB0 -c
picocom v1.7

port is        : /dev/ttyUSB0
flowcontrol    : none
baudrate is    : 38400
parity is      : none
databits are   : 8
escape is      : C-a
local echo is  : yes
noinit is      : no
noreset is     : no
nolock is      : no
send_cmd is    : sz -vv
receive_cmd is : rz -vv
imap is        :
omap is        :
emap is        : crcrlf,delbs,

Terminal ready
omB6AAAA8044
omB555556844
omB6D54AA045
omB6555046
omB6B5528044
omB5555A8044
om2AAAA04om6B5445
V 1.21.00 a-culfw Build: 70 (2016-04-22_17-15-27) nanoCUL433 (F-Band: 433MHz)
omB55A5044
V 1.21.00 a-culfw Build: 70 (2016-04-22_17-15-27) nanoCUL433 (F-Band: 433MHz)
V 1.21.00 a-culfw Build: 70 (2016-04-22_17-15-27) nanoCUL433 (F-Band: 433MHz)
omB55555004E
omB6DB56A451
omB6A556C050
omB556A90050
omB5556D5451
omB6DB56A852
omB555550050
omB6AB504F
omB555504E
omB6DA9AB050
omB6D56DAC4E
omAAD2A84F
omB5AAD3004E
omB6956AAA52
omB4AA9045
omB555555A8009
omB6AAA816
omB6AAAA800E
omB6AAAAA032
omB6A9550032
omB5AAD2C02E
omB5AAAA16
omB6AAAA8025
omB64B5026
omB596AA28
omB6A2A828
omB4926C2A
omB555A5802A
omB555694029
omB6AA9428
omB6AAB5502F
omB6AAA823
omB6AAAAA018
omB656AAAA16
omAAAA21
omB6AAA018
omB6AAAA8017
omB6A5555416
omB424B41C
omB6B555001E
omB5AAAAA01F
omB56D52A821
omB5A8AD0022
omB5554D000B
omB4A5354007
omB6D55AD006
omA494D8F8
omBAAAA008
omAAAAACFA
omB555AA80FD
omB6AA6A02
omB655000E
omB49AD50009
omB6AAAAC008
omB6AAA00D
omB555AAAA8005
omB6555014
omB5556D5418
omB555594012
omB6D5555413
omB6D5550016
omB6AAAB0014
omB6AAAA8013
omB6D5550009
omB5AAB540FD
omB552AAFE
omB6AB5413
omB6D56AA824
omB6AAAB4024
omB555550030
omB6D5694041
omB6AD5AD042
omB6A5594042
omB554B2A040
omB555A50040
omB6A5554041
omB65AB54040
omB655550040
omB6D5AD6840
omB6A5568046
omB64AA842
omB555A50042
omB556B54042
omB6A5568048
omB64B2A48

KölnSolar

Hi, da hast Du irgendwie das falsche Stichwort in der SuFu genutzt  :'( Die Unitec/Intertek scheinen etwas problematisch zu sein. Waren in den letzten Wochen zigmal Diskussionsthema. Gib einfach mal Unitec über das gesamte Forum ein und Dir sollten zig Beiträge um die Ohren fliegen  ;)
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

sasquuatch

habe danach schon geschaut, aber entweder sind es andere untic geräte oder haben dippschalter. zu den selbstlerndenen habe ich nichts gefunden oder es gab keine antwort mit lösungen.

da du was zu selbstlerndenen steckdosen geschrieben hast, dachte ich vielleicht gibt es da eine verbindung von intertechno zu unitec. die ganzen intertechno steckdosen mit dippschalter, sind so auch auf andere steckdosen mit dippschalter anwendbar. ich hatte gehofft, das es mit den selbsterlernenden auch geht.

dann hoffe ich das da noch irgendwer sich mal dran setzt und was bastelt, den 9,95 € ist schon ein schnapp.

KölnSolar

nicht verzagen. Es gab da Lösungen in den Beiträgen, auch V3(selbstlernend). Mal ohne dass die Fernbedienung einsetzbar ist, mal mit Modifikationen. Aber vielleicht auch nicht die Dosen, die Du ins Auge gefasst hast :'(
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

mahowi

In diesem Thread gibt es einen Patch für culfw. Leider gibt's da noch nix für a-culfw.
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

bjoernh

Zitat von: mahowi am 24 November 2016, 12:39:01
In diesem Thread gibt es einen Patch für culfw. Leider gibt's da noch nix für a-culfw.
In der neuen a-culfw 1.23.00 ist etwas enthalten.
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.

bjoernh

#10
Zitat von: Ralf9 am 26 November 2016, 21:45:12
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

Hallo Ralf,

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?

Ralf9

#11
Zitat von: bjoernh am 26 November 2016, 19:53:24
In der neuen a-culfw 1.23.00 ist etwas enthalten.
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.

Bei diesem Thema hier handelt sich es doch um IT v3, der Patch ist aber für IT v1.
Ich habe meine Antwort ins andere Thema verschoben.

Oder gibt es auch selbstlernende IT v1 Steckdosen?

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

Jonn3y

Zitat von: sasquuatch am 23 November 2016, 18:36:05
danke für deine anleitung. ich habe mir mal selbstlernende funksteckdosen vom hornbach geholt. auf der verpackung steht unitec bzw. intertek drauf
irgendeine nummer 48110, eventuell das modell. zudem noch receiver und transmitter nummern:
Receiver 55006x10
Transmitter 50074

leider bekomme ich da was anderes als du raus, kannst du damit was anfangen?


sudo picocom -b 38400 /dev/ttyUSB0 -c
picocom v1.7

port is        : /dev/ttyUSB0
flowcontrol    : none
baudrate is    : 38400
parity is      : none
databits are   : 8
escape is      : C-a
local echo is  : yes
noinit is      : no
noreset is     : no
nolock is      : no
send_cmd is    : sz -vv
receive_cmd is : rz -vv
imap is        :
omap is        :
emap is        : crcrlf,delbs,

Terminal ready
omB6AAAA8044
omB555556844
omB6D54AA045
omB6555046
omB6B5528044
omB5555A8044
om2AAAA04om6B5445
V 1.21.00 a-culfw Build: 70 (2016-04-22_17-15-27) nanoCUL433 (F-Band: 433MHz)
omB55A5044
V 1.21.00 a-culfw Build: 70 (2016-04-22_17-15-27) nanoCUL433 (F-Band: 433MHz)
V 1.21.00 a-culfw Build: 70 (2016-04-22_17-15-27) nanoCUL433 (F-Band: 433MHz)
omB55555004E
omB6DB56A451
omB6A556C050
omB556A90050
omB5556D5451
omB6DB56A852
omB555550050
omB6AB504F
omB555504E
omB6DA9AB050
omB6D56DAC4E
omAAD2A84F
omB5AAD3004E
omB6956AAA52
omB4AA9045
omB555555A8009
omB6AAA816
omB6AAAA800E
omB6AAAAA032
omB6A9550032
omB5AAD2C02E
omB5AAAA16
omB6AAAA8025
omB64B5026
omB596AA28
omB6A2A828
omB4926C2A
omB555A5802A
omB555694029
omB6AA9428
omB6AAB5502F
omB6AAA823
omB6AAAAA018
omB656AAAA16
omAAAA21
omB6AAA018
omB6AAAA8017
omB6A5555416
omB424B41C
omB6B555001E
omB5AAAAA01F
omB56D52A821
omB5A8AD0022
omB5554D000B
omB4A5354007
omB6D55AD006
omA494D8F8
omBAAAA008
omAAAAACFA
omB555AA80FD
omB6AA6A02
omB655000E
omB49AD50009
omB6AAAAC008
omB6AAA00D
omB555AAAA8005
omB6555014
omB5556D5418
omB555594012
omB6D5555413
omB6D5550016
omB6AAAB0014
omB6AAAA8013
omB6D5550009
omB5AAB540FD
omB552AAFE
omB6AB5413
omB6D56AA824
omB6AAAB4024
omB555550030
omB6D5694041
omB6AD5AD042
omB6A5594042
omB554B2A040
omB555A50040
omB6A5554041
omB65AB54040
omB655550040
omB6D5AD6840
omB6A5568046
omB64AA842
omB555A50042
omB556B54042
omB6A5568048
omB64B2A48


Hey, ich habe selbiges Problem mit den om-Codes. Gibt es dafür mittlerweile auch für a-culfw eine Lösung?

sti0

Hallo zusammen,

ich habe Brennenstuhl RCS 1000 Funksteckdosen.

Schalten kann ich diese z.B. mit is00FFFF0FFF0F für an und is00FFFF0FFFF0 für aus. Funktioniert wunderbar.

Wenn ich nun in minicom X21 eingebe und dann die Tasten auf der Fernbedienung drücke um eben jene Funksteckdosen zu schalten, so erhalte ich folgende Codes:

an: i05515138
aus: i0551543A

FHEM schaltet dann auch den State korrekt. Wenn ich nun jedoch das Signal außerhalb von FHEM verwenden will, müsste ich es ja auf den o.g. Code umrechnen. Das Script aus dem Thread hilft mir leider nicht weiter, da sich die Codes zu den Intertechno unterscheiden.

Irgendwie muss FHEM ja dennoch eine Umrechnung vornehmen, sonst würde der State ja nicht geändert werden. Hat jemand ne Idee wie ich die Umrechnung vollzogen bekomme?

Mein nanoCUL: V 1.23.04 a-culfw Build: 127 (2016-12-16_23-39-31) nanoCUL433 (F-Band: 433MHz)

Vielen Dank schonmal im Voraus!

bjoernh

Zitat von: sti0 am 22 Dezember 2016, 00:30:50
Hallo zusammen,

ich habe Brennenstuhl RCS 1000 Funksteckdosen.

Schalten kann ich diese z.B. mit is00FFFF0FFF0F für an und is00FFFF0FFFF0 für aus. Funktioniert wunderbar.

Wenn ich nun in minicom X21 eingebe und dann die Tasten auf der Fernbedienung drücke um eben jene Funksteckdosen zu schalten, so erhalte ich folgende Codes:

an: i05515138
aus: i0551543A

FHEM schaltet dann auch den State korrekt. Wenn ich nun jedoch das Signal außerhalb von FHEM verwenden will, müsste ich es ja auf den o.g. Code umrechnen. Das Script aus dem Thread hilft mir leider nicht weiter, da sich die Codes zu den Intertechno unterscheiden.

Irgendwie muss FHEM ja dennoch eine Umrechnung vornehmen, sonst würde der State ja nicht geändert werden. Hat jemand ne Idee wie ich die Umrechnung vollzogen bekomme?

Mein nanoCUL: V 1.23.04 a-culfw Build: 127 (2016-12-16_23-39-31) nanoCUL433 (F-Band: 433MHz)

Vielen Dank schonmal im Voraus!

Bsp:
i05515138
i = Intertechno
letzten zwei Werte RSSI = 38
055151 = Code (Hex)

055151 = 0000 0101 0101 0001 0101 0001 (Binär)

00 = 0
01 = F

0000 0101 0101 0001 0101 0001 = 00FFFF0FFF0F