Hauptmenü

Teil eines Strings

Begonnen von MichlB, 27 Januar 2018, 15:44:28

Vorheriges Thema - Nächstes Thema

MichlB

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?
1x PI 2B+ FHEM - Heizung
1x Pi 3b+ - FHEM - Haussteuerung
1x Pi 3 - MagicMirror
2x Pi B - Musicbox

Otto123

#1
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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

KernSani

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...
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

MichlB

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..

1x PI 2B+ FHEM - Heizung
1x Pi 3b+ - FHEM - Haussteuerung
1x Pi 3 - MagicMirror
2x Pi B - Musicbox

Otto123

#4
[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!
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

MichlB

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...
1x PI 2B+ FHEM - Heizung
1x Pi 3b+ - FHEM - Haussteuerung
1x Pi 3 - MagicMirror
2x Pi B - Musicbox

Otto123

#6
welchen Satz hast Du nicht verstanden?  :-[

Im übrigen sehe ich gerade : diese ist völlig falsch: Value("HeizRadiator","State",0)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

MichlB

sehr geil mit [HeizRadiator:state:d] funktioniert das genau so wie ich will....

Perfekt danke!!!!
1x PI 2B+ FHEM - Heizung
1x Pi 3b+ - FHEM - Haussteuerung
1x Pi 3 - MagicMirror
2x Pi B - Musicbox

MichlB

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...
1x PI 2B+ FHEM - Heizung
1x Pi 3b+ - FHEM - Haussteuerung
1x Pi 3 - MagicMirror
2x Pi B - Musicbox

Otto123

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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

MichlB

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
1x PI 2B+ FHEM - Heizung
1x Pi 3b+ - FHEM - Haussteuerung
1x Pi 3 - MagicMirror
2x Pi B - Musicbox

Otto123

War ja nur ne Idee. Wenn Du Homekit nicht beeinflussen kannst, war die Idee sinnlos. Wie gesagt, ich habe keine Ahnung von Homekit.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

justme1968

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. 
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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