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 "ü".
MFG Maggi
Ankündigung
Einklappen
Keine Ankündigung bisher.
Müllentsorgung
Einklappen
X
-
An welcher Stelle werden die Umlaute falsch angezeigt?Zitat von csamaggi Beitrag anzeigenEine 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?
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).
Einen Kommentar schreiben:
-
Warum ist diese Bash Datei notwendig. Man könnte doch mit "transform" einfach map file durchsuchen.
Muell.map hat die Struktur
14.12.2016=1
...
und den rules
var String muell_today
var String muell_tomorrow
muell_today = transform("MAP", "Muell.map",now.getYear + "." + now.getMonthOfYear + "." + now.getDayOfMonth)
muell_tomorrow = transform("MAP", "Muell.map",now.plusDays(1).getYear + "." + now.plusDays(1).getMonthOfYear + "." + now.plusDays(1).getDayOfMonth)
muell_xxx ist 1 wenn Müll ist und "", wenn kein Datum im Map file eingetragen ist.Zuletzt geändert von klayer; 04.01.2016, 06:00.
Einen Kommentar schreiben:
-
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?
MFG Patrick
Einen Kommentar schreiben:
-
Ah, war mir beim drüberlesen auch nicht aufgefallen. Freut mich dass es nun funktioniert.
Zusammenfassen kannst du so z.B.
GrüßeCode:rule "Calculate trash dates" //aus Exec-Input Anzeige für Mülltermine berechnen when System started or Time cron "0 0 2 * * ?" or Item Admin_UpdateTrash changed to ON then logDebug("RULES", "Rule 'Calculate trash dates' started") var DateTime date_brown var DateTime date_yellow var DateTime date_now var String trash_brown var String trash_yellow date_brown = parse(""+Exec_TrashBrown.state) date_yellow = parse(""+Exec_TrashYellow.state) date_now = parse(""+now.getYear+"-"+now.getMonthOfYear+"-"+now.getDayOfMonth) if (date_now.equals(date_brown)) { trash_brown="heute" } else if (date_now.equals(date_brown.minusDays(1))) { trash_brown="morgen" } else if (date_now.equals(date_brown.minusDays(2))) { trash_brown="übermorgen" } else { trash_brown=date_brown.toString("dd.MM.yyyy") } if (date_now.equals(date_yellow)) { trash_yellow="heute" } else if (date_now.equals(date_yellow.minusDays(1))) { trash_yellow="morgen" } else if (date_now.equals(date_yellow.minusDays(2))) { trash_yellow="übermorgen" } else { trash_yellow=date_yellow.toString("dd.MM.yyyy") } TrashBrown.postUpdate(""+trash_brown) TrashYellow.postUpdate(""+trash_yellow) TrashNext.postUpdate(trash_next) Admin_UpdateTrash.postUpdate(OFF) logDebug("RULES", "Rule 'Calculate trash dates' completed") end
Sebastian
Einen Kommentar schreiben:
-
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.
MFG Patrick
Einen Kommentar schreiben:
-
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
Einen Kommentar schreiben:
-
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.
MFG PatrickCode: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
Einen Kommentar schreiben:
-
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)
Einen Kommentar schreiben:
-
Erstmal danke für deine Rückmeldung hannibal29. Die Rule hatte ich vergessen. kommt sofort.
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 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
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
date_yellow = parse(""+Exec_TrashBlau.state)
date_now = parse(""+now.getYear+"-"+now.getMonthOfYear+"-"+now.getDayOfMonth)
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
date_yellow = parse(""+Exec_TrashBio.state)
date_now = parse(""+now.getYear+"-"+now.getMonthOfYear+"-"+now.getDayOfMonth)
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
date_yellow = parse(""+Exec_TrashRest.state)
date_now = parse(""+now.getYear+"-"+now.getMonthOfYear+"-"+now.getDayOfMonth)
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
date_yellow = parse(""+Exec_TrashSperr.state)
date_now = parse(""+now.getYear+"-"+now.getMonthOfYear+"-"+now.getDayOfMonth)
if (date_now.equals(date_yellow)) { trash_sperr="heute" }
else if (date_now.equals(date_yellow.minusDays(1))) { trash_sperr="morgen" }
else if (date_now.equals(date_yellow.minusDays(2))) { trash_sperr="übermorgen" }
else { trash_gelb=date_yellow.toString("E dd.MM.yyyy") }
TrashSperr.postUpdate(""+trash_sperr)
end
Hoffe das du einen Tipp hast woran es liegen könnte.
MFG Maggi aka Patrick
Einen Kommentar schreiben:
-
Der Fehler kommt vom NTP-Binding.Zitat von csamaggi Beitrag anzeigenCode:2016-01-02 19:08:11.431 [ERROR] [o.u.i.items.ItemUIRegistryImpl] - Cannot retrieve item NTP_Datum_Uhrzeit for widget org.openhab.model.sitemap.Text
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.
z.B. in der items
und in der openhab.cfg (und vorher das Binding in den addons Ordner kopieren falls noch ncith vorhanden)Code:DateTime NTP_Datum_Uhrzeit "Datum, Uhrzeit" { ntp="Europe/Berlin:de_DE" }
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.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
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)Zitat von csamaggi Beitrag anzeigenDie TXT Dateien werden ausgelesen siehe hier.
Code:[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
MfG
Sebastian
Einen Kommentar schreiben:
-
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
Danke für eure Hilfe.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;
Nachtrag: Das habe ich hinbekommen jedoch wird mir auf meiner Openhab Seite nicht angezeigt desweiterten bekomme ich follgenden Fehler im Log.
Müllabfuhr.JPG
Die TXT Dateien werden ausgelesen siehe hier.Code:2016-01-02 19:08:11.431 [ERROR] [o.u.i.items.ItemUIRegistryImpl] - Cannot retrieve item NTP_Datum_Uhrzeit for widget org.openhab.model.sitemap.Text
Meine Items schaut so aus dort steht von NTP nichts drin ich hab die Einträge aus dem Thread hier kopiert und an meine Pfade angepasstCode:[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
Code://Müllentsorgung String Exec_TrashGelb {exec="<[/opt/openhab/configurations/scripts/trash.sh gelb:60000:REGEX((.*?))]"} String TrashGelb "Gelber Sack [%s]" String Exec_TrashBlau {exec="<[/opt/openhab/configurations/scripts/trash.sh blau:60000:REGEX((.*?))]"} String TrashBlau "Papier Tonne [%s]" String Exec_TrashRest {exec="<[/opt/openhab/configurations/scripts/trash.sh rest:60000:REGEX((.*?))]"} String TrashRest "Restmuell [%s]" String Exec_TrashBio {exec="<[/opt/openhab/configurations/scripts/trash.sh bio:60000:REGEX((.*?))]"} String TrashBio "Bio Tonne [%s]" String Exec_TrashSperr {exec="<[/opt/openhab/configurations/scripts/trash.sh sperr:60000:REGEX((.*?))]"} String TrashSperr "Sperrmuell [%s]"
Meine Sitemap schaut so aus.
Hoffe ihr habt da einen Tip.Code: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"] } }Zuletzt geändert von csamaggi; 02.01.2016, 19:18.
Einen Kommentar schreiben:
-
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:
jmarwil3Code:datum_line_sec=$(date -j -f '%Y-%m-%d' $datum_line +%s)
Einen Kommentar schreiben:
-
Im Betriebssystem. Wahlweise kannst Du, wenn ich mich recht erinnere, auf der Kommandozeile einen Parameter mitgeben.Zitat von jantum Beitrag anzeigenHallo,
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
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.
Einen Kommentar schreiben:
-
Hallo,Zitat von tex4ever Beitrag anzeigenHi Leute,
ich möchte das Thema noch mal aufgreifen. 2 Dinge:
1) Wenn ihr zusätlich noch den Tag vor dem Datum wollt, könnt ihr den Formatstring erweitern: "E dd.MM.yyyy" liefert "Do, 05.02.2015"
2) Und jetzt noch was spannendes: Ich überlege mir eine Philip's Hue zu kaufen und die in eine Tischlampe zu schrauben und bei uns in die Nähe am Esstisch zu stellen. Ich habe gesehen es gibt ein binding für openhab für Philip's hue Birnen. Wenn jetzt z.B. heute die grüne Tonne dran ist, würde ich gerne beim frühstücken die Lampe grün leuchten lassen, so dass ich weis, ah, ich muss die grüne Tonne vorstellen. ;-)
Hat das schon mal jemand gemacht? Wenn nicht, dann mach ich mich mal dran. ;-)
LG
Philipp
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
Einen Kommentar schreiben:


Einen Kommentar schreiben: