FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: accessburn am 06 September 2016, 19:21:32

Titel: XML einlesen
Beitrag von: accessburn am 06 September 2016, 19:21:32
Huhu,
ich hab aus dem Forum was nachgebaut, mit dem Unterschied, dort klappte es :-p

Ich möchte ein eigenes Reading aus einer XML auslesen. Später extern, jetzt zum testen ein eigener String:


99_myutil
sub xmlTest {
use XML::Simple qw(:strict);
my $xmltext = '<?xml version="1.0" encoding="UTF-8" ?>
<GetValues>
<Version>1.2.51</Version>
<Uptime>0d 00:08:37</Uptime>
<Copyright>Nico Treffkorn,Magdeburg</Copyright>
<CurrentDateTime>19.03.2014 17:41:06</CurrentDateTime>
<LastEDLReceive>19.03.2014 17:41:06</LastEDLReceive>
<LastUDPReceive>00.00.0000 00:00:00</LastUDPReceive>
<LastWallboxControl>00.00.0000 00:00:00</LastWallboxControl>
<LastSQLStatement>00.00.0000 00:00:00</LastSQLStatement>
<LastKNXBroadcast>00.00.0000 00:00:00</LastKNXBroadcast>
<LastStorageReceive>00.00.0000 00:00:00</LastStorageReceive>
<SmartMeter>
<Using>1</Using>
<Type>SMA</Type>
<Serial>1900204007</Serial>
<TimeStamp>525987</TimeStamp>
<ActualPower>861</ActualPower>
<RealPower>
<L1>213</L1>
<L2>371</L2>
<L3>277</L3>
</RealPower>
<PowerFactor>
<total>0.916</total>
<L1>0.845</L1>
<L2>0.728</L2>
<L3>0.934</L3>
</PowerFactor>
<Voltage>
<L1>227</L1>
<L2>227</L2>
<L3>227</L3>
</Voltage>
<mAmpere>
<L1>1111</L1>
<L2>2245</L2>
<L3>1307</L3>
</mAmpere>
<MeterReadings>
<Consumption>180.0</Consumption>
<Surplus>160.6</Surplus>
</MeterReadings>
</SmartMeter>
<Infrastructure>
<MainFuses>
<Current>35000</Current>
<SafetyDistance>2000</SafetyDistance>
</MainFuses>
</Infrastructure>
<KNX>
<Using>0</Using>
</KNX>
<MySQL>
<Using>0</Using>
</MySQL>
<EV>
<Using>0</Using>
</EV>
<StorageSystem>
<Using>0</Using>
</StorageSystem>
</GetValues>
';
my $ref = XMLin($xmltext, KeyAttr => { }, ForceArray => [ ]);
fhem("setreading 'xmldummy', 'CurrentDateTime', $ref->{CurrentDateTime}");
return;
}


cfg
define xmldummy dummy
attr xmldummy room Email


Log:
Zitat2016.09.06 19:12:07 3: setreading 'xmldummy', 'CurrentDateTime', 19.03.2014 17:41:06 : Please define 'xmldummy', first

Es passiert aber auch beim Aufruf von {xmlTest} nüx außer der Eintrag im Log. Ich habe xmldummy doch definiert. Was hab ich verbockt?
Titel: Antw:XML einlesen
Beitrag von: pappn am 06 September 2016, 21:11:04
versuch doch mal so:

fhem("setreading xmldummy CurrentDateTime $ref");

aus meiner Sicht entspricht das eher der CommandRef.
Christof
Titel: Antw:XML einlesen
Beitrag von: accessburn am 07 September 2016, 10:51:11
Läuft :-)
Nachdem ich feststellte das ich den 127.0.0.1 freigeben muss läuft auch das mit der externen URL.


Weitere Frage, wenn erlaub, wie lege ich denn an das ich oben beim Set ein "reload" provozieren kann?
Titel: Antw:XML einlesen
Beitrag von: accessburn am 07 September 2016, 14:57:22
Okay, stelle gerade fest das überhaupt kein Reload statt findet.
Wie sorgt man dafür das sich dieses Reading immer selbstständig erneuert?
Titel: Antw:XML einlesen
Beitrag von: JoWiemann am 07 September 2016, 15:59:48
Hallo, ein entsprechendes "at" definieren. Siehe commandref.



Grüße Jörg

Gesendet von iPhone mit Tapatalk
Titel: Antw:XML einlesen
Beitrag von: accessburn am 07 September 2016, 16:17:56
So weit war ich auch schon, ich wollte nur nicht extra dafür eins anlegen, ich nahm an das geht im Sub direkt irgendwie.