HM-CC-RT-DN Reading Gruppe

Begonnen von TNT0068, 25 August 2014, 13:22:46

Vorheriges Thema - Nächstes Thema

martinp876

das Kommando tempListMon und Freunde kann man auf den Channel Clima ausführen. Nicht auf das Device. daher der Fehler

MrMaxy

Hallo zusammen,

ich probiere nun schon einigen Tagen daran rum, aber so ganz erfolgreich bin ich dabei nicht. Was mir hier im Wesentlichen fehlt sind die Dropdown Felder, um die unterschiedlichen Zeiten einzustellen. Lediglich das Dropdown Feld für die Soll-Temperatur erscheint.
Gibt es hier eventuell jemande, der mir einmal erläutern kann:
1. Welche Einstellungen anzupassen sind, um das Ganze mit den HM-TC-IT-WM-W-EU an Laufen zu bekommen
2. Wohin hier welche Datensätze abgespeichert werden müssen. Mittlerweile verliere ich den Überblick und weiß nicht, wo was hineingehört (fhem.cfg oder myUtils).

Bin für jeden Hinweis und Hilfe dankbar.
Ach ja, das Thema im Wiki habe ich auch schon mehrfach durch gelesen und mich daran versucht.

Vielen Dank!
Raspberry Pi
CC1101-USB-Lite 868MHz (CUL)
Tür-/Fensterkontakte, optisch; Fenster-Drehgriffkontakt; Heizkörperthermostate; Wandthermostate; Schaltaktor 1-fach, Zwischenstecker; Schaltaktor 4-fach, Hutschienenmontage
(Alle HomeMatic)

karmas

Hast du {makefine} ausgeführt?

spion77

Hi , zusammen

also mir gehts da ähnlich wie MrMaxy

2. Wohin hier welche Datensätze abgespeichert werden müssen. Mittlerweile verliere ich den Überblick und weiß nicht, wo was hineingehört (fhem.cfg oder myUtils).

ich kapiere ehrlich gesagt den wiki eintrage nicht so wirklich

könnte man das mal zusammen schreiben was wohin gehört

oder könnte jemand die passenden Config auszüge posten ?

ich bedanke mich !

Grüße

Jorche

Hallo igami,

hast du zwischendurch Zeit gefunden, den Wiki Eintrag zu überarbeiten bzw. die Fallstricke zu suchen?

Ich habe den thread gefühlt mehrere Dutzend mal durch gearbeitet und stehe immer noch im Wald. Die Anpassung der Devicenamen hat geklappt, doch irgendwie akkumulieren die diskutierte Details bei mir -.-
- Roomnamen werden falsch angezeigt (da keine Zahl enthalten) bzw. mit Alias dann doppelt
- Kein einziges Dropdown
- Iwi klappt toggeln nirgends-würden die korrekten Messwerte nicht angezeigt, hätte ich das Gefühl ich versuche auf nen Dummy zu klicken ;-D
- Crash boom bei valueStyle trotz angestrebter Sorgfalt ^^

Eigentlich wollte ich das Beispiel von Andre/justme1968 um die Zeitsteuerung erweitern..

Oder lass mich anders fragen, hattest du Zeit deine bisherige Version aus der Arbeit in eine freundliche hausautomatisierungs Version umzustricken?

In jedem Fall tausend Dank für dein tolles Projekt und Grüße
Jörg

budda85

Guten Morgen,

Ich erzähle mal was ich alles germacht habe, vielleicht hilft es ja  :)
Also ich habe das alles nach dem Wiki gemacht und ans laufen bekommen. Allerdings habe ich nicht alles einfach in die config kopiert, sondern alles über die Oberfläche gemacht. Das funktionierte bei mir besser. Ich habe mich in dem Wiki von oben nach unten gearbeitet und wenn auf der rechten Seite ein Link ist, habe ich erst da weiter gemacht.

Dann ist noch drauf zu achten, dass bei dem Attribut mapping hinter jedes => ein doppeltes ' Apostroph muss.
In der Myutils und config muss man dann eventuell noch seine Thermostate anpassen je nachdem wie man die gennant hat.
Meine heißen zum Beispiel
EG_Flur_Heizung
EG_Kueche_Heizung

Damit beide erkannt werden muss man dann folgendes eingeben.
(.._(......|....)_Heizung_Clima)
Wenn dann alles eingeben ist macht man noch ein
{makefine}
Sollte das alles geklappt haben, ist für jedes Thermostat ein eigener Dummy angelegt worden ( d_climaControl_XXX )

Dann habe ich noch in der myutils folgendes auskommentiert:
$room         =~ s/\D//g
Das brauche ich nicht, da ich keine Raumnummern verwende.

Und zu guter letzt, muss auch noch bei jedem Thermostat der Alias vergeben sein, weil dieser in der ReadingGroup angezeigt wird.

Hier mal meine config:
#########################
#         Reading Group Für Heizung
#########################

define ntfy_setreading notify d_.* { if( ($EVENT ~~ / /) and ($EVENT !~ /: /) ) {fhem("setreading $NAME $EVENT")} }

define d_label dummy

define default_climaControl dummy
attr default_climaControl userattr attributes wildcard
attr default_climaControl attributes setList
attr default_climaControl setList dayTemp:5.0,5.5,6.0,6.5,7.0,7.5,8.0,8.5,9.0,9.5,10.0,10.5,11.0,11.5,12.0,12.5,13.0,13.5,14.0,14.5,15.0,15.5,16.0,16.5,17.0,17.5,18.0,18.5,19.0,19.5,20.0,20.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0,24.5,25.0,25.5,26.0,26.5,27.0,27.5,28.0,28.5,29.0,29.5,30.0 nightTemp:5.0,5.5,6.0,6.5,7.0,7.5,8.0,8.5,9.0,9.5,10.0,10.5,11.0,11.5,12.0,12.5,13.0,13.5,14.0,14.5,15.0,15.5,16.0,16.5,17.0,17.5,18.0,18.5,19.0,19.5,20.0,20.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0,24.5,25.0,25.5,26.0,26.5,27.0,27.5,28.0,28.5,29.0,29.5,30.0 workday_period_1_start:00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45,24:00 workday_period_1_stop:00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45,24:00 workday_period_2_start:00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45,24:00 workday_period_2_stop:00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45,24:00 saturday_period_1_start:00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45,24:00 saturday_period_1_stop:00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45,24:00 saturday_period_2_start:00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45,24:00 saturday_period_2_stop:00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45,24:00 sunday_period_1_start:00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45,24:00 sunday_period_1_stop:00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45,24:00 sunday_period_2_start:00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45,24:00 sunday_period_2_stop:00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45,24:00
attr default_climaControl wildcard d_climaControl.*

define ntfy_rg notify ntfy_rg {rg($EVENT)}

define rg_thermostate readingsGroup <>,Heizung@d_label,<|>,Temperatur@d_label,<|>,Status@d_label,<|>,Wochenplan@d_label,<|>,Werktag@d_label,<|>,Samstag@d_label,<|>,Sonntag@d_label,<|>,<> (.._(......|....)_Heizung_Clima):<>,?alias,<|>,<Soll>,desired-temp,<Tag>,dayTemp@{rg($DEVICE."§clima")},impossible@{$DEVICE},<|>,controlMode,R-globalBtnLock@{rg($DEVICE."§device")},<|>,Zeitraum1@d_label,<|>,workday_period_1_start@{rg($DEVICE."§clima")},workday_period_1_stop@{rg($DEVICE."§clima")},<|>,saturday_period_1_start@{rg($DEVICE."§clima")},saturday_period_1_stop@{rg($DEVICE."§clima")},<|>,sunday_period_1_start@{rg($DEVICE."§clima")},sunday_period_1_stop@{rg($DEVICE."§clima")},<|>,impossible@{$DEVICE},<%system_fhem_update>,<br>,state@{rg($DEVICE."§device")},<%getConfig>,<|>,<Ist>,measured-temp,<Nacht>,nightTemp@{rg($DEVICE."§clima")},<|>,<Ventil>,ValvePosition,<|>,Zeitraum2@d_label,<|>,workday_period_2_start@{rg($DEVICE."§clima")},workday_period_2_stop@{rg($DEVICE."§clima")},<|>,saturday_period_2_start@{rg($DEVICE."§clima")},saturday_period_2_stop@{rg($DEVICE."§clima")},<|>,sunday_period_2_start@{rg($DEVICE."§clima")},sunday_period_2_stop@{rg($DEVICE."§clima")},<|>,impossible@{$DEVICE},impossible@{rg($DEVICE."§device")},<%burstXmit>
attr rg_thermostate commands { 'desired-temp' => 'desired-temp:', 'dayTemp' => 'dayTemp:', 'controlMode' => 'trigger ntfy_rg $DEVICE controlMode', 'R-globalBtnLock' => 'trigger ntfy_rg $DEVICE globalBtnLock', 'workday_period_1_start' => 'workday_period_1_start:', 'workday_period_1_stop' => 'workday_period_1_stop:', 'saturday_period_1_start' => 'saturday_period_1_start:', 'saturday_period_1_stop' => 'saturday_period_1_stop:', 'sunday_period_1_start' => 'sunday_period_1_start:', 'sunday_period_1_stop' => 'sunday_period_1_stop:', 'rg_thermostate.system_fhem_update' => 'trigger ntfy_rg $DEVICE setTimeTable', 'rg_thermostate.getConfig' => 'set $DEVICE getConfig', 'nightTemp' => 'nightTemp:', 'workday_period_2_start' => 'workday_period_2_start:', 'workday_period_2_stop' => 'workday_period_2_stop:', 'saturday_period_2_start' => 'saturday_period_2_start:', 'saturday_period_2_stop' => 'saturday_period_2_stop:', 'sunday_period_2_start' => 'sunday_period_2_start:', 'sunday_period_2_stop' => 'sunday_period_2_stop:', 'rg_thermostate.burstXmit' => 'set $DEVICE burstXmit'}
attr rg_thermostate group Heizungen
attr rg_thermostate mapping { 'desired-temp' => '' , 'dayTemp' => '' , 'workday_period_1_start' => '' , 'workday_period_1_stop' => '' , 'saturday_period_1_start' => '' , 'saturday_period_1_stop' => '' , 'sunday_period_1_start' => '' , 'sunday_period_1_stop' => '' , 'nightTemp' => '' , 'workday_period_2_start' => '' , 'workday_period_2_stop' => '' , 'saturday_period_2_start' => '' , 'saturday_period_2_stop' => '' , 'sunday_period_2_start' => '' , 'sunday_period_2_stop' => '' }
attr rg_thermostate nameStyle {($READING eq "Soll" ||$READING eq "Tag" ||$READING eq "%getConfig" ||$READING eq "Ist" ||$READING eq "Nacht" ||$READING eq "Ventil" )?'style="text-align:right"' :($READING eq "%burstXmit" )?'style="text-align:center"' :'style=""'}
attr rg_thermostate nonames 1
attr rg_thermostate room Haus
attr rg_thermostate valueColumns { 'Heizung' => 'colspan="2"', 'Temperatur' => 'colspan="4"', 'Status' => 'colspan="2"', 'Werktag' => 'colspan="2"', 'Samstag' => 'colspan="2"', 'Sonntag' => 'colspan="2"', 'alias' => 'colspan="2"'}
attr rg_thermostate valueFormat { 'measured-temp' => "%0.1f °C", 'ValvePosition' => "%0.1f %%"}
attr rg_thermostate valueIcon { 'controlMode.auto' => 'sani_heating_automatic@green', 'controlMode.set_auto' => 'sani_heating_automatic@orange', 'controlMode.manual' => 'sani_heating_manual@red', 'controlMode.set_manual' => 'sani_heating_manual@orange', 'R-globalBtnLock.on' => 'secur_locked@green', 'R-globalBtnLock.on ' => 'secur_locked@green', 'R-globalBtnLock.set_on ' => 'secur_locked@orange', 'R-globalBtnLock.off' => 'secur_open@red', 'R-globalBtnLock.off ' => 'secur_open@red', 'R-globalBtnLock.set_off ' => 'secur_open@orange'}
attr rg_thermostate valueStyle {($READING eq "Heizung" ||$READING eq "Temperatur" ||$READING eq "Status" ||$READING eq "Wochenplan" ||$READING eq "Werktag" ||$READING eq "Samstag" ||$READING eq "Sonntag" )?'style="font-size:20px;;;;color:RoyalBlue;;;;text-align:center"' :($READING eq "alias" )?'style="font-size:11px;;;;font-weight:bold;;;;text-align:left"' :($READING eq "ValvePosition" &&$VALUE > 40 )?'style="font-weight:bold;;;;color:Orange;;;;text-align:left"' :($READING eq "desired-temp" ||$READING eq "measured-temp" )?'style="text-align:center"' :($READING eq "state" ||$READING eq "ValvePosition" )?'style="text-align:left"' :'style="text-align:right"'}


Und die myutils:
###### HEIZUNG #######

sub makefine{

#d_climaControl definieren und Initialisiern
  my @devices = devspec2array('.._(......|....)_Heizung_Clima');

  foreach my $device (@devices){
    my $room = AttrVal($device, 'room', 'undef');
    if($room ne 'undef'){
      my $roomNumber = $room;
      #$roomNumber =~ s/\D//g;
      my $climaControl = ('d_climaControl_'.$roomNumber);
      if(!(defined($defs{$climaControl}))){
           {fhem("define $climaControl dummy")}
           {fhem("setreading $climaControl dayTemp 21.0")}
           {fhem("setreading $climaControl nightTemp 17.0")}
           {fhem("setreading $climaControl saturday_period_1_stop 21:00")}
           {fhem("setreading $climaControl saturday_period_1_start 04:15")}
           {fhem("setreading $climaControl saturday_period_2_stop 24:00")}
           {fhem("setreading $climaControl saturday_period_2_start 24:00")}
           {fhem("setreading $climaControl sunday_period_1_stop 21:00")}
           {fhem("setreading $climaControl sunday_period_1_start 04:15")}
           {fhem("setreading $climaControl sunday_period_2_stop 24:00")}
           {fhem("setreading $climaControl sunday_period_2_start 24:00")}
           {fhem("setreading $climaControl workday_period_1_stop 06:30")}
           {fhem("setreading $climaControl workday_period_1_start 04:15")}
           {fhem("setreading $climaControl workday_period_2_stop 21:00")}
           {fhem("setreading $climaControl workday_period_2_start 15:15")}
           {fhem("attr $climaControl room $room")}
      }
    }
  }

  #Attribute aus Vorgaben übernehmen
  my @defaults = devspec2array('default_.*');

  foreach my $default (@defaults){
    my $wildcard = AttrVal($default,'wildcard','wildcard error');
    my @attributes = split(' ',AttrVal($default,'attributes','attributes error'));
    foreach my $attribute (@attributes){
      my $attrval = AttrVal($default,$attribute,'attribute error');
      fhem("attr $wildcard $attribute $attrval")
    }
  }
}

sub rg($){
  my @input    = split(/[§\s]+/,shift);
  my $device   = $input[0];
  my $function = $input[1];

if($function eq "clima"){
  my $room =  AttrVal($device, 'room', 'undef');
  #$room =~ s/\D//g;
 
  return(("d_climaControl_".$room));
}
elsif($function eq "device"){
  return InternalVal($device,"device","device error");
}
elsif($function eq "controlMode"){
  my $controlMode = ReadingsVal($device,"controlMode","controlMode error");

  if($controlMode ~~ /manual/)
    {fhem("set $device controlMode auto")}
  elsif($controlMode ~~ /auto/)
    {fhem("set $device controlMode manual")};
}
elsif($function eq "globalBtnLock"){
  my $globalBtnLock = ReadingsVal($device,"R-globalBtnLock","globalBtnLock error");

  if($globalBtnLock ~~ /off/){
    {fhem("set $device regSet globalBtnLock on")}
    {fhem ("set $device getConfig")}
  }
  elsif($globalBtnLock ~~ /on/){
    {fhem("set $device regSet globalBtnLock off")}
    {fhem ("set $device getConfig")}
  };
}
elsif($function eq "state"){
  my $state = Value($device);

  if($state ~~ /off/){
    {fhem("set $device on")}
  }
  elsif($state ~~ /on/){
    {fhem("set $device off")}
  };
}
elsif($function eq "setTimeTable"){
  my $room         =  AttrVal($device, 'room', 'undef');
  #$room         =~ s/\D//g;
  my $climaControl = ("d_climaControl_".$room);
  my $dayTemp           = ReadingsVal( $climaControl, "dayTemp"          , 21.0    );
  my $nightTemp         = ReadingsVal( $climaControl, "nightTemp"        , 17.0    );
  my $workday_period_1_start  = ReadingsVal( $climaControl, "workday_period_1_start"  , "06:30" );
  my $workday_period_1_stop   = ReadingsVal( $climaControl, "workday_period_1_stop"   , "18:00" );
  my $workday_period_2_start  = ReadingsVal( $climaControl, "workday_period_2_start"  , "24:00" );
  my $workday_period_2_stop   = ReadingsVal( $climaControl, "workday_period_2_stop"   , "24:00" );
  my $saturday_period_1_start = ReadingsVal( $climaControl, "saturday_period_1_start" , "06:30" );
  my $saturday_period_1_stop  = ReadingsVal( $climaControl, "saturday_period_1_stop"  , "12:00" );
  my $saturday_period_2_start = ReadingsVal( $climaControl, "saturday_period_2_start" , "24:00" );
  my $saturday_period_2_stop  = ReadingsVal( $climaControl, "saturday_period_2_stop"  , "24:00" );
  my $sunday_period_1_start   = ReadingsVal( $climaControl, "sunday_period_1_start"   , "24:00" );
  my $sunday_period_1_stop    = ReadingsVal( $climaControl, "sunday_period_1_stop"    , "24:00" );
  my $sunday_period_2_start   = ReadingsVal( $climaControl, "sunday_period_2_start"   , "24:00" );
  my $sunday_period_2_stop    = ReadingsVal( $climaControl, "sunday_period_2_stop"    , "24:00" );

  {fhem("set $device tempListMon prep $workday_period_1_start  $nightTemp $workday_period_1_stop  $dayTemp $workday_period_2_start  $nightTemp $workday_period_2_stop  $dayTemp 24:00 $nightTemp")};
  {fhem("set $device tempListTue prep $workday_period_1_start  $nightTemp $workday_period_1_stop  $dayTemp $workday_period_2_start  $nightTemp $workday_period_2_stop  $dayTemp 24:00 $nightTemp")};
  {fhem("set $device tempListWed prep $workday_period_1_start  $nightTemp $workday_period_1_stop  $dayTemp $workday_period_2_start  $nightTemp $workday_period_2_stop  $dayTemp 24:00 $nightTemp")};
  {fhem("set $device tempListThu prep $workday_period_1_start  $nightTemp $workday_period_1_stop  $dayTemp $workday_period_2_start  $nightTemp $workday_period_2_stop  $dayTemp 24:00 $nightTemp")};
  {fhem("set $device tempListFri prep $workday_period_1_start  $nightTemp $workday_period_1_stop  $dayTemp $workday_period_2_start  $nightTemp $workday_period_2_stop  $dayTemp 24:00 $nightTemp")};
  {fhem("set $device tempListSat prep $saturday_period_1_start $nightTemp $saturday_period_1_stop $dayTemp $saturday_period_2_start $nightTemp $saturday_period_2_stop $dayTemp 24:00 $nightTemp")};
  {fhem("set $device tempListSun exec $sunday_period_1_start   $nightTemp $sunday_period_1_stop   $dayTemp $sunday_period_2_start   $nightTemp $sunday_period_2_stop   $dayTemp 24:00 $nightTemp")};
}
}



Gruß
Jan

Jorche

Hallo Jan,

tausend Dank für deine Antwort, funktioniert perfekt.
Der Tipp mit zuerst die rechte Spalte im Wiki abarbeiten, dann die linke hat es gebracht  :-)
Ich habe durch die unterschiedlichen Namen meiner Räume noch ein paar Tweaks an diversen stellen vorgenommen und würde die Abwandlungen hier gerne mit reinstellen. Vorher bräuchte ich aber noch die Antwort auf zwei Fragen.

Zuerst die einfache:
Wie lässt sich denn ein Teilstring (hier: font-weight:bold;;text-align:left) durch mehrere if/elsif/else übergeben? Meiner Lösung ist etwas roh, ansonsten landete ich immer im Errorlog ;-)
elsif($READING eq "ValvePosition"){my $v=$VALUE;;if($v>0){'style="color:rgb(19,75,248);;font-weight:bold;;text-align:left"'}elsif($v>=10){'style="color:rgb(248,213,61);;font-weight:bold;;text-align:left"'}else{'style="font-weight:bold;;text-align:left"'}
Wie man sieht, wird der Ausdruck sonst sehr schnell lang

Dann die verzwicktere:
In der Readingsgroup erfolgt die Sortierung ja anhand der Angabe der Devices. Da in diesem Wikibeispiel der Name des Dummies mit {makefine} ja automatisch erzeugt wird, hab ich keinen direkten Einfluss mehr auf die Reihenfolge Sortierung und sie erfolgt alphabetisch. (und z.B. nicht mehr nach den Stockwerken im Haus ohne diese im Namen vA mit aufzunehmen).
Vermutlich geht das nicht von heute auf morgen, aber kann man in die Readingsgroup nicht das "sortby" Attribut mit aufnehmen/abfragen? Fällt jemanden dazu ne Lösung ein oder besser Andre fragen?


justme1968

wenn du in der readingGroup sortDevices gesetzt hast werden die devices nach sortby,alias und name sortiert. in dieser reihenfolge je nach dem was vorhanden ist.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

spion77

Vielen Dank an Alle jetzt hat es bei mir auch Wunderbar geklappt DANKE!

Jorche

Hallo Andre,
so langsam gefällt mir FHEM immer noch besser ^^ Vielen Dank für die schnelle und gute Antwort, mittels Sortby läuft das perfekt!
Hast du mir einen Tipp, wie ich die andere Fragen lösen kann? Effektiv geht es ja nur darum Code zu sparen und einen identischen String nicht durch alle if/elsis Schleifen ziehen zu müssen.
Irgendwie stehe ich auf dem Schlauch und alle Beispiele hier im Forum/Wiki oder bei Hans Google beschreiben nur die if/else-Basics.
Danke für die Mühen und Grüße
Jörg

justme1968

da wo du dein $v zuweist kannst du den teil einer zweiten variable zuweisen. z.b. $s. und diese steckst du dann jeweils in die style=... rückgabe.

bei so langen attributen ist es übrigens eigentlich sinnvoll den code in eine sub in 99_myUtils auszulagern und im attribut aufzurufen.

man kann auch die hash und die perl version so mischen das es noch etwas übersichtlicher wird.

gruß
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

sw

Hallo zusammen,

ich stehe gerade auf dem Schlauch.

Meine ReadingsGroup sieht gut aus und lässt sich korrekt bedienen. D.h. ich kann Temperaturen und Zeiten per DropDown Menü auswählen.
Leider werden die Werte nicht korrekt in das Dummy übertragen, welches dem Raum zugeordnet ist  (also d_climaControl_*).

Beispiel: ich ändere in der ReadingsGroup die "Tag" Temperatur.
Im Dummy sehe ich danach unter den Readings z.B.
state        dayTemp 16.0        2015-03-30 22:53:51
während das Reading dayTemp unverändert bleibt:
dayTemp        17.5        2015-03-30 17:40:00

Entsprechend verhalten sich die Zeiteinstellungen.

Vielleicht hat jemand eine zündende Idee, wo ich weiter suchen kann ....

Danke, Sven

sw

Ok, ich habe es gefunden ....

Ich hatte das " ntfy_setreading" weggelassen, weil ich dachte, es sei nur notwendig zum Befüllen von "d_label".

Danke fürs Lesen ...  ;)

Jorche

Hallo zusammen,
hier meine kleinen Mods, um das ein oder andere Problem zu umgehen oder das ganze aufzuhübschen.

Zunächst habe ich meiner Thermostate bzw. den Clima Kanal nach dem Schema "Thermostat_RAUM_Clima" umbenannt.
Um diese mit makefinde komplett aufzuspüren hilft es in der devspec2array Anweisung mit Wildchar (.*), d.h. mit beliebiger Länge des Raumnamens, zu suchen.
my @devices = devspec2array('(CUL_HM_|)Thermostat_(.*)_Clima');


Dann hatte ich große Probs mit "makefine", da Namen der Räume mit Thermostaten teils Umlaute, teils Sonderzeichen enthalten haben. Ebenso waren Thermostate in zwei Räumen zu finden; hier z.B. in "System". Das Komma Zeichen in der Room Liste bringt die Namenserkennung in makefine als auch in ntfy_rg durcheinander.
Lösung war zum einen Lehrstellen und Umlaute bei der automatischen Namensänderung zu ersetzen und zu entfernen als auch den Room "System".
my $roomNumber = $room;     
      my %umlaute = ("ä" => "ae", "Ä" => "Ae", "ü" => "ue", "Ü" => "Ue", "ö" => "oe", "Ö" => "Oe", "ß" => "ss", " " => "", ",System" => "", "System," => "" ); #Ersetzungen
      my $umlautkeys = join ("|", keys(%umlaute)); # einzelnen Bedingunen für Ersetzungen zu einem Ausdruck zusammenfassen
      $roomNumber =~ s/($umlautkeys)/$umlaute{$1}/g; # s/xyz/ suchen, /g global
                  my $climaControl = ('d_climaControl_'.$roomNumber);

Gleiches für $room in den notifies

Wem die Namensgebung in der Tabelle durch Alias des Clima-Kanals nicht mundet, da er z.B. andere Listen durcheinanderbringt oder den Kanal-Block des Thermostaten auflöst, einfach in der DEF auf z.B. "?userattr" statt "alias" umsteigen. Natürlich muss dieses vorher passend dem Thermostat zugewiesen sein.


Bingen wir zuletzt noch Farbe ins Spiel
valueStyle{if($READING eq "measured-temp"){my $t=$VALUE;;my $d=ReadingsVal($DEVICE,'desired-temp',0);;
if($d eq 'off'){$d=0};;if($t-$d>=2){'style="color:rgb(251,63,11)"'}elsif($t-$d<=-2){'style="color:rgb(19,75,248)"'}else{'style="color:rgb(12,251,12)"'}}}

Hier auch Dank an Andre für seinen Tipp in einem anderen Thread, falls man als "Temperatur" auch die Parameter on bzw off verwenden möchte bzw. im Dropdown hat.
Andere Symbole und weitere Farben nach belieben.

Viel Erfolg und GRüße!
Jörg

Über Oster versuche ich noch ein drittes Intervall einzubauen, auch bevor der ganze Schnee weg ist. Dann gehts ans Licht ;)

igami

Hallo zusammen,

in letzter Zeit war ich sehr inaktiv, aber ich hoffe, dass ich nun wieder mehr Zeit für FHEM finde.
Wie ist denn so der aktuelle Stand bei der RG hier? Ich habe zwischendurch mal gelesen, dass jemand ein Modul zum setzen der Zeiten programmiert hat (http://forum.fhem.de/index.php/topic,31224.0.html). Dann gibt es ja noch das hier von Andre http://forum.fhem.de/index.php/topic,32660.0.html

Wünsche noch schöne Ostern, ich muss mir mein FHEM nun erst mal wieder richtig aufsetzten auf neuer Hardware :D

Grüße
Igami
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED