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.

MQTT

From

Jump to: navigation, search

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.