Neues Modul readingsGroup

Begonnen von Niko, 24 August 2013, 11:59:11

Vorheriges Thema - Nächstes Thema

franky08

Danke, solche "Feinheiten" kennt der DAU natürlich nicht  :)

VG
Frank
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

Invers

Hallo, Andre,

Du hattest mir mal bei Readingsgroup geholfen, folgendes zu erstellen:
define Stromverbrauch readingsGroup <%time_eco_mode>,<Ampere>,<Watt>,<Gesamt>,<°C> TYPE=FBDECT:current,power,energy,temperature
attr Stromverbrauch group Verbrauch
attr Stromverbrauch nameStyle style="color:yellow;;font-weight:bold"
attr Stromverbrauch room FHT
attr Stromverbrauch valueFormat { return $VALUE if( $READING ne "energy");; $VALUE=~s/ Wh//;; sprintf('%.3f kWh', $VALUE/1000) }
attr Stromverbrauch valueStyle style="text-align:right"


Nun wird ja die Temperatur inzwischen angezeigt, und ich möchte die auch nutzen. Leider sieht das Ergebnis nicht so toll aus. Kannst du mir noch einmal helfen, dass nur die Gradzahl angezeigt und der Rest ausgeblendet wird? Ich bekomme das nicht gebacken. Guck mal Bild unten. Für dich ist das bestimmt ein Klacks. :-)
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

justme1968

abschneiden kannst du  das z.b. mit$VALUE=~s/ .measured.//das baust du in ein eigenes if an den anfang deines valueFormat. z.b. so:attr Stromverbrauch valueFormat { if( $READING eq "temperature"){ $VALUE=~s/ .measured.//;return $VALUE;} return $VALUE if( $READING ne "energy"); $VALUE=~s/ Wh//; sprintf('%.3f kWh', $VALUE/1000) }

oder vielleicht auf dauer übersichtlicher so:attr Stromverbrauch valueFormat { energy => '{$VALUE=~s/ Wh//; sprintf('%.3f kWh', $VALUE/1000) }', temperature => '{$VALUE=~s/ C .*/ &deg;C/};$VALUE}' }

gruss
  andre

das oben ist zum direkten eintragen im web frontend. als nichts extra maskiert oder verdoppelt.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Invers

Danke für die detaillierte Erklärung und die Lösung. Wie immer sehr gut verständlich.
Beispiel 1 funktioniert, Beispiel 2 nicht. Ist aber nicht schlimm, denn es läuft ja.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

Roaster

Hi,

ich habe den FritzBox Callmonitor um die UserReadings F0-F4 erweitert. Im entsprechenden Modul 99_MyUtilsTelefon.pm dann ebenfalls Coding an bestimmten Stellen eingefügt, die das jeweilige valueIcon gleich mitliefert.  Beispielsweise
        if ( $lastPhoneEvent[$callID] eq "call" )
        {
            if ( $intCallDuration eq 0 )
            {
                $A[$callID] = "out_notconnected";
                $F[$callID] = "phone_ring_out\@red";
                # hier notieren was passieren soll, wenn es ein eingehender Anruf war,
                # der nicht angenommen wurde


Ergebnis siehe Bild userReadings.

Dann dachte ich, solle das valueIcon dynamisch aus den userReadings F0-F4 gezogen werden. Und an dieser Stelle bin ich dann hängen geblieben. Wäre dies überhaupt möglich, damit ich nicht diesen ellenlangen Konstrukt verwenden muss:
attr Anrufliste valueIcon { 'A0.out' => 'phone_call@lightgreen', 'A0.in_connected' => 'phone_call@red', 'A0.AB' => 'audio_volume_mid@lightgreen', 'A1.out' => 'phone_call@lightgreen', 'A1.in_connected' => 'phone_call@red', 'A1.AB' => 'audio_volume_mid@lightgreen', 'A2.out' => 'phone_call@lightgreen', 'A2.in_connected' => 'phone_call@red', 'A2.AB' => 'audio_volume_mid@lightgreen', 'A3.out' => 'phone_call@lightgreen', 'A3.in_connected' => 'phone_call@red', 'A3.AB' => 'audio_volume_mid@lightgreen', 'A4.out' => 'phone_call@lightgreen', 'A4.in_connected' => 'phone_call@red', 'A4.AB' => 'audio_volume_mid@lightgreen' }

Ich habe natürlich schon ein wenig rumprobiert:
attr Anrufliste valueIcon { "A%" => ReadingsVal("$DEVICE","F%","0") }
oder
attr Anrufliste valueIcon { state => 'FritzBox:F*' }
Aber ich glaub da bin ich jetzt auf dem Holzweg. Wie gesagt, eventuell ist es ja gar nicht möglich sowas zu verwenden?

Grüße,
Michael


justme1968

es geht zur zeit tatsächlich nur über die lange version und nicht dynamisch.

der perl ausdruck wird zur zeit ein mal am anfang vor dem aufbau der html tabelle ausgewertet und nicht wie bei den meisten anderen attributen dynamisch für jedes reading neu.

der code ist zwar schon da aber noch nicht aktiv weil ich angst habe das es nicht ganz rückwärts kompatibel ist.

ich versuche das noch mal anzugehen wenn ich die readingsGroup etwas aufgeräumt habe. ich weiss aber noch nicht wann ich dazu komme.

gruss
  andre

ps: eventuell geht es dynamisch wenn du zuerst mit valueFormat dynamisch aus dem wert den icon namen machst und dann in valueIcon einfach nur noch $VALUE verwendest.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Roaster

Zitat von: justme1968 am 19 August 2014, 22:46:24
ps: eventuell geht es dynamisch wenn du zuerst mit valueFormat dynamisch aus dem wert den icon namen machst und dann in valueIcon einfach nur noch $VALUE verwendest.

Wäre prima, wenn dies im Standard implementiert werden würde. Das mit valueFormat würde aber m.E. bedeuten, dass ich dort auch sämtliche möglichen Werte bezogen auf die "Spalte" A0 angeben müsste.

Sowas wie attr AnrufListe valueFormat { "A0.out" => "phone_call@lightgreen"}

Da würde ich mir aber rein gar nichts sparen, sondern nur von valueIcon nach valueFormat verlagern. Oder ich kapiers nicht ganz, wie das anders zu lösen wäre.

Michael

justme1968

in valueFormat kannst du eine perl routine setzen die dann dymanisch für jedes reading aufgerufen wird.

aber noch mal zurück. du hast als reading wert schon dynamisch den namen des richtigen icon stehen? so wie es auf dem screenshot oben ist ? dan brauchst du doch nur ein einfachesattr AnrufListe valueIcon %VALUE

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

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

Roaster

Hmm ja, sieht so aus, als ob es damit möglich wäre  ;) nur woher weiß das Script von welcher Variablen Ax bis Fx es den Wert lesen soll? Das Icon steht in F0 - F4.

Wenn ich es so mache wie von dir vorgeschlagen, dann kommt das heraus wie es im Anhang zu sehen ist  >:(

Michael

idi

#579
Hallo

Bin noch ziemlicher Anfänger, und hab ein Problem mit readingsgroups.
Wie im Anhang zu sehen, möchte ich die Werte lauf Grafik anordnen.

Kann mir da jemand helfen ?

Danke

wkarl

Hallo Idi,

ich vermute mal es handelt sich um unterschiedliche devices. Du findest folgend als Beispiel eine meiner Definitionen unterschiedlicher devices in einer readingsGroup:
<%sani_heating@darkblue>,<%temperature_humidity@darkblue>,<%temp_inside@darkblue>,<SOLL FH>,<Modus FH>,<SOLL HK>,<Modus HK>,<%sani_heating_temp@darkblue>,<>,<> ^(?!File).*(Wohnzimmer|Esszimmer|Kueche|Buero|DieleWindfang|GaesteToilette)(_TC):humidity,measured-temp,desired-temp,controlMode@{$DEVICE."_Climate"},desired-temp@{$DEVICE=~s/_TC//g;$DEVICE."_HK_Clima"},controlMode@{$DEVICE=~s/_TC//g;$DEVICE."_HK_Clima"},actuator,battery,battery@{$DEVICE=~s/_TC//g;$DEVICE."_HK"}
Der erste screenshot zeigt wie es aussieht.
Der zweite den code mit den unterschiedlichen Zugriffen, es handelt sich dabei um TC und DN Thermostate.

  • gelb: Definition der header-Zeile
  • violet: Filtern auf die TCs und deren readings, die benötigt werden
  • grün: Attribute controlMode aus den TC-Climate channel
  • rosa: Attribute aus dem DN-Climate channel

ciao walter
FHEM 5.7 & TabletUI 2.2 auf Fedora22 Server auf NUC5i5RYK
CUL 868 > FAST EnergyCam
HMLAN > HomeMatic TCs & VDs, Bewegungsmelder, Schalter, Taster, Steckdosen

idi

Hallo wkarl

Erstmal danke für deine Antwort.
Leider ist mir das noch alles etwas zu viel.
Wie könnte das in meinem Fall jetzt aussehen um gewünschtes Ergebnis zu erlangen ?

Es gibt die beiden Devices, die es gilt neben einander dar zu stellen.

Besten Dank nochmal

idi

#582
Hallo nochmal

Möcht mich nochmal bedanken.
Habs jetzt trotzdem hinbekommen.

Elektrolurch

Hallo Andre,

habe da ein kleines Problem mit der Aktualisierung der Bildschirmanzeige einer readingsGroup, obwohl die readings geschrieben wurden, wird die Anzeige nicht aktualisiert. Erst nach Drücken von F5.

Also:
define Anrufliste readingsGroup <Pos>,<Art>,<Datum>,<Name>,<Nummer>,<Dauer> meineFB:A0,B0,C0,D0,E0 meineFB:A1,B1,C1,D1,E1 meineFB:A2,B2,C2,D2,E2 meineFB:A3,B3,C3,D3,E3 meineFB:A4,B4,C4,D4,E4

mapping {'meineFB' => '{sprintf("%d.",$ROW-1);}'}
noheading 0
nolinks 1
nostate 1
notime 1
room Telefon

Nutze aktuellen Firefox.
attr WEB longpoll 1
ist auch gesetzt.

Die Werte werden mit folgendem Code in die readings geschrieben:

my $update = 1;
...

readingsBeginUpdate($hash);

for ($i=$maxlines;$i>0; $i--)
{
foreach $j ('A'..'F')
{
my $k = $j . ($i-1);
$tt = $rhash->{$k}{VAL};
next if(!defined($tt));

# $tt = ReadingsVal($meineFB,$j.($i-1),"-");
readingsBulkUpdate($hash,$j.$i,$tt,$update);
} # end j
} # end i

foreach my $k ('A'..'F')
{
# Log3($name,4,"Updater first line: k $k val $callmem{$ID}{$k}");
  readingsBulkUpdate($hash,$k."0",$callmem{$ID}{$k},$update);
}
  readingsEndUpdate($hash, $update);

meine FB ist vom type FB_CALLMONITOR

Sollte also eigentlich alles richtig sein.
Einen Tipp, woran es liegen könnte?

Gruß


Elektrolurch
configDB und Windows befreite Zone!

justme1968

ich versuche das nachzustellen sobald ich dazu komme. da ich weder fritzbox noch callmonitor habe wäre es hilfreich wenn du mir eine komplette konfiguration (inklusive dummys) machen kannst bein der das problem auftritt.

in der zwischenzeit schau mal bitte im event monitor ob events von der readingsGroup kommen.

schau dir auch mit
firebug mal die fhem web seite an. die einzelnen zellen der tabelle sollten ein inform id tag haben zu dem das event jeweils passen muss.

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

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