Hallo zusammen,
ein Gedanke, der mich schon länger umtreibt ist eine intelligente Warteschlange für FHT-Kommunikation. Hat sich schon mal jemand anderes darüber Gedanken gemacht oder vielleicht schon etwas implementiert? Gerne würde ich das Thema ein wenig erörtern und würde mich auch ggf. an der Entwicklung versuchen oder beteiligen.
Meine Vorstellungen laufen folgendermaßen:
Prinzip:
Da die FHZ nur einen recht kleinen Puffer hat und FHT-Kommunikation nur in kleinen Zeitfenstern abläuft, ist es sinnvoll solche Kommunikationsanforderungen zentral zu sammeln, zu priorisieren und jeweils kurz vor dem entsprechenden Kommunikationszeitfenster auf eine möglichst leere FHZ zu schieben, so daß sie mit hoher Wahrscheinlichkeit unmittelbar zur Ausführung kommt.
Priorisierung:
Die Warteschlange sollte zuerst in der Reihenfolge der folgenden Prioritäten, erst danach chronologisch (FIFO) abgearbeitet werden, so daß die zeitkritischeren Dinge nicht versehentlich ausgebremst werden:
[ol]
[li]Zieltemperatur oder Modus einstellen, Reset
[/li][li]Temperatur- oder Modusabfrage
[/li][li]Programmierung, Zeiteinstellung oder sonstige Abfragen
[/li][/ol]
Überholvorgang:
Wenn das nächste Sendefenster für eine FHT relativ weit in der Zukunft liegt, kann u.U. in der Zwischenzeit ein Befehl für eine andere FHT abgesetzt werden, der eigentlich weiter hinten in der Warteschlange steht. So könnte die Warteschlange vorzeitig reduziert werden und der höherpriore Befehl kann trotzdem zum für ihn frühestmöglichen Zeitpunkt abgesetzt werden!
Verteilung:
Es muß auch berücksichtigt werden, daß für die veschiedenen FHTs ggf. verschiedene FHZs zuständig sind. Ich würde eher dazu tendieren, eine einzige Warteschlange abzuarbeiten und pro Durchlauf die Befehle links liegen zu lassen, die sich an eine FHZ mit zu vollem Puffer richten, als für jede FHZ eine eigene Warteschlange zu verwalten. Das ist aber Geschmackssache.
Optimierung:
Durch Feineinstellung der Parameter
[ul]
[li]Wie lange vor dem beginn des Sendezeitfensters wird ein Befehl frühestens an die FHZ übergeben
[/li][li]Wie lange vor dem Ende des Sendezeitfensters wird ein Befehl spätestens an die FHZ übergeben
[/li][/ul]
wird es sicherlich möglich sein, die Kommunikation sehr weit zu optimieren um auch relativ große Datenmengen in relativ kurzer Zeit an den Mann (die FHT) zu bringen. Ich zitiere hier die Wochenprogramme für ca. 10 FHTs vor einem Feiertag. Evtl. müssen die Feineinstellungen Parameter für unterschiedliche FHZ-Szenarien berücksichtigen: Unterschiedliche FHZ-Modelle, Anbindung über USB, WLAN, USB-over-LAN/WLAN.
Verarbeitung:
Ein Durchlauf zur Abarbeitung der Warteschlange sollte in jedem Fall getriggert werden, wenn ein neuer Befehl bei ihr eintrifft.
Bei jedem durchlauf wird pro FHT für deren nächsten Befehl jeder FHT der früheste Zeitpunkt bestimmt, zu dem er (ausreichend leerer FHZ-Puffer vorausgesetzt) abgesetzt werden kann. Zur frühesten dieser ermittelten Zeiten muß ein erneuter Durchlauf erfolgen. Ist die Warteschlange leer, muss u. U. trotzdem periodisch eine Synchronisation mit den FHT-Sendezeitfenstern stattfinden, denn diese verschieben sich ja mit der Zeit leicht, wenn ich recht informiert bin.
Metainformationen:
Gerade für das Fine-Tuning werden bestimmte Statistik- und Analysefunktionen pro FHZ wichtig sein:
[ul]
[li]Wieviele Befehle befinden sich in der Warteschlange?
[/li][li]Was ist die durchschnittliche Verweildauer?
[/li][li]Wie lauten die nächsten Zeitfenster der angemeldeten FHTs? (Kollisionen?)
[/li][li]Wie häufig kann ein neuer Befehl sofort abgesetzt werden?
[/li][li]Wie häufig muß ein neuer Befehl aufgrund zu vollem Puffer warten?
[/li][li]Wie häufig muß ein neuer Befehl warten, weil er zu lange vor dem nächsten Zeitfenster eintraf?
[/li][/ul]
Vielen Dank an Spawn mit seinem Thread und Projekt eFHT Brick und an pshome und die anderen Teilnehmer für Ihre Beträge zum Thread FHT Uhrzeit setzen. Das sFHTs von Fredje muss ich mir noch genauer anschauen…
Was meint Ihr zu den Gedanken über die Warteschlange? Liege ich völlig daneben? Fehlen wichtige Punkte? Hat jemand sowas schon mal in Angriff genommen? Mag jemand mitmachen an Feinkonzept oder Umsetzung?
Grüßle,
moishe