{"id":198,"date":"2017-10-09T21:16:20","date_gmt":"2017-10-09T19:16:20","guid":{"rendered":"http:\/\/techblog.vindvejr.dk\/?p=198"},"modified":"2017-12-11T16:24:27","modified_gmt":"2017-12-11T15:24:27","slug":"miele-xgw-3000-firmware-2-07-and-new-dishwasher-with-wi-fi","status":"publish","type":"post","link":"https:\/\/techblog.vindvejr.dk\/?p=198","title":{"rendered":"Miele XGW 3000 firmware 2.09 and new dishwasher with Wi-Fi"},"content":{"rendered":"<p>I got a new dishwasher (G 6895) with Wi-Fi integrated and at the same time received a new firmware update the my XGW 3000 gateway. So I now have three ZigBee appliances (XKM 3000 Z) and one Wi-Fi applicance (EK039W). I was curious to see how this integration with the existing system would work.<\/p>\n<p><strong>Homebus 1.0<\/strong><br \/>\nIntegrated nicely &#8211; the devices shows up with id=hdm%3ALAN%3A<strong>UID<\/strong>%230 instead of id=hdm%3AZigBee%3A<strong>ZigBee address<\/strong>%23210. However, when programmed, the gateway will return HTTP code 500, i.e. internal server error:<\/p>\n<pre>\r\n500 No message\r\n<\/pre>\n<p><strong>Homebus 2.0 (Rest API)<\/strong><br \/>\nThe device is not included in http:\/\/<strong>GATEWAY<\/strong>\/Rest\/Devices\/. However, when accessing http:\/\/<strong>GATEWAY<\/strong>\/Rest\/Devices\/<strong>UID<\/strong>\/ directly, JSON is returned with relevant ident\/state information. Including water\/power consumption in ExtendedState:<\/p>\n<pre>\r\n000702040F0000000000000080000000020026030001041B\r\n                              ^^^^^^^^ 0.2 kWh\/3.8 L (0x26\/10)\r\n<\/pre>\n<p>I have not figured out how to interact directly with the dishwasher, and would also prefer not to, since this would complicate matters. However, it&#8217;s a shame that the Rest implementation is partly broken. For now I&#8217;ve hardcoded the new UID in the app I&#8217;m working on (as well as my water\/power monitoring system running on my Linux server), but I&#8217;ll probably end up having to combine the two protocols in order to do what I need. I&#8217;ll probably do this anyway, since I also haven&#8217;t figured out how to perform actions using the Rest protocol.<\/p>\n<p>Another thing that is broken when accessing the gateway through the Rest protocol is the ElapsedTime value, which is always:<\/p>\n<pre>\r\n\"ElapsedTime\":[0,0]\r\n<\/pre>\n<p>Actually, I think the value is dependent on the current value when booting the gateway. At one point it was always [1,14] until the next reboot, and this was quite possibly the first value it saw when first booting up.<\/p>\n<p>So the value cannot be used at all, e.g. for creating a progress bar. Too bad, since this is one of the advantages of using the Rest protocol over the old XML protocol.<\/p>\n<p><strong>Protocol values<\/strong><\/p>\n<p>Values found so far:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\n\tstatic final int PHASE_PRE_WASH    =  2;\r\n\tstatic final int PHASE_MAIN_WASH   =  3;\r\n\tstatic final int PHASE_RINSES      =  4;\r\n\tstatic final int PHASE_FINAL_RINSE =  6;\r\n\tstatic final int PHASE_DRYING      =  7;\r\n\r\n\tstatic final int PROGRAM_ECONOMIC         = 28;\r\n\tstatic final int PROGRAM_QUICK_POWER_WASH = 38;\r\n<\/pre>\n<p>Mapping to Homebus 2.0 phases:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\n@Override\r\nboolean setProgramPhase(int programPhase) {\r\n\tsuper.setProgramPhase(programPhase);\r\n\r\n\tswitch (programPhase) {\r\n\t\tcase 1792:\r\n\t\t\t\/\/ Purpose unknown, observed when programmed (without phase) and off.\r\n\t\t\treturn setPhase(PHASE_UNKNOWN);\r\n\t\tcase 1794:\r\n\t\t\treturn setPhase(PHASE_PRE_WASH);\r\n\t\tcase 1795:\r\n\t\t\treturn setPhase(PHASE_MAIN_WASH);\r\n\t\tcase 1796:\r\n\t\t\treturn setPhase(PHASE_RINSES);\r\n\t\tcase 1798:\r\n\t\t\treturn setPhase(PHASE_FINAL_RINSE);\r\n\t\tcase 1799:\r\n\t\t\treturn setPhase(PHASE_DRYING);\r\n\t\tdefault:\r\n\t\t\tsetPhase(PHASE_UNKNOWN);\r\n\t\t\treturn false;\r\n\t}\r\n}\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>I got a new dishwasher (G 6895) with Wi-Fi integrated and at the same time received a new firmware update the my XGW 3000 gateway. So I now have three ZigBee appliances (XKM 3000 Z) and one Wi-Fi applicance (EK039W). &hellip; <a href=\"https:\/\/techblog.vindvejr.dk\/?p=198\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10,9],"tags":[],"class_list":["post-198","post","type-post","status-publish","format-standard","hentry","category-iot","category-mielehome"],"_links":{"self":[{"href":"https:\/\/techblog.vindvejr.dk\/index.php?rest_route=\/wp\/v2\/posts\/198","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/techblog.vindvejr.dk\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/techblog.vindvejr.dk\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/techblog.vindvejr.dk\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/techblog.vindvejr.dk\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=198"}],"version-history":[{"count":14,"href":"https:\/\/techblog.vindvejr.dk\/index.php?rest_route=\/wp\/v2\/posts\/198\/revisions"}],"predecessor-version":[{"id":241,"href":"https:\/\/techblog.vindvejr.dk\/index.php?rest_route=\/wp\/v2\/posts\/198\/revisions\/241"}],"wp:attachment":[{"href":"https:\/\/techblog.vindvejr.dk\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=198"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/techblog.vindvejr.dk\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=198"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/techblog.vindvejr.dk\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=198"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}