Open SezSab opened 1 year ago
I didn't use the temperature set features (yet), therefore no tests of this feature where performed by me.
What did you send to the endpoint? It seems that dumping the packet only shows the data as [Object], which feels somehow wrong.
I use e.g. fumis/MAC/controller/power/setPower:set with integers ranging from 1 to 5 for setting the power level. Do not package up the values in any json struct when publishing them.
I am attaching you the parameters should be set. As you can see I have actual which is the temperature of the water at the moment and the one that is set. When using fumis API before I was sending this:
{ "apiVersion": "1.3", "unit": { "id": "MAC", "pin": "PIN", "type": 0, "version": "2.4.0" }, "controller": { "temperatures": [ { "set": 75, "id": 6 } ], "type": 0 } }
I am sending only number as raw format when trying to set, but as you can see only this Object is appearing in the log.
Ok, maybe I know where the problem lies.
BTW: Do you know what these temperatures mean? I have not used the economy mode but it is the next step. Maybe you could help me understand how to get the stove into start/stop mode.
actual = 38 is the celsius degree temperature which is now at the strove. set = 55 is the target temperature in celsius degree that the strove should archieve when its working.
id = 6 is very important as sometimes before when we used the fumis api the number 5 coloumn is sometimes changed when we restarted the device but this id=6 is always 6
ok, but what are id 1..4?
Have you, by chance, a snapshot of what is sent from the fumis API when changing these temperatures?
So different IDs are used for different boiler models. Some are using water temperature as a target temperature, some boilers use inside room temperature as a target. So mine is using water and that is ID 6. You can know which one is used as per the onMainScreen = true value. All other IDs have this value false, and only one value can be true.
When you change something (temperature, variable ...) via fumis API, it always returns the whole set of data from the stove. You can change many things like parameters, set temperature, and set hysteresis ... But fumis API server is a sad example of how not to do this, so I very much appreciate your work. It's exactly what I needed. I just changed the code so it accepts and returns JSON since I used to communicate with fumis API that way before. And there is another thing: when the connection is open WiRCU sends a whole set of data from the stove, so I changed the code to reconnect every hour to get all parameters and variables. WiRCU sends only some data every minute and (immediately) on the change of status.
Example of API answer:
{
"apiVersion": "1.3",
"unit": {
"id": "0016XXXXXXXX",
"type": 0,
"version": "2.3.0",
"command": null,
"rssi": "-61",
"ip": "X.X.X.X",
"timezone": null,
"temperature": 36.7
},
"controller": {
"type": 0,
"version": "1.7.0",
"command": 2,
"status": 40,
"heatingSlope": -767.4,
"stoveLastAvailability": 1671930480,
"mobileLastAvailability": 1671930368,
"currentTime": 1671930521,
"error": 0,
"alert": 0,
"timerEnable": false,
"fuelType": 1,
"timeToService": 5621,
"delayedStartAt": -1,
"delayedStopAt": -1,
"power": {
"setType": 1,
"actualType": 1,
"kw": 0,
"actualPower": 3,
"setPower": 5
},
"antifreeze": {
"temperature": null,
"enable": false
},
"statistic": {
"igniterStarts": 872,
"uptime": 126480,
"heatingTime": 1798380,
"serviceTime": 1798380,
"overheatings": 0,
"misfires": 0,
"fuelQuantityUsed": 0
},
"diagnostic": {
"parameters": [
{
"id": 0,
"value": 26
},
{
"id": 1,
"value": 5
},
{
"id": 2,
"value": 0
},
{
"id": 3,
"value": 100
},
{
"id": 4,
"value": 33
},
{
"id": 5,
"value": 130
},
{
"id": 6,
"value": 20
},
{
"id": 7,
"value": 100
},
{
"id": 8,
"value": 10
},
{
"id": 9,
"value": 80
},
{
"id": 10,
"value": 20
},
{
"id": 11,
"value": 75
},
{
"id": 12,
"value": 25
},
{
"id": 13,
"value": 68
},
{
"id": 14,
"value": 32
},
{
"id": 15,
"value": 63
},
{
"id": 16,
"value": 37
},
{
"id": 17,
"value": 60
},
{
"id": 18,
"value": 40
},
{
"id": 19,
"value": 130
},
{
"id": 20,
"value": 100
},
{
"id": 21,
"value": 63
},
{
"id": 22,
"value": 92
},
{
"id": 23,
"value": 110
},
{
"id": 24,
"value": 91
},
{
"id": 25,
"value": 95
},
{
"id": 26,
"value": 103
},
{
"id": 27,
"value": 106
},
{
"id": 28,
"value": 109
},
{
"id": 29,
"value": 255
},
{
"id": 30,
"value": 255
},
{
"id": 31,
"value": 255
},
{
"id": 32,
"value": 255
},
{
"id": 33,
"value": 255
},
{
"id": 34,
"value": 255
},
{
"id": 35,
"value": 255
},
{
"id": 36,
"value": 0
},
{
"id": 37,
"value": 0
},
{
"id": 38,
"value": 0
},
{
"id": 39,
"value": 0
},
{
"id": 40,
"value": 0
},
{
"id": 41,
"value": 0
},
{
"id": 42,
"value": 0
},
{
"id": 43,
"value": 0
},
{
"id": 44,
"value": 0
},
{
"id": 45,
"value": 0
},
{
"id": 46,
"value": 0
},
{
"id": 47,
"value": 0
},
{
"id": 48,
"value": 0
},
{
"id": 49,
"value": 0
},
{
"id": 50,
"value": 6
},
{
"id": 51,
"value": 70
},
{
"id": 52,
"value": 0
},
{
"id": 53,
"value": 12
},
{
"id": 54,
"value": 68
},
{
"id": 55,
"value": 100
},
{
"id": 56,
"value": 78
},
{
"id": 57,
"value": 110
},
{
"id": 58,
"value": 0
},
{
"id": 59,
"value": 55
},
{
"id": 60,
"value": 30
},
{
"id": 61,
"value": 30
},
{
"id": 62,
"value": 140
},
{
"id": 63,
"value": 15
},
{
"id": 64,
"value": 119
},
{
"id": 65,
"value": 0
},
{
"id": 66,
"value": 0
},
{
"id": 67,
"value": 61
},
{
"id": 68,
"value": 55
},
{
"id": 69,
"value": 0
},
{
"id": 70,
"value": 160
},
{
"id": 71,
"value": 6
},
{
"id": 72,
"value": 1
},
{
"id": 73,
"value": 100
},
{
"id": 74,
"value": 100
},
{
"id": 75,
"value": 100
},
{
"id": 76,
"value": 13
},
{
"id": 77,
"value": 0
},
{
"id": 78,
"value": 0
},
{
"id": 79,
"value": 0
},
{
"id": 80,
"value": 0
},
{
"id": 81,
"value": 0
},
{
"id": 82,
"value": 0
},
{
"id": 83,
"value": 0
},
{
"id": 84,
"value": 70
},
{
"id": 85,
"value": 2
},
{
"id": 86,
"value": 5
},
{
"id": 87,
"value": 0
},
{
"id": 88,
"value": 0
},
{
"id": 89,
"value": 0
},
{
"id": 90,
"value": 0
},
{
"id": 91,
"value": 0
},
{
"id": 92,
"value": 1
},
{
"id": 93,
"value": 1
},
{
"id": 94,
"value": 255
},
{
"id": 95,
"value": 0
},
{
"id": 96,
"value": 0
},
{
"id": 97,
"value": 0
},
{
"id": 98,
"value": 0
},
{
"id": 99,
"value": 0
},
{
"id": 100,
"value": 0
},
{
"id": 101,
"value": 35
},
{
"id": 102,
"value": 0
},
{
"id": 103,
"value": 0
},
{
"id": 104,
"value": 0
},
{
"id": 105,
"value": 0
}
],
"variables": [
{
"id": 0,
"value": 10
},
{
"id": 1,
"value": 32
},
{
"id": 2,
"value": 513
},
{
"id": 3,
"value": 0
},
{
"id": 4,
"value": 0
},
{
"id": 5,
"value": 3
},
{
"id": 6,
"value": 0
},
{
"id": 7,
"value": 3
},
{
"id": 8,
"value": 87
},
{
"id": 9,
"value": 0
},
{
"id": 10,
"value": 0
},
{
"id": 11,
"value": 59
},
{
"id": 12,
"value": 0
},
{
"id": 13,
"value": 872
},
{
"id": 14,
"value": 8
},
{
"id": 15,
"value": 2116
},
{
"id": 16,
"value": 33
},
{
"id": 17,
"value": 499
},
{
"id": 18,
"value": 33
},
{
"id": 19,
"value": 499
},
{
"id": 20,
"value": 0
},
{
"id": 21,
"value": 0
},
{
"id": 22,
"value": 0
},
{
"id": 23,
"value": 25
},
{
"id": 24,
"value": 6
},
{
"id": 25,
"value": 11
},
{
"id": 26,
"value": 5
},
{
"id": 27,
"value": 29
},
{
"id": 28,
"value": 3
},
{
"id": 29,
"value": 0
},
{
"id": 30,
"value": 1
},
{
"id": 31,
"value": 1
},
{
"id": 32,
"value": 0
},
{
"id": 33,
"value": 0
},
{
"id": 34,
"value": 0
},
{
"id": 35,
"value": 0
},
{
"id": 36,
"value": 0
},
{
"id": 37,
"value": 253
},
{
"id": 38,
"value": 20000103
},
{
"id": 39,
"value": 1407
},
{
"id": 40,
"value": 1
},
{
"id": 41,
"value": 253
},
{
"id": 42,
"value": 20000101
},
{
"id": 43,
"value": 1443
},
{
"id": 44,
"value": 2
},
{
"id": 45,
"value": 253
},
{
"id": 46,
"value": 20000119
},
{
"id": 47,
"value": 1747
},
{
"id": 48,
"value": 3
},
{
"id": 49,
"value": 253
},
{
"id": 50,
"value": 20000101
},
{
"id": 51,
"value": 846
},
{
"id": 52,
"value": 4
},
{
"id": 53,
"value": 253
},
{
"id": 54,
"value": 20000101
},
{
"id": 55,
"value": 2251
},
{
"id": 56,
"value": 5
},
{
"id": 57,
"value": 253
},
{
"id": 58,
"value": 20000101
},
{
"id": 59,
"value": 536
},
{
"id": 60,
"value": 6
},
{
"id": 61,
"value": 253
},
{
"id": 62,
"value": 20000101
},
{
"id": 63,
"value": 223
},
{
"id": 64,
"value": 7
},
{
"id": 65,
"value": 253
},
{
"id": 66,
"value": 20000105
},
{
"id": 67,
"value": 2347
},
{
"id": 68,
"value": 8
},
{
"id": 69,
"value": 253
},
{
"id": 70,
"value": 20000101
},
{
"id": 71,
"value": 258
},
{
"id": 72,
"value": 9
},
{
"id": 73,
"value": 253
},
{
"id": 74,
"value": 20000111
},
{
"id": 75,
"value": 2057
},
{
"id": 76,
"value": 10
},
{
"id": 77,
"value": 253
},
{
"id": 78,
"value": 20000226
},
{
"id": 79,
"value": 10
},
{
"id": 80,
"value": 11
},
{
"id": 81,
"value": 253
},
{
"id": 82,
"value": 20000101
},
{
"id": 83,
"value": 1224
},
{
"id": 84,
"value": 12
},
{
"id": 85,
"value": 249
},
{
"id": 86,
"value": 20000103
},
{
"id": 87,
"value": 1345
},
{
"id": 88,
"value": 13
},
{
"id": 89,
"value": 250
},
{
"id": 90,
"value": 20000103
},
{
"id": 91,
"value": 1345
},
{
"id": 92,
"value": 14
},
{
"id": 93,
"value": 249
},
{
"id": 94,
"value": 20000101
},
{
"id": 95,
"value": 0
},
{
"id": 96,
"value": 0
},
{
"id": 97,
"value": 0
},
{
"id": 98,
"value": 0
},
{
"id": 99,
"value": 0
}
],
"timers": [
{
"id": 0,
"value": 21
},
{
"id": 1,
"value": 0
},
{
"id": 2,
"value": 6
},
{
"id": 3,
"value": 0
},
{
"id": 4,
"value": 6
},
{
"id": 5,
"value": 15
},
{
"id": 6,
"value": 8
},
{
"id": 7,
"value": 15
},
{
"id": 8,
"value": 11
},
{
"id": 9,
"value": 30
},
{
"id": 10,
"value": 14
},
{
"id": 11,
"value": 0
},
{
"id": 12,
"value": 12
},
{
"id": 13,
"value": 0
},
{
"id": 14,
"value": 14
},
{
"id": 15,
"value": 30
},
{
"id": 16,
"value": 0
},
{
"id": 17,
"value": 0
},
{
"id": 18,
"value": 1
},
{
"id": 19,
"value": 0
},
{
"id": 20,
"value": 1
},
{
"id": 21,
"value": 0
},
{
"id": 22,
"value": 1
},
{
"id": 23,
"value": 0
},
{
"id": 24,
"value": 1
},
{
"id": 25,
"value": 0
},
{
"id": 26,
"value": 1
},
{
"id": 27,
"value": 0
},
{
"id": 28,
"value": 0
},
{
"id": 29,
"value": 0
},
{
"id": 30,
"value": 16
},
{
"id": 31,
"value": 0
},
{
"id": 32,
"value": 21
},
{
"id": 33,
"value": 0
},
{
"id": 34,
"value": 17
},
{
"id": 35,
"value": 30
},
{
"id": 36,
"value": 22
},
{
"id": 37,
"value": 30
},
{
"id": 38,
"value": 0
},
{
"id": 39,
"value": 0
},
{
"id": 40,
"value": 0
},
{
"id": 41,
"value": 0
},
{
"id": 42,
"value": 0
},
{
"id": 43,
"value": 0
},
{
"id": 44,
"value": 0
},
{
"id": 45,
"value": 680
},
{
"id": 46,
"value": 700
},
{
"id": 47,
"value": 700
},
{
"id": 48,
"value": 700
},
{
"id": 49,
"value": 700
},
{
"id": 50,
"value": 700
}
]
},
"ecoMode": {
"ecoModeSetType": 0,
"ecoModeEnable": 0
},
"hybrid": {
"actualType": 0,
"operation": 0,
"state": 0
},
"fans": [
{
"weight": 0,
"speedType": 0,
"speed": 0,
"id": 1
}
],
"fuels": [
{
"name": null,
"quality": 1,
"qualityType": 0,
"qualityActual": null,
"quantitySetType": 2,
"quantityActualType": 2,
"quantity": null,
"quantityDisplay": 0,
"id": 1
}
],
"temperatures": [
{
"name": null,
"weight": 3,
"setType": 10,
"actualType": 10,
"onMainScreen": true,
"actual": 87,
"set": 70,
"id": 6
},
{
"name": null,
"weight": 0,
"setType": 0,
"actualType": 0,
"onMainScreen": false,
"actual": 0,
"set": 0,
"id": 8
},
{
"name": null,
"weight": 0,
"setType": 0,
"actualType": 0,
"onMainScreen": false,
"actual": 0,
"set": 0,
"id": 9
},
{
"name": null,
"weight": 0,
"setType": 0,
"actualType": 0,
"onMainScreen": false,
"actual": 0,
"set": 0,
"id": 1
},
{
"name": null,
"weight": 0,
"setType": 0,
"actualType": 0,
"onMainScreen": false,
"actual": 0,
"set": 0,
"id": 7
},
{
"name": null,
"weight": 0,
"setType": 0,
"actualType": 0,
"onMainScreen": false,
"actual": 0,
"set": 0,
"id": 2
},
{
"name": null,
"weight": 0,
"setType": 0,
"actualType": 0,
"onMainScreen": false,
"actual": 0,
"set": 0,
"id": 4
},
{
"name": null,
"weight": 0,
"setType": 0,
"actualType": 0,
"onMainScreen": false,
"actual": 0,
"set": 0,
"id": 5
},
{
"name": null,
"weight": 0,
"setType": 0,
"actualType": 0,
"onMainScreen": false,
"actual": 0,
"set": 0,
"id": 3
}
],
"timers": []
}
}
I found the packet that sets a temperature. I'll try to implement setting inside an array.
{
"temperatures": [
{
"id": 1,
"set": 20.8
}
]
}
It seems, you can, without changes to the code, submit data to the stoves array variables, although not quite intuitive yet.
controller/temperatures
to the writable
section of the config.json [ { "id": 1, "set": 22 } ]
to fumis/MAC/controller/temperatures:set
.Unfortunately it did not changed anything.
It seems, you can, without changes to the code, submit data to the stoves array variables, although not quite intuitive yet.
You add
controller/temperatures
to thewritable
section of the config.Publish ```json [
{
"id": 1,
"set": 22
}
]
`` to
fumis/MAC/controller/temperatures:set`.
Can you attach the whole generated JSON? It should look something like this:
{
"apiVersion": "1.3",
"unit": {
"id": "XXX",
"pin": "XXX",
"version": "2.3.0"
},
"controller": {
"temperatures": [{
"id": 1,
"set": 22
}]
}
}
Can you attach the whole generated JSON?
It should look something like this:
{ "apiVersion": "1.3", "unit": { "id": "XXX", "pin": "XXX", "version": "2.3.0" }, "controller": { "temperatures": [{ "id": 1, "set": 22 }] } }
From where I can get this ?
Just add console.log(JSON.stringify(command_struct));
after this.stove_sockets[unitid].send(JSON.stringify(command_struct));
in main.js
Then restart and try again.
Parts MAC,controller,temperatures { apiVersion: '1.3', controller: { temperatures: { id: 1, set: 22 } }, unit: { id: 'MAC', pin: '8175', version: '2.3.0' } } {"apiVersion":"1.3","controller":{"temperatures":{"id":1,"set":22}},"unit":{"id":"MAC","pin":"8175","version":"2.3.0"}} Data from stove MAC Subpath MAC/controller/temperatures Parts MAC,controller,temperatures { apiVersion: '1.3', controller: { temperatures: { id: 6, set: 22 } }, unit: { id: 'MAC', pin: '8175', version: '2.3.0' } } {"apiVersion":"1.3","controller":{"temperatures":{"id":6,"set":22}},"unit":{"id":"MAC","pin":"8175","version":"2.3.0"}} Data from stove MAC
Nothing happends.
{"temperatures": [{"set": 55, "id": 6}], "type": 0}
This worked
Yes, it should be in square brackets.
I don't think "type": 0
is necessary.
Hi, I implemented the code on a Debian server. My integration should work with Home assistant. The Mqtt server is running on my Home assistant. All topics are visible via the MQTT explorer. The only thing I don’t understand is how I can turn on/off the stove. I was thinking that I just need to publish the command in the correct topic but the stove does not do anything with it. What is the correct procedure?
Hi, I implemented the code on a Debian server. My integration should work with Home assistant. The Mqtt server is running on my Home assistant. All topics are visible via the MQTT explorer. The only thing I don’t understand is how I can turn on/off the stove. I was thinking that I just need to publish the command in the correct topic but the stove does not do anything with it. What is the correct procedure?
Please check:
"writable": [
"controller/command",
"controller/power/setPower"
]
fumis/MAC/controller/power/setPower:set
with integers ranging from 1 to 5 for setting the power level. Thanks for the info. I installed Openhab . Now I understand what is sent to the stove. I can set the powerstate now. The rest will follow.
Hello, Once I set a temperature in topic fumis/MAC/controller/temperatures/5/set:set it says
Subscribe to topic 'fumis/MAC/#' Data from stove MAC Subpath MAC/controller/temperatures/5/set Parts MAC,controller,temperatures,5,set { apiVersion: '1.3', controller: { temperatures: { '5': [Object] } }, unit: { id: 'MAC', pin: 'PIN', version: '2.3.0' } } Data from stove MAC
And the temperature is not set.
Could you please help me how to set the temperature properly.
Thanks.