MQTT: Difference between revisions
(knmi2mqtt) |
|||
(11 intermediate revisions by 3 users not shown) | |||
Line 18: | Line 18: | ||
; zigbee2mqtt/# | ; zigbee2mqtt/# | ||
: In gebruik voor zigbee2mqtt. Deze dingen spreken een eigen JSON-gebaseerd protocol. Dit topic is read-only voor anonieme users om totale chaos te voorkomen | : In gebruik voor zigbee2mqtt. Deze dingen spreken een eigen JSON-gebaseerd protocol. Dit topic is read-only voor anonieme users om totale chaos te voorkomen | ||
; bambu/# | |||
: Direct gebridged naar de mosquitto broker van de [[Bambu_Lab_X1_Carbon]], gooit een berg JSON op bambu/<ID>/report | |||
=== intern: ledbanner === | === intern: ledbanner === | ||
Line 39: | Line 41: | ||
{|class=wikitable | {|class=wikitable | ||
! topic !! publishers/subscribers !! omschrijving | ! topic !! publishers/subscribers !! omschrijving | ||
|- | |||
| revspace/telefoon || pub: [[Telefoon2.0]] (revphone.flimpie.net)<br>sub: [[ledbanner]] || kondigt telefoonnummer aan van beller naar de spacetelefoon, altijd icm cam4-censuur | |||
|- | |||
| revspace/bambu/+ || pub: f0x@gateway:bambu-mqtt/ || Specifieke data van de [[Bambu_Lab_X1_Carbon]]: name, gcode_state, layer, layer_total, progress, remaining | |||
|- | |- | ||
| revspace/bank/+ || pub: bar@gateway:plugins/revspace_mqtt || verkoopteller per revbank product_id | | revspace/bank/+ || pub: bar@gateway:plugins/revspace_mqtt || verkoopteller per revbank product_id | ||
|- | |- | ||
| revspace/button/doorbell || pub: deurbel-esp op basis van 24V AC input<br>sub: mqtt2irc@gateway, [[ledspace]], [[ledbanner]] || | | revspace/button/doorbell || pub: deurbel-esp op basis van 24V AC input<br>sub: mqtt2irc@gateway, [[ledspace]], [[ledbanner]] || deurbel bij gagaredeur | ||
|- | |- | ||
| revspace/button/nomz || pub: nomzknop-esp's<br>sub: mqtt2irc@gateway, [[ledspace]], [[ledbanner]] || aan tafel! | | revspace/button/nomz || pub: nomzknop-esp's<br>sub: mqtt2irc@gateway, [[ledspace]], [[ledbanner]] || aan tafel! | ||
Line 66: | Line 72: | ||
| revspace/lichtgordijn || pub: lichtgordijn<br>sub: mqtt2irc@gateway || bewegingsdetectie bij garagedeur | | revspace/lichtgordijn || pub: lichtgordijn<br>sub: mqtt2irc@gateway || bewegingsdetectie bij garagedeur | ||
|- | |- | ||
| revspace/lightstate/+ || pub: [https://github.com/revspace/lichtknop diverse esp's] <br>sub: power-mqtt@gateway:powerconverter || of het licht aan staat, "on"/"off" | | revspace/lightstate/+ || pub: [https://github.com/revspace/lichtknop diverse esp's] <br>sub: power-mqtt@gateway:powerconverter, licht-mqtt@gateway || of het licht aan staat, "on"/"off" | ||
|- | |||
| revspace/lightstate/hoofdruimte_{bar,tv}/set || pub: licht-mqtt@gateway<br>sub: esp bij lichtsysteem || zet licht aan/uit | |||
|- | |||
| revspace/lightstate/minderlicht + /set || psub: licht-mqtt@gateway<br>spub: zigbee-minderlicht@gateway || ledlamp hoofdruimte | |||
|- | |- | ||
| revspace/n_max || pub: juerd@gateway:static_max_n.pl (cron) <br>sub: [[vollamp]], pi@doorduino:max_n || huidig maximum aantal toegestane mensen op de space | | revspace/n_max || pub: juerd@gateway:static_max_n.pl (cron) <br>sub: [[vollamp]], pi@doorduino:max_n || huidig maximum aantal toegestane mensen op de space | ||
Line 83: | Line 93: | ||
|- | |- | ||
| revspace/sensors/humidity || pub: [[CO2MeterHacking]] || luchtvochtigheid hoofdruimte | | revspace/sensors/humidity || pub: [[CO2MeterHacking]] || luchtvochtigheid hoofdruimte | ||
|- | |||
| revspace/sensors/knmi/# || pub: [https://github.com/revspace/knmi2mqtt/ knmi2mqtt]@shell-bookworm:peetz0r || Temperatuur en luchtvochtigheid van 3 weerstations in de buurt | |||
|- | |- | ||
| revspace/sensors/netvuil/peak, peak_time || pub: ? || | | revspace/sensors/netvuil/peak, peak_time || pub: ? || | ||
|- | |- | ||
| revspace/sensors/power/# || pub: power-mqtt@gateway:powerconverter || re-published data op basis van shellies/# en revspace/lightstate/+ | | revspace/sensors/power/# || pub: power-mqtt@gateway:powerconverter || re-published data op basis van shellies/# en revspace/lightstate/+ | ||
|- | |||
| revspace/sensors/pir/+ || pub: zigbee-alarm@gateway<br>sub: mqtt2irc@gateway || bewegingssensors | |||
|- | |- | ||
| revspace/sensors/snuffelaar/+/# || pub: div. [[snuffelaar]] || luchtkwaliteit in div. ruimtes, soms ook CO2 | | revspace/sensors/snuffelaar/+/# || pub: div. [[snuffelaar]] || luchtkwaliteit in div. ruimtes, soms ook CO2 | ||
Line 94: | Line 108: | ||
| revspace/sensors/temperature || pub: [[CO2MeterHacking]] || temperatuur hoofdruimte | | revspace/sensors/temperature || pub: [[CO2MeterHacking]] || temperatuur hoofdruimte | ||
|- | |- | ||
| revspace | | revspace/state || pub: spaceloop@gateway:slmonitor<br>sub: heel erg veel || of de space open of dicht is; scriptje monitort seriële output van arduino die spanning van de [[space state|schakelaar]] krijgt. | ||
|- | |- | ||
| revspace | | revspace/weather/clouds, code || pub: ? || | ||
|- | |- | ||
| revspace/wifi/# || pub: ? || wifi-statistieken | | revspace/wifi/# || pub: ? || wifi-statistieken | ||
Line 116: | Line 130: | ||
| revspace-local/doorduino/+/unlocked || pub: pi@[[doorduino]]:granted.d<br>sub: doorduino-mqtt@gateway || topic bevat naam van deur, bericht bevat nickname | | revspace-local/doorduino/+/unlocked || pub: pi@[[doorduino]]:granted.d<br>sub: doorduino-mqtt@gateway || topic bevat naam van deur, bericht bevat nickname | ||
|- | |- | ||
| revspace-local/ledbanner/doorduino || pub: doorduino-mqtt@gateway<br>sub: [[ledbanner]] | | revspace-local/ledbanner/doorduino || pub: doorduino-mqtt@gateway<br>sub: [[ledbanner]], constatus@pov || net als revspace/doorduino, maar dan zonder pseudonimisatie, en met opt-in-aanduiding | ||
|- | |- | ||
| revspace-local/ledbanner/cam4overlay || pub: [[ledbanner]]<br>sub: constatus@pov || activeert overlay op cam4 om ledbanner af te dekken bij doorduinomelding van iemand zonder opt-in | | revspace-local/ledbanner/cam4overlay || pub: [[ledbanner]]<br>sub: constatus@pov || activeert overlay op cam4 om ledbanner af te dekken bij doorduinomelding van iemand zonder opt-in | ||
|- | |||
| revspace-local/spacevredebreuk/# || pub: zigbee-alarm@gateway<br>sub: ledbanner, ledspace, mediaplayer || [[alarm]] | |||
|- | |- | ||
| shellies/# || pub: [[elektra|Shelly 3EM]]<br>sub: power-mqtt@revgateway:powerconverter || rauwe data van shelly device(s) | | shellies/# || pub: [[elektra|Shelly 3EM]]<br>sub: power-mqtt@revgateway:powerconverter || rauwe data van shelly device(s) | ||
Line 131: | Line 147: | ||
https://revspace.nl/maquette/ | https://revspace.nl/maquette/ | ||
== | == How to == | ||
To receive/subscribe to these messages, install mqtt-simple using "cpan Net::MQTT::Simple" or "yum install perl-Net-MQTT-Simple", or download mosquitto-clients, or another MQTT library and write your own client. | To receive/subscribe to these messages, install mqtt-simple using "cpan Net::MQTT::Simple" or "yum install perl-Net-MQTT-Simple", or download mosquitto-clients, or another MQTT library and write your own client. | ||
Line 166: | Line 153: | ||
For mosquitto-clients, use: | For mosquitto-clients, use: | ||
(public server) | (public server) | ||
mqtt-simple -h | mqtt-simple -h revspace.nl -s "revspace/#" | ||
# Alternatively: mosquitto_sub -h | # Alternatively: mosquitto_sub -h revspace.nl -t "revspace/#" -v | ||
or: | or: | ||
(revspace internal or ipv6 server) | (revspace internal or ipv6 server) | ||
mqtt-simple -h mosquitto.space.revspace.nl -s "revspace/#" | mqtt-simple -h mosquitto.space.revspace.nl -s "revspace/#" | ||
# Alternatively: mosquitto_sub -h mosquitto.space.revspace.nl -t "revspace/#" -v | # Alternatively: mosquitto_sub -h mosquitto.space.revspace.nl -t "revspace/#" -v | ||
== Server Side Events == | == Server Side Events == | ||
Line 192: | Line 175: | ||
* The music related events come from '/home/bar/squeezen/now-playing.pl' running as 'spaceloop' on gateway (klopt dit nog?) | * The music related events come from '/home/bar/squeezen/now-playing.pl' running as 'spaceloop' on gateway (klopt dit nog?) | ||
* The spacestate messages come from 'slmonitor', running as 'spaceloop' on gateway | * The spacestate messages come from 'slmonitor', running as 'spaceloop' on gateway | ||
* The KNMI weather data comes from '[https://github.com/revspace/knmi2mqtt/ knmi2mqtt]', running as peetz0r on shell-bookworm |
Latest revision as of 18:16, 24 May 2024
Brokers
In MQTT-land heet een server een "broker" en een verbinding tussen twee servers heet een "bridge". We gebruiken 4 brokers (allemaal mosquitto) met daartussen bridges:
intern: mosquitto.space.revspace.nl (op gateway)
Op de server gateway draait de primaire broker. Alle payloads worden hierop gepublisht, en dan met uitgaande en inkomende bridge-verbindingen met brokers gedeeld. Vrijwel alle scripts zouden deze server moeten gebruiken, zowel voor subscriben als voor publishen.
Toegestane topics zijn:
- revspace/#
- Vergaarbak van allerhande sensors, knopjes, etc. Alles binnen dit topic wordt via de bridges gedeeld met brokers binnen en buiten het RevSpace-LAN.
- revspace-local/#
- Dingen die lokaal moeten blijven ivm privacy. Alles binnen dit topic wordt via de bridges gedeeld met brokers binnen het RevSpace-LAN.
- shellies/#
- In apparaatjes van het merk Shelly dit helaas hardcoded. We gebruiken scripts om de data te boetseren en te her-publishen naar handigere dingen onder revspace/#.
- revdebug/#, zandbak/#
- Bruikbaar voor debugdumps en projecten in test- of aanklootfase
- zigbee2mqtt/#
- In gebruik voor zigbee2mqtt. Deze dingen spreken een eigen JSON-gebaseerd protocol. Dit topic is read-only voor anonieme users om totale chaos te voorkomen
- bambu/#
- Direct gebridged naar de mosquitto broker van de Bambu_Lab_X1_Carbon, gooit een berg JSON op bambu/<ID>/report
intern: ledbanner
De mosquitto op ledbanner maakt een enkele uitgaande bridge-verbinding naar gateway, zodat alle scripts op de Raspberry Pi gewoon met localhost kunnen verbinden. Dat gaat sneller en werkt ook als de ledbanner op reis is (gebeurt vrijwel niet meer) en dus niet in het RevSpace-LAN zit.
extern: revspace.nl
Krijgt een inkomende verbinding vanaf gateway en geeft openbaar readonly toegang op revspace/# zodat iedereen kan meegenieten. Draait ook mqtt2web voor wat dynamische aanduidingen op de wiki.
extern: test.mosquitto.org
Krijgt een inkomende verbinding vanaf gateway en geeft ook toegang op revspace/#, omdat het kan. Er is geen enkele zinnige reden om dit te doen, anders dan bijdragen aan de continue praktijktest van het mosquitto-project. Voor extern uitlezen van onze sensors e.d. kun je beter niet deze server gebruiken, hoewel het voor een totaal yoloding met een heleboel baggerdata erop een verbazingwekkend goede uptime heeft.
Topics
Subscribers alleen vermelden als het voor spacegebruik relevant is. Grafiekjes kunnen hier worden weggelaten.
Deze lijst is incompleet; graag aanvullen :)
topic | publishers/subscribers | omschrijving |
---|---|---|
revspace/telefoon | pub: Telefoon2.0 (revphone.flimpie.net) sub: ledbanner |
kondigt telefoonnummer aan van beller naar de spacetelefoon, altijd icm cam4-censuur |
revspace/bambu/+ | pub: f0x@gateway:bambu-mqtt/ | Specifieke data van de Bambu_Lab_X1_Carbon: name, gcode_state, layer, layer_total, progress, remaining |
revspace/bank/+ | pub: bar@gateway:plugins/revspace_mqtt | verkoopteller per revbank product_id |
revspace/button/doorbell | pub: deurbel-esp op basis van 24V AC input sub: mqtt2irc@gateway, ledspace, ledbanner |
deurbel bij gagaredeur |
revspace/button/nomz | pub: nomzknop-esp's sub: mqtt2irc@gateway, ledspace, ledbanner |
aan tafel! |
revspace/button/skip, stop, shuffle, vol_up, vol_down | pub: skipknop sub: ? |
afstandbediening voor muzieksysteem |
revspace/cams | pub: count-mqtt@pov sub: ledspace |
spatiegescheiden aantal kijkers, [0] is totaal, [1] is cam1, etc. |
revspace/doorduino | pub: doorduino-mqtt@gateway sub: mqtt2irc@gateway |
"$deur unlocked by $naam"-berichten, gepseudonimiseerd waar nodig. NB: ledbanner gebruikt een andere! |
revspace/doorduino/checked-in | pub: doorduino-mqtt@gateway sub: mqtt2irc@gateway, revfan, extradoei, doorduino, vollamp |
aantal ingecheckte mensen |
revspace/doorduino/count, count-since, last, unique | pub: doorduino-mqtt@gateway | |
revspace/fan | pub: revfan | of de fan vindt dat ie aanstaat |
revspace/flipdot | pub: doorduino-mqtt@gateway sub: flipdot |
flipdot laat zien wat je hier publisht |
revspace/intakefan/state | pub: intakefancontroller | of de fan vindt dat ie aanstaat |
revspace/lasercutter | pub: lasercutter-pc sub: |
of de lasercutter aanstaat (wordt dit nog gebruikt?) |
revspace/lichtgordijn | pub: lichtgordijn sub: mqtt2irc@gateway |
bewegingsdetectie bij garagedeur |
revspace/lightstate/+ | pub: diverse esp's sub: power-mqtt@gateway:powerconverter, licht-mqtt@gateway |
of het licht aan staat, "on"/"off" |
revspace/lightstate/hoofdruimte_{bar,tv}/set | pub: licht-mqtt@gateway sub: esp bij lichtsysteem |
zet licht aan/uit |
revspace/lightstate/minderlicht + /set | psub: licht-mqtt@gateway spub: zigbee-minderlicht@gateway |
ledlamp hoofdruimte |
revspace/n_max | pub: juerd@gateway:static_max_n.pl (cron) sub: vollamp, pi@doorduino:max_n |
huidig maximum aantal toegestane mensen op de space |
revspace/photo | pub: photos2mqtt@mediaserver sub: mqtt2irc@gateway |
URL van nieuwste kiekje |
revspace/sensors/ac/frequency | pub: ? | ongeveer 50 Hz |
revspace/sensors/bliksem/+/bliksem, status | pub: bliksem | bliksemdetectie |
revspace/sensors/co2/+ | pub: diverse esp's, operames | CO2-concentratie div. ruimtes |
revspace/sensors/co2 | pub: CO2MeterHacking sub: revfan |
CO2-concentratie hoofdruimte volgens de oude voltcraftmeter |
revspace/sensors/geiger | pub: geigercounter | aantal geigers per minuut :P |
revspace/sensors/humidity | pub: CO2MeterHacking | luchtvochtigheid hoofdruimte |
revspace/sensors/knmi/# | pub: knmi2mqtt@shell-bookworm:peetz0r | Temperatuur en luchtvochtigheid van 3 weerstations in de buurt |
revspace/sensors/netvuil/peak, peak_time | pub: ? | |
revspace/sensors/power/# | pub: power-mqtt@gateway:powerconverter | re-published data op basis van shellies/# en revspace/lightstate/+ |
revspace/sensors/pir/+ | pub: zigbee-alarm@gateway sub: mqtt2irc@gateway |
bewegingssensors |
revspace/sensors/snuffelaar/+/# | pub: div. snuffelaar | luchtkwaliteit in div. ruimtes, soms ook CO2 |
revspace/sensors/temperature/+/+ | pub: spaceloop | temperatuur, veelal op onhandige plaatsen gemeten |
revspace/sensors/temperature | pub: CO2MeterHacking | temperatuur hoofdruimte |
revspace/state | pub: spaceloop@gateway:slmonitor sub: heel erg veel |
of de space open of dicht is; scriptje monitort seriële output van arduino die spanning van de schakelaar krijgt. |
revspace/weather/clouds, code | pub: ? | |
revspace/wifi/# | pub: ? | wifi-statistieken |
revspace-local/doorduino/checked-in | pub: doorduino-mqtt@gateway sub: pi@doorduino:max_n |
spatiegescheiden nicknames, met evt diverse prefixes |
revspace-local/doorduino-checked-in/unixtime | pub: doorduino-mqtt@gateway sub: doei |
spatiegescheiden afgewisseld nickname en tijdstip van inchecken |
revspace-local/doorduino/autodoei/unlocked | pub: doorduino-mqtt@gateway | bericht bevat nickname |
revspace-local/doorduino/extradoei/+/unlocked | pub: extradoei sub: doorduino-mqtt@gateway |
topic bevat id van extradoei, bericht bevat id van ibutton |
revspace-local/doorduino/extradoei/unlocked | pub: doorduino-mqtt@gateway | bericht bevat nickname |
revspace-local/doorduino/opt-in/unlock | pub: doorduino-mqtt@gateway sub: pi@doorduino:unlock-via-mqtt |
om groen ledje te laten branden |
revspace-local/doorduino/opt-out/unlock | pub: doorduino-mqtt@gateway sub: pi@doorduino:unlock-via-mqtt |
om groen ledje te laten branden |
revspace-local/doorduino/+/unlocked | pub: pi@doorduino:granted.d sub: doorduino-mqtt@gateway |
topic bevat naam van deur, bericht bevat nickname |
revspace-local/ledbanner/doorduino | pub: doorduino-mqtt@gateway sub: ledbanner, constatus@pov |
net als revspace/doorduino, maar dan zonder pseudonimisatie, en met opt-in-aanduiding |
revspace-local/ledbanner/cam4overlay | pub: ledbanner sub: constatus@pov |
activeert overlay op cam4 om ledbanner af te dekken bij doorduinomelding van iemand zonder opt-in |
revspace-local/spacevredebreuk/# | pub: zigbee-alarm@gateway sub: ledbanner, ledspace, mediaplayer |
alarm |
shellies/# | pub: Shelly 3EM sub: power-mqtt@revgateway:powerconverter |
rauwe data van shelly device(s) |
zigbee2mqtt/# | pub: zigbee2mqtt raspberry pi sub: zigbee@revgateway:trv-guard |
o.a. verwarming |
zigbee2mqtt/#/set | pub: zigbee@revgateway:trv-setpoint | o.a. verwarming |
Live sensortjes gluren
How to
To receive/subscribe to these messages, install mqtt-simple using "cpan Net::MQTT::Simple" or "yum install perl-Net-MQTT-Simple", or download mosquitto-clients, or another MQTT library and write your own client.
For mosquitto-clients, use:
(public server) mqtt-simple -h revspace.nl -s "revspace/#" # Alternatively: mosquitto_sub -h revspace.nl -t "revspace/#" -v
or:
(revspace internal or ipv6 server) mqtt-simple -h mosquitto.space.revspace.nl -s "revspace/#" # Alternatively: mosquitto_sub -h mosquitto.space.revspace.nl -t "revspace/#" -v
Server Side Events
JavaScript example, see for example https://bewaar.me/mqtt/#
var stream = new EventSource('https://revspace.nl/mqtt?revspace%2F%23='); stream.onmessage = function(e) { var data = JSON.parse(e.data); if (data.length !== 3) throw 'invalid data'; }
Scripts
- The power monitoring script is 'powerconverter' and runs as 'power-mqtt' user on gateway
- The music related events come from '/home/bar/squeezen/now-playing.pl' running as 'spaceloop' on gateway (klopt dit nog?)
- The spacestate messages come from 'slmonitor', running as 'spaceloop' on gateway
- The KNMI weather data comes from 'knmi2mqtt', running as peetz0r on shell-bookworm