doc/bms-ch8.sgml

branch
stable
changeset 665
4d01937ae7af
parent 595
655a161bb7c7
child 719
70f382a2b842
equal deleted inserted replaced
521:9d1aa6f3a4da 665:4d01937ae7af
32 <orderedlist> 32 <orderedlist>
33 <listitem><para><code>brewery</code> is voor de bms applicatie zelf. Nog uitwerken.</para></listitem> 33 <listitem><para><code>brewery</code> is voor de bms applicatie zelf. Nog uitwerken.</para></listitem>
34 <listitem><para><code>fermenters</code> is voor vergisting controllers.</para></listitem> 34 <listitem><para><code>fermenters</code> is voor vergisting controllers.</para></listitem>
35 <listitem><para><code>co2meters</code> is een drukmeter om bijvoorbeeld hergisting op de fles 35 <listitem><para><code>co2meters</code> is een drukmeter om bijvoorbeeld hergisting op de fles
36 te monitoren.</para></listitem> 36 te monitoren.</para></listitem>
37 <listitem><para><code>ispindels</code> is een electronische hydrometer die in het gistvat drijft
38 en de temperatuur en sg verstuurt.</para></listitem>
37 </orderedlist> 39 </orderedlist>
38 40
39 <para>De volgende <code>message_type</code> namen zijn gedefinieerd:</para> 41 <para>De volgende <code>message_type</code> namen zijn gedefinieerd:</para>
40 <orderedlist> 42 <orderedlist>
41 <listitem><para>NBIRTH geeft aan wanneer een node opstart en met het netwerk 43 <listitem><para>NBIRTH geeft aan wanneer een node opstart en met het netwerk
79 De payload zoals die door een node verstuurd wordt. Het wordt in json formaat 81 De payload zoals die door een node verstuurd wordt. Het wordt in json formaat
80 verzonden zonder extra spaties en opmaak zoals hieronder is te zien. Het timestamp 82 verzonden zonder extra spaties en opmaak zoals hieronder is te zien. Het timestamp
81 is de unix tijd sinds 1 januari 1970. Niet alle controllers sturen een timestamp, 83 is de unix tijd sinds 1 januari 1970. Niet alle controllers sturen een timestamp,
82 controllers zonder klok laten dit weg. De tijd wordt dan door <code>bmsd</code> 84 controllers zonder klok laten dit weg. De tijd wordt dan door <code>bmsd</code>
83 ingevuld en is de tijd dat het bericht ontvangen wordt. 85 ingevuld en is de tijd dat het bericht ontvangen wordt.
84 Het `seq' nummer wordt met ieder bericht met 1 verhoogd.</para> 86 Het `seq' nummer wordt met ieder bericht met 1 verhoogd.
87 Ook dit nummer is niet altijd aanwezig.</para>
88 <para>In de `metric' groep is de `interval' optioneel. Dit wordt bijvoorbeeld
89 verstuurd door iSpindels en is de ingestelde update interval tijd in seconden.
90 Indien dit niet aanwezig is dan wordt 300 seconden als standaard waarde gebruikt.
91 Deze waarde wordt gebruikt om een apparaat als offline te markeren indien het langer
92 als twee maal deze tijd niet wordt gezien.</para>
85 <programlisting> 93 <programlisting>
86 { 94 {
87 "timestamp": 1532201089, 95 "timestamp": 1532201089,
88 "seq": 0,
89 "metric": { 96 "metric": {
90 "uuid": "b508f01c-1f82-4e8b-b0d2-d88ecfb53031", 97 "uuid": "b508f01c-1f82-4e8b-b0d2-d88ecfb53031",
98 "interval":300,
91 "properties": { 99 "properties": {
92 "hardwaremake": "Raspberry", 100 "hardwaremake": "Raspberry",
93 "hardwaremodel": "Unknown", 101 "hardwaremodel": "Unknown",
94 "os": "Linux", 102 "os": "Linux",
95 "os_version": "4.1.19+", 103 "os_version": "4.1.19+",
156 "uuid": "48c9ae27-3f58-41c9-ae4b-1d57b249c45a", 164 "uuid": "48c9ae27-3f58-41c9-ae4b-1d57b249c45a",
157 "alias": "unit1", 165 "alias": "unit1",
158 "product": { 166 "product": {
159 "uuid": "1eb0c7bf-bf06-491c-a086-ac5478d521b9", 167 "uuid": "1eb0c7bf-bf06-491c-a086-ac5478d521b9",
160 "code": "CB0001", 168 "code": "CB0001",
161 "name": "Hoppy Housebeer" 169 "name": "Hoppy Housebeer",
170 "yeast_lo": 18.0,
171 "yeast_hi": 24.0
162 }, 172 },
163 "air": { 173 "air": {
164 "address": "70d60411-3ec8-40ab-998a-81fead83025f", 174 "address": "70d60411-3ec8-40ab-998a-81fead83025f",
165 "state": "OK", 175 "state": "OK",
166 "temperature": 21.562 176 "temperature": 21.562
205 }, 215 },
206 "stage": "PRIMARY", 216 "stage": "PRIMARY",
207 "mode": "BEER", 217 "mode": "BEER",
208 "setpoint": { 218 "setpoint": {
209 "low": 21.0, 219 "low": 21.0,
210 "high": 21.0 220 "high": 21.5
211 },
212 "webcam": {
213 "url":"https://the.webcamserver.com:8090/?action=stream",
214 "light": 1
215 }, 221 },
216 "alarm": 0, 222 "alarm": 0,
217 "profile": { 223 "profile": {
218 "uuid": "c93ad1bb-0446-4788-9c43-83990c5f8b82", 224 "uuid": "c93ad1bb-0446-4788-9c43-83990c5f8b82",
219 "name": "Witbier methode Cellis", 225 "name": "Witbier methode Cellis",
221 "percent": 0, 227 "percent": 0,
222 "inittemp": { 228 "inittemp": {
223 "low": 17.9, 229 "low": 17.9,
224 "high": 18.1 230 "high": 18.1
225 }, 231 },
226 "fridgemode": 0,
227 "steps": [ 232 "steps": [
228 { 233 {
229 "resttime": 2, 234 "resttime": 2,
230 "steptime": 0, 235 "steptime": 0,
231 "target": { 236 "target": {
271 bepaald dus het uiteindelijke payload formaat. 276 bepaald dus het uiteindelijke payload formaat.
272 </para> 277 </para>
273 <programlisting> 278 <programlisting>
274 { 279 {
275 "timestamp": 1532201089, 280 "timestamp": 1532201089,
276 "seq": 0,
277 "metric": { 281 "metric": {
278 "product": { 282 "product": {
279 "uuid": "1eb0c7bf-bf06-491c-a086-ac5478d521b9", 283 "uuid": "1eb0c7bf-bf06-491c-a086-ac5478d521b9",
280 "code": "CB0001", 284 "code": "CB0001",
281 "name": "Hoppy Housebeer" 285 "name": "Hoppy Housebeer"
302 }, 306 },
303 "fan": { 307 "fan": {
304 "power": 100, 308 "power": 100,
305 "usage": 8273772 309 "usage": 8273772
306 }, 310 },
307 "sg": 1.023,
308 "event": "Something to mark", 311 "event": "Something to mark",
309 "fermenter_uuid": "48c9ae27-3f58-41c9-ae4b-1d57b249c45a" 312 "fermenter_uuid": "48c9ae27-3f58-41c9-ae4b-1d57b249c45a"
310 } 313 }
311 } 314 }
312 </programlisting> 315 </programlisting>
316 Ieder brouw product heeft zijn eigen bestand. 319 Ieder brouw product heeft zijn eigen bestand.
317 De bestanden staan in <code>www/logs/fermentation/</code>. 320 De bestanden staan in <code>www/logs/fermentation/</code>.
318 De bestandsnamen zijn <code>product_code\ product_name.log</code>. 321 De bestandsnamen zijn <code>product_code\ product_name.log</code>.
319 Het interne formaat is:</para> 322 Het interne formaat is:</para>
320 <programlisting> 323 <programlisting>
321 2014-11-15 18:39:12,BEER,PRIMARY,20.312,19.750,-1.500,20.5,18.6,18.8,35,12345,0,67890,Whatsup,Fermenter 324 2014-11-15 18:39:12,BEER,PRIMARY,20.312,19.750,-1.500,20.5,18.6,18.8,35,12345,0,67890,Whatsup,Fermenter
322 | | | | | | | | | | | | | | | 325 | | | | | | | | | | | | | | |
323 0 datetime + | | | | | | | | | | | | | | 326 0 datetime + | | | | | | | | | | | | | |
324 1 werkwijze ------------+ | | | | | | | | | | | | | 327 1 werkwijze ---------+ | | | | | | | | | | | | |
325 2 vergisting fase ------------+ | | | | | | | | | | | | 328 2 vergisting fase ---------+ | | | | | | | | | | | |
326 3 temperatuur lucht -----------------+ | | | | | | | | | | | 329 3 temperatuur lucht --------------+ | | | | | | | | | | |
327 4 temperatuur bier -------------------------+ | | | | | | | | | | 330 4 temperatuur bier ----------------------+ | | | | | | | | | |
328 5 temperatuur koeler ------------------------------+ | | | | | | | | | 331 5 temperatuur koeler ---------------------------+ | | | | | | | | |
329 6 temperatuur ruimte -------------------------------------+ | | | | | | | | 332 6 temperatuur ruimte ----------------------------------+ | | | | | | | |
330 7 instelwaarde laag -------------------------------------------+ | | | | | | | 333 7 instelwaarde laag ----------------------------------------+ | | | | | | |
331 8 instelwaarde hoog ------------------------------------------------+ | | | | | | 334 8 instelwaarde hoog ---------------------------------------------+ | | | | | |
332 9 verwarming vermogen --------------------------------------------------+ | | | | | 335 9 verwarming vermogen -----------------------------------------------+ | | | | |
333 10 verwarming verbruik ------------------------------------------------------+ | | | | 336 10 verwarming verbruik ---------------------------------------------------+ | | | |
334 11 koeler vermogen --------------------------------------------------------------+ | | | 337 11 koeler vermogen -----------------------------------------------------------+ | | |
335 12 koeler verbruik ------------------------------------------------------------------+ | | 338 12 koeler verbruik ---------------------------------------------------------------+ | |
336 13 gebeurtenis -----------------------------------------------------------------------------+ | 339 13 gebeurtenis --------------------------------------------------------------------------+ |
337 14 vergister uuid -----------------------------------------------------------------------------------+ 340 14 vergister uuid --------------------------------------------------------------------------------+
341 </programlisting>
342 </sect1>
343
344 <sect1 id="payloadco2data">
345 <title>Netwerk payload data formaat voor CO2 meters.</title>
346 <para>
347 Nog schrijven
348 </para>
349 <programlisting>
350 {
351 "seq":228196,
352 "metric":{
353 "units":[
354 {
355 "uuid":"c0ffeeee-dead-beef-caf0-3c71bffe4054",
356 "alias":"unit1",
357 "mode":"ON",
358 "alarm":0,
359 "temperature":{
360 "state":"OK",
361 "address":"e001191420732a28",
362 "temperature":20.250
363 },
364 "pressure":{
365 "state":"OK",
366 "channel":7,
367 "voltage":0.322,
368 "zero":0.110,
369 "bar":0.00
370 }
371 },
372 {
373 "uuid":"c0ffeeee-dead-beef-caf1-3c71bffe4054",
374 "alias":"unit2",
375 "mode":"OFF",
376 "alarm":1,
377 "temperature":{
378 "state":"OK",
379 "address":"e001191420732a28",
380 "temperature":20.250
381 },
382 "pressure":{
383 "state":"OK",
384 "channel":6,
385 "voltage":0.075,
386 "zero":0.109,
387 "bar":0.00
388 }
389 }
390 ]
391 }
392 }
338 </programlisting> 393 </programlisting>
339 </sect1> 394 </sect1>
340 395
341 <sect1 id="payloadco2log"> 396 <sect1 id="payloadco2log">
342 <title>Netwerk payload log formaat voor CO2 meters.</title> 397 <title>Netwerk payload log formaat voor CO2 meters.</title>
343 <para> 398 <para>
344 Voor iedere actieve CO2 meter wordt bij iedere systeemstart een logbericht 399 Voor iedere actieve CO2 meter wordt bij iedere systeemstart en iedere vijf
345 gestuurd. Dit is ongeveer iedere 5 minuten. Omdat de CO2 meters eenvoudige 400 minuten een logbericht gestuurd. Omdat de CO2 meters eenvoudige
346 controllers zijn is er geen tijd en product informatie beschikbaar. Deze 401 controllers zijn is er geen tijd en product informatie beschikbaar. Deze
347 ontbrekende gegevens worden aangevuld door <command>bmsd</command> 402 ontbrekende gegevens worden aangevuld door <command>bmsd</command>
348 </para> 403 </para>
349 <programlisting> 404 <programlisting>
350 405 {
406 "seq":228229,
407 "metric":{
408 "uuid":"c0ffeeee-dead-beef-caf0-3c71bffe4054",
409 "temperature":21.125,
410 "pressure":0.000
411 }
412 }
351 </programlisting> 413 </programlisting>
352 <para> 414 <para>
353 De ontvangen CO2 log gegevens worden niet opgeslagen in de SQL database 415 De ontvangen CO2 log gegevens worden niet opgeslagen in de SQL database
354 maar in platte tekst bestanden. Hierdoor is de gelogde informatie sneller toegankelijk. 416 maar in platte tekst bestanden. Hierdoor is de gelogde informatie sneller toegankelijk.
355 Ieder brouw product heeft zijn eigen bestand. 417 Ieder brouw product heeft zijn eigen bestand.
364 2 CO2 flesdruk in bar ---------+ | 426 2 CO2 flesdruk in bar ---------+ |
365 3 meter uuid -------------------------------------+ 427 3 meter uuid -------------------------------------+
366 </programlisting> 428 </programlisting>
367 </sect1> 429 </sect1>
368 430
431
432 <sect1 id="payloadispindeldata">
433 <title>Netwerk payload data formaat voor iSpindels.</title>
434 <para>
435 Iedere actieve iSpindel stuurt bij iedere systeemstart een bericht.
436 Daarna na iedere <code>interval</code> tijd in seconden een volgend bericht.
437 Omdat de iSpindel eenvoudige controllers zijn is er geen tijd en product
438 informatie beschikbaar. De instellingen voor <code>bmsd</code> in de iSpindel zijn:
439 </para>
440
441 <orderedlist>
442 <listitem><para>Unit of temperature: Celsius</para></listitem>
443 <listitem><para>Service Type: HTTP</para></listitem>
444 <listitem><para>Token: leeg laten</para></listitem>
445 <listitem><para>Server Address: het server IP adres</para></listitem>
446 <listitem><para>Server Port: 80</para></listitem>
447 <listitem><para>Path / URI: /ispindel/index.php</para></listitem>
448 </orderedlist>
449
450 <para>
451 De densiteit wordt standaard door de iSpindel in graden Plato gegeven en zo worden
452 de gegevens ook verwerkt. Het SG wordt door de <code>/ispindel/index.php</code>
453 berekend. Dit script verzorgd de omzetting van de iSpindel POST data naar MQTT
454 data.
455 </para>
456
457 <informaltable frame="none" rowsep="0" colsep="0">
458 <tgroup cols="2">
459 <tbody>
460 <row>
461 <entry>
462 <para>
463 <figure><title>iSpindel menu.</title>
464 <mediaobject>
465 <imageobject>
466 <imagedata valign="top" fileref="bms-ispindel-1.png" scale="15" format="png">
467 </imageobject>
468 </mediaobject>
469 </figure>
470 </para>
471 </entry>
472 <entry>
473 <para>
474 <figure><title>iSpindel configuratie.</title>
475 <mediaobject>
476 <imageobject>
477 <imagedata valign="top" fileref="bms-ispindel-2.png" scale="15" format="png">
478 </imageobject>
479 </mediaobject>
480 </figure>
481 </para>
482 </entry>
483 </row>
484 </tbody>
485 </tgroup>
486 </informaltable>
487
488 <para>
489 De ontbrekende gegevens worden aangevuld door <command>bmsd</command>
490 De volgende gegevens worden via het MQTT protocol ontvangen:
491 </para>
492 <programlisting>
493 {
494 "unit":{
495 "uuid":"c0ffeeee-cafe-dead-bee0-2af236d50dc9",
496 "alias":"iSpindel000",
497 "alarm":0,
498 "interval":900,
499 "angle":42.96722,
500 "temperature":25.5625,
501 "battery":4.254432,
502 "gravity":9.306425
503 }
504 }
505 </programlisting>
506 <para>
507 De iSpindel stuurt geen aparte log informatie, alle informatie voor de logfile
508 wordt uit het standaard bericht gehaald.
509 De log gegevens worden niet opgeslagen in de SQL database
510 maar weggeschreven in platte tekst bestanden. Hierdoor is de gelogde informatie sneller toegankelijk.
511 Ieder brouw product heeft zijn eigen bestand.
512 De bestanden staan in <code>www/logs/ispindel/</code>.
513 De bestandsnamen zijn <code>product_code\ product_name.log</code>.
514 Het interne formaat is:</para>
515 <programlisting>
516 2020-01-05 14:01:53,19.3750,7.08093,1.02806,3.34724,38.78126,900,c0ffeeee-cafe-dead-bee0-2af236d50dc9
517 | | | | | | | |
518 0 datetime + | | | | | | |
519 1 temperatuur -----------+ | | | | | |
520 2 densiteit plato ---------------+ | | | | |
521 3 densiteit SG --------------------------+ | | | |
522 4 batterij voltage ------------------------------+ | | |
523 5 tilt hoek ---------------------------------------------+ | |
524 6 update interval ----------------------------------------------+ |
525 7 ispindel uuid ------------------------------------------------------------------+
526 </programlisting>
527 </sect1>
528
529
369 </chapter> 530 </chapter>

mercurial