[HTTPMOD] XPath-Erweiterung

Begonnen von nesges, 02 Mai 2015, 03:17:48

Vorheriges Thema - Nächstes Thema

Bytechanger

JA, danke für das Angebot.
Wie gesagt, war nur ein Brett vor dem Kopf. Hatte eine andere XML Strucktur erwartet.

Gibt es kein kostenloses Programm um XML übersichtlich darzustellen (farblich und eingerückt) ?

XPath ist für meine Zwecke ja nicht so kompliziert. Da ich selber entwickle (SQL, .NET usw) ist es eigentlich selbsterklärend.


Gruß

Byte

Garbsen

Zitat von: pwfhem am 13 Dezember 2015, 22:06:10
ich glaube, es sind identische Versionen -- andere Plattform (ARM) allerdings
libxml-parser-perl: 2.41-3
libxml-xpath-perl: 1.13-7

Peter
Habt ihr das Memory Problem lösen können?
Habe auch das Problem, dass meine Memory usage langsam aber stetig ansteigt.
Denke auch, dass es an der httpmod Abfrage meiner Alpha2 liegen könnte
FHEM und Homebridge auf Intel NUC, CUL 868 v 1.66, CUL466 V 1.66, SOMFY RTS Rolläden, HM-LC-Bl1PBU-FM, HM-LC-BL1-FM, HM-SEC-SC-2, HM-SEC-RHS, HM-WDS10-TH-O, HM-SEC-WDS-2, HM-Sen-LI-O, HM-CC-RT-DN, HM-LC-Sw1-Pl-DN-R1, HM-SCI-3-FM, HM-Sec-Sir-WM, HM-PB-2-WM55-2, HM-RC-8, HM-LC-SW1-PL2, Alpha2

StefanStrobel

Hallo Garbsen,

Seit Februar setzt HTTPMOD $XML::XPath::SafeMode = 1 für die XPath Bibliothek. Seither gab es keine Beschwerden mehr.
Eigentlich sollte das auch nicht nötig sein, aber scheinbar gibt es auf manchen Plattformen defekte Versionen der XPath Bibliothek und ich vermute dass Safemode das Problem umschifft.
Wenn es nicht klappt, würde ich auf Regex-Parsing umstellen. Damit bekommt man es sicher auch hin - vermutlich auch performanter.

Gruß
   Stefan

Garbsen

Zitat von: StefanStrobel am 16 November 2016, 23:58:07
Hallo Garbsen,

Seit Februar setzt HTTPMOD $XML::XPath::SafeMode = 1 für die XPath Bibliothek. Seither gab es keine Beschwerden mehr.
Eigentlich sollte das auch nicht nötig sein, aber scheinbar gibt es auf manchen Plattformen defekte Versionen der XPath Bibliothek und ich vermute dass Safemode das Problem umschifft.
Wenn es nicht klappt, würde ich auf Regex-Parsing umstellen. Damit bekommt man es sicher auch hin - vermutlich auch performanter.

Gruß
   Stefan

Erstmal danke, klingt für mich ein wenig kryptisch, bin noch relativer Anfänger und eher gut im copy paste als im Selbstentwickeln.
Schaue es mir mal an und wenn Google nicht hilft, melde ich mich wieder
FHEM und Homebridge auf Intel NUC, CUL 868 v 1.66, CUL466 V 1.66, SOMFY RTS Rolläden, HM-LC-Bl1PBU-FM, HM-LC-BL1-FM, HM-SEC-SC-2, HM-SEC-RHS, HM-WDS10-TH-O, HM-SEC-WDS-2, HM-Sen-LI-O, HM-CC-RT-DN, HM-LC-Sw1-Pl-DN-R1, HM-SCI-3-FM, HM-Sec-Sir-WM, HM-PB-2-WM55-2, HM-RC-8, HM-LC-SW1-PL2, Alpha2

Garbsen

Zitat von: StefanStrobel am 16 November 2016, 23:58:07
Hallo Garbsen,

Seit Februar setzt HTTPMOD $XML::XPath::SafeMode = 1 für die XPath Bibliothek. Seither gab es keine Beschwerden mehr.
Eigentlich sollte das auch nicht nötig sein, aber scheinbar gibt es auf manchen Plattformen defekte Versionen der XPath Bibliothek und ich vermute dass Safemode das Problem umschifft.
Wenn es nicht klappt, würde ich auf Regex-Parsing umstellen. Damit bekommt man es sicher auch hin - vermutlich auch performanter.

Gruß
   Stefan

Wie schon von mir befürchtet, ich verstehe nicht, wie ich die Abfragen d.h. Die Attr. Ändern muss.

Folgende xml will ich auslesen:

HTTP/1.1 200 OK Content-Type: text/xml; charset="utf-8" Date: Thu, 17 Nov 2016 22:15:49 GMT Content-Length: 13707 <?xml version="1.0" encoding="UTF-8"?> <Devices> <Device> <ID>FBH_Unten_Code_1234</ID> <TYPE>EZRCTRL1</TYPE> <NAME>FBH_Unten_Code_1234</NAME> <ORIGIN>FBH_Unten_Code_1234</ORIGIN> <ERRORCOUNT>0</ERRORCOUNT> <DATETIME>2016-11-17T22:15:49</DATETIME> <DAYOFWEEK>4</DAYOFWEEK> <TIMEZONE>1</TIMEZONE> <NTPTIMESYNC>1</NTPTIMESYNC> <VERS_SW_STM>02.02</VERS_SW_STM> <VERS_SW_ETH>02.02</VERS_SW_ETH> <VERS_HW>01</VERS_HW> <TEMPERATUREUNIT>0</TEMPERATUREUNIT> <SUMMERWINTER>1</SUMMERWINTER> <TPS>0</TPS> <LIMITER>0</LIMITER> <MASTERID>MASTERID</MASTERID> <CHANGEOVER>0</CHANGEOVER> <COOLING>0</COOLING> <MODE>0</MODE> <OPERATIONMODE_ACTOR>0</OPERATIONMODE_ACTOR> <ANTIFREEZE>1</ANTIFREEZE> <ANTIFREEZE_TEMP>5.0</ANTIFREEZE_TEMP> <FIRSTOPEN_TIME>10</FIRSTOPEN_TIME> <SMARTSTART>1</SMARTSTART> <ECO_DIFF>4.0</ECO_DIFF> <ECO_INPUTMODE>0</ECO_INPUTMODE> <ECO_INPUT_STATE>0</ECO_INPUT_STATE> <T_HEAT_VACATION>15.0</T_HEAT_VACATION> <VACATION> <VACATION_STATE>1</VACATION_STATE> <START_DATE>2016-11-25</START_DATE> <START_TIME>12:00:00</START_TIME> <END_DATE>2016-11-27</END_DATE> <END_TIME>12:00:00</END_TIME> </VACATION> <NETWORK> <MAC>38:DE:60:01:33:97</MAC> <DHCP>1</DHCP> <IPV6ACTIVE>0</IPV6ACTIVE> <IPV4ACTUAL>192.168.177.33</IPV4ACTUAL> <IPV4SET>192.168.100.100</IPV4SET> <IPV6ACTUAL></IPV6ACTUAL> <IPV6SET></IPV6SET> <NETMASKACTUAL>255.255.255.0</NETMASKACTUAL> <NETMASKSET>255.255.255.0</NETMASKSET> <DNS>192.168.177.1</DNS> <GATEWAY>192.168.177.1</GATEWAY> </NETWORK> <CLOUD> <USERID>455A5215</USERID> <PASSWORD>455A520D</PASSWORD> <M2MSERVERPORT>55555</M2MSERVERPORT> <M2MLOCALPORT>50919</M2MLOCALPORT> <M2MHTTPPORT>50919</M2MHTTPPORT> <M2MHTTPSPORT>55014</M2MHTTPSPORT> <M2MSERVERADDRESS>www.ezr-cloud1.de</M2MSERVERADDRESS> <M2MACTIVE>0</M2MACTIVE> <M2MSTATE>Offline</M2MSTATE> </CLOUD> <KWLCTRL> <KWL_CONTROL_VISIBLE>0</KWL_CONTROL_VISIBLE> <KWL_PRESENT>0</KWL_PRESENT> <KWL_CONNECTION>0</KWL_CONNECTION> <KWL_URL>---</KWL_URL> <KWL_PORT>7777</KWL_PORT> <KWL_STATUS>0</KWL_STATUS> <KWL_FLOWCTRL>0</KWL_FLOWCTRL> </KWLCTRL> <CODE> <EXPERT>455A52DC16B62C64</EXPERT> </CODE> <PROGRAM> <SHIFT_PROGRAM nr="1" shiftingtime="1"> <START>09:15</START> <END>23:15</END> </SHIFT_PROGRAM> <SHIFT_PROGRAM nr="3" shiftingtime="1"> <START>06:30</START> <END>10:00</END> </SHIFT_PROGRAM> <SHIFT_PROGRAM nr="3" shiftingtime="2"> <START>16:00</START> <END>22:15</END> </SHIFT_PROGRAM> <SHIFT_PROGRAM nr="4" shiftingtime="1"> <START>06:00</START> <END>22:00</END> </SHIFT_PROGRAM> </PROGRAM> <PUMP_OUTPUT> <LOCALGLOBAL>0</LOCALGLOBAL> <PUMP_OUTPUT_TYPE>1</PUMP_OUTPUT_TYPE> <PUMP_LEADTIME>2</PUMP_LEADTIME> <PUMP_STOPPINGTIME>2</PUMP_STOPPINGTIME> <PUMP_OPERATIONMODE>0</PUMP_OPERATIONMODE> <MINRUNTIME>30</MINRUNTIME> <MINSTANDSTILL>20</MINSTANDSTILL> </PUMP_OUTPUT> <RELAIS> <FUNCTION>0</FUNCTION> <RELAIS_LEADTIME>0</RELAIS_LEADTIME> <RELAIS_STOPPINGTIME>0</RELAIS_STOPPINGTIME> <RELAIS_OPERATIONMODE>0</RELAIS_OPERATIONMODE> </RELAIS> <CHANGEOVER_FUNC> <CHANGEOVER_FUNC_MODE>0</CHANGEOVER_FUNC_MODE> </CHANGEOVER_FUNC> <EMERGENCYMODE> <EMERGENCYMODE_TIME>180</EMERGENCYMODE_TIME> <PWMCYCLE>15</PWMCYCLE> <PWMHEAT>25</PWMHEAT> <PWMCOOL>0</PWMCOOL> </EMERGENCYMODE> <VALVEPROTECT> <VALVEPROTECT_TIME>14</VALVEPROTECT_TIME> <DURATION>5</DURATION> </VALVEPROTECT> <PUMPPROTECT> <PUMPPROTECT_TIME>3</PUMPPROTECT_TIME> <DURATION>5</DURATION> </PUMPPROTECT> <HEATAREA nr="1"> <HEATAREA_NAME>GastHK1</HEATAREA_NAME> <HEATAREA_MODE>0</HEATAREA_MODE> <T_ACTUAL>22.8</T_ACTUAL> <T_ACTUAL_EXT>22.8</T_ACTUAL_EXT> <T_TARGET>17.0</T_TARGET> <T_TARGET_BASE>17.0</T_TARGET_BASE> <HEATAREA_STATE>0</HEATAREA_STATE> <PROGRAM_SOURCE>0</PROGRAM_SOURCE> <PROGRAM_WEEK>0</PROGRAM_WEEK> <PROGRAM_WEEKEND>0</PROGRAM_WEEKEND> <PARTY>0</PARTY> <PARTY_REMAININGTIME>0</PARTY_REMAININGTIME> <PRESENCE>0</PRESENCE> <T_TARGET_MIN>5.0</T_TARGET_MIN> <T_TARGET_MAX>25.0</T_TARGET_MAX> <RPM_MOTOR>0</RPM_MOTOR> <OFFSET>1.0</OFFSET> <T_HEAT_DAY>22.0</T_HEAT_DAY> <T_HEAT_NIGHT>17.0</T_HEAT_NIGHT> <T_COOL_DAY>21.0</T_COOL_DAY> <T_COOL_NIGHT>23.0</T_COOL_NIGHT> <T_FLOOR_DAY>3.0</T_FLOOR_DAY> <HEATINGSYSTEM>0</HEATINGSYSTEM> <BLOCK_HC>0</BLOCK_HC> <ISLOCKED>0</ISLOCKED> <LOCK_CODE>455A52C835D83047</LOCK_CODE> <LOCK_AVAILABLE>0</LOCK_AVAILABLE> <LIGHT>15</LIGHT> <SENSOR_EXT>0</SENSOR_EXT> <T_TARGET_ADJUSTABLE>1</T_TARGET_ADJUSTABLE> </HEATAREA> <HEATAREA nr="2"> <HEATAREA_NAME>WZHK2ab</HEATAREA_NAME> <HEATAREA_MODE>0</HEATAREA_MODE> <T_ACTUAL>23.8</T_ACTUAL> <T_ACTUAL_EXT>23.8</T_ACTUAL_EXT> <T_TARGET>18.0</T_TARGET> <T_TARGET_BASE>18.0</T_TARGET_BASE> <HEATAREA_STATE>0</HEATAREA_STATE> <PROGRAM_SOURCE>0</PROGRAM_SOURCE> <PROGRAM_WEEK>0</PROGRAM_WEEK> <PROGRAM_WEEKEND>0</PROGRAM_WEEKEND> <PARTY>0</PARTY> <PARTY_REMAININGTIME>0</PARTY_REMAININGTIME> <PRESENCE>0</PRESENCE> <T_TARGET_MIN>5.0</T_TARGET_MIN> <T_TARGET_MAX>25.0</T_TARGET_MAX> <RPM_MOTOR>0</RPM_MOTOR> <OFFSET>-2.0</OFFSET> <T_HEAT_DAY>23.0</T_HEAT_DAY> <T_HEAT_NIGHT>18.0</T_HEAT_NIGHT> <T_COOL_DAY>21.0</T_COOL_DAY> <T_COOL_NIGHT>17.0</T_COOL_NIGHT> <T_FLOOR_DAY>3.0</T_FLOOR_DAY> <HEATINGSYSTEM>0</HEATINGSYSTEM> <BLOCK_HC>0</BLOCK_HC> <ISLOCKED>0</ISLOCKED> <LOCK_CODE>455A527BDAAB2602</LOCK_CODE> <LOCK_AVAILABLE>0</LOCK_AVAILABLE> <LIGHT>15</LIGHT> <SENSOR_EXT>0</SENSOR_EXT> <T_TARGET_ADJUSTABLE>1</T_TARGET_ADJUSTABLE> </HEATAREA> <HEATAREA nr="5"> <HEATAREA_NAME>FlurHK5ab</HEATAREA_NAME> <HEATAREA_MODE>0</HEATAREA_MODE> <T_ACTUAL>21.7</T_ACTUAL> <T_ACTUAL_EXT>21.7</T_ACTUAL_EXT> <T_TARGET>23.0</T_TARGET> <T_TARGET_BASE>23.0</T_TARGET_BASE> <HEATAREA_STATE>0</HEATAREA_STATE> <PROGRAM_SOURCE>0</PROGRAM_SOURCE> <PROGRAM_WEEK>0</PROGRAM_WEEK> <PROGRAM_WEEKEND>0</PROGRAM_WEEKEND> <PARTY>0</PARTY> <PARTY_REMAININGTIME>0</PARTY_REMAININGTIME> <PRESENCE>0</PRESENCE> <T_TARGET_MIN>5.0</T_TARGET_MIN> <T_TARGET_MAX>25.0</T_TARGET_MAX> <RPM_MOTOR>0</RPM_MOTOR> <OFFSET>0.1</OFFSET> <T_HEAT_DAY>23.0</T_HEAT_DAY> <T_HEAT_NIGHT>19.0</T_HEAT_NIGHT> <T_COOL_DAY>21.0</T_COOL_DAY> <T_COOL_NIGHT>17.0</T_COOL_NIGHT> <T_FLOOR_DAY>3.0</T_FLOOR_DAY> <HEATINGSYSTEM>0</HEATINGSYSTEM> <BLOCK_HC>0</BLOCK_HC> <ISLOCKED>0</ISLOCKED> <LOCK_CODE>455A527BDAAB2602</LOCK_CODE> <LOCK_AVAILABLE>0</LOCK_AVAILABLE> <LIGHT>15</LIGHT> <SENSOR_EXT>0</SENSOR_EXT> <T_TARGET_ADJUSTABLE>1</T_TARGET_ADJUSTABLE> </HEATAREA> <HEATAREA nr="6"> <HEATAREA_NAME>HWRHK6</HEATAREA_NAME> <HEATAREA_MODE>0</HEATAREA_MODE> <T_ACTUAL>18.8</T_ACTUAL> <T_ACTUAL_EXT>18.8</T_ACTUAL_EXT> <T_TARGET>21.5</T_TARGET> <T_TARGET_BASE>21.5</T_TARGET_BASE> <HEATAREA_STATE>0</HEATAREA_STATE> <PROGRAM_SOURCE>0</PROGRAM_SOURCE> <PROGRAM_WEEK>0</PROGRAM_WEEK> <PROGRAM_WEEKEND>0</PROGRAM_WEEKEND> <PARTY>0</PARTY> <PARTY_REMAININGTIME>0</PARTY_REMAININGTIME> <PRESENCE>0</PRESENCE> <T_TARGET_MIN>0.0</T_TARGET_MIN> <T_TARGET_MAX>0.0</T_TARGET_MAX> <RPM_MOTOR>0</RPM_MOTOR> <OFFSET>0.0</OFFSET> <T_HEAT_DAY>0.0</T_HEAT_DAY> <T_HEAT_NIGHT>0.0</T_HEAT_NIGHT> <T_COOL_DAY>0.0</T_COOL_DAY> <T_COOL_NIGHT>0.0</T_COOL_NIGHT> <T_FLOOR_DAY>0.0</T_FLOOR_DAY> <HEATINGSYSTEM>0</HEATINGSYSTEM> <BLOCK_HC>0</BLOCK_HC> <ISLOCKED>0</ISLOCKED> <LOCK_CODE>455A52B23DD035D8</LOCK_CODE> <LOCK_AVAILABLE>0</LOCK_AVAILABLE> <LIGHT>0</LIGHT> <SENSOR_EXT>0</SENSOR_EXT> <T_TARGET_ADJUSTABLE>1</T_TARGET_ADJUSTABLE> </HEATAREA> <HEATAREA nr="7"> <HEATAREA_NAME>KücheHK7</HEATAREA_NAME> <HEATAREA_MODE>0</HEATAREA_MODE> <T_ACTUAL>22.3</T_ACTUAL> <T_ACTUAL_EXT>22.3</T_ACTUAL_EXT> <T_TARGET>19.0</T_TARGET> <T_TARGET_BASE>19.0</T_TARGET_BASE> <HEATAREA_STATE>0</HEATAREA_STATE> <PROGRAM_SOURCE>0</PROGRAM_SOURCE> <PROGRAM_WEEK>0</PROGRAM_WEEK> <PROGRAM_WEEKEND>0</PROGRAM_WEEKEND> <PARTY>0</PARTY> <PARTY_REMAININGTIME>0</PARTY_REMAININGTIME> <PRESENCE>0</PRESENCE> <T_TARGET_MIN>5.0</T_TARGET_MIN> <T_TARGET_MAX>25.0</T_TARGET_MAX> <RPM_MOTOR>0</RPM_MOTOR> <OFFSET>1.5</OFFSET> <T_HEAT_DAY>23.0</T_HEAT_DAY> <T_HEAT_NIGHT>19.0</T_HEAT_NIGHT> <T_COOL_DAY>21.0</T_COOL_DAY> <T_COOL_NIGHT>17.0</T_COOL_NIGHT> <T_FLOOR_DAY>3.0</T_FLOOR_DAY> <HEATINGSYSTEM>0</HEATINGSYSTEM> <BLOCK_HC>0</BLOCK_HC> <ISLOCKED>0</ISLOCKED> <LOCK_CODE>455A52E6421A93C6</LOCK_CODE> <LOCK_AVAILABLE>0</LOCK_AVAILABLE> <LIGHT>15</LIGHT> <SENSOR_EXT>0</SENSOR_EXT> <T_TARGET_ADJUSTABLE>1</T_TARGET_ADJUSTABLE> </HEATAREA> <HEATAREA nr="8"> <HEATAREA_NAME>Bad unten HK8</HEATAREA_NAME> <HEATAREA_MODE>0</HEATAREA_MODE> <T_ACTUAL>20.3</T_ACTUAL> <T_ACTUAL_EXT>20.3</T_ACTUAL_EXT> <T_TARGET>17.2</T_TARGET> <T_TARGET_BASE>17.2</T_TARGET_BASE> <HEATAREA_STATE>0</HEATAREA_STATE> <PROGRAM_SOURCE>0</PROGRAM_SOURCE> <PROGRAM_WEEK>3</PROGRAM_WEEK> <PROGRAM_WEEKEND>3</PROGRAM_WEEKEND> <PARTY>0</PARTY> <PARTY_REMAININGTIME>0</PARTY_REMAININGTIME> <PRESENCE>0</PRESENCE> <T_TARGET_MIN>0.0</T_TARGET_MIN> <T_TARGET_MAX>0.0</T_TARGET_MAX> <RPM_MOTOR>0</RPM_MOTOR> <OFFSET>0.0</OFFSET> <T_HEAT_DAY>0.0</T_HEAT_DAY> <T_HEAT_NIGHT>0.0</T_HEAT_NIGHT> <T_COOL_DAY>0.0</T_COOL_DAY> <T_COOL_NIGHT>0.0</T_COOL_NIGHT> <T_FLOOR_DAY>0.0</T_FLOOR_DAY> <HEATINGSYSTEM>0</HEATINGSYSTEM> <BLOCK_HC>0</BLOCK_HC> <ISLOCKED>0</ISLOCKED> <LOCK_CODE>455A524174A15B6A</LOCK_CODE> <LOCK_AVAILABLE>0</LOCK_AVAILABLE> <LIGHT>0</LIGHT> <SENSOR_EXT>0</SENSOR_EXT> <T_TARGET_ADJUSTABLE>1</T_TARGET_ADJUSTABLE> </HEATAREA> <HEATCTRL nr="1"> <INUSE>1</INUSE> <HEATAREA_NR>1</HEATAREA_NR> <ACTOR>0</ACTOR> <ACTOR_PERCENT>0</ACTOR_PERCENT> <HEATCTRL_STATE>0</HEATCTRL_STATE> </HEATCTRL> <HEATCTRL nr="2"> <INUSE>1</INUSE> <HEATAREA_NR>2</HEATAREA_NR> <ACTOR>0</ACTOR> <ACTOR_PERCENT>0</ACTOR_PERCENT> <HEATCTRL_STATE>0</HEATCTRL_STATE> </HEATCTRL> <HEATCTRL nr="3"> <INUSE>0</INUSE> <HEATAREA_NR>0</HEATAREA_NR> <ACTOR>0</ACTOR> <ACTOR_PERCENT>0</ACTOR_PERCENT> <HEATCTRL_STATE>0</HEATCTRL_STATE> </HEATCTRL> <HEATCTRL nr="4"> <INUSE>0</INUSE> <HEATAREA_NR>0</HEATAREA_NR> <ACTOR>0</ACTOR> <ACTOR_PERCENT>0</ACTOR_PERCENT> <HEATCTRL_STATE>0</HEATCTRL_STATE> </HEATCTRL> <HEATCTRL nr="5"> <INUSE>1</INUSE> <HEATAREA_NR>5</HEATAREA_NR> <ACTOR>1</ACTOR> <ACTOR_PERCENT>90</ACTOR_PERCENT> <HEATCTRL_STATE>1</HEATCTRL_STATE> </HEATCTRL> <HEATCTRL nr="6"> <INUSE>1</INUSE> <HEATAREA_NR>6</HEATAREA_NR> <ACTOR>0</ACTOR> <ACTOR_PERCENT>90</ACTOR_PERCENT> <HEATCTRL_STATE>1</HEATCTRL_STATE> </HEATCTRL> <HEATCTRL nr="7"> <INUSE>1</INUSE> <HEATAREA_NR>7</HEATAREA_NR> <ACTOR>0</ACTOR> <ACTOR_PERCENT>0</ACTOR_PERCENT> <HEATCTRL_STATE>0</HEATCTRL_STATE> </HEATCTRL> <HEATCTRL nr="8"> <INUSE>1</INUSE> <HEATAREA_NR>8</HEATAREA_NR> <ACTOR>0</ACTOR> <ACTOR_PERCENT>0</ACTOR_PERCENT> <HEATCTRL_STATE>0</HEATCTRL_STATE> </HEATCTRL> <HEATCTRL nr="9"> <INUSE>0</INUSE> <HEATAREA_NR>0</HEATAREA_NR> <ACTOR>0</ACTOR> <ACTOR_PERCENT>0</ACTOR_PERCENT> <HEATCTRL_STATE>0</HEATCTRL_STATE> </HEATCTRL> <HEATCTRL nr="10"> <INUSE>0</INUSE> <HEATAREA_NR>0</HEATAREA_NR> <ACTOR>0</ACTOR> <ACTOR_PERCENT>0</ACTOR_PERCENT> <HEATCTRL_STATE>0</HEATCTRL_STATE> </HEATCTRL> <HEATCTRL nr="11"> <INUSE>0</INUSE> <HEATAREA_NR>0</HEATAREA_NR> <ACTOR>0</ACTOR> <ACTOR_PERCENT>0</ACTOR_PERCENT> <HEATCTRL_STATE>0</HEATCTRL_STATE> </HEATCTRL> <HEATCTRL nr="12"> <INUSE>0</INUSE> <HEATAREA_NR>0</HEATAREA_NR> <ACTOR>0</ACTOR> <ACTOR_PERCENT>0</ACTOR_PERCENT> <HEATCTRL_STATE>0</HEATCTRL_STATE> </HEATCTRL> <IODEVICE nr="1"> <IODEVICE_TYPE>0</IODEVICE_TYPE> <IODEVICE_ID>1</IODEVICE_ID> <IODEVICE_VERS_HW>1</IODEVICE_VERS_HW> <IODEVICE_VERS_SW>02.02</IODEVICE_VERS_SW> <HEATAREA_NR>1</HEATAREA_NR> <SIGNALSTRENGTH>2</SIGNALSTRENGTH> <BATTERY>2</BATTERY> <IODEVICE_STATE>0</IODEVICE_STATE> <IODEVICE_COMERROR>0</IODEVICE_COMERROR> <!-- XML-BUF: Out of Memory! --> <!-- XML-BUF: Continue... --> <ISON>1</ISON> </IODEVICE> <IODEVICE nr="2"> <IODEVICE_TYPE>0</IODEVICE_TYPE> <IODEVICE_ID>2</IODEVICE_ID> <IODEVICE_VERS_HW>1</IODEVICE_VERS_HW> <IODEVICE_VERS_SW>02.02</IODEVICE_VERS_SW> <HEATAREA_NR>2</HEATAREA_NR> <SIGNALSTRENGTH>2</SIGNALSTRENGTH> <BATTERY>2</BATTERY> <IODEVICE_STATE>0</IODEVICE_STATE> <IODEVICE_COMERROR>0</IODEVICE_COMERROR> <ISON>1</ISON> </IODEVICE> <IODEVICE nr="3"> <IODEVICE_TYPE>0</IODEVICE_TYPE> <IODEVICE_ID>3</IODEVICE_ID> <IODEVICE_VERS_HW>1</IODEVICE_VERS_HW> <IODEVICE_VERS_SW>02.02</IODEVICE_VERS_SW> <HEATAREA_NR>5</HEATAREA_NR> <SIGNALSTRENGTH>2</SIGNALSTRENGTH> <BATTERY>2</BATTERY> <IODEVICE_STATE>0</IODEVICE_STATE> <IODEVICE_COMERROR>0</IODEVICE_COMERROR> <ISON>1</ISON> </IODEVICE> <IODEVICE nr="4"> <IODEVICE_TYPE>1</IODEVICE_TYPE> <IODEVICE_ID>4</IODEVICE_ID> <IODEVICE_VERS_HW>1</IODEVICE_VERS_HW> <IODEVICE_VERS_SW>01.71</IODEVICE_VERS_SW> <HEATAREA_NR>6</HEATAREA_NR> <SIGNALSTRENGTH>2</SIGNALSTRENGTH> <BATTERY>2</BATTERY> <IODEVICE_STATE>0</IODEVICE_STATE> <IODEVICE_COMERROR>0</IODEVICE_COMERROR> <ISON>1</ISON> </IODEVICE> <IODEVICE nr="5"> <IODEVICE_TYPE>0</IODEVICE_TYPE> <IODEVICE_ID>5</IODEVICE_ID> <IODEVICE_VERS_HW>1</IODEVICE_VERS_HW> <IODEVICE_VERS_SW>02.02</IODEVICE_VERS_SW> <HEATAREA_NR>7</HEATAREA_NR> <SIGNALSTRENGTH>2</SIGNALSTRENGTH> <BATTERY>2</BATTERY> <IODEVICE_STATE>0</IODEVICE_STATE> <IODEVICE_COMERROR>0</IODEVICE_COMERROR> <ISON>1</ISON> </IODEVICE> <IODEVICE nr="6"> <IODEVICE_TYPE>1</IODEVICE_TYPE> <IODEVICE_ID>6</IODEVICE_ID> <IODEVICE_VERS_HW>1</IODEVICE_VERS_HW> <IODEVICE_VERS_SW>02.02</IODEVICE_VERS_SW> <HEATAREA_NR>8</HEATAREA_NR> <SIGNALSTRENGTH>2</SIGNALSTRENGTH> <BATTERY>2</BATTERY> <IODEVICE_STATE>0</IODEVICE_STATE> <IODEVICE_COMERROR>0</IODEVICE_COMERROR> <ISON>1</ISON> </IODEVICE> </Device> </Devices>

Derzeit mache ich das mit folgenden attr. (Beispiel)

reading01Name Gast-Ist

reading01Regex xpath-strict://devices/Device/HEATAREA [@nr="1"]/T_ACTUAL/text()

Das funktioniert, führt aber zu den Memory Problemen, die mich zwingen d`en Pi regelmäßig neu zu starten, was lästig ist.

Wie muss ich die regex Attr. Ändern, um auf regex-parsing umzustellen?

Danke
K-H
FHEM und Homebridge auf Intel NUC, CUL 868 v 1.66, CUL466 V 1.66, SOMFY RTS Rolläden, HM-LC-Bl1PBU-FM, HM-LC-BL1-FM, HM-SEC-SC-2, HM-SEC-RHS, HM-WDS10-TH-O, HM-SEC-WDS-2, HM-Sen-LI-O, HM-CC-RT-DN, HM-LC-Sw1-Pl-DN-R1, HM-SCI-3-FM, HM-Sec-Sir-WM, HM-PB-2-WM55-2, HM-RC-8, HM-LC-SW1-PL2, Alpha2

StefanStrobel

Hallo Garbsen,

probier doch so was wie

reading01Regex <HEATAREA_NAME>GastHK1</HEATAREA_NAME>[^<]+<[^<]+>[^<]+</[^<]+>[^<]+<T_ACTUAL>([\d\.]+)</T

um den Wert für GastHK1 zu bekommen.

Ein Regex-Tester ist da auf jeden Fall hilfreich, z.B. http://retester.herokuapp.com/

Gruss
   Stefan

Garbsen

Zitat von: StefanStrobel am 18 November 2016, 09:16:13
Hallo Garbsen,

probier doch so was wie

reading01Regex <HEATAREA_NAME>GastHK1</HEATAREA_NAME>[^<]+<[^<]+>[^<]+</[^<]+>[^<]+<T_ACTUAL>([\d\.]+)</T

um den Wert für GastHK1 zu bekommen.

Ein Regex-Tester ist da auf jeden Fall hilfreich, z.B. http://retester.herokuapp.com/

Gruss
   Stefan

Hallo Stefan

Jo, das klappt, damit bekomme ich den Wert der aktuellen Temperatur.
Leider klingt das für mich sehr unverständlich, auch dein Link bringt mich nicht weiter.
Kannst du mir verraten nach welcher Logik sich das aufbaut oder wo ich den Aufbau studieren kann?
Wofür stehen die [^<]? Warum fängst du mit [HEATAREA_NAME] an? Kann man auch an anderer Stelle "einsteigen"
Danke für die Nachhilfe
K-H
FHEM und Homebridge auf Intel NUC, CUL 868 v 1.66, CUL466 V 1.66, SOMFY RTS Rolläden, HM-LC-Bl1PBU-FM, HM-LC-BL1-FM, HM-SEC-SC-2, HM-SEC-RHS, HM-WDS10-TH-O, HM-SEC-WDS-2, HM-Sen-LI-O, HM-CC-RT-DN, HM-LC-Sw1-Pl-DN-R1, HM-SCI-3-FM, HM-Sec-Sir-WM, HM-PB-2-WM55-2, HM-RC-8, HM-LC-SW1-PL2, Alpha2

StefanStrobel

Hallo K-H,

als dem Wiki:

If you have trouble defining a regular expression that matches a certain name, then many complicated characters and then a number, it might be helpful to use a negation in matching like temp[^\d]+([\d\.]).*. In this examle [^\d]+ means any character that is not a numerical digit, more than once.


bzw.
http://perldoc.perl.org/perlretut.html

Gruss
    Stefan

Garbsen

Zitat von: StefanStrobel am 19 November 2016, 09:35:26
Hallo K-H,

als dem Wiki:

If you have trouble defining a regular expression that matches a certain name, then many complicated characters and then a number, it might be helpful to use a negation in matching like temp[^\d]+([\d\.]).*. In this examle [^\d]+ means any character that is not a numerical digit, more than once.


bzw.
http://perldoc.perl.org/perlretut.html

Gruss
    Stefan

Danke, hätte ich vermutlich auch finden können, wohl blöde Suchanfrage gestellt.
Damit sollte ich es rausbekommen
Ein wenig war ich schon durch trial and error weitergekommen, mit diesen Hinweisen bastele ich mal weiter rum
FHEM und Homebridge auf Intel NUC, CUL 868 v 1.66, CUL466 V 1.66, SOMFY RTS Rolläden, HM-LC-Bl1PBU-FM, HM-LC-BL1-FM, HM-SEC-SC-2, HM-SEC-RHS, HM-WDS10-TH-O, HM-SEC-WDS-2, HM-Sen-LI-O, HM-CC-RT-DN, HM-LC-Sw1-Pl-DN-R1, HM-SCI-3-FM, HM-Sec-Sir-WM, HM-PB-2-WM55-2, HM-RC-8, HM-LC-SW1-PL2, Alpha2

Michi1978

Hallo!

ich möchte alle werte aus folgender Seite auslesen, jedoch weis ich nicht wie ich dies anstellen soll.
Habe schon mit Xpath einiges getestet aber es kommt nix :(

https://netzfrequenzmessung.de:9080/frequenz01.xml

Kann mir da jemand bei helfen? Bin kein Programmierer

StefanStrobel

Zitat von: Michi1978 am 16 August 2022, 10:13:17
Habe schon mit Xpath einiges getestet aber es kommt nix :(
https://netzfrequenzmessung.de:9080/frequenz01.xml

von der Adresse bekomme ich einfach nur eine Zeile mit Werten, die durch Leerzeichen getrennt sind.
Das machst Du am besten mit einer Regex.

Gruss
   Stefan

StefanStrobel

Beispiel:
Die Regex ([^\s]+)\s([^\s]+) extrahiert zwei Werte die jeweils in runden Klammern als Gruppe definiert sind.
\s steht für ein Leerzeichen und [^\s] für ein Zeichen, das kein Leerzeichen ist. Das + danach bedeutet dass man mehrere solche Zeichen erfasst.

Gruß
   Stefan