Hauptmenü

XML einlesen

Begonnen von accessburn, 06 September 2016, 19:21:32

Vorheriges Thema - Nächstes Thema

accessburn

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?
Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole

pappn

versuch doch mal so:

fhem("setreading xmldummy CurrentDateTime $ref");

aus meiner Sicht entspricht das eher der CommandRef.
Christof
"When all else fails, read the instructions."

CUL868, RFXTFX433 und CCU3
FS20, S300TH, UNIRoll, Homematic IP, OZW672, diverse HOMEEASY, IT kompatible und China Zeugs

accessburn

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?
Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole

accessburn

Okay, stelle gerade fest das überhaupt kein Reload statt findet.
Wie sorgt man dafür das sich dieses Reading immer selbstständig erneuert?
Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole

JoWiemann

Hallo, ein entsprechendes "at" definieren. Siehe commandref.



Grüße Jörg

Gesendet von iPhone mit Tapatalk
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

accessburn

So weit war ich auch schon, ich wollte nur nicht extra dafür eins anlegen, ich nahm an das geht im Sub direkt irgendwie.
Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole