Autor Thema: Unterschiedliche devStateIcon  (Gelesen 555 mal)

Offline fhempi

  • Jr. Member
  • **
  • Beiträge: 53
Unterschiedliche devStateIcon
« am: 27 Februar 2020, 07:22:15 »
Hallo,

ich habe Shelly's und SonOffs in FHEM eingebunden. Allerdings wäre eine einheitliche Statusanzeige "schöner"
Unterschiede der Devices habe ich versucht zu verstehen bzw. die Einstellungen dazu herauszufinden, komme aber nicht weiter.

Was an der Shelly-Statusanzeige vorteilhaft ist:
- roter Punkt OFFLINE
- grüner Punkt ONLINE
- ICON entweder aus oder an , aber nicht die Lampe mit "!"

Wer kann hier helfen ?

« Letzte Änderung: 28 Februar 2020, 12:55:39 von fhempi »

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 9713
  • eigentlich eher "user" wie "developer"
Antw:Shelly - SonOff / devStateIcon
« Antwort #1 am: 27 Februar 2020, 09:44:39 »
Vielleicht wäre es eine Idee, du zeigt lists oder RAW-Code...?
Server: HP-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | BT@OpenMQTTGateway
svn:MySensors, WeekdayTimer, RandomTimer, AttrTemplate => {mqtt2, mysensors, httpmod}

Offline marvin78

  • Developer
  • Hero Member
  • ****
  • Beiträge: 5648
Antw:Shelly - SonOff / devStateIcon
« Antwort #2 am: 27 Februar 2020, 09:49:42 »
Und dann schaust du dir am besten mal den Code für das devStateIcon der Shellys an und versuchst das ganze zu transferieren.

Offline fhempi

  • Jr. Member
  • **
  • Beiträge: 53
Antw:Shelly - SonOff / devStateIcon
« Antwort #3 am: 27 Februar 2020, 09:51:57 »
Klar - da war doch was  ::)


SonOff-Device:

Internals:
   CID        DVES_680XXX
   DEF        DVES_680XXX
   DEVICETOPIC MQTT2_DVES_680XXX
   FUUID      5df7a67f-f33f-9f73-cded-b472620xxxxxxxxx
   IODev      MQTT2_FHEM_Server
   NAME       MQTT2_DVES_680xxx
   NR         500
   STATE      set_on
   TYPE       MQTT2_DEVICE
   READINGS:
     2019-12-23 16:56:29   FallbackTopic   cmnd/DVES_680xxx_fb/
     2019-12-23 16:56:29   GroupTopic      sonoffs
     2019-12-23 16:56:29   Hostname        S20_2
     2019-12-23 16:56:29   IPAddress       192.168.178.xx
     2019-12-23 23:00:50   LWT             Online
     2019-12-25 09:47:05   LoadAvg         19
     2019-12-23 16:56:29   Module          Sonoff S2X
     2019-12-25 09:47:05   POWER1          off
     2019-12-23 16:56:30   RestartReason   Software Watchdog
     2019-12-16 16:45:37   SaveData        on
     2019-12-16 16:45:37   SetOption26     on
     2019-12-25 09:47:05   Sleep           50
     2019-12-25 09:47:05   SleepMode       Dynamic
     2019-12-16 16:45:36   StateText1      off
     2019-12-16 16:45:36   StateText2      on
     2019-12-16 16:45:36   StateText3      toggle
     2019-12-16 16:45:37   StateText4      hold
     2019-12-25 09:47:05   Time            2019-12-25T09:47:06
     2019-12-25 09:47:05   Uptime          1T16:50:50
     2019-12-25 09:47:05   Vcc             3.216
     2019-12-23 16:56:29   Version         6.5.0(release-sonoff)
     2019-12-23 16:56:29   WebServerMode   Admin
     2019-12-25 09:47:05   Wifi_AP         1
     2019-12-25 09:47:05   Wifi_BSSId      E0:28:6D:xx:xx:xx
     2019-12-25 09:47:05   Wifi_Channel    13
     2019-12-25 09:47:05   Wifi_Downtime   0T00:00:13
     2019-12-25 09:47:05   Wifi_LinkCount  2
     2019-12-25 09:47:05   Wifi_RSSI       76
     2019-12-25 09:47:05   Wifi_SSId       xxxxxxx
     2020-02-14 16:45:00   state           set_on
     2019-12-22 01:02:23   subscriptions   cmnd/DVES_680xxx_fb/# cmnd/S20_2/# cmnd/sonoffs/#
Attributes:
   IODev      MQTT2_FHEM_Server
   alias      S20_2
   autocreate 0
   group      1. SonOff
   icon       hue_filled_outlet
   model      tasmota_basic_state_power1
   readingList tele/S20_2/LWT:.* LWT
  tele/S20_2/STATE:.* { json2nameValue($EVENT) }
  tele/S20_2/SENSOR:.* { json2nameValue($EVENT) }
  tele/S20_2/INFO.:.* { json2nameValue($EVENT) }
  stat/S20_2/RESULT:.* { json2nameValue($EVENT) }
   room       MQTT2_DEVICE
   setList    off:noArg    cmnd/S20_2/POWER1 0
  on:noArg     cmnd/S20_2/POWER1 1
  toggle:noArg cmnd/S20_2/POWER1 2
  setOtaUrl:textField cmnd/S20_2/OtaUrl $EVTPART1
  upgrade:noArg   cmnd/S20_2/upgrade 1
   setStateList on off toggle
   stateFormat POWER1

Shelly-Device:

Internals:
   CID        shelly1_F39xxx
   DEF        shelly1_F39xxx
   DEVICETOPIC MQTT2_shelly1_F39xxx
   FUUID      5e56c092-f33f-9f73-075a-a3c9f331xxxxxxxx
   IODev      MQTT2_FHEM_Server
   LASTInputDev MQTT2_FHEM_Server
   MQTT2_FHEM_Server_MSGCNT 37
   MQTT2_FHEM_Server_TIME 2020-02-26 21:50:44
   MSGCNT     37
   NAME       MQTT2_shelly1_F39xxx
   NR         557
   STATE      off
   TYPE       MQTT2_DEVICE
   READINGS:
     2020-02-26 21:41:43   fw_ver          20200206-083100/v1.5.10@e6a4205e
     2020-02-26 21:41:43   id              shelly1-F39xxx
     2020-02-26 21:49:13   input0          0
     2020-02-26 21:41:43   ip              192.168.178.190
     2020-02-26 20:22:54   longpush_0      1
     2020-02-26 21:41:43   mac             98F4ABF39xxx
     2020-02-26 21:41:43   new_fw          false
     2020-02-26 21:50:44   online          false
     2020-02-26 21:49:13   relay0          off
     2020-02-27 07:07:37   state           off
Attributes:
   IODev      MQTT2_FHEM_Server
   devStateIcon {my $onl = ReadingsVal($name,"online","false") eq "false" ? "rot" : ReadingsVal($name,"new_fw","false") eq "true" ? "gelb" : "gruen";; my $light = ReadingsVal($name,"state","off");; my $show = '<a href="';;$show .= $onl eq "gelb" ? "/fhem?cmd.dummy=set $name x_update&XHR=1\">" : "http://".ReadingsVal($name,"ip","none").' "target="_blank">';;$show .= FW_makeImage("10px-kreis-".$onl)."</a>";; "<div> $show <a href=\"/fhem?cmd.dummy=set $name toggle&XHR=1\">".FW_makeImage($light)."</a></div>" }
   group      2. Shelly
   model      shelly1
   readingList shellies/shelly1-F39xxx/relay/0:.* state
  shellies/shelly1-F39xxx/relay/0:.* relay0
  shellies/shelly1-F39xxx/input/0:.* input0
  shellies/shelly1-F39xxx/online:.* online
  shellies/shelly1-F39xxx/announce:.* { json2nameValue($EVENT) }
  shellies/announce:.* { $EVENT =~ m,..id...shelly1-F39xxx...mac.*, ? json2nameValue($EVENT) : undef }
shelly1_F3976E:shellies/shelly1-F39xxx/longpush/0:.* longpush_0
   room       MQTT2_DEVICE
   setList    off:noArg shellies/shelly1-F39xxx/relay/0/command off
  on:noArg shellies/shelly1-F39xxx/relay/0/command on
  x_update:noArg shellies/shelly1-F39xxx/command update_fw
  x_mqttcom shellies/shelly1-F39xxx/command $EVTPART1


Offline fhempi

  • Jr. Member
  • **
  • Beiträge: 53
Antw:Shelly - SonOff / devStateIcon
« Antwort #4 am: 27 Februar 2020, 09:54:02 »
Und dann schaust du dir am besten mal den Code für das devStateIcon der Shellys an und versuchst das ganze zu transferieren.

Genau DAS habe ich versucht und komme nicht dahinter  :-[

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 9713
  • eigentlich eher "user" wie "developer"
Antw:Shelly - SonOff / devStateIcon
« Antwort #5 am: 27 Februar 2020, 10:09:13 »
Nimm mal das aktuelle tasmota- attrTemplate; sollte etwas anders sein.
Server: HP-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | BT@OpenMQTTGateway
svn:MySensors, WeekdayTimer, RandomTimer, AttrTemplate => {mqtt2, mysensors, httpmod}

Offline TomLee

  • Hero Member
  • *****
  • Beiträge: 1935
Antw:Shelly - SonOff / devStateIcon
« Antwort #6 am: 27 Februar 2020, 11:15:39 »
Genau DAS habe ich versucht und komme nicht dahinter  :-[

Ist auch mMn nicht so einfach wenn eine Funktion (FW_makeImage) Html zurück gibt und man sich bisher eher nicht damit beschäftigt hat.

- roter Punkt OFFLINE
- grüner Punkt ONLINE
- ICON entweder aus oder an , aber nicht die Lampe mit "!"

bei einem Sonoff:

{my $onl = ReadingsVal($name,"LWT","0") eq "Online"?"10px-kreis-gruen":"10px-kreis-rot";;my $lamp = ReadingsVal($name,"state","off");;"<a href=\"http://".ReadingsVal($name,"IPAddress","none")." \"target=\"_blank\">".FW_makeImage($onl)."</a> <a href=\"/fhem?cmd.dummy=set $name toggle&XHR=1\">".FW_makeImage($lamp)."</a>"}
Gruß

Thomas

Offline fhempi

  • Jr. Member
  • **
  • Beiträge: 53
Antw:Shelly - SonOff / devStateIcon
« Antwort #7 am: 27 Februar 2020, 12:35:56 »
@tomLee: habe den Code mal versucht, leider negativ, auch kein roter Punkt zu erkennen :-\

Wenn ich den "state" von "set_on" auf "off" bzw. "on" ändere, ist das normale Lampensymbol zu sehen - aber kein grüner Punkt obwohl auf "Online" abgefragt wird und der Wert ja in LWT steht.
Scheinbar hat state "set_on" und "set_off" diesen Einfluss auf die Lampe mit "!".

Das Reading "LWT" lässt sich bei "nicht" eingestecktem SonOff_S20 gar nicht vernünftig abfragen, da jetzt keine MQTT-Nachricht mehr kommt und das somit auf "Offline" geändert werden kann. Prinzipiell müsste man das Alter des Readings abfragen, um den Offline-Zustand zu erkennen.

Das Template teste ich noch...

Hat noch jemand einen Vorschlag ? Ändern des attr devStateIcon ?



« Letzte Änderung: 27 Februar 2020, 14:56:50 von fhempi »

Offline Pfriemler

  • Hero Member
  • *****
  • Beiträge: 3417
  • geht nich gips nich
Antw:Shelly - SonOff / devStateIcon
« Antwort #8 am: 27 Februar 2020, 17:26:00 »
Ich nutze nicht MQTT2, kenne die Unterschiede daher nicht. LWT wird bei mir eigentlich recht zügig aktualisiert, nach dem Einstromen des Gerätes unmittelbar, beim Ausstecken nach spät. 10 Minuten. Das macht mein externer Broker offenbar ganz von allein.
Ich verbräme den Status aber zusammen mit dem Schaltstatus:
attr OBIplug1M stateFormat {(ReadingsVal($name,"LWT", "") eq "Online") ? ReadingsVal($name,"state", "error") : 'offline'}
Dazu nutze diesen Statusstring (für eine Steckdose):
attr OBIplug1M devStateIcon off:ios-off:on on:ios-on-blue:offDas blendet den kleinen klickbaren Schieber mit entsprechender Hintergrundfarbe ein oder zeigt den Text "offline", wenn die Steckdose nicht erreichbar ist. Ich finde das besser als eine separate Online-Anzeige.
NB: ich habe den MQTT-Status in Tasmota auf Kleinschreibung umgemappt (on/off statt On/Off) - ggf. anpassen.

P.S.: ich verwende einen erweiterten Status für Homematic, wo auch die set_-Zustände mit gezeigt werden als Pfeil (bis die Rückmeldung vom Aktor kommt), NACK ebenfalls, und wie im Bild zu sehen auch wenn eine zeitbegrenzte Einschaltung zugange ist.

edit: andere Variante: wem "offline" nicht so gefällt, kann man stattdessen auch um " offline:ios-nack" erweitern und das angehängte Icon in FHEM verwenden.
« Letzte Änderung: 27 Februar 2020, 18:08:45 von Pfriemler »
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

Offline fhempi

  • Jr. Member
  • **
  • Beiträge: 53
Antw:Shelly - SonOff / devStateIcon
« Antwort #9 am: 27 Februar 2020, 20:14:07 »
Nimm mal das aktuelle tasmota- attrTemplate; sollte etwas anders sein.

Jetzt wird das Gerät zwar angelegt, aber keine Funktion mehr, weder on/off noch die Readings von vorher sind vorhanden  :-\

jetzt muss ich erstamal wieder zurückrudern, was ist da wieder geändert worden ?

Offline eisman

  • Full Member
  • ***
  • Beiträge: 265
Antw:Shelly - SonOff / devStateIcon
« Antwort #10 am: 27 Februar 2020, 20:41:04 »
hi

ja, das ganze in einer sub auslagern....

▼19.6°C   ▼ 76.1 °C

so kann man es gestalten wie man es möchte,
ist aber aufwendiger

stateFormat { sub_Anzeige_TempStatus(1) }

sub sub_Anzeige_TempStatus($) {
  my ($Nr) = @_; my @TEMP = ( 'STRG', 'Vorzeichen', 'Neu', 'Alt');
 
  $TEMP[0] = ''; $TEMP[1] = "&#x25cf;";
  $TEMP[2] = ReadingsVal( "TC_0" . $Nr . "01", 'temperature', 0.0);
  $TEMP[3] = ReadingsVal( "TC_0" . $Nr . "01", 'temp-o', 0.0);
 
  if   ($TEMP[3] >  $TEMP[2]) { $TEMP[1] = "&#x25BC;" }
  elsif($TEMP[3] <  $TEMP[2]) { $TEMP[1] = "&#x25B2;" }
  elsif($TEMP[3] == $TEMP[2]) { $TEMP[1] = "&#x25cf;" }

  $TEMP[0] = $TEMP[0] . "<span style='font-size:10px; font-weight:bold; color:#A6ACB3'>" . $TEMP[1] . "</span>";
  $TEMP[0] = $TEMP[0] . "<span style='font-size:18px; font-weight:bold; color:#";
  $TEMP[0] = $TEMP[0] . substr(Color::pahColor(7,20,30,$TEMP[2],0),0,6);
  $TEMP[0] = $TEMP[0] . "'>" . $TEMP[2] . "</span>";
  $TEMP[0] = $TEMP[0] . "<span style='font-size:10px; font-weight:bold; color:#A6ACB3'>°C</span>";
 
  return $TEMP[0];
}

devStateIcon { sub_Icon_Ventil(ReadingsNum("VD_0101","ValvePosition",0))}
sub sub_Icon_Ventil($) {
  my ($Nr) = @_; my $Icon = ''; my $Farbe = "";
  if($Nr >= 0 and $Nr < 101) {
    $Nr = $Nr;
  } else {
    $Nr = 101;
  }
  if   ($Nr ==   0)               { $Icon = "sani_heating_level_10";  }
  elsif($Nr >=   1 and $Nr <   5) { $Icon = "sani_heating_level_10";  }
  elsif($Nr >=   5 and $Nr <  10) { $Icon = "sani_heating_level_10";  }
  elsif($Nr >=  10 and $Nr <  20) { $Icon = "sani_heating_level_20";  }
  elsif($Nr >=  20 and $Nr <  30) { $Icon = "sani_heating_level_30";  }
  elsif($Nr >=  30 and $Nr <  40) { $Icon = "sani_heating_level_40";  }
  elsif($Nr >=  40 and $Nr <  50) { $Icon = "sani_heating_level_50";  }
  elsif($Nr >=  50 and $Nr <  60) { $Icon = "sani_heating_level_60";  }
  elsif($Nr >=  60 and $Nr <  70) { $Icon = "sani_heating_level_70";  }
  elsif($Nr >=  70 and $Nr <  80) { $Icon = "sani_heating_level_80";  }
  elsif($Nr >=  80 and $Nr <  90) { $Icon = "sani_heating_level_90";  }
  elsif($Nr >=  90 and $Nr < 101) { $Icon = "sani_heating_level_100"; }
  elsif($Nr >= 101 and $Nr < 102) { $Icon = "refresh"; }
  $Farbe = substr(Color::pahColor(0,50,100,$Nr,[7,120,165, 116,185,23, 35,97,78, 196,0,70, 137,13,72]),0,6);

  return $Nr . ":" . $Icon . "\@" . $Farbe;
}


mfg
« Letzte Änderung: 27 Februar 2020, 21:48:37 von eisman »
1x FHEM Debian, Homematic / 1x FHEM Debian, FS20 / 1X FHEM Raspberry ,i2c,onewire,gpio
1x MQTT auf Windows 2012 Hyper-V-Server / 5x ESP8266(ESPeasy,ESPlink) mit 7"HMI
1x FHEM Windows / 1x Arduino Mega mit Configurable Firmata 2.06V

Offline fhempi

  • Jr. Member
  • **
  • Beiträge: 53
Antw:Shelly - SonOff / devStateIcon
« Antwort #11 am: 27 Februar 2020, 21:53:24 »
@eisman: ich hänge doch wieer an den grundlegenden Funktionen fest ! Das neue Tepmlate "tasmota_basic_power1" funktioniert nicht mehr richtig und ich habe keine Ahnung  :-[

Bis das nicht geklärt ist, bringt das hier leider nix mehr ...

Offline eisman

  • Full Member
  • ***
  • Beiträge: 265
Antw:Shelly - SonOff / devStateIcon
« Antwort #12 am: 28 Februar 2020, 11:32:27 »
schade,

tasmota benutze ich nicht, da kann ich nicht helfen.

mfg
1x FHEM Debian, Homematic / 1x FHEM Debian, FS20 / 1X FHEM Raspberry ,i2c,onewire,gpio
1x MQTT auf Windows 2012 Hyper-V-Server / 5x ESP8266(ESPeasy,ESPlink) mit 7"HMI
1x FHEM Windows / 1x Arduino Mega mit Configurable Firmata 2.06V

Offline fhempi

  • Jr. Member
  • **
  • Beiträge: 53
Antw:Shelly - SonOff / devStateIcon
« Antwort #13 am: 28 Februar 2020, 12:54:20 »
... letztlich gehts ja nicht um Tasmota/Shelly/SonOff, sondern um "devStateIcon"

Kann dazu keiner was schreiben ?

Ich habe oben u.a. die "devStateIcon" Definitionen eingestellt, um die Unterschiede der Icons zu erkennen in der Hoffnung, dass jemand
die Unterschiede erklären kann, um letztlich ein Bild zu bekommen.

--> 287 Aufrufe dieses Thread und nur 11 Zufǵriffe auf die Anzeige der Icons  :'(
« Letzte Änderung: 28 Februar 2020, 12:56:36 von fhempi »

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 9713
  • eigentlich eher "user" wie "developer"
Antw:Unterschiedliche devStateIcon
« Antwort #14 am: 28 Februar 2020, 13:03:04 »
Letztlich geht es darum, Readings zu visualisieren. Dafür braucht man die richtigen Readings, Material zum spielen gibt's hier mehr als genug...

ABER vor allem: Du hast die Antwort auf das eigentliche Problem schon erhalten, wenn auch - aus Gründen die ich NICHT nachvollziehen kann, ein Teil der Lösung auf einen anderen Thread ausgelagert wurde...!
Ich bin mir einigermaßen sicher, dass das attrTemplate funktioniert, aber irgendwas bei dir "speziell" war, was dann zu einem seltsamen Ergebnis geführt hat (und du hier - warum auch immer - nicht gezeigt hattest, wie das "Problem" aussieht, noch erwähnt, dass du Rückfragen per Dialogfeld erhalten hattest, von denen du nicht wußtest, wie du sie beantworten sollst...).
Server: HP-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | BT@OpenMQTTGateway
svn:MySensors, WeekdayTimer, RandomTimer, AttrTemplate => {mqtt2, mysensors, httpmod}