MQTT: verschil tussen versies

Uit Hackerspace Bitlair

Geen bewerkingssamenvatting
 
(10 tussenliggende versies door 2 gebruikers niet weergegeven)
Regel 1: Regel 1:
{{Project
{{Project
|name=MQTT
|name=MQTT
|start=2016/09/16
|start=2016-09-16
|contact=User:Polyfloyd,
|contact=Polyfloyd
|info=Lijm voor space-events
|info=Lijm voor space-events
|status=Production
|status=Production
|Picture=MQTT-Example.png
}}
}}
[[Category:Infra]]
MQTT is een netwerkprotocol om korte statusberichten heen en weer te schuiven.
MQTT is een netwerkprotocol om korte statusberichten heen en weer te schuiven.
Bitlair gebruikt MQTT als centrale message bus voor sensorberichten en de status van de [[Spacestate]].


== Topics ==
== Topics ==
Regel 18: Regel 22:
* bitlair/state {open,closed}
* bitlair/state {open,closed}
* bitlair/state/djo {open,closed}
* bitlair/state/djo {open,closed}
* bitlair/cam/<cameranaam> <aantal kijkers>
* bitlair/music/<spelernaam>/state {playing,paused,stopped}
* bitlair/music/<spelernaam>/state {playing,paused,stopped}
* bitlair/music/<spelernaam>/volume <volume percentage>
* bitlair/music/<spelernaam>/volume <volume percentage>
* bitlair/wifi/<netwerknaam>¹/online <aantal verbonden clients>
* bitlair/wifi/<netwerknaam>¹/online <aantal verbonden clients>
* bitlair/temperature/<room>/current <huidige temperatuur in celsius>
* bitlair/climate/# <data van diverse sensoren>
* bitlair/temperature/<room>/target <ingestelde temperatuur in celsius>
* bitlair/photos <bestandsnaam van foto's gemaakt met de WIP-cam>
* bitlair/humidity/<room> <luchtvochtigheid in procenten>
* bitlair/pos/product <naam van artikel verkocht via Revbank>
* bitlair/flash
* bitlair/lasercutter/# <stats gerapporteerd door de lasercutter>
* bitlair/test/# ...


¹: "all" is een speciale netwerknaam die de gegevens van de andere netwerken combineert.
¹: "all" is een speciale netwerknaam die de gegevens van de andere netwerken combineert.


=== Privaat: mqtt.bitlair.nl ===
=== Intern: mqtt.bitlair.nl ===
* bitlair/cam/<cameranaam>/viewers <namen van kijkers>...
* bitlair/alarm {armed,disarmed} <alarmcode>
* bitlair/alarm {armed,disarmed} <alarmcode>
* bitlair/lock/<slotnaam> {lock,unlock} <naam> (TODO)
* bitlair/lock/<slotnaam> {lock,unlock} <naam> (TODO)
Regel 40: Regel 41:
== Meekijken ==
== Meekijken ==
* Installeer https://github.com/Juerd/Net-MQTT-Simple
* Installeer https://github.com/Juerd/Net-MQTT-Simple
** <code># cpan Net::MQTT::Simple</code>
* <code>$ mqtt-simple -h mqtt.bitlair.nl --color -s 'bitlair/#'</code>
* <code>$ mqtt-simple -h mqtt.bitlair.nl --color -s 'bitlair/#'</code>
== Grafiekjes ==
De [https://dashboard.bitlair.nl monitoring server] heeft een catch-all die data van sensoren verzamelt.
Laat een sensor data publiceren op <code>bitlair/climate/{locatie}/{eenheid}</code> met iets numerieks als waarde en het komt vanzelf in Prometheus.


== Scripts ==
== Scripts ==
Regel 46: Regel 52:


Het is ook mogelijk om via een EventStream de status bij te houden:
Het is ook mogelijk om via een EventStream de status bij te houden:
<pre>
<syntaxhighlight lang="js">
var s = new EventSource('https://bitlair.nl/mqtt?bitlair/%23=bitlair');
var s = new EventSource('https://bitlair.nl/mqtt?bitlair/%23=bitlair');
s.addEventListener('bitlair', function (e) {
s.addEventListener('bitlair', function (e) {
Regel 55: Regel 61:
console.log(topic, value, retain ? 'r' : '_');
console.log(topic, value, retain ? 'r' : '_');
});
});
</pre>
</syntaxhighlight>
Zie ook: https://github.com/Juerd/mqtt2web
Zie ook: https://github.com/Juerd/mqtt2web

Huidige versie van 23 jan 2026 09:36


Project: MQTT
Beschrijving Lijm voor space-events
Start 2016-09-16
Contact Polyfloyd
Status Production

MQTT is een netwerkprotocol om korte statusberichten heen en weer te schuiven.

Bitlair gebruikt MQTT als centrale message bus voor sensorberichten en de status van de Spacestate.

Topics

Vanwege privacyredenen is niet alle informatie op het hele internet beschikbaar. Bitlair's MQTT infra bestaat daarom uit twee servers; een server toegankelijk vanaf het internet en een andere server die alleen binnen het spacenetwerk bereikbaar is waarop naast de normale events ook events worden gepubliceerd die we liever apart houden.

Openbaar: bitlair.nl

  • bitlair/state {open,closed}
  • bitlair/state/djo {open,closed}
  • bitlair/music/<spelernaam>/state {playing,paused,stopped}
  • bitlair/music/<spelernaam>/volume <volume percentage>
  • bitlair/wifi/<netwerknaam>¹/online <aantal verbonden clients>
  • bitlair/climate/#
  • bitlair/photos <bestandsnaam van foto's gemaakt met de WIP-cam>
  • bitlair/pos/product <naam van artikel verkocht via Revbank>
  • bitlair/lasercutter/# <stats gerapporteerd door de lasercutter>

¹: "all" is een speciale netwerknaam die de gegevens van de andere netwerken combineert.

Intern: mqtt.bitlair.nl

  • bitlair/alarm {armed,disarmed} <alarmcode>
  • bitlair/lock/<slotnaam> {lock,unlock} <naam> (TODO)
  • bitlair/music/<spelernaam>/track <artist> - <title>
  • bitlair/wifi/<netwerknaam> {join,part} <mac> -|<signaalsterkte>
  • bitlair/doorbell

Meekijken

Grafiekjes

De monitoring server heeft een catch-all die data van sensoren verzamelt. Laat een sensor data publiceren op bitlair/climate/{locatie}/{eenheid} met iets numerieks als waarde en het komt vanzelf in Prometheus.

Scripts

Voor scripts in gebruik en voorbeelden, zie: https://github.com/bitlair/mqtt-scripts

Het is ook mogelijk om via een EventStream de status bij te houden:

var s = new EventSource('https://bitlair.nl/mqtt?bitlair/%23=bitlair');
s.addEventListener('bitlair', function (e) {
	var json = JSON.parse(e.data);
	var topic  = json[0];
	var value  = json[1];
	var retain = json[2];
	console.log(topic, value, retain ? 'r' : '_');
});

Zie ook: https://github.com/Juerd/mqtt2web