RFID Reader PN532 Licht aus und an schalten mit nur einer NFC Karte (Blockly Script)

  • Hallo zusammen also ich komme bei meiem Script leider nicht weiter ich habe einen RFID Reader PN532 und eine NFC Karte diese habe ich im Script auch schon eingefügt das funktioniert auch soweit, das Licht wird ausgeschaltet und auch wieder aus aber jetzt kommt es wenn ich meine Karte zu lange am PN532 halte kommt es halt zum senario das es an und aus geht alles beide zusammen lol.


    Ich will es irgendwie vermeiden wenn ich mit meiner karte drüber gegangen bin und er es akualisiert hat das das licht an geht aber das dann eine pause da ist wo er nichts liest auch wenn ich die Karte dort vor halte .


    und das natürlich auch wenn ich das Licht ausschalte mit der karte ,wenn er denn Wert aktualisiert hat und dass Licht ausgeschaltet hat, dann soll er eine Pause machen ,ansonsten würde er mir so wie es jetzt ist wenn ich die Karte zu lange drann halte das Licht an und wieder aus schalten


    https://w1.minpic.de/i/7kd3/767xs


    https://w1.minpic.de/i/7kd4/mfc7q


    Vieleicht könnt ihr mir da weiter helfen.THX


  • Leg mal ein Objekt für einen Zeitstempel an:
    RFIDzeit oder so

    Anschließend lässt Du Dir den Zeitstempel geben ( / 600000 = sek. ) wann das Objekt Aktualisiert wurde.
    Diesen Zeitstempel prüfst Du nun ob er über Wert X ( 1 oder 2 Sek. was Du eben brauchst )
    Wenn die Bedingung erfüllt ist, geht er erst in das "falls X bla"


    Du musst Deine Variablen noch auswählen!!


    Ist jetzt ungetestet, daher on the fly geschrieben:

    Versuch es mal bitte so:


  • oh supi danke für deine schnelle Antwort aber ich bekomme es leider nicht hin, ich gib zu das ich mich noch nicht so gut auskenne, muss ich in den gelben kometarbalken noch was einfügen oder ?


    https://w1.minpic.de/i/7khg/1k3pu2



    ich hab das jetzt so ausgefüllt :


    Oben das erste ist mein RFID wo die Karten Nummer erscheint also ( domoticz/in ) habe ich dort eingetragen.


    Die karen nummer ist halt : {"idx":1,"nvalue":0,"svalue":"2337763341"} diese hab ich unten auch eingetragen.


    und zu guter letzt meine Lampe Sonoff-Esszimmer Power.


    das ganze will aber irgendwie nicht


    Was meinst du mit (

    Leg mal ein Objekt für einen Zeitstempel an:

    RFIDzeit oder so)

    irgendwie glaube ich das ich das nicht verstehe also nicht gemacht habe und es deshalb nicht funktioniert.

  • Du musst ein neues Objekt anlegen:


    Zeit

    ( objekt / gemischt )


    Da wo Deine Objekte liegen.


    Das Objekt "Zeit" muss in dem Feld wo aktualisiere steht.


    Anschließend musst Du in dem ersten Falls Feld auch wieder das Objekt "Zeit" wählen.


    Den Zeitstempel musst du / 600000 machen um Sekunden zubekommen.


    / 60000 = Minuten

    / 6000 = Stunden


    Wenn mich nicht alles täuscht.


    0_20190501_210918.jpg

  • Also ich frag jetzt einfach mal, weil ich es nicht verstehe.... was genau möchtest du denn? ^^


    Was du jetzt machst ist ja:

    blablabla....schalte licht ein -> und dann sofort danach die Abfrage "Wenn Licht ein, dann wieder ausschalten".


    Also klar, dass das Licht sofort wieder aus geht. Wenn das licht einfach nur verzögert wieder von alleine aus gehen soll, dann brauchst du ja nur ein Päckchen bei "Verzögerung" machen und die gewünschte Zeit eingeben.



    Oder willst du, dass das Licht jedesmal seinen zustand wechselt, wenn du die Karte davor hältst?


    Dann kannst du statt des "Steuere"-Befehls auch mal den "Umschalten"-Befehl versuchen.



    Also bitte sag nochmal möglichst genau, wie oder was du erreichen möchtest.



    Zu guter Letzt noch eine Frage:

    Du trillerst ja den RFID wert.... Und zwar tigerst du auf "wurde aktualisiert".

    Heißt das, dass es egal ist welche RFID-Karte vor den Leser gehalten wird? Er führt das Script ja dann jedesmal aus, wenn sich ein Wert geändert hat, prüft aber nicht vorher, ob dieser Wert überhaupt berechtigt ist. Dann hätte es doch auch ein einfacher Knopf/Schalter getan.



    edit: diese Autokorrektur.... trillerst und tigerst soll natürlich triggerst heißen :P

  • cruunnerr

    Zitat

    Oder willst du, dass das Licht jedesmal seinen zustand wechselt, wenn du die Karte davor hältst?


    Dann kannst du statt des "Steuere"-Befehls auch mal den "Umschalten"-Befehl versuchen.


    Würde zwar auch funktionieren, jedoch wäre sein Problem ja immer noch da:

    Wenn Die Karte länger drauf liegt, erkennt der Reader die Karte erneut und es wird wieder ein Status gesendet.

    Daher brauch er eine "Pufferzeit" wo nichts passieren darf.


    Kann man mit dem Timestamp machen und diesen dann prüfen ( Wie lange ist Status X her )



    Zitat

    Du trillerst ja den RFID wert.... Und zwar tigerst du auf "wurde aktualisiert".

    Heißt das, dass es egal ist welche RFID-Karte vor den Leser gehalten wird? Er führt das Script ja dann jedesmal aus, wenn sich ein Wert geändert hat, prüft aber nicht vorher, ob dieser Wert überhaupt berechtigt ist.



    Hmm, nicht böse gemeint, war ja noch früh..

    Genau das wird ja geprüft *hust*
    Siehe Zeile 1:


    Falls Wert von X = {VALUE bla bla Kartennummer ) dann führe aus :

    :)

  • Joar denke wenn Du es so machst:

    Falls WERT a = deine Kartennummer UND Zeitstempel - Zeitstempel > 10


    Einfach mal ausprobieren.


    Hmm, muss mir auch mal so ein Reader kaufen, scheint man ja paar witzige Sachen mit machen zu können.
    Und mehr Support kann man auch geben, da man die Fehler direkt nachvollziehen kann ^^

  • also das mit dem Umschalten Funktioniert !!! aber nur wenn ich vorher eine andere Karte gescannt habe und dann wieder die richtige karte drann halte, geht das licht AN und dann geht das licht erst wieder aus wenn ich eine andere karte scanne und dann wieder die die ich eingetragen habe ( dann geht das Licht erst AUS)