Einbindung von "Centronic" Fernbedienungen in FHEM

Begonnen von Leeloo_Dallas, 24 Mai 2016, 14:40:31

Vorheriges Thema - Nächstes Thema

Bidi81

#165
Der Master Sender ist immer der Erste Sender der Eingelernt wird. An den Funkempfängern. Er ist egal ob USB-Sick oder Handsender.

Einlernen
<STX>0000000002010b07300000001737b021010100801d<ETX>

<STX>0000000002010b07310000001737b021010100811b<ETX>

<STX>0000000002010b07320000001737b021010100009b<ETX>

<STX>0000000002010b07330000001737b021010100801a<ETX>

<STX>0000000002010b07340000001737b0210101008118<ETX>

<STX>0000000002010b07350000001737b0210101000098<ETX>


Auf

<STX>0000000002010b073c0000001737b0210101002071<ETX>

<STX>0000000002010b073d0000001737b0210101000090<ETX>

Halt

<STX>0000000002010b073e0000001737b021010100107f<ETX>

<STX>0000000002010b073f0000001737b021010100008e<ETX>

Ab

<STX>0000000002010b07400000001737b021010100404d<ETX>

<STX>0000000002010b07410000001737b021010100008c<ETX>

Das <STX> ist in HEX 02 und <ETX> in HEX ist 03

Die Codes können nur einmal Benutzt werden!

Im Anhang befindet sich eine Datei für Docklight V2.2 damit kann man es Einlernen und einmal Auf ,Halt und Ab fahren.
Denn Empfänger in Lernbereitschaft Bringen auf Einlernen Drücken und Fertig. Dann einmal auf, AUF dann auf HALT dann noch AB und fertig. Jetzt muss dann jeder Code angepasst werden. um 1 erhöhen und Checksum neu berechnen.
Wie das Geht habt schon in einen Vorderen Beitrag schon erwähnt.

Gruß Bidi81

ole1986

#166
Hier mal ein Auszug wie sich Mehrkanal Funkfernbedienung und  Wandsender https://www.enobi.de/pdf/anleitungen/becker-wandsender-ec311-anleitung.pdf (1 Kanal)  für den SELBEN Rolladen bereits unterscheiden
(Aufgezeichnet über Docklight mit Centronic USB Stick).

Rolladen Abwärts - SELBER ROLLADEN:

Wandsender (1 Kanal):          <STX>0000000002010B000000000080DFC0210000004075<ETX><STX>0000000002010B000000000080DFC02100000000B5<ETX>
Funkfernbedienung (Mehrere Kanäle):  <STX>0000000002010B00000000008157D02102020048C2<ETX><STX>0000000002010B00000000008157D0210202000802<ETX>

Meine Theorie der Zusammensetzung des Codes:
(Code aus der Funkfernbedienung von oben)

- [Position 0] <STX> "\x02"
- [Position 1-14] "0000000002010B" immer gleich, wie bei Bidi81 und  dbox2user
- [Position 15-18] "0000" der inkrementelle Wert (derzeit max: "FFFF" also 65535)
- [Position 19-24] "000000" unbekannt
- [Position 25-30] "8157D0" - Abhängig vom Sender / Aber auch Kanal
- [Position 31-32] "21" unbekannt / immer gleich (wie bei Bidi81 und  dbox2user)
- [Position 33-34] "02" unbekannt / Unterschiede bei Wandsender ("00") und Mehrkanal Fernbedienung ("02")
- [Position 35-36] "02" ist der ausgewählte Kanal bei Verwendung der Fernbedienung - "0F" für alle Kanäle (siehe unten)
- [Position 37-38] "00" unbekannt
- [Position 39-40] "40" Befehl - 10 = HALT, 20 = AUF, 40 = AB, 80 = Anlernen (ggf. 00 = Knopf release) / 81 = nach 3 sec halten, 82 = nach 6 sec halten, 83 = nach 10 sek halten
- [Position 41-42]  "C2" checksum
- [Position 43] <ETX> "\x03"

In Position 39-40 (also die Befehle) sind mir noch Kombinationen aus z.b. 48 unbekannt, welche bisher nur von meiner Mehrkanal Fernbedienung geschickt wurde.

Ich habe noch fragen zu den Codes:

- Woher kommt die Info das in Position 15-18 eine fortlaufende Nummer stehen muss? Wurde über ein CentronicControl gesniffed
- Woher kommt "1737b0" aus Position 25-30? Das ist die CentronicControl laut Aussage von Bidi81
- was sind die Einlern codes? Nach Position 39-40 wird der ROLLO wie folgt eingelernt: 0x80 (pair knopf), 0x81 (pair knopf für 3sec) gefolgt von Knopf release 0x00
- Ist der Empfänger bidirektional? Nein. In den Rollos wird nur empfangen


UPDATE 2019-12-23: Positionen und Antworten überarbeitet

Bidi81

Sie Codes Stammen von einer B-tronic CentralControl CC31.

Wo Ich mit gelesen habe.

Deine Position40-42 ist nicht ganz richtig es muss 41-42 sein das ist der Checksum.
Die Position 39-40 ist der Fahrbefehl. 20 für AUF ,40 für AB und 10 für Halt und 80 für Einlernen.
Dann gibt es noch 21 für 3sec Tasten Drück, 22 für 6sec Tasten Druck und 23 für 10sec Tasten Druck. Und Analog dazu Für 10,40,80
Gruß Bidi81

ole1986

Die Positionen sind mir auch heute im Laufe des Tages aufgefallen (besonders das mit der Checksum).

Ich habe es bereits in meinem python script entsprechend angepasst

Dein Hinweis auf die Tasten für die Dauer des Drückers finde ich genial. Falls nun nämlich die laufenden Nummern irgendwann überlaufen, könnte man als workaround vorher die Tasten 81 und  83 simulieren (für "Sender löschen") und ihn anschließend erneut einlernen. Da dürfte doch die Zahlen dan zurück setzen, oder?

ole1986

#169
Centronic Stick - python script

Anbei meine erste Version zum steuern von z.B. Rolläden über den Centronic USB Stick.
Das Script befindet sich im Anhang


./centronic-stick.py [-hlit] [--checksum <code>] [--device <device>] [--send <UP|DOWN|HALT|PAIR> --channel <channel>]

This script is used send command codes to CC11/CC51 compatible receivers through the CentronicControl USB Stick
It is necessary to own such USB device and to PAIR it first, before using commands like UP and DOWN

                 -h: shows this help
                 -l: listen on the centronic USB device to fetch the codes
                 -i: increment the number (possible workaround for already consumed numbers)
                 -t: test mode - no codes will be send and no numbers consumed / works only with '--send'
   --send <command>: submit a completely generated code for UP/DOWN/HALT/PAIR commands / requires '--channel'
  --device <device>: set the device if it differs from the default
--channel <channel>: define the channel (1-15) being used for '--send'
  --checksum <code>: add a checksum to the given 40 char code and output (without STX, ETX)

Version 0.1 - Author: ole1986


https://github.com/ole1986/centronic-py

Leeloo_Dallas

Cool, Danke das Ihr dran bleibt.

Gruß
Leeloo
Greatz Leeloo

dbox2user

Ich schließe mich da zu 100% Leeloo an ...
Super dass ihr dran bleibt!!

Vielleicht entsteht daraus ja wirklich noch ein Fhem Modul das den Stick steuern kann.

Gruß,
Christian
Fhem 5.8 auf Raspberry Pi2; 1 Wire OWSERVER mit DS9490R und OWX DS2480;AVR-NET-IO mit 1Wire;  LOGO8; Kostalpiko; Selbstbau CUL; Arduino mit cFirmata; Denon AVR; Samsung TV; Fritzbox;

ole1986

#172
Ich bin kein großer Fan von perl  :o

Für das Regeln der Rolläden kann auf jedenfall das Skript bereits verwendet werden.
Ich benutze das mit Google Assistant  ::)

Ich habe den Quellcode auf github.com und aktualisiere dort nach Lust und laune.
Heute habe ich die intermediate positionen gepushed. Also "DOWN2" und "UP2" welche natürlich erst einprogrammiert werden mussten.

Das einprogrammieren der Zwischenpositionen I + II ist recht simpel und kann der Montageanleitung entnommen werden. Ich benutze Sie als Sonnenschutz :-)

Hier der Link: https://github.com/ole1986/centronic-py

Auch bevorzuge ich das behandeln von Issues über github.com. Da sind meine Reaktionszeiten auch geringer.

Gruß
Ole

michael27983

Ist man hier schon weiter? Ich habe zwei NanoCuls

Seit heute 2 Dachfenster mit Roto Solar Rollo. Ich würde diesen nun gerne in fhem oder iobroker integrieren.
Was muss man dafür machen?

pc1246

Zitat von: michael27983 am 05 Juli 2019, 14:11:05
Ist man hier schon weiter? Ich habe zwei NanoCuls

Seit heute 2 Dachfenster mit Roto Solar Rollo. Ich würde diesen nun gerne in fhem oder iobroker integrieren.
Was muss man dafür machen?
Bist Du Dir sicher, dass Du hier richtig bist. Welches "Protokoll" nutzt Roto denn? Ausser 868Mhz habe ich nichts gefunden!
Gruss Christoph
HP T610
Onkyo_AVR;3 Enigma2; SB_Server ; SB_Player; HM-USB mit 15 HM-CC-RT-DN, 3 HM_WDS10_TH_O, 6 HM-Sec-SCo, 4 HM-Sec-MDIR-2, 1 HM-Sen-MDIR-O-2, 8 Ferion 5000 OW ; PhilipsTV; 4 harmony hub; Jeelink mit 9 PCA301; Somfy; S7-300; 3 LGW; HUE; HM-IP auf Charly

dbox2user

Hallo Allerseits!

Ich kam jetzt endlich dazu das Programm von Ole mit meinem Becker-USB-Stick zu testen.
Was soll ich sagen ...    DANKE Ole !!! ;D ;D ;D

Es funktioniert einfach so wie es soll.
Ich konnte ohne weitere Anpassung meinen Stick verwenden, die Motore anlernen und jetzt auch steuern.

Falls es auch von anderen (wie auch ich selbst) noch nicht so ganz klar verstanden wurde --> mit dem Becker USB Stick und dem Programm von Ole können die Becker Centronic Motore problemlos gesteuert werden.

Also ärgert euch nicht länger mit Signalduinos oder sonstiges herum. Kauft euch den "Becker Centronic Stick V2" für insgesamt ca 54Euro, habt dann wieder Zeit für andere Projekte und freut euch wie die Rollos hoch und runter fahren.  ;)

Gruß,
Christian
Fhem 5.8 auf Raspberry Pi2; 1 Wire OWSERVER mit DS9490R und OWX DS2480;AVR-NET-IO mit 1Wire;  LOGO8; Kostalpiko; Selbstbau CUL; Arduino mit cFirmata; Denon AVR; Samsung TV; Fritzbox;

dbox2user

nachdem ich etwas herumspielen musste,  bis ich das Programm über Fhem starten konnte, hier die entsprechenden defines.
Vielleicht spart sich der eine oder andere dadurch ein paar Minuten.

define Rollos_Suedseite dummy
attr Rollos_Suedseite room Becker
attr Rollos_Suedseite webCmd UP:HALT:DOWN

define Rollos_sued_up notify Rollos_Suedseite:UP {system("./centronic-stick.py --send UP --channel 15 &")}
attr Rollos_sued_up room Becker

define Rollos_sued_down notify Rollos_Suedseite:DOWN {system("./centronic-stick.py --send DOWN --channel 15 &")}
attr Rollos_sued_down room Becker

define Rollos_sued_halt notify Rollos_Suedseite:HALT {system("./centronic-stick.py --send HALT --channel 15 &")}
attr Rollos_sued_halt room Becker


Die Datei "centronic-stick.py" liegt bei mir im Order "Fhem", deshalb der kurze Pfad.

Gruß,
Christian
Fhem 5.8 auf Raspberry Pi2; 1 Wire OWSERVER mit DS9490R und OWX DS2480;AVR-NET-IO mit 1Wire;  LOGO8; Kostalpiko; Selbstbau CUL; Arduino mit cFirmata; Denon AVR; Samsung TV; Fritzbox;

mwu406

Hallo,

super Projekt, ich stehe auch vor dem Problem meine Rotofenster noch per FHEM öffnen zu wollen.

Kann jemand die benötigten Schritte zum einlernen des USB-Sticks noch etwas ausführlicher beschreiben, an welchem Gerät was wann zu machen ist?

Das wäre sehr hilfreich.

Danke.

Gruß
Martin

MarNei

Hallo,

Ole, vielen Dank für Deine Arbeit. Ich kann jetzt endlich meine Roto-Rollläden hoch und runter fahren! Da habe ich lange drauf gewartet.

Martin, im Grunde genommen ist es erschreckend einfach:
1. USB Stick kaufen
2. USB Stick einstecken (bei mir am Raspberry Pi) - Ich musste den Pi neu starten, damit er den Stick auch unter /dev/serial/by-id gelistet hat
3. Auf die Gitlab-Seite gehen, die Ole unten verlinkt hat und den Erklärungen dort folgen. Das ist alles sehr gut beschrieben und funktioniert genau so. Also...
3a. Über das install-Skript die notwendigen Module installieren
3b. Das Python-Skript runterladen
3c. Ich habe den PAIR Modus an meinem Becker Handsender EC541 II durch Drücken der kleinen Taste seitlich gestartet. Dann zweimal den PAIR-Befehl über das Python-Skript absetzen und das PAIR ist durch. Danach kann man den Rollladen hoch- und runterfahren.

Danke auch an Christian für die Fhem-Defines! Ich habe das Skript ebenfalls im fhem-Verzeichnis abgelegt, musste für das .py und .num den Owner auf fhem ändern. Die Pair-Befehle habe ich direkt aus Fhem abgesetzt mit

({system ("./centronic-stick.py --send PAIR --channel 1")}

Jetzt muss ich mir nur noch überlegen, wie ich über die Dauer die Position des Rollos bestimmen kann für Zwischenpositionen...


dbox2user

Zitat von: MarNei am 13 Juli 2019, 10:38:37


Jetzt muss ich mir nur noch überlegen, wie ich über die Dauer die Position des Rollos bestimmen kann für Zwischenpositionen...

Für die Zwischenpositionen hat Ole ja extra "UP2" und "Down2" implementiert.
Die Zwischenposition muss natürlich vorher im Rollomotor angelernt werden (z.B.mit der Originalfernbedienung).
Auf der Oroginalfernbedienung werden die Zwischenpositionen durch Doppeldruck auf die UP-/Down Taste angefahren.

Falls es das beim Roto nicht geben sollte, kannst Du meine Lösung übernehmen.

Nachdem ich noch keine Zwischenpositionen eingelernt habe fahre ich eine Position an, die ich vorher per Messung der Fahrzeit bestimmt hab.
In meinem Fall sind das 14 Sekunden. Natürlich mit der Annahme, dass die Rollos vorher komplett oben sind.

Meine Programmierung ist nicht hochprofessionell, aber funktioniert und ist für mich verständlich.

beim Dummy habe ich noch um ein "HALB" ergänzt:

attr Rollos_Suedseite webCmd UP:HALT:DOWN:HALB


Zusätzlich gibt es noch ein weiteres notify, das erst das "DOWN" Kommando gibt und nach 14 Sekunden ein "HALT" Kommando:

define Rollos_sued_halb notify Rollos_Suedseite:HALB {system("./centronic-stick.py --send DOWN --channel 15 &")} ;;define timer14s at +00:00:14 set Rollos_Suedseite HALT


Aber Achtung, diese Schreibweise muss so als "Raw definition" bzw direkt in die Fhem Config eingegeben werden.
Im fertigen Notify werden somit aus den 2 Semikolon  nur noch 1 Semikolon. (bei ....       ;;define timer14s   .....)

Gruß,
Christian
Fhem 5.8 auf Raspberry Pi2; 1 Wire OWSERVER mit DS9490R und OWX DS2480;AVR-NET-IO mit 1Wire;  LOGO8; Kostalpiko; Selbstbau CUL; Arduino mit cFirmata; Denon AVR; Samsung TV; Fritzbox;