define COE_Node_cmi_2 COE_Node 2
attr COE_Node_cmi_2 alias Poolsteuerung
attr COE_Node_cmi_2 group Pool
attr COE_Node_cmi_2 readingsConfigAnalog 1=Kollektor_Temperatur_Pool_Solar 2=Pool_Wasser_Temperatur 3=Pool_Aussen_Temperatur
attr COE_Node_cmi_2 readingsConfigDigital 1=Pool_Pumpe_100 2=Pool_Pumpe_90 3=Pool_Pumpe_70 4=Pool_Pumpe_40 5=SchachtVentil_Gartenhaus 6=Schachtventil_Pool 7=Pos_Meldung_SchachtVentil_Gartenhaus 8=Pos_Meldung_Schachtventil_Pool 9=Wasserstand_Sensor 10=Ventile_Wasserzuleitung 11=Umschaltung_Wassermessung_1 12=Umschaltung_Wassermessung_2 13=Umschaltung_Solar_Ladung_1 14=Umschaltung_Solar_Ladung_2 15=T_Max_Begrenzung
attr COE_Node_cmi_2 room Pool
attr COE_Node_cmi_2 stateFormat {"Pool Temperatur: ".ReadingsVal($name,"Pool_Wasser_Temperatur",0)." °C<br> "}
# CFGFN
# DEF 2
# FUUID 663a6e9f-f33f-c95d-2fa7-7c8ff2808c2edf05
# IODev cmi
# LASTInputDev cmi
# MSGCNT 177
# NAME COE_Node_cmi_2
# NR 711
# STATE Pool Temperatur: 22.4 °C<br>
# TYPE COE_Node
# cmi_MSGCNT 177
# cmi_TIME 2024-05-07 21:39:14
# eventCount 130
# READINGS:
# 2024-05-07 21:35:41 Kollektor_Temperatur_Pool_Solar 12.4
# 2024-05-07 20:57:40 PoolPumpe Error evaluating COE_Node_cmi_2 userReading PoolPumpe: Can't modify non-lvalue subroutine call of &main::ReadingsVal in scalar assignment at (eval 94947200) line 1, near "1 "100""
#syntax error at (eval 94947200) line 1, near "1 "100""
#
# 2024-05-07 21:27:40 Pool_Aussen_Temperatur 13.8
# 2024-05-07 20:11:08 Pool_Pumpe_100 0
# 2024-05-07 20:11:08 Pool_Pumpe_40 1
# 2024-05-07 20:11:08 Pool_Pumpe_70 1
# 2024-05-07 20:11:08 Pool_Pumpe_90 0
# 2024-05-07 21:38:41 Pool_Wasser_Temperatur 22.4
# 2024-05-07 20:11:08 Pos_Meldung_SchachtVentil_Gartenhaus 0
# 2024-05-07 20:11:08 Pos_Meldung_Schachtventil_Pool 1
# 2024-05-07 20:11:08 SchachtVentil_Gartenhaus 0
# 2024-05-07 20:11:08 Schachtventil_Pool 0
# 2024-05-07 20:57:40 Schachtventilstellung Gartenhaus
# 2024-05-07 20:11:08 T_Max_Begrenzung 0
# 2024-05-07 20:11:08 Umschaltung_Solar_Ladung_1 0
# 2024-05-07 20:11:08 Umschaltung_Solar_Ladung_2 0
# 2024-05-07 20:11:08 Umschaltung_Wassermessung_1 0
# 2024-05-07 20:11:08 Umschaltung_Wassermessung_2 0
# 2024-05-07 20:11:08 Ventile_Wasserzuleitung 0
# 2024-05-07 20:11:08 Wasserstand_Sensor 1
# 2024-05-07 20:11:07 state defined
# helper:
# CAN_NODE_ID 2
# hmccu:
#
setstate COE_Node_cmi_2 Pool Temperatur: 22.4 °C<br>
setstate COE_Node_cmi_2 2024-05-07 21:35:41 Kollektor_Temperatur_Pool_Solar 12.4
setstate COE_Node_cmi_2 2024-05-07 20:57:40 PoolPumpe Error evaluating COE_Node_cmi_2 userReading PoolPumpe: Can't modify non-lvalue subroutine call of &main::ReadingsVal in scalar assignment at (eval 94947200) line 1, near "1 "100""\
syntax error at (eval 94947200) line 1, near "1 "100""\
setstate COE_Node_cmi_2 2024-05-07 21:27:40 Pool_Aussen_Temperatur 13.8
setstate COE_Node_cmi_2 2024-05-07 20:11:08 Pool_Pumpe_100 0
setstate COE_Node_cmi_2 2024-05-07 20:11:08 Pool_Pumpe_40 1
setstate COE_Node_cmi_2 2024-05-07 20:11:08 Pool_Pumpe_70 1
setstate COE_Node_cmi_2 2024-05-07 20:11:08 Pool_Pumpe_90 0
setstate COE_Node_cmi_2 2024-05-07 21:38:41 Pool_Wasser_Temperatur 22.4
setstate COE_Node_cmi_2 2024-05-07 20:11:08 Pos_Meldung_SchachtVentil_Gartenhaus 0
setstate COE_Node_cmi_2 2024-05-07 20:11:08 Pos_Meldung_Schachtventil_Pool 1
setstate COE_Node_cmi_2 2024-05-07 20:11:08 SchachtVentil_Gartenhaus 0
setstate COE_Node_cmi_2 2024-05-07 20:11:08 Schachtventil_Pool 0
setstate COE_Node_cmi_2 2024-05-07 20:57:40 Schachtventilstellung Gartenhaus
setstate COE_Node_cmi_2 2024-05-07 20:11:08 T_Max_Begrenzung 0
setstate COE_Node_cmi_2 2024-05-07 20:11:08 Umschaltung_Solar_Ladung_1 0
setstate COE_Node_cmi_2 2024-05-07 20:11:08 Umschaltung_Solar_Ladung_2 0
setstate COE_Node_cmi_2 2024-05-07 20:11:08 Umschaltung_Wassermessung_1 0
setstate COE_Node_cmi_2 2024-05-07 20:11:08 Umschaltung_Wassermessung_2 0
setstate COE_Node_cmi_2 2024-05-07 20:11:08 Ventile_Wasserzuleitung 0
setstate COE_Node_cmi_2 2024-05-07 20:11:08 Wasserstand_Sensor 1
setstate COE_Node_cmi_2 2024-05-07 20:11:07 state defined
Zitat von: betateilchen am 07 Mai 2024, 21:18:35Es scheitert halt mal wieder an der möglichst einfachen Formulierung der eigentlichen Aufgabe.Ja, aber nur "bedingt""Eigentlich" hat der TE schon "irgendwie verständlich durchblicken lassen", was er "sehen" möchte - nur halt praktisch alle technischen Details nicht erwähnt, die man bräuchte, um eine tatsächlich "einfache" Lösung anzubieten.
Zitat von: betateilchen am 07 Mai 2024, 21:04:32Natürlich, am einfachsten per userReading.Ob das nämlich "am einfachsten" (ggf. einfach nur im Sinne von "übersichtlichsten") ist, kann man m.E. erst in etwa abschätzen, wenn man weiß, wo bzw. wie die erwähnten Basisdaten in den Readings eigentlich herkommen.
defmod Dimmer KNX 0/0/3:dpt1:EinAus:set:nosuffix \
0/0/4:dpt1:Status:listenonly:nosuffix \
0/0/5:dpt5.001:Dimmen:set:nosuffix \
0/0/6:dpt5.001:DimmStatus:listenonly:nosuffix\
0/0/7:dpt7.600:TW:set:nosuffix\
0/0/8:dpt7.600:TWStatus:listenonly:nosuffix
attr Dimmer devStateIcon devStateIcon off:li_wht_off:on on:li_wht_on:off 0.*:li_wht_off:on \d+.*:li_wht_on:off
attr Dimmer eventMap {\
usr=>{\
'^dimup' => '" . sprintf("Dimmen %d",minNum(100, ReadingsNum($NAME,"Dimmen",0) + 10)) . "', \
'^dimdown' => '" . sprintf("Dimmen %d",maxNum(0, ReadingsNum($NAME,"Dimmen",0) - 10)) . "',\
'^twup' => '" . sprintf("TW %d", minNum(10000,ReadingsNum($NAME,"TW", 0) + 100)) . "', \
'^twdown' => '" . sprintf("TW %d", maxNum(0, ReadingsNum($NAME,"TW", 0) - 100)) . "'\
}, \
fw=>{\
'^dimup'=> 'dimup', '^dimdown'=> 'dimdown','^twup'=> 'TWup', '^twdown'=> 'TWdown'\
}\
}
attr Dimmer stateCmd { \
if ($gadName eq 'DimmStatus') \
{ \
fhem ("sleep 0.05 quiet;;setreading $name Dimmen $state;;");; \
}\
elsif ($gadName eq 'TWStatus') \
{ \
fhem ("sleep 0.05 quiet;;setreading $name TW $state;;");; \
}\
elsif ($gadName eq 'EinAus') \
{\
my $val = ($state eq 'on')?'100':'0';;\
fhem ("sleep 0.05 quiet;;setreading $name Dimmen $val;;");;\
} \
return $state;;\
}
attr Dimmer webCmd :dimup:dimdown:TWup:TWdown:Dimmen
attr Dimmer widgetOverride Dimmen@set:slider,0,5,100 TW@set:slider,1000,100,10000
setstate Dimmer 2700 K
setstate Dimmer 2024-05-07 20:46:25 DimmStatus 100 %
setstate Dimmer 2024-05-07 20:46:25 Dimmen 100 %
setstate Dimmer 2024-05-07 20:08:39 EinAus on
setstate Dimmer 2024-05-07 20:23:51 IODev KNX.MDTRouter.IO
setstate Dimmer 2024-05-07 20:08:39 Status on
setstate Dimmer 2024-05-07 20:46:28 TW 2700 K
setstate Dimmer 2024-05-07 20:46:28 TWStatus 2700 K
setstate Dimmer 2024-05-07 20:46:28 last-sender 1.2.77
setstate Dimmer 2024-05-07 20:46:28 state 2700 K
invalid cmd: "set Dimmer TWup EinAus off" - ignored
2024.05.07 21:22:36 2: Dimmer [KNX_Set_dpt1 1043]: invalid cmd: "set Dimmer TWup EinAus off" issued - ignored
Zitat von: ChrisA4 am 07 Mai 2024, 21:12:10doch werden sieAha....
ZitatNeue "Homematic Wired Homebrew" Hardware in Betrieb nehmen:
1. Neues Gerät flashen (ISP) oder per USB auf Arduino übertragen.
2. Adresse per FHEM setzen: raw-Befehl an das Device schicken 406142000017
...setzt die Adresse auf 0x42000017
3. Altes Gerät in FHEM löschen, "config" Taster kurz drücken - Gerät sollte mit neuer
Adresse angelegt werden. ("config" Taster Betätigung nicht nötig mit Lib ab Nov. 2020)
Zitat von: ChrisA4 am 07 Mai 2024, 20:42:18gibt es überhaupt eine möglichkeit dies zu schaffen
defmod p dummy
attr p stateFormat Pumpe running% Lauf
attr p userReadings running:Pool_Pumpe_\d+:.* { $event =~ m/(\d+)/;; return $1}