iButton Leser zuordnen

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • TobiTechnik
    Dumb Home'r
    • 15.02.2016
    • 14

    #16
    Moin,
    hat jemand den Arduino Sketch von Robert L. aus #4 schon erweitert auf mehrere I-button leser? Ich bekomme es leider nicht hin das mehr als die zwei gelesen werden.

    LG Tobi

    Kommentar


    • romildo
      romildo kommentierte
      Kommentar bearbeiten
      Ich nicht, aber hast Du denn den Sketch angepasst?
  • TobiTechnik
    Dumb Home'r
    • 15.02.2016
    • 14

    #17
    Habe versucht den Sketch anzupassen. Leider ohne Erfolg.

    Kommentar


    • hismastersvoice
      hismastersvoice kommentierte
      Kommentar bearbeiten
      Zeig mal was du geändert hast...
  • TobiTechnik
    Dumb Home'r
    • 15.02.2016
    • 14

    #18
    Bin Grad nicht am PC. Stelle den Sketch später mal ein.

    Kommentar

    • romildo
      Lebende Foren Legende
      • 25.08.2015
      • 5159

      #19
      Sofern der iButton 3 an Pin 4 angeschlossen ist, würde ich es so versuchen:

      Code:
      #include <OneWire.h>
      #include <SPI.h>         // needed for Arduino versions later than 0018
      #include <Ethernet.h>
      #include <EthernetUdp.h>         // UDP library from: bjoern@cs.stanford.edu 12/30/2008
      
      // Network Settings
      byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xEF, 0xDE };
      IPAddress ip(192, 168, 1, 190);
      IPAddress gateway(192, 168, 1, 1);
      IPAddress subnet(255, 255, 255, 0);
      
      // Local UDP port to listen on
      unsigned int localPort = 5300;
      
      // Recipient IP
      IPAddress RecipientIP(192, 168, 1, 22);
      
      // Recipient UDP Port
      unsigned int RecipientPort = 5300;
      
      // buffers for receiving and sending data
      char packetBuffer[UDP_TX_PACKET_MAX_SIZE];
      
      // An EthernetUDP instance to send and receive packets over UDP
      EthernetUDP Udp;
      
      OneWire ibuttonA (2); // I button connected on PIN 2.
      OneWire ibuttonB (3); // I button connected on PIN 3.
      [B]OneWire ibuttonC (4); // I button connected on PIN 4.[/B]
      
      byte buffer[20]; //array to store the Ibutton ID.
      char UDPbuffer[20];
      byte found = 0;
      
      
      void setup()
      {
       // For debug only
       Serial.begin(9600);
      
       // Start Ethernet
       Ethernet.begin(mac,ip);
      
       // Start UDP
       Udp.begin(localPort);
      
      
      }
      
      
      
      void loop()
      {
      
      
      
        if (ibuttonA.search (buffer)){//read attached ibutton and asign value to buffer
          found = 1;
        } elseif(ibuttonB.search (buffer)){//read attached ibutton and asign value to buffer
          ibuttonA.reset_search();
          found = 2;
      [B] } else if (ibuttonC.search (buffer)){//read attached ibutton and asign value to buffer
          ibuttonA.reset_search();
          ibuttonB.reset_search();
          found = 3;[/B]
        } else {
          ibuttonA.reset_search();
          ibuttonB.reset_search();
      [B]  ibuttonC.reset_search();[/B]
      
          found = 0;
        }
      
        if (found == 0) {
          delay(200);
          return;
        }
      
      
        for (int x = 0; x<8; x++){ 
          Serial.print(buffer[x],HEX); //print the buffer content in LSB. For MSB: for (int x = 8; x>0; x--)
           Serial.print(" "); // print a space
         }
         Serial.println("\n"); // print new line
      
         //crc compute//
        // byte crc;
        // crc = ibuttonA.crc8(buffer, 7);
           // send a reply to the IP address and port that sent us the packet we received
          Udp.beginPacket(RecipientIP, RecipientPort);
          for (int x = 0; x<8; x++) { 
            sprintf(UDPbuffer, "%02X", buffer[x]);
            Udp.write(UDPbuffer, 2);
            if (x<7) {
              Udp.write(".");
            }
          }   
          if (found == 1) {     
            Udp.write("ZUSATZTEXT_1");
      [B]} else if (found==3) {
            Udp.write(“ZUSATZTEXT_2”);[/B]
          } else {
            Udp.write("ZUSATZTEXT_[B]3[/B]");
          }
          Udp.endPacket();
      
      }
      lg Romildo

      Kommentar

      • TobiTechnik
        Dumb Home'r
        • 15.02.2016
        • 14

        #20
        Hier mal mein erweiterter Sketch
        Angehängte Dateien

        Kommentar

        • romildo
          Lebende Foren Legende
          • 25.08.2015
          • 5159

          #21
          Da fehlen am Ende noch die Bedingungen:

          if (found == 1) {
          Udp.write("#Reader_1");
          } else if (found == 2) {
          Udp.write("#Reader_2");
          }
          else if (found ==3 ) {
          Udp.write("#Reader_3");
          }
          else {
          Udp.write("#Reader_4");
          }
          Udp.endPacket();
          lg Romildo

          Kommentar

          • romildo
            Lebende Foren Legende
            • 25.08.2015
            • 5159

            #22
            Ich habe eigentlich einen Code in #19 reingestellt, dieser wurde aber aus mir unerklärlichen Gründen nicht fregeschaltet.
            Es könnte also sein, dass dieser irgendwann doch noch auftaucht?
            Dies nur zur Info.
            Klicke auf die Grafik für eine vergrößerte Ansicht

Name: NichtFreigeschaltet.png
Ansichten: 279
Größe: 70,1 KB
ID: 169869
            lg Romildo

            Kommentar

            • TobiTechnik
              Dumb Home'r
              • 15.02.2016
              • 14

              #23
              PERFEKT

              Es funktioniert....

              Aller besten DANK

              Gruß Tobi

              Kommentar

              • TobiTechnik
                Dumb Home'r
                • 15.02.2016
                • 14

                #24
                Moin Moin,
                Ich habe nochmal eine frage. Wie kann ich die Zeit ändern in welchem Abstand der I-Button vom Arduino gelesen wird
                und die Zeit in welchem Abstand Daten an den Miniserver gesendet werden.

                Gruß Tobi

                Kommentar


                • romildo
                  romildo kommentierte
                  Kommentar bearbeiten
                  Im Arduino Sketch habe ich nur ein Delay von 200 gesehen.
                  Wenn kein Button gefunden wird, wird also 0,2 Sekunden gewartet, bis eine erneute Abfrage erfolgt.
                  Wird ein Button erkannt, wird er sofort weitergeleitet.

                  Wie Deine Programmierung in Loxone aussieht weiss ich nicht.
              • TobiTechnik
                Dumb Home'r
                • 15.02.2016
                • 14

                #25
                Okay danke.

                Gruß

                Kommentar

                Lädt...