sortby Perl Code

Begonnen von igami, 30 Oktober 2016, 07:37:51

Vorheriges Thema - Nächstes Thema

igami

Hallo Allerseits,

Ich wünsche mir, dass das sortby Attribut auch Perl Code auswerten kann.

Grüße
igami
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

Lazgar


betateilchen

Baut doch einfach mal einen patch für 01_FHEMWEB.pm und schlagt das im richtigen Unterforum vor.
Die wenigen zu ändernden Stellen sind doch leicht zu finden.

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Lazgar

Ich kann es leider nicht.
Bin, was Fhem und Programmieren angeht, noch ein blutiger Anfänger :(

marvin78

Na dann bist du ja auch noch lange nicht beim Sortieren mit Perl angelangt.

betateilchen

@marvin78: ich hatte mich nicht getraut, das zu schreiben  :P
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Lazgar

ich sag da mal nix dazu außer: danke für eure Unterstützung *daumenhoch*

igami

wie wäre es damit?

Index: FHEM/01_FHEMWEB.pm
===================================================================
--- FHEM/01_FHEMWEB.pm (Revision 13354)
+++ FHEM/01_FHEMWEB.pm (Arbeitskopie)
@@ -1717,7 +1717,9 @@
     if($modules{$defs{$dev}{TYPE}}{FW_atPageEnd}) {
       $usuallyAtEnd{$dev} = 1;
       if(!AttrVal($dev, "group", undef)) {
-        $sortIndex{$dev} = lc(AttrVal($dev,"sortby",FW_alias($dev)));
+ my $i = lc(AttrVal($dev,"sortby",FW_alias($dev)));
+ $i = eval $i if($i =~ m/^{.*}$/s); # Forum #59883
+ $sortIndex{$dev} = $i;
         push @atEnds, $dev;
         next;
       }
@@ -1725,7 +1727,9 @@
     next if(!$FW_types{$dev});   # FHEMWEB connection, missed due to caching
     foreach my $grp (split(",", AttrVal($dev, "group", $FW_types{$dev}))) {
       next if($FW_hiddengroup{$grp});
-      $sortIndex{$dev} = lc(AttrVal($dev,"sortby",FW_alias($dev)));
+      my $i = lc(AttrVal($dev,"sortby",FW_alias($dev)));
+      $i = eval $i if($i =~ m/^{.*}$/s); # Forum #59883
+      $sortIndex{$dev} = $i;
       $group{$grp}{$dev} = 1;
     }
   }
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

betateilchen


- $i = eval $i if($i =~ m/^{.*}$/s); # Forum #59883
+ $i = AnalyzePerlCommand($i); # Forum #59883
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

igami

Zitat von: betateilchen am 07 Februar 2017, 21:36:26

- $i = eval $i if($i =~ m/^{.*}$/s); # Forum #59883
+ $i = AnalyzePerlCommand($i); # Forum #59883

Warum kann die Überprüfung auf die Spitzen Klammern entfallen? Zudem fordert AnalyzePerlCommand doch zwei Argumente, den client hash und den Befehl.
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

betateilchen

Zitat von: igami am 08 Februar 2017, 06:00:29
Warum kann die Überprüfung auf die Spitzen Klammern entfallen?

Damit man es in der Anwendung einfacher hat. Es geht außerdem nicht um spitze Klammern, sondern um geschweifte ;)

Zitat von: igami am 08 Februar 2017, 06:00:29
Zudem fordert AnalyzePerlCommand doch zwei Argumente, den client hash und den Befehl.

Stimmt, mein Fehler. Also so:


+ $i = AnalyzePerlCommand(undef,$i); # Forum #59883


Anwendungsbeispiele findest Du z.B. in 02_RSS.pm und 55_InfoPanel.pm, wenn es um die Auswertung von bestimmten Layoutkomponenten geht.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

igami

dann also der ganze Patch:

Index: FHEM/01_FHEMWEB.pm
===================================================================
--- FHEM/01_FHEMWEB.pm (Revision 13354)
+++ FHEM/01_FHEMWEB.pm (Arbeitskopie)
@@ -1717,7 +1717,9 @@
     if($modules{$defs{$dev}{TYPE}}{FW_atPageEnd}) {
       $usuallyAtEnd{$dev} = 1;
       if(!AttrVal($dev, "group", undef)) {
-        $sortIndex{$dev} = lc(AttrVal($dev,"sortby",FW_alias($dev)));
+ my $i = lc(AttrVal($dev,"sortby",FW_alias($dev)));
+ $i = AnalyzePerlCommand(undef,  $i); # Forum #59883
+ $sortIndex{$dev} = $i;
         push @atEnds, $dev;
         next;
       }
@@ -1725,7 +1727,9 @@
     next if(!$FW_types{$dev});   # FHEMWEB connection, missed due to caching
     foreach my $grp (split(",", AttrVal($dev, "group", $FW_types{$dev}))) {
       next if($FW_hiddengroup{$grp});
-      $sortIndex{$dev} = lc(AttrVal($dev,"sortby",FW_alias($dev)));
+      my $i = lc(AttrVal($dev,"sortby",FW_alias($dev)));
+      $i = AnalyzePerlCommand(undef,  $i); # Forum #59883
+      $sortIndex{$dev} = $i;
       $group{$grp}{$dev} = 1;
     }
   }

Muss ich ja nur noch Rudi darauf aufmerksam machen, oder liest er hier mit?
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

betateilchen

Die Wunschliste liest er ganz bewusst nicht  8)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Mich würde mal ein konkretes Beispiel interessieren, wofür man die hier gewünschte Erweiterung tatsächlich nutzen kann.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

igami

Für Automatiken nutze ich oft ein Tripel aus Dummy für die Parameter, Weekdaytimer um das UZSU Widget auszuwerten und DOIF für die Automatik ansich.
Da ich die devices gerne in der Reihenfolge angezeigt bekommen möchte verwende ich als sortby 100, 110, 120, was in der Übersicht everything jedoch nicht hilfreich ist.

Hmm, aber eigentlich weiß ich gar nicht mehr warum ich das damals für so sinnvoll gehalten habe. Ich hatte den Thread auch total verdrängt :D
Wenn es mir wieder einfällt werde ich es mitteilen. Es hatte irgendwas mit meinem archetype Modul zu tun.
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED