[gelöst]Abfall Modul mit zwei Terminen am gleichenTag an TTS übergeben

Begonnen von Larusso, 22 Dezember 2017, 11:27:28

Vorheriges Thema - Nächstes Thema

Larusso

Hallo zusammen,

wie bekomme ich in meiner Ausgabe beide Termine (die ich in google Calender angelegt habe und beide ganztägige Ereignisse sind) nacheinander angesagt?

([?17:00 - 20:00] and [Abfall:next_tage] == 1) ( set MyTTS volume 100, set MyTTS tts guten Abend Familie Völker denkt bitte daran das Morgen [myABFALL:next_text] abgeholt wird)

bei der Ausgabe [myABFALL:next_text] wird mir nur der erste Termin ausgegeben. Danke schon mal für die Infos..... :)
nanoCul434MHz, nanoCul868MHz, HueBridge, shellyRolladenaktoren, Nuki, Homematic, RPI3, Homebridge, Sonoffbridge, Xiaomi Saugrobotter,

en-trust

Würde mich auch interessieren, da in nächster Zeit 2 Müllarten am gleichen Tag abgeholt werden, jedoch im next_days logischerweise nur einer der beiden steht und somit auch nur dieser als push übersandt wird.

Amenophis86

#2
Hab mir dazu eine eigene Sub geschrieben, welche jeden Tag um 19 Uhr ausgelöst wird:

sub Abfall_Meldung()
{

#Pro Müll eine Variable anlegen und mit aktuellen Resttag bis zu Abholung
my $altpapier = ReadingsNum("KL.Abfall.Ansicht","KLAbfall_EFBAltpapier_days","100");
my $bioabfall = ReadingsNum("KL.Abfall.Ansicht","KLAbfall_EFBBioabfall_days","100");
my $gelbersack = ReadingsNum("KL.Abfall.Ansicht","KLAbfall_EFBGelberSack_days","100");
my $restabfall = ReadingsNum("KL.Abfall.Ansicht","KLAbfall_EFBRestabfall_days","100");
my $schadstoff = ReadingsNum("KL.Abfall.Ansicht","KLAbfall_EFBSchadstoffmobilimAbfuhrbezirk_days","100");

my $positiv = 0; # Wird geprüft, ob Müll morgen abgeholt wird
my $muell = ""; # Text für die Müllabholung

# Wenn Morgen Müll abgeholt wird, ist die Müllvariable = 1, dann wird dafür der Text erstellt und positiv auf 1 gesetzt, dass Morgen eine Müllart geholt wird
if($altpapier == 1) {$muell = $muell."Altpapier, "; $positiv = 1;}
if($bioabfall == 1) {$muell = $muell."Bioabfall, "; $positiv = 1;}
if($gelbersack == 1) {$muell = $muell."Gelbersack, "; $positiv = 1;}
if($restabfall == 1) {$muell = $muell."Restabfall, "; $positiv = 1;}
if($schadstoff == 1) {$muell = $muell."Schadstoffmobil, "; $positiv = 1;}

# Am Text Leerzeichen und Komma hinten abtrennen
if(length($muell) > 1){chop($muell); chop($muell);}

# Meldung für die Textausgabe erstellen
my $meldung = "Morgen wird folgender Müll abgeholt: ".$muell;

# Es wird Müll morgen abgeholt, wenn positiv gleich eins ist
if($positiv == 1)
{
  Meldungen($meldung,2); #Text an Ausgabefunktion übergeben
}
 
}


Meldungen() ist meine Funktion für sämtliche Ausgaben, da müsstet ihr dann eure TTS Funktion aufrufen.


Edit:
Kommentare im Code eingefügt für besseres Verständnis.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

en-trust

Mit dem Sub komm ich nicht so klar, da mir die Folgeschritte fehlen. Daher habe ich die einzelnen Tonnen mit if abgefragt und gebe jeweils eine push dann aus. Aber ausgegeben hat er mir bisher gar nichts.

#
# Pushover Notification für die Müllabfuhr
#
define Abfall.PushNotify at *19:00:00 {\
{if (ReadingsVal("Abfall_CalView","Biotonne_days",0) == 1)\
  {fhem ("set PushMessenger msg 'Müllabfuhr ([Abfall_CalView:Biotonne_text])' 'Morgen ([Abfall_CalView:Biotonne_date]) wird die [Abfall_CalView:Biotonne_text] abgeholt.' '' 2 ''")}\
};;\
{if (ReadingsVal("Abfall_CalView","BlauePapiertonne_days",0) == 1)\
  {fhem ("set PushMessenger msg 'Müllabfuhr ([Abfall_CalView:BlauePapiertonne_text])' 'Morgen ([Abfall_CalView:BlauePapiertonne_date]) wird die [Abfall_CalView:BlauePapiertonne_text] abgeholt.' '' 2 ''")}\
};;\
{if (ReadingsVal("Abfall_CalView","GelberSackGelbeTonne_days",0) == 1)\
  {fhem ("set PushMessenger msg 'Müllabfuhr ([Abfall_CalView:GelberSackGelbeTonne_text])' 'Morgen ([Abfall_CalView:GelberSackGelbeTonne_date]) wird der [Abfall_CalView:GelberSackGelbeTonne_text] abgeholt.' '' 2 ''")}\
};;\
{if (ReadingsVal("Abfall_CalView","HausmuellroterDeckel_days",0) == 1)\
  {fhem ("set PushMessenger msg 'Müllabfuhr ([Abfall_CalView:HausmuellroterDeckel_text])' 'Morgen ([Abfall_CalView:HausmuellroterDeckel_date]) wird die [Abfall_CalView:HausmuellroterDeckel_text] abgeholt.' '' 2 ''")}\
};;\
}
attr Abfall.PushNotify room Auskunft,Büro

Amenophis86

Zitat von: en-trust am 09 Januar 2018, 07:53:33
Mit dem Sub komm ich nicht so klar, da mir die Folgeschritte fehlen. Daher habe ich die einzelnen Tonnen mit if abgefragt und gebe jeweils eine push dann aus. Aber ausgegeben hat er mir bisher gar nichts.

Naja du musst quasi im meinem Code nur die letze Ausgabe   Meldungen($meldung,2); #Text an Ausgabefunktion übergeben
durch deine Pustmitteilung ersetzten wobei die Variable $meldung dein Text ist.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

nils_

Zitat von: Amenophis86 am 06 Januar 2018, 15:58:56
Hab mir dazu eine eigene Sub geschrieben, welche jeden Tag um 19 Uhr ausgelöst wird:
....


ich hab den code von amenophis mal ein bisschen angepasst (für mich ist er so besser les- und verstehbar :) )

sub Abfall_Meldung()
{
my $muell = "";

#Müll-Texte zusammensetzen
$muell = $muell."Altpapier, " if ReadingsNum("KL.Abfall.Ansicht","KLAbfall_EFBAltpapier_days","100") == 1;
$muell = $muell."Bioabfall, " if ReadingsNum("KL.Abfall.Ansicht","KLAbfall_EFBBioabfall_days","100") == 1;
$muell = $muell."Gelbersack, " if ReadingsNum("KL.Abfall.Ansicht","KLAbfall_EFBGelberSack_days","100") == 1;
$muell = $muell."Restabfall, " if ReadingsNum("KL.Abfall.Ansicht","KLAbfall_EFBRestabfall_days","100") == 1;
$muell = $muell."Schadstoffmobil, " if ReadingsNum("KL.Abfall.Ansicht","KLAbfall_EFBSchadstoffmobilimAbfuhrbezirk_days","100") == 1;

if(length($muell) > 1)
{
    chop($muell); chop($muell); #Komma und Leerzeichen entfernen
    # Meldung für die Textausgabe erstellen
    my $meldung = "Morgen wird folgender Müll abgeholt: ".$muell;
     
    Meldungen($meldung,2);  #Text an Ausgabefunktion übergeben
}
}


da gibt es bestimmt immer noch Optimierungspotential, das lass ich aber für die perl-profis übrig :D


grüße
nils_


//edit:
fehlendes ; ergänzt :)
viele Wege in FHEM es gibt!

Amenophis86

$muell = $muell."Gelbersack, " if ReadingsNum("KL.Abfall.Ansicht","KLAbfall_EFBGelberSack_days","100") == 1 fehlt ein ; am Ende. Aber sonst passt es :)
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

nils_

Zitat von: Amenophis86 am 09 Januar 2018, 10:54:52
$muell = $muell."Gelbersack, " if ReadingsNum("KL.Abfall.Ansicht","KLAbfall_EFBGelberSack_days","100") == 1 fehlt ein ; am Ende. Aber sonst passt es :)

argh...... ääääh....

ich wollte ja nur testen ob du aufpasst :D


viele Wege in FHEM es gibt!

en-trust

... und für Newbies rufe ich dann die sub Abfall_Meldung() wie in der cfg auf bzw. sprech diese im device an ?

Amenophis86

Zitat von: Amenophis86 am 06 Januar 2018, 15:58:56
Hab mir dazu eine eigene Sub geschrieben, welche jeden Tag um 19 Uhr ausgelöst wird

Zum Beispiel mit einem at und dann, wie hier beschrieben: https://wiki.fhem.de/wiki/99_myUtils_anlegen
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

en-trust

Passend zu Deiner Sub Abfall_Meldung so...

define test at *09:00 { Abfall_Meldung($muell, ,,KL.Abfall.Ansicht") }

Amenophis86

Warum willst du der Funktion Parameter übergeben, wenn sie sich alles selbst holt in der Funktion und keine Parameter übernommen werden?
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

Larusso

hast ja recht und jetzt wo ich alle Bausteine noch mal in ruhe überprüft habe funktioniert auch alles wenn zwei Termine anstehen, danke an alle für die Unterstützung  ;D
nanoCul434MHz, nanoCul868MHz, HueBridge, shellyRolladenaktoren, Nuki, Homematic, RPI3, Homebridge, Sonoffbridge, Xiaomi Saugrobotter,

en-trust

Ich habe für jede Tonne mal eine Meldung ausgeben wollenm, aber da tat sich rein gar nichts.

#
# Pushover Notification für die Müllabfuhr
#
define Abfall.PushNotify at *14:00:00 {\
{if (ReadingsVal("Abfall_CalView","Biotonne_days",0) == 9)\
  {fhem ("set PushMessenger msg 'Müllabfuhr ([Abfall_CalView:Biotonne_text])' 'Morgen ([Abfall_CalView:Biotonne_date]) wird die [Abfall_CalView:Biotonne_text] abgeholt.' '' 2 ''")}\
};;\
{if (ReadingsVal("Abfall_CalView","BlauePapiertonne_days",0) == 4)\
  {fhem ("set PushMessenger msg 'Müllabfuhr ([Abfall_CalView:BlauePapiertonne_text])' 'Morgen ([Abfall_CalView:BlauePapiertonne_date]) wird die [Abfall_CalView:BlauePapiertonne_text] abgeholt.' '' 2 ''")}\
};;\
{if (ReadingsVal("Abfall_CalView","GelberSackGelbeTonne_days",0) == 5)\
  {fhem ("set PushMessenger msg 'Müllabfuhr ([Abfall_CalView:GelberSackGelbeTonne_text])' 'Morgen ([Abfall_CalView:GelberSackGelbeTonne_date]) wird der [Abfall_CalView:GelberSackGelbeTonne_text] abgeholt.' '' 2 ''")}\
};;\
{if (ReadingsVal("Abfall_CalView","HausmuellroterDeckel_days",0) == 6)\
  {fhem ("set PushMessenger msg 'Müllabfuhr ([Abfall_CalView:HausmuellroterDeckel_text])' 'Morgen ([Abfall_CalView:HausmuellroterDeckel_date]) wird die [Abfall_CalView:HausmuellroterDeckel_text] abgeholt.' '' 2 ''")}\
};;\
}
attr Abfall.PushNotify room Auskunft,Büro

KernSani

Das mit dem editieren der fhem.cfg breite ich jetzt mal nicht großartig aus...

Gibt es Log-Meldungen o.ä.?

Was liefert denn {ReadingsVal("Abfall_CalView","Biotonne_days",0)} in die Kommandozeile eingegeben?

und das {fhem ("set PushMessenger msg 'Müllabfuhr ([Abfall_CalView:Biotonne_text])' 'Morgen ([Abfall_CalView:Biotonne_date]) wird die [Abfall_CalView:Biotonne_text] abgeholt.' '' 2 ''")} macht in der Kommandozeile auch das richtige?

RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...