Wat doe ik fout
Wil graag een script maken die afhankelijk van een Ja Nee variabele een tag genereerd
arg is een ja nee variabele en maakt dan een tag bool aan afhankelijk of deze ja of nee is
wat moet ik invullen in de if () zodat het reageert op ja nee ???
mijn script is
Met fancy (dubbel)quotes gaat het sowieso nooit werken, gebruik uitsluitend rechte ' "
Plaats ajb je script eerst eens in script format, preformatted text genaamd
Goedemorgen Peter,
Het fancy quotes verhaal werkt perfect is een tag om achter een MQTT string te plakken.De dubbele haakjes staan als sring tussen de enkele haakjes.
Het probleem zit in de if() als ik het met een nummerieke variabele doe
bv if(arg===15) werkt het of text variabele if(arg===‘test’) werkt ook.
Alleen bij een ja nee variabele krijg ik het niet voor elkaar om de if of else uit te voeren.
Bij 2 gelijktekens werkt het ook met getal en string maar ik zoek de oplossing wat ik bij de if() moet gebruiken zodat het werkt bij een Ja/Nee variabele
Ik mis nogal wat context, is dit het begin van een JavaScript functie?
Maar zit het probleem dan in de vergelijking van de if, of heeft de contante “arg” geen waarde? Maak de waarde van “arg” eens zichtbaar, of geef deze zelf een waarde. Of begin met een simpel if statement true==true.
Ligt het dan niet voor de hand om if (arg==ja) of if (arg==“ja”) te gebruiken? afhankelijk van wat voor type “arg” is. En zeker geen 3 gelijktekens, omdat dan ook de types gelijk moeten zijn.
Er zullen nogal wat onzichtbare tussenstappen en vertalingen bij betrokken zijn, voordat de symbolen in de tijdslijn verschijnen. Misschien kun je (voorlopig) een workaround maken, door met een logica kaart te testen op “Fan Douche Hand” en dan in beide gevallen het kaartje voor MTTQ Client aanroepen. In het ene geval met de vaste waarde TRUE en in het andere geval de vaste waarde FALSE, ipv 1 x aanroepen met een variabele FALSE of TRUE. Dan omzeil je het probleem.
Ik krijg toch het idee dat je in het IF statement dingen met elkaar vergelijkt, die anders zijn dan wat je denkt. Dus je kunt ook de twee waarden én type van de parameters in het if statement uitprinten. Het moeten of 2 booleans zijn, of twee strings, of 2 integers.
Hoe je een Boolean weergeeft, is een heel ander verhaal.
Dat werkt al maanden perfect met de logica kaart zo doe ik het ook al een hele tijd zonder problemen.
Wou met behulp van script de advanced flows wat comprimeren omdat hier geen goto commando
bestaat en het soms zo rommelig word met de if/else kaarten vooral als je niet 5 keer het zelfde kaartje wil invoeren krijg je veel kruisende enz lijnen in je flow
Omdat ik nu een paar dagen vrij had wou ik wat met script expirimenteren aangezien ik normaal plc`s programeer en alleen de talen algol60 ,pascal en visiual basic beheers
Dan zou ik vlak voor de if statement uitgevoerd wordt, het type en de waarde van de twee objecten die je met elkaar vergelijkt, proberen vast te stellen.
Want als je met die programmeertalen bekend ben, weet je dat een Boolean nooit gelijk kan zijn aan een constante of variabele van het type string met de de waarde “ja” of “nee”, of een vinkje of een kruisje.
Het IF statement moet of een ja of een nee geven, óf een runtime error. Maar ik ken je ontwikkelomgeving niet goed genoeg, ik doe (nog) geen Homeyscript.
En om flows op te schonen kun je ook subflows gebruiken.
Door het omzetten van het argument naar String kan ik nu eindelijk wat bereiken
dus geen appels met peren vergelijken zoals jij vermelde
zie voorbeeld:
Volgende stap uitzoeken hoe ik een rechtstreeks variabele kan ophalen in een script
zonder het kaartje voer script uit met argument te moeten gebruiken maar met kaartje voer script uit
Als je zoekt in dit forum op tag en Homeyscript of variable en Homeyscript vind je diverse bijdragen. Daar zal best wel wat tussen zitten wat voor jou van belang is.