Project User Interface Nodes: verschil tussen versies

Uit MakerSpace Leiden
Ga naar: navigatie, zoeken
(Aart LED)
(Huidige states en signalen =)
Regel 120: Regel 120:
 
   { "Running",              LED::LED_ON,            NEVER      , WAITINGFORCARD },
 
   { "Running",              LED::LED_ON,            NEVER      , WAITINGFORCARD },
  
 
+
  // LED patterns:
// LED patterns:
+
  //
//
+
  typedef enum { LED_OFF, LED_FLASH, LED_SLOW, LED_FAST, LED_ERROR, LED_PENDING, LED_IDLE, LED_ON, NEVERSET } led_state_t;
typedef enum { LED_OFF, LED_FLASH, LED_SLOW, LED_FAST, LED_ERROR, LED_PENDING, LED_IDLE, LED_ON, NEVERSET } led_state_t;
+
  //                      01234567012345670123456701234567
//                      01234567012345670123456701234567
+
  #define PATTERN_IDLE  0b10000000000000000000000000000000
#define PATTERN_IDLE  0b10000000000000000000000000000000
+
  #define PATTERN_EVEN  0b10101010101010101010101010101010
#define PATTERN_EVEN  0b10101010101010101010101010101010
+
  #define PATTERN_SO    0b11100111100111001001001000000000
#define PATTERN_SO    0b11100111100111001001001000000000
+
  #define PATTERN_A      0b11000000111111000000000000000000  
#define PATTERN_A      0b11000000111111000000000000000000
 
  
 
</code>
 
</code>

Versie van 22 jan 2024 om 12:54

Inleiding

De Makerspace heeft in de afgelopen jaren een redelijk aantal zogenaamde 'Nodes' gekregen, voornamelijk om toegang tot apparaten te verlenen, maar ook betaalterminals, sensoren, enzovoort. Een van de zaken die er bij deze organische groei gebeurt, is dat het voor nieuwe (en soms ook oude) gebruikers soms een raadsel is hoe ze werken. En dan heb ik het niet over de techniek, maar hoe ze zich 'aan de buitenkant' gedragen.


Dit is een klein projectje om te komen tot een user interface standaard voor onze nodes, die bedoeld is om het voor gebruikers makkelijker te maken om ze te gebruiken.


Belangrijke aspecten zijn de volgende:

  • Inzichtelijkheid: dat het voor de gebruiker duidelijk is waar het apparaat voor is, wat de mogelijkheden zijn, en wat de toestand op een bepaald moment is.
  • Consistentie: dat iedere node zich zo veel mogelijk als de andere nodes gedraagt. Dat een rood lampje niet de ene keer betekent dat het apparaat aan is, en een andere keer dat er een fout is.

Voorbeeld 1: eenvoudige toegangsnode

Het blauwe lampje is bedoeld om de status van de RFID lezer zelf mee aan te geven:

  • Blauw lampje brandt niet: Node staat (tijdelijk) niet klaar om RFID te lezen
  • Blauw lampje brandt continu: Node staat klaar om RFID te lezen
  • Blauw lampje brandt knipperend: Node werkt niet correct. Uit knipperpatroon is af te leiden wat het probleem is

Het groene lampje is bedoeld om aan te geven dat de betreffende gebruiker geautoriseerd is:

  • Groen lampje brandt continu: Gebruiker is herkend en is geautoriseerd.

Het rode lampje is bedoeld om aan te geven dat er iets mis is gegaan bij de autorisatie.

  • Rood lampje brandt 1x kort: Fout bij lezen RFID
  • Rood lampje brandt 3x kort: Gebruiker is herkend en is niet geautoriseerd.
  • Rood lampje brandt 5x kort: Gebruiker is niet herkend
    • Kleine complexiteit - indien er slecht/traag/geen netwerk is - wordt er een cache gebruikt. Dus nu is het slecht onderscheid maken tussen een geen antwoord server, te traag antwoord server en niet in cache en werkelijk niet herkend. Dus je kan ook hebben - scan; geen antwoord in 0.5 seconden; check cache; niet gevonden; 1 seconde later - toch traag ok van server. En dan gaat de deur open - want we negeren zo'n transient 'niet gevonden' en geven het pas na 5 seconden oid op.
    • We kunnen wel betrouwbaar vaststellen dat de RFID ok gelezen is
  • In dit ontwerp is de autorisatie zelf gescheiden van de apparaatsturing
Functie Autorisatie-node Indicator Opmerkingen
Autorisatie-node is aan en in staat is om RFID-tokens te scannen Blauw lampje brandt continu
Autorisatie-node is aan maar niet in staat is om RFID-tokens te scannen Blauw lampje brandt knipperend Uit patroon is op te maken wat het probleem is
Gebruiker is geautoriseerd Groen lampje brandt zo lang het akkoord is Wanneer vervalt het akkoord?
Gebruiker is afgewezen Rood lampje brandt gedurende 1 seconde Afgewezen is een tijdelijke status
Aan apparaatsturing laten weten dat de autorisatiemodule werkt Nader te bepalen signaal  
Aan het apparaat laten weten dat de gebruiker geautoriseerd is Nader te bepalen signaal
Niet 'aan' betekent altijd 'uit'.
     
Functie Apparaatbesturings-deel Indicator Opmerkingen
Gebruiker is geautoriseerd Groen lampje brand zo lang het akkoord is Hoort gelijk te zijn aan die van de autorisatie
Gebruiker is niet geautoriseerd Rood lampje zo lang het niet akkoord is Inverse van dat het akkoord is
Input dat gebruiker het apparaat aan wil zetten Groene '1' of 'On' knop  
Input dat de gebruiker het apparaat uit wil zetten Rode '0' of 'Off' knop Betekent meestal einde autorisatie
    '

Huidige states en signalen =

Aart LED

Huidige Aart LED (Groen bij de meeste machines) - typisch

  • Langer dan 5 seconden uit - CPU hangt of geen power.
  • Langzame flash - alles normaal
  • kortje flitsjes - kaart gescanned en wordt gechecked.
  • Snelle flash voor 1-2 seconden - kaart rejected, timeout, etc -- transient fout
  • Snel lang flashen - er is iets mis
    • In sommige gevallen kan dit iets in het safety circuit zijn - zoals de operator switch op ON, een ingedrukte noodstop of de detectie van een lopende motor terwijl die uit zou moeten zin
  • Morse patroon - er is iets 'echt' miss - zoals geen netwerk, stroom, etc.
  • Continue aan - machine vrijgegeven

Uitzonderingen zijn de deur nodes.


Typische definitie:

 { "Booting",              LED::LED_ERROR,           120 * 1000, REBOOT },
 { "Out of order",         LED::LED_ERROR,           120 * 1000, REBOOT },
 { "Rebooting",            LED::LED_ERROR,           120 * 1000, REBOOT },
 { "Transient Error",      LED::LED_ERROR,             5 * 1000, WAITINGFORCARD },
 { "No network",           LED::LED_FLASH,         NEVER       , NOCONN },           // should we reboot at some point ?
 { "Waiting for card",     LED::LED_IDLE,          NEVER       , WAITINGFORCARD },
 { "Checking card",        LED::LED_PENDING,           5 * 1000, WAITINGFORCARD },
 { "Rejecting noise/card", LED::LED_ERROR,             5 * 1000, WAITINGFORCARD },
 { "Powered - but idle",   LED::LED_ON,            NEVER       , WAITINGFORCARD },   // we leave poweroff idle to the code below.
 { "Running",              LED::LED_ON,            NEVER       , WAITINGFORCARD },
 // LED patterns:
 //
 typedef enum { LED_OFF, LED_FLASH, LED_SLOW, LED_FAST, LED_ERROR, LED_PENDING, LED_IDLE, LED_ON, NEVERSET } led_state_t;
 //                       01234567012345670123456701234567
 #define PATTERN_IDLE   0b10000000000000000000000000000000
 #define PATTERN_EVEN   0b10101010101010101010101010101010
 #define PATTERN_SO     0b11100111100111001001001000000000
 #define PATTERN_A      0b11000000111111000000000000000000 

State engine NODE

  1. Node is uit
  2. Node is powerd
    1. Oude nodes - 1 of 2 hebben een zichtbare powerled
    2. Vanaf generatie WNH - allemaal een powerled; niet altijd zichtbaar.
  3. Node heeft volledig geboot / geen netwerk
    1. Leeuwendeel van de nodes heeft een of andere indicatie (AartLed)
    2. WNH: led of display
  4. Waiting for card
    1. Leeuwendeel van de nodes heeft een of andere indicatie (AartLed)
    2. WNH: led of display
  5. Card word geswiped
    1. Oude nodes: sommige geven een piepje
    2. WNH: allemaal een buzzer met korte piep; meeste display
  6. Denied of time-out of geen netwerk -EN- niet in de cache
    1. Oude nodes: meeste geven een LED signaal
    2. WNH: buzzer signaal
  7. Approved (via de server of via de cache als er geen netwerk is)
    1. Oude nodes: meeste geven een LED signaal. sommige alleen klick (tussendeur), buzzer (voordeur) of stappenmotor (spacedeur)
    2. WNH: Allemaal buzzer; meeste display text
  8. Indrukken van een of andere 'uit knop'
    1. Node valt terug naar waiting for card.

Sommige nodes

  1. Led of buzzer signaal indien de safety interlock een probleem heeft.

State safety interlock

  1. Geen power
  2. Power; en in de veilige stand
  3. kan niet aan - noodknop ingedrukt
  4. kan niet aan - clickson of andere interlock in motor (zoals open deur) blokkeert dit
  5. kan niet aan - de operator switch staat in de 'aan' stand.
  6. kan niet aan - niet vrijgegeven door de node
  7. kan niet aan - er ontbreekt een fase (maar bij één machine)
  8. kan aan met rode knop - paar nodes hebben dan een lamp die aan gaat
  9. operator switch van uit->aan
    1. Motor gaat lopen
  10. operator switch van aan->uit
    1. Motor stopt
  11. Iets dat de interlock verbreekt (node crash, noodknop, overload, overtemp, deurtje open, etc)
    1. Naar veilige staat
    2. Meeste nodes - node ziet dit, blokkeert vrijgave onmiddelijk & stuurd warning naar MQTT
  12. Groene knop ingedrukt bij motor UIT- apparaat naar veilige staat
    1. Meeste nodes - node ziet dit en stopt na 10-120 seconden de vrijgave van de safety
  13. Groene knop ingedrukt bij motor AAN - apparaat naar veilige staat
    1. Meeste nodes - node ziet dit, blokkeert vrijgave onmiddelijk & stuurd warning naar MQTT en soms beheerders/bestuur