uniTEC 48110 Funkfernschalterset

Begonnen von AtzeDVB, 21 Juni 2018, 23:01:15

Vorheriges Thema - Nächstes Thema

AtzeDVB

Mahlzeit, ich habe mir diese Funksteckdosen gekauft: https://www.amazon.de/gp/product/B002ZCX6C0/ref=oh_aui_search_detailpage?ie=UTF8&psc=1

Anscheinend haben die einen Rolling Code: mein SonoffRF schickt mir immer 4 verschiedene Codes wenn ich eine Taste auf der FB drücke.

in Fhem habe ich mir ein notify  und in der 99_myutil.pm eine funktion gebaut die die Tasten auswertet.


Hier das Notity:
defmod SonoffRF_notify_2 notify SonoffRF:result-rfreceived-data:.* {RollingCode($EVTPART1);;}
attr SonoffRF_notify_2 DbLogExclude .*
attr SonoffRF_notify_2 room Notifys


Hier die Funktion in der 99_myutil.pm:
sub
RollingCode($)
{
  my ($code) = @_;
  my $button;
  my $befehl;
if ($code eq "1055B0" || $code eq "11C140" || $code eq "18B830" || $code eq "198D70") {$button="A"; $befehl="an";}
elsif ($code eq "120320" || $code eq "172610" || $code eq "169E90" || $code eq "1BE7A0") {$button="A"; $befehl="aus";}
elsif ($code eq "18B834" || $code eq "1055B4" || $code eq "198D74" || $code eq "11C144") {$button="B"; $befehl="an";}
elsif ($code eq "172614" || $code eq "120324" || $code eq "1BE7A4" || $code eq "169E94") {$button="B"; $befehl="aus";}
elsif ($code eq "11C14C" || $code eq "18B83C" || $code eq "1055BC" || $code eq "198D7C") {$button="C"; $befehl="an";}
elsif ($code eq "1BE7AC" || $code eq "169E9C" || $code eq "17261C" || $code eq "12032C") {$button="C"; $befehl="aus";}
elsif ($code eq "169E92" || $code eq "1BE7A2" || $code eq "120322" || $code eq "172612") {$button="D"; $befehl="an";}
elsif ($code eq "18B832" || $code eq "11C142" || $code eq "198D72" || $code eq "1055B2") {$button="D"; $befehl="aus";}
else {$button="?";$befehl="?";}

# Anzeige auf dem TV zum testen
fhem("set VUplus msg info 3 Schalter:$button  -  Befehl:$befehl  -  code:$code");
}


Funktioniert soweit, fhem kann so jede gedrückte Taste auswerten.

Hat da jemand schon ne andere Lösung?

KölnSolar

Zitatschickt mir immer 4 verschiedene Codes wenn ich eine Taste auf der FB drücke.
Also kein rolling code(ein Code aber verschieden je Tastendruck), sondern 4 verschiedene Codes gleichzeitig ?
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

Jotbeh

Hallo zusammen,

jetzt vor Weihnachten habe ich mich auch an einer Unitec 48810 versucht (mit einem signalduino mit cc1101, V 3.3.1-RC10).
Schließlich sollen die Lichterketten ja automatisch ein- und ausschalten :).
Bei mir wird die Fernbedienung u.A. mit Protokoll #49 vom Signalduono empfangen. Wie schon von AtzeDVB beschrieben sendet die Fernbedienung bei jedem Tastendruck eine neue Kodierung, insgesamt 4 verschiedene.
Die 4 Schalter unterscheiden sich nur im letzten Nibble (Schalter A = 0x0, Schalter B = 0x4, Schalter C = 0xC Schalter D = 0x2)

Folgender Code verarbeitet die ersten beiden Schalter (direkt mit einem Notify gelöst)


define UnitecA dummy
define UnitecB dummy
define unitec_notify notify sduino_sensors:DMSG.U49#.* {\
if ($EVENT eq "DMSG U49#1C6840" || $EVENT eq "DMSG U49#199970" || $EVENT eq "DMSG U49#168AB0" || $EVENT eq "DMSG U49#152130") {fhem("set UnitecA on");;}\
elsif ($EVENT eq "DMSG U49#1E0490" || $EVENT eq "DMSG U49#1DE0A0" || $EVENT eq "DMSG U49#13BF20" || $EVENT eq "DMSG U49#173B10") {fhem("set UnitecA off");;}\
elsif ($EVENT eq "DMSG U49#1C6844" || $EVENT eq "DMSG U49#199974" || $EVENT eq "DMSG U49#168AB4" || $EVENT eq "DMSG U49#152134") {fhem("set UnitecB on");;}\
elsif ($EVENT eq "DMSG U49#1E0494" || $EVENT eq "DMSG U49#1DE0A4" || $EVENT eq "DMSG U49#13BF24" || $EVENT eq "DMSG U49#173B14") {fhem("set UnitecB off");;}\
}


Vermutlich hat jede Fernbedienung andere Codes, also am besten im EventMonitor die Tasten mindestens 4 mal drücken und die Codes aufschreiben und im Code entsprechend anpassen.
Es ist mir noch nicht gelungen herauszufinden, wie die 4 Ein- und Ausschaltcodes generiert werden. Erstaunlicherweise weiß die Steckdose mit dem Lernen eines Einschaltcodes die anderen 3 Einschaltcodes sowie die passenden 4 Ausschaltcodes. Bis auf erstes Nibble immer 0x1 und letztes Nibble immer Tastencodierung habe ich noch kein System in der Codierung gefunden.

Jotbeh

Inzwischen habe ich mir auch das Senden mit fhem an die Unitec 48110 angeschaut.
Einfach das Kommando mit Kodierung U49# zurückschicken reicht nicht, die Dosen schalten nicht.
Ich habe mir mit einem Logik-Analyser das Sendesignal der Fernbedienung angeschaut. Die Kodierung wird pro Drücken der FB 8 mal gesendet. Dabei sieht man, dass die Start/Sync Bits nur bei den letzten 4 mal dabei sind.
Ich habe dann versucht die komplette Sequenz als Raw zu schicken, bin aber wohl an der Puffergröße des Signalduino gescheitert (8 x 24 Bits).
Danach habe ich verschiedene Teilkombinationen probiert und bin schließlich mit folgendem erfolgreich gewesen:
1x senden ohne Syncbit danach 1x senden mit Syncbit am Schluss. Mit dieser Kombination kann ich alle Dosen schalten!  ;D ;D ;D
Bisher kommen die Dosen damit zurecht, wenn sie nur eine der 4 möglichen Kodierungen bekommen (siehe weiter oben), d.h. die Dosen erwarten nicht zwingend ein immer änderndes Sendesignal.

Ich habe nun das Schalten der Dosen mit einem Notify Befehl auf meine Dummies umgesetzt. Das hat den kleinen Nachteil, dass beim Schalten mit der Fernbedienung nach dem Signal der Fernbedienung gleich auch noch fhem sendet. Hat aber bei mir bisher nicht gestört.

Beispiel für Taste A an:

define unitec_switcha_on notifyUnitecA:on { fhem "set sduino_sensors raw SR;;R=2;;P0=3120;;P1=-7800;;P2=1000;;P3=-600;;P4=420;;P5=-1100;;D=5454545232345452323454523234545234523232345454545545454523234545232345452323454523452323234545454501;;"}


Wenn ihr das nutzen wollt, müsst ihr die Daten passend zu eurer Fernbedienung anpassen. Die erste "5" ist für die erste Pause,  "45" steht für Bit=False, "23" für Bit=True. Ungefähr in der Mitte fängt die Wiederholung an (bei "55"), am Schluss kommt das Syncbit "01". Im obigen Beispiel war das U49#199970 also binär 000110011001100101110000.

Ralf9

ZitatDie Kodierung wird pro Drücken der FB 8 mal gesendet. Dabei sieht man, dass die Start/Sync Bits nur bei den letzten 4 mal dabei sind.
Da bei einer MU-Nachricht im Datenteil (D=...) maximal 254 Ziffern sein können, wird in einer MU-Nachricht wahrscheinlich die Kodierung maximal 5 mal enthalten sein.
Mich würde so eine empfangene MU-Nachricht interessieren.

ZitatIch habe dann versucht die komplette Sequenz als Raw zu schicken, bin aber wohl an der Puffergröße des Signalduino gescheitert (8 x 24 Bits).
Da es nicht 8 x 24 Bits sondern es mindestens 8 x 48 = 384 Ziffern sind, ist dies zum Senden viel zu lang, bei der offiziellen Firmware darf das Sendekommando maximal 255 Zeichen lang sein.

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

elektron-bbs

#5
Das könnte evtl. das Protokoll sein, das ich gerade in Arbeit habe:
OBI Funksteckdosen Set - https://github.com/RFD-FHEM/RFFHEM/issues/667

Getestet werden könnte es mit einem SIGNALduino und folgendem Update von FHEM:
update all https://raw.githubusercontent.com/RFD-FHEM/RFFHEM/dev-r34_QUIGG-Gt-9000/controls_signalduino.txt

Es gibt allerdings noch ein sehr ähnliches Protokoll für GT-1000, das mit diesem Update nicht funktioniert.

EDIT:
Ich habe mittlerweile die Nachrichten der beiden User überprüft. Es ist definitiv das Protokoll, welches demnächst eingebunden wird.
Intel(R) Atom(TM) CPU N270 mit 2 SIGNALduino nanoCC1101 + ESPEasy 2x serial server SIGNALduino nanoCC1101, Raspberry Pi 2 mit 2 CUL Stackable CC1101, Raspberry Pi 3 mit SIGNALduino radino + nano328 + 2 x SIGNAL-ESP CC1101 + LaCrosseGateway

Jotbeh

Habe gerade das beschriebene Update mit meinem Testsystem gemacht und Protokoll 49.2 in die Whitelist mit aufgenommen.
Nach Einlernen über mehrfaches Drücken der Tasten wird ein SD_GT Device angelegt, welches die Fernbedienung erkennt und selbst auch schalten kann. :)

Wann wird denn das offizielle Update dazu kommen?

elektron-bbs

Du solltest schon Protokoll 49, 49.1 und 49.2 aktivieren. Die FB sendet zwei verschiedene Formate. Der dritte Eintrag ist für eventuelle unterschiedliche Dekodierungen durch den SIGNALduino.

Ich bin gerade beim letzten Feinschliff.
Intel(R) Atom(TM) CPU N270 mit 2 SIGNALduino nanoCC1101 + ESPEasy 2x serial server SIGNALduino nanoCC1101, Raspberry Pi 2 mit 2 CUL Stackable CC1101, Raspberry Pi 3 mit SIGNALduino radino + nano328 + 2 x SIGNAL-ESP CC1101 + LaCrosseGateway

Jotbeh

Ja danke, hatte ich auch so gemacht, Protokoll 49 war schon aktiv, 49.1 und 49.2 habe ich dazu genommen.

Super Arbeit von dir  :)