Seite 1 von 1

Aktuelles Datum und Uhrzeit als filename [rule]

Verfasst: 12. Dez 2021 17:26
von wosch
Hallo zusammen,

ich habe vermutlich ein simples Problem, ich bekomme es aber nicht hin :(

Ausgehend von der rule:

Code: Alles auswählen

rule "Create front door camera GIF when front doorbell button pushed"
when
    Item FrontDoorbellButton changed to ON
then
    //Start creating the GIF
    getActions("ipcamera1", "ipcamera:dahua:DoorCam").recordGIF("ipcamera2",5)
    //Cast a doorbell sound using the Chromecast binding.
    KitchenHomeHubPlayURI.sendCommand("http://192.168.1.8:8080/static/doorbell.mp3")
end
bzw. diesem Befehl hier:

Code: Alles auswählen

    getActions("ipcamera1", "ipcamera:dahua:DoorCam").recordGIF("ipcamera2",5)
wird ein 5sec langes GIF-file mit dem Dateinamen

Code: Alles auswählen

ipcamera2.gif
erzeugt und logischerweise bei jedem neuem Durchlauf der rule überschrieben.

Daher würde ich gerne statt einem festen Namen (hier: ipcamera2) das aktuelle Datum mit Uhrzeit verwenden. Allerdings klappen meine Versuche, die bei logs funktionieren nicht.
Beispiel log-Eintrag:

Code: Alles auswählen

logInfo("XYZ", "Item: {}, myItem)
Kann mir jemand auf die Sprünge helfen? :)

Re: Aktuelles Datum und Uhrzeit als filename [rule]

Verfasst: 12. Dez 2021 17:40
von oh73
hab hier ein Schnipsel wie du die aktuelle Zeit abrufen, Formatiren und in die Variable strzeit speichern kannst.

musst du nur noch ipcamera2 mit der Variable ersetzen.

Code: Alles auswählen

var datetime = new DateTimeType()
	val String strzeit = datetime.format("%1$td.%1$tm.%1$ty_@_%1$tH:%1$tM")

Re: Aktuelles Datum und Uhrzeit als filename [rule]

Verfasst: 12. Dez 2021 18:12
von wosch
Ein Traum, das klappt auf Anhieb! :)
Dankeschön!

Re: Aktuelles Datum und Uhrzeit als filename [rule]

Verfasst: 12. Dez 2021 18:39
von oh73
schön wenn es schon funktioniert.

ich hatte vor einiger Zeit mal so was ähnliches in einer Rule gebastelt,
da hab ich aber die Zeit noch von Hand auseinander genommen und nach meinem Wunsch zusammen gesetzt!

ich wollte aber bewusst nicht das Datum im Dateinamen, da waren mir zu viele Daten,
deshalb hab ich insgesamt nur 5 Bilder gespeichtert.
bei jeder Bewegung eins und vor dem speichern immer mit eine Shell Bash Script die Bilder verschoben.
Bild 4 zu Bild 5,
Bild 3 zu Bild 4,
Bild 2 zu Bild 3
Bild 2 zu Bild 2
und Bild zu Bild 1 !
und dann wurde Bild neu geschrieben.
die 5 Bilder und das passende Datum hab ich in Items gespeichert und kann sie im Habpanel ansehen.

Code: Alles auswählen

var Timer aussenlicht = null

rule "Bewegungsmelde und Zeitschalter aussen "
when 
	Item bwm_aussen2 changed to ON or
	Item TestImageSwitch changed 								// nur zum testen !
then
	executeCommandLine("/etc/openhab/scripts/kopieren.sh")
    Thread::sleep(500)

	var datetime = new DateTimeType()
	var Jahr = datetime.toString.split('-').get(0)
	var Monat = datetime.toString.split('-').get(1)
	var Taghilfe = datetime.toString.split('-').get(2)
	var Tag = Taghilfe.substring(0,2)
	var Uhr = datetime.toString.split('T').get(1)
	var Uhrzeit = Uhr.substring(0,8)
	Uhrzeit = Uhrzeit.replace(':','-')
	 
    val url = "http://192.168.178.243/snapshot.jpg?user=xxxx&pwd=xxxxxxxx"
	val aufnahmezeit = Monat+Tag+"_"+Uhrzeit
	val outputfile = "/etc/openhab/html/bild1.jpg"					// für Version 1 !
	//val outputfile = "/etc/openhab/html/bild-"+aufnahmezeit+".jpg"  // bei Version 2 !
	Bild5.postUpdate(Bild4.state)
	Bild4.postUpdate(Bild3.state)
	Bild3.postUpdate(Bild2.state)
	Bild2.postUpdate(Bild1.state)
	Bild1.postUpdate(aufnahmezeit)
	//Bild1.postUpdate("/static/bild-"+aufnahmezeit+".jpg")			// Versuch, geht auch, muss dann aber im Habpanel angepasst werden !
	
	executeCommandLine(Duration.ofMillis(5000), "wget", "-O", outputfile, url) // bei oH3
	//logInfo("FILE", "Kamera Bild File = "+outputfile+cmd)
    Thread::sleep(500)

	// Bwm_Tuya_aussen (Bwegung aussen hilfsschalter) bekommt Impuls von Thing Bewegungsmelder aussen 
	
	if (bwm_aussen2.state==ON) {
		
		var Uhrzeit = Uhr.substring(0,8)
		var Zeit = Tag+"/"+Monat+"/"+Jahr+" @ "+Uhrzeit
		// logInfo("Status = ","Uhrzei von bwm_aussen (letzte Bewegung), Daylight OFF = "+Uhrzeit)
		BWMA_Zeit.postUpdate(Zeit)
		
		http_FS20_1.sendCommand(ON)
		sendHttpGetRequest("http://192.168.178.19/msh/Bewegungsmelder_aussen.php?bw=fs20_4_an", 15000)
		
        //logInfo("FILE", "Setting to ON and creating timer")
        aussenlicht = createTimer(now.plusMinutes(1), [|
			http_FS20_1.sendCommand(OFF)
			sendHttpGetRequest("http://192.168.178.19/msh/Bewegungsmelder_aussen.php?bw=fs20_4_aus", 15000)
            aussenlicht = null
        ])
    } 

end
ist auch nicht alles auf meinem Mist gewachsen, hab ich mir fast alles im Internet zusammen gesucht!