Aktuelles Datum und Uhrzeit als filename [rule]

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
wosch
Beiträge: 53
Registriert: 30. Dez 2020 08:36
Answers: 0

Aktuelles Datum und Uhrzeit als filename [rule]

Beitrag 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? :)

oh73
Beiträge: 302
Registriert: 7. Mär 2021 14:49
Answers: 1

Re: Aktuelles Datum und Uhrzeit als filename [rule]

Beitrag 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")
OH 4.3.0 auf HP 26o G1 Dm Mini Pc mit MX_Linux

wosch
Beiträge: 53
Registriert: 30. Dez 2020 08:36
Answers: 0

Re: Aktuelles Datum und Uhrzeit als filename [rule]

Beitrag von wosch »

Ein Traum, das klappt auf Anhieb! :)
Dankeschön!

oh73
Beiträge: 302
Registriert: 7. Mär 2021 14:49
Answers: 1

Re: Aktuelles Datum und Uhrzeit als filename [rule]

Beitrag 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!
OH 4.3.0 auf HP 26o G1 Dm Mini Pc mit MX_Linux

Antworten