Ankündigung

Einklappen
Keine Ankündigung bisher.

Müllentsorgung

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

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

    Einen Kommentar schreiben:


  • teasy1
    antwortet
    Besten Dank,

    jetzt verstehe ich das Exec-Binding so langsam.

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


  • teasy1
    antwortet
    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.
    ??????????

    Einen Kommentar schreiben:


  • teasy1
    antwortet
    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??

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


  • udo1toni
    antwortet
    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".

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


  • eLeven
    antwortet
    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!!!!

    Einen Kommentar schreiben:


  • eLeven
    antwortet
    Danke Udo1toni.
    Ich werde es gleich mal ausprobieren und berichten.

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


  • eLeven
    antwortet
    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?

    Einen Kommentar schreiben:


  • udo1toni
    antwortet
    Die Frage ist ja, wann willst Du die pushover Nachricht erhalten? Deine Rule triggert um 1 Uhr, wenn das als Zeitpunkt gut ist, musst du ja nur überprüfen, ob in der Variablen trash_yellow am Ende "heute" drin steht und gegebenenfalls die Nachricht verschicken.

    Einen Kommentar schreiben:

Lädt...
X