Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon.no!

Sende JSON til MQTT


Mr. Larsen

Anbefalte innlegg

Hei. 

Jeg har anskaffet meg en shelly dimmer som skal støtte MQTT. Jeg klarer å sende av og på kommandoen, men dimmekommandoen må sendes i JSON format. Jeg bruker MCSmqtt. Jeg må visstnok sende JSON som dette:
--------------------------
{
"turn": "on",
"brightness": 100
}
-------------------------

Noen som har en ide hvordan jeg kan løse dette?

Lenke til kommentar
Del på andre sider

Da har jeg testet litt. Har ikke fått det til å virke enda. Virket som det var $$VALUE som ikke var helt rett.

Output blir da: 

{"turn":"{"color":{"r":0,"g":0,"b":0},"brightness":0}","brightness":VALUE}

og det skjer ingenting.

 

Hvis jeg derimot bruker kodestrengen du kom med og putter inn verdier, så virker det, men får da kun verdien som er i templaten, eks:

{"turn":"on", "brightness":”50"}

Litt merkelig i grunn, ettersom $$VALUE virker som en gyldig syntax.

 

Screenshots

Endret av Mr. Larsen
Lenke til kommentar
Del på andre sider

ok, da fikk jeg det til.? Jeg kunne ikke velge unspecified, da gikk den automatisk over til number.

Oppdaget også at jeg hadde glemt kolon etter $$VALUE  ?
Løsningen ble som følgende:

 

publish payload: {"turn":"on", "brightness":$$VALUE:}

status graphics ble satt til range value: 1-100 og slider som control type.

 

På denne måten får jeg dimmet lysene men for å slå av/på på jeg bruke en annen device som bruker /command on/off

 

Tusen takk for hjelpen ?

 

Screenshots av fungerende oppsett

Lenke til kommentar
Del på andre sider

54 minutter siden, Mr. Larsen skrev:

publish payload: {"turn":"on", "brightness":$$VALUE:}

status graphics ble satt til range value: 1-100 og slider som control type.

 

På denne måten får jeg dimmet lysene men for å slå av/på på jeg bruke en annen device som bruker /command on/off


Var derfor jeg tenkte at du skulle definere 0 som off og 1-100 som on - da burde den la seg styre helt via samme device. ;) 

Lenke til kommentar
Del på andre sider

  • 1 år senere...

Gjenoppliver en gammel tråd fordi dette ligner veldig..

 

Jeg har lagt til mine Develco røykvarslere via MQTT, og kan både utløse og avstille alarm via MQTT (nei, jeg kan ikke avstille faktisk utløst detektor). Det krever to litt ulike JSON. Så langt får jeg dette til bare hvis jeg har to Homeseer devicer med hver sin "hardkodede" payload publish template. Er det noen måte jeg kan få det slik jeg ønsker?

Èn device med to knapper - "Alarm" og "Avstill". Disse skal sende følgende ulike JSON til samme MQTT-topic:

 

{"warning":{"mode": "fire", "level": "high", "strobe" : false, "duration": 30}}

 

{"warning":{"mode": "fire", "level": "low", "strobe" : false, "duration": 0}}

 

Jeg kan få det til hvis jeg lager knapper som sier "high" og "low" og deretter bruker "$$VALUE" i publish template tror jeg, men vil helst ha knapper som uttrykkelig sier "Alarm" og "Avstill".

 

Takk :)

 

 

Lenke til kommentar
Del på andre sider

Fredrick skrev (1 time siden):

Jeg kan få det til hvis jeg lager knapper som sier "high" og "low" og deretter bruker "$$VALUE" i publish template tror jeg, men vil helst ha knapper som uttrykkelig sier "Alarm" og "Avstill".


Kan du ikke bruke denne metoden til å erstatte «Alarm» med «high» og «Avstill» med «low», tro?

 

https://forums.homeseer.com/forum/lighting-primary-technology-plug-ins/lighting-primary-technology-discussion/mcsmqtt-michael-mcsharry/1355907-replace-comma-with-dot-in-published-payload?p=1356163#post1356163

Lenke til kommentar
Del på andre sider

ZoRaC skrev (3 timer siden):

Kan du ikke bruke denne metoden til å erstatte «Alarm» med «high» og «Avstill» med «low», tro?

 

Jo dette ser lovende ut!

 

Enheten er laget med value 0 = avstill og value 1 = Alarm.

 

Prøver følgende payload template: 

{"warning":{"mode": "fire", "level": "<<Replace($$VALUE:,0,"low")>><<Replace($$VALUE:,1,"high")>>", "strobe" : false, "duration": 30}}

 

Men payload for avstilling blir da:

{
  "warning": {
    "mode": "fire",
    "level": "low0",
    "strobe": false,
    "duration": 30
  }
}

 

 

Jeg forstår ikke hvor den nullen kommer fra...?

 

EDIT: Det er noe med å ha to slike funksjoner etter hverandre som kødder det til. Hvis jeg bare har <<Replace($$VALUE:,1,"high")>> f.eks så virker det for "Alarm"-knappen.

Endret av Fredrick
Lenke til kommentar
Del på andre sider

ZoRaC skrev (14 timer siden):

Hmm… tror jeg ville spurt på forumet og fått løsningen direkte fra utvikleren. :) 

 

Det var lurt - for det var ingenting jeg kunne gjøre. Han måtte oppdatere for å støtte den type flettede funksjoner som jeg trengte :)

 

https://forums.homeseer.com/forum/lighting-primary-technology-plug-ins/lighting-primary-technology-discussion/mcsmqtt-michael-mcsharry/1485572-double-replace-in-publish-payload-template

  • Like 2
Lenke til kommentar
Del på andre sider

Viste seg at det ikke var nødvendig med en sånn oppdatering allikevel, det kan benyttes en blanding av VSP og STATUS som jeg syns er bedre. Har ikke fått testet det enda, men Michael har skrevet litt om det i den lenkede tråden :)

Lenke til kommentar
Del på andre sider

Bli med i samtalen

Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.

Gjest
Skriv svar til emnet...

×   Du har limt inn tekst med formatering.   Lim inn uten formatering i stedet

  Du kan kun bruke opp til 75 smilefjes.

×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

×   Tidligere tekst har blitt gjenopprettet.   Tøm tekstverktøy

×   Du kan ikke lime inn bilder direkte. Last opp eller legg inn bilder fra URL.

×
×
  • Opprett ny...

Viktig informasjon

Vi har plassert informasjonskapsler/cookies på din enhet for å gjøre denne siden bedre. Du kan justere dine innstillinger for informasjonskapsler, ellers vil vi anta at dette er ok for deg.