Seite 1 von 1

Solis Wechselrichter / REGEX findet keinen Wert

Verfasst: 14. Jul 2020 13:20
von cx1
Hallo zusammen,

in einer Rule lasse ich mir den Response der Statusseite eines Solis Wechselrichters geben. Ich erhalte der kompletten HTTP Response, es wird per regex aber kein Wert gefunden. lt regex101.com ist das Regex Okay. habt ihr eine Idee?

Danke und Grüße

Code: Alles auswählen

rule "Inverter Logger"
when 
    Time cron "0 0/1 * * * ?"   // every minute
then
    val string result = sendHttpGetRequest("http://admin:admin@192.168.10.54/status.html")
    
    val string now_p = transform("REGEX", "var webdata_now_p = \"(.*)\"", result)
    logInfo("Inverter Logger", "NOW_P= " + now_p)
end
Ausschnitt aus dem Response (komplett als Anlage):

Code: Alles auswählen

}
</style>
<script type="text/javascript">
var height=0;function fileText(id,value){if(document.getElementById(id)){document.getElementById(id).innerHTML=value}}function changeFont(){reCon("main_div").style.fontFamily=window.parent.reFont()}function child_getH(){var nh=document.body.offsetHeight+100;if(nh<500||nh==null){nh=500}if(height!=nh){height=nh;window.parent.child_height(height)}}function reCon(id){return document.getElementById(id)}function ready(){try{window.parent.show_ifr()}catch(e){}child_getH()}function show(v){var c=document.getElementById(v);if(c!=null){c.style.display=""}}function hide(v){var c=document.getElementById(v);if(c!=null){c.style.display="none"}};
</script>
<script type="text/javascript">
var webdata_msvn = "0040";
var webdata_ssvn = "0026";
var webdata_pv_type = "00E2";
var webdata_rate_p = "";
var webdata_now_p = "330";
var webdata_today_e = "0.30";
var webdata_total_e = "10.0";
var webdata_alarm = "";
var webdata_utime = "0";
var cover_ver = "MW_08_0501_1.58";
var cover_wmode = "STA";
var cover_ap_ip = "10.10.100.254";
var cover_sta_rssi = "100%";
var status_a = "1";
var status_b = "0";
var status_c = "0";

function initPageText

Re: Solis Wechselrichter / REGEX findet keinen Wert

Verfasst: 14. Jul 2020 13:40
von udo1toni
Ergänze bitte mal hinter dem 2. \" ein .*, und genauso vor dem var...

Also so:

Code: Alles auswählen

val string now_p = transform("REGEX", ".*var webdata_now_p = \"(.*)\".*", result)   
Gesendet von meinem SM-G973F mit Tapatalk




Re: Solis Wechselrichter / REGEX findet keinen Wert

Verfasst: 14. Jul 2020 16:13
von cx1
Danke Udo,

jetzt bekomme ich den Wert für NOW_P zurück, aber auch die Hochkomma und alle anderen Zeilen danach :-|

Hast Du noch eine Idee?

Besten Dank!

Code: Alles auswählen

2020-07-14 16:07:00.509 [INFO ] [arthome.model.script.Inverter Logger] - NOW_P= 330";
var webdata_today_e = "5.70";
var webdata_total_e = "25.0";
//...gekürzt

Solis Wechselrichter / REGEX findet keinen Wert

Verfasst: 14. Jul 2020 20:40
von udo1toni
Immerhin. Dann müsstest Du halt noch das var webdata_today_e hinter das escapte Anführungszeichen schreiben, evtl. mit noch einem .* dazwischen. So:

Code: Alles auswählen

val string now_p = transform("REGEX", ".*var webdata_now_p = \"(.*)\".* var webdata_today_e.*", result)   
Gesendet von iPad mit Tapatalk

Re: Solis Wechselrichter / REGEX findet keinen Wert

Verfasst: 7. Feb 2022 15:17
von cx1
Mit diesem Regex hat es dann letztendlich funktioniert

Code: Alles auswählen

val string now_p = transform("REGEX", ".*var\\swebdata_now_p.{4}(\\d*).*", response)