Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
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?
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.
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
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 ...
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.
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".
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.
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
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
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:
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.
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.
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.
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…
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Kommentar