Solis Wechselrichter / REGEX findet keinen Wert

Allgemeine Fragen rund um die "Smart Home" Hardware/Komponenten

Moderatoren: seppy, udo1toni

Antworten
cx1
Beiträge: 3
Answers: 0
Registriert: 14. Jul 2020 13:02

Solis Wechselrichter / REGEX findet keinen Wert

Beitrag 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

Benutzeravatar
udo1toni
Beiträge: 15244
Answers: 242
Registriert: 11. Apr 2018 18:05
Wohnort: Darmstadt

Re: Solis Wechselrichter / REGEX findet keinen Wert

Beitrag 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



openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

cx1
Beiträge: 3
Answers: 0
Registriert: 14. Jul 2020 13:02

Re: Solis Wechselrichter / REGEX findet keinen Wert

Beitrag 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

Benutzeravatar
udo1toni
Beiträge: 15244
Answers: 242
Registriert: 11. Apr 2018 18:05
Wohnort: Darmstadt

Solis Wechselrichter / REGEX findet keinen Wert

Beitrag 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
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

cx1
Beiträge: 3
Answers: 0
Registriert: 14. Jul 2020 13:02

Re: Solis Wechselrichter / REGEX findet keinen Wert

Beitrag 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)

Antworten