Page 1 on 1

Okofen Pellmatic boiler dashboard

published: 18/03/22, 21:42
by htaxil
Hello everybody

I've been reading this for quite some time now. forum. I find that the exchanges there are of a high quality and I thank all those who contribute to it, your discussions have nourished my reflection when I was studying the alternative to my old propane boiler. Image.

And so that's it, for barely two weeks my house has been equipped with an Okofen Pellmatic compact PES210 pellet boiler coupled with solar collectors for DHW. So far everything is working perfectly :) . I cross my fingers, but as I am of a cautious nature and I like to know if we are using the resources to their full potential, I would like to create a dashboard to graph all the useful information and analyze it. So I started by connecting the boiler to my local network and enabling JSON. It's good, I manage to recover the information of the boiler (see below).

Well, collecting information is good, but I also have to understand what it means (there is part of the answer here) then store and graph them. So before jumping headlong into configuring a node-red + InfuxDB + Grafana, I poked around the internet a bit to see if other people hadn't already racked their brains a bit on the topic, and I found some interesting stuff:
  • Project OkoVisionwhich looks very cool, but is unfortunately no longer maintained
  • OkofenSpywhich looks nice too, developed by a German. But I have doubts about his method of calculating the amount of pellets consumed...

Well, I haven't found anything that suits me perfectly. What I would like is to make time graphs allowing to see the evolution of the data and the operation of the installation (like OkoVision). For example a graph with outdoor temperature + indoor temperature + underfloor heating flow temperature + underfloor heating return temperature + set point + boiler operating ranges. For the DHW tank: Tank temperature, sensor temperature, DHW production by the boiler, etc.

Maybe also add other sensors. Indeed, I do not have the impression that we know the quantity of pellets consumed, and that I would have liked to have it... This information is processed in OkoVision, but I do not know which boiler it is retrieved the information. surely a model that provided this information...

Do any of you already have this kind of dashboard? For which model of machine? What data is there? What would you like to have?...



Here is the data I collect via JSON:

code: Select all

{
 "system":{
  "L_ambient":102,
  "L_errors":0,
  "L_usb_stick":0,
  "L_existing_boiler":0
 },
 "weather":{
  "L_temp":80,
  "L_clouds":100,
  "L_forecast_temp":140,
  "L_forecast_clouds":96,
  "L_forecast_today":0,
  "L_starttime":920,
  "L_endtime":1640,
  "L_source":"http://www.openweathermap.org",
  "L_location":"Saint-Just-Saint-Rambert|FR|6616777",
  "cloud_limit":55,
  "hysteresys":-40,
  "offtemp":-100,
  "lead":120,
  "refresh":0,
  "oekomode":0
 },
 "forecast":{
  "L_w_0":"ven., 18 mars 18:56|8|100|4 km/h|04n|804|C|06:50|18:51",
  "L_w_1":"ven., 18 mars 19:00|8|100|7 km/h|04n|804|C",
  "L_w_2":"ven., 18 mars 22:00|8|99|6 km/h|04n|804|C",
  "L_w_3":"sam., 19 mars 01:00|6|91|2 km/h|04n|804|C",
  "L_w_4":"sam., 19 mars 04:00|5|95|5 km/h|04n|804|C",
  "L_w_5":"sam., 19 mars 07:00|5|75|5 km/h|04d|803|C",
  "L_w_6":"sam., 19 mars 10:00|11|85|2 km/h|04d|804|C",
  "L_w_7":"sam., 19 mars 13:00|14|92|9 km/h|04d|804|C",
  "L_w_8":"sam., 19 mars 16:00|15|100|11 km/h|10d|500|C",
  "L_w_9":"sam., 19 mars 19:00|10|92|4 km/h|10n|500|C",
  "L_w_10":"sam., 19 mars 22:00|8|55|6 km/h|04n|803|C",
  "L_w_11":"dim., 20 mars 01:00|9|76|10 km/h|10n|500|C",
  "L_w_12":"dim., 20 mars 04:00|9|89|12 km/h|04n|804|C",
  "L_w_13":"dim., 20 mars 07:00|7|94|8 km/h|04d|804|C",
  "L_w_14":"dim., 20 mars 10:00|12|72|19 km/h|04d|803|C",
  "L_w_15":"dim., 20 mars 13:00|15|41|15 km/h|03d|802|C",
  "L_w_16":"dim., 20 mars 16:00|15|60|17 km/h|04d|803|C",
  "L_w_17":"dim., 20 mars 19:00|10|80|12 km/h|04n|803|C",
  "L_w_18":"dim., 20 mars 22:00|7|93|8 km/h|04n|804|C",
  "L_w_19":"lun., 21 mars 01:00|4|55|8 km/h|04n|803|C",
  "L_w_20":"lun., 21 mars 04:00|3|12|8 km/h|02n|801|C",
  "L_w_21":"lun., 21 mars 07:00|3|10|6 km/h|01d|800|C",
  "L_w_22":"lun., 21 mars 10:00|11|0|11 km/h|01d|800|C",
  "L_w_23":"lun., 21 mars 13:00|15|0|14 km/h|01d|800|C",
  "L_w_24":"lun., 21 mars 16:00|15|5|17 km/h|01d|800|C"
 },
 "hk1":{
  "L_roomtemp_act":211,
  "L_roomtemp_set":80,
  "L_flowtemp_act":342,
  "L_flowtemp_set":80,
  "L_comfort":0,
  "L_state":2080,
  "L_statetext":"Mode confort actif|T ambiante atteinte",
  "L_pump":0,
  "remote_override":0,
  "mode_auto":1,
  "time_prg":0,
  "temp_setback":210,
  "temp_heat":210,
  "temp_vacation":150,
  "name":"plancher cha",
  "oekomode":0,
  "autocomfort":-1,
  "autocomfort_sunset":0,
  "autocomfort_sunrise":0
 },
 "hk2":{
  "L_roomtemp_act":0,
  "L_roomtemp_set":200,
  "L_flowtemp_act":354,
  "L_flowtemp_set":362,
  "L_comfort":0,
  "L_state":32,
  "L_statetext":"Mode confort actif",
  "L_pump":1,
  "remote_override":0,
  "mode_auto":1,
  "time_prg":0,
  "temp_setback":180,
  "temp_heat":200,
  "temp_vacation":150,
  "name":"Radiateurs",
  "oekomode":0,
  "autocomfort":-1,
  "autocomfort_sunset":0,
  "autocomfort_sunrise":0
 },
 "ww1":{
  "L_temp_set":500,
  "L_ontemp_act":574,
  "L_offtemp_act":574,
  "L_pump":0,
  "L_state":8208,
  "L_statetext":"t dans prog horaire|Demande marche off",
  "time_prg":0,
  "sensor_on":0,
  "sensor_off":0,
  "mode_auto":1,
  "mode_dhw":1,
  "heat_once":0,
  "temp_min_set":380,
  "temp_max_set":550,
  "name":"",
  "smartstart":0,
  "use_boiler_heat":0,
  "oekomode":0
 },
 "pe1":{
  "L_temp_act":817,
  "L_temp_set":80,
  "L_ext_temp":-32768,
  "L_frt_temp_act":6157,
  "L_frt_temp_set":80,
  "L_frt_temp_end":80,
  "L_br":0,
  "L_ak":0,
  "L_not":1,
  "L_stb":1,
  "L_modulation":0,
  "L_runtimeburner":0,
  "L_resttimeburner":0,
  "L_currentairflow":0,
  "L_lowpressure":630,
  "L_lowpressure_set":630,
  "L_fluegas":34,
  "L_uw_speed":100,
  "L_state":5,
  "L_statetext":"Mise à l'arrêt",
  "L_type":9,
  "L_starts":248,
  "L_runtime":173,
  "L_avg_runtime":41,
  "L_uw_release":600,
  "L_uw":100,
  "L_storage_fill":6000,
  "L_storage_min":400,
  "L_storage_max":6000,
  "L_storage_popper":0,
  "storage_fill_today":0,
  "storage_fill_yesterday":0,
  "mode":1
 },
   "error":{
   }
}



Good night,
Hubert

Re: Okofen Pellmatic boiler dashboard

published: 18/03/22, 22:31
by Pilpoill
Hi,

The boiler can provide graphs representing its operation directly on the touch screen, so I wonder if your boiler is recent given your search :?:

For the consumption of pellets, the most reliable method will remain that of the weight and without specific equipment on the silo, you will only obtain an estimate made from the number of turns of the feed screw.
This is how Okovision works and it is still functional. For the moment with the latest firmware versions (>3 I think), just get the csv files and import them in bulk from the Okovision interface :)

Re: Okofen Pellmatic boiler dashboard

published: 20/03/22, 12:38
by htaxil
Hello Pilpoill,

Thanks a lot for your answer. My boiler is recent and equipped with firmware v4.
The graphs on the boiler screen, I do not find it practical and it is limited to daily graphs.

On the other hand I did not know that one could always use OkoVision by importing the csv. So I proceeded (not without difficulty) to install OkoVision on my NAS. It wasn't easy because the documentation is incomplete and a bit dated. A lot of things seem to have evolved since it was written, both in terms of screens and in terms of security and the software used.

In short, Okovision is running and I manage to inject the data in batches (I checked in the database). On the other hand, the import remains rather tedious since it is necessary to recover the csv on the boiler, to transfer it on the NAS, to connect to the NAS to modify the rights on the file so that it can be treated by the script, to connect to Okovision and proceed with the import. Well, maybe it's manageable, but it's not very automatic. Afterwards, what bothers me the most is that despite all that, I can't get the slightest bit of graph drawn by OkoVision :?

Image

(It asks me to fill in the last fill information, but I did.)

Am I the only one in this case?

Ok, for the consumption of pellets, the best thing is for me to integrate strain gauges into my silo.

Re: Okofen Pellmatic boiler dashboard

published: 20/03/22, 14:17
by Pilpoill
Hello,

So there is much simpler if you are under firmware 4, you can have all the csv sent to you by email every night automatically! Since the time that this function existed but did not work...
All you have to do is fill in some information in the general/e-mail menu AND fill in the graph menu what you want to receive.

For Okovision, once you have done your file import, you have to start the calculation.
From head it is in the same menu as the mass import.

Re: Okofen Pellmatic boiler dashboard

published: 20/03/22, 15:09
by htaxil
Hello,

Indeed, while I was rummaging on the machine to see what it could offer me as graphs, I saw that I could send myself the daily stats by email. I filled in my email and I received the csv file last night.

It is true that by asking for the calculation of the daily summaries it is much better :)

Image

Now I just have to figure out what all the parameters mean : Shock: .
A certain number are already "translated" by OkoVision, but not all of them and even if they are, that doesn't necessarily speak to me...

If anyone has correspondence for the items below that have no translation, I'm interested :D :

code: Select all

Nom Original         Nom Okovision
AT [°C]            T°C Extérieure
ATakt [°C]   
KT Ist [°C]         T°C Chaudière
KT Soll [°C]         T°C Chaudière Consigne
BR               Contact Brûleur (On/Off)
Sperrzeit            Temps de blocage
PE1_BR1            OKO 1 - Contact Brûleur (On/Off)
HK1 VL Ist[°C]         T°C Départ
HK1 VL Soll[°C]         T°C Départ Consigne
HK1 RT Ist[°C]         T°C Ambiante
HK1 RT Soll[°C]         T°C Ambiante Consigne
HK1 Pumpe         Circulateur Chauffage (On/Off)
HK1 Mischer   
HK1 Fernb[°C]   
HK1 Status   
HK2 VL Ist[°C]         Cir.chauff.2 - T°C Départ
HK2 VL Soll[°C]         Cir.chauff.2 - T°C Départ Consigne
HK2 RT Ist[°C]         Cir.chauff.2 - T°C Ambiante
HK2 RT Soll[°C]         Cir.chauff.2 - T°C Ambiante Consigne
HK2 Pumpe         Cir.chauff.2 - Circulateur Chauffage (On/Off)
HK2 Mischer   
HK2 Fernb[°C]   
HK2 Status   
WW1 EinT Ist[°C]      T°C ECS
WW1 AusT Ist[°C]      T°C ECS (arret)
WW1 Soll[°C]         T°C ECS Consigne
WW1 Pumpe         Circulateur ECS
WW1 Status   
Zubrp1 Pumpe         Pompe (indefini)
Sensor ext [°C]         Sensor ext [°C]
PE1 KT[°C]         OKO 1 - T°C chaudière
PE1 KT_SOLL[°C]      OKO 1 - T°C chaudière Consigne
PE1 UW Freigabe[°C]   
PE1 Modulation[%]      PE1 Modulation[%]
PE1 FRT Ist[°C]         T°C Flamme
PE1 FRT Soll[°C]      T°C Flamme Consigne
PE1 FRT End[°C]   
PE1 Einschublaufzeit[zs]   Vis Alimentation marche (ds)
PE1 Pausenzeit[zs]      Vis Alimentation pause (ds)
PE1 Luefterdrehzahl[%]   Ventilation Brûleur (%)
PE1 Saugzugdrehzahl[%]   Ventilation fumée (%)
PE1 Unterdruck Ist[EH]   Dépression (Pa)
PE1 Unterdruck Soll[EH]   Dépression Consigne (Pa)
PE1 Fuellstand[kg]   
PE1 Fuellstand ZWB[kg]   
PE1 Status         Statut chaudière
PE1 Motor ES         Moteur alimentation chaudière (On/Off)
PE1 Motor RA         Moteur extraction silo (On/Off)
PE1 Motor RES1         Moteur tremie intermédiaire
PE1 Motor TURBINE      Moteur ASPIRATION
PE1 Motor ZUEND      Moteur Allumage
PE1 Motor UW[%]      Pompe du circuit primaire (%)
PE1 Motor AV   
PE1 Motor RES2   
PE1 Motor MA   
PE1 Motor RM         Moteur ramonage
PE1 Motor SM   
PE1 CAP RA   
PE1 CAP ZB   
PE1 AK   
PE1 Saug-Int[min]   
PE1 DigIn1   
PE1 DigIn2   
Fehler1   
Fehler2   
Fehler3   
Start Cycle         Start Cycle


Re: Okofen Pellmatic boiler dashboard

published: 02/04/22, 15:30
by htaxil
Hello everybody

A little feedback after having implemented two boiler monitoring solutions:
    -OkoVision
    - Oekofen-Spy


okovision
Superb tool! Very successful, but does not allow data to be collected via JSON which in my opinion is the most sustainable solution over time. I fear that Okofen will abandon CSV one day. The recovery of CSV files has also become more complicated and is no longer possible with a simple request since firmware V4. According to the author, the latest compatible firmware is 3.10d.

Very positive point: The tool renames the data labels, which makes them understandable for an average user :) .

The installation can be a bit complex, for my part I installed it on my Synology NAS. The documentation is a bit outdated, the screens are no longer necessarily identical and the security constraints have been reinforced.

Oekofen-spy
This one I installed on a RasprerryPi. It works from Python scripts that are in the project's python3 folder:
    - One to initialize the database (init_influx_oekofen_spy.py), but the doc says how to do it manually and doesn't refer to this script.
    - One to collect CSV data which I haven't tested (oekofen_fetch_csv.py), but I imagine that it no longer works since firmware 4 either
    - One to collect the JSON data and inject it into the InfluDB database (oekofen2influx_fetch_Python3_JSON-alt.py), it is the latter only that I have implemented

Several problems encountered when implementing the script:

The script crashes:

code: Select all

pi@raspberrypi:~/Okofen $ python3 oekofen2influx_fetch_Python3_JSON-alt.py
2022-04-01, 00:07:16
Traceback (most recent call last):
  File "oekofen2influx_fetch_Python3_JSON-alt.py", line 130, in <module>
    d = d | singleDict
TypeError: unsupported operand type(s) for |: 'dict' and 'dict'


I opened an Issue: https://gitlab.com/p3605/oekofen-spy/-/issues/1


To work around the problem, I saw that I could avoid the block that had the problematic statement by setting a variable at the beginning of the script to True:

code: Select all

fetchAll = True


Then, you must specify the parameters specific to your environment:

code: Select all

#Wohnhaus Ökofen
json_quelle = "http://192.168.1.110:4321/ebW3/all"
fetchAll = True


# Configure InfluxDB connection variables
host = "172.19.0.4"
port = 8086
user = "pellematic"
password = "smart"
dbname = "oekofen"


And finally it is necessary to regularly launch the script by placing it in the cron. For my part, I had to place it in root's cron, because in that of pi it must not have the necessary privileges to run and nothing happens. I chose to fetch data every minute:

code: Select all

*/1 *  * * *   /usr/bin/python3 /home/pi/Okofen/Okofen2Influx.py >>/var/log/Okofen2Influx.log 2>&1



In addition, I also activated the cron logs by editing and uncommenting the appropriate line of the file

code: Select all

/etc/rsyslog.conf

code: Select all

#
# First some standard log files.  Log by facility.
#
auth,authpriv.*                 /var/log/auth.log
*.*;auth,authpriv.none          -/var/log/syslog
cron.*                          /var/log/cron.log
daemon.*                        -/var/log/daemon.log
kern.*                          -/var/log/kern.log
lpr.*                           -/var/log/lpr.log
mail.*                          -/var/log/mail.log
user.*                          -/var/log/user.log


All that to say that the tool is a bit of a hassle to implement, especially since once the data has been integrated into the database, you have to take care of the dashboard part, and there it is too happy either...

Indeed, we find on the project repository a JSON file which seems to me to allow to import the configuration of the dashboard (well that's what I think case it's not documented), but when I import it in grafana not much happens… afterwards maybe I'm not doing the right thing, I'm not a Grafana expert.

Finally, I'm setting up a dashboard, but again it's not easy since the data is stored with obscure labels:

Image