diff -r 000000000000 -r 033898178630 doc/bms-ch3.sgml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doc/bms-ch3.sgml Sat Aug 04 21:19:15 2018 +0200 @@ -0,0 +1,304 @@ + + + +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. +NCMD uitwerken. +DBIRTH is een of meer berichten van een apparaat wat online komt +en ingeschakeld is. 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 uitwerken. + + + + + + +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 + } +} + +{ + "timestamp":1532201089, + "metric": { + "Node Control/Rebirth":true + } +} + + + + +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 eem `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": { + "code": "CB0063", + "name": "Schot voor de boeg" + }, + "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 + }, + "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" + } +} + + + + +