devStateIcon auf Readings

Begonnen von noanda, 10 November 2014, 23:41:20

Vorheriges Thema - Nächstes Thema

kinghill

Hallo,

ich wollte das Thema nochmal aufgreifen.

In meiner Wohnung befinden sich mehrere Temp Sensoren die über Lacrosse eingebunden sind. Ich würde gerne in der Web Oberfläche hinter jedem Sensor auch den Batteriestatus mit einem Icon sehen.
Momentan habe ich nur den Status in Textform hinbekommen. Meine config sieht wie folgt aus:

define Aussentemperatur_1 LaCrosse 0D
setuuid Aussentemperatur_1 5c52094a-f33f-78d7-9383-c4c5daaf49630ede
attr Aussentemperatur_1 IODev myJeeLink
attr Aussentemperatur_1 devStateIcon ok:measure_battery_100
attr Aussentemperatur_1 icon temp_outside
attr Aussentemperatur_1 room Balkon,LaCrosse,Wohnung
attr Aussentemperatur_1 stateFormat Temperatur: temperature°C - Feuchtigkkeit:humidity% - Batterie:battery

devstateicon scheint den Status ok nicht zu finden. Kann ich das irgendwie bewerkstelligen?

Danke

Otto123

Moin,

naja: dein STATE ist nicht ok, der ist: irgendwas - ok.

Damit Dein Icon dafür gefunden wird kannst Du ein entsprechendes regExp nehmen:
.*ok:measure_battery_100
findet: "irgendwas was auf ok endet - ok"

Alllerdings hast Du dann nur ein Icon, der Text vorn ist weg. Das was Du sicher willst ist komplizierter. Da habe ich kein Beispiel parat.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Wzut

#17
@kinghill, versuch mal die relativ neue Variante mit dem mehrzeiligen stateFormat
attr  Aussentemperatur_1 devStateIcon ok:measure_battery_100@green low:measure_battery_0@red
attr  Aussentemperatur_1 stateFormat battery
Temperatur: temperature°C - Feuchtigkkeit:humidity%

direkt im Attribut oder als raw
attr  Aussentemperatur_1 devStateIcon ok:measure_battery_100@green low:measure_battery_0@red
attr  Aussentemperatur_1 stateFormat battery\
Temperatur: temperature°C - Feuchtigkkeit:humidity%

Wichtig ist der Zeilenumbruch im stateFormat !

Edit : wenn das Icon hinter den Text soll dann einfach die beiden Zeilen tauschen
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

alanblack

Noch ein alternativer Ansatz?
attr <device> devStateIcon {Hole_State_und_ZusatzIcon(<devicename>,"","alt","")}
mit

####
# Hole_State_und_ZusatzIcon
####
# Parameter: <Devicename>,<Farbe für State-Icon>,<2.Reading>,<Farbe für 2.Icon>
####
# Rückgabe: String mit Inhalt für devStateIcon
####
sub Hole_State_und_ZusatzIcon($$$$)
{
my ($dev,$stateColor,$altReading,$altColor) = @_;
my $icon = "";

my %stateList = (
);

my $state = ReadingsVal($dev,"state","");
if ($state ne ".")
{
  $icon = $stateList{$state}."\@".$stateColor;
  my $mainImg = FW_makeImage( $icon, $stateList{$state} );

  my $state = ReadingsVal($dev,$altReading,"");
  $icon = $stateList{$state}."\@".$altColor;
  my $secImg = FW_makeImage( $icon, $stateList{$state});

  return '<div>'.$secImg." > ".$mainImg.'</div>';
}
else
{
  return '<div></div>';
}
}

Dabei muss der Hash "statelist" natürlich sinnvoll gefüllt sein. Das habe ich hier mal weggelassen.
Aber dieser Ansatz bietet noch viel mehr Möglichkeiten und Freiheiten.
FHEM 6.0 auf raspi3&ODROID XU4 mit HMLAN und HM-MOD-RPI-PCB, LaCrosse via JeeLink, COC868 und CUL433, Xiaomi Aqara+div. Zigbee via deCONZ, Dooya via SIGNALDuino, ZWave mit Danalock
Jeder Witz kann ein Einzeiler sein mit genügend Semikolons

kinghill

#19
Zitat von: Wzut am 09 August 2019, 10:15:41
@kinghill, versuch mal die relativ neue Variante mit dem mehrzeiligen stateFormat
attr  Aussentemperatur_1 devStateIcon ok:measure_battery_100@green low:measure_battery_0@red
attr  Aussentemperatur_1 stateFormat battery
Temperatur: temperature°C - Feuchtigkkeit:humidity%

direkt im Attribut oder als raw
attr  Aussentemperatur_1 devStateIcon ok:measure_battery_100@green low:measure_battery_0@red
attr  Aussentemperatur_1 stateFormat battery\
Temperatur: temperature°C - Feuchtigkkeit:humidity%

Wichtig ist der Zeilenumbruch im stateFormat !


Edit : wenn das Icon hinter den Text soll dann einfach die beiden Zeilen tauschen


Hi.

Das hat perfekt funktioniert.

Habe das Batterie Icon noch nach hinten verschoben. Das ganze sieht jetzt so aus:

define Aussentemperatur_1 LaCrosse 0D
attr Aussentemperatur_1 IODev myJeeLink
attr Aussentemperatur_1 icon temp_outside
attr Aussentemperatur_1 room Balkon,LaCrosse,Wohnung
attr Aussentemperatur_1 devStateIcon ok:measure_battery_100@green low:measure_battery_0@red
attr Aussentemperatur_1 stateFormat Temperatur: temperature°C - Feuchtigkkeit: humidity%\
battery


Vielen Dank für die Antworten!

DasQ

wenn du am rechner ein foto vom desktop (bildschirm) machen willst, macht man das in windows mit dem "snippingtool" oder dem nachfolger "Ausschneiden und Skizzieren".
das ganze nennt sich dann "screenshot"

vorteile:
-keine externe hardware
-bessere qualität
-kleinere dateigrösse
-schneller
-sichnichtdieblösegebenseinmonitormitdemhandyabzufotografieren ;)

nachteil:
keiner
Fhem on MacMini/Ubuntu.
Absoluter Befürworter der Konsequenten-Kleinschreibung https://de.wikipedia.org/wiki/Kleinschreibung
Infos zu Klimawandel http://www.globalcarbonatlas.org

kinghill

Zitat von: DasQ am 10 August 2019, 14:57:37
wenn du am rechner ein foto vom desktop (bildschirm) machen willst, macht man das in windows mit dem "snippingtool" oder dem nachfolger "Ausschneiden und Skizzieren".
das ganze nennt sich dann "screenshot"

vorteile:
-keine externe hardware
-bessere qualität
-kleinere dateigrösse
-schneller
-sichnichtdieblösegebenseinmonitormitdemhandyabzufotografieren ;)

nachteil:
keiner


HAHA. :P

Danke für die Info. Diese Funktionen sind mir bekannt.

Ich sass an einem Hackintosh an dem die Tastatur nicht sauber Konfiguriert ist, Sprich die Tastenkombi zum Screenshot machen wollte nicht funktionieren.

Danke nochmals allen :-)

kinghill

Hallo

Ich würde das Thema gerne noch einmal aufrollen.

Ich hätte gerne zusätzlich noch je ein Icon
anstatt des Textes vor den Temperatur und Feuchtigkeitswerten.
Wie kann ich das verwirklichen?

define Aussentemperatur_1 LaCrosse 06
setuuid Aussentemperatur_1 5c52094a-f33f-78d7-9383-c4c5daaf49630ede
attr Aussentemperatur_1 IODev myJeeLink
attr Aussentemperatur_1 devStateIcon ok:measure_battery_100@green low:measure_battery_0@red
attr Aussentemperatur_1 icon temp_outside@white
attr Aussentemperatur_1 room Balkon,LaCrosse,Wohnung
attr Aussentemperatur_1 stateFormat Temperatur: temperature°C\
Feuchtigkkeit: humidity%\
battery



TomLee

Hallo,

hier findest ein Beispiel.

Gruß

Thomas

Beta-User

Das sollte sogar ohne Perl kein Problem sein. Wichtig ist, dass der gewünschte Icon-Name bzw. der zu ersetzende Text (da identisch mit dem Readingnamen via devStateIcon zu machen) jeweils in einer Zeile steht. Ungetestet:
attr Aussentemperatur_1 devStateIcon ok:measure_battery_100@green low:measure_battery_0@red Feuchtigkeit:humidity
attr Aussentemperatur_1 stateFormat temp_temperature\
temperature°C\
Feuchtigkeit\
humidity%\
battery


EDIT: kann sein, dass das mit tem_temperature auch so zu machen ist wie bei Feuchtigkeit...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

kinghill

#25
Hi

Danke für die Infos!

Genau so hatte ich es schon probiert. Allerdings habe ich jetzt festgestellt, dass ein Leerzeichen nach dem Icon Name fehlte.
Jetzt läuft es:

define Aussentemperatur_1 LaCrosse 06
attr Aussentemperatur_1 IODev myJeeLink
attr Aussentemperatur_1 devStateIcon ok:measure_battery_100@green low:measure_battery_0@red
attr Aussentemperatur_1 icon temp_outside@white
attr Aussentemperatur_1 room Balkon,LaCrosse,Wohnung
attr Aussentemperatur_1 stateFormat temp_temperature \
temperature °C\
temperature_humidity \
humidity %\
battery



swsmily

Gibt es eine Möglichkeit DevStateIcon so einzustellen, dass es ein anders Symbol anzeigt, nur wenn das Gerät offline ist?

Hintergrund: Ich habe einige WLAN-Steckdosen. Wenn diese jedoch nicht in Verwendung sind hätte ich gern, dass das DevStateIcon die Steckdosen als Offline anzeigt.
Wenn ich nun aber StateFormat verwende und dort die Readings POWER und LWT eintrage, haben DOIFs die auf eq "on" oder eq "off" reagieren ein Problem, da der State der Steckdose dann nicht mehr nur "on" oder "off" enthält sondern "on Online" oder "off Online" usw.

Gibt es da eine einfachere Variante, ohne DOIFs entsprechend auf den neuen State anzupassen? Es wäre also gut, wenn der Internal State weiterhin nur on oder off kennt. Sollte aber das Reading LWT auf Offline stehen, dann ein anderes Symbol anzeigen.


Beta-User

Ja, Perl-Variante von devStateIcon nutzen. Das verändert STATE nicht.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Crania

Hallo zusammen,

also wenn ich mir das hier so durchlese, stelle ich fest, dass es außer mir
noch eine Menge anderer Nutzer gibt, die mit den internen Abläufen/Strukturen
von Fhem bezüglich der Darstellung von Bedienelementen und Icons so Ihre Probleme haben.

Ich als Einsteiger habe, obwohl ich alle Doku/Unterlagen teilweise auch mehrfach gelesen habe,
so meine Probleme mit den internen Abläufen. Man kann ja alles ausprobieren.
Dies macht aber nur Sinn, wenn man verstanden hat, was FHEM verlangt, um eine bestimmte Funktionalität zu implementieren.

Ist denn mein Eindruck falsch, dass man hier erstmal x-Tausend Posts gelesen/geschrieben haben muss
um hinter die Abläufe/Feinheiten zu blicken?
Wie habt Ihr denn den Zugang/Wissen zu Fhem erlangt?
Geht das nur über Learning by doing und stellen von Fragen?
Fhem ist natürlich kein System ,,Out oft the Box".

Als Beispiel möchte ich hier nur mal die interne Variable STATE anführen
die hier ja mehrfach diskutiert wurde.
Sie wird von diversen Kommandos beeinflusst und beeinflusst selber das Verhalten
der Benutzeroberfläche und Darstellung von Icons.
Natürlich, um Fhem wirklich zu verstehen muss man die Quellen studieren...

Ein anderes Beispiel sind die List-Boxen  (setList, webCmd, eventMap).
Sie sind zwar in der Doku genau beschrieben, ihr verhalten ist aber für Einsteiger sehr undurchsichtig.
Oder liege ich mit meiner Einschätzung der Dinge völlig daneben...

Gruß Crania


Beta-User

Das ist m.E. tatsächlich aus Usersicht nicht so einfach zu verstehen. Meinen Versuch, das in einen verständlichen Zusammenhang zu bringen, ist hier nachzulesen: https://wiki.fhem.de/wiki/DeviceOverview_anpassen.

Der andere sind die attrTemplate's (v.a. für MQTT2_DEVICE). Das kann man (fast) 1:1 auf dummy übertragen (v.a. auch, was setList und readingList angeht).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors