Zahlen nach größe sortieren lassen??

Begonnen von blasterx, 04 März 2016, 18:31:34

Vorheriges Thema - Nächstes Thema

blasterx

hallo zusammen,

Ich habe in verschiedenen Dummys Zahlenwerte die in einem neuen Dummy sortiert gespeichert werden sollen, bzw. reicht es wenn der größte Zahlenwert in den neuen Dummy geschrieben wird. Leider habe ich keinen Ansatzpunkt wie ich das realisieren kann. Ich weiß damit es in Perl den "sort" Befehl gibt, aber wie ich das in Fhem zum anwenden bekomme habe ich leider keinen Schimmer :-[. Es wäre super wenn mir jemand helfen könnte.

Gruß BlasterX
Gruß-BlasterX

Ellert

Schau Dir mal DOIF an, damit kann man fast alles machen: http://fhem.de/commandref_DE.html#DOIF
Zitat... reicht es wenn der größte Zahlenwert in den neuen Dummy geschrieben wird.
Immer wenn einer der Dummys einen neuen Wert erhält, musst Du prüfen, ob dieser Wert größer ist als der letzte grösste Wert.
Die Dummys heissen dummy_1, dummy_2, ... dummy_<x>, der grösste Dummy heist groessterDummy.

define groesstesDOIF DOIF (["^dummy_"] and [$DEVICE] > [groessterDummy]) (set groessterDummy [$DEVICE])

blasterx

Danke für die schnelle Antwort. Funktioniert super, da habe ich viel zu kompliziert gedacht.

Gruß BlasterX
Gruß-BlasterX

justme1968

das heißt aber du hast den größten Wert der jemals da war. nicht den größten der werte die jetzt gerade da sind.

ist das wirklich was du willst?

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

blasterx

Genau da ist das Problem. Ich habe gerade an meinem Projekt weiter gearbeitet, und da ist mir genau das Problem aufgefallen. Ich muss alle Dummywerte bei jeder Dummy Änderung sortieren um immer den aktuell größten Dummywert zu ermitteln. Daher auch die Vermutung wie im ersten Post mit dem "sort" Befehl. Doch leider weiß ich nicht wie und wo ich da ansetze. Ich denke eine sub in der 99_myutils ist der richtige Weg. Aber wie??? :-\

Gruß BlasterX
Gruß-BlasterX

Ellert

#5
Wenn die Anzahl der Dummys überschaubar ist, kannst Du es mit userReadings lösen.

attr groessterDummy userReadings groessterWert {maxNum(Value("dummy_1"),Value("dummy_2"), ... Value("dummy_<x>"))}

blasterx

ok das werde ich mal testen ich habe insgesamt 7 Dummys das geht ja noch.

Gruß BlasterX
Gruß-BlasterX