Ankündigung

Einklappen
Keine Ankündigung bisher.

Müllentsorgung

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

    #46
    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.

    Kommentar


      #47
      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

      Kommentar


        #48
        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.

        Kommentar


          #49
          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

          Kommentar


            #50
            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

            Kommentar


              #51
              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)

              Kommentar


                #52
                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

                Kommentar


                  #53
                  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

                  Kommentar


                    #54
                    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

                    Kommentar


                      #55
                      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

                      Kommentar


                        #56
                        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

                        Kommentar


                          #57
                          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.

                          Kommentar


                            #58
                            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).

                            Kommentar


                              #59
                              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

                              Kommentar


                                #60
                                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.

                                Kommentar

                                Lädt...
                                X