Leider wieder das Thema MissingAck

Begonnen von Init, 21 August 2013, 21:44:14

Vorheriges Thema - Nächstes Thema

martinp876

wie du unten sehen kannst gibt es eine Pause vor jeden CUL_HM set von 600ms bis 2 sek. Evtl wird hier in strukt gearbeitet, keine Ahnung.
Da muss man ggf einmal nachsehen, was strukt so alles errechnet und ob auch dies meint warten zu müssen.

Probiere einfach einmal alle Rollos auf ein
set roll1 1;set rollo2;set....
also alle rollos auf einmal, ohne structure . Gibt eine ganz schöne last, mal sehen.

In strukt muss man getrennt suchen.

Gruss Martin

14:23:06.388  CUL_HM set LC_EG_1_NO_Rollo_Kueche 1
14:23:06.397  HMLAN_Send:  HMLAN1 S:SB04722DA stat:  00 t:00000000 d:01 r:B04722DA m:4C A011 123ABC 184F32 0301                        
14:23:06.402  Struct element
14:23:06.403  $dependencyDevice=0SC_EMA_PA7_tuerSeiteneingangAuf - Value=Value(0SC_EMA_PA7_tuerSeiteneingangAuf)                        
14:23:06.405  set $dependencyValue=66  
Pause 2 sek
14:23:08.411  CUL_HM set LC_EG_2_SO_Rollo_Kueche 66                                                                                    
14:23:08.417  HMLAN_Send:  HMLAN1 S:SB0472ABE stat:  00 t:00000000 d:01 r:B0472ABE m:4D A011 123ABC 184F1B 0301                        
14:23:08.422  Struct element
pause 600ms
14:23:09.020  CUL_HM set LC_EG_3_SO_Rollo_Esszimmer 1                                                                                  
14:23:09.025  HMLAN_Send:  HMLAN1 S:SB0472D1E stat:  00 t:00000000 d:01 r:B0472D1E m:4E A011 123ABC 215FA8 0301                        
14:23:09.078  Struct element
pause 600ms
14:23:09.734  CUL_HM set LC_EG_4_SW_Rollo_Esszimmer 1                                                                                  
14:23:09.754  HMLAN_Send:  HMLAN1 S:SB0472FF0 stat:  00 t:00000000 d:01 r:B0472FF0 m:4F A011 123ABC 215F90 0301                        
14:23:09.767  Struct element
14:23:09.778  $dependencyDevice=0SC_EMA_PA6_tuerTerasseAuf - Value=Value(0SC_EMA_PA6_tuerTerasseAuf)                                    
14:23:09.780  set other Value=1                                                                                                        
pause 600ms
14:23:10.368  CUL_HM set LC_EG_5_SW_Rollo_Wohnzimmer 1                                                                                  
14:23:10.396  HMLAN_Send:  HMLAN1 S:SB0473276 stat:  00 t:00000000 d:01 r:B0473276 m:50 A011 123ABC 193F4B 0301                        
14:23:10.406  Struct element
pause 900ms
14:23:11.330  CUL_HM set LC_EG_6_SW_Rollo_Wohnzimmer 1                                                                                  
pause 700ms
14:23:11.415  HMLAN_Send:  HMLAN1 S:SB0473649 stat:  00 t:00000000 d:01 r:B0473649 m:51 A011 123ABC 1941BE 0301                        
14:23:11.422  Struct element
14:23:11.423  $dependencyDevice=0SC_EMA_PA8_tuerGaesteAuf - Value=Value(0SC_EMA_PA8_tuerGaesteAuf)                                      
14:23:11.425  set other Value=1                                                                                                        
pause 800ms
14:23:12.222  CUL_HM set LC_EG_7_NW_Rollo_Gaestezimmer 1                                                                                

Init

Hallo Martin,

die Ausgabe "Struct" ist leider noch verwirrend. Der Text in der Ausgabe ist noch alt.

Habe ja extra alles umgebaut auf ein Array. Strukturen habe ich nicht mehr.

der code sieht in etwa so aus
my @Array = ("Rollo1","Rollo2")
for(@Array)
{
>>>> Prüfungen je Element für $_
danach je Prüfung in eine bestimmte postition fahren
}


ganz am ende schicke ich noch eine email

und alles ohne sleep. nur einmal über das Array iterieren und die set's absetzen.

Soll ich dir mal die "Methode" schicken?

VG
Marc

martinp876

ja, schicke sie einmal - schon aus neugier.

Die Email geht aber nicht je Rollo weg - oder? Email senden könnte schon diese Verzögerung verursachen.
Gruss Martin

Init

Hi Martin,

habe die cfg's und meine 99_myUtils.pm als pm zugeschickt.

Eine E-Mail verschicke ich nur am Ende der Methode oder wenn bei den Prüfungen eine Ausnahme auftritt. Z.B. wenn noch eine Tür auf ist und die Jalousie nur halb runtergefahren wurde.

Hoffe du findest etwas.

Vorab vielen Dank für deine Hilfe

Gruß
Marc

Init

Hi Martin,

bin gestern Abend wieder auf meinen rPI umgezogen.

Das System sieht laut logs jetzt deutlich schneller aus, aber immer noch 16 NACKs

Hab das Log ich wieder angehängt.

VG
Marc

martinp876

Hallo Marc,

nach meinem Dafürhalten sieht es relativ gut aus.
Meine Analyse:

Du startest 13 Rolladen quasi zeitgleich. Effektiv in 1,3sec.
Gesendet werden 2 messages je Rollo (stop und set) plus Wiederholungen.

Die erste und die 2. message überlappen zeitlich zwischen den Rollos.
2 Rollos kommen ohne jede Wiederholung aus
5 Rollos wiederholen die erste Message 1 mal
2 Rollos wiederholen die erste Message 2 mal
2 Rollos wiederholen die zweite Message 1 mal
1 Rollos wiederholt die zweite Message 1 mal

Und
1 Rollo scheitert beim 3. mal an der ersten message

In Summe haben wir immer noch ein Rollo, das nicht gefahren ist. Die anderen 16 missingACK halte ich für unschön aber unkritisch.

Im Gegensatz zum Beginn ist dies schon sehr nahe am Ziel.
- ich konnte die Anzahl der Wiederholungen auf 3 setzen (also 4mal senden) oder einstellbar machen (attr)
- im HMLAN kannst du msgParseDly ansehen. Das soll Auskunft darüber geben, wie 'langsam' dein FHEM ist. Sieht nicht so schlecht aus, aber einmal ist FHEM500ms hinten dran.  Was steht in der Variable?

Wenn ich 13 Rollos zeitgleich also relativ hohe Last ansehe...
wie ich die missing-ACKs noch verbessern kann ist nicht 100% klar.

Willst du einen Test mit 3 Wiederholungen machen?


Init

Hallo Martin,

danke für die Analyse.

In welchen Abständen schickst du die Wiederholungen? Wäre es denkbar 5 Wiederholungen einzubauen, aber dann mit steigenden Abständen?

Also quasi:
1. Wdh. nach 3 sek
2. Wdh. nach 5 sek der 1. Wdh.
3. Wdh. nach 10 sek der 2. Wdh.
4. Wdh. nach 20 sek der 3. Wdh.
5. Wdh. nach 30 sek der 4. Wdh.

Für mich wäre es schon wichtig, dass alle Jalousien immer fahren, da man sich ja im Urlaub oder bei sonstiger Abwesenheit darauf verlassen möchte.

Gibt es irgendwas, wie ich das letzte MissingAck abfangen kann? Damit ich nur beim letzten NACK mir eine E-Mail schicken kann?

Schicke dir gleich eine Auswertung von "set hm protoEvents".

VG
Marc

Hier die Auswertung von protoEvents:
protoEvents done:
    name                :protState              |protCmdPend            |protSnd                |protLastRcv            |protResndFail          |protResnd              |protNack              
    CUL_HM_threeStateSensor_19F43F: Info_Cleared           |-                      |-                      |-                      |-                      |-                      |-                  
    CUL_HM_threeStateSensor_19F525: Info_Cleared           |-                      |-                      |-                      |-                      |-                      |-                  
    LC_EG_1_NO_Rollo_Kueche: CMDs_done_events:2     |-                      |2:2013-08-27 07:57:55   |2013-08-27 07:58:02    |-                      |2:2013-08-27 07:57:55   |-                  
    LC_EG_2_SO_Rollo_Kueche: CMDs_done_events:2     |-                      |2:2013-08-27 07:57:52   |2013-08-27 07:58:22    |-                      |2:2013-08-27 07:57:54   |-                  
    LC_EG_3_SO_Rollo_Esszimmer: CMDs_done_events:2     |-                      |2:2013-08-27 07:57:55   |2013-08-27 07:58:25    |-                      |2:2013-08-27 07:57:55   |-                  
    LC_EG_4_SW_Rollo_Esszimmer: CMDs_done_events:2     |-                      |2:2013-08-27 07:57:54   |2013-08-27 07:58:25    |-                      |2:2013-08-27 07:57:54   |-                  
    LC_EG_5_SW_Rollo_Wohnzimmer: CMDs_done_events:2     |-                      |2:2013-08-27 07:57:59   |2013-08-27 07:58:41    |-                      |2:2013-08-27 07:57:59   |-                  
    LC_EG_6_SW_Rollo_Wohnzimmer: CMDs_done_events:3     |-                      |2:2013-08-27 07:57:54   |2013-08-27 07:58:30    |-                      |3:2013-08-27 07:57:59   |-                  
    LC_EG_7_NW_Rollo_Gaestezimmer: CMDs_done_events:3     |-                      |2:2013-08-27 07:58:02   |2013-08-27 07:58:32    |1:2013-08-27 07:57:59   |2:2013-08-27 07:57:54   |-                  
    LC_EG_8_NO_Rollo_Gaestebad: CMDs_done_events:2     |-                      |2:2013-08-27 07:57:58   |2013-08-27 07:58:28    |-                      |2:2013-08-27 07:57:56   |-                  
    LC_EG_9_NO_Rollo_Flur: CMDs_done_events:3     |-                      |2:2013-08-27 07:57:58   |2013-08-27 07:58:26    |1:2013-08-27 07:57:56   |2:2013-08-27 07:57:54   |-                  
    LC_OG_10_SO_Rollo_Maike: CMDs_done              |-                      |2:2013-08-27 07:57:52   |2013-08-27 07:57:59    |-                      |-                      |-                  
    LC_OG_11_SO_Rollo_Jacob: CMDs_done_events:2     |-                      |2:2013-08-27 07:57:52   |2013-08-27 07:58:12    |-                      |2:2013-08-27 07:57:54   |-                  
    LC_OG_12_NW_Rollo_Eltern: CMDs_done_events:1     |-                      |2:2013-08-27 07:57:52   |2013-08-27 07:58:14    |-                      |1:2013-08-27 07:57:51   |-                  
    LC_OG_13_NW_Rollo_Ankleide: CMDs_done_events:1     |-                      |2:2013-08-27 07:57:52   |2013-08-27 07:58:15    |-                      |1:2013-08-27 07:57:51   |-                  

Das Log hiervon ist im Anhang (fhemMissingAck9.log)

martinp876

hi,

5 wiederholungen sind möglich. Bei diesem Level werde ich aber ein Attribut einbauen. Mehr als 3 repeat(also 4 send) baue ich nicht fix ein.

eine gestaffelte Wiederholung baue ich auch nicht ein. Das macht keinen Sinn. wenn du 13 Aktoren startest und alle gleichzeitigloslegen gibt es Probleme. Wenn dann alle nach 3 sek wieder senden hast du das gleiche Problem. Also no-go

Vielmehr ist es ein Zufalls-abstand. Wenn etwas schief geht wird um 1-4 sec (raster 0.1sec) per zufallsgenerator verzögert. Das ist jetzt schon drin und leistet recht gute Dienste.

Bei deiner Staffel  habe ich auch einsprüche, die Zeiten sind nicht ok. Sollte es tatsächlich zur 5. Wiederholung kommen haben wir eine Verzögerung von 70sec. Wenn jemand das zusammen mit einem Taster nutzt rechnet er definitiv nicht mehr mit einer Reaktion. Das kann man nicht generell machen.

Das mit der Verlässlichkeit ist auf meiner Priolist immer GANZ oben. Dennoch kann es FHEM nicht garantieren. Nur ein Beispiel:Ist der Aktor defekt muss irgendwann Schluss sein.

Kommt also die Frage der Benachrichtigung.
Aktuell sind protokoll-events nicht mit Trigger verbunden und lösen keinen Event aus.
FHEM hat keine Alarm-strategie (so wie ich es verstehe)

Lösung 1a)
Du kannst also einen zyklischen Job aufsetzen, der nach Fehlern sucht.

Lösung 1b)
du setzt eine zyklischen Job auf, der HMInfo update zyklisch macht und du suchst nach fehler in HMInfo

Lösung 2)
ich erweitere HMInfo zum Alarm-system aus.
Könnte so aussehen:
- User definiert eine wiederholzeit, in der HMInfo einen update macht. Zeit in Minuten, vorschlag ist 5min default
- Errors zeigt HMInfo jetzt schon an bei rssi_Critical, protocoll-errors
- User kann (jetzt schon) definieren, welche Readings ERRROS sind
- Wie bei allen anderen readings kann sich der User ein Event generieren, wenn es eine Änderung des Status gibt.

Nachteil von Lösung 2:
- du hast eine Verzögerung von x min. Aber für ein remote-User interface halte ich dies für ok
- du bekommst ein Event und ein paar details zum Fehler. Was genau du in die email schreibst entscheidest du selbst. Wenn du zugang hast, suchst du den Fehler und die Detail.

Interessiert? War die Richtung der Erklärung verständlich

Gruss Martin


Init

Hi,

das mit der Staffel war ja auch erstmal nur eine Idee, da bei mir ja immer mal wieder eine Jalousie nicht fährt und mit einer längeren Verzögerung evtl. doch.

Generell fände ich es super, wenn du ein attr einbaust, indem die user die repeats einstellen können.

Lösung 2 fände ich super und mit der Verzögerung könnte ich auch leben.

Lösung 1a hatte ich bereits vorbereitet, damit ich nur noch im Notfall eine Email bekomme.

VG
Marc

martinp876

Hi,

mit Version 3804 kannst du msgRepeat setzen (siehe auch Commandref)

Gruss Martin

Init

Danke!

Werde heute Abend ein update von der Umgebung machen.

Gruß
Marc

caldir65

Hallo Init,

ist das Problem jetzt bei Dir komplett beseitigt? Bei mir ist es jetzt nämlich ebenso - seit einem Austausch habe ich auch das Problem, daß die Ersatzaktoren genauso unzuverlässig sind, wie Du es eingangs geschildert hast...

Gruß
Alte Techniker-Regel: "kaum macht man es richtig, funktioniert es auch"
------
Dell Wyse5070 ThinClient 16GBRam, 128GB SSD, Lubuntu 24.04.01LTS, fhem (aktuell), debmatic, Homematic-Devs, ConBee II und deConz, viele Shellys, Rademacher, NextCloud-Anbindung, FullyKioskBrowser+FUIP uvm.

martinp876

zur Info,

ich habe in einem Zimmer 4 rollo-aktoren. Einer hatte immer wieder einmal Probleme.

Ich habe die RSSI werte angesehen, schwanken und gehen manchmal so auf -85. Andere devices waren schlechter.
dennoch habe ich einen Repeater eingesetzt, selektiv nur für diesen Aktor.
Jetzt ist der RSSI wert (min) auf  -75 - und es klappt alles.

Also wenn ihr gelegentlich Probleme habt, schaut einmal die RSSI werte an.
Es gibt - wie das Beispiel anschaulich zeigt, keinen absoluten Wert, der Gültig ist.


Gruss Martin

mele

Zitat von: Init am 24 August 2013, 14:31:18
Hi Martin,

danke für die Antwort!

Ich verstehe es echt nicht mehr :-(

Habe jetzt folgende Änderungen vorgenommen:

1) ALLE sleeps ausgebaut
2) Von 11 auf 4 notify abgespeckt
3) 7 structuren für die Jalousien entfernt

Trotzdem immer noch diese Verzögerung und 12 MissingAck

Aktuelles Log im Anhang.

Bin echt ratlos, keine Ahnung was ich noch abspecken soll, damit die Probleme weg sind

Hast du oder jemand anders noch eine Idee?

VG
Marc

Hallo Init,

ich habe leider die gleichen Probleme. Hast Du Deine in den Griff bekommen?

VG
Manuel
FHEM auf NUC/Proxmox (Rpi 2 / Rpi Zero W mit FHEM2FHEM, RFHEM)
Homematic/LaCrosse/PCA301/Shelly, Rollladen, Batterieaktor + Relais zur Schaltung Garagentor (Promatic 2), Xiaomi FlowerSens, Bewässerungssteuerung Garten und Gewächshaus, Weatherman und Landroid

martinp876

könnt ihr das noch einmal zusammenstellen:
- welche devices habe missing-ack?
- wie häufig tritt es auf? immer,meistens,oft oder manchmal?
- roh-messages aufzeichnen

das ist das beste, was ich anbieten kann.