Hallo,
ich habe mir in Devical einen Kalender angelegt, mit welchem ich die Schaltzeiten meiner Steckdosen organisiere.
Das klappt auch gut, da der jeweilige Termin den des entsprechenden Devices hat. Der Übersichtlichkeit wegen habe ich den Steckdosen Aliase verpasst. Nun bin ich dabei Betreff des Termins mit der Liste der Namen und Aliase zu vergleichen.
Hier meine Frage: Wie bekomme ich die Ausgabe von list .* DEF in einen mehrdimensionalen Array oder einen Hash? Ich habe zwar schon wenige Erfahrungen mit PHP aber Perl ist leider absolutes Neuland... Gibt es eine Möglichkeit, wie var_dump um den Typ der Variablen, den Aufbau sowie den Inhalt auszugeben?
Gruß Jens
Lösung:
Ein existierendes Script zur Kalenderabfrage habe ich um einige Zeilen erweitert, so dass ich als Termin den Namen oder den Alias des Geräts eintrage. Ich bin noch unsicher in Perl und wäre dankbar, wenn ihr Korrektur lesen würdet. Generell funktionierte der Test.
sub Kalenderstart ($) {
my ($Ereignis) = @_;
my @Ereignisarray = split(/.*:\s/,$Ereignis);
my $Ereignisteil1 = $Ereignisarray[1];
my @uids=split(/;/,$Ereignisteil1);
foreach my $uid (@uids) {
my $Kalendertext = fhem("get Kalender_fhem summary $uid");
my @ret;
my @etDev = devspec2array("NAME=.*");
foreach my $d (@etDev){
next unless $d;
my $Geraetename= $defs{$d}{NAME};
my $Alias=AttrVal($Geraetename,"alias",0);
my $Geraet;
if($Kalendertext eq $Geraetename or $Kalendertext eq $Alias){
$Geraet=$Geraetename;
fhem("set $Geraet on");
};
}
};
}
sub Kalenderende ($) {
my ($Ereignis) = @_;
my @Ereignisarray = split(/.*:\s/,$Ereignis);
my $Ereignisteil1 = $Ereignisarray[1];
my @uids=split(/;/,$Ereignisteil1);
foreach my $uid (@uids) {
my $Kalendertext = fhem("get Kalender_fhem summary $uid");
my @ret;
my @etDev = devspec2array("NAME=.*");
foreach my $d (@etDev){
next unless $d;
my $Geraetename= $defs{$d}{NAME};
my $Alias=AttrVal($Geraetename,"alias",0);
my $Geraet;
if($Kalendertext eq $Geraetename or $Kalendertext eq $Alias){
$Geraet=$Geraetename;
fhem("set $Geraet off");
};
}
};
}
Hi Jens,
ich bin mir nicht ganz sicher, ob ich die Frage komplett verstanden habe, aber könnte dir http://fhem.de/commandref_DE.html#JsonList2 (http://fhem.de/commandref_DE.html#JsonList2) die gewünschten Infos liefern?
Grüße,
Oli
Hallo Oli,
danke für deine Antwort. JasonList2 sieht gut aus. Nun muss ich das Ergebnis in einen mehrdimensionalen Array umwandeln...
Name, Alias
Steckdose1, Heckendrippler
Steckdose2, Rasensprenger
Steckdose3, (kein Alias benannt - also "")
Steckdose4, Bachlauf
Anschließend will ich beim Kalendersuchlauf den Betreff des jeweiligen Termins(z.B. Rasensprenger oder Steckdose2) mit dem obigen Array vergleichen, um zu prüfen, ob es einen Rasensprenger bzw. Steckdose2 gibt und damit den Aktor schalten (set Steckdose2 on).
Was ich nun suche ist eine Methode, eben diesen speziellen Array zu erzeugen.
Gruß Jens
Hallo,
Zitatich habe mir in Devical einen Kalender angelegt, mit welchem ich die Schaltzeiten meiner Steckdosen organisiere.
Ginge das nicht evtl. mit einem Google-Kalender einfacher?
Der liese sich bereits so ganz ohne Verrenkungen in FHEM abfragen und die jeweilige Steckdose ein- und ausschalten (und noch bischen mehr).
Oder spricht generell etwas gegen die Verwendung eines Google-Kalender?
Grüße
Zitat von: dirigent am 09 Dezember 2014, 22:33:00
Wie bekomme ich die Ausgabe von list .* DEF in einen mehrdimensionalen Array oder einen Hash?
Du denkst viel zu kompliziert, denn Du brauchst weder ein "list irgendwas" ausführen noch über die Erzeugung eines Hash nachdenken. Der gesuchte Hash steht als %defs fhem-weit zur Verfügung. Du musst ihn einfach nur verwenden - aber bitte keine Änderungen selbst darin vornehmen!
Wie man am besten mit Hashes in perl arbeitet, sagt Dir google.
@betateilchen:
DANKE! %defs ist genau das, was ich brauche.
@Puschel74
Die Termine in Devical lassen sich genauso auswerten wie im Google-Kalender und da ich die Termine vor Ort brauche, muss fhem nicht ins weltweite Web. Zumal ein DSL-Verbindungsabbruch meine Steuerung lamlegen würde.
Vielen Dank nochmals an alle!
Gruß Jens
ZitatZumal ein DSL-Verbindungsabbruch meine Steuerung lamlegen würde.
Ein Stromausfall auch ;D
;D Beim Stromausfall schließen sich die Magnetventile automatisch - wie durch Zauberei - und es gibt keine Überschwemmung.
Ich hab da auch noch ne kleine USV - sicher ist sicher.
Hallo, hoffentlich bekomme ich eine 2?! ??? Gruß Jens