README.design

Tue, 22 Jan 2019 20:27:45 +0100

author
Michiel Broek <mbroek@mbse.eu>
date
Tue, 22 Jan 2019 20:27:45 +0100
changeset 195
2ac491548d8d
parent 194
d202777ebae5
child 196
531d5458782f
permissions
-rw-r--r--

Fermentables database bool to int types. Dropdown lists are using tables with indexes. Dropdown lists display in Dutch. Save and delete in the database now use POST instead of GET. Added the added and dissolved_protein fields. Removed the ibu_gal_per_lb field. Redesigned the web page. Code cleanup.

Centrale daemon 'bmsd' regelt de dagelijkse berichten tussen MQTT en de
database. Om deze berichten betrouwbaar af te handelen is MQTT er tussen
gezet.
Alle sensoren en controllers communiceren uitsluitend via MQTT.

Sensoren en controllers:

  1.  Vergisting controllers.
  2.  Temperatuur loggen.
  3.  Hergisting drukmeters. (druk + temp).
  4.  Brouw controllers.
  5.  Ispindel.


Stappen:

  1.  Importeren oude vergisting en brouw logs.  DONE.
  2.  Thermferm moet DLOG berichten gaan sturen, per wijziging en per 5 minuten.  DONE.
  3.  bmsd moet deze DLOG berichten verwerken. Versie 0.0.2. Bier producten in database. DONE.
  4.  Versie 0.0.2 handmatig installeren op productie. DONE.
  5.  Thermferm uitbreiden met vergisting stage. DONE.
  6.  Brouw controller uitbreiden met MQTT. Niet, ESP32 wordt onstabiel.
  7.  bmsd uitbreiden met brouw controller berichten. Niet, zie hierboven.
  8.  bmsd productie platform upgraden, versie 0.0.3 DONE.
  9.  bmsd recepten editor implementeren, geschikt voor enkel recepten en productie.
 10.  bmsd uitbreiden met productie stappen, met hieraan productie recepten.
 11.  bmsd koppelen logs aan productie.



Web interface bouwen met jqwidgets.


Database inventaris:		Werking	Maten	Index/Strings Bool/Ints	Utf-8	POST
----------------------------	-------	-------	------------- ---------	-----	----
inventory_equipments		Ok.	Ok.
inventory_fermentables		Ok.	Ok.		Ok.	Ok.		Ok.
inventory_hops			Ok.	Ok.
inventory_miscs			Ok.
inventory_suppliers		Ok.	Ok.
inventory_water			Ok.	Ok.
inventory_yeasts		Ok.	Ok.
profile_mash                    Ok.     Ok.
profile_profiles		Ok.	Ok.			Ok.
profile_styles                  Ok.     Ok.
profile_water                   Ok.     Ok.
recipes
products

Handelsmaten (een zooitje ongeregeld):
vergistbare ingredienten:	Prijs per kilo, hoeveelheid in gram.
hoppen				Prijs per ons, hoeveelheid in gram.
Kruiden				Prijs per gram, hoeveelheden in gram.
Additieven			Prijs per 100 ml, hoeveeheid in ml.
Water				Prijs per liter of kuub, hoveelheden in liters.
Gist				Prijs per gram / ml. hoeveelheden in gram/ml.

Alles naar standaard maten in de database en presentatie naar behoefte?
Opslag kilos, liter en Euros met veel cijfers achter de comma.

Database:

  1.  Recepten opslaan standaard maar ingredienten in json formaat omdat dit flexibel is.
  2.  Productie Brouwsels bevatten ook logs, en linken naar een extra recepten database (brews).
  3.  Inventaris ingredienten in MySQL. Voorraad historie is extra arrays.
  4.  Export naar beerxml.
  5.  Import van brouwhulp xml met sync vanuit backup locatie.
  6.  Brouwerij configuratie voornamelijk in json.


MQTT structuur volgens Sparkplug model.

mbv1.0/fermenters/[NBIRTH,DBIRTH]/<hostname>/
mbv1.0/fermenters/DDATA/<hostname>/<unitalias>/

---------------------------------------------------------------------------

namespace/group_id/message_type/edge_node_id/{device_id}

namespace is de root, "mbv1.0"

group_id oa: fermenters, brewcontrol, env_sensor

message_type:	NBIRTH	- Birth certificate for MQTT EoN nodes.
		NDEATH	- Death certificate for MQTT EoN nodes.
		NCMD	- Node command message.
		DBIRTH	- Birth certificate for devices.
		DDEATH	- Death certificate for devices.
		NDATA	- Node data message.
		DDATA	- Device data message.
		DLOG	- Device data logging.
		DCMD	- Device command message.
		STATE	- Critical application state message.

NCMD:	reboot (application restart)
	rebirth

DCMD:	fermenter state change + temperature settings.
	fermenter profile install.
	fermenter load product.
	fermenter set stage


Product: code, uuid en naam.
	Stage:  Plan Wait Brew Primary Secondary Tertiary Package Carbonation Mature Taste Ready Closed
	                    |     |       |         |        |          |
	                    |     |       |         |        |          +-------------	Log/rapport
	                    |     |       |         |        +------------------------	rapport/etiketten
	                    |     +-------+---------+---------------------------------	Log/rapport
	                    +---------------------------------------------------------	Log/rapport

	Main table: products.
	  In progress: overview.
	  In Progress: view charts. DONE fermenters, todo brewlogs.
	  In Progress: view logs. 
	  In Progress: update state.
	  In Progress: Tabbed screens. DONE.
          Start new: some sort of wizzard like a new recipe. DONE.
	  Archive: select via name/code/date.
	  Calendar: shows upcoming events.
	  Recipes can be copied to 'recipes' or 'brews', imported from 'recipes'/'products' or created manual.
          Products recipes Beerxml import.
	  Recipes Beerxml import.

Een cronjob om de Stage bij te werken in geval van Package .. Taste. 

-----------------------------------------------------------------------------

	Formaat csv vergisting logs.

Directory:	www/logs/fermentation
Filenaam:	product_code\ product_name.log

   2014-11-15 18:39,BEER,PRIMARY,20.312,19.750,-1.500,20.5,18.6,18.8,35,12345,0,67890,Whatsup,Fermenter
            |         |     |      |      |      |      |    |    |   |   |   |   |      |        |
 0 datetime +         |     |      |      |      |      |    |    |   |   |   |   |      |        |
 1 mode --------------+     |      |      |      |      |    |    |   |   |   |   |      |        |
 2 stage -------------------+      |      |      |      |    |    |   |   |   |   |      |        |
 3 temp air -----------------------+      |      |      |    |    |   |   |   |   |      |        |
 4 temp beer -----------------------------+      |      |    |    |   |   |   |   |      |        |
 5 temp chiller ---------------------------------+      |    |    |   |   |   |   |      |        |
 6 temp room -------------------------------------------+    |    |   |   |   |   |      |        |
 7 setpoint low ---------------------------------------------+    |   |   |   |   |      |        |
 8 setpoint high -------------------------------------------------+   |   |   |   |      |        |
 9 heater power ------------------------------------------------------+   |   |   |      |        |
10 heater usage ----------------------------------------------------------+   |   |      |        |
11 cooler power --------------------------------------------------------------+   |      |        |
12 cooler usage ------------------------------------------------------------------+      |        |
13 event --------------------------------------------------------------------------------+        |
14 fermenter uuid --------------------------------------------------------------------------------+

De oude logs zijn geimporteerd en geconverteerd. Nieuwe worden geschreven
door bmsd welke de log gegevens ontvangt via MQTT DLOG berichten.
Vanwege de snelheid van verwerken staan de logs niet in de database.

-----------------------------------------------------------------------------

mercurial