MQTT Publish Plugin

Plugins skapade av Switch Kings användare | Plugins created by Switch King users
pgoth
1 star
1 star
Posts: 9
Joined: Tue 09 Nov 2010, 21:51

MQTT Publish Plugin

Post by pgoth » Wed 16 Oct 2013, 21:18

Ok, mitt första försök till plugin.. Det är kort och gott som namnet säger - alla händelser on/off/dim osv publiceras på en MQTT broker av intresse. Jag har använt mig utav nMQTT biblioteket för hantering av MQTT-protokollet (https://github.com/markallanson/nmqtt)

Exempel på ett meddelande:
Topic: /switchking/performedaction/device/21
Payload: { deviceId: 21, deviceName:"Altan+dimmer", deviceActionId: 2, deviceActionName: "Turn+On", dimLevel: 50, eventSource:"PerformedAction"}

deviceActionName UTF8-encode'as i meddelandet.

Todo är bl a att kunna välja att har persistenta meddelanden...

Updates:
0.2 - Mer dynamisk konfig av topic beroende på innehåll i meddelande + förhoppningsvis en fix av exception-hantering. dimLevel är nu numerisk eller null
0.3 - Fix för crash, Skickar meddelande bara 1 gång - ignorerar repeterande meddelanden under en 30s period, inkluderar separat logg (för utvecklingssyfte). Kolla config-filen. Nya attribut
You do not have the required permissions to view the files attached to this post.
Last edited by pgoth on Wed 13 Nov 2013, 13:26, edited 5 times in total.

krambriw
4 stars
4 stars
Posts: 336
Joined: Thu 19 Jul 2012, 19:41

Re: MQTT Publish Plugin

Post by krambriw » Thu 17 Oct 2013, 08:22

Kul,

Jag testar just nu en MQTT klient i python som kör i EventGhost, planerar en plugin för detta. Anslutning till "test.mosquitto.org" funkar fint.

Jag har alltså förstått det så att man kan konfigurera SK med din plugin så att jag får SK-händelser via en MQTT Broker?

Är dessa Brokers publika?

Kan man relativt enkelt sätta upp en egen broker, tex i en RaspBerry Pi?
EDIT: Tror jag hittade detta själv,
http://rasspberrypi.wordpress.com/2012/ ... be-client/

Stöds krypterad kommunikation via MQTT klienter och brokers?

mvh

pgoth
1 star
1 star
Posts: 9
Joined: Tue 09 Nov 2010, 21:51

Re: MQTT Publish Plugin

Post by pgoth » Thu 17 Oct 2013, 09:11

Japp, denna skickar ut alla händelser till vald broker. Jag kör själv Mosquitto-brokern på en Raspberry Pi (guide: http://mosquitto.org/2013/01/mosquitto- ... epository/ )

Det stämmer - test.mosquitto.org och m2m.eclipse.org är publika testservrar.

Jadå, du kan använda SSL mellan klient/broker. Mosquittos testserver har stöd för SSL så du kan testa där om du inte satt upp/konfigurerat din egen
The server listens on ports 1883, 8883 and 8884. Port 1883 is the standard unencrypted MQTT port and can be used with any MQTT client. Ports 8883 and 8884 use certificate based SSL/TLS encryption and require client support to connect. In both cases should use the certificate authority file mosquitto.org.crt to verify the server connection. Port 8883 allows unrestricted connections. Port 8884 requires clients to provide their own certificate to authenticate their connection. If you wish to obtain a client certificate, please get it touch.
PS. ska skriva om så att man smartare kan sätta topic baserat på innehåll i ett event. Kommer snart en uppdatering...

gus
3 stars
3 stars
Posts: 134
Joined: Fri 31 Aug 2012, 20:14

Re: MQTT Publish Plugin

Post by gus » Thu 17 Oct 2013, 10:17

Följer detta med spänning!

Skickat från min GT-I9505 med Tapatalk

krambriw
4 stars
4 stars
Posts: 336
Joined: Thu 19 Jul 2012, 19:41

Re: MQTT Publish Plugin

Post by krambriw » Thu 17 Oct 2013, 17:21

Hej,

1) Fått igång MQTT brokern på RPi (192.168.10.248)

2) Ansluter till den via Putty och ser att den lyckas med det

Code: Select all

mosquitto_sub -h 192.168.10.248 -d -t switchking/*
3) Ser att Switchking ansluter också

Code: Select all

1382025589: New client connected from 192.168.10.250 as SwitchKingServer (c1, k30).
4) Ser att Switchking gör en ny connection varje gång man styr ett device, tex dim av lampa
5) Får dock inte in några händelser till min MQTT Client....

Antagligen är subscription till topics felaktig....chansade på switchking/*

Kan du ge ett exempel så att alla händelser från SK trillar över?

mvh

PS jag lyckas krascha SK servern ganska enkelt nu...har du sett några liknande problem?

pgoth
1 star
1 star
Posts: 9
Joined: Tue 09 Nov 2010, 21:51

Re: MQTT Publish Plugin

Post by pgoth » Thu 17 Oct 2013, 18:48

Ja, det är lite problem med koden har jag märkt. Så avinstallera så ska jag se över :-/ Sorry - lite felaktig exceptionhantering såg jag. Återkommer med en fix.

Jag ser att du i klienten har använt "*" istället för "#" - det gör att din subscription inte fungerar korrekt. Det bör vara

Code: Select all

mosquitto_sub -h 192.168.10.248 -d -t "switchking/#"
Om din prependtopic heter "switchking/"

krambriw
4 stars
4 stars
Posts: 336
Joined: Thu 19 Jul 2012, 19:41

Re: MQTT Publish Plugin

Post by krambriw » Thu 17 Oct 2013, 19:12

Okej tack,

I default finns i din xml den här raden:

Code: Select all

<add key="Topic" value="/switchking/{eventSource}/device/{deviceId}"/>
Hur skall den se ut om jag vill att alla SK events skall skickas ut?

Så här?

Code: Select all

<add key="Topic" value="/switchking/#">
Om jag sedan ansluter min client enligt nedan

Code: Select all

mosquitto_sub -h 192.168.10.248 -d -t "switchking/#"
så händer inget...jag ser inga händelser från SK

mvh

pgoth
1 star
1 star
Posts: 9
Joined: Tue 09 Nov 2010, 21:51

Re: MQTT Publish Plugin

Post by pgoth » Thu 17 Oct 2013, 19:56

Alla events skickas alltid ut på brokern. Inga restriktioner. Sen väljer du att göra subscribe på något specifikt.

Så du kan t ex ha kvar default topic

Code: Select all

<add key="Topic" value="/switchking/{eventSource}/device/{deviceId}"/>
och sedan så prenumererar du på..

Code: Select all

mosquitto_sub -h 192.168.10.248 -d -t "/switchking/#"
"#" är ett wild card som ger dig alla topics efter text som lyder innan. T ex

Code: Select all

/switchking/1
/switchking/1/test/76
Du kan dock inte använda "#" i din topic-definition som du gjorde i exemplet.

Jag såg att du hade missat en inledande fw-slash "/" in din subscription så därför får du inget svar i din klient. (dvs om din topic-definition inte hade haft "#" i value vilket alltså inte är korrekt)

krambriw
4 stars
4 stars
Posts: 336
Joined: Thu 19 Jul 2012, 19:41

Re: MQTT Publish Plugin

Post by krambriw » Thu 17 Oct 2013, 20:19

Tack,, det fungerar nu!

Faktiskt gick följande också bra:

Code: Select all

 mosquitto_sub -h 192.168.10.248 -d -v -t "#"

krambriw
4 stars
4 stars
Posts: 336
Joined: Thu 19 Jul 2012, 19:41

Re: MQTT Publish Plugin

Post by krambriw » Fri 18 Oct 2013, 07:25

Hej,

Lite feedback, så som jag upplever det...

0) Vid första anslutningen, första eventet kommer ofta in snabbt till klienten

1) Events kommer därefter ofta in till klienten i dubbletter, därefter blir det *segt*, man kan även se detta i SK klienten när man tex ändrar dim värden snabbt, SK klienten verkar *hänga* en kort stund innan *datat gått iväg*

2) Events *stoppas* då liksom upp en stund, det kan dröja en liten stund innan senaste eventet faktiskt kommer in till klienten (jag har testat detta både med dim och on/off kommandon)

3) Samma beteende oavsett om jag använder lokal broker på min RPi eller om jag testar med m2m.eclipse.org

Mvh Walter

Post Reply

Who is online

Users browsing this forum: No registered users and 12 guests