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 --------------------------------------------------------------------------------+ - - - - -