Einbindung von "Centronic" Fernbedienungen in FHEM

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

Vorheriges Thema - Nächstes Thema

ole1986

Der Ansatz für DOWN|UP:<DELAY> ist angedacht um für einen bestimmten Intervall die Rolladen zu fahren, speziell für das einstellen von z.B. Endlagen.

Ich könnte es leider noch nicht testen.
Daher untesten

halloaber

Hi Ole,
ja das dachte ich mir. Doch ich meine DOWN2, DOWN3 ...?

Viele Grüße, Rainer

ole1986

Oh, Verzeihung.

DOWN2 und UP2 sind sogenannte Zwischenpositionen, wenn der Rolladen diese unterstützt.

Die Zwischenpositionen müssen aber vorher bestimmt werden

Bei Dachfenster weiß ich es leider nicht.


halloaber

Bei den I8 Dachfenstern gibt es nur eine Zwischenposition, die konnte ich mit der alten UP2 bzw. DOWN2 anfahren. (gleiche Funktion)
Bei den Rolladen habe ich die Funktion bisher nicht anwenden können. Macht aber bei einem Dachfensterrolladen auch nicht wirklich sinn halb runter zu fahren :-)
Viele Grüße, Rainer

mr.idefix

Hallo zusammen,

als erstes ein riesiges "Dankeschön", dass ihr euch mit dem Thema so intensiv auseinandergesetzt habt. Vor allem Dank an ole1986 für den Python-Code.
Bei mir sind auch mehrere Becker Rolladenantriebe verbaut. Ich habe Funkmotoren mit jeweils einem EC411 als Master sowie einem Centronic-Stick an meinem Raspi. Ich bin nach der Anleitung von Ole vorgegangen, und habe die EC411 an den Stick angelernt. Über die Konsole habe ich die Funktion getestet, alles klappte bis hierhin.
Nun habe ich, dank der hilfreichen Infos hier im Forum, die Devices in FHEM angelegt:

Internals:
   FUUID      5eaa72ab-f33f-f87d-17a8-321f7e7a0eacecbe
   NAME       az_Rollo
   NR         14
   STATE      DOWN
   TYPE       dummy
   Helper:
     DBLOG:
       state:
         DBLogging:
           TIME       1589530349.22486
           VALUE      DOWN
   READINGS:
     2020-05-15 10:12:29   state           DOWN
Attributes:
   DbLogExclude .*
   DbLogInclude state
   room       Arbeitszimmer
   webCmd     UP:DOWN:HALT


Internals:
   DEF        ([az_Light:Light:avg5]>3300) (set az_Rollo DOWN) (set az_Rollo HALT) DOELSEIF ([az_Light:Light:avg5]<3300) (set az_Rollo UP)
   FUUID      5eba8264-f33f-f87d-9846-1baf786fae95584c
   MODEL      FHEM
   NAME       az_Rollo_Sonne
   NOTIFYDEV  az_Light,global
   NR         62
   NTFY_ORDER 50-az_Rollo_Sonne
   STATE      cmd_1
   TYPE       DOIF
   VERSION    21842 2020-05-02 16:00:20
   Helper:
     DBLOG:
       cmd:
         DBLogging:
           TIME       1589527016.53749
           VALUE      1.2
       cmd_event:
         DBLogging:
           TIME       1589527016.53749
           VALUE      az_Light
       cmd_nr:
         DBLogging:
           TIME       1589527016.53749
           VALUE      1
       cmd_seqnr:
         DBLogging:
           TIME       1589527016.53749
           VALUE      2
       mode:
         DBLogging:
           TIME       1589526989.45674
           VALUE      enabled
       state:
         DBLogging:
           TIME       1589527016.53749
           VALUE      cmd_1
       wait_timer:
         DBLogging:
           TIME       1589527015.78119
           VALUE      no timer
   READINGS:
     2020-05-15 10:14:52   Device          az_Light
     2020-05-15 09:16:56   cmd             1.2
     2020-05-15 09:16:56   cmd_event       az_Light
     2020-05-15 09:16:56   cmd_nr          1
     2020-05-15 09:16:56   cmd_seqnr       2
     2020-05-15 10:14:52   e_az_Light_Light 3530
     2020-05-15 09:16:29   mode            enabled
     2020-05-15 09:16:56   state           cmd_1
     2020-05-15 09:16:55   wait_timer      no timer
   Regex:
     accu:
       az_Light:
         accu:
           Light      ^az_Light$:^Light:
     cond:
       az_Light:
         0:
           Light      ^az_Light$:^Light:
         1:
           Light      ^az_Light$:^Light:
   accu:
     az_Light Light:
       dim        5
       value:
         3583
         3590
         3582
         3534
         3530
   attr:
     cmdState:
     wait:
       0:
         0
         4
       1:
         0
     waitdel:
   condition:
     0          ::ReadingValDoIf($hash,'az_Light','Light','','avg5')>3300
     1          ::ReadingValDoIf($hash,'az_Light','Light','','avg5')<3300
   do:
     0:
       0          set az_Rollo DOWN
       1          set az_Rollo HALT
     1:
       0          set az_Rollo UP
     2:
   helper:
     DEVFILTER  ^global$|^az_Light$
     NOTIFYDEV  global|az_Light
     event      Temperatur: 37.0,Humidity: 1.0,Light: 3530
     globalinit 1
     last_timer 0
     sleepdevice az_Light
     sleepsubtimer -1
     sleeptimer -1
     timerdev   az_Light
     timerevent Temperatur: 37.0,Humidity: 1.0,Light: 3530
     triggerDev az_Light
     timerevents:
       Temperatur: 37.0
       Humidity: 1.0
       Light: 3530
     timereventsState:
       Temperatur: 37.0
       Humidity: 1.0
       Light: 3530
     triggerEvents:
       Temperatur: 37.0
       Humidity: 1.0
       Light: 3530
     triggerEventsState:
       Temperatur: 37.0
       Humidity: 1.0
       Light: 3530
   internals:
   readings:
     all         az_Light:Light
   trigger:
   uiState:
   uiTable:
Attributes:
   room       Arbeitszimmer
   wait       0,4:0


Laut EventMonitor werden die Ereignisse wie gewünscht ausgelöst,
2020-05-15 10:12:10 dummy az_Rollo UP
2020-05-15 10:12:13 dummy az_Rollo HALT
2020-05-15 10:12:16 dummy az_Rollo HALT
2020-05-15 10:12:20 dummy az_Rollo DOWN
2020-05-15 10:12:30 dummy az_Rollo DOWN

in der Praxis geschieht allerdings meistens NIX! Also Blick ins Logfile:

2020.05.15 10:12:10 3: az_notify_Rollo_up return value: -1
Sending code 0000000002010B01040000001737B02101030020AD to device /dev/serial/by-id/usb-BECKER-ANTRIEBE_GmbH_CDC_RS232_v125_Centronic-if00
Sending code 0000000002010B01050000001737B02101030000CC to device /dev/serial/by-id/usb-BECKER-ANTRIEBE_GmbH_CDC_RS232_v125_Centronic-if00
Traceback (most recent call last):
  File "/home/pi/Downloads/centronic-py-master/centronic-stick.py", line 467, in <module>
    main(sys.argv[1:])
  File "/home/pi/Downloads/centronic-py-master/centronic-stick.py", line 458, in main
    stick.send(argument, channel, test)
  File "/home/pi/Downloads/centronic-py-master/centronic-stick.py", line 247, in send
    self.runcodes(ch, unit, cmd, test)
  File "/home/pi/Downloads/centronic-py-master/centronic-stick.py", line 334, in runcodes
    self.db.set_unit(unit, test)
  File "/home/pi/Downloads/centronic-py-master/centronic-stick.py", line 179, in set_unit
    c.execute('UPDATE unit SET increment = ?, configured = ?, executed = ? WHERE code = ?', (unit[1], unit[2], last_run, unit[0],))
sqlite3.OperationalError: attempt to write a readonly database
2020.05.15 10:12:13 3: az_notify_Rollo_halt return value: -1
Sending code 0000000002010B01040000001737B02101030010BD to device /dev/serial/by-id/usb-BECKER-ANTRIEBE_GmbH_CDC_RS232_v125_Centronic-if00
Sending code 0000000002010B01050000001737B02101030000CC to device /dev/serial/by-id/usb-BECKER-ANTRIEBE_GmbH_CDC_RS232_v125_Centronic-if00
Traceback (most recent call last):
  File "/home/pi/Downloads/centronic-py-master/centronic-stick.py", line 467, in <module>
    main(sys.argv[1:])
  File "/home/pi/Downloads/centronic-py-master/centronic-stick.py", line 458, in main
    stick.send(argument, channel, test)
  File "/home/pi/Downloads/centronic-py-master/centronic-stick.py", line 247, in send
    self.runcodes(ch, unit, cmd, test)
  File "/home/pi/Downloads/centronic-py-master/centronic-stick.py", line 334, in runcodes
    self.db.set_unit(unit, test)
  File "/home/pi/Downloads/centronic-py-master/centronic-stick.py", line 179, in set_unit
    c.execute('UPDATE unit SET increment = ?, configured = ?, executed = ? WHERE code = ?', (unit[1], unit[2], last_run, unit[0],))
sqlite3.OperationalError: attempt to write a readonly database
2020.05.15 10:12:16 3: az_notify_Rollo_halt return value: -1
Sending code 0000000002010B01040000001737B02101030010BD to device /dev/serial/by-id/usb-BECKER-ANTRIEBE_GmbH_CDC_RS232_v125_Centronic-if00
Sending code 0000000002010B01050000001737B02101030000CC to device /dev/serial/by-id/usb-BECKER-ANTRIEBE_GmbH_CDC_RS232_v125_Centronic-if00
Traceback (most recent call last):
  File "/home/pi/Downloads/centronic-py-master/centronic-stick.py", line 467, in <module>
    main(sys.argv[1:])
  File "/home/pi/Downloads/centronic-py-master/centronic-stick.py", line 458, in main
    stick.send(argument, channel, test)
  File "/home/pi/Downloads/centronic-py-master/centronic-stick.py", line 247, in send
    self.runcodes(ch, unit, cmd, test)
  File "/home/pi/Downloads/centronic-py-master/centronic-stick.py", line 334, in runcodes
    self.db.set_unit(unit, test)
  File "/home/pi/Downloads/centronic-py-master/centronic-stick.py", line 179, in set_unit
    c.execute('UPDATE unit SET increment = ?, configured = ?, executed = ? WHERE code = ?', (unit[1], unit[2], last_run, unit[0],))
sqlite3.OperationalError: attempt to write a readonly database
2020.05.15 10:12:20 3: az_notify_Rollo_down return value: -1
Sending code 0000000002010B01040000001737B021010300408D to device /dev/serial/by-id/usb-BECKER-ANTRIEBE_GmbH_CDC_RS232_v125_Centronic-if00
Sending code 0000000002010B01050000001737B02101030000CC to device /dev/serial/by-id/usb-BECKER-ANTRIEBE_GmbH_CDC_RS232_v125_Centronic-if00
Traceback (most recent call last):
  File "/home/pi/Downloads/centronic-py-master/centronic-stick.py", line 467, in <module>
    main(sys.argv[1:])
  File "/home/pi/Downloads/centronic-py-master/centronic-stick.py", line 458, in main
    stick.send(argument, channel, test)
  File "/home/pi/Downloads/centronic-py-master/centronic-stick.py", line 247, in send
    self.runcodes(ch, unit, cmd, test)
  File "/home/pi/Downloads/centronic-py-master/centronic-stick.py", line 334, in runcodes
    self.db.set_unit(unit, test)
  File "/home/pi/Downloads/centronic-py-master/centronic-stick.py", line 179, in set_unit
    c.execute('UPDATE unit SET increment = ?, configured = ?, executed = ? WHERE code = ?', (unit[1], unit[2], last_run, unit[0],))
sqlite3.OperationalError: attempt to write a readonly database
2020.05.15 10:12:30 3: az_notify_Rollo_down return value: -1
Sending code 0000000002010B01040000001737B021010300408D to device /dev/serial/by-id/usb-BECKER-ANTRIEBE_GmbH_CDC_RS232_v125_Centronic-if00
Sending code 0000000002010B01050000001737B02101030000CC to device /dev/serial/by-id/usb-BECKER-ANTRIEBE_GmbH_CDC_RS232_v125_Centronic-if00
Traceback (most recent call last):
  File "/home/pi/Downloads/centronic-py-master/centronic-stick.py", line 467, in <module>
    main(sys.argv[1:])
  File "/home/pi/Downloads/centronic-py-master/centronic-stick.py", line 458, in main
    stick.send(argument, channel, test)
  File "/home/pi/Downloads/centronic-py-master/centronic-stick.py", line 247, in send
    self.runcodes(ch, unit, cmd, test)
  File "/home/pi/Downloads/centronic-py-master/centronic-stick.py", line 334, in runcodes
    self.db.set_unit(unit, test)
  File "/home/pi/Downloads/centronic-py-master/centronic-stick.py", line 179, in set_unit
    c.execute('UPDATE unit SET increment = ?, configured = ?, executed = ? WHERE code = ?', (unit[1], unit[2], last_run, unit[0],))
sqlite3.OperationalError: attempt to write a readonly database


Interessant ist an diesem Beispiel, das UP Kommando wurde ausgeführt, die beiden HALT und DOWN jedoch nicht.
Wenn ich über die Konsole des Raspi die Kommandos sende erscheinen jeweils zwei Zeilen
pi@FHEM:~/Downloads/centronic-py-master $ ./centronic-stick.py --send UP --channel 3
Sending code 0000000002010B01040000001737B02101030020AD to device /dev/serial/by-id/usb-BECKER-ANTRIEBE_GmbH_CDC_RS232_v125_Centronic-if00
Sending code 0000000002010B01050000001737B02101030000CC to device /dev/serial/by-id/usb-BECKER-ANTRIEBE_GmbH_CDC_RS232_v125_Centronic-if00
pi@FHEM:~/Downloads/centronic-py-master $

Das Rollo bewegt sich allerdings nicht.

Hier ist dann die Stelle, an der ich Hilfe nötig habe. Habe ich etwas falsch eingerichtet? Gibt es etwas das ich noch prüfen oder konfigurieren müsste? Warum fährt das Rollo mal, dann wieder nicht? Sowohl wenn ich die Kommandos über die Konsole sende, wie auch aus FHEM heraus. Das Notify oben, wenn es mal klappt, fährt übrigens nur ganz hoch oder runter. Das Halt-Kommando nach 4 Sekunden wird laut Event bzw. Logfile gesendet, aber nicht ausgeführt.

Ich hoffe, ich habe mich einigermaßen verständlich geäußert, und ich hoffe noch mehr, dass mir jemand helfen kann. Sollten weitere Infos benötigt bin ich gerne bereit diese zu liefern.

Vielen Dank schon mal,
VG
Michael
Raspi 4 | Rasbian Buster | FHEM | Becker Centronics | Conbee2 | Div. Lidl & Ikea LED / Bewegungsmelder / Steckdose | Raspi 3B | FritzBox 6490 Cable | Fritz DECT 200/301 | Homebridge | ESP32 als Licht- Temperatursensor

ole1986

@mr.idefix

Die Meldung die du erhälst besagt, das du vermutlich über fhem keine Berechtigung hast die Datenbank Datei "centronic-stick.db" zu schreiben.


sqlite3.OperationalError: attempt to write a readonly database


Abhilfe sollte da ein


chmod go+w  centronic-stick.db


Welches erlauben sollte von anderen Benutzer diese Datei zu verändern.
Bedingt dadurch, das du den Befehl ausgeführt hast, dieser aber den increment nicht erhöht hat, wurde von dem Rolladen der wert trotzdem verbraucht.

Mittlerweile wissen wir, das ein mehrfaches ausführen von Steuerbefehlen den increment wieder syncronisiert mit dem Rolladen..
Also einfach mindestes 3x z.b. den "DOWN" Befehl ausführen.

mr.idefix

Hallo ole,

vielen Dank für die extrem schnelle Rückmeldung.
Aufgrund der Ausnahmebeschreibung im Logfile hatte ich bereits versucht dem User Pi alle Rechte über diese Datei zu geben die man ihm geben könnte. Nichtsdestotrotz führte ich nun das von dir genannte Kommando aus.

-rwxrwxrwx 1 pi root 12288 Mai 15 10:30 centronic-stick.db

zur Sicherheit hier die Userrechte (Auszug):

tty:x:5:pi,fhem
dialout:x:20:pi
sudo:x:27:pi,fhem

uid=999(fhem) gid=20(dialout) Gruppen=20(dialout),5(tty),27(sudo)


Ich habe nun auf der Konsole eine große Serie Kommandos abgefeuert. Toll, reagiert nun jedes Mal. Vielen lieben Dank für den Tipp.
Habe ich die Rechte so richtig vergeben, auch in Bezug auf FHEM?

VG
Michael
Raspi 4 | Rasbian Buster | FHEM | Becker Centronics | Conbee2 | Div. Lidl & Ikea LED / Bewegungsmelder / Steckdose | Raspi 3B | FritzBox 6490 Cable | Fritz DECT 200/301 | Homebridge | ESP32 als Licht- Temperatursensor

mr.idefix

Hallo,

ich hab mich leider zu früh gefreut. Die Kommandos über die Konsole werden werden ausgeführt.
Danach habe ich über FHEM genau einen Versuch. Dieses Kommando wird ausgeführt, im Log erscheint trotzdem eine Fehlermeldung:

2020.05.16 15:17:33 3: az_notify_Rollo_down return value: -1
Sending code 0000000002010B00210000001737B0210103004071 to device /dev/serial/by-id/usb-BECKER-ANTRIEBE_GmbH_CDC_RS232_v125_Centronic-if00
Sending code 0000000002010B00220000001737B02101030000B0 to device /dev/serial/by-id/usb-BECKER-ANTRIEBE_GmbH_CDC_RS232_v125_Centronic-if00
Traceback (most recent call last):
  File "/home/pi/Downloads/centronic-py-master/centronic-stick.py", line 467, in <module>
    main(sys.argv[1:])
  File "/home/pi/Downloads/centronic-py-master/centronic-stick.py", line 458, in main
    stick.send(argument, channel, test)
  File "/home/pi/Downloads/centronic-py-master/centronic-stick.py", line 247, in send
    self.runcodes(ch, unit, cmd, test)
  File "/home/pi/Downloads/centronic-py-master/centronic-stick.py", line 334, in runcodes
    self.db.set_unit(unit, test)
  File "/home/pi/Downloads/centronic-py-master/centronic-stick.py", line 179, in set_unit
    c.execute('UPDATE unit SET increment = ?, configured = ?, executed = ? WHERE code = ?', (unit[1], unit[2], last_run, unit[0],))
sqlite3.OperationalError: attempt to write a readonly database


Wie gesagt, das az_notify_Rollo_down führte dazu, dass das Rollo runter fuhr, ins Logfile wurde oben stehende Meldung geschrieben.
Was könnte hier schief laufen?

VG
Michael
Raspi 4 | Rasbian Buster | FHEM | Becker Centronics | Conbee2 | Div. Lidl & Ikea LED / Bewegungsmelder / Steckdose | Raspi 3B | FritzBox 6490 Cable | Fritz DECT 200/301 | Homebridge | ESP32 als Licht- Temperatursensor

mr.idefix

Hallo,

der Schlauch auf dem ich stand, war ziemlich dick! Es lag, wie von Ole beschrieben, an den Benutzer-/Gruppenrechten der db.
Jetzt hab ich's, rauf runter halt, alles klappt hervorragend.

Vielen Dank

VG
Michael
Raspi 4 | Rasbian Buster | FHEM | Becker Centronics | Conbee2 | Div. Lidl & Ikea LED / Bewegungsmelder / Steckdose | Raspi 3B | FritzBox 6490 Cable | Fritz DECT 200/301 | Homebridge | ESP32 als Licht- Temperatursensor

GodiHSW

#219
Hallo,

beim absetzen des TRAIN comands bekomme ich folgende Fehlermeldung

Traceback (most recent call last):
  File "./centronic-stick.py", line 467, in <module>
    main(sys.argv[1:])
  File "./centronic-stick.py", line 389, in main
    class Modes(enum.IntFlag):
AttributeError: 'module' object has no attribute 'IntFlag'

Ist jmd diese Meldung bekannt oder weiß was ich (ist am wahrscheinlichsten) falschgemacht haben könnte?

Habe Phython Version 3.4.2 installiert

Vielen Dank für eine Rückmeldung!
Jan


GodiHSW


GodiHSW

Hallo zusammen,

die Arbeit die ihr hier geleistet habt um die Geschichte ans laufen zu kriegen ist wirklich super, da kann ich als Anfänger mich nur bedanken.
Habe zwei Roto Rollos auf Channel 2 und Channel 3 am laufen. Jetzt die Herausforderung mit dem Fenster auf Channel 1.
Die TRAIN cmd laufen genauso durch wie bei den Rollos. Cmds werden auch ganz normal gesendet mit --send UP / DOWN, leider keine Reaktion am Fenster.
Hat jmd von euch schon Fenster integriert und steuert diese über den USB Stick?

Würde mich über ein Feedback freuen.
Danke!
Gruß Jan

halloaber

Hallo Jan,
was meinst Du mit Fenstern? Ich habe bereits Dachfenster (I8) eingebunden.
Viele Grüße, Rainer

phimi

#224
Einen schönen guten Tag,

erst einmal vielen Dank für die super Arbeit bisher.
Ich habe hier ein Roto Solar Funk Aussenrolladen mit einer Fernbedienung die auf den Namen Easy Control EC411 hört und inzwischen auch einen USB Stick v2 von Becker.

Obwohl ich m. E. die Kopplung erfolgreich durchgeführt habe und auch Befehle sehe die von der Fernbedienung gesendet werden, bin ich nicht in der Lage den Rollladen über das Skript zu steuern. Ich habe auch schon versucht genau dieselben Codes zu schicken, die die Fernbedienung sendet - leider ohne Erfolg.
Kann man irgendwie nachvollziehen das die Befehle auch ankommen oder gibt es sonst noch andere Ratschläge was falsch laufen könnte?

Vielen Dank und Grüße

phimi