Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for Bosswerk MI600 #96

Closed
HartmutHartmann opened this issue Feb 12, 2022 · 14 comments
Closed

Support for Bosswerk MI600 #96

HartmutHartmann opened this issue Feb 12, 2022 · 14 comments

Comments

@HartmutHartmann
Copy link

Hello,

I was looking for a local method to get data from my inverter and stumbled upon this project. Right now I'm using the solarman api, sadly cloud based.

Out of the 3 methods listed in the readme only the HTML method would be available on the Bosswerk MI600. Here i can use a simple
curl --user username:pass "http://ip-address/status.html"
to get the data including the <script> with the webdata:
var webdata_sn = "abc";
var webdata_msvn = "";
var webdata_ssvn = "";
var webdata_pv_type = "";
var webdata_rate_p = "";
var webdata_now_p = "1";
var webdata_today_e = "2.0";
var webdata_total_e = "3.0";
var webdata_alarm = "";
var webdata_utime = "0";
var cover_mid = "def";
var cover_ver = "MW3_15_5406_1.35";
var cover_wmode = "APSTA";
var cover_ap_ssid = "";
var cover_ap_ip = "";
var cover_ap_mac = "";
var cover_sta_ssid = "***";
var cover_sta_rssi = "";
var cover_sta_ip = "#.#.#.#";
var cover_sta_mac = "";
var status_a = "1";
var status_b = "0";
var status_c = "0";

But the integration fails to connect to the inverter with the following message:
"Config entry 'Home' for omnik_inverter integration not ready yet: Error occurred while communicating with Omnik Inverter device; Retrying in background"

Would it be possible to add the MI600 to the integration?

Thanks in advance.

@klaasnicolaas
Copy link
Collaborator

klaasnicolaas commented Feb 12, 2022

Based on this output, there should be already support. The only question is why it won't connect now 🤔 Could you post the raw output of that page here? (replace sensitive data for dummy) We could also have one-to-one contact for remote debugging.

@HartmutHartmann
Copy link
Author

Here is the raw output:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<style type="text/css">
.in_body
{
        margin-top:0px;
        margin-left:0px;
        margin-right:0px;
        margin-bottom:0px;
        background-color:transparent;
}
.div_c
{
        margin-left:50px;
        margin-right:50px;
        margin-top:50px;
        margin-bottom:50px;
}
.cu
{
        cursor:pointer;
}
.b
{
        font-weight:bold;
}
.lab_5
{
        font-size:16px;
        color:#666666;
        margin-left:-20px;
}
.lab_l2
{
        float:left;
        width:32%;
        color:#666666;
        margin-bottom:-2px;
        font-size:14px;
}
.lab_r2
{
        float:left;
        width:68%;
        color:#666666;
        text-align:right;
        font-size:14px;
}
.cl
{
        clear:left;
}
.line
{
        height:1px;
        background-color:#666666;
        width:100%;
        margin-top:5px;
        margin-bottom:5px;
}
.sp_5
{
        height:5px;
        width:500px;
}
.sp_20
{
        height:20px;
        width:500px;
}
.label
{
        float:left;
        width:50%;
        color:#666666;
        margin-bottom:-2px;
        font-size:14px;
}
.lab_r
{
        float:left;
        width:50%;
        color:#666666;
        text-align:right;
        font-size:14px;
}
.lab_l
{
        float:left;
        width:40%;
        color:#666666;
        margin-bottom:-2px;
        margin-left:10%;
        font-size:14px;
}
.line_l
{
        height:1px;
        background-color:#666666;
        width:450px;
        margin-top:5px;
        margin-bottom:5px;
        margin-left:50px;
}
.sub
{
    display:inline-block;
    width:16px;
    text-align:center;
}
</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_sn = "abc";
var webdata_msvn = "";
var webdata_ssvn = "";
var webdata_pv_type = "";
var webdata_rate_p = "";
var webdata_now_p = "1";
var webdata_today_e = "2.0";
var webdata_total_e = "3.0";
var webdata_alarm = "";
var webdata_utime = "0";
var cover_mid = "def";
var cover_ver = "MW3_15_5406_1.35";
var cover_wmode = "APSTA";
var cover_ap_ssid = "***";
var cover_ap_ip = "#.#.#.#";
var cover_ap_mac = "XX:XX:XX:XX:XX:XX";
var cover_sta_ssid = "xyz";
var cover_sta_rssi = "##%";
var cover_sta_ip = "#.#.#.#";
var cover_sta_mac = "XX:XX:XX:XX:XX:XX";
var status_a = "1";
var status_b = "0";
var status_c = "0";

function initPageText(){var list=window.parent.reList("status");fileText("st1",list["t1"]);fileText("st2",list["t2"]);fileText("st3",list["t3"]);for(var i=1;i<=27;i++){if(i!=14){fileText("tx"+i,list[i])}}changeFont();child_getH()}function upfold(v){if(document.getElementById("up_"+v+"_div").style.display=="none"){show("up_"+v+"_div");reCon("p_"+v).innerHTML="-"}else{hide("up_"+v+"_div");reCon("p_"+v).innerHTML="+"}}function init_main_page(){var on=window.parent.reTip("1");var off=window.parent.reTip("2");document.getElementById("cover_mid").innerHTML=cover_mid;document.getElementById("cover_ver").innerHTML=cover_ver;document.getElementById("cover_ap_status").innerHTML=off;document.getElementById("cover_sta_status").innerHTML=off;if(cover_wmode!="STA"){document.getElementById("cover_ap_status").innerHTML=on;document.getElementById("cover_ap_ssid").innerHTML=cover_ap_ssid;document.getElementById("cover_ap_ip").innerHTML=cover_ap_ip;document.getElementById("cover_ap_mac").innerHTML=cover_ap_mac}if(cover_wmode!="AP"){document.getElementById("cover_sta_status").innerHTML=on;document.getElementById("cover_sta_ssid").innerHTML=cover_sta_ssid;document.getElementById("cover_sta_rssi").innerHTML=cover_sta_rssi;document.getElementById("cover_sta_ip").innerHTML=cover_sta_ip;document.getElementById("cover_sta_mac").innerHTML=cover_sta_mac}if(webdata_sn==""){webdata_sn="---"}fileText("webdata_sn",webdata_sn);if(webdata_msvn==""){webdata_msvn="---"}fileText("webdata_msvn",webdata_msvn);if(webdata_ssvn==""){webdata_ssvn="---"}fileText("webdata_ssvn",webdata_ssvn);if(webdata_pv_type==""){webdata_pv_type="---"}fileText("webdata_pv_type",webdata_pv_type);if(webdata_rate_p==""){webdata_rate_p="---"}fileText("webdata_rate_p",webdata_rate_p+" W");if(webdata_now_p==""||webdata_now_p==0){webdata_now_p="---"}fileText("webdata_now_p",webdata_now_p+" W");if(webdata_today_e==""){webdata_today_e="---"}fileText("webdata_today_e",webdata_today_e+" kWh");if(webdata_total_e==""){webdata_total_e="---"}fileText("webdata_total_e",webdata_total_e+" kWh");if(webdata_alarm==""){webdata_alarm="---"}fileText("webdata_alarm",webdata_alarm);if(webdata_utime==""){if(document.getElementById("webdata_sn").innerHTML=="---"){webdata_utime="---"}else{webdata_utime=value+window.parent.reTip("5")}}fileText("webdata_utime",webdata_utime);var st_en=window.parent.reTip("3");var st_dis=window.parent.reTip("4");var st_un=window.parent.reTip("41");if(status_a=="1"){document.getElementById("cover_remote_status_a").innerHTML=st_en}else{if(status_a=="0"){document.getElementById("cover_remote_status_a").innerHTML=st_dis}else{document.getElementById("cover_remote_status_a").innerHTML=st_un}}if(status_b=="1"){document.getElementById("cover_remote_status_b").innerHTML=st_en}else{if(status_b=="0"){document.getElementById("cover_remote_status_b").innerHTML=st_dis}else{document.getElementById("cover_remote_status_b").innerHTML=st_un}}};

</script>
</head>
<body class="in_body" onload="init_main_page();">
        <div class="div_c" id="main_div">
        <div class="lab_5 cu b" onclick="upfold(1);child_getH();"><span class="sub" id="p_1">-</span><span id="st1" style="margin-left:3px"></span></div>
        <div class="sp_5"></div>
        <div id="up_1_div">
        <div class="lab_l2" id="tx1"></div>
                <div class="lab_r2" id="webdata_sn"></div>
        <div class="cl"></div>
        <div class="line"></div>
        <div class="lab_l2" id="tx2"></div>
                <div class="lab_r2" id="webdata_msvn"></div>
        <div class="cl"></div>
        <div class="line"></div>
        <div class="lab_l2" id="tx3"></div>
                <div class="lab_r2" id="webdata_ssvn"></div>
        <div class="cl"></div>
        <div class="line"></div>
        <div class="lab_l2" id="tx4"></div>
                <div class="lab_r2" id="webdata_pv_type"></div>
        <div class="cl"></div>
        <div class="line"></div>
        <div class="lab_l2" id="tx5"></div>
                <div class="lab_r2" id="webdata_rate_p"></div>
        <div class="cl"></div>
        <div class="line"></div>
        <div class="lab_l2" style="color:#666666;font-weight:bold;" id="tx6"></div>
                <div class="lab_r2" id="webdata_now_p" style="color:#666666;font-weight:bold;"></div>
        <div class="cl"></div>
        <div class="line"></div>
        <div class="lab_l2" style="color:#666666;font-weight:bold;" id="tx7"></div>
                <div class="lab_r2" id="webdata_today_e" style="color:#666666;font-weight:bold;"></div>
        <div class="cl"></div>
        <div class="line"></div>
        <div class="lab_l2" style="color:#666666;font-weight:bold;" id="tx8"></div>
                <div class="lab_r2" id="webdata_total_e" style="color:#666666;font-weight:bold;"></div>
        <div class="cl"></div>
        <div class="line"></div>
        <div class="lab_l2" style="color:#666666;font-weight:bold;" id="tx9"></div>
                <div class="lab_r2" id="webdata_alarm" style="color:#666666;font-weight:bold;"></div>
        <div class="cl"></div>
        <div class="line"></div>
        <div class="lab_l2" style="color:#666666;font-weight:bold;" id="tx10"></div>
                <div class="lab_r2" id="webdata_utime" style="color:#666666;font-weight:bold;"></div>
        <div class="cl"></div>
        <div class="line"></div>
        </div>
        <div class="sp_20"></div>
        <div class="lab_5 cu b" onclick="upfold(2);child_getH();"><span class="sub" id="p_2">+</span><span id="st2" style="margin-left:3px"></span></div>
                <div class="sp_5"></div>
                <div id="up_2_div" style="display:none">
                <div class="label" id="tx11"></div>
                <div class="lab_r" id="cover_mid"></div>
                <div class="cl"></div>
                <div class="line"></div>
                <div class="label" id="tx12"></div>
                <div class="lab_r" id="cover_ver"></div>
                <div class="cl"></div>
                <div class="line"></div>
                <div class="label" id="tx13"></div>
                <div class="lab_r" id="cover_ap_status" style="color:#666666;font-weight:bold;"></div>
                <div class="cl"></div>
                <div class="line"></div>
                <div class="lab_l" id="ap_ssid">SSID</div>
                <div class="lab_r" id="cover_ap_ssid"></div>
                <div class="cl"></div>
                <div class="line_l"></div>
                <div class="lab_l" id="tx15"></div>
                <div class="lab_r" id="cover_ap_ip"></div>
                <div class="cl"></div>
                <div class="line_l"></div>
                <div class="lab_l" id="tx16"></div>
                <div class="lab_r" id="cover_ap_mac"></div>
                <div class="cl"></div>
                <div class="line_l"></div>
                <div class="label" id="tx17"></div>
                <div class="lab_r" id="cover_sta_status" style="color:#666666;font-weight:bold;"></div>
                <div class="cl"></div>
                <div class="line"></div>
                <div class="lab_l" id="tx18"></div>
                <div class="lab_r" id="cover_sta_ssid"></div>
                <div class="cl"></div>
                <div class="line_l"></div>
                <div class="lab_l" id="tx19"></div>
                <div class="lab_r" id="cover_sta_rssi"></div>
                <div class="cl"></div>
                <div class="line_l"></div>
                <div class="lab_l" id="tx20"></div>
                <div class="lab_r" id="cover_sta_ip"></div>
                <div class="cl"></div>
                <div class="line_l"></div>
                <div class="lab_l" id="tx21"></div>
                <div class="lab_r" id="cover_sta_mac"></div>
                <div class="cl"></div>
                <div class="line_l"></div>
                </div>

                <div class="sp_20"></div>
                <div class="lab_5 cu b" onclick="upfold(3);child_getH();"><span class="sub" id="p_3">+</span><span id="st3" style="margin-left:3px"></span></div>
                <div class="sp_5"></div>
                <div id="up_3_div" style="display:none">
                <div class="label" id="tx25"></div>
                <div class="lab_r" id="cover_remote_status_a"></div>
                <div class="cl"></div>
                <div class="line"></div>
                <div class="label" id="tx26"></div>
                <div class="lab_r" id="cover_remote_status_b"></div>
                <div class="cl"></div>
                <div class="line"></div>
                </div>
    </div>
        <script type="text/javascript">
            initPageText();
            ready();
        </script>
</body>
</html>

I hope I caught all sensitive data ;-)
I'm open for a one-on-on, just needs to be with daylight, otherwise the inverter goes to sleep.

@klaasnicolaas
Copy link
Collaborator

Are you also active on Discord? You can find me there under the name: Mister Nicolaz#7558 then we can debug further.

@klaasnicolaas
Copy link
Collaborator

A pre-release is coming, should work with your inverter

@robbinjanssen
Copy link
Owner

robbinjanssen commented Feb 15, 2022

@HartmutHartmann please try with v2.3.0 :)

@HartmutHartmann
Copy link
Author

Thanks for the update.
I had it running a little bit before the inverter went to sleep, seems to work fine. Now everything shows 'unavailable', might be nice to keep the total production cached, just a thought.

Thanks again for the quick response and update to the integration.

@CFenner
Copy link
Contributor

CFenner commented Apr 7, 2022

I plan to use a Bosswerk Wechselrichter. Really nice to see that there is an integration to HA available 🎉

@TomTom3333
Copy link

@HartmutHartmann
found this and tried to connect to my MI300 (have two of them running)

for configuration (login) via Solarman App there is only a standard password - did you changed your login data to use the Omnik Integration? What was your success?

@HartmutHartmann
Copy link
Author

@TomTom3333
last I checked this integration used the local login to the device, you wouldn't even need to create a Solarman account.
When I first tried to use this Integration, there was some issue on how it handled the sessions, which was fixed shortly after. There was still an issue with "spotty" data readout (#100).
Another update later the integration failed to connect to the inverter entirely. Since then ive stopped using the integration and I'm currently using a node red flow that i've written (quick and dirty ;-)).
So I can't speak for the current state of this integation working with MI300/MI600, sorry.

@klaasnicolaas
Copy link
Collaborator

Since which update does it stop working? Because then we just have to make sure it works again 😁

@CFenner
Copy link
Contributor

CFenner commented Sep 29, 2022

Works with my MI300.

@TomTom3333
Copy link

@HartmutHartmann thanks for reply!
instead I did a bit research on web interface of the MI300/Mi600
username + password is admin

Integration shows the most recent data
is there a way to display kind of graphs ?

@HartmutHartmann
Copy link
Author

Just installed the newest version(2.4.2), connected just fine, the "spotty" data problem still seems to be there (will report back tomorrow, no more sun for today).

@TomTom3333
HA has integrated graphs you can use, additionally there are multiple in HACS

@HartmutHartmann
Copy link
Author

Update after 1 day:
same issue with the "spotty" data, seems better than in the past, might also be because my node red flow keeps polling the inverter as well.
20220930_omniksolar

@github-actions github-actions bot locked and limited conversation to collaborators Feb 14, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants