Grohe Sense (Ondus)

I have now a working solution plotting two example graphs. Now-7days, Now-30days.
The data is verified and are exactly the same as the APP show.

NodeRed Export:

[{"id":"09b7ca94d31ba1fa","type":"tab","label":"Testing","disabled":false,"info":"","env":[]},{"id":"149b6231ee1b3421","type":"grohe sense","z":"09b7ca94d31ba1fa","location":"8b9d43791e7b0de5","room":"kontor","appliance":"Vattenbrytare","devicetype":"103","description":"","x":650,"y":140,"wires":[["570382581d95c146","13bc492ad7cf700b"]]},{"id":"570382581d95c146","type":"debug","z":"09b7ca94d31ba1fa","name":"GroheOut","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":840,"y":200,"wires":[]},{"id":"4ba896c01279386c","type":"debug","z":"09b7ca94d31ba1fa","name":"Schedule","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":660,"y":200,"wires":[]},{"id":"33ce9c4e9d6a105d","type":"function","z":"09b7ca94d31ba1fa","name":"Schedule-7day","func":"let end = new Date();\nlet start = new Date();\nstart.setDate(end.getDate() - 7); // last 1 days.\n//start.setHours(end.getHours() -24);\nmsg.payload = {\n    data: {\n        from: start,\n        to: end\n    }\n};\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":460,"y":140,"wires":[["149b6231ee1b3421","4ba896c01279386c"]]},{"id":"f4043443ee43c7c5","type":"debug","z":"09b7ca94d31ba1fa","name":"GroheOutDebug","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1040,"y":200,"wires":[]},{"id":"13bc492ad7cf700b","type":"ha-sensor","z":"09b7ca94d31ba1fa","name":"Grohe2","entityConfig":"6ec582bb21d5a56c","version":0,"state":"payload","stateType":"str","attributes":[{"property":"hours","value":"payload.data.withdrawals","valueType":"msg"}],"inputOverride":"allow","outputProperties":[],"x":820,"y":140,"wires":[["f4043443ee43c7c5"]]},{"id":"9437401d0830b9f3","type":"ha-sensor","z":"09b7ca94d31ba1fa","name":"Grohe30day","entityConfig":"93d42bfd4bdd5d1d","version":0,"state":"payload","stateType":"str","attributes":[{"property":"Withdraws","value":"payload.data.withdrawals","valueType":"msg"}],"inputOverride":"allow","outputProperties":[],"x":830,"y":80,"wires":[[]]},{"id":"460121666a508ed6","type":"grohe sense","z":"09b7ca94d31ba1fa","location":"8b9d43791e7b0de5","room":"kontor","appliance":"Vattenbrytare","devicetype":"103","description":"","x":650,"y":80,"wires":[["9437401d0830b9f3"]]},{"id":"ff547b8d8c78c908","type":"function","z":"09b7ca94d31ba1fa","name":"Schedule -30day","func":"let end = new Date();\nlet start = new Date();\nstart.setDate(end.getDate() - 30); // last 1 days.\n//start.setHours(end.getHours() -24);\nmsg.payload = {\n    data: {\n        from: start,\n        to: end\n    }\n};\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":470,"y":80,"wires":[["460121666a508ed6"]]},{"id":"dc425a1077836ce5","type":"stoptimer","z":"09b7ca94d31ba1fa","duration":"10","units":"Second","payloadtype":"str","payloadval":"","name":"Delay 10sek","x":290,"y":80,"wires":[["ff547b8d8c78c908"],[]]},{"id":"bb5fe756d93b4430","type":"inject","z":"09b7ca94d31ba1fa","name":"Cron","props":[{"p":"payload"},{"p":"topic","v":"true","vt":"bool"}],"repeat":"","crontab":"01 00 * * *","once":false,"onceDelay":0.1,"topic":"","payload":"true","payloadType":"bool","x":130,"y":80,"wires":[["dc425a1077836ce5","a86dfc87558293a4"]]},{"id":"a86dfc87558293a4","type":"stoptimer","z":"09b7ca94d31ba1fa","duration":"10","units":"Second","payloadtype":"str","payloadval":"","name":"Delay 10sek","x":290,"y":140,"wires":[["33ce9c4e9d6a105d"],[]]},{"id":"8b9d43791e7b0de5","type":"grohe location","location":"102"},{"id":"6ec582bb21d5a56c","type":"ha-entity-config","server":"7db4f1a6.50be","deviceConfig":"","name":"Grohe2","version":"6","entityType":"sensor","haConfig":[{"property":"name","value":"Grohe2"},{"property":"icon","value":""},{"property":"entity_category","value":""},{"property":"device_class","value":""},{"property":"unit_of_measurement","value":""},{"property":"state_class","value":""}],"resend":false},{"id":"93d42bfd4bdd5d1d","type":"ha-entity-config","server":"7db4f1a6.50be","deviceConfig":"","name":"Grohe30day","version":"6","entityType":"sensor","haConfig":[{"property":"name","value":"Grohe30day"},{"property":"icon","value":""},{"property":"entity_category","value":""},{"property":"device_class","value":""},{"property":"unit_of_measurement","value":""},{"property":"state_class","value":""}],"resend":false},{"id":"7db4f1a6.50be","type":"server","name":"Home Assistant MV","version":5,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true,"heartbeat":true,"heartbeatInterval":"30","areaSelector":"friendlyName","deviceSelector":"friendlyName","entitySelector":"friendlyName","statusSeparator":"at: ","statusYear":"hidden","statusMonth":"short","statusDay":"numeric","statusHourCycle":"h23","statusTimeFormat":"h:m","enableGlobalContextStore":true}]

I use the ā€œapexcharts-cardā€ to display the data:

Code for the Custom APEX Card:

type: custom:apexcharts-card
header:
  show: true
  title: Water 7day
graph_span: 7d
span:
  start: day
  offset: '-7day'
apex_config:
  stroke:
    width: 2
  dataLabels:
    enabled: true
  legend:
    show: false
  yaxis:
    - id: powersaver
      show: true
      decimalsInFloat: 2
      floating: false
      extend_to: now
series:
  - entity: sensor.grohe2
    data_generator: |
      return entity.attributes.hours.map((entry) => {
        return [new Date(entry.starttime), entry.waterconsumption];
      });
    yaxis_id: powersaver
    name: ' '
    type: column
    color: rgb(55, 255, 99)
    opacity: 0.2
    stroke_width: 0
    curve: straight
    group_by:
      func: sum
      duration: 1d
    show:
      legend_value: false
      in_header: false
      name_in_header: false
      datalabels: false

Thanks a Lot

I almost have it, but when I inject the cron, everything seems to be ok, but in my home assistant, in the sensors information is "Payload"and not the corresponding data.

Im sure there is something wrong, but i donĀ“t know what.

1 Like

Look at what you get as output in the last debugnode. And change the timers to like 1, 5, 10s so they donā€™t try to fetch data at the same timeā€¦

It should be as payload, you will have all the data in a single array

Thanks,

Now I understand, the info is showed in the card.

But , one question, itĀ“s possible to extract data for waterconsumption, etc and put it in a new sensor?

Thanks

1 Like

I donā€™t know, yet :wink:
Seams tat the api deliver 24h minimum.
It should be possible to change values, meaning turning water off, I will play with it next week. Give me your findings if you get ahead of me

Thanks

I will

Thank you for a very nice instruction how to get it working!
I would like to explore getting more information out like pressure and temperature. If possible Iā€™d like to control the valve as well.

Where can I find information about what to put in the payload?

Cheers, Per

[{"id":"5f10db65ff8ea79a","type":"function","z":"92080c800ef5ad38","name":"Auf","func":"msg.payload = {\n    command: {\n        valve_open: true,\n    }\n};\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":290,"y":100,"wires":[["e870f6b5356925bc"]]},{"id":"45a10bad37223983","type":"function","z":"92080c800ef5ad38","name":"zu","func":"msg.payload = {\n    command: {\n        valve_open: false,\n    }\n};\nreturn msg;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":290,"y":60,"wires":[["e870f6b5356925bc"]]},{"id":"773c1eb83c551100","type":"inject","z":"92080c800ef5ad38","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":140,"y":60,"wires":[["45a10bad37223983"]]},{"id":"8ead5232db076ff4","type":"inject","z":"92080c800ef5ad38","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":140,"y":100,"wires":[["5f10db65ff8ea79a"]]}]

This two injection nodes and function nodes must be placed in front of the grohe node to control the valve (open/close). This works perfectly. You can now create a switch in HA and use it as injection node. The rest I didnā€™t figure out yet.

Thank you!

I figured out how to get the switch a couple of hours ago. One question thoughā€¦ is the timestamp more efficient than something like below?

image

Let me know if you know how to poll the pressure and temperature as well.

Cheers, Per

1 Like

Turns out the payload data variable contains measurement. By passing payload.data.measurement onto Home Assistant I was able to get both pressure, flow rate and temperature.

Thanks, another step. IĀ“m very stressed to change the token every day and with node red maybe we will have a consistent integration.

My question. if we have a sensor with all the information in payload, would it be possible to create a sensor with only the actual consumption, and then create a helper to input this information in the energy dashboard?.

Thatā€™s my objective, but I donĀ“t have technical knowledge to do it allow.

Thanks again

Sounds like a good objective. Iā€™m new to Node-RED, but Iā€™m sure what youā€™re asking for is possible. Iā€™ll give it a go, but let me know if you figure it out before I do. :slight_smile:

Nice work so far. I donā€™t have the time for now but I will steal your work if you solve it :wink:

Iā€™ve now some more data.

[{"id":"03917c9ce0720fba","type":"tab","label":"Grohe","disabled":false,"info":"","env":[]},{"id":"c11eac5d7301574d","type":"inject","z":"03917c9ce0720fba","name":"alle 10s","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"10","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":120,"y":400,"wires":[["9d3851983037b80c"]]},{"id":"9d3851983037b80c","type":"function","z":"03917c9ce0720fba","name":"milliseconds","func":"let now = Date.now();\nlet end = now;\nlet start = now - 24 * 60 * 60000;\n\nmsg.payload = {\n    data: {\n        from: start,\n        to: end\n    }\n}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":290,"y":400,"wires":[["d60310236c7d52e2"]]},{"id":"05281a22e393529f","type":"function","z":"03917c9ce0720fba","name":"open","func":"msg.payload = {\n    command: {\n        valve_open: true,\n    }\n};\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":290,"y":40,"wires":[["a1808c9267428cc1"]]},{"id":"221bdfe08f529877","type":"function","z":"03917c9ce0720fba","name":"close","func":"msg.payload = {\n    command: {\n        valve_open: false,\n    }\n};\nreturn msg;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":290,"y":80,"wires":[["a1808c9267428cc1"]]},{"id":"6c3a0b693802c209","type":"inject","z":"03917c9ce0720fba","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":140,"y":140,"wires":[["a1808c9267428cc1"]]},{"id":"625210fc35a5d266","type":"change","z":"03917c9ce0720fba","name":"Update available","rules":[{"t":"move","p":"payload.status.0.value","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":630,"y":40,"wires":[["7a5105c079162449"]]},{"id":"bc51b435706fbc6d","type":"change","z":"03917c9ce0720fba","name":"Connection","rules":[{"t":"move","p":"payload.status.2.value","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":610,"y":80,"wires":[["d73468442be3a0f8"]]},{"id":"d73468442be3a0f8","type":"change","z":"03917c9ce0720fba","name":"boolean","rules":[{"t":"change","p":"payload","pt":"msg","from":"0","fromt":"num","to":"false","tot":"bool"},{"t":"change","p":"payload","pt":"msg","from":"1","fromt":"num","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":780,"y":80,"wires":[[]]},{"id":"7a5105c079162449","type":"change","z":"03917c9ce0720fba","name":"boolean","rules":[{"t":"change","p":"payload","pt":"msg","from":"0","fromt":"num","to":"false","tot":"bool"},{"t":"change","p":"payload","pt":"msg","from":"1","fromt":"str","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":800,"y":40,"wires":[[]]},{"id":"a61bf02fe7ece2d2","type":"change","z":"03917c9ce0720fba","name":"measurement","rules":[{"t":"move","p":"payload.data.measurement","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":240,"y":360,"wires":[["5a41fda17d23af70"]]},{"id":"5a41fda17d23af70","type":"function","z":"03917c9ce0720fba","name":"last value","func":"msg.payload = msg.payload[msg.payload.length - 1]\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":420,"y":360,"wires":[["fda1b6e170c473a9","ab633e98aa19277f","56fce24dc31c6323"]]},{"id":"fda1b6e170c473a9","type":"change","z":"03917c9ce0720fba","name":"flowrate","rules":[{"t":"move","p":"payload.flowrate","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":580,"y":300,"wires":[["0e7cdf6d96ee9fc0"]]},{"id":"ab633e98aa19277f","type":"change","z":"03917c9ce0720fba","name":"pressure","rules":[{"t":"move","p":"payload.pressure","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":580,"y":340,"wires":[["a0a0ec0a4d0cbbf5"]]},{"id":"56fce24dc31c6323","type":"change","z":"03917c9ce0720fba","name":"temperature","rules":[{"t":"move","p":"payload.temperature_guard","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":590,"y":380,"wires":[["7eeb7cac2b0f2303"]]},{"id":"c668e763b4e052cb","type":"change","z":"03917c9ce0720fba","name":"withdrawals","rules":[{"t":"move","p":"payload.data.withdrawals","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":230,"y":460,"wires":[["2a9a2d6b3aa3f142"]]},{"id":"2a9a2d6b3aa3f142","type":"function","z":"03917c9ce0720fba","name":"last before value","func":"msg.payload = msg.payload[msg.payload.length - 2]\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":400,"y":460,"wires":[["dcb76834c8ed9b16","f332d14ef1edbadc","d24aad2a9bef7f1b","0084474a3b64e6dd","d53d06ef682238f1"]]},{"id":"dcb76834c8ed9b16","type":"change","z":"03917c9ce0720fba","name":"waterconsumption","rules":[{"t":"move","p":"payload.waterconsumption","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":610,"y":420,"wires":[["645d53d614ea8a3e"]]},{"id":"f332d14ef1edbadc","type":"change","z":"03917c9ce0720fba","name":"maxflowrate","rules":[{"t":"move","p":"payload.maxflowrate","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":590,"y":460,"wires":[[]]},{"id":"d24aad2a9bef7f1b","type":"change","z":"03917c9ce0720fba","name":"hotwater_share","rules":[{"t":"move","p":"payload.hotwater_share","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":600,"y":500,"wires":[[]]},{"id":"0084474a3b64e6dd","type":"change","z":"03917c9ce0720fba","name":"water_cost","rules":[{"t":"move","p":"payload.water_cost","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":590,"y":540,"wires":[["329ed1a38d8c73b2"]]},{"id":"d53d06ef682238f1","type":"change","z":"03917c9ce0720fba","name":"energy_cost","rules":[{"t":"move","p":"payload.energy_cost","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":590,"y":580,"wires":[["9b8c2ccca4e5de0e"]]},{"id":"46af5f9d0cfcb6d0","type":"comment","z":"03917c9ce0720fba","name":"measurements and withdrawls","info":"","x":330,"y":320,"wires":[]},{"id":"5b2ad9ed23c5fe42","type":"change","z":"03917c9ce0720fba","name":"notifications","rules":[{"t":"move","p":"payload.notifications","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":610,"y":120,"wires":[[]]},{"id":"99bed097babf43f0","type":"change","z":"03917c9ce0720fba","name":"valve_open","rules":[{"t":"move","p":"payload.command.valve_open","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":610,"y":160,"wires":[[]]},{"id":"e40450f929f086fb","type":"change","z":"03917c9ce0720fba","name":"pressure_measurement_running","rules":[{"t":"move","p":"payload.command.pressure_measurement_running","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":670,"y":200,"wires":[[]]},{"id":"a506694efe57e9cb","type":"comment","z":"03917c9ce0720fba","name":"Valve control and status","info":"","x":120,"y":20,"wires":[]},{"id":"b351a1b82d35c6b2","type":"ha-switch","z":"03917c9ce0720fba","name":"Grohe Guard","version":0,"debugenabled":false,"inputs":0,"outputs":2,"entityConfig":"a3c28141e50710db","enableInput":false,"outputOnStateChange":false,"outputProperties":[{"property":"outputType","propertyType":"msg","value":"state change","valueType":"str"},{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"}],"x":130,"y":60,"wires":[["05281a22e393529f"],["221bdfe08f529877"]]},{"id":"0e7cdf6d96ee9fc0","type":"ha-sensor","z":"03917c9ce0720fba","name":"Guard Flowrate","entityConfig":"570639cff4905e41","version":0,"state":"payload","stateType":"msg","attributes":[],"inputOverride":"allow","outputProperties":[],"x":820,"y":300,"wires":[[]]},{"id":"a0a0ec0a4d0cbbf5","type":"ha-sensor","z":"03917c9ce0720fba","name":"Guard Wasserdruck","entityConfig":"7da21c527354ebb3","version":0,"state":"payload","stateType":"msg","attributes":[],"inputOverride":"allow","outputProperties":[],"x":840,"y":340,"wires":[[]]},{"id":"7eeb7cac2b0f2303","type":"ha-sensor","z":"03917c9ce0720fba","name":"Guard Temperatur","entityConfig":"7d6ac600db24db1e","version":0,"state":"payload","stateType":"msg","attributes":[],"inputOverride":"allow","outputProperties":[],"x":830,"y":380,"wires":[[]]},{"id":"645d53d614ea8a3e","type":"ha-sensor","z":"03917c9ce0720fba","name":"Guard Wasserverbrauch","entityConfig":"222efea13f18d3b3","version":0,"state":"payload","stateType":"msg","attributes":[],"inputOverride":"allow","outputProperties":[],"x":850,"y":420,"wires":[[]]},{"id":"329ed1a38d8c73b2","type":"ha-sensor","z":"03917c9ce0720fba","name":"Guard Wasserkosten","entityConfig":"7997864e83fc500f","version":0,"state":"payload","stateType":"msg","attributes":[],"inputOverride":"allow","outputProperties":[],"x":840,"y":540,"wires":[[]]},{"id":"9b8c2ccca4e5de0e","type":"ha-sensor","z":"03917c9ce0720fba","name":"Guard Energiekosten","entityConfig":"0def2f61fb79c3c4","version":0,"state":"payload","stateType":"msg","attributes":[],"inputOverride":"allow","outputProperties":[],"x":840,"y":600,"wires":[[]]},{"id":"c38912f08c2e3e7e","type":"function","z":"03917c9ce0720fba","name":"milliseconds","func":"let now = Date.now();\nlet end = now;\nlet start = now - 24 * 60 * 60000;\n\nmsg.payload = {\n    data: {\n        from: start,\n        to: end\n    }\n}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":290,"y":180,"wires":[["a1808c9267428cc1"]]},{"id":"fd836c311ee5e940","type":"debug","z":"03917c9ce0720fba","name":"debug 2","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":600,"y":240,"wires":[]},{"id":"4f4f0de26718a48b","type":"inject","z":"03917c9ce0720fba","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":140,"y":200,"wires":[["c38912f08c2e3e7e"]]},{"id":"a1808c9267428cc1","type":"grohe sense","z":"03917c9ce0720fba","location":"","room":"","appliance":"","devicetype":"101","description":"","x":430,"y":120,"wires":[["625210fc35a5d266","bc51b435706fbc6d","5b2ad9ed23c5fe42","99bed097babf43f0","e40450f929f086fb","fd836c311ee5e940"]]},{"id":"d60310236c7d52e2","type":"grohe sense","z":"03917c9ce0720fba","location":"","room":"","appliance":"","devicetype":"101","description":"","x":450,"y":400,"wires":[["a61bf02fe7ece2d2","c668e763b4e052cb"]]},{"id":"a3c28141e50710db","type":"ha-entity-config","server":"9e7a0b7f64cd2bfd","deviceConfig":"f06d155cfd8577bf","name":"Grohe Guard","version":"6","entityType":"switch","haConfig":[{"property":"name","value":"Grohe Guard"},{"property":"icon","value":""},{"property":"entity_category","value":""},{"property":"device_class","value":"switch"}],"resend":false,"debugEnabled":true},{"id":"570639cff4905e41","type":"ha-entity-config","server":"9e7a0b7f64cd2bfd","deviceConfig":"f06d155cfd8577bf","name":"Guard Flowrate","version":"6","entityType":"sensor","haConfig":[{"property":"name","value":"Guard Flowrate"},{"property":"icon","value":""},{"property":"entity_category","value":""},{"property":"device_class","value":"water"},{"property":"unit_of_measurement","value":"L"},{"property":"state_class","value":"measurement"}],"resend":false,"debugEnabled":false},{"id":"7da21c527354ebb3","type":"ha-entity-config","server":"9e7a0b7f64cd2bfd","deviceConfig":"f06d155cfd8577bf","name":"Guard Wasserdruck","version":"6","entityType":"sensor","haConfig":[{"property":"name","value":"Guard Wasserdruck"},{"property":"icon","value":""},{"property":"entity_category","value":""},{"property":"device_class","value":"pressure"},{"property":"unit_of_measurement","value":"bar"},{"property":"state_class","value":"measurement"}],"resend":false,"debugEnabled":false},{"id":"7d6ac600db24db1e","type":"ha-entity-config","server":"9e7a0b7f64cd2bfd","deviceConfig":"f06d155cfd8577bf","name":"Guard Temperatur","version":"6","entityType":"sensor","haConfig":[{"property":"name","value":"Guard Temperatur"},{"property":"icon","value":""},{"property":"entity_category","value":""},{"property":"device_class","value":"temperature"},{"property":"unit_of_measurement","value":"Ā°C"},{"property":"state_class","value":"measurement"}],"resend":false,"debugEnabled":false},{"id":"222efea13f18d3b3","type":"ha-entity-config","server":"9e7a0b7f64cd2bfd","deviceConfig":"f06d155cfd8577bf","name":"Guard Wasserverbrauch","version":"6","entityType":"sensor","haConfig":[{"property":"name","value":"Guard Wasserverbrauch"},{"property":"icon","value":""},{"property":"entity_category","value":""},{"property":"device_class","value":"water"},{"property":"unit_of_measurement","value":"L"},{"property":"state_class","value":"measurement"}],"resend":false,"debugEnabled":false},{"id":"7997864e83fc500f","type":"ha-entity-config","server":"9e7a0b7f64cd2bfd","deviceConfig":"f06d155cfd8577bf","name":"Guard Wasserkosten","version":"6","entityType":"sensor","haConfig":[{"property":"name","value":"Guard Wasserkosten"},{"property":"icon","value":""},{"property":"entity_category","value":""},{"property":"device_class","value":"monetary"},{"property":"unit_of_measurement","value":"EUR"},{"property":"state_class","value":"measurement"}],"resend":false,"debugEnabled":false},{"id":"0def2f61fb79c3c4","type":"ha-entity-config","server":"9e7a0b7f64cd2bfd","deviceConfig":"f06d155cfd8577bf","name":"Guard Energiekosten","version":"6","entityType":"sensor","haConfig":[{"property":"name","value":"Guard Energiekosten"},{"property":"icon","value":""},{"property":"entity_category","value":""},{"property":"device_class","value":"monetary"},{"property":"unit_of_measurement","value":"EUR"},{"property":"state_class","value":"measurement"}],"resend":false,"debugEnabled":false},{"id":"9e7a0b7f64cd2bfd","type":"server","name":"Home Assistant","version":5,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true,"heartbeat":false,"heartbeatInterval":"30","areaSelector":"friendlyName","deviceSelector":"friendlyName","entitySelector":"friendlyName","statusSeparator":": ","statusYear":"hidden","statusMonth":"short","statusDay":"numeric","statusHourCycle":"default","statusTimeFormat":"h:m","enableGlobalContextStore":false},{"id":"f06d155cfd8577bf","type":"ha-device-config","name":"Grohe Guard","hwVersion":"","manufacturer":"Node-RED","model":"","swVersion":""}]

I donā€™t know how to get the daily values yet.

Amazing, thanks a lot.

One question, sensor of water consumption is showing the actual consumption, correct?

Or what is the meaning of this information on your case 2.4 L

I see that data is from last day, but not he present day. Am I right?

Thanks again

Yes thatā€™s my problem too. Perhaps I have to configure another sensor with increasing values.

This problem Iā€˜ve not solved yet. It seems that the function only gets old values. Sometimes of the current day, but with older timestamps. Iā€˜m a veterinarian and not familiar with coding. This is just my hobby. Pherhaps weā€˜ll find a solution. :grin:

Iā€™ve opened an issue on GitHub, to get answers. How can I get actual data of measurements and withdrawals? Ā· Issue #10 Ā· windkh/node-red-contrib-grohe-sense Ā· GitHub

and here is the answer:
The sense device sends historical data from time to time into the cloud. The data you get from the node is the data already stored in the cloud. Grohe does not allow to talk to the sense device directly from within the local lan. Every communication is done via a cloud server. Sorry ā€¦

Another problem I figured out, is that under status the payload is not every time in the same object. I donā€™t know how to improve it.

DonĀ“t worry, You have donĀ“t a lot, and your improvements are so great.

If Grohe donĀ“t want to open his solution to third parties, I think itĀ“s a wrong decision

Thanks again

I have been trying to use the aforementioned non-intrusive ways to integrate the Grohe sense into the hass, but there seems to be a lot of problems related to the Groheā€™s approach of authentication as well as connectivity issues my device is having. For some reason my device disconnects from the Wi-Fi every once in a while without me noticing. Which then requires me to remove and add the device back. It is frustrating and I am sort of fed up with this device.

Soā€¦ I opened it to see what is inside. Voila! There is a ESP8266 controlling the device. Although I am not sure where to start from, maybe with the support of the community, we can use tasmota or custom firmware to make this device locally controlled; bypassing Groheā€™s API entirely. Below are the pictures of the main board and the components in it. It seems like a fairly simple setup. Although I have no previous experience with embedded systems like this if anyone is willing to help or guide me, I am more than happy to experiment on the device.

Some more pictures

Also a bit more details:

Both 4-pin cables go to the sensors. I am not sure which one is which, but the device measures pressure and flow rate. The pins marked MV go to the valve to turn the water on and off. Based on the text, the valve works with 12V. The device also measures the temperature, but thatā€™s either ambient temperature or the temperature of the mobo/esp8266.