CUL rfmode Homematic -SlowRF - Homematic per Script umschalten, CUL a-culfw

Begonnen von kellerkind351, 07 November 2015, 11:01:29

Vorheriges Thema - Nächstes Thema

kellerkind351

Hallo zusammen!

Ich bin noch Anfänger bei FHEM und knobele gerade an folgendem Problem:

Mein CUL868 mit der neuesten a-culfw 1.71  läuft normalerweise im HOMEMATIC-Modus.
Für die Steuerung eines UNIROLL-Antriebes möchte ich aber für kurze Zeit den Modus auf SlowRF wechseln, um dann wieder auf HOMEMATIC umzuschalten.
Idealerweise soll das zeitgesteuert geschehen, es genügt sicher früh / abends.
Der CUL868 konnte nach Umschalten auf SLowRF, Löschen der hmId , anpassen der Frequenz usw. erfolgreich am UNIROLL angemeldet werden.
Schalte ich dann per Befehlszeile nur den rfmode auf Homematic um, werden meine Homematic-Komponenten sofort wieder erkannt, auch ohne hmId. 
ccconf zeigt die Einstellungen für Homematic.
Schalte ich nun wieder auf SlowRF, gibt ccconf die vorherigen Einstellungen für den UNIROLL zurück, aber ich kann den UNIROLL nun nicht mehr steuern.
Auch ein set CUL868 reopen oder set CUL868 raw B00 für einen Reset hilft nicht weiter.

Hat jemand diese Konstellation schon einmal erfolgreich umgesetzt oder kann einen Tip geben?

Viele Grüße
kellerkind



fhem auf Raspberry Pi , CUL433, CUL868, JEELINK, IT-Steckdosen, Homematic, UNIROLL,Fritzbox...

viegener

Meinem Verständnis nach ist das von Dir angestrebte Verhalten nicht unterstützt und die mehrfache Umschaltung des Modus für CULs kann dann auch dazu führen, dass das Funkmodul nicht immer korrekt initialisiert ist. Wenn das der Fall ist liesse sich das vermutlich nur in der CUL-fw beheben. Soweit ist das aber erstmal meine persönliche Spekulation.

Innerhalb von fhem gibt es aber auch das Problem, dass die Umschaltung des CULs auf SlowRF für reichlich Probleme sorgen kann, da ja die Homematic-Devices nicht damit rechnen, dass ihr IODev plötzlich kein HM-Device mehr ist...

Beispiel: Wenn FHEM die regelmässigen getconfig requests abschickt, können diese nicht gesendet werden (ich weiss noch nichtmal was da passiert). 

Also wäre es sinnvoll auch für den einen Device einen weiteren CUL (oder was sonst die Ansteuerung machen könnte) zu verwenden. Vielleicht reicht ja ein nanoCul...


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

kellerkind351

Hallo viegener!

Danke für Deine Antwort. Ich hatte mir schon so etwas gedacht, aber gehofft, dass es für einen Befehl eine Umschaltung im CUL gibt.
Für IT-Komponenten macht es der CUL ja auch , wenn er im Homematic-Modus läuft.

Aber ich werde mal über einen weiteren CUL nachdenken...

Viele Grüße
fhem auf Raspberry Pi , CUL433, CUL868, JEELINK, IT-Steckdosen, Homematic, UNIROLL,Fritzbox...

Franz Häring

Hallo Kellerkind,

ich betreibe seit 2 Jahren Homematic Heizungsthermostate und möchte jetzt Uniroll Gurtwickler einbinden, hab also das selbe Problem wie du. Hast du eine Lösung gefunden oder hast du einen weitern CUL für den SlowRF Modus eingesetzt?

Gruß Franz

kellerkind351

Hallo Franz,

die sichere Lösung war für mich ein zusätzlicher Homematic-USB-Stick. Den CUL benutze ich nun nur noch im SlowRF-Mode für den Uniroll und Temperaturfühler.
Da so alles funktioniert, habe ich die alternative Firmware für den CUL und Umschaltmodi nicht weiter verfolgt- kann also nicht sagen ob sich da mittlerweile etwas getan hat.
Wenn Du schnell und sicher zu einem funktionierenden Ergebnis kommen willst, dann nimm einen CUL nur für den Uniroll.

Viele Grüße und noch ein schönes Osterfest
Kellerkind
fhem auf Raspberry Pi , CUL433, CUL868, JEELINK, IT-Steckdosen, Homematic, UNIROLL,Fritzbox...

MadMax-FHEM

Homematic sendet mit bidCos also bidirektional/ack...

D.h. die Geräte senden beim Aufwachen ihre Zustände etc. und erwarten ack.
Wenn fhem grad im "falschen" Modus ist kommt der nicht bzw. kriegt fhem ja nicht mal das Telegramm mit...

Ob und wenn wie lange das gut geht ist fraglich...

Ich würde es gar nicht erst versuchen...


Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Franz Häring

Hallo Kellerkind und Joachim,

vielen Dank für die schnelle Antwort. Ich werde eurem Rat folgen und einen separaten CUL für die Uniroll verwenden.

Schönen Gruß
Franz

karo

Hallo zusammen,
vielleicht hätte ich in's Forum schauen sollen, bevor ich handle, aber dann hätte ich es wohl nicht ausprobiert.
Ich bin über die gleiche Thematik wie Franz gestoßen und habe das 10_UNIRoll.pm verändert. Ich wollte für lediglich einen Wickler keinen neuen Cul bauen. Mit ein paar Zeilen code wird der Cul bei Bedarf vor dem Senden umgeschaltet und nach dem Senden wieder zurück.
Von HomeMatic habe ich nur Rolladenmotoren bzw. den Schalter der sie steuert. Der gibt sowieso keine Meldung über den Stand eines Rollos zurück.
Eine viertel Stunde Testen zeigen, dass fast alles geht. Fast: Wenn ich alle Rollos gleichzeitig schalte, dann ist das Verhalten etwas seltsam, daher schalte ich den Wickler mit einer Verzögerung von 0.3 Sekunden (Schalter alles zu).
Gibt es irgendein Problem mit dem Ansatz, dass ich momentan nicht erkenne?
Grüße
Karsten

JHo

Zitat von: karo am 01 Oktober 2017, 15:29:08
Ich bin über die gleiche Thematik wie Franz gestoßen und habe das 10_UNIRoll.pm verändert. Ich wollte für lediglich einen Wickler keinen neuen Cul bauen. Mit ein paar Zeilen code wird der Cul bei Bedarf vor dem Senden umgeschaltet und nach dem Senden wieder zurück.
Hallo Karsten,
auch wenn das Thema schon ein "paar" Tage alt ist: magst Du vielleicht die paar Zeilen Code fürs Umschalten von HM zu Uniroll und zurück kurz posten?
Danke!
Jan
1: FHEM auf Ubuntu, MAX!Cube, Wand- und Heizkörperthermostate, Eco-Schalter, diverse LaCrosse-Sensoren, per remote angebundene DS18B20-Sensoren
2: FHEM auf Raspi 3, Max!Cube, Wand- und Heizkörperthermostate, Eco-Schalter, ht_pitiny-Adapter zu Junkers FW120

karo

Hallo,
ich war seit längerer Zeit nicht mehr im Forum, daher kommt die Antwort spät.
Im folgenden die Ausgabe eines diffs, das zeigt die Änderungen
Viele Grüße
Karsten

pi@raspiFHM:/opt/fhem $ diff -p 10_UNIRoll-Orig.pm 10_UNIRoll-WorksForMe.pm
*** 10_UNIRoll-Orig.pm  2019-11-06 19:51:32.046772120 +0100                                                                                                                 
--- 10_UNIRoll-WorksForMe.pm    2017-11-08 19:49:10.136741950 +0100                                                                                                         
*************** UNIRoll_Set($@)                                                                                                                                             
*** 98,107 ****                                                                                                                                                             
    my ($hash, @a) = @_; # Eingabewerte nach define name typ devicecode channelcode                                                                                         
    my $ret = undef;                                                                                                                                                       
    my $na = int(@a);    #na Anzahl Felder in a                                                                                                                             
!  # print "UNIRoll_Set \n";                                                                                                                                               
    return "no set value specified" if($na < 2 || $na > 3);                                                                                                                 
    my $c = $UNIRoll_c2b{$a[1]}; # Wert des Kommandos: up stop down pos                                                                                                     
    my $name = $a[0];            # Ger�tename                                                                                                                               
    $tm = 0 if(defined($c));     # optionaler Zeitwert
    if($na == 3) {
      $tm = $a[2];
--- 98,111 ----
    my ($hash, @a) = @_; # Eingabewerte nach define name typ devicecode channelcode
    my $ret = undef;
    my $na = int(@a);    #na Anzahl Felder in a
!   #print "UNIRoll_Set \n";
    return "no set value specified" if($na < 2 || $na > 3);
    my $c = $UNIRoll_c2b{$a[1]}; # Wert des Kommandos: up stop down pos
    my $name = $a[0];            # Ger�tename
+   #print "UniRoll devicename $name";
+
+
+   
    $tm = 0 if(defined($c));     # optionaler Zeitwert
    if($na == 3) {
      $tm = $a[2];
*************** UNIRoll_Set($@)
*** 127,132 ****
--- 131,151 ----
    Log3 $name, 3, "UNIRoll set $v";
    (undef, $v) = split(" ", $v, 2);  # Not interested in the name...
 
+ # first check mode
+   my $ioDevName = $hash->{IODev}->{NAME};
+   my $ioDevMode = AttrVal($ioDevName,"rfmode",undef);
+   my $IhaveSwitchedMode = 0;
+
+   #print "My Device should be " . $ioDevName .  "\n";
+   #print "Mode is $ioDevMode \n";
+   
+   if ($ioDevMode ne "SlowRF") { # need to change
+     $IhaveSwitchedMode = 1; # flag
+     fhem("attr $ioDevName rfmode SlowRF");
+     Log3 $name,1, "switched to " . AttrVal($ioDevName,"rfmode",undef) . "\n";
+   }
+
+
  # CUL-Kommandos ermitteln und Sendestrings anpassen
    my $culcmds = $hash->{IODev}->{CMDS}; # BCFiAZEGMKURTVWXefmltux
    if(!defined($culcmds) || $culcmds !~ m/U/) {
*************** UNIRoll_Set($@)
*** 170,175 ****
--- 189,202 ----
      }
    }
 
+
+ # switch back
+   
+   if ($IhaveSwitchedMode) { # need to change back
+     fhem("attr $ioDevName rfmode $ioDevMode");
+     Log3 $name,1, "switched back to " . AttrVal($ioDevName,"rfmode",undef) . "\n";
+   }
+
    return $ret;
  }