das für mich überraschenste war jedoch dass ich nun mit meinem iPhone die Pro-Konsole zum Neustart „provozieren“ konnte!
Immer dann wenn ein Titelwechsel war wurde die Pro-Konsole getrennt und startete neu in der Starteinstellung. Wenn ich also im iPhone bewußt einen Titel springen wollte war das selber Verhalten zu beobachten… Das Verhalten war auch im Google-Chrome nachvollziehbar.
den Neustart haben wir tatsächlich auch schon entdeckt. Der kommt, wenn man in einen String Nicht-UTF-8-Zeichen schreibt. Das werden wir aber noch abfangen.
Der Zeilenumbruch bzw. die Verschiebung ist allerdings spannend. Kannst du den passenden Wert mal hier rein kopieren? Ggfs. ist es clever den vorher zu codieren, damit die Informationen über verschiedene Arten von Leerzeichen nicht verloren gehen, beispielsweise per PHP-Funktion bin2hex.
Da ich nicht weiß, wie fit du mit PHP bist, wäre das einmal folgendes PHP-Skript um den Wert der von dir im Screenshot dargestellten Variable mit der ID 31888 (ich hoffe ich lese das richtig) auszugeben:
Wie bindet man das Cover korrekt in ein Media-Objekt ein?
Ich habe im Modul ein Media-Objekt eingebunden.
Ich versuche es aktuell so zu füllen:
case $MainTopic."/ssnc/PICT": // Cover
IPS_SetMediaContent($this->GetIDForIdent("Cover_".$this->InstanceID), $Payload."jpg");
IPS_SendMediaEvent($this->GetIDForIdent("Cover_".$this->InstanceID));
break;
In der Beschreibung zu diesem MQTT-Wert steht:
PICT – the payload is a picture, either a JPEG or a PNG. Check the first few bytes to see which.
Wie erkenne ich aus den „first few bytes“ das Dateiformat? Muss ich noch eine Base64Codierung vornehmen?
Da ist aber etwas anderes noch nicht ganz in Ordnung…
Wenn ich über den MQTT-Konfigurator eine Instanz anlege sind die Daten im Verzeichnisbaum sichtbar (die Menge der Daten führt wohl zu der Verschiebung in der grafischen Darstellung), die Datei ist ja oben als txt hinterlegt.
In meinem Modul kommen diese aber nicht vollständig an - Payload ist leer…
Kann es an der Datenmenge liegen (anhand der txt-Datei würde ich sie mal auf um und bei 200kB schätzen)? Hat die Übertragung zum Modul irgendeine Größenbeschränkung?
Alle anderen Daten sehen so weit vollständig aus, nur beim Cover ist der Payload leer.
Von Shairport-Sync kommen die Daten ja auch im IP-Symcon an wenn ich ein einzelnes Device aus dem Konfigurator anlege…
Der Datenempfang aktuell ab Zeile 88, die Bildauswertung ab Zeile 140.
UTF-8 ist aktuell überall raus, hatte ich drin, wollte ausschließen das es daran liegt. debug_10371.txt (851,3 KB)
In der Debug-Datei mal nach „PICT“ suchen - keine Daten sichtbar. In der durch die Konfigurator erstellten Instanz sind aber Datei enthalten (siehe weiter oben).
Joachim
Nachtrag: Wenn ich die Instanz für „PICT“ aus dem Konfigurator heraus erstelle, dann kommt es zu der Situation die ich oben bereits beschrieben habe: Wenn für „PICT“ neue Daten kommen setzt sich die Prokonsole auf „Start“ zurück.
Möglicherweise wird daher das Payload aus dem Grund nicht an mein Modul geliefert?
…kann man zumindest eine Aussage treffen, ob meine Vermutung durchaus der Grund für das Fehlerbild sein könnte?
Die Daten des Covers kommen über die aus dem Konfigurator angelegten Instanz an aber nicht im Modul. Meine Vermutung ist ja die Payload-Größe von um und bei 200kB…
…wollte nur mal anfragen wie es in der Fragestellung weiter geht? Liegt der Fehler bei mir im Modul oder ist das ein Thema von IP-Symcon - hänge so jetzt etwas in der Luft…
Ich hatte das Thema zugegebenerweise nicht weiter verfolgt, da MQTT nicht wirklich mein Steckenpferd ist. Eine String-Variable mit einem großen Wert füttern funktioniert bei mir einwandfrei. Deine Ausgabe in Rohform funktioniert weiterhin nicht, da es kein UTF-8 ist, die codierte Version hat aber problemlos funktioniert.
Ich könnte dir anbieten, dass wir uns das mal per TeamViewer zusammen ansehen können. Aktuell wüsste ich, insbesondere mit der 6.2, von keinen Limitationen.
Dr.Niels schrieb ja, das die komische Darstellung daraus resultiert das das Cover kein UTF-8 ist, muss man vielleicht anders damit umgehen wenn das topic „/cover“ ist?
Also könnte es das Problem lösen wenn man zuerst auf das topic prüft und mit „/cover“ anders umgeht?
Leider hast du Niels Beitrag falsch verstanden.
Der Datenaustausch ist immer utf8 encodiert und somit ist dein decode schon korrekt.
Er meinte das Schreiben der Rohdaten in einer IPS-Variable, welches die Konsole zum Absturz bringt.
Der Code auf GitHub schaut so okay aus.
Wenn gar keine Daten vom cover im Debug landen, dann ist das Problem dich im oder vor dem Case?!
Michael
Der Payload ist da schon leer.
In der MQTT Server Device Instanz kommen die Daten aber an, sind also im IP-Symcon vorhanden, nur den Weg in mein Modul finden sie nicht, alle anderen aber schon…
Ist aber ja auch der Moment wo die Konsole abstürzt.