Hallo zusammen,
Ich nehme Bezug auf ein anderes Thema von mir, hier der Link:http://forum.fhem.de/index.php/topic,24113.0.html (http://forum.fhem.de/index.php/topic,24113.0.html)
Ich habe es nun auch geschafft das Dropdown Menü ans laufen zu bringen.
Allerdings ist der Code nun ziemlich lang und irgendwie wenig elegant.
Hier erstmal der Code:
###########################################################
# Timer für Dropdown Menü Rasen
#
# Aufruf durch: define nmanRasen notify manRasen {manuellRasen("manRasen")}
# define manRasen dummy
#
sub manuellRasen($) {
my ($Rasen) = "manRasen";
if (Value($Rasen) eq "1"){
{fhem("set Rasen on-for-timer 60")}
}
else {
if (Value($Rasen) eq "2"){
{fhem("set Rasen on-for-timer 120")}
}
else {
if (Value($Rasen) eq "3"){
{fhem("set Rasen on-for-timer 180")}
}
else {
if (Value($Rasen) eq "4"){
{fhem("set Rasen on-for-timer 240")}
}
else {
if (Value($Rasen) eq "5"){
{fhem("set Rasen on-for-timer 300")}
}
else {
if (Value($Rasen) eq "7"){
{fhem("set Rasen on-for-timer 480")}
}
else {
if (Value($Rasen) eq "10"){
{fhem("set Rasen on-for-timer 600")}
}
else {
if (Value($Rasen) eq "15"){
{fhem("set Rasen on-for-timer 900")}
}
else {
if (Value($Rasen) eq "20"){
{fhem("set Rasen on-for-timer 1200")}
}
else {
if (Value($Rasen) eq "an"){
{fhem("set Rasen on")}
}
else {
if (Value($Rasen) eq "aus"){
{fhem("set Rasen off")}
}}}}}}}}}}}}
Ich habe bereits ein paar Ideen die theoretisch funktionieren könnten, allerdings scheitert es dann an der Umsetzung
Eine Idee wäre gewesen:
my ($Dauer) = ((Value($Rasen) eq "1")*60)
Um nachher:
{fhem("set Rasen on-for-timer ($Dauer)")}
zu verwenden
Hoffentlich kann jemand helfen, weil ich noch weitere Dropdown Menüs dieser Art brauche und die 99_myUtils Datei durch solche "Kleinigkeit" recht "voll" wird.
Gruß Alex
Hi,
als Einzeiler im notify sollte das gehen:
{fhem("set Rasen on-for-timer ".Value("%NAME")*60)}
Schon mal Danke für deine Antwort.
Leider verstehe ich nicht genau was du mir damit sagen willst.
Ich hab jetzt folgenden notify angelegt:
define nmanVorgarten notify manVorgarten {fhem("set Rasen on-for-timer ".Value("%Vorgarten")*60)}
Nicht wundern der "Vorgarten" muss jetzt für meine Experimente herhalten (der Rasen steht schon Unterwasser) ;)
Klappt so aber nicht :(
Gruß Alex
Hallo,
ZitatKlappt so aber nicht
Und im Logfile müsste stehen was FHEM nicht mag ;)
define nmanVorgarten notify manVorgarten {fhem("set Rasen on-for-timer ".(Value("Vorgarten")*60))}
Lieber mal eine Klammer zuviel - abspecken geht immer noch ;D
Ohne Garantie da ich grad den Code nicht am System teste.
Warum hat Vorgarten nicht gleich den Wert den du verwenden willst?
Dann erübrigt sich das multiplizieren.
Grüße
Zitat von: dogexan am 31 Mai 2014, 17:34:35
Schon mal Danke für deine Antwort.
Leider verstehe ich nicht genau was du mir damit sagen willst.
Ich hab jetzt folgenden notify angelegt:
define nmanVorgarten notify manVorgarten {fhem("set Rasen on-for-timer ".Value("%Vorgarten")*60)}
Nicht wundern der "Vorgarten" muss jetzt für meine Experimente herhalten (der Rasen steht schon Unterwasser) ;)
Klappt so aber nicht :(
Gruß Alex
Ich war nach dem Kommentar von deiner Routine ausgegangen.
%NAME enthält den Namen des auslösenden Devices, also deines Dummys "manVorgarten".
Wenn der Name direkt angegeben wird ist das "%" wegzulassen.
Du müsstes sicherlich "Rasen" nach "Vorgarten" ändern.
Hallo ihr beiden,
ich hab jetzt den geänderten Code von Puschel74 ausprobiert (natürlich mit "Vorgarten").
Leider ohne Erfolg.
Ich habe beim dummy manVorgarten im Dropdown die 1 ausgewählt.
Folgendes sagt der Log:
Argument "aus" isn't numeric in multiplication (*) at (eval 21880) line 1.
2014.06.01 08:59:34 3: set Vorgarten on-for-timer 0 : timer value to low
2014.06.01 08:59:34 3: nmanVorgarten return value: timer value to low
Ich benutzte jetzt nur diesen notify:
define nmanVorgarten notify manVorgarten {fhem("set Vorgarten on-for-timer ".(Value("Vorgarten")*60))}
in der 99_myUtils Datei wird über den Vorgarten nicht erwähnt.
Ich denke mal spätestens wenn ich den STATE an oder aus verwende wird es auch wieder notwendig sein die 99_myUtils Datei zu verwenden.
(siehe die letzten Zeilen des ersten geposteten Code)
Was ich an dem Logfile nicht verstehe ist, dass das Argument "aus" bemängelt wird. Ist zwar schon klar dass man nicht "aus" * 60 multiplizieren kann, allerdings habe ich gar nicht auf "aus" geklickt. :o
Im Anhang ein Screenshot vom dummy "manVorgarten"
Gruß Alex
Hallo,
define nmanVorgarten notify manVorgarten {fhem("set Vorgarten on-for-timer ".(Value("manVorgarten")*60))}
Ein alias greift nur bei der Anzeige aber nicht im Code ;)
Und das Device Vorgarten, welches per Value abgefragt wurde, wird wohl auf aus stehen - daher die Fehlermeldung.
Grüße
Edith: Daher bitte ich ja im angepinnten Beitrag um die defines ALLER relevanten Geräte 8)
Der Aktor heißt "Vorgarten"
Der dummy "manVorgarten" und alias "Vorgarten"
mit: set Vorgarten on-for-timer 60
wir der Vorgarten für eine Minute bewässert.
Ich hatte den dummy nur angelegt um ein Dropdown Menü zu erstellen und nachher alias Vorgarten benannt damit er genau so heißt wie der von autocreate angelegte "Schalter"
Gruß Alex
Hallo,
das ist ja alles schön und gut.
Deswegen willst du dennoch die Zeit aus manVorgarten auswerten und an Vorgarten übergeben.
Was mein letzter gepostet Code auch machen sollte.
Wenn nicht dann bitte die Fehlermeldung dazu.
Grüße
Danke,
der Code funktioniert ;D
das war dann mal ordentlich gekürzt.
Kann man in den Einzeiler auch noch "an" und "aus" unterbringen?
Gruß Alex
Hallo,
ZitatKann man in den Einzeiler auch noch "an" und "aus" unterbringen?
Mit Sicherheit.
Aber für solche Einzeiler bin ich dann leider der falsche Ansprechpartner.
Ich hatte glaube ich schonmal im Forum erwähnt das ich mit Einzeiler mehr oder weniger auf Kriegsfuß stehe ;)Grüße
als fehlervermeidungs-fanatiker würde ich das eher so lösen:
###########################################################
# Timer für Dropdown Menü Rasen
# Aufruf durch: define nmanRasen notify manRasen {manuellRasen()}
# define manRasen dummy
sub manuellRasen(){
my $manRasen = ReadingsVal("manRasen","state","manRasen kann nicht gelesen werden");
if($manRasen eq "an"){
fhem("set Rasen on");
}elsif($manRasen eq "aus"){
fhem("set Rasen off");
}elsif($manRasen=~/^[+-]?\d+$/){ #$manRasen enthält nichts anderes als eine ganze zahl
fhem("set Rasen on-for-timer ".($manRasen*60));
}else{ #in allen anderen fällen ist $manRasen nicht lesbar oder ungültiger wert
Log3("99_myUtils", 3, "manuellRasen: Error detected in value ".$manRasen);
}
}
LG, florian
Hallo,
@florian
Wir sind noch in keiner sub sondern erstmal nur in einem normalen notify ;)
Aber du hast recht.
@dogexan
Als Nicht-Einzeiler würde ich das so versuchen:
define nmanVorgarten notify manVorgarten {
if ($EVENT ne "an" || $EVENT ne "aus") {
fhem("set Vorgarten on-for-timer ".(Value("manVorgarten")*60));
}
else {
fhem("set Vorgarten $EVENT);
}
}
Wenn manVorgarten Nicht-Gleich an ODER Nicht-Gleich aus ist gehe ich davon aus das manVorgarten eine Zahl enthält (das wird !nicht geprüft).
Dann wird ganz normal der on-for-timer berechnet und an Vorgarten gesendet.
Sonst wird $EVENT (was hoffentlich an oder aus ist) an Vorgarten gesendet.
Achtung:
an und aus muss noch per eventMap in Vorgarten auf on und off gemappt werden - ich hoffe das klappt dann so.
Achtung1: Meine Codes sind NICHT für die fhem.cfg gedacht!
Wie meine Codes per Befehlszeile eingegeben werden können ist in diversen Beiträge beschrieben - bitte einfach mal die Suche bemühen und ggf. nach Puschel* als Benutzer suchen.
Danke ;)
Grüße
Ok, alles klar
Nochmal vielen Dank an euch beide. :D
An epsrw1:
Der Timer über das Dropdown Menü funkioniert, aber "an" und "aus" funktioniert nicht
Log:
Prototype mismatch: sub main::manuellVorgarten ($) vs () at ./FHEM/99_myUtils.pm line 132.
2014.06.01 10:28:29 3: CUL_HM set Vorgarten on-for-timer 60
2014.06.01 10:28:36 3: manuellVorgarten: Error detected in value off
2014.06.01 10:29:41 3: manuellVorgarten: Error detected in value on
Edit: Hab den Code von "Rasen" in "Vorgarten" geändert
Edit2: line 132 ist bei mir die letzte Klammer
Gruß Alex
@Puschel, ja und auch nein ... im eröffnungsposting steht was von "brauche noch mehr davon" oder so ähnlich. aus diesem grund würde ich eher das ding in myUtils anlegen und den name des dummy und des zu schaltenden devices mit übergeben als die notifys mit copy/paste in ewig lange config zu verwandeln ... für einzelne anwendung hättest Du natürlich recht.
das ist mit sicherheit geschmackssache, und über geschmack kann man bekanntlich nicht sinnvoll streiten ;)
LG, florian
Hallo,
das
ZitatAufruf durch: define nmanRasen notify manRasen {manuellRasen()}
sollte sich so
ZitatAufruf durch: define nmanRasen notify manRasen {manuellRasen($EVENT)}
vereinfachen lassen.
Damit wir nur das Event an die sub übergeben - wenn ich das richtig im Kopf habe.
Dann muss das
Zitatsub manuellRasen(){
noch so
sub manuellRasen($){
aussehen und du könntest dir das ReadingsVal vermutlich sparen.
my $manRasen = $_;
sollte dann an $manRasen ein, aus oder die Zahlen übergeben.
Ob das mit $_; klappt kann ich aber grad nicht ausprobieren - ich bin hier auch selbst noch am lernen (und spick bei dir ab ;D ).
ZitatEdit: Hab den Code von "Rasen" in "Vorgarten" geändert
Welchen Code und wo hast du Anpassungen vorgenommen?
Den Code mal neu in Code-Tags stellen würde einige Nachfragen erübrigen 8)
Grüße
@ Puschel74
define nmanVorgarten notify manVorgarten {
if ($EVENT ne "an" || $EVENT ne "aus") {
fhem("set Vorgarten on-for-timer ".(Value("manVorgarten")*60));
}
else {
fhem("set Vorgarten $EVENT");
}
}
Bekomme bei speichern folgenden fehler:
syntax error at ./FHEM/99_myUtils.pm line 119, near "if" Global symbol "$EVENT" requires explicit package name at ./FHEM/99_myUtils.pm line 119. Global symbol "$EVENT" requires explicit package name at ./FHEM/99_myUtils.pm line 119.
line 119 ist die "if" Zeile
Gruß Alex
So hab jetzt völlig Orientierung verlorern
neuer versuch ;) vom "Fachidioten" ;)
###########################################################
# Timer für Dropdown Menü Rasen
# Aufruf durch: define manRasen notify manRasen {manuellDummySchalten("manRasen","Rasen")}
# Aufruf durch: define manVorgarten notify manVorgarten {manuellDummySchalten("manVorgarten","Vorgarten")}
# define manRasen dummy
sub manuellDummySchalten($@){
my ($dummy,$aktor) = @_;
my $manRasen = ReadingsVal($dummy,"state",$dummy." kann nicht gelesen werden");
if($manRasen eq "an"){
fhem("set ".$aktor." on");
}elsif($manRasen eq "aus"){
fhem("set ".$aktor." off");
}elsif($manRasen=~/^[+-]?\d+$/){ #$manRasen enthält nichts anderes als eine ganze zahl
fhem("set ".$aktor." on-for-timer ".($manRasen*60));
}else{ #in allen anderen fällen ist $manRasen nicht lesbar oder ungültiger wert
Log3("99_myUtils", 3, "manuellDummySchalten: Error detected, \$dummy".$dummy." \$aktor".$aktor." value ".$manRasen);
}
}
Hallo,
Zitatals die notifys mit copy/paste in ewig lange config zu verwandeln
Wenn mehr dieser Codes notwendig sind hast du recht - dann ist deine Variante (der TE hat das im Eingangspost ja auch schon so begonnen) die einfachere ;)
Grüße
@dogexan
Mein Code war auch nie für die 99_MyUtils.pm gedacht ;)
Also jetzt noch mal zum Code von Florian
###########################################################
# Timer für Dropdown Menü Vorgarten
# Aufruf durch: define nmanVorgarten notify manVorgarten {manuellDummySchalten("manVorgarten","Vorgarten")}
# define manVorgarten dummy
sub manuellDummySchalten($@){
my ($dummy,$aktor) = @_;
my $manVorgarten = ReadingsVal($dummy,"state","manVorgarten kann nicht gelesen werden");
if($manVorgarten eq "an"){
fhem("set ".$aktor." on");
}elsif($manVorgarten eq "aus"){
fhem("set ".$aktor." off");
}elsif($manVorgarten=~/^[+-]?\d+$/){ #$manVorgarten enthält nichts anderes als eine ganze zahl
fhem("set ".$aktor." on-for-timer ".($manVorgarten*60));
}else{ #in allen anderen fällen ist $manVorgarten nicht lesbar oder ungültiger wert
Log3("99_myUtils", 3, "manuellVorgarten: Error detected, \$dummy".$dummy." \$aktor".$aktor." value ".$manVorgarten);
}
}
Den hab ich jetzt in der 99_myUtils Datei stehen
Mein notify heißt: define nmanVorgarten notify manVorgarten {manuellDummySchalten("manVorgarten","Vorgarten")}
Timer funktioniert on/off nicht
Log:
2014.06.01 10:50:56 3: CUL_HM set Vorgarten on-for-timer 60
2014.06.01 10:50:59 3: manuellVorgarten: Error detected, $dummymanVorgarten $aktorVorgarten value off
2014.06.01 10:53:59 3: manuellVorgarten: Error detected, $dummymanVorgarten $aktorVorgarten value on
2014.06.01 10:54:00 3: manuellVorgarten: Error detected, $dummymanVorgarten $aktorVorgarten value off
@ Puschel74
Ups, dachte das muss in myUtils Datei.
Ich werde das gleich mal notify ausprobieren (Einzeiler)
Edit: Timer funktioniert aber an bzw. aus nicht
Hier der Log:
2014.06.01 10:59:14 3: CUL_HM set Vorgarten on-for-timer 60
Argument "aus" isn't numeric in multiplication (*) at (eval 22326) line 3.
2014.06.01 10:59:18 3: set Vorgarten on-for-timer 0 : timer value to low
2014.06.01 10:59:18 3: nmanVorgarten return value: timer value to low
Gruß Alex
fhem> define manRasenNotify notify manRasenDummy {manuellDummySchalten("manRasenDummy","Rasen")}
fhem> define manRasenDummy dummy
fhem> set manRasenDummy 3
bringt mir fehler:
2014.06.01 11:03:09 3: set Rasen on-for-timer 180 : Please define Rasen first
2014.06.01 11:03:09 3: manRasenNotify return value: Please define Rasen first
das sieht gut aus, alles funktioniert nur habe ich keinen rasen.
edit:
fhem> set manRasenDummy off
2014.06.01 11:06:45 3: manuellDummySchalten: Error detected, $dummymanRasenDummy $aktorRasen value off
fhem> set manRasenDummy aus
2014.06.01 11:07:39 3: set Rasen off : Please define Rasen first
2014.06.01 11:07:39 3: manRasenNotify return value: Please define Rasen first
(code auch geändert, log sah nicht schön aus)
###########################################################
# Timer für Dropdown Menü Rasen
# Aufruf durch: define manRasenNotify notify manRasenDummy {manuellDummySchalten("manRasenDummy","Rasen")}
# Aufruf durch: define manRasenNotify notify manRasenDummy {manuellDummySchalten("manVorgartenDummy","Vorgarten")}
# define manRasenDummy dummy
sub manuellDummySchalten($$){
my ($dummy,$aktor) = @_;
my $manRasen = ReadingsVal($dummy,"state",$dummy." kann nicht gelesen werden");
if($manRasen eq "an"){
fhem("set ".$aktor." on");
}elsif($manRasen eq "set"){
fhem("set ".$aktor." off");
}elsif($manRasen=~/^[+-]?\d+$/){ #$manRasen enthält nichts anderes als eine ganze zahl
fhem("set ".$aktor." on-for-timer ".($manRasen*60));
}else{ #in allen anderen fällen ist $manRasen nicht lesbar oder ungültiger wert
Log3("99_myUtils", 3, "manuellDummySchalten: Error detected, \$dummy=".$dummy." \$aktor=".$aktor." value ".$manRasen);
}
}
Ich fasse das jetzt nochmal zusammen:
Mein Aktor heißt: Vorgarten
der dummy: manVorgarten (Ein Screenshot hängt ein paar Posts vorher von mir mit dran)
mein notify heißt momentan: define nmanVorgarten notify manVorgarten {manuellmanVorgarten("manVorgarten","Vorgarten")}
Mir geht es nur um den Aktor "Vorgarten", für "Rasen" würde ich Routine dann anpassen.
Demnach hab ich den Code von Florian entsprechend angepasst:
###########################################################
# Timer für Dropdown Menü Vorgarten
#
#
sub manuellmanVorgarten($$){
my ($manVorgarten,$Vorgarten) = @_;
my $manVorgarten = ReadingsVal($manVorgarten,"state",$manVorgarten." kann nicht gelesen werden");
if($manVorgarten eq "an"){
fhem("set ".$Vorgarten." on");
}elsif($manVorgarten eq "aus"){
fhem("set ".$Vorgarten." off");
}elsif($manVorgarten=~/^[+-]?\d+$/){ #$manVorgarten enthält nichts anderes als eine ganze zahl
fhem("set ".$Vorgarten." on-for-timer ".($manVorgarten*60));
}else{ #in allen anderen fällen ist $manVorgarten nicht lesbar oder ungültiger wert
Log3("99_myUtils", 3, "manuellmanVorgarten: Error detected, \$manVorgarten".$manVorgarten." \$Vorgarten".$Vorgarten." value ".$manVorgarten);
}
}
Florian kannst du bitte noch einmal einen Blick drauf werfen?
Hab fast völlig den Überblick verloren.
Wie gesagt Timer funktioniert "an" oder "aus" nicht. Eventuell hab ich was vergessen umzubenennen.
Können wir bitte beim "Vorgarten" bleiben, sonst bekomme ich das nicht gebacken ;)
Gruß Alex
Zitatmein notify heißt momentan:
Code:
define nmanVorgarten notify manVorgarten {manuellmanVorgarten("manVorgarten","Vorgarten")}
[/s]
der code für die 99_myUtils aus meinem letzten posting kann ohne änderung für alle Deine dummies gleichermaßen verwendet werden und muß nciht kopiert oder dupliziert werden.
da die device-namen von dummy und aktor im ($$) mit übergeben werden mußt Du den nicht mehrfach anlegen.
am anfang, in meinem comment im code, stehen 2 beispiele für Rasen und Vorgarten, nur diese zeile in fhem.cfg mußt Du für jeden Deiner dummies einzeln anpassen.
hab den code nochmal ein wenig angepaßt damit der leichter lesbar/verständlich ist
gruß, florian
###########################################################
# Timer für Dropdown Menü Universell
# Aufruf durch: define manRasenNotify notify manRasenDummy {manuellDummySchalten("manRasenDummy","Rasen")}
# define manRasen dummy
# Aufruf durch: define manVorgartenNotify notify manVorgartenDummy {manuellDummySchalten("manVorgartenDummy","Vorgarten")}
# define manVorgarten dummy
sub manuellDummySchalten($$){
my ($dummy,$aktor) = @_;
my $dummyValue = ReadingsVal($dummy,"state",$dummy." kann nicht gelesen werden");
if($dummyValue eq "an"){
fhem("set ".$aktor." on");
}elsif($dummyValue eq "set"){
fhem("set ".$aktor." off");
}elsif($dummyValue=~/^[+-]?\d+$/){ #$dummyValue enthält nichts anderes als eine ganze zahl
fhem("set ".$aktor." on-for-timer ".($dummyValue*60));
}else{ #in allen anderen fällen ist $dummyValue nicht lesbar oder ungültiger wert
Log3("99_myUtils", 3, "manuellDummySchalten: Error detected, \$dummy=".$dummy." \$aktor=".$aktor." value ".$dummyValue);
}
}
define nmanRasen notify manRasen {manuellDummySchalten("manRasen","Rasen")}
define manRasen dummy
define nmanVorgarten notify manVorgarten {manuellDummySchalten("manVorgarten","Vorgarten")}
define manVorgarten dummy
Okay,
danke für die Erklärung.
Hab jetzt den Code in der 99_,myUtils Datei kopiert und den notify momentan nur vom Vorgarten angepasst.
Timer funktioniert "on" oder "off" leider immer noch nicht
Ich hab kein Plan warum?
Hier noch der Log:
2014.06.01 13:01:11 3: CUL_HM set Vorgarten on-for-timer 60
2014.06.01 13:01:30 3: manuellDummySchalten: Error detected, $dummy=manVorgarten $aktor=Vorgarten value on
2014.06.01 13:01:31 3: manuellDummySchalten: Error detected, $dummy=manVorgarten $aktor=Vorgarten value off
Danke für deine Geduld
Gruß Alex
ich hatte im hinterkopf daß die schaltung mit den kommandos "an" und "aus" gehen sollte .... hier nochmal ein update das sowohl an/aus als auch on/off als command annimmt:
###########################################################
# Timer für Dropdown Menü Rasen
# Aufruf durch: define manRasenNotify notify manRasenDummy {manuellDummySchalten("manRasenDummy","Rasen")}
# define manRasen dummy
# Aufruf durch: define manVorgartenNotify notify manVorgartenDummy {manuellDummySchalten("manVorgartenDummy","Vorgarten")}
# define manVorgarten dummy
sub manuellDummySchalten($$){
my ($dummy,$aktor) = @_;
my $dummyValue = ReadingsVal($dummy,"state",$dummy." kann nicht gelesen werden");
if(($dummyValue eq "an") or ($dummyValue eq "on")){
fhem("set ".$aktor." on");
}elsif(($dummyValue eq "aus") or ($dummyValue eq "off")){
fhem("set ".$aktor." off");
}elsif($dummyValue=~/^[+-]?\d+$/){ #$dummyValue enthält nichts anderes als eine ganze zahl
fhem("set ".$aktor." on-for-timer ".($dummyValue*60));
}else{ #in allen anderen fällen ist $dummyValue nicht lesbar oder ungültiger wert
Log3("99_myUtils", 3, "manuellDummySchalten: Error detected, \$dummy=".$dummy." \$aktor=".$aktor." value ".$dummyValue);
}
}
PS: war übrigens eh noch ein fehler beim "aus"-schalten drin den ich gerade erst gesehen habe
Es klappt ;D ;D ;D
Beim Vorgarten funktioniert schon mal alles, dann werde ich das jetzt beim "Rasen" auch mal einstellen und noch ein dummy und ein notify für "Beete" erstellen.
Ich melde mich dann gleich noch mal ob alles funktioniert hat
Gruß Alex
Also funktioniert alles 8)
Danke an alle, besonderes an Florian
mit diesem Code passt alles perfekt ;D
###########################################################
# Timer für Dropdown Menü Rasen
# Aufruf durch: define nmanRasen notify manRasen {manuellDummySchalten("manRasen","Rasen")}
# define manRasen dummy
# Aufruf durch: define nmanVorgarten notify manVorgarten {manuellDummySchalten("manVorgarten","Vorgarten")}
# define manVorgarten dummy
# Aufruf durch: define nmanBeete notify manBeete {manuellDummySchalten("manBeete","Beete")}
# define manBeete dummy
sub manuellDummySchalten($$){
my ($dummy,$aktor) = @_;
my $dummyValue = ReadingsVal($dummy,"state",$dummy." kann nicht gelesen werden");
if(($dummyValue eq "an") or ($dummyValue eq "on")){
fhem("set ".$aktor." on");
}elsif(($dummyValue eq "aus") or ($dummyValue eq "off")){
fhem("set ".$aktor." off");
}elsif($dummyValue=~/^[+-]?\d+$/){ #$dummyValue enthält nichts anderes als eine ganze zahl
fhem("set ".$aktor." on-for-timer ".($dummyValue*60));
}else{ #in allen anderen fällen ist $dummyValue nicht lesbar oder ungültiger wert
Log3("99_myUtils", 3, "manuellDummySchalten: Error detected, \$dummy=".$dummy." \$aktor=".$aktor." value ".$dummyValue);
}
}
Gruß Alex
Hallo,
ich hatte jetzt genügend Zeit zu testen.
Funktioniert auch alles, allerdings eine Kleinigkeit stört mich noch.
Wenn ich aus dem Dropdown Menü z.B. die 5 auswähle wird auch für 5 min bewässert. Soweit so gut. Problem nach dem die 5 Minuten abgelaufen sind bleibt das Dropdown Menü auf der 5 stehen. Das heißt ich muss wenn ich wieder bewässern eine andere Zeit nehmen z.B. 4 min. oder ich wähle erst "Minuten" aus dem Dropdown Menü aus und danach wieder 5 Minuten.
Wie ist es Möglich dass wenn ich ein Zahl aus dem Dropdown Menü auswähle, nach der selben Anzahl an Minuten der Dummy den State "Minuten" wieder annimmt.
siehe noch Anhang
Gruß Alex
Hallo,
indem du die Anweisung das der Dummy nach x Minuten auf Minuten stehen soll einfach in den Code mit einbaust ;)
Grüße
Hallo,
super Idee :D ;)
Hab folgendes mal probiert. Klappt natürlich von vorne bis hinten nicht. War mir eigentlich schon vorher klar. :-\
Hier mal ein kleiner Auszug aus dem Script:
}elsif($dummyValue=~/^[+-]?\d+$/){ #$dummyValue enthält nichts anderes als eine ganze zahl
fhem("set ".$aktor." on-for-timer ".($dummyValue*60);define a1 at +($dummyValue*60) attr $dummy stateFormat Minuten);
Zur Info, das ist mein Sinnloser Teil: define a1 at +($dummyValue*60) attr $dummy stateFormat Minuten
Folgende Probleme hab ich damit:
1. Wie kann ich in der "at" Funktion die Minuten einrechnen. at hat das Format HH:MM:SS und mein Dropdown Menü natürlich nur ganze Zahlen.
2. Mit stateFormat ändere ich nur den State des dummys. Was muss ich verwenden damit das Dropdown Menü wieder auf "Minuten" springt.
Wahrscheinlich gibt es noch mehr Probleme von den ich noch nichts weiß. :o
Gruß Alex