HomeMatic Funk-Statusanzeige - HM-Dis-WM55

Begonnen von Roaster, 14 November 2014, 20:33:48

Vorheriges Thema - Nächstes Thema

Damu

#390
Sorry nichts mehr.

Hab gemeint ich hab da was Falsch verstanden.
Hab gemeint das mit dem Peeren von Kanal 1 und 2 war irgendwie Falsch.
War aber richtig, braucht es aber anscheinend gar nicht.
Hatte nur das Notify falsch.
Das Display geht.
So wie in der Wiki beschrieben ist.

Vielleicht im Wiki http://www.fhemwiki.de/wiki/HM-Dis-WM55_Funk_Statusanzeige

Zitatsub myTh($$$){#temp sensor
   my ($p,$e,$t) = @_;
   if($t eq "t"){return $p.ReadingsVal($e,"temperature","no")."-".ReadingsVal($e,"humidity","");  }
   if($t eq "c"){return    ReadingsVal($e,"temperature",0)>20 ? "red" : "blue" }
   if($t eq "i"){return    ReadingsVal($e,"battery",0)    ? "ok"  : "no"  }
   return "nix";

Andern:
Zitatsub myTh($$$){#temp sensor
   my ($p,$e,$t) = @_;
   if($t eq "t"){return $p.ReadingsVal($e,"temperature","no")."-".ReadingsVal($e,"humidity","");  }
   if($t eq "c"){return    ReadingsVal($e,"temperature",0)>20 ? "red" : "blue" }
   if($t eq "i"){return    ReadingsVal($e,"battery",0)    ? "ok"  : "noIcon"  }
   return "nix";

Das mit der fhem_user.cfg würde ich auch gleich anpassen.

Zitatdefine userCfg notify global:INITIALIZED include fhem_user.cfg
Zitatdefine userCfg notify global:INITIALIZED includ ./FHEM/fhem_user.cfg

Danke, die Anzeige geht damit sehr gut.
Muss Sie natürlich noch für meine Installation etwas anpassen.
Sollte aber gehen.






Damu

#391
Hallo

Geht das auch beim Drücken auf den Taster nach einem Festgeschriebenen Ablauf.

zb.

Beim ersten Tastendruck
Auf "A1"
von A1 mit  "btn1 short" A2
                   "btn1 long" A1 wiederholen
                   "btn2 short" A1 zurück
                   "btn2 long" A1

von A2 mit "btn1 short" A3
                   "btn1 long" A3 wiederholen
                   "btn2 short" A2 zurück
                   "btn2 long" A1

von A3 mit "btn1 short" A4
                   "btn1 long" A4 wiederholen
                   "btn2 short" A3 zurück
                   "btn2 long" A1

von A4 mit "btn1 short" A5
                   "btn1 long" A5 wiederholen
                   "btn2 short" A3 zurück
                   "btn2 long" A4 und ein Befehl ausführen (Lampe toogle)

usw

Hat sowas jemand am laufen?


martinp876

falls ich verstanden habe was du meinst - klar geht das. Musst es nur programmieren.
FHEM hat keine statemachine hierfür implementiert - nur einen Zähler. Dein Vorhaben ist zu speziell, dass es inFHEM implementiert werden kann. Aber es ist eh in myUtils gebaut. Passe es an.

Eisingstone

Ich habe immer noch ein Problem wo ich nicht weiterkomme..... vielleicht hat ja einer von Euch auch auf Basis des Wikis schon Dummy oder Structure anzeigen lassen.
Meine Kontakte frage ich so ab:
sub myKo($$$){#Kontakt
   my ($p,$e,$t) = @_;
   if($t eq "t"){return $p.(ReadingsVal($e,"state","-") eq "open"?"":"") }
   if($t eq "c"){return    ReadingsVal($e,"state",0) eq "closed" ? "green" : "red" }
   if($t eq "i"){return    ReadingsVal($e,"state",0) eq "closed" ? "no"  : "no"  }
   return "nix";
}

Meine Frau findet es gut zu sehen welches Fenster offen ist, will sich aber nicht durch zig Anzeigen klicken, sondern auf einen Bilck alle Infos haben.
Danach ist es ja ok wenn man durchklickt aber so ist es für sie doch sehr umständlich.

Wie muss ich den Part abändern um mir das State eines Dummys bzw eines Structures anzeigen zu lassen??
Irgendwie sind alle Versuche bisher scheitert ohne das ich weiß warum.


Besten Gruß
Stefan
FHEM 5.7 (Dev.), Debian Jessie Server
HM-LAN, HM-CFG-USB-2, RFXTRX433-USB, BT, HUE sowie diverse Homematic Sensoren und Aktoren

martinp876


Mr. Flash

Hallo Stefan,

ich hab' mir für die offenen Fenster/Türen/Fahrradport eine Strukture erstellt:

#------------------------------------------------------------------------------
# Struktur fuer alle offenen Fenster / Tueren
#
# Die Struktur "fenster" nimmt entweder den Status "open" oder "closed" an.
# Sobald ein Device der Struktur "fenster" den Status "open" oder "tilted" hat, nimmt die Struktur den Status "open" an.
# Um dagegen den Status "closed" anzunehmen, müssen alle Devices dieser Struktur auf "closed" stehen.
#
# siehe auch: "fhem.de/commandref_DE.html#structure"
#
#------------------------------------------------------------------------------
define fenster structure allefenster .*.(tuer|fahrradport).*
attr fenster clientstate_behavior relative
attr fenster clientstate_priority open|tilted closed
attr fenster devStateIcon closed:fts_window_1w@lightgreen open:fts_window_1w_open@red
attr fenster room System


In der 99_myUtils.pm habe ich auf Basis des Wiki's
http://www.fhemwiki.de/wiki/FHTTK:_Benachrichtigung_bei_offenem_Fenster
diese Funktione aufgenommen:

# Summe Tuer-/Fensterkontakte
sub mySK($$)
{
   my ($e, $t) = @_;
#   Log(3, "mySK: $e,$t");

   if($t eq "t") {
      my @fhttks = devspec2array("[o|e|k]g.*.(tuer.*|fahrradport)");
      my @wopen = ();
      foreach(@fhttks) {
         my $fhttk_window = ReadingsVal($_, "state", "--");
         push (@wopen, $_) if (($fhttk_window eq "open") or ($fhttk_window eq "tilted"));
      }
      my $num_wopen = @wopen;
#      Log(3, "mySK: num_wopen = $num_wopen");

      return (ReadingsVal($e,"state","--") eq "closed" ? "ALLES ZU" : $num_wopen." OFFEN");
   }

   if($t eq "c"){return (ReadingsVal($e,"state","--") eq "closed" ? "green" : "red"); }
   if($t eq "i"){return (ReadingsVal($e,"state","--") eq "closed" ? "closed" : "open"); }

   return ("none");
}


Beim ersten Drücken des Tasters wird angezeigt, ob und wenn ja, wieviele Fenster/Türen offen sind.
Auf den weiteren Seiten, also beim zweiten/dritten/vierten Drücken des Tasters werden die einzelnen Kontakte angezeigt:

# Tuer-/Fensterkontakt
sub myFK($$$)
{
   my ($p, $e, $t) = @_;
#   Log(3, "myFK: $p,$e,$t");

   if($t eq "t"){return ($p); }
   if($t eq "c"){
      my $WindowState = ReadingsVal($e,"state","--");
      if ($WindowState eq "closed") {
         return ("green");
      }
      elsif ($WindowState eq "tilted") {
         return ("orange");
      }
      else {
         return ("red");
      }
   }
   if($t eq "i"){return (ReadingsVal($e,"battery","no") eq "ok" ? "ok" : "error"); }

   return ("none");
}


Wenn alles zu ist, sehe ich das auf den ersten Blick. Wenn mind. ein Fenster/Türe offen oder gekippt ist, muss ich die nächsten Seiten prüfen, um das entsprechende Objekt auszumachen.

Grüße,
Nik
RPi 4; Bullseye; FHEM 6.3; S.USV basic; BME280; TSL25911.
HM: CFG-LAN,CFG-USB-2,CC-RT-DN,Dis-(EP-)WM55,ES-PMSw1-Pl,ES-TX-WM,LC-Dim1T-FM,LC-Sw1-FM,LC-Sw2-FM,MOD-RPI-PCB,OU-CFM-Pl,RC-Dis-H-x-EU,SCI-3-FM,Sec-MDIR-2,-RHS,-SD,-SC-2,-SCo,-Sir-WM,-TiS,-WDS-2,TC-IT-WM-W-EU,WDS10-TH-O,WDS30-OT2-SM.
Shelly's.

Eisingstone

Das hört sich ja genau danach an was ich gesucht habe....
Werde das mal am WE einbauen und berichten.

Danke und besten Gruß
Stefan
FHEM 5.7 (Dev.), Debian Jessie Server
HM-LAN, HM-CFG-USB-2, RFXTRX433-USB, BT, HUE sowie diverse Homematic Sensoren und Aktoren

hauwech

Hallo zusammen,
ich bin gerade dabei, die Beispiele aus dem Wiki für mich anzupassen. Mir ist aufgefallen, daß das Icon in jeweils einer Zeile größer ist als die anderen, hier auf jedem screen die 1. Zeile. Ich sehe in "meinem" zusammengeklauten Code den Fehler bzw. Unterschied nicht. myTx und myRT ist unverändert wie im Wiki, myTh ist angepaßt auf den HM-WDS30-OT2-SM, also ohne "humidity".

my %lineArr = (0 =>{#============Btn Type 0: Btn1 short
                     0 =>{#-------itteration 0
   1=>'{myTx("Temperatur","white","",'
                          ,2=>'{myRT("WZ:","HG_WZ_HZ",'   
                          ,3=>'{myRT("BZ:","HG_BZ_HZ",'   
                          ,4=>'{myRT("KU:","HG_KU_HZ",'
                          ,5=>'{myTh("T Au:","TempSens1_T2",'
                          ,6=>'{myTh("T In:","TempSens1_T1",'     
                         }
                    ,1 =>{#-------itteration 1
                           1=>'{myTx("Fenster","white","",'
  ,2=>'{myFK("BZ:Fenster","HG_BZ_Fenster",'   
                          ,3=>'{myFK("KU:Fenster","HG_KU_Fenster",'   
                          ,4=>'{myFK("WZ:Fenster" ,"HG_WZ_Fenster",'
                          ,5=>'{myFK("WC:Fenster","HG_GWC_Fenster",'             
                          ,6=>'{myFK("NB:Fenster","NG_BZ_Fenster",'
                         }
                    }


sub myFK($$$){
my ($p, $e, $t) = @_;
    if($t eq "t"){return ($p); }
   if($t eq "c"){
      my $WindowState = ReadingsVal($e,"state","--");
      if ($WindowState eq "closed") {
         return ("green");
      }
      elsif ($WindowState eq "tilted") {
         return ("orange");
      }
      else {
         return ("red");
      }
   }
   if($t eq "i"){return (ReadingsVal($e,"battery","no") eq "ok" ? "ok" : "error"); }
   return ("none");
}

... Danke an Nik ;-)
Kann mir einer auf die Sprünge helfen, das große Icon sieht irgendwie klumpig aus?

Danke und Gruß
Roland
Fhem auf Intel NUC11TNKi5+M2 NVMe+32GB RAM mit Ubuntu 22.04 LTS

MadMax-FHEM

Hi Roland,

hast du in jeder Zeile ein icon?

Hatte ich auch, habe nur 5 Dinge zum Anzeigen da war auch ein icon größer...
...habe dann einfach eine Zeile Gesamtstatus "dazu erfunden" und mit 6 icons waren dann alle gleich...

Ob es noch eine andere Lösung gibt weiß ich nicht.
Und ob es ein Bug oder ein Feature ist auch nicht ;-)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

HeikoE

Zitat von: hauwech am 05 April 2016, 20:04:35
...daß das Icon in jeweils einer Zeile größer ist als die anderen...

Das Icon einer Zeile wird größer dargestellt, wenn in der Folgezeile kein Icon kommt.

Wenn ich Deine Sub myFK richtig interpretiere, steht ganz hinten ein unbedingtes

return ("none")
.
Das würde ja dann immer "None" zurückgeben.
Bin aber nicht sicher ob ein darüber stehendes Return aus der Sub schon zurückspringt.

Gruß Heiko

Mr. Flash

#400
Wenn der dritte Aufrufparameter ($t) von myFK weder ein "t", "c" oder "i" ist, wird "none" zurückgeliefert, ansonsten der Text, eine Farbe oder der Name des Icons.
RPi 4; Bullseye; FHEM 6.3; S.USV basic; BME280; TSL25911.
HM: CFG-LAN,CFG-USB-2,CC-RT-DN,Dis-(EP-)WM55,ES-PMSw1-Pl,ES-TX-WM,LC-Dim1T-FM,LC-Sw1-FM,LC-Sw2-FM,MOD-RPI-PCB,OU-CFM-Pl,RC-Dis-H-x-EU,SCI-3-FM,Sec-MDIR-2,-RHS,-SD,-SC-2,-SCo,-Sir-WM,-TiS,-WDS-2,TC-IT-WM-W-EU,WDS10-TH-O,WDS30-OT2-SM.
Shelly's.

hauwech

... Nik, dem ich den Code zwei Beiträge drüber geklaut hatte, war schneller  :)
Den Rest mit dem großen Icon kann ich morgen erst testen, danke erstmal.
Gruß Roland
Fhem auf Intel NUC11TNKi5+M2 NVMe+32GB RAM mit Ubuntu 22.04 LTS

hauwech

#402
Grad doch nochmal schnell gecheckt: das dicke Icon kommt in der zweiten Zeile, in den nachfolgenden 4 Zeilen ist auch jeweils ein Icon, dann aber in normaler Größe. Die erste Zeile hat nur Text ohne Icon.
Gruß Roland
Fhem auf Intel NUC11TNKi5+M2 NVMe+32GB RAM mit Ubuntu 22.04 LTS

hauwech

Ich hatte mal testweise die erste Zeile mit einem Icon versehen:
              ,1 =>{#-------itteration 1
                         # 1=>'{myTx("Fenster","white","",'
   1=>'{myFK("BZ:Fenster","HG_BZ_Fenster",'
  ,2=>'{myFK("BZ:Fenster","HG_BZ_Fenster",'   
                          ,3=>'{myFK("KU:Fenster","HG_KU_Fenster",'   
                          ,4=>'{myFK("WZ:Fenster" ,"HG_WZ_Fenster",'
                          ,5=>'{myFK("WC:Fenster","HG_GWC_Fenster",'             
                          ,6=>'{myFK("NB:Fenster","NG_BZ_Fenster",'
                         }

Dann sehen alle Icons schön harmonisch gleich klein aus.

Indessen habe ich eine Lösung für mich, vielleicht hilft es noch jemandem:
Ich habe in meiner 99_myDisplayUtils.pm die Sub myTx geändert und statt "noIcon" "ic12" zurückgegeben.
sub myTx($$$$){#text only
   my ($p,$c,$icon,$t) = @_;
   if($t eq "t"){return $p;  }
   if($t eq "c"){return ($c?$c:"white");}
   if($t eq "i"){return ($icon?$icon:"ic12");}
   return $p;
}

Damit sind Icons in nachfolgenden Zeilen normal klein.

Gruß Roland
Fhem auf Intel NUC11TNKi5+M2 NVMe+32GB RAM mit Ubuntu 22.04 LTS

tplus

Hallo,

das Display soll den Öffnungszustand zweier Garagentore anzeigen (Nord und Süd).

Es zeigt aber keine Texte an sondern immer nur "Textblock 1" (oder 2...). Farben und Symbole werden korrekt übernommen, ein check mit DisplayWM help zeigt die gewünschten Texte an:

text :
      <text> max 2 char
      txt01_1 ->set_Nord auf
      txt01_2 ->set_Nord zu
      txt02_1 ->set_Süd auf
      txt02_2 ->set_Süd zu
      txt03_1 ->unkown
      txt03_2 ->unkown
      txt04_1 ->unkown
...


Befehl war:
set statusdisplay_Dis_01 displayWM short line1 txt01_1 red

Und: Das Display reagiert nur auf Taster 1, bei 2 wird nur die Sanduhr angezeigt.

Besten Dank für Tips...