FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Larusso am 22 Dezember 2017, 11:27:28

Titel: [gelöst]Abfall Modul mit zwei Terminen am gleichenTag an TTS übergeben
Beitrag von: Larusso am 22 Dezember 2017, 11:27:28
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..... :)
Titel: Antw:Abfall Modul mit zwei Terminen am gleichenTag an TTS übergeben
Beitrag von: en-trust am 06 Januar 2018, 15:53:44
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.
Titel: Antw:Abfall Modul mit zwei Terminen am gleichenTag an TTS übergeben
Beitrag 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:

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.
Titel: Antw:Abfall Modul mit zwei Terminen am gleichenTag an TTS übergeben
Beitrag 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.

#
# 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
Titel: Antw:Abfall Modul mit zwei Terminen am gleichenTag an TTS übergeben
Beitrag von: Amenophis86 am 09 Januar 2018, 10:00:47
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.
Titel: Antw:Abfall Modul mit zwei Terminen am gleichenTag an TTS übergeben
Beitrag von: nils_ am 09 Januar 2018, 10:39:43
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 :)
Titel: Antw:Abfall Modul mit zwei Terminen am gleichenTag an TTS übergeben
Beitrag 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 :)
Titel: Antw:Abfall Modul mit zwei Terminen am gleichenTag an TTS übergeben
Beitrag von: nils_ am 09 Januar 2018, 11:06:50
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


Titel: Antw:Abfall Modul mit zwei Terminen am gleichenTag an TTS übergeben
Beitrag von: en-trust am 10 Januar 2018, 07:18:45
... und für Newbies rufe ich dann die sub Abfall_Meldung() wie in der cfg auf bzw. sprech diese im device an ?
Titel: Antw:Abfall Modul mit zwei Terminen am gleichenTag an TTS übergeben
Beitrag von: Amenophis86 am 10 Januar 2018, 07:34:00
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
Titel: Antw:Abfall Modul mit zwei Terminen am gleichenTag an TTS übergeben
Beitrag von: en-trust am 11 Januar 2018, 12:35:36
Passend zu Deiner Sub Abfall_Meldung so...

define test at *09:00 { Abfall_Meldung($muell, ,,KL.Abfall.Ansicht") }
Titel: Antw:Abfall Modul mit zwei Terminen am gleichenTag an TTS übergeben
Beitrag von: Amenophis86 am 11 Januar 2018, 13:37:05
Warum willst du der Funktion Parameter übergeben, wenn sie sich alles selbst holt in der Funktion und keine Parameter übernommen werden?
Titel: Antw:[gelöst]Abfall Modul mit zwei Terminen am gleichenTag an TTS übergeben
Beitrag von: Larusso am 13 Januar 2018, 09:00:20
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
Titel: Antw:[gelöst]Abfall Modul mit zwei Terminen am gleichenTag an TTS übergeben
Beitrag von: en-trust am 20 Januar 2018, 16:58:53
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
Titel: Antw:[gelöst]Abfall Modul mit zwei Terminen am gleichenTag an TTS übergeben
Beitrag von: KernSani am 20 Januar 2018, 21:01:19
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?