[10_SOMFY.pm] Rolling Code Verlust bei FHEM Neustart ohne aktuelle fhem.save

Begonnen von Ellert, 12 Juli 2018, 16:13:42

Vorheriges Thema - Nächstes Thema

Spook112

Hi,
kurze Frage.
Gibt es eine Möglichkeit den aktuellen Rolling Code eines Rollladens auszulesen?
Raspberry PI / RaZberry ZWAVE Modul / RFXTRX433E / 13 Fibaro FGS-222-EN-A-v1.00 / 17 VISION ZD2102-5 / 10 Somfy RTS / 4 Greenwave GWRENS310-F / Gardena Sileno City / 3 Gardena Gartensteckdosen / 2 devolo Home Control Funkschalter / 8 FIBARO System FGSD002 Smoke Sensoren

Dev

Ja kannst du.

enc_key und rolling_code, beides unter Readings, ist der gesamte Code:

z.b.: A3 (enc_key) 0246 (rolling_code) --> A3 0246

zusätzlich ist im Bereich DEF (Internal) der Code mit der Adresse angeführt

z.B.: 012345 A3 0246

andies

Ich habe mir hier ein anderes DOIF geschrieben, wobei meine fhem.save immer nach extern kopiert wird (bei jeder Änderung der Datei):
defmod Rolladen_Code_Sicherung_DOIF DOIF (["Rolladen.*"])  ({WriteStatefile()}, {system("cp /opt/fhem/log/fhem.save /media/")})

Jetzt überlege ich, ob dieser Zugang hier nicht besser ist. Allerdings überblicke ich das nicht. Kann mir jemand da helfen, ob mein Weg genügt oder wo ich etwas übersehen haben könnte?
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

Spook112

Danke für die Info - das heisst in FHEM ist der letzte bekannte Stand "sichtbar".

Meine Frage zielte allerdings mehr in Richtung des eigentlichen Gerätes - also des Rollladens.

Folgendes Problem:
Meine FHEM Instanz bzw. die gesamte SD-Karte des Raspberry ist defekt und nicht mehr lesbar.
Und ich Idiot habe natürlich keine Sicherung. Ja, so blöd kann man sein.

Also alles neu aufgesetzt - und jetzt stehe ich vor dem Problem.

Wie kriege ich raus, welchen Rolling Code haben meine Rollläden intern abgespeichert.
Kann man die Codes dort auch auslesen?
Raspberry PI / RaZberry ZWAVE Modul / RFXTRX433E / 13 Fibaro FGS-222-EN-A-v1.00 / 17 VISION ZD2102-5 / 10 Somfy RTS / 4 Greenwave GWRENS310-F / Gardena Sileno City / 3 Gardena Gartensteckdosen / 2 devolo Home Control Funkschalter / 8 FIBARO System FGSD002 Smoke Sensoren

andies

Ziemlich genau das ist mir passiert. Glücklicherweise konnte ich nach mehreren Tagen doch noch meine Karte auslesen, aber das darf nie wieder passieren.

Deswegen die Idee: nach jeder Rolladanbewegung fhem.save sichern (das speichert ja alle readings aller Devices, also erst recht den encryption code der Rolladen) und dann wird diese Datei noch auf einem externen Server gespeichert (/media ist bei in Wirklichkeit eine externe Festplatte). Insofern habe ich das auf einer anderen Festplatte gesichert.
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

fdfhem

Hallo, als blutiger Anfaenger nutze ich seit ein Paar Wochen FHEM exklusiv zur Steuerung eines Somfy Rolladenmotors, was im grossen und ganzen sehr gut funktioniert. Nach einem Raspi-Neustart (wenn dieser sich zB aufgehaengt hat) scheint der Rolling Code jedoch oft nicht mehr synchronisiert zu sein. Ich kann dann durch manuelles Erhoehen des Rolling Codes in DEF (d.h. mehrfaches schrittweise Erhoehung der letzten 4 Ziffern) durch Try and Error wieder eine Synchronisation herstellen. Dies nervt natuerlich auf Dauer. Wahrscheinlich mache ich etwas falsch, komme aber trotz langer Forumlektuere nicht dahinter, wie es richtig geht. Hat hier jemand Erfahrung und koennte mir helfen, dies zuverlaessig zum Laufen zu bringen? Ich bin wie gesagt ein Anfaenger und kein IT Profi, d.h. je anschaulicher die Tipps sind, desto besser.

Einige weitere Punkte zu meiner Konfiguration:
-Setup ist Raspi 3B mit NanoCUL
-Meine FHEM-Version ist laut Befehl "version" die "Latest Revision: 22495", ich habe FHEM gelegentlich via "update" upgedated, aber ansonsten nichts aus github odgl manuell installiert
-Die Option "autoStoreRollingCode" ist auf 1 gesetzt, wie verschiedentlich im Forum besprochen
-Wenn die Synchronisation zwischen FHEM und dem Rollo nicht funktioniert und ich keine Zeit fuer die o.g. "Try and Error" Loesung habe, verwende ich manchmal die beim Rolladen mitgelieferte Fernbedienung, welche weiterhin ohne Probleme funktioniert. Mir ist unklar, ob dies das Synchronisationsproblem weiter verschlimmert (etwa dass die Rolling Codes weiterlaufen)

andies

Anscheinend speicherst du die neuen Codes (stehen in den Readings) nicht in fhem.save. Dort stehen die aktuellen Codes drin. Wenn diese Datei fhem.save nicht up-to-date ist, dann arbeitest du mit alten Codes - was nicht geht. Du brauchst ein speichern nach jeder Bedienung des Somfy Geräts. Schau mal zwei Zeilen drüber, da stehen die Details, wie das gehen kann.
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

fdfhem

Andies, danke fuer die schnelle Antwort.

Ich gehe davon aus, dass Du Dich auf
defmod Rolladen_Code_Sicherung_DOIF DOIF (["Rolladen.*"])  ({WriteStatefile()}, {system("cp /opt/fhem/log/fhem.save /media/")})

beziehst.

Ich habe "Rolladen" an den Namen meines Rolladens in FHEM angepasst.

Leider funktioniert zumindest das Kopieren nicht (state ist "cmd_1",  error ist "{system("cp /opt/fhem/log/fhem.save /media/")}: -1 ", und nichts wird in das Verzeichnis Media kopiert (habe es auch mit sudo cp versucht, auch kein Erfolg).

Was mache ich falsch?

andies

gib doch mal
{system("cp /opt/fhem/log/fhem.save /media/")}
in das Fenster oben in FHEM ein. Hast Du Zugriff auf das Verzeichnis (hier bei mir /media)? Und gibt es das? Im Zweifel kopierst du erstmal mit der Hand die Datei dorthin und gibst ihr die Rechte, also
sudo chmod 666 fhem.save
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

fdfhem

Danke:

1) Der Befehl
{system("cp /opt/fhem/log/fhem.save /media/")}
gibt mir in FHEM -1 zurueck

2) Das Verzeichnis media existiert

3) Ich habe fhem.save mit Putty/SSH manuell nach /media/ kopiert und dann "sudo chmod 666 fhem.save" sowohl im Verzeichnis /media/, alsauch im Verzeichnis /opt/fhem/log/ ausgefuehrt.

Leider immer noch das gleiche wie in Antwort #22.

Wenn ich {system("cp /opt/fhem/log/fhem.save /media/")} danach erneut ausfuehre, gibt mir FHEM wieder -1 zurueck   

rudolfkoenig

Ich wuerde entweder "cp /opt/fhem/log/fhem.save /media/" eingeben (mit "), dann landen die Fehlermeldungen in FHEM Log, oder { `cp /opt/fhem/log/fhem.save /media/ 2>&1` }, dann kriegt man die Fehlermeldung direkt als Rueckgabewert.

fdfhem

@rudolfkoenig: im log file finde ich

cp: cannot create regular file '/media/fhem.save': Permission denied
2020.09.15 12:52:14 2: LCS_Code_Sicherung_DOIF: {system("cp /opt/fhem/log/fhem.save /media/")}: -1

Die Berechtigungen fuer fhem.save in /media/ sind laut putty/SSH:

-rw-rw-rw- 1 root root 1781 Sep 15 13:25 fhem.save

viegener

Ein Hinweis:

Es gibt das Attribut "autoStoreRollingCode" um zumindest das Speichern in den Statefile automatisch zu speichern - dies muss allerdings epxlizit gesetzt werden.

Zitat von: fdfhem am 15 September 2020, 10:26:12
Hallo, als blutiger Anfaenger nutze ich seit ein Paar Wochen FHEM exklusiv zur Steuerung eines Somfy Rolladenmotors, was im grossen und ganzen sehr gut funktioniert. Nach einem Raspi-Neustart (wenn dieser sich zB aufgehaengt hat) scheint der Rolling Code jedoch oft nicht mehr synchronisiert zu sein. Ich kann dann durch manuelles Erhoehen des Rolling Codes in DEF (d.h. mehrfaches schrittweise Erhoehung der letzten 4 Ziffern) durch Try and Error wieder eine Synchronisation herstellen. Dies nervt natuerlich auf Dauer. Wahrscheinlich mache ich etwas falsch, komme aber trotz langer Forumlektuere nicht dahinter, wie es richtig geht. Hat hier jemand Erfahrung und koennte mir helfen, dies zuverlaessig zum Laufen zu bringen? Ich bin wie gesagt ein Anfaenger und kein IT Profi, d.h. je anschaulicher die Tipps sind, desto besser.

Einige weitere Punkte zu meiner Konfiguration:
-Setup ist Raspi 3B mit NanoCUL
-Meine FHEM-Version ist laut Befehl "version" die "Latest Revision: 22495", ich habe FHEM gelegentlich via "update" upgedated, aber ansonsten nichts aus github odgl manuell installiert
-Die Option "autoStoreRollingCode" ist auf 1 gesetzt, wie verschiedentlich im Forum besprochen
-Wenn die Synchronisation zwischen FHEM und dem Rollo nicht funktioniert und ich keine Zeit fuer die o.g. "Try and Error" Loesung habe, verwende ich manchmal die beim Rolladen mitgelieferte Fernbedienung, welche weiterhin ohne Probleme funktioniert. Mir ist unklar, ob dies das Synchronisationsproblem weiter verschlimmert (etwa dass die Rolling Codes weiterlaufen)

Das Attribut "autoStoreRollingCode" speichert den Rollingcode NICHT im statefile, sondern in der uniqueID- Datei. Wenn also fhemsave gesichert wird, sollte das Attribut auf 0 gesetzt werden.

Wenn trotz aktuellem fhem.save ujnd aktuellem uniqueID beim Neustart die Rollingcodes fehlerhaft sind, würde ich dem gerne weiter nachgehen.
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

fdfhem

@viegener: Danke:

Das Attribut "autoStoreRollingCode" ist als 1 gesetzt und erscheint so in der Device-Ansicht des Rollos. Es scheint auch den jeweils korrekten Rolling Code in das file FHEM/FhemUtils/uniqueID zu speichern: Der Rolling Code dort (zB 00E2) entspricht, was ich in der Device-Ansicht in FHEM unter DEF sehe und der Rollo funktioniert. Wenn ich nun aber den Stecker von meinem Raspi ziehe und in dann wieder einstecke und re-boote, dann ist der Rolling Code unter DEF ein anderer (zB 00D0), ich kann ihn aber manuell unter DEF auf den ehemaligen uniqueID Code 00E2 setzen und dann geht wieder alles. 

Ich weiss nicht, ob FHEM beim Reboot den Rolling Code faelschlicherweise aus der Datei uniqueID nicht wieder einliest sondern irgendwo einen anderen veralteten Code findet. Gibt es eine Moeglichkeit, diesen Wieder-Einleseprozess genauer zu analysieren?

Was mir aufgefallen ist, ist dass die Namen in uniqueID nicht mit dem Namen in FHEM uebereinstimmen (kann sein, dass ich die Device in FHEM mal umbenannt hatte):
--Zeile in uniqueID: SOMFY_000002_rollingcode:00E2
--Name in FHEM: LibraryCinescreen

PS: Mir ist es wichtiger, dass der Rolling Code beim Reboot des Raspis funktioniert (auch und gerade wenn dieser sich aufgehaengt hat). Falls die SD-Karte im Raspi wirklich mal kaputt geht, kann ich den Rollo im Notfall auch neu anlernen (hoere dies geht bei Somfy maximal 12 Mal, also habe ich noch 10-11 "Versuche" :-). Deshalb ist das Speichern in einer anderen Datei (ausserhalb der SD-Karte etc) momentan von untergeordneter Bedeutung fuer mich

PPS: Super Forums-Community hier, Antworten von 3 erfahrenen Mitgliedern nach nicht mal einem halben Tag!

viegener

Zitat von: fdfhem am 15 September 2020, 17:13:30
@viegener: Danke:

Das Attribut "autoStoreRollingCode" ist als 1 gesetzt und erscheint so in der Device-Ansicht des Rollos. Es scheint auch den jeweils korrekten Rolling Code in das file FHEM/FhemUtils/uniqueID zu speichern: Der Rolling Code dort (zB 00E2) entspricht, was ich in der Device-Ansicht in FHEM unter DEF sehe und der Rollo funktioniert. Wenn ich nun aber den Stecker von meinem Raspi ziehe und in dann wieder einstecke und re-boote, dann ist der Rolling Code unter DEF ein anderer (zB 00D0), ich kann ihn aber manuell unter DEF auf den ehemaligen uniqueID Code 00E2 setzen und dann geht wieder alles. 

Ich weiss nicht, ob FHEM beim Reboot den Rolling Code faelschlicherweise aus der Datei uniqueID nicht wieder einliest sondern irgendwo einen anderen veralteten Code findet. Gibt es eine Moeglichkeit, diesen Wieder-Einleseprozess genauer zu analysieren?

Was mir aufgefallen ist, ist dass die Namen in uniqueID nicht mit dem Namen in FHEM uebereinstimmen (kann sein, dass ich die Device in FHEM mal umbenannt hatte):
--Zeile in uniqueID: SOMFY_000002_rollingcode:00E2
--Name in FHEM: LibraryCinescreen

PS: Mir ist es wichtiger, dass der Rolling Code beim Reboot des Raspis funktioniert (auch und gerade wenn dieser sich aufgehaengt hat). Falls die SD-Karte im Raspi wirklich mal kaputt geht, kann ich den Rollo im Notfall auch neu anlernen (hoere dies geht bei Somfy maximal 12 Mal, also habe ich noch 10-11 "Versuche" :-). Deshalb ist das Speichern in einer anderen Datei (ausserhalb der SD-Karte etc) momentan von untergeordneter Bedeutung fuer mich

PPS: Super Forums-Community hier, Antworten von 3 erfahrenen Mitgliedern nach nicht mal einem halben Tag!

Der Rollingcode wird nicht beim Neustart aus uniqueId wiederhergestellt, sondern erst beim nächsten Befehl, der gesendet wird.
Hast Du mal ausprobiert, ob das bei Dir nicht funktioniert?

In der uniqueid wird der Eintrag nicht aus dem Namen des devices gebildet, sondern aus der SOMFY-Adresse insofern ist der von Dir zitierte Eintrag für einen Rolladen mit der Adresse 000002. Der Name kann sich ja ändern, nicht nur bei Dir.

Bezüglich neu anlernen, gibt es ja normalerweise noch die Möglichkeit vorhandene Fernbedienungen auch aus dem Rollo  selbst zu löschen und dann gibt es auch mehr Möglichkeiten.

Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können