Using Image Item as attachment

Further reducing the load on the openhab server, I’ve changed above code to just plain write the base64 decoded image to disk without resizing it:

import javax.xml.bind.DatatypeConverter
import java.io.File
import java.io.FileOutputStream
import java.io.OutputStream

rule "SavePicture"
when
  Item imgLastGong changed or
  Item Frontdoor_state changed to OPEN
then
  logDebug("Imagerule", triggeringItem.name)
  var String CameraImage = triggeringItem.state.toFullString //Convert image item to base64 encoded string

  val String Image64 = CameraImage.split(",").get(1) //Slice the string up to the delimiter ","
  var byte[] data = DatatypeConverter.parseBase64Binary(Image64)

  try {
    var OutputStream os

    val time = new DateTime().millisOfDay().getMillis()
    var File f = new File("/etc/openhab2/html/" + triggeringItem.name + "_" + time + ".jpg")
    os = new FileOutputStream(f)
    os.write(data);

    os.close();
  } catch (IOException e) {
    e.printStackTrace();
  }
end
2 Likes