Hallo
Gibt es in Pearl bzw FHEM so was ähnliches wie bei Excel nur den Linken/rechten Teilbereich eines Strings oder überhaupt auf eine gewisse Zeichnefolge zu prüfen?
Hintergrund: ich bekomme beim Status eines Devices immer "desired-temp 12" und ich hätte diese Zeichenfolge gerne zerlegt und nur die zahl herangezogen..
geht das?
Hallo,
dazu brauchst Du eigentlich kein Perl (beachte das was Du geschrieben hast ist ein Online Versender) sondern nur die FHEM Funktion z.B. ReadingsNum.
-> https://fhem.de/commandref_DE.html#perl
Aber in Abhängigkeit Deiner Aufgabe gibt es andere Lösungen.
z.B. https://fhem.de/commandref_DE.html#set
Gruß Otto
Zitat von: Otto123 am 27 Januar 2018, 15:50:26
dazu brauchst Du eigentlich kein Perl (beachte das was Du geschrieben hast ist ein Online Versender) sondern nur z.B. ReadingsVal.
ReadingsNum wäre wahrscheinlich noch besser (und das ist Perl ;-))
Lieber TE: Bitte poste ein ,,list" des. devices und erläutere was genau du machen möchtest, dann können wir - wie Otto schon sagt - einen geeigneten Weg zeigen. Generell sollte dir bei deiner Frage aber auch die Suchmaschine deines Vertrauens sehr schnell weiterhelfen können.
Kurz, weil mobil...
Hello
Danke für die Rasche Antwort, hab auch schon versucht rEadingsNum einzusetzen bekomm aber nichts richiges raus..
hier das List der Devices was ich auslesen möchte:
Save config
Floorplans
00_Sensornet
01_Haus
02_Garten
03_Umwelt
04_Geräte
05_Rollo
90_Wasser
97_Mails
98_Logs
99_RPI
Audio
CUL_TCM97001
FHEM2FHEM
Heizung
Homekit
InterTechno
Plots
RolloAnlern
SOMFY
SignalDuino
System
Unsorted
icoEverything Everything
Logfile
Commandref
Remote doc
Edit files
Select style
Event monitor
Internals:
CFGFN
NAME HeizRadiator
NR 1041
STATE desired-temp 22
TYPE dummy
READINGS:
2018-01-27 16:45:00 state desired-temp 22
Attributes:
devStateIcon on:sani_heating@red off:sani_heating@white auto:sani_heating@green
event-on-change-reading state
genericDeviceType thermostat
homebridgeMapping TargetTemperature=desired-temp::desired-temp,minValue=5,maxValue=35,minStep=0.5,nocache=1
CurrentTemperature=MYSENSOR_190:temperature,nocache=1
TargetHeatingCoolingState=heatingState,values=OFF:off;;ON:on;;COOL:off;;AUTO:auto,cmds=OFF:off;;COOL:off;;HEAT:on;;AUTO:auto
CurrentHeatingCoolingState=heatingState,values=OFF:off;;HEAT:on;;COOL:off;;AUTO:auto,valud=OFF
room Heizung,Homekit
verbose 5
hier was ich weiter bearbeiten möchte:
Internals:
CFGFN
DEF ([HeizRadiator:state] eq "auto") (set Test auto)
DOELSEIF ([HeizRadiator:state] eq "on") (set Test on)
DOELSEIF ([HeizRadiator:state] eq "off") (Set Test off)
DOELSE (set Test2 Value("HeizRadiator","State",0))
NAME di_HeizRadiator
NR 6989
NTFY_ORDER 50-di_HeizRadiator
STATE cmd_4
TYPE DOIF
READINGS:
2018-01-27 16:45:00 Device HeizRadiator
2018-01-27 16:45:00 cmd 4
2018-01-27 16:45:00 cmd_event HeizRadiator
2018-01-27 16:45:00 cmd_nr 4
2018-01-27 16:45:00 e_HeizRadiator_state desired-temp 22
2018-01-27 16:45:00 state cmd_4
Regex:
condition:
0 ReadingValDoIf($hash,'HeizRadiator','state') eq "auto"
1 ReadingValDoIf($hash,'HeizRadiator','state') eq "on"
2 ReadingValDoIf($hash,'HeizRadiator','state') eq "off"
devices:
0 HeizRadiator
1 HeizRadiator
2 HeizRadiator
all HeizRadiator
do:
0:
0 set Test auto
1:
0 set Test on
2:
0 Set Test off
3:
0 set Test2 Value("HeizRadiator","State",0)
helper:
DOIF_Readings_events
DOIF_eventas
event desired-temp 22
globalinit 1
last_timer 0
sleeptimer -1
timerdev HeizRadiator
timerevent desired-temp 22
triggerDev HeizRadiator
timerevents:
desired-temp 22
timereventsState:
state: desired-temp 22
triggerEvents:
desired-temp 22
triggerEventsState:
state: desired-temp 22
internals:
itimer:
readings:
0 HeizRadiator:state
1 HeizRadiator:state
2 HeizRadiator:state
all HeizRadiator:state
trigger:
uiState:
uiTable:
Attributes:
room Heizung
Ich versuche aus einem Homekit-Thermostat den Heizstatus (on/off/auto) auszulesen udn an einen Dummy weiter zu geben - das klappt
aber der selbe Thermostat liefert auch desired-temp im selben State wie auch (on/off/auto) sein kann und da harperts.. weil einfache werte übergeben bekomm ich hin, aber wie gesagt einzelne Teile eines Strings übergeben schaff ich irgendwie nicht so recht..
[HeizRadiator:state:d] liefert Dir in dem Fall auch nur die Zahl zurück.
Allerdings, warum arbeitest Du mit dem dummy und vermischst alles im state? Warum setzt Du nicht getrennte readings?
Siehe auch mein Link zu set magic!
ich versteh nicht was du meinst?
der sinn hinter dem ganzen ist, dass ich mit homekit in den einzelnen Zimmern meine Heizung steuern und Temp. einstellen kann, habe aber keine aktiven Termostate (MAX! oder so) sondern Mysensors zur Messung - diese geben die werte an einen 2. Pi der meine Heizung steuert weiter..
da alle Radiatoren an der selben leitung und pumpe hänge, muß ich , egal in welchem zimmer ich lüfte muß ich unabhängig davon die pumpe abschalten..
Ich weiß, sounds strange aber is n altes haus..
der rest funkt schon ganz gut, kann auch die heizung soweit steuern, möchte halt nur der Userbility die Steuerung in Homekit integrieren...
welchen Satz hast Du nicht verstanden? :-[
Im übrigen sehe ich gerade : diese ist völlig falsch: Value("HeizRadiator","State",0)
sehr geil mit [HeizRadiator:state:d] funktioniert das genau so wie ich will....
Perfekt danke!!!!
naja das mit dem Vermischen, Homekit gibt mir die Werte entsprechend zurück... irgendwas zu vermsichen war nicht meine absicht... ich hangel mich immer so von forum zu forum.... ;-) ich entwickle meine Programmierung irgendwie immer empirisch...
gut: Ich habe keine Ahnung von Homekit. Aber irgendwer setzt ja den state HeizRadiator und diesen dummy könnte man ja auch ein zweites reading (desired-temp) gönnen.
Also anstatt set HeizRadiator desired-temp 22
setreading HeizRadiator desired-temp 22
hallo otto
das mit dem Setreading hat mich nciht in ruh gelassen, habs natürlich versucht, aber da hats trotzdem irgendwas....
das Reading kann ich erstellen, aber wenn ich auf homekit die temperature ändere, dann ändert er im state den Wert auf desired-temp xx und nicht das reading desired-temp selbst..
siehe foto
War ja nur ne Idee. Wenn Du Homekit nicht beeinflussen kannst, war die Idee sinnlos. Wie gesagt, ich habe keine Ahnung von Homekit.
dafür gibt es das readingList attribut in fhem.
im übrigen kann man in homebridge- fhem so ziemlich alles konfigurieren. auch das readings aus unterschiedlichen devices geholt werden. dummys nur zum kopieren von readings zu verwenden ist in 99% aller fälle unnötig.
wenn man tatsächlich dummys verwendet ist es immer besser mehrere readings im dummy zu haben.