Seite 1 von 2

[gelöst]CalDav: Formatierung NAMEANDTIME

Verfasst: 6. Mär 2019 20:55
von Tentazione
Moin zusammen,

wenn ich in meiner Items-Datei für die CalDav-Art NAMEANDTIME als Formatierung "Termin %s" eintrage...kommt in der basicUi "Blaue Tonne: xxx @ 3/13/19 12:00 AM - 3/14/19 12:00 AM" heraus. Ich hätte gerne eine Formatierung "Blaue Tonne @ 13.03.19". Wie bekomme ich das hin? *grübel*

Re: CalDav: Formatierung NAMEANDTIME

Verfasst: 6. Mär 2019 21:30
von madmike
Hallo Tentazione,

versuche mal anstatt %s das hier %1$td.%1$tm.%1$tY so habe ich mein Datum gefixt.
mfg
Madmike

Re: CalDav: Formatierung NAMEANDTIME

Verfasst: 6. Mär 2019 21:49
von udo1toni
Die Frage ist ja, was für eine Sorte Item Du hast. Wenn es DateTime ist, ist es leicht mit einer anderen Formatierung zu lösen, ich habe aber den Eindruck, dass es sich um ein String Item handelt.

Re: CalDav: Formatierung NAMEANDTIME

Verfasst: 7. Mär 2019 05:54
von Tentazione
@udo1toni: Dieser Eindruck täuscht Dich erstmal nicht. Allerdings würde ein DateTime ja wohl nur die Datums-/Zeit- Informationen aufnehmen?! Die Beschreibung...bzw. den Namen des Events hätte ich auch schon gerne in dieser Zeichenkette

Re: CalDav: Formatierung NAMEANDTIME

Verfasst: 7. Mär 2019 07:32
von udo1toni
Ich nutze das CalDav Binding nicht, weshalb ich hier nur Mutmaßungen äußern kann. Ich stelle es mir so vor, dass Du vier Items verwenden musst. Das erste Item ist DateTime und enthält den Start-Zeitpunkt, das zweite Item vom gleichen Typ enthält den End-Zeitpunkt. Das dritte Item vom Typ String enthält den Namen. Das vierte Item ist ein ungebundenes String Item. Mit einer Rule verknüpfst Du dann die ersten drei Items zu einer Zeichenkette, die Du in das vierte Item speicherst. Die Rule triggert, wenn sich eines der drei QuellItems ändert. Innerhalb der Rule kannst Du den Formatter genauso nutzen, wie im Label (im Sinne von: mit einem Format-String erzielbare Ausgabe)

Es kann auch sein, dass man an irgendeiner Stell konfigurieren kann, wie der kombinierte String aussehen soll, allerdings, wie gesagt, habe ich keine Ahnung von CalDav.

Re: CalDav: Formatierung NAMEANDTIME

Verfasst: 11. Mär 2019 20:24
von Tentazione
ich bastl da nun schon ganze Zeit rum... bekomme aber immer nur ne Fehlermeldung beim DateTime.

hab folgendes Item angelegt

Code: Alles auswählen

DateTime		CMuellStart  	"[%1$td.%1$tm.%1$tY]"						<calendar>	{caldavPersonal="calendar:Muell type:EVENT  eventNr:1 value:START"}
in einer Rule versuche ich das ganze zu formatieren...bekomme aber nur

Code: Alles auswählen

"An error occurred during the script execution: Could not invoke method: org.joda.time.base.AbstractDateTime.toString(java.lang.String) on instance: 2019-03-13T00:00:00.000+0100"
zugreifen tue ich so

Code: Alles auswählen

val DateTime cx=CMuellStart.state
logInfo("test",cx.toString("dd.MM.yyyy HH:mm"))

Re: CalDav: Formatierung NAMEANDTIME

Verfasst: 11. Mär 2019 20:58
von Tentazione
habs jetzt langsam #glaub

Code: Alles auswählen

import java.text.SimpleDateFormat

rule "Muell neu"
when
	Item anwesend changed
then
    val SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm")
    val SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS")
    val String cm=CMuellName.state.toString

    var Date cx = sdf1.parse(CMuellStart.state.toString)

    val String CMuellTest=cm.substring(0,cm.indexOf(":")) + " " + sdf.format(cx)
    logInfo("test",CMuellTest)
end
zerlegt mir schön die entsprechenden Items...

Code: Alles auswählen

String		CMuellName  	"Muellabfuhr [%s]"						<calendar>	{caldavPersonal="calendar:Muell type:EVENT  eventNr:1 value:NAME"}
String		CMuellStart  	"[%1$td.%1$tm.%1$tY]"						<calendar>	{caldavPersonal="calendar:Muell type:EVENT  eventNr:1 value:START"}
Allerdings wird der Wert nicht in der Sitemap angezeigt :cry:

Dort habe ich ein

Code: Alles auswählen

Frame label="xx" {
Default item=CMuellTest
}
definiert

Re: CalDav: Formatierung NAMEANDTIME

Verfasst: 11. Mär 2019 21:24
von Tentazione
wieder etwas weiter...und fast am Ziel ;-)
Items

Code: Alles auswählen

String		CMuellName  	"Muellabfuhr [%s]"						<calendar>	{caldavPersonal="calendar:Muell type:EVENT  eventNr:1 value:NAME"}
String		CMuellStart  	"[%1$td.%1$tm.%1$tY]"						<calendar>	{caldavPersonal="calendar:Muell type:EVENT  eventNr:1 value:START"}
String      CMuellTest      "[%s]"                                  <calendar>
Rule

Code: Alles auswählen

import java.text.SimpleDateFormat

rule "Muell neu"
when
	Item anwesend changed
then
    var SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy")
    var SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS")
    var String cm=CMuellName.state.toString

    var Date cx = sdf1.parse(CMuellStart.state.toString)

    CMuellTest.sendCommand(cm.substring(0,cm.indexOf(":")) + " " + sdf.format(cx))
end
sitemap

Code: Alles auswählen

Frame label="xx" {
Default item=CMuellTest
}
Log

Code: Alles auswählen

2019-03-11 21:20:06.023 [vent.ItemStateChangedEvent] - anwesend changed from ON to OFF

2019-03-11 21:20:06.450 [ome.event.ItemCommandEvent] - Item 'CMuellTest' received command Blaue Tonne 13.03.2019

2019-03-11 21:20:06.457 [vent.ItemStateChangedEvent] - CMuellTest changed from NULL to Blaue Tonne 13.03.2019
Das einzige was nun noch nicht geschieht...das die Sitemap sich aktualisiert. Wer kann da noch helfen??

Re: CalDav: Formatierung NAMEANDTIME

Verfasst: 11. Mär 2019 23:51
von udo1toni
Hast Du openHAB mal durchgestartet?

Re: CalDav: Formatierung NAMEANDTIME

Verfasst: 12. Mär 2019 06:55
von Tentazione
ah........ :-) Jupp...das wars. Danke