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
Dort habe ich ein
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
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