MQTT met de Siemens LOGO! 8.4

Hallo.
Heeft iemand al geprobeerd om script te maken voor de nieuwe Siemens LOGO! 8.4 om de MQTT publish waardes uit te lezen in Homey.
Ik kan Homey wel waardes laten versturen via de kaart MQTT client verstuur
Alleen de uitgelezen waardes via de lees het verstuurde bericht op de trigger mqtt client kan ik niet vertalen in een waarde waar ik in de Homey iets mee kan

Voorbeeld van het ontvangen bericht van de LOGO
{“state”:{“reported”:{“buitentemp”:{“desc”:“AM-word-1-1”,“value”:[222]},“buitenvocht”:{“desc”:“AM-word-3-1”,“value”:[536]},“$logotime”:1716238693}}}

M. vr. gr.
Wilco Wassink

Het ontvangen bericht is in JSON format.
Je kunt dan de logica JSON flowkaartjes gebruiken om bepaalde waardes uit het bericht te filteren.
Voor buitentemp is dit het in te vullen pad:
$.state.reported.buitentemp.value
en voor buitenvocht:
$.state.reported.buitenvocht.value

Het is wel jammer dat de waarde [222] is, i.p.v. gewoon numeriek 222, want dat kun je direct als numerieke waarde gebruiken en/of naar een numerieke variabele schrijven;

Flow voorbeeld:


Als tussenstap moeten de [ ] tekens gefilterd worden.
Dat kan met een klein homeyscriptje, neem hiervoor de DAN kaart ‘Run code met argument en return Number-Tag’ zoals hieronder te zien;

Daar het getal 222 heel waarschijnlijk de temperatuurwaarde 22,2 moet zijn, delen we het getal meteen door 10, afgerond op 2 decimalen:
Voorbeeld:
Screenshot from 2024-05-21 02-02-39


De code die ik heb gebruikt:
(deze maakt automatisch de HomeyScript tag [HS_tag_buitentemp_wwassink] aan en zet de gestripte waarde erin)

// strip [] from value [123] and divide by 10
const arg = args[0];
var realNum = Number('' + ( arg.split("[")[1].split("]")[0] ))
// divide by 10, rounded to 2 digits:
var realNumHuman = Math.round((realNum / 10) * 100)/100;
await tag('HS_tag_buitentemp_wwassink', realNumHuman);

console.log(args[0]);
return realNumHuman;
$.state.reported.buitenvocht.value[0]
2 Likes

Hallo ,
Hartelijk dank jullie voor de snelle reacties
Heb nu nog 2 dagen storingsdienst en dan ga ik weer met dit bezig

Haal de info niet via een api call binnen maar gebruik de broker van Homey
en haal de informatie op met een MQTT client kaart met trigger wanneer een bericht is ontvangen en maak dan een notificatie met a bericht ontvangen via topic
m vr gr,
Wilco Wassink

Ach, had ik kunnen weten :stuck_out_tongue: Ik gebruikte [0] ook bij de split functie :blush::laughing:.
Maar ik had nooit bedacht (niet opgezocht) dat dan de [ ] brackets weggelaten worden.

1 Like

[222] is een array (“lijst”) met één numerieke waarde er in.

2 Likes

A post was merged into an existing topic: Hoe filter ik een door komma’s gescheiden lijst?

Heren het werkt fantastisch.
Met de haken value[0] hoef ik alleen nog door 10 te delen en de waardes kan ik in een variabele zetten

Bedankt ben super op weg geholpen door jullie

PS. Peter_Kawa komt dit van Kawasaki ( Ik heb zelf nog een 1972 H2 Widowmaker)

1 Like

Graag gedaan.
Ha ja, Kawasaki inderdaad :motorcycle:
1e motor ooit was een KLR250.
Later heb ik heel lang een ‘gestripte’ GPZ750 gehad, geweldig ding.