Autor Thema: HM-CC-RT-DN Clima-Kanal: FHEMWEB-devStateIcon u.a. Tools  (Gelesen 4116 mal)

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 14882
  • "Developer"?!? Meistens doch eher "User"
HM-CC-RT-DN Clima-Kanal: FHEMWEB-devStateIcon u.a. Tools
« am: 15 Februar 2019, 13:39:48 »
Hallo zusammen,

bin grade dabei, mein UI etwas aufzuhübschen. Zielsetzung: Es soll keine andere UI genutzt werden, sondern möglichst mit FHEMWEB-Bordmitteln auszukommen sein. f18 sollte ja flexibel genug sein, um das dann auch auf unterscheidlichen Geräten darzustellen. Da meine Mitbewohner ggf. die Möglichkeit erhalten sollen, alle Geräte in ihren Räumen auch zu bedienen, sollte das ganze weg von der gerade für die HK-Thermostate üblichen Variante, das mit ReadingsGroup zu lösen.

Vorarbeiten:
Da in den "normalen" Räumen zukünftig nur noch die bedienbaren Geräte sichtbar sein sollen, habe ich allen anderen Krimskrams woanders hin geschoben, nämlich in diverse Unterräume des Raums Steuerung wie hier im Wiki und hier im Forumsbeitrag kurz beschrieben. 

Webdarstellung der RT's und WT's, insbesondere: das "Icon":
Leider haben die CUL_HM-Geräte häufig im allgemeinen und die HM-CC-RT-DN und HM-TC-IT-WM-W-EU im speziellen die Eigenart, ihre Informationen und Steuerungsmöglichkeiten über mehrere Untergeräte zu verteilen.
Dabei bin ich auf einen Beitrag des Modulautors von CUL_HM hier gestoßen, der seine HK-Thermostate auch nur über die Clima-Kanäle steuert. Da die desired-temp nur über diesen Kanal sinnvoll erreicht werden kann, und diese einstellbar sein sollte (templates werden nicht benötigt, der Rest geht anders, s.u.), wird eben nur dieser in der Raumansicht angezeigt. Auszugsweises Beispiel für einen RT (für einen WT geht das genauso mit dem Climate-Kanal):
attr Thermostat_Esszimmer_Gang_Clima alias HK Esszimmer (Gang)
attr Thermostat_Esszimmer_Gang_Clima devStateIcon {devStateIcon_Clima($name)}
attr Thermostat_Esszimmer_Gang_Clima group Heizung
attr Thermostat_Esszimmer_Gang_Clima icon hm-cc-rt-dn
attr Thermostat_Esszimmer_Gang_Clima webCmd desired-temp
Es wird also für das devStateIcon Perl-Code aufgerufen. Dieser ist in der angehängten 99_myUtils_Homematic.pm enthalten und generiert - je nach Typ - "ein" devStateIcon, das aus mehreren Elementen besteht, die jeweils für sich wieder anklickbar sind und dann unterschiedliche Aktionen auslösen. Dargestellt und gesteuert werden nicht nur der Clima(te)-Kanal, sondern teilweise auch das Hauptdevice. Der einzige Nachteil, den ich bisher entdecken konnte: Werden Aktionen am Hauptdevice ausgelöst, dauert es uU. eine Zeitlang, bis "das" Icon sich aktualisiert hat, hier muß man ggf. einen Browser-refresh auslösen, damit das direkt angezeigt wird.

Elemente:
- Batteriesymbol: dynamisch nach batteryLevel; sind CMD_pending, erscheint ein anderes Symbol, bei NACK wird das dann rot. Wird eine Batterie angezeigt, löst ein Klick "getConfig" aus, ist was pending etc., erfolgt "clear msgEvents".
- Schloß: zeigt an, ob ein lokaler LockMode gesetzt ist (toggle zwischen den Modi)
- Modus: Schaltet zwischen Auto und Manual um.
- Ventilstand (RT) oder Programm (Weiterschalten) + Luftfeuchtigkeit
- Ist-Temperatur: Klick auf das Thermometer löst Boost-Modus aus

Sonstiges:
In der myUtils ist auch etwas Code enthalten, um einen einzelnen WT oder RT in den partyMode zu versetzen. Die Basis dazu kommt aus dem Wiki, der Aufruf ist jedoch anders und es sind zwei Varianten möglich:
- Einmal über die Angabe aller Elemente:
{HM_TC_Holiday (<Thermostat>,"16", "14.02.19", "16:30", "15.02.19" ,"05:00")}- oder über eine verkürzte Fassung:{easy_HM_TC_Holiday(<Thermostat>,"16" [,<startsec>,<Dauer in Sec>])}Angabe von Startsekunde und Dauer sind optional, es kann "now" für Startsekunde verwendet werden, dann wird sofort gestartet, ohne Angabe der Dauer wird dann für 3 (abgerundete!) Stunden der PartyMode aktiviert. "stop" als Startsec beendet den Partymode bei der nächsten regulären Datenübernahme vom RT.

Viel Spaß damit, Verbesserungsvorschläge sind selbstredend willkommen.

Beta-User

EDIT: Formatierung, PM jetzt mit commandref...
EDIT 2: Update der pm v.a. wg. commState

Statistik: ca. 55 Downloads Stand 11/2020
« Letzte Änderung: 14 November 2020, 08:53:48 von Beta-User »
Server: HP-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn:MySensors, Weekday-&RandomTimer, Twilight,  AttrTemplate {u.a. mqtt2, mysensors, zwave}
Gefällt mir Gefällt mir x 3 Informativ Informativ x 2 Liste anzeigen

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 14882
  • "Developer"?!? Meistens doch eher "User"
Hallo zusammen,

zum einen kurz die Info: der Code beinhaltet jetzt auch eine kleine commandref (engl).

Und weil's thematisch vielleicht ganz gut paßt, noch ein paar einfachere Dinge für CUL_HM-Gerätschaft. Bilder sind unten angefügt:

HM-LC-Bl1PBU-FM:
Das devStateIcon verursacht bei einem Jalousienstand in der oberen Hälfte eine Fahrt nach unten, sonst nach oben. Da mir das etwas wenig Steuerelemente waren, gibt es noch hoch und runter und einen Slider für alles dazwischen. Damit man leicher sehen kann, was offen und was zu ist, das ganze in der Brightness-Variante:attr Jalousie_Mitte cmdIcon on:fts_shutter_up off:fts_shutter_down
attr Jalousie_Mitte devStateIcon off:fts_shutter_up:up on:fts_shutter_down:down 9\d.*:fts_shutter_10:down 8\d.*:fts_shutter_20:down 7\d.*:fts_shutter_30:down 6\d.*:fts_shutter_40:down 5\d.*:fts_shutter_50:down 4\d.*:fts_shutter_60:up 3\d.*:fts_shutter_70:up 2\d.*:fts_shutter_80:up 1\d.*:fts_shutter_90:up 0\d.*:fts_shutter_100:up .*::control_centr_arrow_up
attr Jalousie_Mitte icon fts_shutter_updown
attr Jalousie_Mitte webCmd on:off:pct
attr Jalousie_Mitte widgetOverride pct:colorpicker,BRI,0,1,100

HM-PB-6-WM55:
Angezeigt wird die zuletzt gedrückte Taste mit
attr Schalter_Spuele devStateIcon .*Btn_01.*:taster_ch6_1 .*Btn_02.*:taster_ch6_2 .*Btn_03.*:taster_ch6_3 .*Btn_04.*:taster_ch6_4 .*Btn_05.*:taster_ch6_5 .*Btn_06.*:taster_ch6_6
attr Schalter_Spuele icon it_remote

HM-LC-SW2-FM
:
Da braucht man eigentlich gar nichts machen, einfach nur an dem Kanal-Device z.B. folgendes, das webCmd : schaltet dabei die Anzeige weiterer Elemente aus:
attr Licht_Bad_Decke alias Licht Bad Decke
attr Licht_Bad_Decke group Licht
attr Licht_Bad_Decke icon FS20.off
attr Licht_Bad_Decke webCmd :

Auch damit ggf. viel Spaß!
Server: HP-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn:MySensors, Weekday-&RandomTimer, Twilight,  AttrTemplate {u.a. mqtt2, mysensors, zwave}
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline rrnetz

  • Newbie
  • Beiträge: 1
sieht sehr gut aus.
wie bekomme ich die devstateicon farbig, meine sind weiss

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 14882
  • "Developer"?!? Meistens doch eher "User"
Hallo und willkommen im Forum, rrnetz.

Die Icons sollten eigentlich - abgesehen von den Störfällen - dem allgemeinen Farbschema entsprechen. Das ist bei mir f18@dark.

@all: Ich habe den Code nochmal etwas erweitert, jetzt sollten für den "easy-Holiday/Party-Modus" auch weitere Zeitangaben funktionieren, Details in der cref.
Server: HP-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn:MySensors, Weekday-&RandomTimer, Twilight,  AttrTemplate {u.a. mqtt2, mysensors, zwave}

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 14882
  • "Developer"?!? Meistens doch eher "User"
Antw:HM-CC-RT-DN Clima-Kanal: FHEMWEB-devStateIcon u.a. Tools
« Antwort #4 am: 13 November 2020, 11:10:40 »
Hallo zusammen,

nachdem jüngst der erste Z-Wave-Thermostat in meinem Zoo gelandet war und sowieso das Thema "weekprofile" anstand, ist jetzt die file im ersten Post noch um zwei Routinen erweitert worden, mit denem man zwischen HMinfo-konformen Formaten und weekprofile@useTopics konvertieren kann.

Da ich bisher nur eine "flache Struktur" hatte, bei der alle Profile in der tempList-File enthalten waren (und die Anwendungsfälle/zuordnungen dann via notify erfolgt sind) und das nicht wie im Wiki auf verschiedene "Topic"-Dateien verteilt war, hatte ich dazu einen etwas anderen Code genutzt, als jetzt im ersten Post enthalten ist. Da sind ein paar Dinge geändert, die sich in der Nachschau als verbesserungswürdig herausgestellt haben - feedback wäre also willkommen. Der hier gepostete sollte jetzt auch in der Lage sein,

- mehrere tempList-files aus dem Attribut bei HMinfo zu importieren, (die file-Namen sollten dann als Topics gesetzt werden), und
- beim Export aus weekprofile heraus dann für jeden Topic eine eigene File zu generieren.
Weiter ist gg. der Ausgangsversion die Benennung von Profil und Topic getauscht, mein anonymisierter Aufschrieb paßt daher in der Beziehung nicht mehr ganz, dürfte aber ggf. trotzdem interessant sein für diejenigen, die bisher nicht mit weekprofile gearbeitet haben:

Das Ausgangsnotify war (RAW):
defmod n_BW_Ferientag notify BW_Ferientag  { Value("BW_Ferientag") ? \
fhem "set Thermostat_Wohnzimmer_.*_Clima tempListTmpl restore FHEM/99_tempList.cfg:Wohnzimmer_Ferien,\
set Thermostat_Esszimmer_.*_Clima tempListTmpl restore FHEM/99_tempList.cfg:Esszimmer_Ferien,\
set Thermostat_Buero_Clima tempListTmpl restore FHEM/99_tempList.cfg:Buero_Ferien,\
set Thermostat_EssZi_Climate regSet weekPrgSel prog2"\
: fhem "set Thermostat_Wohnzimmer_.*_Clima tempListTmpl restore FHEM/99_tempList.cfg:Wohnzimmer,\
set Thermostat_Esszimmer_.*_Clima tempListTmpl restore FHEM/99_tempList.cfg:Esszimmer,\
set Thermostat_Buero_Clima tempListTmpl restore FHEM/99_tempList.cfg:Buero,\
set Thermostat_EssZi_Climate regSet weekPrgSel prog1" }

Import von HMinfo zu meinem "Einheits-weekprofile"-Device namens "weekprofile":{hm_copy_HMInfoTowp("hm","weekprofiles")}Umbenennungen (Achtung: topic- und profile-Namen sind im neuen Code getauscht):set weekprofiles copy_profile 99_tempList.cfg:Bad_OG Bad_OG:default
set weekprofiles copy_profile 99_tempList.cfg:Buero Buero:default
set weekprofiles copy_profile 99_tempList.cfg:Buero_Ferien Buero:Ferien
set weekprofiles copy_profile 99_tempList.cfg:Hobbyraum Hobbyraum:default
set weekprofiles copy_profile 99_tempList.cfg:Hobbyraum_Gast Hobbyraum:Gast
set weekprofiles copy_profile 99_tempList.cfg:Esszimmer Esszimmer:default
set weekprofiles copy_profile 99_tempList.cfg:Esszimmer_Ferien Esszimmer:Ferien
set weekprofiles copy_profile 99_tempList.cfg:Flur Flur:default

set weekprofiles copy_profile 99_tempList.cfg:Kinder_Ferien Kinder:Ferien
set weekprofiles copy_profile 99_tempList.cfg:Adam Kind1:default
set weekprofiles copy_profile 99_tempList.cfg:Berta_hinten Kind2_hinten:default
set weekprofiles copy_profile 99_tempList.cfg:Berta_vorne Kind2_vorne:default
set weekprofiles copy_profile 99_tempList.cfg:Caesar Kind3:default

set weekprofiles copy_profile 99_tempList.cfg:Schlafzimmer Schlafzimmer:default
set weekprofiles copy_profile 99_tempList.cfg:Wohnzimmer Wohnzimmer:default
set weekprofiles copy_profile 99_tempList.cfg:Wohnzimmer_Ferien Wohnzimmer:Ferien
set weekprofiles copy_profile 99_tempList.cfg:Zentrale_Esszimmer Esszimmer_WT:default

Das "allgemeine Kinder-Ferienprogramm" für alle ausrollen:
set weekprofiles reference_profile Kinder:Ferien Kind1:Ferien
set weekprofiles reference_profile Kinder:Ferien Kind2_hinten:Ferien
set weekprofiles reference_profile Kinder:Ferien Kind2_vorne:Ferien
set weekprofiles reference_profile Kinder:Ferien Kind3:Ferien

weekprofile in den Thermostaten (bzw. im Clima-Kanal zuordnen):
check:
list TYPE=CUL_HM:FILTER=model=HM-CC-RT-DN:FILTER=chanNo=04erforderliches userattr ergänzen:
attr TYPE=CUL_HM:FILTER=model=HM-CC-RT-DN:FILTER=chanNo=04 userattr weekprofile
weekprofile
Zuordnungen machen:
attr Thermostat_Bad_OG_Clima weekprofile Bad_OG
attr Thermostat_Buero_Clima weekprofile  Buero
attr Thermostat_Hobbyraum_Clima weekprofile Hobbyraum
attr Thermostat_Esszimmer_Gang_Clima weekprofile  Esszimmer
attr Thermostat_Esszimmer_Wand_Clima weekprofile Esszimmer
[...]

notify ändern (RAW):
defmod n_BW_Ferientag notify BW_Ferientag  { ReadingsNum('BW_Ferientag','state',0) ? \
fhem("set weekprofiles restore_topic Ferien,\
set Thermostat_EssZi_Climate regSet weekPrgSel prog2")\
: fhem("set weekprofiles restore_topic default,\
set Thermostat_EssZi_Climate regSet weekPrgSel prog1") }
Den WT habe ich erst mal noch nicht angefasst, das ist eigentlich auch ok mit den unterschiedlichen Programmen.

Bin jetzt mal gespannt, wie das so läuft...

Anm.: Das Verfahren ist vermutlich auch für all diejenigen interessant, die von CUL_HM auf HMCCU.* umstellen wollen/müssen, denn weekprofile kann auch mit diesem TYPE umgehen.


Wer die Möglichkeiten schätzt, die HMinfo bietet, um die Konsistenz der übertragenen Profile zu prüfen, wird ggf. eine Möglichkeit suchen, die von weekprofile ggf. geänderten Wochenpläne auch wieder zu exportieren. Auch dafür ist eine Routine enthalten, die allerdings auch nach dem Antesten angepaßt worden ist, damit die einzelnen Topics auch je eigene Dateien enthalten. Ist daher (nach der Änderung) ungetestet.

Da es jetzt auch noch um ein paar andere Dinge geht, ist der Thread-Titel jetzt angepasst.

Wie immer: Feedback ist willkommen...
« Letzte Änderung: 13 November 2020, 16:23:12 von Beta-User »
Server: HP-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn:MySensors, Weekday-&RandomTimer, Twilight,  AttrTemplate {u.a. mqtt2, mysensors, zwave}

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 14882
  • "Developer"?!? Meistens doch eher "User"
Antw:HM-CC-RT-DN Clima-Kanal: FHEMWEB-devStateIcon u.a. Tools
« Antwort #5 am: 14 November 2020, 08:56:44 »
Update: da weekprofile in topic:entity "denkt", waren meine "Tauschaktionen" grade verkehrt herum...

Wie dem auch sei, entsprechend angepaßter Code ist im ersten Beitrag zu finden, die Export-Funktion ist auch soweit getestet, und für den import habe ich testweise eine Schleife dazugebastelt, die bei mehreren entities in der Ausgangsfile das erste als Referenzprofil verwenden sollte. Feedback ist wie immer willkommen...
Server: HP-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn:MySensors, Weekday-&RandomTimer, Twilight,  AttrTemplate {u.a. mqtt2, mysensors, zwave}

Offline Frini

  • Full Member
  • ***
  • Beiträge: 266
Antw:HM-CC-RT-DN Clima-Kanal: FHEMWEB-devStateIcon u.a. Tools
« Antwort #6 am: 12 März 2021, 07:24:43 »
Morgen,
Danke für die Anregungen. Gefällt mir sehr gut.
Bei den Rollladen habe ich eine Frage. Wie kann ich denn das devStateIcon so darstellen, dass es bei erneuten drücken stoppt?
Irgendwie klappt es nicht.

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 14882
  • "Developer"?!? Meistens doch eher "User"
Antw:HM-CC-RT-DN Clima-Kanal: FHEMWEB-devStateIcon u.a. Tools
« Antwort #7 am: 12 März 2021, 07:53:44 »
Morgen,
Danke für die Anregungen. Gefällt mir sehr gut.
Danke für die Rückmeldung!

Was das mit dem Rollladen-stop angeht:
Das ist kein "intelligentes" devStateIcon, das erkennen kann, ob der Rollladen fährt. Dafür müßte man - so wie bei der ZWave-Variante oder dem RT-DN - Perlcode verwenden und das "motor"-Reading auswerten.
Wenn du Code liefern magst, baue ich das gerne ein :) .

Ansonsten könntest du auch einfach einen expliziten webCmd/cmdIcon-stop-Button ergänzen.
Ich hatte das früher mal drin, hab's aber nie benutzt, weil man ja bei der Bedienung über FHEMWEB auch immer den slider nehmen kann, um seinen Wünschen Ausdruck zu verleihen.
Server: HP-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn:MySensors, Weekday-&RandomTimer, Twilight,  AttrTemplate {u.a. mqtt2, mysensors, zwave}