BinarySwitch

Experimentele Plug-ins
Forumregels
LET OP: DIT IS HET EXPERIMENTELE GEDEELTE
BETREDEN OP EIGEN RISICO :lol:

BinarySwitch

Berichtdoor erik » 20 jan 2015, 14:11

//#######################################################################################################
//#################################### Plugin-252: BinarySwitch #######################################
//#######################################################################################################

/*********************************************************************************************\
* Deze plugin bewaart 28 binaire switches in een variable.
*
* BinarySwitch Var1, Var2, Par1, Par2
*
* Var1 geeft de variable aan waarin de switches worden bewaard.
* Var2 geeft de variable aan waarin het test resultaat (0|1) wordt gezet.
* Par1 is het nummer van de bit (=switch).
* Par2 bepaald de aktie: 1 = setten, 2 = resetten, 3 = testen
*
* BinarySwitch 1, 2, 20, 1 Switch 20 wordt aangezet in Variable 1
* BinarySwitch 1, 2, 20, 2 Switch 20 wordt uitgezet in Variable 1
* BinarySwitch 1, 2, 20, 3 Variable 2 bevat de waarde van switch nummer 20
*
*
*
* Auteur : Erik Couzy
* Support : www.nodo-domotica.nl (erik)
* Datum : jan 2015
* Versie : 1.1
* Nodo productnummer : <Nodo productnummer. Toegekend door Nodo team>
* Compatibiliteit : Vanaf Nodo build nummer <build nummer>
* Syntax : BinarySwitch Var1, <Var2>, Par1, Par2
*
***********************************************************************************************

https://www.dropbox.com/s/ypbdqsoz7c83h ... 252.c?dl=0
erik
 
Berichten: 59
Geregistreerd: 12 dec 2014, 18:04

Re: BinarySwitch

Berichtdoor Paul » 19 feb 2015, 19:39

Hoi Erik,

Deze is brilliant. Ik denk dat binaire vlaggen veel gebruikt kunnen worden. Aanwezigheid, deuren open/dicht, etc.etc. Ik heb hier al eerder aan zitten denken en wil dit wel in de Core opnemen van de Nodo. En dan een stuk of tig zouden handig zijn. Voor het bewaren van de switches heb ik een beter alternatief. Ik zou het ook zo kunnen maken dat de vlaggen/switches ' globaal' door de Nodo's worden beheerd. Hiermee bedoel ik dat je bv. 128 switches hebt die je op iedere Nodo kan gebruiken en wijzigen zonder je te bekommeren of de variabelen zijn verzonden. Dan is het een hele kleine moeite om ook een BreakOn... te maken die in de eventlist gebruikt kan worden. Uiteindelijk kun je de schaarse variabelen dan voor analoge zaken gebruiken.

Groeten Paul.
Groeten Paul
Paul
 
Berichten: 1152
Geregistreerd: 31 aug 2011, 20:33

Re: BinarySwitch

Berichtdoor erik » 20 feb 2015, 18:24

Paul,
Bedankt voor je waardering.

Paul schreef: Dan is het een hele kleine moeite om ook een BreakOn... te maken die in de eventlist gebruikt kan worden. Uiteindelijk kun je de schaarse variabelen dan voor analoge zaken gebruiken.

Dit is precies wat ik doe binnen mijn aanwezigheidssimulatie project.
Alleen wordt mijn eventlist te groot als ik dit doe binnen een groot aantal van userevents.
Aangezien je in de newsletter schreef dat we nu scripts kunnen beëindigen met een BreakOn heb ik getracht dit m.b.v. scripts te realiseren.
Het probleem hierbij ken je inmiddels, en ik heb op jouw instigatie een issue (893) aangemaakt.
Binare groet,
Erik
erik
 
Berichten: 59
Geregistreerd: 12 dec 2014, 18:04

Re: BinarySwitch

Berichtdoor Paul » 20 feb 2015, 18:57

erik schreef:Paul,
Bedankt voor je waardering.

Paul schreef: Dan is het een hele kleine moeite om ook een BreakOn... te maken die in de eventlist gebruikt kan worden. Uiteindelijk kun je de schaarse variabelen dan voor analoge zaken gebruiken.

Dit is precies wat ik doe binnen mijn aanwezigheidssimulatie project.
Alleen wordt mijn eventlist te groot als ik dit doe binnen een groot aantal van userevents.
Aangezien je in de newsletter schreef dat we nu scripts kunnen beëindigen met een BreakOn heb ik getracht dit m.b.v. scripts te realiseren.
Het probleem hierbij ken je inmiddels, en ik heb op jouw instigatie een issue (893) aangemaakt.
Binare groet,
Erik

Issue gevonden en gaan we mee aan de slag.
Groeten Paul
Paul
 
Berichten: 1152
Geregistreerd: 31 aug 2011, 20:33

Re: BinarySwitch

Berichtdoor Paul » 20 feb 2015, 22:07

Nog even op voortborduren over de BinarySwitch. Zoals aangegeven vind ik dit even simpel als briljant. Als we het funktioneel zouden omschrijven, bedoelen we dan zoiets als dit?

  • Binairy switches zijn een nieuw soort variabelen die kunnen worden gebruikt om logische (1/0) gegevens te bewaren. Het zijn 'vlaggen' die kunnen worden gebruikt voor statussen zoals: Deur open/dicht, Aanwezig Ja/Nee, Vorst Ja/Nee, Alarm Aan/uit.
  • We beschikken over vlaggen ter aanvulling op de bestraande variabelen.
  • Bij voorkeur zijn de vlaggen ' globaal' en worden deze op alle Nodo's automatisch bijgewerkt.
  • We kunnen hier er zeker een behoorlijk aantal van gebruiken. Minimaal 32 stuks.
  • Bij wijzigen van een vlag wordt er een event gegenereerd die we kunnen gebruiken om zaken af te handelen;
  • Flaggen moeten kunnen worden aangapast vanuit WebApp, TelNet, Scripts en de eventlist.
  • Een Toggle funktie.
  • Tevens een BreakOn... commando om hiermee de flow in de eventlist te kunnen beïnvloeden.
  • Zowel op de Mega als Small toe te passen

Nog meer wensen?
Groeten Paul
Paul
 
Berichten: 1152
Geregistreerd: 31 aug 2011, 20:33

Re: BinarySwitch

Berichtdoor manjh » 21 feb 2015, 09:03

Waarin ga je deze vlaggen opslaan? Een nieuw veldje?
En hou ga je ze over de Nodo's heen synchroniseren? Zeker met vlaggen as dit is het erg belangrijk dat elke Nodo de juiste vlaggen aan/uit heeft staan, dus het zal 100% secure moeten gebeuren!
En wat doen we met conflicten? Twee Nodo's die hetzelfde vlaggetje zetten De ene zet hem aan, de ander uit?

Zoals je al aangaf, een simpel en erg handig concept...
Hans
manjh
 
Berichten: 1172
Geregistreerd: 29 aug 2011, 14:39

Re: BinarySwitch

Berichtdoor erik » 21 feb 2015, 13:49

Paul schreef:Nog even op voortborduren over de BinarySwitch. Zoals aangegeven vind ik dit even simpel als briljant. Als we het funktioneel zouden omschrijven, bedoelen we dan zoiets als dit?

  • Binairy switches zijn een nieuw soort variabelen die kunnen worden gebruikt om logische (1/0) gegevens te bewaren. Het zijn 'vlaggen' die kunnen worden gebruikt voor statussen zoals: Deur open/dicht, Aanwezig Ja/Nee, Vorst Ja/Nee, Alarm Aan/uit.
  • We beschikken over vlaggen ter aanvulling op de bestraande variabelen.
  • We kunnen hier er zeker een behoorlijk aantal van gebruiken. Minimaal 32 stuks.

Bovenstaande punten zouden voor mij voldoende zijn.

Paul schreef:
  • Bij voorkeur zijn de vlaggen ' globaal' en worden deze op alle Nodo's automatisch bijgewerkt.

Hans wijst hier zeer terecht op het risico voor conflicten !

Paul schreef:
  • Bij wijzigen van een vlag wordt er een event gegenereerd die we kunnen gebruiken om zaken af te handelen;
  • Flaggen moeten kunnen worden aangapast vanuit WebApp, TelNet, Scripts en de eventlist.
  • Een Toggle funktie.
  • Tevens een BreakOn... commando om hiermee de flow in de eventlist te kunnen beïnvloeden.
  • Zowel op de Mega als Small toe te passen

Dit valt mijn inziens volledig buiten (boven) de funktie van een vlag.

Maar als ik mee mag dagdromen:
Als een vlag ook een inhoud zou kunnen hebben....
een soort uiterst primitieve database....
Op de SD kaart een file zien als een record, het nummer van de file is de key en de file zelf is de inhoud.
Je kunt zo'n record gebruiken als vlag, maar er ook een waarde in kunnen opslaan, bijvoorbeeld de dimstand van een KaKu.
DataRead 1, 2; Variable 1 is de key, de inhoud wordt opgeslagen in variable 2.

En als je dan ook nog de inhoud van de variable kunt gebruiken binnen een commando....
TimerSet 1, [Var 2] of zelfs NewKakuSend [Var 1], [Var 2]
dan kun je echt gaan programmeren......
DataRead 1,2
BreakOnVarEqu 3,[Var 2]


Of wordt mijn dagdroom nu voor velen een nachtmerrie?
Erik
erik
 
Berichten: 59
Geregistreerd: 12 dec 2014, 18:04

Re: BinarySwitch

Berichtdoor manjh » 21 feb 2015, 14:36

Conflicten kunnen we voorkomen met de volgende aanpak.
1. hou de vlaggen per default alleen lokaal
2. commando nodig voor het setten/resetten van individuele vlaggen
2. commando voor het setten/resetten van alle vlaggen (zelfde als #2, met wildcards)
3. event genereren als een vlag wijzigt
4. commando SendFlags, 1 parameter: target Nodo. Geen wildcard. Transfer is 100% secure, a la SendTo.
5. commande SendFlags, zonder parameter: dit is een broadcast, elke ontvangende Nodo pikt hem op, geen confirmation (en dus niet 100% zeker dat iedere Nodo het ontvangen heeft)

Is dit wat? :)
Hans
manjh
 
Berichten: 1172
Geregistreerd: 29 aug 2011, 14:39

Re: BinarySwitch

Berichtdoor Paul » 21 feb 2015, 14:55

Help eens even, wat is een conflict in deze. Als het een soort globaal register is met vlaggen, dan is de laatste mutatie toch altijd de actuele?

Een database is natuurlijk mogelijk, maar ik zou het wel eenvoudig willen houden omdat de nieuwe WebApp een API bevat die je zeet eenvoudig toegang geeft tot alle events die ooit voorbij gekomen zijn. Dimstanden van de KAKU's worden in de Nieuwe WebApp nu ook onthouden.

@Erik: je kunt nu ook al wat je vraagt.

Als er een event voorbij komt, bijvoorbeeld 'Variable 8, 12', dan kun je vanuit de WebApp, commandoregel of scriptfile het volgende doen:

Code: Selecteer alles
SendNewKAKU 123,%Par2%


Je kunt de volgende gebruiken gegevens van het laatste event gebruiken:
  • %Unit%
  • %Command%
  • %Par1%
  • %Par2%

Daarnaast is het mogelijk om (bijna) alles wat je met status kan uitvragen ook als %...% kunt gebruiken. Stel je wilt bijvoorbeeld variabele 10 vullen met het vrij beschikbare werkgeheugen van de Nodo, dan kun je dit als volgt doen:

Code: Selecteer alles
VariableSet 10, %Status FreeMem%


Om het nog leuker te maken, je kunt ook eenvoudige berekeningen doen met #...#. Stel je wilt een variabele 10 vullen met het dubbele van de waarde van variabele 5, dan kan dit als volgt:

VariableSet 10, #%Status VariableSet 5% *2#

Let op: dit werkt niet in de Eventlist. Dan moet je vanuit de Eventlist even een uitstapje maken naar een script. Wil je bijvoorbeeld van Nodo 5 de variabelen afvangen en daar iets mee doen in een scriptfile, dan kan dit door een deze regel even op te nemen in je eventlist:

Code: Selecteer alles
EventlistWrite; Wildcard All, Variable, 5; FileExecute 1


Vervolgens wordt bij ieder Variable event van Unit-5 scriptfile met de naam '1' aangeroepen.
Groeten Paul
Paul
 
Berichten: 1152
Geregistreerd: 31 aug 2011, 20:33

Re: BinarySwitch

Berichtdoor Paul » 21 feb 2015, 15:00

manjh schreef:Conflicten kunnen we voorkomen met de volgende aanpak.
1. hou de vlaggen per default alleen lokaal
2. commando nodig voor het setten/resetten van individuele vlaggen
2. commando voor het setten/resetten van alle vlaggen (zelfde als #2, met wildcards)
3. event genereren als een vlag wijzigt
4. commando SendFlags, 1 parameter: target Nodo. Geen wildcard. Transfer is 100% secure, a la SendTo.
5. commande SendFlags, zonder parameter: dit is een broadcast, elke ontvangende Nodo pikt hem op, geen confirmation (en dus niet 100% zeker dat iedere Nodo het ontvangen heeft)

Is dit wat? :)


Zeker, alleen 5 hoort op een andere laag thuis. In de Nodo2Nodo communicatie moet het altijd aankomen.
Groeten Paul
Paul
 
Berichten: 1152
Geregistreerd: 31 aug 2011, 20:33

Volgende

Keer terug naar Plug-ins

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers. en 1 gast

cron