Ankündigung

Einklappen
Keine Ankündigung bisher.

Müllentsorgung

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

    Das hört sich ziemlich einfach an, so wie Du es sagst! Den Zeitpunkt wann die Rule triggert würde ich auf 6 Uhr setzen.
    Ich verstehe trotzdem gerade nur Bahnhof. Bin halt noch ein ziemlicher Anfänger.
    Könntest Du mir evtl die Pushover Nachricht in die Rule einbauen?

    Kommentar


      Ich nutze kein Pushover, aber laut Doku sollte es so gehen:
      Code:
       rule "Calculate trash dates gelb" //aus Exec-Input Anzeige für Mülltermine berechnen
      when
          Time cron "0 0 1 * * ?"
      then
          var DateTime date_yellow
          var DateTime date_now
          var String trash_yellow
          date_yellow = parse(""+Exec_TrashYellow.state)
          date_now =  parse(""+now.getYear+"-"+now.getMonthOfYear+"-"+now.getDayOfMonth)
          if (date_now.equals(date_yellow)) {
              trash_yellow="heute"
              pushover("heute gelbe Tonne!")
          }
          else if (date_now.equals(date_yellow.minusDays(1))) {
              trash_yellow="morgen"
              pushover("morgen gelbe Tonne!")
          }
          else if (date_now.equals(date_yellow.minusDays(2))) {
              trash_yellow="Übermorgen"
          }
          else {
              trash_yellow=date_yellow.toString("dd.MM.yyyy")
          }
          TrashYellow.postUpdate(""+trash_yellow)
      end
      Die Doku zur pushover-Action befindet sich hier. Die Action muss zuerst installiert werden. Falls Du den Designer zum Konfigurieren nutzt, wird die pushover-Action als fehler angezeigt. Der Code funktioniert trotzdem - das ist dem Beta-Stand des Designers geschuldet.

      Kommentar


        Danke Udo1toni.
        Ich werde es gleich mal ausprobieren und berichten.

        Kommentar


          So, nach diversen Tests kann ich euch eine Positive Rückmeldung geben. Es funktioniert wunderbar.
          Ich musste allerdings beim Pushover mit dem API Token und User Key arbeiten. Die Regel sieht dann wie folgt aus

          HTML-Code:
          rule "Calculate trash dates gelb"
          //aus Exec-Input Anzeige für Mülltermine berechnen
              when
                  Time cron "0 15 6 1/1 * ? *"
              then
                  var DateTime date_yellow
                  var DateTime date_now
                  var String trash_yellow
          
                  date_yellow = parse(""+Exec_TrashYellow.state)
                  date_now =  parse(""+now.getYear+"-"+now.getMonthOfYear+"-"+now.getDayOfMonth)
          
                  if (date_now.equals(date_yellow)) {
              trash_yellow="heute"
              pushover("API Token","User Key","Heute wird die gelbe Tonne abgeholt!")
              }
              else if (date_now.equals(date_yellow.minusDays(1))) {
              trash_yellow="morgen"
              pushover("API Token","User Key","Morgen wird die gelbe Tonne abgeholt!")
              }
              else if (date_now.equals(date_yellow.minusDays(2))) {
              trash_yellow="übermorgen"
              pushover("API Token","User Key","Übermorgen wird die gelbe Tonne abgeholt!")
              }
              else { trash_yellow=date_yellow.toString("dd.MM.yyyy") }
          
                  TrashYellow.postUpdate(""+trash_yellow)
          end
          Danke an alle die mir geholfen haben!!!!

          Kommentar


            Zitat von eLeven Beitrag anzeigen
            Ich musste allerdings beim Pushover mit dem API Token und User Key arbeiten.
            Das ist normalerweise nicht notwendig, wenn man diese als default in der pushover.cfg abgelegt hat.
            Aber solange es funktioniert: never change a running system ...

            Kommentar


              Ich muss das hier nochmal hervor holen.
              Ich benutze diesen Müllkalender schon sehr lange und auch gerne. Nun habe ich aber auf OH 2.1 umgestellt. Nach zig Stunden der Migration bin ich jetzt an dem Exec-Binding angekommen.
              Irgendwie sehe ich den Wald vor lauter Bäumen nicht. Wie muss ich das jetzt für OH 2.1 umschreiben? Wo muss das Script und die Text-Dateien hin? Wie soll die Items aussehen.

              Es wäre nett, wenn mir mal jemand auf die Sprünge helfen könnte.

              Gruß Teasy

              Kommentar


                Das Problem an so langen Threads ist allgemein, dass bei einem Posting wie Deinem nicht klar ist, wie die bisherige Konfiguration exakt aussieht.
                Bei der Umstellung auf OH2 fallen eventuell ein paar Imports weg, Scripte und Rules werden sich sonst aber vermutlich nicht ändern.
                Wenn Du das exec1-Binding verwendest, ändert sich noch nicht mal die Item Definition. Wenn Du exec 2 verwenden willst, musst Du die Konfiguration natürlich erheblich ändern, da Du die exec-Anweisung nun in ein Thing einpacken musst. das betrifft aber nur das Item. Wenn Du uns die bisherige Konfiguration verrätst, können wir versuchen, das zu "übersetzen".

                Kommentar


                  Hallo Udo1toni,

                  auf die Idee das alte Binding weiter zu benutzen, bin ich gar nicht gekommen.

                  Ich möchte aber konsequent alles auf OH2 umstellen.

                  Ich weiß, daß man hier ein Thing definieren muss und ich habe auch gelesen, daß man keine Importe mehr in den Rules haben darf. Ist das richtig?

                  Anbei meine Konfig:
                  So sieht die trash.sh aus. Wahrscheinlich muss hier der Pfad geändert werden.
                  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="/etc/openhab/configurations/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"
                  Hier meine Items. Hier muss wahrscheinlich auch der Pfad geändert werden, aber auch die Items, weiß allerdings nicht wie.
                  Code:
                   /* Muellabfuhr */
                  String Exec_TrashBlack {exec="<[/etc/openhab/configurations/shellscripts/trash.sh black:60000:REGEX((.*?))]"}
                  String TrashBlack "Normaler Müll [%s]"
                  String Exec_TrashYellow {exec="<[/etc/openhab/configurations/shellscripts/trash.sh yellow:60000:REGEX((.*?))]"}
                  String TrashYellow "Gelber Sack [%s]"
                  String Exec_TrashBlue {exec="<[/etc/openhab/configurations/shellscripts/trash.sh blue:60000:REGEX((.*?))]"}
                  String TrashBlue "Blaue Tonne [%s]"
                  Hier die Rule exemplarisch für blaue Tonne. Wahrscheinlich muss hier nichts geändert werden, ausser das die Importe aus der Rule genommen werden müssen.
                  Code:
                   rule "Calculate trash dates blau"
                  //aus Exec-Input Anzeige für Mülltermine berechnen    
                  when         Time cron "0 0 1 * * ?"    
                  then        
                  var DateTime date_blue        
                  var DateTime date_now        
                  var String trash_blue                  
                  
                  date_blue = parse(""+Exec_TrashBlue.state)        
                  date_now =  parse(""+now.getYear+"-"+now.getMonthOfYear+"-"+now.getDayOfMonth)                
                  
                  if (date_now.equals(date_blue)) { trash_blue="heute" }        
                  else if (date_now.equals(date_blue.minusDays(1))) { trash_blue="morgen" }        
                  else if (date_now.equals(date_blue.minusDays(2))) { trash_blue="übermorgen" }        
                  else { trash_blue=date_blue.toString("dd.MM.yyyy") }          
                  
                  TrashBlue.postUpdate(""+trash_blue)
                  end
                  Zuletzt geändert von teasy1; 24.10.2017, 13:42.

                  Kommentar


                    Importe dürfen weiterhin genutzt werden, aber die wichtigen sind jetzt als Standard aktiv (openhab.core, joda, datetime...). Wenn es nötig ist, einen import zu nutzen, darf der nun keinen Stern beinhalten, die imports müssen also komplett ausgeschrieben werden (und im Zweifel muss man dann eventuell mehrere imports vornehmen, wo vorher ein "allgemeiner" reichte.

                    Der Standardpfad für die Konfiguration heißt nun /etc/openhab2/ (wenn Du z.B. per apt-get installiert hast) Ein Verzeichnis shellscripts/ gibt es eigentlich nicht, aber natürlich hindert Dich niemand daran eines am neuen Platz anzulegen

                    Für exec2 musst Du eine Datei für die Things anlegen (unterhalb /etc/openhab2/things/)
                    z.B. garbage.things
                    Code:
                    Thing exec:command:trash_blue "Exec test" [command="bash /etc/openhab2/scripts/trash.sh blue",interval=60,timeout=5,transform="REGEX((.*?))"]
                    Thing exec:command:trash_black "Exec test" [command="bash /etc/openhab2/scripts/trash.sh black",interval=60,timeout=5,transform="REGEX((.*?))"]
                    Thing exec:command:trash_yellow "Exec test" [command="bash /etc/openhab2/scripts/trash.sh yellow",interval=60,timeout=5,transform="REGEX((.*?))"]
                    Und in den Items musst Du entsprechend auf diese Things verweisen:
                    Code:
                    String Exec_TrashBlue {channel="exec:command:trash_blue:output"}
                    String Exec_TrashBlack {channel="exec:command:trash_black:output"}
                    String Exec_TrashYellow {channel="exec:command:trash_yellow:output"}
                    Zuletzt geändert von udo1toni; 25.10.2017, 03:32. Grund: Thing-Namen in der item-definition korrigiert

                    Kommentar


                      Bin gerade nach hause und habe es sofort umgesetzt. Zumindestens auf der Konsole und auch im PaperUI werden die richtigen Daten ausgegeben. Im BasicUI und im ClassicUI leider noch nicht, obwohl ich in der Rule den Cron angepasst habe, damit ich zeitnah eine Anzeige bekomme.
                      Erstmal besten Dank dafür. Jetzt kann ich mich weiter durch OH2.1 hangeln.
                      Aber eine Frage in dem Zusammenhang habe ich jetzt noch, nachdem ich alle Importe aus der Rule gelöscht habe, meckert der Designer jetzt immer:
                      Code:
                      DateTime cannot be resolved to a type.
                      Code:
                      Import 'DateTime' (org.joda.time)
                      Ist das schlimm??

                      Kommentar


                        Ich sehe gerade im Log folgendes:
                        Code:
                         Cannot delegate  update '2017-10-30' for item 'Exec_TrashYellow' to handler for channel 'exec:command:yellow:output', because no thing with the UID 'exec:command:yellow' could be found.
                        ??????????

                        Kommentar


                          Ups... Frühdienst... Es muss natürlich trash_yellow heißen. Ich habe das Posting von mir entsprechend geändert.


                          Was den meckernden Designer berifft: Eigentlich sollte das nicht passieren, aber vielleicht wurde dieser Import im Designer noch nicht eingepflegt. Leider ist der Designer ja auf einem sehr alten Stand, was dann dazu führt, dass inzwischen einige Statements angemeckert werden, obwohl sie korrekt sind.
                          Die Alternative (VSCode) ist allerdings auch noch nicht so weit, was Syntxprüfung betrifft. Aber sie sind auf einem guten Weg

                          So als Ausblick: VSCode greift auf die laufende OH2-Installation zurück und lässt dort die Syntaxprüfung erledigen. Dazu muss OH2 auf dem aktuellen Snapshot sein, dort muss ja auch die Funktionalität bereitgestellt werden. Damit ist dann das leidige Thema "passende Versionen" hoffentlich erledigt.

                          Wenn der Code ansonsten funktioniert und insbesondere in openhab.log keine Fehlermeldungen auftauchen, würde ich das also nur als Schönheitsfehler werten.

                          Kommentar


                            Besten Dank,

                            jetzt verstehe ich das Exec-Binding so langsam.

                            Kommentar


                              Hallo zusammen,

                              hatte irgendwie obwohl ich regalmäßig hier vorbei schaue die Frage nach der Migration zu OH2.x verschlafen.
                              Auch wenn udo1toni bereits geholfen hat, hier der Vollständigkeit halber der Verweis auf meine Lösung für OH2 die ich gerade im Englisch-sprachigen beschrieben habe.

                              Mfg
                              Sebastian
                              Hi all, this thread here reminded me posting my trash calendar solution for openHAB. https://community.openhab.org/t/calendar-in-oh2-and-habpanel/31871 Back in the OH1.x days I wrote a simple shell script the get tra…

                              Kommentar

                              Lädt...
                              X