(Gelöst) Sortieren innerhalb einer Gruppe (z.b. sortby)

Begonnen von mi.ke, 14 September 2016, 11:08:52

Vorheriges Thema - Nächstes Thema

mi.ke

Tach.

Ich such eine Möglichkeit, die Anzeigereihenfolge von Devises innerhalb einer Gruppe nach Aktuallisierung (timestamp) zu sortieren.

Im einfachsten Fall etwas wie:
attr XXXX sortby {time()}
was aber leider nicht funktioniert.

Auch mit readingsGroup hab ich es nicht hinbekommen.

Hat jemand eine Idee?

Danke im Voraus

Cheers
mi.ke
FHEM 5.9 | RPi4 + 5 x RPi(Z) + FB7590 + FB 6890 LTE via LAN und WAN (VPN) verbunden.
2 x CUL868 + 3 x RFXTRX(e) + 6 x HMwLanGW + 4 x z2tGw + 5 x LGW + 2 x IRBlast + CO2 +++
FS20, FHT, FMS, Elro(mod), CM160, Revolt, LGTV, STV, AVR, withings, HM-sec-*, HM-CC-RT-DN, AMAD, PCA301, arlo, Aqara

mi.ke

Moin.

Ich glaube fast, dass funktioniert im Moment gar nicht.
Wenn überhaupt vermutlich nur beim neuladen der Seite.
Aber selbst das wäre immer noch besser als gar keine Sortierung.

Hintergrund: 10 Bewegungsmelder im und um's Haus.
Eine Liste wann welcher ein Bewegung gemeldet hat gibts, aber die Reihenfolge wäre mir wichtig.

Wie löst Ihr das?

Cheers
mi.ke

FHEM 5.9 | RPi4 + 5 x RPi(Z) + FB7590 + FB 6890 LTE via LAN und WAN (VPN) verbunden.
2 x CUL868 + 3 x RFXTRX(e) + 6 x HMwLanGW + 4 x z2tGw + 5 x LGW + 2 x IRBlast + CO2 +++
FS20, FHT, FMS, Elro(mod), CM160, Revolt, LGTV, STV, AVR, withings, HM-sec-*, HM-CC-RT-DN, AMAD, PCA301, arlo, Aqara

KernSani

Sicher nicht die eleganteste Variante, aber du kannst dir ein Perl-Skript schreiben, dass die Bewegungsmelder sortiert und in der richtigen Reihenfolge in die DEF einer Readingsgroup schreibt. Ähnlich, wie das beim Abfallkalender gemacht wird...
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

mi.ke

okay....
...ich gebs zu.

Habe es probiert mit @ARRAY und sort(), aber ich bin zu blöd dafür.
FHEM 5.9 | RPi4 + 5 x RPi(Z) + FB7590 + FB 6890 LTE via LAN und WAN (VPN) verbunden.
2 x CUL868 + 3 x RFXTRX(e) + 6 x HMwLanGW + 4 x z2tGw + 5 x LGW + 2 x IRBlast + CO2 +++
FS20, FHT, FMS, Elro(mod), CM160, Revolt, LGTV, STV, AVR, withings, HM-sec-*, HM-CC-RT-DN, AMAD, PCA301, arlo, Aqara

rudolfkoenig

Alternativ schreibt man ein notify, der das sortby Attribut setzt:

define n_sortby notify <regexp> { $attr{$NAME}{sortby} = 9999999999-time();; undef }

Ueber das <regexp> sollte man nachdenken.
Habe das attr FHEM-Befehl vermieden, um kein rotes Fragezeichen in FHEMWEB zu generieren.

mi.ke

Klasse!!!

Der Lösungsweg, so die Attribute zuändern, wird auch noch andere Funktionen ermöglichen.

Danke
FHEM 5.9 | RPi4 + 5 x RPi(Z) + FB7590 + FB 6890 LTE via LAN und WAN (VPN) verbunden.
2 x CUL868 + 3 x RFXTRX(e) + 6 x HMwLanGW + 4 x z2tGw + 5 x LGW + 2 x IRBlast + CO2 +++
FS20, FHT, FMS, Elro(mod), CM160, Revolt, LGTV, STV, AVR, withings, HM-sec-*, HM-CC-RT-DN, AMAD, PCA301, arlo, Aqara

mi.ke

wie lustig...

auf der Suche nach einer Lösung bin ich auf meinen eigenen Thread gestossen.
Auch wenn er schon fünf Jahre alt ist, so hat er doch zur Lösung beigetragen.

Rudi hat mir auch dieses Mal (indirekt) den Weg zur Lösung gezeigt. Danke dafür.

Fragestellung:
Wie sortiert man eine Anzahl "devices" innerhalb einer Gruppe nach Wertigkeit?

Antwort:

<Regex> {
if ($EVTPART1 > 0) {$attr{$NAME}{sortby} = 10000000000 - $EVTPART1*100;; undef;; }
elsif ($EVTPART1 == 0) {$attr{$NAME}{sortby} = 99999999999;; undef;; }
else {$attr{$NAME}{sortby} = 'n'.(10000000000 + ($EVTPART1 *100)*-1);; undef;; };
}


Ich liebe FHEM
LG
mi.ke
PS.
* 100 = um gerade Zahlen (ohne Nachkommastellen) zu schaffen.
FHEM 5.9 | RPi4 + 5 x RPi(Z) + FB7590 + FB 6890 LTE via LAN und WAN (VPN) verbunden.
2 x CUL868 + 3 x RFXTRX(e) + 6 x HMwLanGW + 4 x z2tGw + 5 x LGW + 2 x IRBlast + CO2 +++
FS20, FHT, FMS, Elro(mod), CM160, Revolt, LGTV, STV, AVR, withings, HM-sec-*, HM-CC-RT-DN, AMAD, PCA301, arlo, Aqara

Gisbert

ZitatHabe das attr FHEM-Befehl vermieden, um kein rotes Fragezeichen in FHEMWEB zu generieren.

Hallo Rudi,

das interessiert mich, da ich genauso eine Konstruktion mit rotem Fragezeichen im Fhemweb habe.

Ich könnte es bei dieser Konstruktion benötigen:
defmod Update.Blitzer DOIF ([myUniFi:GooglePixel4a5GGisbert] eq "connected") (defmod myBlitzer Blitzer 45) \
DOELSEIF ([myUniFi:GooglePixel4a5GGisbert] eq "disconnected") (defmod myBlitzer Blitzer 15)
attr Update.Blitzer icon car
attr Update.Blitzer room Traffic

Hier wird jedesmal die Definition des Devices geändert.

Viele​ Grüße​ Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

rudolfkoenig

Zitatdas interessiert mich, da ich genauso eine Konstruktion mit rotem Fragezeichen im Fhemweb habe.
Freut mich.
Wenn ich eine indirekte Frage verpasst haben soll (habe so ein leises Gefuehl), dann bitte sie explizit stellen.

Gisbert

Zitat von: rudolfkoenig am 15 April 2021, 08:58:01
Freut mich.
Wenn ich eine indirekte Frage verpasst haben soll (habe so ein leises Gefuehl), dann bitte sie explizit stellen.
Hallo Rudi,
ich möchte beim Modul Blitzer die Abfragezeit dann reduzieren, wenn ich zuhause bin, und häufiger, wenn ich unterwegs bin. Nur als Hinweis: ich halte mich an Geschwindigkeitsvorgaben, auch wenn keiner hinschaut.
Bisher habe ich keine andere Möglichkeit gesehen, als jedesmal die Definition des Devices zu ändern. Das Modul sieht kein Attribut beim Intervall vor.
Um meine Bitte in eine Frage zu formulieren:
Kann die Definition eines Moduls geändert werden und gleichzeitig das rote Fragezeichen im Fhemweb vermieden werden?

Viele​ Grüße​ Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

rudolfkoenig

ZitatKann die Definition eines Moduls geändert werden und gleichzeitig das rote Fragezeichen im Fhemweb vermieden werden?
Ich habe in define/modify/defmod/attr ein -silent Option eingebaut, damit werden diese Befehle nicht in die "save -?" Liste eingetragen.

Es sollte einem bewusst sein, dass ohne save bei einem FHEM Neustart diese Werte verloren gehen.

mi.ke

Zitat von: rudolfkoenig am 16 April 2021, 18:34:28
Ich habe in define/modify/defmod/attr ein -silent Option eingebaut, damit werden diese Befehle nicht in die "save -?" Liste eingetragen.


was ist denn der Unterschied zwischen Option -silent und -temporary?
FHEM 5.9 | RPi4 + 5 x RPi(Z) + FB7590 + FB 6890 LTE via LAN und WAN (VPN) verbunden.
2 x CUL868 + 3 x RFXTRX(e) + 6 x HMwLanGW + 4 x z2tGw + 5 x LGW + 2 x IRBlast + CO2 +++
FS20, FHT, FMS, Elro(mod), CM160, Revolt, LGTV, STV, AVR, withings, HM-sec-*, HM-CC-RT-DN, AMAD, PCA301, arlo, Aqara

rudolfkoenig

Temporary Definitionen werden gar nicht gespeichert.

Gisbert

Hallo Rudi,

vielen Dank für deine Hinweise.
Die folgende Definition führt zwar den Ausführungsteil aus, liefert aber auch das rote Fragezeichen:
defmod Update.Blitzer DOIF ([myUniFi:GooglePixel4a5GGisbert] eq "connected") (defmod -temporary myBlitzer Blitzer 45) \
DOELSEIF ([myUniFi:GooglePixel4a5GGisbert] eq "disconnected") (defmod -temporary myBlitzer Blitzer 15)

Wenn ich statt temporary silent nehme, gibt es eine Fehlermeldung im Device.
Der Begriff silent scheint in der commandref nicht vorzukommen.
Wie muss meine Definition aussehen, damit es im gewünschten Sinn, d.h. ohne rotes Fragezeichen, funktioniert?

Viele​ Grüße​ Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

mi.ke

#14
@Gisbert
höre einfach auf Rudi!

-silent ist genau das was Du suchst.

BTW. Ohne genaue "Fehler"-Beschreibung kann man nur raten.
Ich tippe auf DOIF
Vielleicht bracht es eine Doppelklammer.
Aber ich bin nicht gut im raten, leider.

@Rudi
Danke, -silent passt bei mir auch besser als -temporary .
Kannte es vorher leider nicht


bitte ignorieren

@Gisbert
erst auf Update warten / machen
https://forum.fhem.de/index.php/topic,120442.msg1149750.html#msg1149750
FHEM 5.9 | RPi4 + 5 x RPi(Z) + FB7590 + FB 6890 LTE via LAN und WAN (VPN) verbunden.
2 x CUL868 + 3 x RFXTRX(e) + 6 x HMwLanGW + 4 x z2tGw + 5 x LGW + 2 x IRBlast + CO2 +++
FS20, FHT, FMS, Elro(mod), CM160, Revolt, LGTV, STV, AVR, withings, HM-sec-*, HM-CC-RT-DN, AMAD, PCA301, arlo, Aqara