Ankündigung

Einklappen
Keine Ankündigung bisher.

Müllentsorgung

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • csamaggi
    antwortet
    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

    Einen Kommentar schreiben:


  • udo1toni
    antwortet
    Zitat von csamaggi Beitrag anzeigen
    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).

    Einen Kommentar schreiben:


  • klayer
    antwortet
    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:


  • csamaggi
    antwortet
    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:


  • hannibal29
    antwortet
    Ah, war mir beim drüberlesen auch nicht aufgefallen. Freut mich dass es nun funktioniert.
    Zusammenfassen kannst du so z.B.

    Code:
    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
    Grüße
    Sebastian

    Einen Kommentar schreiben:


  • csamaggi
    antwortet
    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:


  • hannibal29
    antwortet
    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:


  • csamaggi
    antwortet
    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
    MFG Patrick

    Einen Kommentar schreiben:


  • hannibal29
    antwortet
    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:


  • csamaggi
    antwortet
    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:


  • hannibal29
    antwortet
    Zitat von csamaggi Beitrag anzeigen
    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
    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.

    z.B. in der items
    Code:
    DateTime NTP_Datum_Uhrzeit  "Datum, Uhrzeit" { ntp="Europe/Berlin:de_DE" }
    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.

    Zitat von csamaggi Beitrag anzeigen
    Die 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
    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)

    MfG
    Sebastian

    Einen Kommentar schreiben:


  • csamaggi
    antwortet
    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.

    Müllabfuhr.JPG
    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
    Die 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
    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 angepasst

    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.

    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"]
                }
    
        }
    Hoffe ihr habt da einen Tip.
    Zuletzt geändert von csamaggi; 02.01.2016, 19:18.

    Einen Kommentar schreiben:


  • jmarwil3
    antwortet
    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:
    Code:
     datum_line_sec=$(date -j -f '%Y-%m-%d' $datum_line +%s)
    jmarwil3

    Einen Kommentar schreiben:


  • udo1toni
    antwortet
    Zitat von jantum Beitrag anzeigen
    Hallo,

    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.

    Einen Kommentar schreiben:


  • jantum
    antwortet
    Zitat von tex4ever Beitrag anzeigen
    Hi 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
    Hallo,

    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:

Lädt...
X