This wiki has been archived and made read-only.
For up-to-date information about TkkrLab and it's projects please visit our main website at tkkrlab.nl.

Difference between revisions of "MQTT"

From

Jump to: navigation, search
(Indeling tkkrlab/tv)
 
(25 intermediate revisions by 6 users not shown)
Line 1: Line 1:
Topic opbouw:
+
=Server=
 +
mrmeeseeks.tkkrlab (10.42.1.2)
 +
 
 +
=Topic opbouw=
 
tkkrlab/# -> Voor Tkkrlab / Space berichten
 
tkkrlab/# -> Voor Tkkrlab / Space berichten
 
<nickname>/# -> Voor je eigen creaties
 
<nickname>/# -> Voor je eigen creaties
Line 5: Line 8:
 
Gebruik alleen je eigen nickname als begin van je topics!
 
Gebruik alleen je eigen nickname als begin van je topics!
  
Indeling van tkkrlab topic:
+
Luisteren naar pakketjes:
* tkkrlab/sensor/# -> Sensoren in de space
+
  mosquitto_sub -h mrmeeseeks.tkkrlab -t "tkkrlab/#" -v
* tkkrlab/actuator/# -> Relais / Lampen / Andere actuatoren in de space
+
 
* tkkrlab/bar/# -> Stats gepubliceerd door de bar
+
Sturen van pakketjes:
 +
  mosquitto_pub -h mrmeeseeks.tkkrlab -t "tkkrlab/#" -m "message"
 +
( of mosquitto_pub -h 10.42.1.2 -t "tkkrlab/#" -m "message" )
 +
 
 +
Bijvoorbeeld, om de TV aan te zetten op de VGA ingang:
 +
    mosquitto_pub -h mrmeeseeks.tkkrlab -t "tkkrlab/tv/mode" -m "VGA"
 +
 
 +
==Topics==
 
* tkkrlab/powermanagement/# -> Wake-on-lan verzoeken
 
* tkkrlab/powermanagement/# -> Wake-on-lan verzoeken
 +
* tkkrlab/spacestate (retained) -> Space status: geeft aan of de space open of dicht is. Values: 1 (open) of 0 (dicht)
 +
* tkkrlab/ledmatrix -> Voor zenden berichten naar de ledmatrix
 +
* tkkrlab/meterkast/# -> Meterkast
 +
* tkkrlab/sonoff/# -> Sonoff relay modules
 +
* tkkrlab/composite/channel -> composite channel selectie (switchen van console op de tv)
 +
 +
==Indeling tkkrlab/powermanagement topic==
  
Indeling tkkrlab/powermanagement topic:
 
 
Het publiceren van een bericht naar tkkrlab/powermanagement/<hostname> schakelt een computer in de space in of uit.
 
Het publiceren van een bericht naar tkkrlab/powermanagement/<hostname> schakelt een computer in de space in of uit.
 +
 
Toegestane values: 1 (on) en 0 (off). Als de staat van de machine niet overeen komt met het laatst ontvangen bericht dan reageert het systeem door de computer te starten met wake-on-lan of af te sluiten via een systeemservice op de machine zelf.
 
Toegestane values: 1 (on) en 0 (off). Als de staat van de machine niet overeen komt met het laatst ontvangen bericht dan reageert het systeem door de computer te starten met wake-on-lan of af te sluiten via een systeemservice op de machine zelf.
 +
 
  -> Let op: maak berichten in dit topic nooit persistent!
 
  -> Let op: maak berichten in dit topic nooit persistent!
  
Indeling van tkkrlab/sensor topic:
+
==Indeling tkkrlab/spacestate topic==
tkkrlab/sensor/<device>/<sensor> bevat de value voor een sensor.
+
Op dit topic ALLEEN LEZEN! De centrale (node-red) applicatie stuurt als enige berichten op dit topic.
Op dit moment bestaan de volgende sensoren:
+
Mogelijke waarden: 1 (open) of 0 (dicht)
  * tkkrlab/meterkast/kwh1 -> KWh meter 1: periodiek bericht met aantal pulsen sinds laatste bericht
+
 
  * tkkrlab/meterkast/kwh2 -> KWh meter 2: periodiek bericht met aantal pulsen sinds laatste bericht
+
==Indeling tkkrlab/ledmatrix topic==
  * tkkrlab/meterkast/kwh3 -> KWh meter 3: periodiek bericht met aantal pulsen sinds laatste bericht
+
Mogelijkheid 1: Stuur een string naar het topic, de string verschijnt dan als bericht op de ledmatrix
  * tkkrlab/meterkast/spaceknop -> Space status schakelaar (persistent): values: 1 (aan) of 0 (uit)
+
Mogelijkheid 2: Stuur een JSON encoded string naar het topic, de matrix decodeert het bericht dan
 +
 
 +
JSON velden:
 +
- "text": Het bericht
 +
- "color": Kleur, notatie als een hex kleur met 6 cijfers: #FFFFFF
 +
- "bgcolor": Achtergrondkleur
 +
- "clear": Schuift alle bestaande berichten het scherm uit en laat het laatste (nieuwe) bericht als enige staan
 +
- "instantclear": Wist alle berichten zonder animatie en zet het laatste (nieuwe) bericht als enige neer
 +
- "blink": Wanneer dit veld op "1" wordt gezet knippert het bericht
 +
 
 +
==Indeling tkkrlab/amp==
 +
tkkrlab/amp heeft twee nodes waar je de volume en input mode van de versterker kan aanpassen.
 +
 
 +
als je een getal tussen 0 en 100 naar tkkrlab/amp/volume stuurt word het volume aangepast.
 +
 
 +
de amp mode selecteeren is wat moeilijker.
 +
 
 +
je stuurt een getal dat een mask is van wat je wil dat de versterker instaat.
 +
 
 +
het eerste bitje is of de versterker aan of uit staat.
 +
 
 +
tweede bitje selecteerd de tape input 1 op de versterker.
 +
 
 +
derde selecteerd de tape input 2.
 +
 
 +
en het vierde bitje switched tussen CD en AUX
 +
 
 +
dat is namelijk zo gedaan omdat je of CD input kan selecteren of AUX, maar niet beide.
 +
 
 +
wil je bijv de versterker aan zetten en aux selecteren dan stuur je de volgende mask:
 +
 
 +
AMP_POWER | AMP_AUX_CD
 +
<pre>
 +
AMP_POWER = (1 << 0) // Amp Power enable bit
 +
AMP_TAPE1 = (1 << 1)  // Tape 1 enable bit
 +
AMP_TAPE2 = (1 << 2)  // Tape 2 enable bit
 +
AMP_AUX_CD = (1 << 3) // togles between Aux and Cd
 +
</pre>
 +
==Indeling tkkrlab/meterkast topic ==
 +
Uitgangen schakelen: Stuur een bericht met als payload "0" voor uit of "1" voor aan naar "tkkrlab/meterkast/output/<NR>", waarin <NR> vervangen moet worden met een van onderstaande getallen:
 +
- 0: Relay 1 (Soldeertafel)
 +
- 1: Relay 2 (Verlichting)
 +
  - 2: Relay 3 (<NOG NIET GEPLAATST>)
 +
- 3: Relay 4 (Keuken)
 +
- 4: Led in lichtschakelaar
 +
 
 +
Ingangen lezen: Luister naar berichten op het topic "tkkrlab/meterkast/input/<NR>" waarin <NR> vervangen moet worden met een van de onderstaande getallen:
 +
- 0: Space status schakelaar
 +
- 1: Lichtschakelaar
 +
- 2: kWh meter 1
 +
- 3: kWh meter 2
 +
- 4: kWh meter 3
 +
- 5: kWh meter 4
 +
 
 +
Alle inputs sturen een 1 wanneer ze worden geactiveerd en een 0 wanneer ze worden gedeactiveerd. In het geval van de spaceknop ontvang je dus een "1" wanneer de schakelaar van UIT naar AAN gedraaid wordt en een "0" wanneer de schakelaar van AAN naar UIT gedraaid wordt. In het geval van de lichtschakelaar ontvang je een "1" wanneer iemand de knop indrukt en een "0" wanneer iemand de knop loslaat.
 +
 
 +
De kWh meters geven een puls bij iedere gemeten 1/2000 kWh. Omdat het een puls is ontvang je voor iedere puls kort na elkaar een "1" en een "0". De "0" kan worden genegeerd.
 +
 
 +
==Indeling tkkrlab/lights ==
 +
Groep die alle lampen tegelijk aan of uit zet
 +
Parameter: "1" = alle lampen aan, "0" = alle lampen uit
 +
 
 +
 
 +
==Indeling tkkrlab/tv ==
 +
Besturing van de TV:
 +
- "tkkrlab/tv/volume" stelt het audiovolume in, argument is een percentage van "0" (mute) tot en met "100".
 +
  - "tkkrlab/tv/mode" kiest een input.
 +
 
 +
Input opties:
 +
- "off" (TV uit)
 +
- "dvi" (PC bij TV)
 +
- "VGA" (Kabel voor presentaties)
 +
- "ext" (Composite video input: hier zit de Wii op aangesloten)
 +
- "hdcp" (Alternatieve modus voor DVI aansluiting)
 +
- "cvbs" (Component video aansluiting)
 +
- "s-video" (S-video aansluiting)
 +
 
 +
== Composite switch ==
 +
selecteer een composite output via "tkkrlab/composite/channel"
 +
- "0" PlayStation 1
 +
- "1" Xbox 360
 +
- "2" Wii
 +
- "3" Xbox original
 +
 
 +
==Indeling tkkrlab/mpd ==
 +
Besturing van de MPD muziekspeler.
 +
- "tkkrlab/mpd": uitlezen status (play/pause)
 +
  - "tkkrlab/mpd/volume": uitlezen volume (0-100)
 +
- "tkkrlab/mpd/volume/set": instellen volume (0-100)
 +
- "tkkrlab/mpd/cmd": uitvoeren MPD commandos
 +
 
 +
==Indeling tkkrlab/sonoff topic==
 +
* tkkrlab/sonoff/<device>/cmd/POWER -> Lezen en schrijven van status: values: 1 (aan) of 0 (uit)
 +
* tkkrlab/sonoff/<device>/telemetry/LWT -> Status / watchdog
 +
* tkkrlab/sonoff/<device>/telemetry/STATE -> JSON met systeeminfo over node.
 +
 
 +
{"Time":"2017-05-21T21:13:57", "Uptime":1, "Vcc":3.237, "POWER":"1", "Wifi":{"AP":1, "SSID":"www.tkkrlab.nl", "RSSI":78, "APMac":"D8:C7:C8:A7:A8:31"}}
 +
 
 +
= IRC bot =
  
Indeling van tkkrlab/actuator topic:
+
The [[IRC bot]] watches the MQTT server at the tkkrlab/spacestate topic to get space status. It is also possible for ops to use !force_status 0 / !force_status 1 to update the status manually, this will publish a retained message to tkkrlab/spacestate.
* tkkrlab/actuator/relay1 -> Relay 1: values: 1 (aan) of 0 (uit)
+
* tkkrlab/actuator/relay2 -> Relay 2: values: 1 (aan) of 0 (uit)
+
* tkkrlab/actuator/relay3 -> Relay 3: values: 1 (aan) of 0 (uit)
+
* tkkrlab/actuator/relay1cs -> Relay 1 status correctie: values: 1 (aan) of 0 (uit)
+
* tkkrlab/actuator/relay2cs -> Relay 2 status correctie: values: 1 (aan) of 0 (uit)
+
* tkkrlab/actuator/relay3cs -> Relay 3 status correctie: values: 1 (aan) of 0 (uit)
+
(Status correcties kunnen worden gegenereerd dmv spanningsmeters achter de relais of door te kijken naar de kwh meters)
+

Latest revision as of 17:50, 19 May 2018

Server

mrmeeseeks.tkkrlab (10.42.1.2)

Topic opbouw

tkkrlab/# -> Voor Tkkrlab / Space berichten <nickname>/# -> Voor je eigen creaties

Gebruik alleen je eigen nickname als begin van je topics!

Luisteren naar pakketjes:

 mosquitto_sub -h mrmeeseeks.tkkrlab -t "tkkrlab/#" -v

Sturen van pakketjes:

 mosquitto_pub -h mrmeeseeks.tkkrlab -t "tkkrlab/#" -m "message"

( of mosquitto_pub -h 10.42.1.2 -t "tkkrlab/#" -m "message" )

Bijvoorbeeld, om de TV aan te zetten op de VGA ingang:

   mosquitto_pub -h mrmeeseeks.tkkrlab -t "tkkrlab/tv/mode" -m "VGA"

Topics

  • tkkrlab/powermanagement/# -> Wake-on-lan verzoeken
  • tkkrlab/spacestate (retained) -> Space status: geeft aan of de space open of dicht is. Values: 1 (open) of 0 (dicht)
  • tkkrlab/ledmatrix -> Voor zenden berichten naar de ledmatrix
  • tkkrlab/meterkast/# -> Meterkast
  • tkkrlab/sonoff/# -> Sonoff relay modules
  • tkkrlab/composite/channel -> composite channel selectie (switchen van console op de tv)

Indeling tkkrlab/powermanagement topic

Het publiceren van een bericht naar tkkrlab/powermanagement/<hostname> schakelt een computer in de space in of uit.

Toegestane values: 1 (on) en 0 (off). Als de staat van de machine niet overeen komt met het laatst ontvangen bericht dan reageert het systeem door de computer te starten met wake-on-lan of af te sluiten via een systeemservice op de machine zelf.

-> Let op: maak berichten in dit topic nooit persistent!

Indeling tkkrlab/spacestate topic

Op dit topic ALLEEN LEZEN! De centrale (node-red) applicatie stuurt als enige berichten op dit topic. Mogelijke waarden: 1 (open) of 0 (dicht)

Indeling tkkrlab/ledmatrix topic

Mogelijkheid 1: Stuur een string naar het topic, de string verschijnt dan als bericht op de ledmatrix Mogelijkheid 2: Stuur een JSON encoded string naar het topic, de matrix decodeert het bericht dan

JSON velden:

- "text": Het bericht
- "color": Kleur, notatie als een hex kleur met 6 cijfers: #FFFFFF
- "bgcolor": Achtergrondkleur
- "clear": Schuift alle bestaande berichten het scherm uit en laat het laatste (nieuwe) bericht als enige staan
- "instantclear": Wist alle berichten zonder animatie en zet het laatste (nieuwe) bericht als enige neer
- "blink": Wanneer dit veld op "1" wordt gezet knippert het bericht

Indeling tkkrlab/amp

tkkrlab/amp heeft twee nodes waar je de volume en input mode van de versterker kan aanpassen.

als je een getal tussen 0 en 100 naar tkkrlab/amp/volume stuurt word het volume aangepast.

de amp mode selecteeren is wat moeilijker.

je stuurt een getal dat een mask is van wat je wil dat de versterker instaat.

het eerste bitje is of de versterker aan of uit staat.

tweede bitje selecteerd de tape input 1 op de versterker.

derde selecteerd de tape input 2.

en het vierde bitje switched tussen CD en AUX

dat is namelijk zo gedaan omdat je of CD input kan selecteren of AUX, maar niet beide.

wil je bijv de versterker aan zetten en aux selecteren dan stuur je de volgende mask:

AMP_POWER | AMP_AUX_CD

AMP_POWER = (1 << 0)  // Amp Power enable bit
AMP_TAPE1 = (1 << 1)  // Tape 1 enable bit
AMP_TAPE2 = (1 << 2)  // Tape 2 enable bit
AMP_AUX_CD = (1 << 3) // togles between Aux and Cd

Indeling tkkrlab/meterkast topic

Uitgangen schakelen: Stuur een bericht met als payload "0" voor uit of "1" voor aan naar "tkkrlab/meterkast/output/<NR>", waarin <NR> vervangen moet worden met een van onderstaande getallen:

- 0: Relay 1 (Soldeertafel)
- 1: Relay 2 (Verlichting)
- 2: Relay 3 (<NOG NIET GEPLAATST>)
- 3: Relay 4 (Keuken)
- 4: Led in lichtschakelaar

Ingangen lezen: Luister naar berichten op het topic "tkkrlab/meterkast/input/<NR>" waarin <NR> vervangen moet worden met een van de onderstaande getallen:

- 0: Space status schakelaar
- 1: Lichtschakelaar
- 2: kWh meter 1
- 3: kWh meter 2
- 4: kWh meter 3
- 5: kWh meter 4

Alle inputs sturen een 1 wanneer ze worden geactiveerd en een 0 wanneer ze worden gedeactiveerd. In het geval van de spaceknop ontvang je dus een "1" wanneer de schakelaar van UIT naar AAN gedraaid wordt en een "0" wanneer de schakelaar van AAN naar UIT gedraaid wordt. In het geval van de lichtschakelaar ontvang je een "1" wanneer iemand de knop indrukt en een "0" wanneer iemand de knop loslaat.

De kWh meters geven een puls bij iedere gemeten 1/2000 kWh. Omdat het een puls is ontvang je voor iedere puls kort na elkaar een "1" en een "0". De "0" kan worden genegeerd.

Indeling tkkrlab/lights

Groep die alle lampen tegelijk aan of uit zet Parameter: "1" = alle lampen aan, "0" = alle lampen uit


Indeling tkkrlab/tv

Besturing van de TV:

- "tkkrlab/tv/volume" stelt het audiovolume in, argument is een percentage van "0" (mute) tot en met "100".
- "tkkrlab/tv/mode" kiest een input.

Input opties:

- "off" (TV uit)
- "dvi" (PC bij TV)
- "VGA" (Kabel voor presentaties)
- "ext" (Composite video input: hier zit de Wii op aangesloten)
- "hdcp" (Alternatieve modus voor DVI aansluiting)
- "cvbs" (Component video aansluiting)
- "s-video" (S-video aansluiting)

Composite switch

selecteer een composite output via "tkkrlab/composite/channel"

- "0" PlayStation 1
- "1" Xbox 360
- "2" Wii
- "3" Xbox original

Indeling tkkrlab/mpd

Besturing van de MPD muziekspeler.

- "tkkrlab/mpd": uitlezen status (play/pause)
- "tkkrlab/mpd/volume": uitlezen volume (0-100)
- "tkkrlab/mpd/volume/set": instellen volume (0-100)
- "tkkrlab/mpd/cmd": uitvoeren MPD commandos

Indeling tkkrlab/sonoff topic

  • tkkrlab/sonoff/<device>/cmd/POWER -> Lezen en schrijven van status: values: 1 (aan) of 0 (uit)
  • tkkrlab/sonoff/<device>/telemetry/LWT -> Status / watchdog
  • tkkrlab/sonoff/<device>/telemetry/STATE -> JSON met systeeminfo over node.
{"Time":"2017-05-21T21:13:57", "Uptime":1, "Vcc":3.237, "POWER":"1", "Wifi":{"AP":1, "SSID":"www.tkkrlab.nl", "RSSI":78, "APMac":"D8:C7:C8:A7:A8:31"}}

IRC bot

The IRC bot watches the MQTT server at the tkkrlab/spacestate topic to get space status. It is also possible for ops to use !force_status 0 / !force_status 1 to update the status manually, this will publish a retained message to tkkrlab/spacestate.