Zeigt her eure Füße,
zeigt her eure Schuh
Und sehet den fleißigen FHEM Usern zu.
Sie basteln, sie basteln, sie basteln den ganzen Tag
Na, wer erinnert sich noch an dieses alte Kinderlied ? ( wenn nicht Google hilft )
Die Idee kam mir gestern in einem anderen Thread. Zeigt doch mal wie Ihr eure MAX Geräte so darstellt, egal ob FHEMWEB, TabletUI, Floorplan oder readingsGroup oder oder.
Es gibt bestimmt schöne oder ideenreiche Umsetzungen die der eine oder andere auch gern hätte. Es muß auch nicht unnbedingt super aufwändig sein, so mancher User wünscht sich bestimmt auch erwas schlichtes, einfaches. Aber bitte, um beim Kinderlied zu bleiben : zeigt nicht nur eure schönen Schuhe als Screenshot, sondern auch die nackten Füße darunter in Form eines Code Tags. Ich mache mal den Anfang :
attr MAX_Waschkueche devStateIcon auto:sani_heating_automatic@lightgray manual:sani_heating_manual@#ff2F2F ok:measure_battery_100@green low:measure_battery_0@red (0|alive):10px-kreis-gruen (1|dead):10px-kreis-rot
attr MAX_Waschkueche stateFormat mode\
battery\
rferror\
Activity
attr MAX_Waschkueche webCmd temperature:desiredTemperature:valveposition
attr MAX_Waschkueche webCmdLabel Ist<br>:Soll<br>:Ventil<br>
attr MAX_Waschkueche widgetOverride valveposition:slider,0,1,100 temperature:selectnumbers,15,0.1,27,1,lin
Das WT ist etwas kürzer da hier keine Ventilpostion gezeigt wird :
attr 1_WT_Esszimmer devStateIcon auto:sani_heating_automatic@lightgray manual:sani_heating_manual@#ff2F2F ok:measure_battery_100@green low:measure_battery_0@red (0|alive):10px-kreis-gruen (1|dead):10px-kreis-rot
attr 1_WT_Esszimmer stateFormat mode\
battery\
rferror\
Activity
attr 1_WT_Esszimmer webCmd temperature:desiredTemperature
attr 1_WT_Esszimmer webCmdLabel Ist<br>:Soll<br>
attr 1_WT_Esszimmer widgetOverride temperature:selectnumbers,15,0.1,26,1,lin
Sammelst du etwa fuer ein attrTemplate?
Nein eher für ein Wiki Bilderbuch - andere Geräte / Gruppen könnten auch mal sowas starten.
Als ich hier anfing und meine Oberfläche total häßlich war habe ich oft über Screenshots andere User gestaunt ala "das hätte ich so auch gern, nur wie hat der/die das gemacht ?" (meist FHEMWEB , SVG)
mach ich mit ...
attr Heizungswerte commands { 'desiredTemperature' => 'desiredTemperature:' }
attr Heizungswerte valueStyle { \
if ($READING =~ /emperature$/ or $READING =~ /state$/){\
use Scalar::Util qw(looks_like_number);;;;\
if (looks_like_number($VALUE)) {\
if ($VALUE <= 16){\
'style="color:blue;;;;font-weight:bold"'\
}\
elsif ($VALUE <= 20.9){\
'style="color:green"'\
}\
elsif ($VALUE >= 20.9){\
'style="color:red"'\
}\
}\
}\
}
ZitatNein eher für ein Wiki Bilderbuch - andere Geräte / Gruppen könnten auch mal sowas starten.
Ein attrTemplate waere aber fuer den Benutzer einfacher anzuwenden :)
Es gibt attrTemplates fuer hmccu (https://svn.fhem.de/trac/browser/trunk/fhem/FHEM/lib/AttrTemplate/hmccu.template), huedevice (https://svn.fhem.de/trac/browser/trunk/fhem/FHEM/lib/AttrTemplate/huedevice.template), mysensors (https://svn.fhem.de/trac/browser/trunk/fhem/FHEM/lib/AttrTemplate/mysensors.template), MQTT2 (https://svn.fhem.de/trac/browser/trunk/fhem/FHEM/lib/AttrTemplate/mqtt2.template), HTTPMOD
(https://svn.fhem.de/trac/browser/trunk/fhem/FHEM/lib/AttrTemplate/httpmod.template)
ach jetzt ist der Groschen gefallen, ich werde mal mit Beta-User reden.
Lese mit...
Du müsstest entweder setExtensions aktivieren (eher nicht, oder?) oder AttrTemplate solo.
Rest ist copy/paste, unterstütze gerne für die erste Zeit.
Nachdem Rudi die Idee in den Raum geworfen hat und Beta-User mich über dunkle Pfade ans Licht geführt hat :
Die Unterstützung für attrTemplate steht und nun liegt es an Euch hier kreatives Leder zu liefern das ich auf die Leisten nageln kann :)
:)
Was die dunklen Pfade angeht, vorab mal Danke für die nette Rückmeldung!
Manches ist mir aber an der Stelle auch noch nicht ganz klar, vor allem in der Wechselwirkung mit anderem (kein eigentliches MAX-Problem)...
Insbesondere beschäftigt mich grade die Frage, wann wer was wo sieht.
Vorab mal die "einfache Anmerkung", dass m.E. noch die filter:-Angaben verengt werden sollten, indem gleich erst mal nur auf MAX begrenzt wird. Beispiel:
filter:TYPE=MAX:FILTER=devtype=(1|2)
Sonst könnte es sein, dass das attrTemplate auch bei anderen Geräten ganz anderer Typen angezeigt wird, nur weil das "zufällig" auch "devtype" kennt.
Der schwierigere Teil richtet sich eher an Rudi:
Nachdem sich attrTemplate ja zunehmender Verbreitung erfreut, aber die wenigsten user vermutlich registriert haben, dass es die Möglichkeit gibt, das feature ganz auszuschalten, werden also im Hintergrund "per default" eine ganze Ladung templates geladen, sobald irgendwo SetExtensions aktiv ist. Nutzt man jetzt einzelne Module gar nicht, werden trotzdem auch diese templates geladen, man bekommt sie halt nur angezeigt, wenn der filter paßt.
Kann nicht beurteilen, ob die paar KB wirklich ein Problem sind, aber es wird halt immer mehr (und das ist auch gut so)...
Jetzt könnte man das lösen, indem man auch noch "prereq:" setzt, aber das müßte dann bei jedem einzelnen Template sein, und man müßte beim ersten "Define" eines TYPE im laufenden Betrieb in jedem Modul (?) nochmal das AttrTemplate_Initialize() aufrufen, oder?
Ist mal wieder noch nicht zu Ende gedacht, aber meine Idee dazu wäre, eine Art (optionales!) "fileprereq:" (oä.) einzuführen, über das man alle Templates einer File "abschalten" kann? Bräuchte dann halt weitere Mechanismen, die sicherstellen, dass nach einem Define AttrTemplate_Initialize() aufgerufen wird, (sofern das überhaupt Sinn macht, was man sich ja auch intern merken könnte). (Sollte dann irgendwo vor dem ersten Template-Namen stehen).
Oder übersehe ich mal wieder was?
(Wenn das eine längere Diskussion erfordert, sollten wir das abtrennen, ich wollte nur die "filter:"-Anmerkung auf jeden Fall noch loswerden, sonst wäre ich gleich in den Developer-Bereich gegangen...).
ZitatKann nicht beurteilen, ob die paar KB wirklich ein Problem sind, aber es wird halt immer mehr (und das ist auch gut so)...
Die aktuell ca 250kb an attrTemplate-Dateien bedeuten einen Hauptspeicher-Mehrverbrauch von ca 0.5MB.
Lass uns das Thema nochmal aufgreifen, wenn wir ueber einen Unterschied von 5MB reden.
Wenn jemand die letzten Bytes einsparen will, kann immer noch "attr global disableFeatures attrTemplate" setzen.
Zitat von: Beta-User am 09 März 2020, 10:15:46
(Wenn das eine längere Diskussion erfordert, sollten wir das abtrennen, ich wollte nur die "filter:"-Anmerkung auf jeden Fall noch loswerden, sonst wäre ich gleich in den Developer-Bereich gegangen...).
Denke auch das wir mit dem Thema bei Developer besser aufgehoben sind, das Thema Filter leuchtet mir ein und werde ich mit der nächsten Version ändern, u.a. weil seit meinem eigenen FHEM Update auch das "set DEVICE attrTemplate speech_recognition_type_thermostate" ohne Fehler geht.
Zitat von: Wzut am 09 März 2020, 10:50:00
weil seit meinem eigenen FHEM Update auch das "set DEVICE attrTemplate speech_recognition_type_thermostate" ohne Fehler geht.
Habe grad das template nochmal umbenannt, da war wohl im generalDeviceType noch jeweils ein "e" zu viel; habe mir daher erlaubt, das in deiner file auch direkt zu ändern und die Versionierung "scharf" zu schalten (das hatte ich bei der speech-recogn. auch noch nicht gemacht und war grad eh' dabei)...
(Also bevor du weiter editierst: bitte mit der Version im svn abgleichen, ich werde an die Datei jetzt nicht mehr ungefragt was ändern).
(Zum Rest: ist ok, wenn wir mal bei den 5 MB sind, können wir das an anderer Stelle dann wieder aufgreifen).
OK, alles klar THX
Ma eine Frage in Mqqt2 kann ich die templates nutzen, jedoch nicht bei max, was muß man machen im de Templates zu nutzen. Habe nirgends eine brauchbare Anleitung gefunden
Wenn du die Datei 10_MAX aus dem Beta Thread benutzt hast du das set Kommnando attrTemplate zur Verfügung. Das aktuelle max.template hatte aber einen Fehler, dann wird nichts angezeigt. Ein FHEM Update ab ca. 8:00 Uhr hilft in dem Fall.
Nutzt du allerdings noch das original 10_MAX Modul dann gibt es das set Kommando attrTemplate gar nicht.
Ok danke
Ab wann sind die neuen Module im Svn?
Gute Frage, das hängt stark davon ab was ich noch an Bugberichten von den Beta Testern bekomme (es dürften mehr sein ....)
Aber versuch morgen ab 8:00 Uhr mal ein FHEM Update , ich denke ich kann heute Abend noch eine light Version einchecken die dann zumindest das set attrTemplate unterstützt.
Super ist da. Vielen Dank.
Beim Auswählen bekomme ich folgende Meldung:
Wohnzimmer: unknown attribute debug. Type 'attr Wohnzimmer ?' for a detailed list.
Wohnzimmer: unknown attribute actCycle. Type 'attr Wohnzimmer ?' for a detailed list.
Wohnzimmer: unknown attribute autosaveConfig. Type 'attr Wohnzimmer ?' for a detailed list.
Unknown template_entry_name speech_recognition_type_thermostate
ja ist klar , diese Attribute gibt es bis jetzt nur in der Beta, stört aber den Rest nicht
Bei dem type_thermostate ist ein e zuviel im template, habe es gefixt
Wie habt ihr denn eure MAX Shutter angezeigt.
Hier mal meins:
Wie könnte ich meine "persönlichen" templates vor einem überschreiben durch ein Update sichern/anlegen?
MEIN "max.template" (Dieses template habe noch nicht bereinigt und dient zum ausprobieren. Aktuell nutze ich davon 2 templates)
######################################################################
# $Id: max.template 21455 2020-03-19 16:39:47Z Wzut $
#
# Comments start with #. Empty lines are ignored.
# Syntax of one entry:
# name: line,
# one optional filter: line
# zero or more par: lines
# FHEM-Commands
# filter:INTERNAL=VALUE (optional)
# par: name of the parameter; comment; perl_code (optional)
# perl_code returns a value for the parameter, or undef.
# If undef, the user has to specify them (the comment is shown to the user)
######################################################################
######################################################################
name:MAX_HeatingThermostat_dark
filter:TYPE=MAX:FILTER=devtype=(1|2)
desc:To configure a HeatingThermostat
order:M1
par:ICON;ICON as set, defaults to MAX;{ AttrVal("DEVICE","icon","max_heizungsthermostat") }
par:COMMENT;COMMENT as set, defaults to MAX;{ AttrVal("DEVICE","comment","Configured using template MAX_HeatingThermostat_1") }
par:DEBUG;DEBUG as set, defaults to MAX;{ AttrVal("DEVICE","debug","1") }
par:ACT;ACT as set, defaults to MAX;{ AttrVal("DEVICE","actCycle","1:0") }
par:CONFIG;CONFIG as set, defaults to MAX;{ AttrVal("DEVICE","autosaveConfig","1") }
par:EOCR;EOCR as set, defaults to MAX;{ AttrVal("DEVICE","event-on-change-reading",".*") }
attr DEVICE icon ICON
attr DEVICE comment COMMENT
attr DEVICE devStateIcon auto:sani_heating_automatic@lightgray manual:sani_heating_manual@yellow ok:measure_battery_100@green low:measure_battery_0@red (0|alive):10px-kreis-gruen (1|dead):10px-kreis-rot timeout:10px-kreis-gelb
attr DEVICE stateFormat mode\
battery\
rferror\
Activity
attr DEVICE webCmd temperature:desiredTemperature:valveposition
attr DEVICE webCmdLabel LABEL
attr DEVICE widgetOverride valveposition:slider,0,1,100 temperature:selectnumbers,15,0.1,29,1,lin
attr DEVICE debug DEBUG
attr DEVICE actCycle ACT
attr DEVICE autosaveConfig CONFIG
attr DEVICE event-on-change-reading EOCR
set DEVICE attrTemplate speech_recognition_type_thermostat
######################################################################
######################################################################
name:MAX_HeatingThermostat_dark_jonien
filter:TYPE=MAX:FILTER=devtype=(1|2)
desc:To configure a HeatingThermostat
order:M1
par:ICON;ICON as set, defaults to MAX;{ AttrVal("DEVICE","icon","max_heizungsthermostat") }
par:COMMENT;COMMENT as set, defaults to MAX;{ AttrVal("DEVICE","comment","Configured using template MAX_HeatingThermostat_1") }
par:DEBUG;DEBUG as set, defaults to MAX;{ AttrVal("DEVICE","debug","1") }
par:ACT;ACT as set, defaults to MAX;{ AttrVal("DEVICE","actCycle","1:0") }
par:CONFIG;CONFIG as set, defaults to MAX;{ AttrVal("DEVICE","autosaveConfig","1") }
par:EOCR;EOCR as set, defaults to MAX;{ AttrVal("DEVICE","event-on-change-reading",".*") }
attr DEVICE icon ICON
attr DEVICE comment COMMENT
attr DEVICE devStateIcon temporary:time_timer@lightblue auto:sani_heating_automatic@green manual:sani_heating_manual@grey ok:measure_battery_100@green low:measure_battery_0@red (0|alive):10px-kreis-gruen (1|dead):10px-kreis-rot timeout:10px-kreis-gelb
attr DEVICE stateFormat mode\
battery\
rferror\
Activity
attr DEVICE webCmd temperature:desiredTemperature:valveposition
attr DEVICE webCmdLabel LABEL
attr DEVICE widgetOverride valveposition:selectnumbers,0,1,100,0,lin temperature:selectnumbers,15,0.1,29,1,lin
attr DEVICE webCmdLabel Ist °C:Soll °C:Valve
attr DEVICE debug DEBUG
attr DEVICE actCycle ACT
attr DEVICE autosaveConfig CONFIG
attr DEVICE event-on-change-reading EOCR
attr DEVICE room 0_Virtuelle-Geräte->Fenster,CUL_HM,Fenster,Hzg_MAX,Hzg_MAX_Übersicht,Hzg_Verbrauch_Steuerung,Hzg_Verbrauch_Übersicht
set DEVICE attrTemplate speech_recognition_type_thermostat
######################################################################
######################################################################
name:MAX_WallMountedThermostat_dark
filter:TYPE=MAX:FILTER=devtype=(3|7)
desc:To configure a WallMountedThermostat
order:M2
par:ICON;ICON as set, defaults to MAX;{ AttrVal("DEVICE","icon","max_wandthermostat") }
par:COMMENT;COMMENT as set, defaults to MAX;{ AttrVal("DEVICE","comment","Configured using template MAX_WallMountedThermostat_1") }
par:DEBUG;DEBUG as set, defaults to MAX;{ AttrVal("DEVICE","debug","1") }
par:ACT;ACT as set, defaults to MAX;{ AttrVal("DEVICE","actCycle","0:15") }
par:CONFIG;CONFIG as set, defaults to MAX;{ AttrVal("DEVICE","autosaveConfig","1") }
par:EOCR;EOCR as set, defaults to MAX;{ AttrVal("DEVICE","event-on-change-reading",".*") }
par:LABEL;;{ (AttrVal('global','language','DE') eq 'DE') ? return 'Ist<br>:Soll<br>:Ventil<br>' : return 'Actual<br>Desired<br>:Valveposition<br>' }
attr DEVICE icon ICON
attr DEVICE comment COMMENT
attr DEVICE debug DEBUG
attr DEVICE actCycle ACT
attr DEVICE devStateIcon auto:sani_heating_automatic@lightgray manual:sani_heating_manual@yellow ok:measure_battery_100@green low:measure_battery_0@red (0|alive):10px-kreis-gruen (1|dead):10px-kreis-rot timeout:10px-kreis-gelb
attr DEVICE stateFormat mode\
battery\
rferror\
Activity
attr DEVICE webCmd temperature:desiredTemperature
attr DEVICE webCmdLabel LABEL
attr DEVICE widgetOverride temperature:selectnumbers,15,0.1,29,1,lin
attr DEVICE autosaveConfig CONFIG
attr DEVICE event-on-change-reading EOCR
set DEVICE attrTemplate speech_recognition_type_thermostat
######################################################################
######################################################################
name:MAX_ShutterContact_darkorg
filter:TYPE=MAX:filter:devtype=(4|6)
desc:To configure a ShutterContact
order:M3
par:ICON;ICON as set, defaults to MAX;{ AttrVal("DEVICE","icon","hm-sec-win") }
par:DEBUG;DEBUG as set, defaults to MAX;{ AttrVal("DEVICE","debug","1") }
par:COMMENT;COMMENT as set, defaults to MAX;{ AttrVal("DEVICE","comment","Configured using template MAX_ShutterContact_1") }
par:EOCR;EOCR as set, defaults to MAX;{ AttrVal("DEVICE","event-on-change-reading",".*") }
par:LABEL;;{ (AttrVal('global','language','DE') eq 'DE') ? return 'Ist<br>:Soll<br>' : return 'Actual<br>Desired<br>' }
attr DEVICE icon ICON
attr DEVICE comment COMMENT
attr DEVICE debug DEBUG
attr DEVICE event-on-change-reading EOCR
attr DEVICE devStateIcon closed:fts_window_1w opened:fts_window_1w_open
######################################################################
######################################################################
name:MAX_ShutterContact_dark4
filter:TYPE=MAX:filter:devtype=(4|1)
desc:To configure a ShutterContact
order:M3
par:ICON;ICON as set, defaults to MAX;{ AttrVal("DEVICE","icon","hm-sec-win") }
par:DEBUG;DEBUG as set, defaults to MAX;{ AttrVal("DEVICE","debug","1") }
par:COMMENT;COMMENT as set, defaults to MAX;{ AttrVal("DEVICE","comment","Configured using template MAX_ShutterContact_1") }
par:EOCR;EOCR as set, defaults to MAX;{ AttrVal("DEVICE","event-on-change-reading",".*") }
par:LABEL;;{ (AttrVal('global','language','DE') eq 'DE') ? return 'Ist<br>:Soll<br>' : return 'Actual<br>Desired<br>' }
attr DEVICE icon ICON
attr DEVICE comment COMMENT
attr DEVICE debug DEBUG
attr DEVICE event-on-change-reading EOCR
attr DEVICE devStateIcon closed:fts_window_1w opened:fts_window_1w_open
######################################################################
######################################################################
name:MAX_ShutterContact_darkall_old
filter:TYPE=MAX
desc:To configure a ShutterContact
order:M3
par:ICON;ICON as set, defaults to MAX;{ AttrVal("DEVICE","icon","hm-sec-win") }
par:DEBUG;DEBUG as set, defaults to MAX;{ AttrVal("DEVICE","debug","1") }
par:COMMENT;COMMENT as set, defaults to MAX;{ AttrVal("DEVICE","comment","Configured using template MAX_ShutterContact_1") }
par:USERREADINGS;USERREADINGS as set, defaults to MAX;{ AttrVal("DEVICE","userReadings","Timestamp {ReadingsTimestamp('Fenster_Bad','IKON2',0)}, Uhrzeit {(split(' ',ReadingsTimestamp("Fenster_Bad","state",0)))[1]},Datum {(split(' ',ReadingsTimestamp("Fenster_Bad","state",0)))[0]}, Datum2 {join("." => reverse split('-', (split(' ',ReadingsTimestamp("Fenster_Bad","state",0)))[0]))}, IKON { my $state=ReadingsVal('Fenster_Bad','state','0'); return '<div><img src="/fhem/images/default/off.png">' if($state eq "closed"); return '<div><img src="/fhem/images/default/on.png">'; }, IKON2 { my $state=ReadingsVal('Fenster_Bad','state','0'); return '<div><img src="/fhem/images/default/fts_window_2w_green.png">' if($state eq "closed"); return '<div><img src="/fhem/images/default/fts_window_2w_open_lr_red.png">'; }, IKON3 {'<div><img src="/fhem/images/default/fts_window_2w_open_lr.png">';}") }
par:EOCR;EOCR as set, defaults to MAX;{ AttrVal("DEVICE","event-on-change-reading",".*") }
par:LABEL;;{ (AttrVal('global','language','DE') eq 'DE') ? return 'Ist<br>:Soll<br>' : return 'Actual<br>Desired<br>' }
attr DEVICE icon ICON
attr DEVICE comment COMMENT
attr DEVICE userReadings USERREADINGS
attr DEVICE debug DEBUG
attr DEVICE event-on-change-reading EOCR
attr DEVICE devStateIcon opened.*.:fts_window_2w_open_lr@red tilted:fts_window_2w_2l_tilt@red closed.*.:fts_window_2w@green
#attr DEVICE devStateIcon closed*.*:fts_window_2w_green.png opened*.*:fts_window_2w_open_lr_red.png
######################################################################
######################################################################
name:MAX_ShutterContact_darkall_MAX1
filter:TYPE=MAX
desc:To configure a ShutterContact
order:M3
par:ICON;ICON as set, defaults to MAX;{ AttrVal("DEVICE","icon","hm-sec-win") }
par:DEBUG;DEBUG as set, defaults to MAX;{ AttrVal("DEVICE","debug","1") }
par:COMMENT;COMMENT as set, defaults to MAX;{ AttrVal("DEVICE","comment","Configured using template MAX_ShutterContact_MAX1") }
par:USERREADINGS;USERREADINGS as set, defaults to MAX;{ AttrVal("DEVICE","userReadings","Timestamp {ReadingsTimestamp($NAME,'IKON2',0)}, Uhrzeit {(split(' ',ReadingsTimestamp($NAME,"state",0)))[1]},Datum {(split(' ',ReadingsTimestamp($NAME,"state",0)))[0]}, Datum2 {join("." => reverse split('-', (split(' ',ReadingsTimestamp($NAME,"state",0)))[0]))}, IKON { my $state=ReadingsVal($NAME,'state','0'); return '<div><img src="/fhem/images/default/off.png">' if($state eq "closed"); return '<div><img src="/fhem/images/default/on.png">'; }, IKON2 { my $state=ReadingsVal($NAME,'state','0'); return '<div><img src="/fhem/images/default/fts_window_2w_green.png">' if($state eq "closed"); return '<div><img src="/fhem/images/default/fts_window_2w_open_lr_red.png">'; }, IKON3 {'<div><img src="/fhem/images/default/fts_window_2w_open_lr.png">';}") }
par:EOCR;EOCR as set, defaults to MAX;{ AttrVal("DEVICE","event-on-change-reading",".*") }
par:DEVSTATICON;DEVSTATICON as set, defaults to MAX;{ AttrVal("DEVICE","devStateIcon","opened.*.:fts_window_2w_open_lr@red tilted:fts_window_2w_2l_tilt@red closed.*.:fts_window_2w@green") }
par:STATEFORMAT;STATEFORMAT as set, defaults to MAX;{ AttrVal("DEVICE","stateFormat","{ReadingsVal('NAME','state','').", ".ReadingsTimestamp('NAME','state','')} ") }"
par:LABEL;;{ (AttrVal('global','language','DE') eq 'DE') ? return 'Ist<br>:Soll<br>' : return 'Actual<br>Desired<br>' }
attr DEVICE icon ICON
attr DEVICE comment COMMENT
attr DEVICE userReadings USERREADINGS
attr DEVICE debug DEBUG
attr DEVICE event-on-change-reading EOCR
attr DEVICE devStateIcon DEVSTATICON
atrr DEVICE stateFormat STATEFORMAT
# Variante: attr DEVICE devStateIcon closed*.*:fts_window_2w_green.png opened*.*:fts_window_2w_open_lr_red.png
######################################################################
######################################################################
name:MAX_ShutterContact_darkall_MAX2
filter:TYPE=MAX
desc:To configure a ShutterContact
order:M3
par:ICON;ICON as set, defaults to MAX;{ AttrVal("DEVICE","icon","hm-sec-win") }
par:DEBUG;DEBUG as set, defaults to MAX;{ AttrVal("DEVICE","debug","1") }
par:COMMENT;COMMENT as set, defaults to MAX;{ AttrVal("DEVICE","comment","Configured using template MAX_ShutterContact_MAX1") }
par:USERREADINGS;USERREADINGS as set, defaults to MAX;{ AttrVal("DEVICE","userReadings","Timestamp {ReadingsTimestamp($NAME,'IKON2',0)}, Uhrzeit {(split(' ',ReadingsTimestamp($NAME,"state",0)))[1]},Datum {(split(' ',ReadingsTimestamp($NAME,"state",0)))[0]}, Datum2 {join("." => reverse split('-', (split(' ',ReadingsTimestamp($NAME,"state",0)))[0]))}, IKON { my $state=ReadingsVal($NAME,'state','0'); return '<div><img src="/fhem/images/default/off.png">' if($state eq "closed"); return '<div><img src="/fhem/images/default/on.png">'; }, IKON2 { my $state=ReadingsVal($NAME,'state','0'); return '<div><img src="/fhem/images/default/fts_window_2w_green.png">' if($state eq "closed"); return '<div><img src="/fhem/images/default/fts_window_2w_open_lr_red.png">'; }, IKON3 {'<div><img src="/fhem/images/default/fts_window_2w_open_lr.png">';}") }
par:EOCR;EOCR as set, defaults to MAX;{ AttrVal("DEVICE","event-on-change-reading",".*") }
par:DEVSTATICON;DEVSTATICON as set, defaults to MAX;{ AttrVal("DEVICE","devStateIcon","opened.*.:fts_window_2w_open_lr@red tilted:fts_window_2w_2l_tilt@red closed.*.:fts_window_2w@green") }
par:STATEFORMAT;STATEFORMAT as set, defaults to MAX;{ AttrVal("DEVICE","stateFormat","{ReadingsVal('NAME','state','').", ".ReadingsTimestamp('NAME','state','')} ") }"
par:LABEL;;{ (AttrVal('global','language','DE') eq 'DE') ? return 'Ist<br>:Soll<br>' : return 'Actual<br>Desired<br>' }
attr DEVICE icon ICON
attr DEVICE comment COMMENT
attr DEVICE userReadings USERREADINGS
attr DEVICE debug DEBUG
attr DEVICE event-on-change-reading EOCR
attr DEVICE devStateIcon DEVSTATICON
atrr DEVICE stateFormat STATEFORMAT
# Variante: attr DEVICE devStateIcon closed*.*:fts_window_2w_green.png opened*.*:fts_window_2w_open_lr_red.png
######################################################################
also ich würde eigene Designs nicht in max.template ablegen , Thema update :)
Leg dir eine neue Template Datei an z.b. mymax.template oder jonien.template,
dort trägst du ein was du möchtest. Es dürfen da nicht nur MAX Geräte rein , wenn die Schlüsselworte passen kann das alles mögliche sein.
Da FHEM alle Template Dateien beim Neustart einliest hast du später bei der Auswahl (?) ein Mix aus allem zur Verfügung.
D.h. du siehest gar nicht das "meine" Layouts und "deine" aus verschiedenen Quellen kommen. Wichtig ist halt nur das du zum einen eindeutige Namen vergibst
und das die Filter schön zum jeweiligen Device Typ passen. ( OK, wenn sie nicht "schön" passen wird dir halt ne lange Liste angezeigt :) )
Mit dem "eigenem" template hatte ich es schon einmal ausprobiert, konnte aber nicht erkennen, das aus meiner "eigenen template Quelle" geladen wurde. Deshalb war ich bei der Original max.temlate verblieben. Nach Deinem Hinweis habe ich es jetzt geändert und alles ist gut 8)
Bei den shutter-contact habe ich folgende Filter verwendet, die aber nicht funktionieren:
filter:TYPE=MAX:FILTER:devtype=(4|1)
filter:TYPE=MAX:FILTER:devtype=(1|4)
Mit diesem Filter werden die shutter-contact angezeigt:
filter:TYPE=MAX
devicetyp=4 ist doch korrekt für den shutter-contact (?). Den 2. Parameter kann ich nicht ergründen :-\
wenn du den Filter devtype=xx benuzt muß die Zahl xx auch zum jeweiliegn Typ passen (Internal devtype)
die MAX Typen sind :
1 = HeatingThermostat
2 = HeatingThermostatPlus
3 = WallMountedThermostat
4 = ShutterContact
5 = PushButton
6 = virtualShutterContact
7 = virtualThermostat
8 = PlugAdapter
D.h. soll dein Block für Fenstercontakte sein : devtype=4. alle anderen Typen bekommen ihn erst gar nicht angezeigt.
Soll dein Block auch für virtuelle FKs möglich sein : devtype=(4|6) , d.h. entweder Typ 4 oder Typ 6
Daher findest du in meinen Templates sowas wie devtype=(1|2) -> alle Sorten von HTs
oder devtype=(3|7) -> alle Abarten von WTs
hi,
ich habe mal eine Frage zu den templates, Bei Heizreglern oder Wandthermostaten funktoniert alles und ich habe ein set AttrTemplate.
Warum nicht bei Shuttern?
Eine eigene mytemplate habe ich angelegt. Jedoch bekomme ich die Auswahl in der Dropbox nicht,.
D.h auch kein Fragezeichen um sich die Liste anzeigen zu lassen ? oder tauchen nur deine dort nicht auf ?
Nach der Änderng FHEM neu gestartet ? Poste doch mal dein Template
Hi,
habe als set nur folgendes bei einem Shutter zur Auswahl, bei Heizreglern funktioniert alles.
Ich habe die Templates hier aus dem Eintrag einfach mal als dirks.template abgespeichert um damit zu testen.
In der max.template hat sich ein "kleiner" Fehler eingeschlichen. Beim Filter steht dort ein":" statt einem "=". Nach einer Anpassung funktioniert es wieder.
filter:TYPE=MAX:filter:devtype=(4|6)
filter:TYPE=MAX:FILTER=devtype=(4|6)
Hi,
das habe ich geändert, jedoch gibt es den Punkt bei den Shuttern nicht.
siehe Bild vom letzten Post.
Ich vermute, das Du die "aktuellen" Module installiert hast, da sonst die Heizungs-Regler auch keine Auswahlmöglichkeit anzeigen würden.
https://forum.fhem.de/index.php/topic,106258.0.html (https://forum.fhem.de/index.php/topic,106258.0.html)
Ich verwende unterschiedliche Shutter. Bisher habe ich nur die von "MAX" integriert.
Hier ein Beispiel, welches bei mir funktioniert:
######################################################################
name:MAX_ShutterContact_jonien_4
filter:TYPE=MAX:FILTER=devtype=(4|6)
desc:To configure a ShutterContact
order:M3
par:ICON;ICON as set, defaults to MAX;{ AttrVal("DEVICE","icon","hm-sec-win") }
par:DEBUG;DEBUG as set, defaults to MAX;{ AttrVal("DEVICE","debug","1") }
par:COMMENT;COMMENT as set, defaults to MAX;{ AttrVal("DEVICE","comment","Configured using template MAX_ShutterContact_jonien-4") }
par:USERREADINGS;USERREADINGS as set, defaults to MAX;{ AttrVal("DEVICE","userReadings","Timestamp {ReadingsTimestamp($NAME,'IKON2',0)}, Uhrzeit {(split(' ',ReadingsTimestamp($NAME,"state",0)))[1]},Datum {(split(' ',ReadingsTimestamp($NAME,"state",0)))[0]}, Datum2 {join("." => reverse split('-', (split(' ',ReadingsTimestamp($NAME,"state",0)))[0]))}, IKON { my $state=ReadingsVal($NAME,'state','0'); return '<div><img src="/fhem/images/default/off.png">' if($state eq "closed"); return '<div><img src="/fhem/images/default/on.png">'; }, IKON2 { my $state=ReadingsVal($NAME,'state','0'); return '<div><img src="/fhem/images/default/fts_window_2w_green.png">' if($state eq "closed"); return '<div><img src="/fhem/images/default/fts_window_2w_open_lr_red.png">'; }, IKON3 {'<div><img src="/fhem/images/default/fts_window_2w_open_lr.png">';}") }
par:EOCR;EOCR as set, defaults to MAX;{ AttrVal("DEVICE","event-on-change-reading",".*") }
par:DEVSTATICON;DEVSTATICON as set, defaults to MAX;{ AttrVal("DEVICE","devStateIcon","opened.*.:fts_window_2w_open_lr@red tilted:fts_window_2w_2l_tilt@red closed.*.:fts_window_2w@green") }
par:STATEFORMAT;STATEFORMAT as set, defaults to MAX;{ AttrVal("DEVICE","stateFormat","{ReadingsVal('NAME','state','').", ".ReadingsTimestamp('NAME','state','')} ") }"
par:LABEL;;{ (AttrVal('global','language','DE') eq 'DE') ? return 'Ist<br>:Soll<br>' : return 'Actual<br>Desired<br>' }
attr DEVICE icon ICON
attr DEVICE comment COMMENT
attr DEVICE userReadings USERREADINGS
attr DEVICE debug DEBUG
attr DEVICE event-on-change-reading EOCR
attr DEVICE devStateIcon DEVSTATICON
atrr DEVICE stateFormat STATEFORMAT
# Variante: attr DEVICE devStateIcon closed*.*:fts_window_2w_green.png opened*.*:fts_window_2w_open_lr_red.png
######################################################################
Zitat von: hyper2910 am 20 April 2020, 08:30:29
habe als set nur folgendes bei einem Shutter zur Auswahl, bei Heizreglern funktioniert alles.
welche Version meiner Beta nutzt du bzw. wann hast du die zuletzt aktualisiert ?
IMHO war meine erste Version die Templates unterstützte auf HT/WT beschränkt.
Hi,
ich nutze die beiden neuen Max Module.
Hier mal ein Liste eines Shutters, welchen ich verwende:
WZ_Shutter1 // 16:29:52
DeviceOverview
WZ_Shutter1
0
Internals
CFGFN
/opt/fhem/FHEM/CULMAX.cfg
CULMAX0_MSGCNT
2
CULMAX0_TIME
2020-04-20 15:47:39
DEF
ShutterContact 04e4b8
FUUID
5c44db7c-f33f-3ae4-b082-168acd88ebba7727
IODev
CULMAX0
LASTInputDev
CULMAX0
MSGCNT
2
NAME
WZ_Shutter1
NR
331
NTFY_ORDER
50-WZ_Shutter1
STATE
closed
ok
0
TYPE
MAX
addr
04e4b8
devtype
4
type
ShutterContact
Readings
RSSI
-55
2020-04-20 15:47:39
battery
ok
2020-04-20 15:47:39
batteryState
ok
2020-04-20 15:47:39
onoff
0
2020-04-20 15:47:39
rferror
0
2020-04-20 15:47:39
state
closed
2020-04-20 15:47:39
windowOpen
0
2020-04-20 16:28:53
2.00 Wohnzimmer
Attributes
IODev
CULMAX0
deleteattr
alexaName
Wohnzimmerfenster1
deleteattr
autosaveConfig
1
deleteattr
devStateIcon
opened:fts_window_2w_open_l@red closed:fts_window_2w@green ok:measure_battery_100@green low:measure_battery_0@red (0|alive):10px-kreis-gruen (1|dead):10px-kreis-rot timeout:10px-kreis-gelb
deleteattr
group
Fenster
deleteattr
icon
fts_window_2w_open
deleteattr
model
ShutterContact
deleteattr
room
2.00 Wohnzimmer
deleteattr
stateFormat
state
battery
rferror
deleteattr
Probably associated with
Alarm_WZ_Fenster
cmd_2
DOIF
Alarm_WZ_Fenster_Licht
cmd_2
DOIF
Alarm_WZ_Fenster_Licht1
cmd_2
DOIF
Alarm_WZ_Fenster_Sirene
cmd_2
DOIF
FileLog_WZ_Shutter1
active
FileLog
Select icon
Extend devStateIcon
Raw definition
Delete this device (WZ_Shutter1)
Device specific help
Raw FHEM-code input
list WZ_Shutter1
Execute
Close
Internals:
CFGFN /opt/fhem/FHEM/CULMAX.cfg
CULMAX0_MSGCNT 2
CULMAX0_TIME 2020-04-20 15:47:39
DEF ShutterContact 04e4b8
FUUID 5c44db7c-f33f-3ae4-b082-168acd88ebba7727
IODev CULMAX0
LASTInputDev CULMAX0
MSGCNT 2
NAME WZ_Shutter1
NR 331
NTFY_ORDER 50-WZ_Shutter1
STATE closed
ok
0
TYPE MAX
addr 04e4b8
devtype 4
type ShutterContact
READINGS:
2020-04-20 15:47:39 RSSI -55
2020-04-20 15:47:39 battery ok
2020-04-20 15:47:39 batteryState ok
2020-04-20 15:47:39 onoff 0
2020-04-20 15:47:39 rferror 0
2020-04-20 15:47:39 state closed
2020-04-20 16:28:53 windowOpen 0
helper:
io:
CUL868_MAX:
raw Z0B07063004E4B81234560010
rssi -55
time 1587390459.14205
Attributes:
IODev CULMAX0
alexaName Wohnzimmerfenster1
autosaveConfig 1
devStateIcon opened:fts_window_2w_open_l@red closed:fts_window_2w@green ok:measure_battery_100@green low:measure_battery_0@red (0|alive):10px-kreis-gruen (1|dead):10px-kreis-rot timeout:10px-kreis-gelb
group Fenster
icon fts_window_2w_open
model ShutterContact
room 2.00 Wohnzimmer
stateFormat state
battery
rferror
OK
ich habe auch einen Homematic, dieser hat auch keine Möglichkeit:
Hallentuer // 16:31:56
DeviceOverview
Hallentuer
closed
Internals
CFGFN
/opt/fhem/FHEM/homematic.cfg
CUL868_MSGCNT
2
CUL868_RAWMSG
A0DAD86103867A900000006010000::-85.5:CUL868
CUL868_RSSI
-85.5
CUL868_TIME
2020-04-20 15:46:19
CUN868_SZ_MSGCNT
2
CUN868_SZ_RAWMSG
A0DAD86103867A900000006010000::-83.5:CUN868_SZ
CUN868_SZ_RSSI
-83.5
CUN868_SZ_TIME
2020-04-20 15:46:19
DEF
3867A9
FUUID
5c44db7b-f33f-3ae4-8a3c-6942749137dc7dbb
IODev
vccu
LASTInputDev
CUN868_SZ
MSGCNT
7
NAME
Hallentuer
NOTIFYDEV
global
NR
86
NTFY_ORDER
50-Hallentuer
STATE
closed
ok
off
TYPE
CUL_HM
chanNo
01
hmusb_MSGCNT
3
hmusb_RAWMSG
E3867A9,0000,5849EFB8,FF,FFAD,AD86103867A900000006010000
hmusb_RSSI
-83
hmusb_TIME
2020-04-20 15:46:19
lastMsg
No:AD - t:10 s:3867A9 d:000000 06010000
protLastRcv
2020-04-20 15:46:19
protRcv
2 last_at:2020-04-20 15:46:19
rssi_at_CUL868
cnt:2 min:-86.5 max:-85.5 avg:-86 lst:-85.5
rssi_at_CUN868_SZ
cnt:2 min:-83.5 max:-82.5 avg:-83 lst:-83.5
rssi_at_hmusb
cnt:3 min:-83 max:-82 avg:-82.66 lst:-83
Readings
Activity
alive
2020-04-20 14:58:34
D-firmware
1.0
2020-02-06 22:21:35
D-serialNr
MEQ0186507
2020-02-06 22:21:35
alive
yes
2020-04-20 15:46:19
battery
ok
2020-04-20 15:46:19
contact
closed (to broadcast)
2020-04-20 15:46:19
powerOn
2020-04-14 00:27:39
2020-04-14 00:27:39
recentStateType
info
2020-04-20 15:46:19
sabotageError
off
2020-04-20 15:46:19
state
closed
2020-04-20 15:46:19
trigger_cnt
33
2020-04-07 13:24:44
3.00 Schlafzimmer->3.50 Ankleide
Attributes
IODev
vccu
deleteattr
actCycle
000:50
deleteattr
actStatus
alive
deleteattr
autoReadReg
4_reqStatus
deleteattr
devStateIcon
opened: fts_door_right_open_l@red closed: fts_door_right@green ok:measure_battery_100@green low:measure_battery_0@red (0|alive):10px-kreis-gruen (1|dead):10px-kreis-rot timeout:10px-kreis-gelb
deleteattr
expert
1_allReg
deleteattr
firmware
1.0
deleteattr
group
Halle
deleteattr
icon
fts_door_right
deleteattr
model
HM-SEC-SCO
deleteattr
peerIDs
00000000
deleteattr
room
3.00 Schlafzimmer->3.50 Ankleide
deleteattr
serialNr
MEQ0186507
deleteattr
stateFormat
state
battery
sabotageError
deleteattr
subType
threeStateSensor
deleteattr
Probably associated with
Alarm_Sirene_Hallentuer
cmd_2
DOIF
FileLog_Hallentuer
active
FileLog
Select icon
Extend devStateIcon
Raw definition
Delete this device (Hallentuer)
Device specific help
Raw FHEM-code input
list Hallentuer
Execute
Close
Internals:
CFGFN /opt/fhem/FHEM/homematic.cfg
CUL868_MSGCNT 2
CUL868_RAWMSG A0DAD86103867A900000006010000::-85.5:CUL868
CUL868_RSSI -85.5
CUL868_TIME 2020-04-20 15:46:19
CUN868_SZ_MSGCNT 2
CUN868_SZ_RAWMSG A0DAD86103867A900000006010000::-83.5:CUN868_SZ
CUN868_SZ_RSSI -83.5
CUN868_SZ_TIME 2020-04-20 15:46:19
DEF 3867A9
FUUID 5c44db7b-f33f-3ae4-8a3c-6942749137dc7dbb
IODev vccu
LASTInputDev CUN868_SZ
MSGCNT 7
NAME Hallentuer
NOTIFYDEV global
NR 86
NTFY_ORDER 50-Hallentuer
STATE closed
ok
off
TYPE CUL_HM
chanNo 01
hmusb_MSGCNT 3
hmusb_RAWMSG E3867A9,0000,5849EFB8,FF,FFAD,AD86103867A900000006010000
hmusb_RSSI -83
hmusb_TIME 2020-04-20 15:46:19
lastMsg No:AD - t:10 s:3867A9 d:000000 06010000
protLastRcv 2020-04-20 15:46:19
protRcv 2 last_at:2020-04-20 15:46:19
rssi_at_CUL868 cnt:2 min:-86.5 max:-85.5 avg:-86 lst:-85.5
rssi_at_CUN868_SZ cnt:2 min:-83.5 max:-82.5 avg:-83 lst:-83.5
rssi_at_hmusb cnt:3 min:-83 max:-82 avg:-82.66 lst:-83
READINGS:
2020-04-20 14:58:34 Activity alive
2020-02-06 22:21:35 D-firmware 1.0
2020-02-06 22:21:35 D-serialNr MEQ0186507
2020-04-20 15:46:19 alive yes
2020-04-20 15:46:19 battery ok
2020-04-20 15:46:19 contact closed (to broadcast)
2020-04-14 00:27:39 powerOn 2020-04-14 00:27:39
2020-04-20 15:46:19 recentStateType info
2020-04-20 15:46:19 sabotageError off
2020-04-20 15:46:19 state closed
2020-04-07 13:24:44 trigger_cnt 33
helper:
HM_CMDNR 173
mId 00C7
peerFriend peerAct,peerVirt
peerOpt 4:threeStateSensor
regLst 0,1,4p
rxType 28
supp_Pair_Rep 0
expert:
def 1
det 1
raw 0
tpl 0
io:
newChn +3867A9,00,00,00
nextSend 1587390379.33779
prefIO
rxt 2
vccu
p:
3867A9
00
00
00
mRssi:
mNo AD
io:
CUL868:
-85.5
-85.5
CUN868_SZ:
-83.5
-83.5
hmusb:
-83
-83
prt:
bErr 0
sProc 0
sleeping 1
q:
qReqConf 00
qReqStat
role:
chn 1
dev 1
rssi:
at_CUL868:
avg -86
cnt 2
lst -85.5
max -85.5
min -86.5
at_CUN868_SZ:
avg -83
cnt 2
lst -83.5
max -82.5
min -83.5
at_hmusb:
avg -82.6666666666667
cnt 3
lst -83
max -82
min -83
tmpl:
Attributes:
IODev vccu
actCycle 000:50
actStatus alive
autoReadReg 4_reqStatus
devStateIcon opened: fts_door_right_open_l@red closed: fts_door_right@green ok:measure_battery_100@green low:measure_battery_0@red (0|alive):10px-kreis-gruen (1|dead):10px-kreis-rot timeout:10px-kreis-gelb
expert 1_allReg
firmware 1.0
group Halle
icon fts_door_right
model HM-SEC-SCO
peerIDs 00000000,
room 3.00 Schlafzimmer->3.50 Ankleide
serialNr MEQ0186507
stateFormat state
battery
sabotageError
subType threeStateSensor
OK
Zitat von: Wzut am 20 April 2020, 16:32:54
welche Version meiner Beta nutzt du bzw. wann hast du die zuletzt aktualisiert ?
IMHO war meine erste Version die Templates unterstützte auf HT/WT beschränkt.
habe am Wochenende die beiden Module aus dem ersten Beitrag runtergeladen.
Zitat von: hyper2910 am 20 April 2020, 16:33:10
ich habe auch einen Homematic, dieser hat auch keine Möglichkeit:
klar weil es HM ist, andere Baustelle , anderer Bauleiter :)
aber mit deinem MAX FKs bin ich nun echt ratlos :(
so, ich habe das ganze mal manuell eingeben,
also set <Shutter> attrTemplate MAX_ShutterContact_dark
das hat es getan.
Nur als Dropdown wird es nicht angezeigt!