IPS_SetMediaCached(0, false) legt kein Objekt an

Hallo zusammen,

ich möchte ein Medienobjekt Bild anlegen, wenn es an der Haustür klingelt. Sobald ich IPS_SetMediaCached(0, false) setze, wird kein Medienobjekt mehr angelegt. Bei true funktioniert es normal. Was mache ich da falsch? Ich würde die Dateien gerne bei einem Stromausfall nicht verlieren.

LG baba

Mit der Funktion legst du doch auch gar kein Objekt an. Du musst ein existierendes Objekt (nicht 0) verwenden.

Du steuerst damit, ob Änderungen immer direkt auf die Platte geschrieben werden oder nur im RAM und nur beim Herunterfahrenauf die Platte.

@Slummi das war nur ein Beispiel, hier ein größerer Auszug:

// create media file
$mediaVarID = IPS_CreateMedia(1);
IPS_SetParent($mediaVarID, $mediaCategoryVarID);
IPS_SetPosition($mediaVarID, time()*-1);
IPS_SetName($mediaVarID, strftime("%d.%m.%Y %H:%M:%S", time()));
IPS_SetMediaCached($mediaVarID, false);
IPS_SetMediaFile($mediaVarID, "media" . DIRECTORY_SEPARATOR . "image_" . time() . ".jpg", False);
if ($status == 200) {
    IPS_SetMediaContent($mediaVarID, base64_encode($response));
}

Dieser Code erstellt kein neues Objekt in der Kategorie. Mit IPS_SetMediaCached($mediaVarID, true); funktioniert es wie es soll.

Tritt das Problem auch auf, wenn du zuerst IPS_SetMediaFile und dann IPS_SetMediaCached ausführst?
Und/Oder wenn du IPS_SetMediaCached ganz weg lässt? Ich meine der Cache ist Default eh immer aus.
Außerdem liefern IPS_SetMediaFile und IPS_SetMediaCached Rückgabewerte ob der Befehl erfolgreich ausgeführt wurde. Die kannst du auch ausgeben lassen bzw. prüfen.

Michael

Sicher, dass dein $status nicht != 200 ist? MediaCached ist standardmäßig false, also kann der Befehl auch raus an dieser Stelle.

paresy

@parsey sollte die Datei nicht auch angelegt werden, wenn $status != 200? Aber ja ich bin mir da sicher, ich änder ja nur den Wert in IPS_SetMediaCached auf true und alles funktioniert.

@Nall-chan Wenn ich es ganz weg lasse oder es nach IPS_SetMediaFile ausführe, funktioniert es auch nicht. Rückgabewert ist bei IPS_SetMediaFile und IPS_SetMediaCached immer true

Symcon läuft in Docker mit nem Volume über Docker-Compose in einer VM über Proxmox auf einem ZFS Pool

Der Ordner hat (wegen Tippfehler) nicht existiert… Das hat echt viel Zeit gekostet :frowning: