Seit längerer Zeit arbeite ich an einem Server/Client Projekt. Es gibt also ein Server und inzwischen mehrer Clients.
Die Clients Senden Information an den Server, der Server Verteilt sie an alle anderen Clients.
Ohne jetzt auf die Clients im einzelnen einzugehen, würde ich gerne das Format vom jetzigen Protokoll ändern.
Es gab schon Änderungen früher, aber nun möchte ich mir noch mal andere Ideen anschauen.
Im Moment sieht das Protokoll so aus:
Code: Alles auswählen
/Arbeitzimmer/Regal/BPI/MPD/Playing/600/stop
/Arbeitzimmer/EckeFenster/OnlyTemp/Draußen/Temperatur/250/9.50 *C
/Arbeitzimmer/EckeFenster/OnlyTemp/Dachboden/Temperatur/251/11.50 *C
/Arbeitzimmer/EckeFenster/OnlyTemp/Arbeitzimmer/Temperatur/252/19.00 *C
/Arbeitzimmer/Fenster/OnlyTempWindowStatus/status/2510/Fenster zu
/Schlafzimmer/Nachtregal/LCDModul1Temp/Temperatur/260/18.00 *C
/Schlafzimmer/Nachtregal/LCDModul1TempLuft/Luftfeuchtigkeit/2620/55.70 %
/Schlafzimmer/Nachtregal/LCDModul1TempLuft/Temperatur/2621/17.80 *C
/Arbeitzimmer/Schreibtisch/LCDModul3TempLuft/Luftfeuchtigkeit/280/53.0 %
/Arbeitzimmer/Schreibtisch/LCDModul3TempLuft/Temperatur/281/19.9 *C
/Arbeitzimmer/Schreibtisch/LCDModul3TempDruck/Luftdruck/2820/1004.01 hpa
/Arbeitzimmer/Schreibtisch/LCDModul3TempDruck/Temperatur/2821/20.29 *C
/Arbeitzimmer/Regal/BPI/SystemInfo/CurrTemp/551/36.2 *C
/Arbeitzimmer/Regal/BPI/SystemInfo/CurrCurrent/552/663 mA
/Arbeitzimmer/Regal/BPI/SystemInfo/CurrVoltage/553/4.991 V
/Arbeitzimmer/Regal/BPI/SystemInfo/upTime/555/34T 21:07
/Arbeitzimmer/Schreibtisch/AudioSwitch/VolumeTDA1/3521/60 db
/Arbeitzimmer/Schreibtisch/AudioSwitch/VolumeTDA2/3522/60 db
/Arbeitzimmer/Schreibtisch/AudioSwitch/BassTDA1/3531/3 db
/Arbeitzimmer/Schreibtisch/AudioSwitch/BassTDA2/3532/3 db
/Arbeitzimmer/Schreibtisch/AudioSwitch/TrebleTDA1/3541/3 db
/Arbeitzimmer/Schreibtisch/AudioSwitch/TrebleTDA2/3542/3 db
/Arbeitzimmer/Schreibtisch/AudioSwitch/Input/355/2
/Arbeitzimmer/Schreibtisch/AudioSwitch/Output/356/1
/Arbeitzimmer/Regal/BPI/MPD/SongLen/601/04:12
/Arbeitzimmer/Regal/BPI/MPD/SongPos/602/00:00
/Arbeitzimmer/Regal/BPI/MPD/PlayFile/603/Royalty_Free?Neu02?Baba Yaga.mp3
/Modul/pmpdApp/PlayPause
/Modul/pacAPP/Serial/35,CMD,OUT,1
/Arbeitzimmer/Regal/BPI/MPD/Title/604/Baba Yaga
/Arbeitzimmer/Regal/BPI/MPD/Artist/605/Kevin MacLeod
Probleme sind z.b. das der Separator natürlich auch in Pfad angeben vorkommt.
Außerdem kann ich die Zeilen nur von Hinten lesen, von hinten sind sie klar strukturiert von vorne nicht.
Ich möchte auch ein Zeitstempel haben.
Darum habe ich mir ein neues Format überlegt, was mir aber etwas übertrieben vorkommt:
Code: Alles auswählen
<Info TimeStep="..." Ort="/Arbeitzimmer/EckeFenster" Modul="OnlyTemp" Alias="Draußen" Property="Temperatur" Id="250" Value="9.50" Unit="*C">
<Info TimeStep="..." Ort="/Arbeitzimmer/Regal/" Modul="BPI" Client="MPD" Property="Playing" Id="600" Value="stop">
<Modul Target="pmpdApp" Value="PlayPause">
<Modul Target="pacAPP" Value="Serial/35,CMD,OUT,1">
Wie ihr sehen könnt, hätte es mehrer Vorteile:
1. Es gibt ein "Zeitstempel"
2. Man könnte beliebig viele Parameter hinzufügen, wenn nötig.
3. Die Parameter könnten, in einer Beliebigen Reihenfolge angeordnet werden.
und hier kann man sehr schön sehen, zwischen den Clients gibt es über den Server auch schon eine "Unterhaltung".
pmpdAPP ist ein Client für den MPD-Server.
pacAPP ist der Arduino Client, der unter anderem mein Audio Umschalter steuert, der an meinem PC hängt.
hätte also einige Vorteile, aber es gibt natürlich viel Overhead.
Wie würdet ihr vorgehen?