FTS14KS und F4SR14-LED Rückmeldungs-Probleme unter Windows 8.1

Begonnen von max78, 18 Mai 2016, 17:22:05

Vorheriges Thema - Nächstes Thema

max78

Hallo,

ich bin neu in dem Form und habe durch einige tolle Beträge schon ein eine kleine Sample-Steuerung mit Timer und Doppelklick geschafft.
(auch wenn der Anfang ganz schön hart war)

Jetzt zu meinem Problem:
Habe zum Testen nur FTS14KS (FAM14 ohne Funk) und F4SR14-LED (kann mehr Strom als FSR14-4x sonst vergleichbar) verbunden und über das Webinterface schaltbar gemacht. Den F4SR14-LED als gateway subtypeset switch konfiguriert.

Leider kommen von 10 Schaltvorgängen 1-2 nicht beim Aktor an (wenn ich die Aktoren direkt Schalte funktioniert es wunderbar)
Hab auch schon über so ein Phänomen beim FAM14 im Forum gelesen. Gibt es dazu eine Abhilfe?
Ist aber nicht so tragisch. Kann man sicher mit einer Schleife über die Rückmeldung korrigieren.

Leider tritt meistens wenn der Schaltvorgang nicht erkannt wird das eigentlich Problem auf:
Es kommen keine Rückmeldungen mehr zu FHEM. Ich kann weiter schalten, es schaut auch alles gut aus. Aber (externe) Rückmeldungen bekomme ich nicht mehr.

Im Logfile sieht man leider keine Fehlermeldung. Es ist nur zu erkennen das ab diesem Zeitpunkt überhaupt keine Rückmeldungen vom FTS14KS empfangen werden (bis zu einem Neustart). Die LED am FTS14KS blinkt aber weiter. -> sollte daher noch Rückmeldungen senden.
Dieses Problem tritt jedoch nur am Rechner unter Win8.1 (ActivPerl 5.22.1 und FHEM 5.7) Habe noch nicht auf einem weiteren PC getestet.
Am Raspberry rennt alles ohne dieses Probleme (fehlende Rückmeldung). Zum Testen ist es wegen der Geschwindigkeit aber sehr unpraktisch.

Hoffentlich kennt jemand eine Lösung dazu?
Könnte es eine Kollision zwischen Senden und Empfangen sein die FHEM aus dem tritt bringt?

Mit freundlichen Grüßen, Markus

Norberto


Hallo Markus,

Verstehe ich richtig dass Du über USB mit dem FTS14KS verbunden bist und darüber mit dem Eltako RS485 Bus kommunizierst?

Achtung: nach meiner Erfahrung und Wissensstand kann man über einen FAM14 nicht _stabil_ mit dem Bus kommunizieren. Es braucht ein FGW14. Es kommt über den FAM14 zu den von Dir beschriebenen Kommunikationsaussetzern. Ich nehme an dass dies bei dem FTS14KS genauso ist.

Gruß, Norberto

max78

Hallo Norberto,

Danke für die Antwort.
ich kommuniziere direkt über USB mit dem FTS14KS. Schade muss dann vermutlich noch ein Gateway kaufen.
Ich befürchte es behebt aber nicht Kommunikationsprobleme unter Win8.1. Da der FTS14KS noch sendet aber FHEM nichts mehr empfängt.

Das Manche Pakete nicht gesendet werden könnte man mit dem observe Befehl beheben.

Gibt es eine Möglichkeit nur die Rückmeldung vom Aktor als Zustand beim device oder bei einer structure anzuzeigen? (normalerweise zeigt er auch einen geänderten Zustand wenn der virtuelle Schalter gedrückt wird aber nichts schaltet)
Mit clientstate_behavior und priority habe ich es nicht geschafft nur den Zustand eines definierten devices anzuzeigen.


Mfg, Markus

Norberto

Hallo Markus,

Ohne stabile Verbindung mit dem Bus wirst Du nicht glücklich werden. Ich würde erst Mal ein FGW14 einbauen und dann schauen welche Probleme noch übrig sind.

Gruß, Norbert

max78

Hallo,

habe das Problem mit dem Abbruch der Rückmeldungen gelöst :-)

Im Modul 00_TCM.pm werden leider keine Errorflags abgefragt.
Habe jetzt sowohl in den Sende als auch den Empfangszweig eine Abfrage eingebaut.
Damit sollte der der FTS14KS und FAM14 viel besser funktionieren. Und vermutlich auch Abstürze mit dem USB-Gateway behoben sein.

Habe am Schluß des Write und Read Befehls diese Codezeilen eingefügt, dann bricht er nicht bei einem Errorflag ab.
(es gibt sicher eine elegantere Lösung....)

  my $po = $hash->{USBDev};
  my ($BlockingFlags, $InBytes, $OutBytes, $ErrorFlags) = $po->status;
  my $ClearedErrorFlags = $po->reset_error;

Weiters wollte ich auch noch wenn ein Errorflag auftritt den Befehl nochmals senden, die Funktion funktioniert aber noch nicht so richtig:
if ($ErrorFlags)
{  usleep(int(AttrVal($name, "sendInterval", 100)) * 5000);
   Log3 $name, 4, "rewrite";
   Log3 $name, 4, $bstring;
   DevIo_SimpleWrite($hash, $bstring, 1);
   # next commands will be sent with a delay
   usleep(int(AttrVal($name, "sendInterval", 100)) * 1000);
   my $po = $hash->{USBDev};
   my ($BlockingFlags, $InBytes, $OutBytes, $ErrorFlags) = $po->status;
   my $ClearedErrorFlags = $po->reset_error;
   if ($ErrorFlags) { Log3 $name, 4, "erneuter Fehler";}
  }


Gibt es eine elegante Möglichkeit den Hardware-Timer des Relay Moduls über FHEM zu umgehen?
(Treppenlichtschaltung über Eltako und normaler ein aus über FHEM bzw. dort kann man sowieso viel mehr, nur ist es blöd wenn dann z.b. alle 5 Minuten hardwaremässig ausgeschaltet wird)
Über einen Fensterkontakt funktioniert es, ist aber sicher nicht die eleganteste Variante. Da man dann mit open und close steuern muss.
Möglicherweise über Schaltzustand von GFVS?


Mfg, Markus