Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
wenn ich das "E" mit in die Datumsausgabe eingebe, bekomme ich einen Wochentag aber in English. Wo stellt man die benutze Sprache eine?
Danke
Jan
Im Betriebssystem. Wahlweise kannst Du, wenn ich mich recht erinnere, auf der Kommandozeile einen Parameter mitgeben.
Bei Linux setzt Du für den User, der openHAB startet die Locales auf de_DE.UTF8. Falls das der angemeldete User ist, nach dem Setzen der Locales einmal abmelden und wieder anmelden, damit die Locales in der aktuellen Bash gelten.
Hallo,
vielen Dank an Hannibal29 für die gute Anleitung. Ich habe es bei mir nun genau so umgesetzt. Eine kleine Anmerkung für diejenigen die openHAB auf OSX laufen haben: Das "date" Kommando zur Umformatierung des Datums in Sekunden musste ich auf dem Mac folgendermaßen ändern:
Hallo ihr lieben ich bin auch schon seit einiger Zeit auf der Suche nach solch einem Script.
Nun meine Frage dazu muss ich für jede Tonne einen solchen Eintrag in der trash.sh
Code:
#!/bin/bash
#Aktuelles Datum einlesen (inkl. Uhrzeit)
datum=$(date +%s)
#Müllart aus 1. Argument einlesen
trash_kind=$1
#entsprechend der gewählten Müllart die zu durchsuchende Datei festlegen
trash_file="/opt/openhab/shellscripts/trash_$trash_kind.txt"
#Schleife, die die Textdatei zeilenweise durchläuft, und beim 1. größeren Datum abbricht und dieses ausgibt
#eingelesenes Datum ohne Zeit ist immer 00:00:00h
#86399sec = 23:59:59h -> somit wird der aktuelle Tag mitgezählt
while read datum_line
do
datum_line_sec=$(date -d $datum_line +%s)
let datum_diff=$datum-$datum_line_sec
if [ $datum_diff -lt 86399 ]
then
echo $datum_line
exit 0
fi
done < $trash_file
echo "Error"
exit 1;
Danke für eure Hilfe.
Nachtrag: Das habe ich hinbekommen jedoch wird mir auf meiner Openhab Seite nicht angezeigt desweiterten bekomme ich follgenden Fehler im Log.
Text label="Muellabfuhr" icon="Trash_Brown" {
Frame label="Naechste Termine" {
Text item=NTP_Datum_Uhrzeit label="Datum [%1$td.%1$tm.%1$tY]" icon="calendar"
Text item=TrashRest icon="Trash_Brown" valuecolor=["heute"="red","morgen"="orange"]
Text item=TrashGelb icon="Trash_Yellow" valuecolor=["heute"="red","morgen"="orange"]
Text item=TrashBio icon="Trash_Green" valuecolor=["heute"="red","morgen"="orange"]
Text item=TrashBlau icon="Trash_Blue" valuecolor=["heute"="red","morgen"="orange"]
Text item=TrashSperr icon="Trash_Sperr" valuecolor=["heute"="red","morgen"="orange"]
}
}
Der Fehler kommt vom NTP-Binding.
Für die Anzeige des aktuellen Datums wird in der Sitemap des Item NTP_Datum_Uhrzeit genutzt. Diese Item muss in der *.items Datei angelegt werden und dazu muss auch das entsprechende Binding installiert sein.
und in der openhab.cfg (und vorher das Binding in den addons Ordner kopieren falls noch ncith vorhanden)
Code:
################################ NTP Binding ##########################################
#
# refresh interval in milliseconds (optional, defaults to 900000 [15 minutes])
ntp:refresh=10000
# the hostname of the timeserver
ntp:hostname=0.de.pool.ntp.org
Alternativ einfach den Sitemap-Eintrag löschen, wenn du das aktuellen Datum in der Anzeige nicht brauchst. Für die Funktion des Skripts ist es nicht nötig.
[runtime.busevents ] - Exec_TrashRest state updated to 2016-01-11
2016-01-02 19:11:41.616 [INFO ] [runtime.busevents ] - Exec_TrashGelb state updated to 2016-01-12
2016-01-02 19:11:41.668 [INFO ] [runtime.busevents ] - Exec_TrashBio state updated to 2016-01-05
2016-01-02 19:11:41.719 [INFO ] [runtime.busevents ] - Exec_TrashSperr state updated to 2016-02-16
2016-01-02 19:11:41.774 [INFO ] [runtime.busevents ] - Exec_TrashBlau state updated to 2016-01-28
Genau, d.h. das Shellskript arbeitet schonmal korrekt. Auch deine Items sehen ok aus. Was ich vermisse ist die Rule, die aus den Shellskriptwerten (EXEC_TrashGelb) die Anzeige für die Sitemap berechnet (TrashGelb)
rule "Calculate trash dates"
//aus Exec-Input Anzeige für Mülltermine berechnen
when
Time cron "0 0 1 * * ?"
then
var DateTime date_gelb
var DateTime date_now
var String trash_gelb
if (date_now.equals(date_yellow)) { trash_gelb="heute" }
else if (date_now.equals(date_yellow.minusDays(1))) { trash_gelb="morgen" }
else if (date_now.equals(date_yellow.minusDays(2))) { trash_gelb="übermorgen" }
else { trash_gelb=date_yellow.toString("E dd.MM.yyyy") }
TrashGelb.postUpdate(""+trash_gelb)
end
rule "Calculate trash dates"
//aus Exec-Input Anzeige für Mülltermine berechnen
when
Time cron "0 0 1 * * ?"
then
var DateTime date_blau
var DateTime date_now
var String trash_blau
if (date_now.equals(date_yellow)) { trash_blau="heute" }
else if (date_now.equals(date_yellow.minusDays(1))) { trash_blau="morgen" }
else if (date_now.equals(date_yellow.minusDays(2))) { trash_blau="übermorgen" }
else { trash_gelb=date_yellow.toString("E dd.MM.yyyy") }
TrashBlau.postUpdate(""+trash_blau)
end
rule "Calculate trash dates"
//aus Exec-Input Anzeige für Mülltermine berechnen
when
Time cron "0 0 1 * * ?"
then
var DateTime date_bio
var DateTime date_now
var String trash_bio
if (date_now.equals(date_yellow)) { trash_bio="heute" }
else if (date_now.equals(date_yellow.minusDays(1))) { trash_bio="morgen" }
else if (date_now.equals(date_yellow.minusDays(2))) { trash_bio="übermorgen" }
else { trash_gelb=date_yellow.toString("E dd.MM.yyyy") }
TrashBio.postUpdate(""+trash_bio)
end
rule "Calculate trash dates"
//aus Exec-Input Anzeige für Mülltermine berechnen
when
Time cron "0 0 1 * * ?"
then
var DateTime date_rest
var DateTime date_now
var String trash_rest
if (date_now.equals(date_yellow)) { trash_rest="heute" }
else if (date_now.equals(date_yellow.minusDays(1))) { trash_rest="morgen" }
else if (date_now.equals(date_yellow.minusDays(2))) { trash_rest="übermorgen" }
else { trash_gelb=date_yellow.toString("E dd.MM.yyyy") }
TrashRest.postUpdate(""+trash_rest)
end
rule "Calculate trash dates"
//aus Exec-Input Anzeige für Mülltermine berechnen
when
Time cron "0 0 1 * * ?"
then
var DateTime date_sperr
var DateTime date_now
var String trash_sperr
Ok, also 2 Dinge würden mir auf den ersten Blick zur Rule einfallen:
1) mehrere rules mit dem gleichen Namen. Keine Ahnung ob das funktioniert. Habe ich noch nie probiert. Zur Sicherheit würde ich die Namen eindeutig machen oder einfach alles in eine rule packen (so hab ich es).
2) Der Cron-Trigger in den Rules führt das ganze nur 1x Tag um 1Uhr Nachts aus. Hast du Openhab über Nacht laufen gehabt? Ansonsten ist es logisch dass auf der Sitemap noch keine Werte erschienen weil die Rule noch nicht ausgeführt wurde. Zum Testen einfach mal einen anderen Trigger setzen (z.B. jede Minute oder per manuellem Taster etc)
Erstmal Danke für die erneute schnelle Rückmeldung. Das mit dem Datum läuft nun. Ich habe auch mal die Rule angepasst und nur auf eine Tonne angewendet aber ich bekomme noch immer nix angezeigt hier nochmal die Rule ich hoffe das ich die Cron Time richtig gesetzt habe. Es sollte eine Minute sein. Da ich den Openhab in einer VM habe kann ich immer wieder neustarten somit müsste die Rule dann ja auch gelesen werden.
Code:
import org.openhab.core.library.types.*
import org.openhab.core.persistence.*
import org.openhab.model.script.actions.*
import org.joda.time.*
rule "Calculate trash dates"
//aus Exec-Input Anzeige für Mülltermine berechnen
when
Time cron "0 /1 * * * ?"
then
var DateTime date_gelb
var DateTime date_now
var String trash_gelb
date_yellow = parse(""+Exec_TrashGelb.state)
date_now = parse(""+now.getYear+"-"+now.getMonthOfYear+"-"+now.getDayOfMonth)
if (date_now.equals(date_yellow)) { trash_gelb="heute" }
else if (date_now.equals(date_yellow.minusDays(1))) { trash_gelb="morgen" }
else if (date_now.equals(date_yellow.minusDays(2))) { trash_gelb="übermorgen" }
else { trash_gelb=date_yellow.toString("E dd.MM.yyyy") }
TrashGelb.postUpdate(""+trash_gelb)
end
Wird die Rule denn ausgeführt? Oder steht im Log etwas von Fehlern beim Ausführen?
Ich lasse zum Debuggen gerne auch von der Rule noch Statusmeldungen ins log schreiben. Damit kann man etwas eingrenzen woran es liegt.
Versuch mal folgende logInfos in der Rule zu ergänzen und schau in die Logfiles
Code:
...
then
logInfo("FILE", "Rule 'Calculate trash dates' started")
...
logInfo("FILE", "Rule 'Calculate trash dates' completed")
end
So ich habe den Fehler gefunden. Es lag daran das ich in der Rule einge Einträge nicht umbenannt hatte von date_yellow in dat_gelb.
Das habe ich nun hin bekommen, doch wie kann ich die nun zusammenfassen in eine Rule damit nicht wie du meinst mehrere gleich Rules sind.
Danke an Hanibal29 nun läuft alles denke ich wie es soll.
Eine Frage habe ich aber noch unzwar werden bei mir die Umlaute falsch angezeigt ich habe geprüft welche locale bei mir drauf ist es ist die de_DE.UTF-8 soweit mir bekannt ist müsste diese doch Umlaute anzeigen können oder?
Eine Frage habe ich aber noch und zwar werden bei mir die Umlaute falsch angezeigt ich habe geprüft welche locale bei mir drauf ist es ist die de_DE.UTF-8 soweit mir bekannt ist müsste diese doch Umlaute anzeigen können oder?
An welcher Stelle werden die Umlaute falsch angezeigt?
Wenn Du Dich z.B. per putty anmeldest und mit locale die Ausgabe LANGUAGE=de_DE.UTF8 [...] erhältst, heißt das ja erstmal nur, dass die Bash auf diesen Zeichensatz eingestellt ist. Wenn dann bei Ausgaben in putty falsche Zeichen dargestellt werden, ist vermutlich in putty der falsche Zeichensatz eingestellt, der muss mit der Ausgabe von locale korrelieren.
Weiterhin muss diese Ausgabe natürlich für den User gelten, unter dem openHAB läuft, in der Debian Standardinstallation ist das also der User openhab.
Wenn in der UI falsche Umlaute auftauchen, wäre der zweite Punkt, zu klären, ob die Zeichen schon falsch im item drin stehen (Stichwort events.log), oder ob sie nur im Browser falsch auftauchen (der erste Punkt war locale für den openhab-user).
Danke ud01toni für deine Rückmeldung also das Problem ist in der UI in der item Datei stand als Beispiel "übermorgen" so geschrieben dieses wurde aber auf UI flasch angezeigt weiss jetzt nicht mit was aber eben nicht mit "ü".
Also der fixe Teil vom Itemlabel? Das sollte natürlich nicht so sein. Bearbeitest Du die Dateien mit dem Designer? Vielleicht gerät beim übertragen der Datei was durcheinander, um das zu überprüfen, müsstest Du die Datei mal in Putty öffnen.
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Kommentar