Regexp problem

Homematic-, TCL- und Shell-Script, Toolchain, C, etc.

Moderator: Co-Administratoren

Antworten
MaxMan23
Beiträge: 97
Registriert: 03.01.2014, 14:26

Regexp problem

Beitrag von MaxMan23 » 31.08.2014, 09:25

Hallo Leute,

vielleicht könnt ihr mir ja helfen :-). Es soll eine xml Datei nach einem Wert durchsucht werden und in eine systemvariable geschrieben werden, leider klappt das nicht.
Wenn ich den Inhalt der Datei in einem onilne regexp tool überprüfe, bekomme ich auch exat einen Wert angezeigt.

Hier der regexp: ([0-9]{1,2})(?=,([0-9]{2}))



Hier das script:
#!/bin/tclsh

# load libaries
load tclrega.so



# include config
source conf/config.tcl

set f [open "/usr/local/addons/homematicWeather/wettercom.xml"]
set input [read $f]
close $f


regexp "([0-9]{1,2})(?=,([0-9]{2}))" $input dummy menge1 ;

set rega_cmd ""
append rega_cmd "dom.GetObject('Wetter-Niederschlag-Gestern').State('$menge1');"
rega_script $rega_cmd
exit 0;



Wo ist hier der Fehler. Es gibt die System Variable und sie hat exakt denselben Wortlaut und es gibt die wettercom.xml in dem angegebenen verzeichnis. Mit dem forcast script (wunderground-forecast10day.tcl) klappt das ja auch....

muss der regexp anders geschrieben werden?

MaxMan23
Beiträge: 97
Registriert: 03.01.2014, 14:26

Re: Regexp problem

Beitrag von MaxMan23 » 02.09.2014, 12:16

Keiner ne Idee von euch :-)?

MaxMan23
Beiträge: 97
Registriert: 03.01.2014, 14:26

Re: Regexp problem

Beitrag von MaxMan23 » 05.09.2014, 07:40

... auch wenn mir keiner Antwortet hab ich es soweit hin bekommen, dass der Wert eingetragen wird ;-)

regexp {([0-9]{1,2})(?=,([0-9]{2}))} $input dummy menge1 ;

set rega_cmd ""
append rega_cmd "dom.GetObject('Wetter-Niederschlag-Gestern').State('$menge1');"
rega_script $rega_cmd
exit 0;

Ein problem hab ich aber noch: Es kann sein das es an einem Tag nicht regnet, dann steht in der xml Datei keine 0 sondern nix und er findet keinen match. Die Variable wird dann nicht verändert und anstelle von 0 mm Niederschlag, bleibt der letzte Wert drinn stehen....


Wie kann ich jetzt eine if Anweisung davon machen? Also wenn kein Match, dann trage in der Variable $menge1 den Wert 0 ein?


Wäre nett wenn mir da mal jemand kurz helfen kann, dann klappt das endlich alles komplett :-)

Antworten

Zurück zu „Softwareentwicklung für die HomeMatic CCU“