# HG changeset patch # User Michiel Broek # Date 1557674647 -7200 # Node ID 42321bf1bab0af5d114aad6b17ee1438448989d3 # Parent 9f07e2f47ec8c9f127d53ae9104e802f1c782384 Added new chapters. diff -r 9f07e2f47ec8 -r 42321bf1bab0 doc/Makefile --- a/doc/Makefile Sun May 12 17:08:58 2019 +0200 +++ b/doc/Makefile Sun May 12 17:24:07 2019 +0200 @@ -3,7 +3,8 @@ include ../Makefile.global -SRC = bms.sgml bms-ch1.sgml bms-ch2.sgml bms-ch3.sgml +SRC = bms.sgml bms-ch1.sgml bms-ch2.sgml bms-ch3.sgml bms-ch4.sgml \ + bms-ch5.sgml bms-ch6.sgml bms-ch7.sgml bms-ch8.sgml HTML = bms.html PDF = bms.pdf OTHER = Makefile docbook-utils.dsl diff -r 9f07e2f47ec8 -r 42321bf1bab0 doc/bms-ch3.sgml --- a/doc/bms-ch3.sgml Sun May 12 17:08:58 2019 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,342 +0,0 @@ - - - -Protocollen. - -De netwerk protocollen. - - - -MQTT topic formaat. -De topics zijn als volgt gedefinieerd: - -mbv1.0/group_id/message_type/edge_node/device_id - - - -group_id geeft het type apparaat aan zoals fermenters -en brewcontrol. -message_type geeft het bericht type aan zoals -NBIRTH, DDATA. -edge_node is de hostnaam van de node die het bericht stuurt. Dit is -de naam zonder domain toevoeging. -device_id is de verkorte naam van het apparaat module waarvan dit -bericht komt zoals de naam van een vergisting controller. Dit is niet aanwezig met NODE berichten. - - - -De volgende group_id namen zijn gedefinieerd: - - -brewery is voor de bms applicatie zelf. Nog uitwerken. -fermenters is voor vergisting controllers. -brewcontrol is een brouw controller. Deze controller kan een deel -of geheel brouwproces uitvoeren. -pressure is een drukmeter om bijvoorbeeld hergisting op de fles -te monitoren. - - -De volgende message_type namen zijn gedefinieerd: - -NBIRTH geeft aan wanneer een node opstart en met het netwerk -verbonden is. Dit is een zogenaamd persistent bericht, het blijft voor nieuwe -MQTT clients altijd zichtbaar. Bij het starten van een node wordt er een payload -verzonden, zie het payload formaat voor een node. Als een node afsluit wordt juist geen -payload verzonden zodat het bericht verdwijnt. -NDATA wordt verstuurd als er veranderingen zijn voor de node, -maar ook iedere vijf minuten om aan te geven dat de node nog "levend" en aanwezig -is. -NDEATH wordt verstuurd als een node offline gaat. Maar het kan ook -ontvangen worden als de MQTT verbinding verbroken wordt met een node, het NDEATH -bericht is ook het `last will' bericht van een node. Maar als het echt fout gaat -dan zal er mogenlijk nooit een NDEATH bericht gezien worden. -NCMD is een commando bestemd voor een node. -Dit kan bijvoorbeeld een reboot commando zijn. -DBIRTH is een of meer berichten van een apparaat wat online komt -en ingeschakeld is. Een apparaat is een deel van een node. -Bij het opstarten van de node is er geen device_id -omdat alle apparaten is een keer verstuurd worden. Indien er later een enkel apparaat -ingeschakeld wordt dan is er wel een geldige device_id aanwezig. -Hier ook weer, er is een payload bij opstarten en geen payload bij afsluiten om het -persistente bericht goed te houden. -DDATA heeft altijd een payload, maar deze hoeft niet volledig te zijn, -enkel de gewijzigde data moet in het bericht zitten. -DDEATH wordt verstuurd als een node offline gaat, of als het apparaat -uitgeschakelt wordt. -DLOG is een data log. Hier bestaat de payload uit gegevens die de -bms applicatie in de database zet. -DCMD is een commando voor een apparaat wat op een node geinstalleerd is. -Dit zullen voornamelijk instellingen voor dat enkele apparaat zijn. - - - - - - -Netwerk payload formaat voor een node - -De payload zoals die door een node verstuurd wordt. Het wordt in json formaat -verzonder zonder extra spaties en opmaak zoals hieronder is te zien. Het timestamp -is de unix tijd sinds 1 januari 1970. Het `seq' nummer wordt met ieder bericht met 1 -verhoogd. - - -{ - "timestamp": 1532201089, - "seq": 0, - "metric": { - "uuid": "b508f01c-1f82-4e8b-b0d2-d88ecfb53031", - "properties": { - "hardwaremake": "Raspberry", - "hardwaremodel": "Unknown", - "os": "Linux", - "os_version": "4.1.19+", - "FW": "0.8.2" - }, - "THB": { - "temperature": 20.0, - "humidity": 50.0, - "barometer": 1002 - }, - "GPS": { - "latitude": 1.2345, - "longitude": 2.3456, - "altitude": 20 - }, - "net": { - "address": "10.126.151.11", - "ifname": "eth0", - "rssi": 0 - } - } -} - - - - -Netwerk kommando payload formaat voor nodes. -De volgende kommando's kunnen gestuurd worden naar nodes: - -{ - "timestamp":1532201089, - "metric": { - "Node Control/Reboot":true - } -} - -Dit commando reboot niet de computer maar de applicatie die op een -computer zoals een Raspberry Pi geinstalleerd is. Een uitzondering zijn de -controllers zoals Arduino's en andere eenvoudige systemen. - -{ - "timestamp":1532201089, - "metric": { - "Node Control/Rebirth":true - } -} - -Dit commando zorgt er voor dat alle NBIRTH en DBIRTH berichten opnieuw -verzonden worden alsof de computer net is opgestart. Dit kan nuttig zijn na -een herstart van de bms applicatie zelf zodat de juiste nodes informatie weer -beschikbaar is. - - - -Netwerk payload data formaat voor vergisting controllers - -Dit is het meest uitgebreide formaat wat getoond is. Indien er bijvoorbeeld geen -chiller aanwezig is, dan wordt een `null' gestuurd in plaats van een json blok -met gegevens. De werkelijke uitvoering van de hardware en de configuratie daarvan -bepaald dus het uiteindelijke payload formaat. - - -{ - "uuid": "48c9ae27-3f58-41c9-ae4b-1d57b249c45a", - "alias": "unit1", - "product": { - "uuid": "1eb0c7bf-bf06-491c-a086-ac5478d521b9", - "code": "CB0001", - "name": "Hoppy Housebeer" - }, - "air": { - "address": "70d60411-3ec8-40ab-998a-81fead83025f", - "state": "OK", - "temperature": 21.562 - }, - "beer": { - "address": "8ec36f9d-f382-4e32-a47f-732642e1018d", - "state": "OK", - "temperature": 22.125 - }, - "chiller": { - "address": "e81265b8-07f7-4b22-96c1-6f55a4b66a83", - "state": "OK", - "temperature": 12.437 - }, - "heater": { - "address": "d2f2d6bc-4d12-4852-9462-95f4c2476034", - "state": 0, - "usage": 10710793 - }, - "cooler": { - "address": "a9f30140-812c-4ec1-9e98-3a9d47deff7c", - "state": 0, - "usage": 920504 - }, - "fan": { - "address": "ae9f9887-8209-4810-9f58-ddfb34ee142f", - "state": 100, - "usage": 62889739 - }, - "light": { - "address": "cc6353cf-9c97-41b9-b6cf-00cea312e478", - "state": 0, - "usage": 29647290 - }, - "door": { - "address": "ad8746d1-0549-485a-a215-41e5cdde9e75", - "state": 1 - }, - "psu": { - "address": "e1bb7182-883d-4977-a1c0-76e214072fc5", - "state": 1 - }, - "stage": "PRIMARY", - "mode": "BEER", - "setpoint": { - "low": 21.0, - "high": 21.0 - }, - "webcam": { - "url":"https://the.webcamserver.com:8090/?action=stream", - "light": 1 - }, - "alarm": 0, - "profile": { - "uuid": "c93ad1bb-0446-4788-9c43-83990c5f8b82", - "name": "Witbier methode Cellis", - "state": "OFF", - "percent": 0, - "inittemp": { - "low": 17.9, - "high": 18.1 - }, - "fridgemode": 0, - "steps": [ - { - "resttime": 2, - "steptime": 0, - "target": { - "low": 18.0, - "high": 18.0 - }, - "fridgemode": 0 - }, - { - "resttime": 0, - "steptime": 24, - "target": { - "low": 18.0, - "high": 22.0 - }, - "fridgemode": 0 - }, - { - "resttime": 48, - "steptime": 96, - "target": { - "low": 26.0, - "high": 26.0 - }, - "fridgemode": 0 - } - ] - } -} - -Temperature states can be: OK, MISSING or ERROR. -The general `mode' can be: OFF, NONE, FRIDGE, BEER or PROFILE. -The profile `state' can be: OFF, PAUSE, RUN, DONE or ABORT. - - - - -Netwerk payload log formaat voor vergisting controllers - -Dit is het meest uitgebreide formaat wat getoond is. Indien er bijvoorbeeld geen -chiller aanwezig is, dan wordt geen data hiervoor verstuurd. -De werkelijke uitvoering van de hardware en de configuratie daarvan -bepaald dus het uiteindelijke payload formaat. - - -{ - "timestamp": 1532201089, - "seq": 0, - "metric": { - "product": { - "uuid": "1eb0c7bf-bf06-491c-a086-ac5478d521b9", - "code": "CB0001", - "name": "Hoppy Housebeer" - }, - "stage": "PRIMARY", - "mode": "BEER", - "temperature": { - "air": 20.125, - "beer": 20.062, - "chiller": -3.000, - "room": 20.1 - }, - "setpoint": { - "low": 19.8, - "high": 20.1 - }, - "heater": { - "power": 100, - "usage": 1234 - }, - "cooler": { - "power": 0, - "usage": 27273 - }, - "fan": { - "power": 100, - "usage": 8273772 - }, - "sg": 1.023, - "event": "Something to mark", - "fermenter_uuid": "48c9ae27-3f58-41c9-ae4b-1d57b249c45a" - } -} - - -De ontvangen vergisting log gegevens worden niet opgeslagen in de SQL database -maar in platte tekst bestanden. Hierdoor is de gelogde informatie sneller toegankelijk. -Ieder brouw product heeft zijn eigen bestand. -De bestanden staan in www/logs/fermentation/. -De bestandsnamen zijn product_code\ product_name.log. -Het interne formaat is: - - 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 werkwijze ---------+ | | | | | | | | | | | | | - 2 vergisting fase ---------+ | | | | | | | | | | | | - 3 temperatuur lucht --------------+ | | | | | | | | | | | - 4 temperatuur bier ----------------------+ | | | | | | | | | | - 5 temperatuur koeler ---------------------------+ | | | | | | | | | - 6 temperatuur ruimte ----------------------------------+ | | | | | | | | - 7 instelwaarde laag ----------------------------------------+ | | | | | | | - 8 instelwaarde hoog ---------------------------------------------+ | | | | | | - 9 verwarming vermogen -----------------------------------------------+ | | | | | -10 verwarming verbruik ---------------------------------------------------+ | | | | -11 koeler vermogen -----------------------------------------------------------+ | | | -12 koeler verbruik ---------------------------------------------------------------+ | | -13 gebeurtenis --------------------------------------------------------------------------+ | -14 vergister uuid --------------------------------------------------------------------------------+ - - - - - diff -r 9f07e2f47ec8 -r 42321bf1bab0 doc/bms-ch4.sgml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doc/bms-ch4.sgml Sun May 12 17:24:07 2019 +0200 @@ -0,0 +1,11 @@ + + + +Inventaris. + +Inventaris tekst. + + + diff -r 9f07e2f47ec8 -r 42321bf1bab0 doc/bms-ch5.sgml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doc/bms-ch5.sgml Sun May 12 17:24:07 2019 +0200 @@ -0,0 +1,11 @@ + + + +Monitoren. + +Monitoren tekst. + + + diff -r 9f07e2f47ec8 -r 42321bf1bab0 doc/bms-ch6.sgml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doc/bms-ch6.sgml Sun May 12 17:24:07 2019 +0200 @@ -0,0 +1,11 @@ + + + +Productie. + +Productie tekst. + + + diff -r 9f07e2f47ec8 -r 42321bf1bab0 doc/bms-ch7.sgml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doc/bms-ch7.sgml Sun May 12 17:24:07 2019 +0200 @@ -0,0 +1,11 @@ + + + +Recepten. + +Recepten tekst. + + + diff -r 9f07e2f47ec8 -r 42321bf1bab0 doc/bms-ch8.sgml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doc/bms-ch8.sgml Sun May 12 17:24:07 2019 +0200 @@ -0,0 +1,342 @@ + + + +Protocollen. + +De netwerk protocollen. + + + +MQTT topic formaat. +De topics zijn als volgt gedefinieerd: + +mbv1.0/group_id/message_type/edge_node/device_id + + + +group_id geeft het type apparaat aan zoals fermenters +en brewcontrol. +message_type geeft het bericht type aan zoals +NBIRTH, DDATA. +edge_node is de hostnaam van de node die het bericht stuurt. Dit is +de naam zonder domain toevoeging. +device_id is de verkorte naam van het apparaat module waarvan dit +bericht komt zoals de naam van een vergisting controller. Dit is niet aanwezig met NODE berichten. + + + +De volgende group_id namen zijn gedefinieerd: + + +brewery is voor de bms applicatie zelf. Nog uitwerken. +fermenters is voor vergisting controllers. +brewcontrol is een brouw controller. Deze controller kan een deel +of geheel brouwproces uitvoeren. +pressure is een drukmeter om bijvoorbeeld hergisting op de fles +te monitoren. + + +De volgende message_type namen zijn gedefinieerd: + +NBIRTH geeft aan wanneer een node opstart en met het netwerk +verbonden is. Dit is een zogenaamd persistent bericht, het blijft voor nieuwe +MQTT clients altijd zichtbaar. Bij het starten van een node wordt er een payload +verzonden, zie het payload formaat voor een node. Als een node afsluit wordt juist geen +payload verzonden zodat het bericht verdwijnt. +NDATA wordt verstuurd als er veranderingen zijn voor de node, +maar ook iedere vijf minuten om aan te geven dat de node nog "levend" en aanwezig +is. +NDEATH wordt verstuurd als een node offline gaat. Maar het kan ook +ontvangen worden als de MQTT verbinding verbroken wordt met een node, het NDEATH +bericht is ook het `last will' bericht van een node. Maar als het echt fout gaat +dan zal er mogenlijk nooit een NDEATH bericht gezien worden. +NCMD is een commando bestemd voor een node. +Dit kan bijvoorbeeld een reboot commando zijn. +DBIRTH is een of meer berichten van een apparaat wat online komt +en ingeschakeld is. Een apparaat is een deel van een node. +Bij het opstarten van de node is er geen device_id +omdat alle apparaten is een keer verstuurd worden. Indien er later een enkel apparaat +ingeschakeld wordt dan is er wel een geldige device_id aanwezig. +Hier ook weer, er is een payload bij opstarten en geen payload bij afsluiten om het +persistente bericht goed te houden. +DDATA heeft altijd een payload, maar deze hoeft niet volledig te zijn, +enkel de gewijzigde data moet in het bericht zitten. +DDEATH wordt verstuurd als een node offline gaat, of als het apparaat +uitgeschakelt wordt. +DLOG is een data log. Hier bestaat de payload uit gegevens die de +bms applicatie in de database zet. +DCMD is een commando voor een apparaat wat op een node geinstalleerd is. +Dit zullen voornamelijk instellingen voor dat enkele apparaat zijn. + + + + + + +Netwerk payload formaat voor een node + +De payload zoals die door een node verstuurd wordt. Het wordt in json formaat +verzonder zonder extra spaties en opmaak zoals hieronder is te zien. Het timestamp +is de unix tijd sinds 1 januari 1970. Het `seq' nummer wordt met ieder bericht met 1 +verhoogd. + + +{ + "timestamp": 1532201089, + "seq": 0, + "metric": { + "uuid": "b508f01c-1f82-4e8b-b0d2-d88ecfb53031", + "properties": { + "hardwaremake": "Raspberry", + "hardwaremodel": "Unknown", + "os": "Linux", + "os_version": "4.1.19+", + "FW": "0.8.2" + }, + "THB": { + "temperature": 20.0, + "humidity": 50.0, + "barometer": 1002 + }, + "GPS": { + "latitude": 1.2345, + "longitude": 2.3456, + "altitude": 20 + }, + "net": { + "address": "10.126.151.11", + "ifname": "eth0", + "rssi": 0 + } + } +} + + + + +Netwerk kommando payload formaat voor nodes. +De volgende kommando's kunnen gestuurd worden naar nodes: + +{ + "timestamp":1532201089, + "metric": { + "Node Control/Reboot":true + } +} + +Dit commando reboot niet de computer maar de applicatie die op een +computer zoals een Raspberry Pi geinstalleerd is. Een uitzondering zijn de +controllers zoals Arduino's en andere eenvoudige systemen. + +{ + "timestamp":1532201089, + "metric": { + "Node Control/Rebirth":true + } +} + +Dit commando zorgt er voor dat alle NBIRTH en DBIRTH berichten opnieuw +verzonden worden alsof de computer net is opgestart. Dit kan nuttig zijn na +een herstart van de bms applicatie zelf zodat de juiste nodes informatie weer +beschikbaar is. + + + +Netwerk payload data formaat voor vergisting controllers + +Dit is het meest uitgebreide formaat wat getoond is. Indien er bijvoorbeeld geen +chiller aanwezig is, dan wordt een `null' gestuurd in plaats van een json blok +met gegevens. De werkelijke uitvoering van de hardware en de configuratie daarvan +bepaald dus het uiteindelijke payload formaat. + + +{ + "uuid": "48c9ae27-3f58-41c9-ae4b-1d57b249c45a", + "alias": "unit1", + "product": { + "uuid": "1eb0c7bf-bf06-491c-a086-ac5478d521b9", + "code": "CB0001", + "name": "Hoppy Housebeer" + }, + "air": { + "address": "70d60411-3ec8-40ab-998a-81fead83025f", + "state": "OK", + "temperature": 21.562 + }, + "beer": { + "address": "8ec36f9d-f382-4e32-a47f-732642e1018d", + "state": "OK", + "temperature": 22.125 + }, + "chiller": { + "address": "e81265b8-07f7-4b22-96c1-6f55a4b66a83", + "state": "OK", + "temperature": 12.437 + }, + "heater": { + "address": "d2f2d6bc-4d12-4852-9462-95f4c2476034", + "state": 0, + "usage": 10710793 + }, + "cooler": { + "address": "a9f30140-812c-4ec1-9e98-3a9d47deff7c", + "state": 0, + "usage": 920504 + }, + "fan": { + "address": "ae9f9887-8209-4810-9f58-ddfb34ee142f", + "state": 100, + "usage": 62889739 + }, + "light": { + "address": "cc6353cf-9c97-41b9-b6cf-00cea312e478", + "state": 0, + "usage": 29647290 + }, + "door": { + "address": "ad8746d1-0549-485a-a215-41e5cdde9e75", + "state": 1 + }, + "psu": { + "address": "e1bb7182-883d-4977-a1c0-76e214072fc5", + "state": 1 + }, + "stage": "PRIMARY", + "mode": "BEER", + "setpoint": { + "low": 21.0, + "high": 21.0 + }, + "webcam": { + "url":"https://the.webcamserver.com:8090/?action=stream", + "light": 1 + }, + "alarm": 0, + "profile": { + "uuid": "c93ad1bb-0446-4788-9c43-83990c5f8b82", + "name": "Witbier methode Cellis", + "state": "OFF", + "percent": 0, + "inittemp": { + "low": 17.9, + "high": 18.1 + }, + "fridgemode": 0, + "steps": [ + { + "resttime": 2, + "steptime": 0, + "target": { + "low": 18.0, + "high": 18.0 + }, + "fridgemode": 0 + }, + { + "resttime": 0, + "steptime": 24, + "target": { + "low": 18.0, + "high": 22.0 + }, + "fridgemode": 0 + }, + { + "resttime": 48, + "steptime": 96, + "target": { + "low": 26.0, + "high": 26.0 + }, + "fridgemode": 0 + } + ] + } +} + +Temperature states can be: OK, MISSING or ERROR. +The general `mode' can be: OFF, NONE, FRIDGE, BEER or PROFILE. +The profile `state' can be: OFF, PAUSE, RUN, DONE or ABORT. + + + + +Netwerk payload log formaat voor vergisting controllers + +Dit is het meest uitgebreide formaat wat getoond is. Indien er bijvoorbeeld geen +chiller aanwezig is, dan wordt geen data hiervoor verstuurd. +De werkelijke uitvoering van de hardware en de configuratie daarvan +bepaald dus het uiteindelijke payload formaat. + + +{ + "timestamp": 1532201089, + "seq": 0, + "metric": { + "product": { + "uuid": "1eb0c7bf-bf06-491c-a086-ac5478d521b9", + "code": "CB0001", + "name": "Hoppy Housebeer" + }, + "stage": "PRIMARY", + "mode": "BEER", + "temperature": { + "air": 20.125, + "beer": 20.062, + "chiller": -3.000, + "room": 20.1 + }, + "setpoint": { + "low": 19.8, + "high": 20.1 + }, + "heater": { + "power": 100, + "usage": 1234 + }, + "cooler": { + "power": 0, + "usage": 27273 + }, + "fan": { + "power": 100, + "usage": 8273772 + }, + "sg": 1.023, + "event": "Something to mark", + "fermenter_uuid": "48c9ae27-3f58-41c9-ae4b-1d57b249c45a" + } +} + + +De ontvangen vergisting log gegevens worden niet opgeslagen in de SQL database +maar in platte tekst bestanden. Hierdoor is de gelogde informatie sneller toegankelijk. +Ieder brouw product heeft zijn eigen bestand. +De bestanden staan in www/logs/fermentation/. +De bestandsnamen zijn product_code\ product_name.log. +Het interne formaat is: + + 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 werkwijze ---------+ | | | | | | | | | | | | | + 2 vergisting fase ---------+ | | | | | | | | | | | | + 3 temperatuur lucht --------------+ | | | | | | | | | | | + 4 temperatuur bier ----------------------+ | | | | | | | | | | + 5 temperatuur koeler ---------------------------+ | | | | | | | | | + 6 temperatuur ruimte ----------------------------------+ | | | | | | | | + 7 instelwaarde laag ----------------------------------------+ | | | | | | | + 8 instelwaarde hoog ---------------------------------------------+ | | | | | | + 9 verwarming vermogen -----------------------------------------------+ | | | | | +10 verwarming verbruik ---------------------------------------------------+ | | | | +11 koeler vermogen -----------------------------------------------------------+ | | | +12 koeler verbruik ---------------------------------------------------------------+ | | +13 gebeurtenis --------------------------------------------------------------------------+ | +14 vergister uuid --------------------------------------------------------------------------------+ + + + + + diff -r 9f07e2f47ec8 -r 42321bf1bab0 doc/bms.sgml --- a/doc/bms.sgml Sun May 12 17:08:58 2019 +0200 +++ b/doc/bms.sgml Sun May 12 17:24:07 2019 +0200 @@ -2,6 +2,11 @@ + + + + + ]> @@ -30,5 +35,10 @@ &chapter1; &chapter2; &chapter3; +&chapter4; +&chapter5; +&chapter6; +&chapter7; +&chapter8;