Difference between revisions of "MQTT"
From
(→IRC bot) |
(→Indeling tkkrlab/tv) |
||
(15 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
− | Server | + | =Server= |
− | mrmeeseeks (10.42.1.2) | + | mrmeeseeks.tkkrlab (10.42.1.2) |
− | Topic opbouw | + | =Topic opbouw= |
tkkrlab/# -> Voor Tkkrlab / Space berichten | tkkrlab/# -> Voor Tkkrlab / Space berichten | ||
<nickname>/# -> Voor je eigen creaties | <nickname>/# -> Voor je eigen creaties | ||
Line 9: | Line 9: | ||
Luisteren naar pakketjes: | Luisteren naar pakketjes: | ||
− | mosquitto_sub -h mrmeeseeks -t "tkkrlab/#" -v | + | 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/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 | + | ==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) | ||
− | tkkrlab/ | + | ==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 | ||
+ | <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 | + | ==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. | 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. |
Latest revision as of 17:50, 19 May 2018
Contents
- 1 Server
- 2 Topic opbouw
- 2.1 Topics
- 2.2 Indeling tkkrlab/powermanagement topic
- 2.3 Indeling tkkrlab/spacestate topic
- 2.4 Indeling tkkrlab/ledmatrix topic
- 2.5 Indeling tkkrlab/amp
- 2.6 Indeling tkkrlab/meterkast topic
- 2.7 Indeling tkkrlab/lights
- 2.8 Indeling tkkrlab/tv
- 2.9 Composite switch
- 2.10 Indeling tkkrlab/mpd
- 2.11 Indeling tkkrlab/sonoff topic
- 3 IRC bot
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.