Ankündigung

Einklappen
Keine Ankündigung bisher.

ARDUINO am KNX

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • wintermute
    antwortet
    Da faellt mir noch einer ein 8)

    Ich grueble schon ewig rum wie ich in meinem Arbeitszimmer DALI und KNX zum Experimentieren bereitstellen kann ohne dass so bloed aufgerollte Kabel irgendwo rumliegen.
    In Anlehnung an das (vllt bekannte) Arduino-Networkmeter koennte man ein huebsches Dreheisen Voltmeter nehmen (fuer 10V, zB das EQB 72-10V von Reichelt), zusammen mit nem Arduino in einen Kasten bauen, dort KNX und DALI fest anschliessen und per zB Polklemmen rausfuehren. Dann mit dem Arduino die Buslast ermitteln und direkt als kbps auf dem Voltmeter anzeigen. Das waere eine wundervoll sinnlose Symbiose aus Design und Funktionalitaet

    Wenn ich mal Langeweile haben sollte muss ich unbedingt damit rumspielen...

    gruesse o/

    Einen Kommentar schreiben:


  • wintermute
    antwortet
    Roomba/Scooba Virtual Wall

    Hallo Bastler,

    hier mal ein kleiner Beispiel-Sketch welcher bis zu zwei unabhaengig zu schaltende virtuelle Waende fuer iRobots realisiert (es sind zwei weil ich das bei mir an einigen "Aussenecken" verbaue).
    Zudem koennen zwei Status-LEDs angesteuert werden, die den Status (deswegen nenne ich die so) der beiden "Waende" signalisieren (koennen). Die Helligkeiten der LEDs kann man ueber 1Byte Helligkeitswerte (0-255) vom Bus aus steuern und sie werden nicht-fluechtig im EEPROM des Arduino abgespeichert.
    Stati und konfigurierte Helligkeiten antworten auf Leseanfragen.

    Das ganze ist Timer-gesteuert und in der untenstehenden Version bisher nur auf einem Mega getestet, spaeter wird es auf einem Mini laufen - prinzipiell getestet ist es auch schon auf dem Mini, aber zum Rumspielen ist der Mega einfach praktischer - daher wird erst die finale Version fuer den Mini bereit gemacht werden. Ausserdem soll das hier ja auch etwas paedagogischen Charakter haben 8)

    Auf nicht-Mega Arduinos (also zB UNO, Mini, uswusf) muessen die Pins fuer die IR-LEDs hoechstwahrscheinlich angepasst werden - passende Werte dazu stehen im Source - freie Pin-Wahl gibts wegen der Timer-Abhaengigkeit nicht.
    Es laeuft Timer-gesteuert und ohne eine IR-Library weil das fuer das eigentliche Programm einfach praktischer und uebersichtlicher ist und den uC weniger belastet. Bedeutet aber auch, dass in dieser Version keine beliebigen IR-Kommandos gesendet werden koennen.

    Spaeter sollen noch 1wire (Temperatur) und Kontakte fuer bis zu 4 Berker-Sensorbaender dazu kommen, aber momentan funktioniert es nicht zuverlaessig wenn waehrend des Auslesens der 1wires KNX-Pakete eintrudeln. Hat scheinbar damit zu tun, dass die 1wire-Library zum Auslesen die interrupts temporaer deaktiviert und das kollidiert irgendwie mit der KNX-Lib - muss ich mal etwas tiefer suchen wie man das besten fixen kann.
    Zudem waere ein Watchdog noch irgendwie wuenschenswert, vielleicht spaeter dann mal...

    Der Sketch benoetigt einige Methoden (vornehmlich Bool und 1Byte) die in der aktuellen KNX-Lib noch nicht vorhanden sind, aber ich bin mir sicher, dass Thorsten bald eine aktualisierte Version parat haben wird

    Das ganze ist etwas laenger geworden als eigentlich benoetigt, ich habe mir mal ausnahmsweise Muehe gegeben nachvollziehbar zu programmieren und teilweise sogar Kommentare reinzuschreiben 8)

    Zur Beschaltung:
    • IR-LEDs mit passendem Vorwiderstand an die beiden konfigurierten Pins - beim Widerstand darauf achten, dass die maximale Stromentnahme eines DO beim Arduino nicht ueberschritten wird!
    • Wird nur eine IR-LED benoetigt, kann die zweite einfach weggelassen werden - Aenderungen im Code sind nicht erforderlich.
    • Status-LED(s) mit passenden Vorwiderstaenden an die entsprechenden Pins anschliessen und gegen Masse schalten, es gilt selbiges wie fuer die IR-LEDs.
    • Ich betreibe die IR-LEDs nicht ueber den Arduino selber, sondern habe einen LL-N-FET dazwischen. Also vom Pin mit zB 200Ohm ans Gate des FET, vom Gate mit zB 10kOhm gegen Masse. Source an Masse, Drain an die IR-LED mit passendem Vorwiderstand. Dazu habe ich dann einen billigen (und fertig aufgebauten) Schaltregler, der mir die 24V Begleitspannung vom Buskabel runtertaktet. Drauf achten, dass es sich bei dem FET wirklich um einen Logic-Level Typen handelt, sonst kommt man nicht auf maximale Leuchtkraft.
    • Als IR-LEDs wuerde ich Typen mit moeglichst engem Abstrahlwinkel und moeglichst hoher Leistung verwenden, ich nehme die IR333A, prinzipiell geht aber jede 940nm LED. 17° oder weniger waeren zu empfehlen, ansonsten wird die "Wand" gegen Ende etwas "unscharf". Meine Typen haben 100mA Dauerstrom, damit komme ich bei Tageslicht etwa 4m weit. Je nach Datenblatt und Vorwiderstand kann man die Stromstaerke und damit die Reichweite natuerlich noch etwas "boosten", problemlos vermutlich sogar fast verdoppeln weil bei der virtuellen Wand beim Senden nur ein Duty-Cycle von 50% zustande kommt - und gesendet wird nur in der Haelfte der Zeit
    • Wird ein externes Netzteil verwendet (zB ein Schaltregler) die 5V vom Buskoppler nicht mit dem Arduino verbinden, den Rest schon...

    Wen es interessiert und wers nicht aus dem Code rauslesen will: die IR-LED schickt ein 38kHz Rechtecksignal, welches jeweils fuer 1ms an-, dann fuer 1ms abgeschaltet wird - das interpretieren iRobots dann als virtuelle Wand...


    gruesse :: Michael

    Code:
    /*
      Der Sketch treibt 2 IR LEDs via Timer die unabhaengig geschaltet werden
      koennen. Dazu existieren zwei Status-LEDs deren Helligkeiten via KNX als
      Dimmobjekte geaendert werden koennen.
      Spaeter soll das ganze noch um 1wire und Anschluesse fuer Sensorbaender
      erweitert werden
      
      (c) 2014
      free for non-commercial/non-profit usage
    */
    
    // Moeglichkeit zum Speichern von persistenten Daten (Helligkeitswerte)
    #include <EEPROM.h>
    // KNX-Library einbinden
    #include <KnxTpUart.h>
    
    // physikalische Adresse & serielle Schnittstelle zum TP-UART
    KnxTpUart knx(&Serial1, 15, 15, 20);
    
    // KONFIGURATION ERSTE INFRAROT-LED
    // PIN an dem die erste IR-LED angeschlossen ist, kann nicht geaendert werden
    // da an einen Timer gebunden. Auf einem Mega ist dies D11, auf anderen
    // Plattformen D9 (OC1A/COM1A0, im Zweifelsfall den Pin im Datenblatt des uC
    // nachschlagen)
    const byte IR_LED1 = 11;
    // PIN an dem die Status-LED zur ersten IR-LED angeschlossen ist (PWM)
    const byte STATUS_LED1 = 5;
    // Helligkeit der ersten Status-LED
    byte status_led1_brightness = 255;
    // initialer Status der ersten IR-LED
    boolean ir_led1_active = 0;
    // Gruppenadresse der ersten IR-LED (1bit)
    String ir_led1_addr = "0/0/100";
    // Gruppenadresse der ersten Status-LED (Helligkeit, 1byte)
    String status_led1_addr = "0/0/101";
    
    // KONFIGURATION ZWEITE INFRAROT-LED
    // PIN an dem die zweite IR-LED angeschlossen ist, analog zu oben.
    // D12 auf einem Mega, D10 auf anderen Plattformen (OC1B/COM1B0)
    const byte IR_LED2 = 12;
    // PIN an dem die Status-LED zur zweiten IR-LED angeschlossen ist (PWM)
    const byte STATUS_LED2 = 6;
    // Helligkeit der zweiten Status-LED
    byte status_led2_brightness = 255;
    // Status der zweiten IR-LED
    boolean ir_led2_active = 0;
    // Gruppenadresse der zweiten IR-LED (1bit)
    String ir_led2_addr = "0/0/102";
    // Gruppenadresse der zweiten Status-LED (Helligkeit, 1byte)
    String status_led2_addr = "0/0/103";
    
    void setup() {
      pinMode (IR_LED1, OUTPUT);
      pinMode (IR_LED2, OUTPUT);
      pinMode (STATUS_LED1, OUTPUT);
      pinMode (STATUS_LED2, OUTPUT);
      
      // gespeicherte Helligkeitswerte aus dem EEPROM lesen
      status_led1_brightness = EEPROM.read(0);
      status_led2_brightness = EEPROM.read(1);
    
      // alle PINs auf LOW setzen
      digitalWrite(STATUS_LED1, LOW);
      digitalWrite(STATUS_LED2, LOW);
      digitalWrite(IR_LED1, LOW);
      digitalWrite(IR_LED2, LOW);
    
      // alle Interrupts deaktivieren
      cli();
      TCCR1A = 0;
      TCCR2A = 0;
      TCCR1B = 0;
      TCCR2B = 0;
      
      // Timer1 auf eine Frequenz von ungefaehr 38kHz konfigurieren
      TCCR1B |= (1 << WGM12); // CTC aktivieren
      TCCR1B |= (1 << CS10);  // keinen Prescaler
      OCR1A = 209;            // 210 Zyklen ergeben bei 16MHz Takt etwa 38kHz
      
      // Timer2 auf eine Frequenz von 1ms konfigurieren
      TCCR2A |= (1 << WGM21);  // CTC
      TCCR2B |= (1 << CS20);   // CS20 und CS22 setzen, daraus ergibt sich ein
      TCCR2B |= (1 << CS22);   // Prescaler von 128, also alle 8us ein Tick, bzw
      OCR2A = 124;             // 125 Ticks pro Millisekunde (1000us)
      TIMSK2 |= (1 << OCIE2A); // Timer2 Interrupt aktivieren
      
      // alle Interrupts aktivieren
      sei();
      
      // TP-UART initialisieren
      Serial1.begin(19200);
      UCSR1C = UCSR1C | B00100000; // gerade Paritaet
        
      knx.uartReset();
      // An Adressen binden
      knx.addListenGroupAddress(mainGroup(ir_led1_addr),middleGroup(ir_led1_addr),subGroup(ir_led1_addr));
      knx.addListenGroupAddress(mainGroup(ir_led2_addr),middleGroup(ir_led2_addr),subGroup(ir_led2_addr));
      knx.addListenGroupAddress(mainGroup(status_led1_addr),middleGroup(status_led1_addr),subGroup(status_led1_addr));
      knx.addListenGroupAddress(mainGroup(status_led2_addr),middleGroup(status_led2_addr),subGroup(status_led2_addr));
    
    }
    
    void loop() { }
    
    ISR (TIMER2_COMPA_vect) {
      // Timer2 ISR, wird alle 1ms aufgerufen
      if (ir_led1_active) {
        // wenn LED1 aktiv sein soll, den Ausgang OC1A toggeln
        TCCR1A ^= (1 << COM1A0);
        // sicherstellen, dass die LED auch wirklich ausgeht
        if ((TCCR1A & (1 << COM1A0)) == 0) {
          digitalWrite(IR_LED1, LOW);
        }
      } else {
        // wenn LED1 nicht aktiv sein soll, den Ausgang auf LOW ziehen
        digitalWrite(IR_LED1, LOW);
      }
      
      // dasselbe nochmal fuer LED2 (COM1B0)
      if (ir_led2_active) {
        TCCR1A ^= (1 << COM1B0);
        if ((TCCR1A & (1 << COM1B0)) == 0) {
          digitalWrite(IR_LED2, LOW);
        }
      } else {
        digitalWrite(IR_LED2, LOW);
      }
    }
    
    void serialEvent1() {
      KnxTpUartSerialEventType eType = knx.serialEvent();
      if (eType == KNX_TELEGRAM) {
        // ein Paket das wir "erwarten"
        KnxTelegram* telegram = knx.getReceivedTelegram();
        String target = String(0 + telegram->getTargetMainGroup()) + "/" +
                        String(0 + telegram->getTargetMiddleGroup()) + "/" +
                        String(0 + telegram->getTargetSubGroup());
        if (telegram->getCommand() == KNX_COMMAND_WRITE) {
          // Schreibendes Paket
          if (target == ir_led1_addr) {
            // IR-LED1 je nach empfangenem Wert schalten
            ir_led1_active=telegram->getBool();
            // Status-LED1 je nach empfangenem Wert schalten
            if (ir_led1_active) {
              // Status-LED1 auf konfigurierte Hellgikeit setzen
              analogWrite(STATUS_LED1,status_led1_brightness);
            } else {
              analogWrite(STATUS_LED1,0);
            }
          } else if (target == ir_led2_addr) {
            // IR-LED2 je nach empfangenem Wert schalten
            ir_led2_active=telegram->getBool();
            // Status-LED2 je nach empfangenem Wert schalten
            if (ir_led2_active) {
              // Status-LED2 auf konfigurierte Helligkeit setzen
              analogWrite(STATUS_LED2,status_led2_brightness);
            } else {
              analogWrite(STATUS_LED2,0);
            }
          } else if (target == status_led1_addr) {
            // empfangene Helligkeit fuer Status-LED1 im EEPROM speichern und falls noetig den aktuellen Wert anpassen
            status_led1_brightness=telegram->get1ByteIntValue();
            EEPROM.write(0,status_led1_brightness);
            if (ir_led1_active)
              analogWrite(STATUS_LED1,status_led1_brightness);
          } else if (target == status_led2_addr) {
            // empfangene Helligkeit fuer Status-LED2 im EEPROM speichern und falls noetig den aktuellen Wert anpassen
            status_led2_brightness=telegram->get1ByteIntValue();
            EEPROM.write(1,status_led2_brightness);
            if (ir_led2_active)
              analogWrite(STATUS_LED2,status_led2_brightness);
          }
          
        } else if (telegram->getCommand() == KNX_COMMAND_READ) {
          // Leseanfrage
          if (target == ir_led1_addr) {
            // aktuellen Status IR-LED1 zurueckgeben
            knx.groupAnswerBool(mainGroup(ir_led1_addr),middleGroup(ir_led1_addr),subGroup(ir_led1_addr),ir_led1_active);
          } else if (target == ir_led2_addr) {
            // aktuellen Status IR-LED2 zurueckgeben
            knx.groupAnswerBool(mainGroup(ir_led2_addr),middleGroup(ir_led2_addr),subGroup(ir_led2_addr),ir_led2_active);
          } else if (target == status_led1_addr) {
            // aktuelle Helligkeit Status-LED1 zurueckgeben
            knx.groupAnswer1ByteInt(mainGroup(status_led1_addr),middleGroup(status_led1_addr),subGroup(status_led1_addr),status_led1_brightness);
          } else if (target == status_led2_addr) {
            // aktuelle Helligkeit Status-LED2 zurueckgeben
            knx.groupAnswer1ByteInt(mainGroup(status_led2_addr),middleGroup(status_led2_addr),subGroup(status_led2_addr),status_led2_brightness);
          }
        }
      }
    }
    
    int mainGroup(String addr) {
      // gibt die Hauptgruppe einer Adresse zurueck
      return (addr.substring(0,addr.indexOf('/')).toInt());
    }
    
    int middleGroup(String addr) {
      // gibt die Mittelgruppe einer Adresse zurueck
      return (addr.substring(addr.indexOf('/')+1,addr.lastIndexOf('/')).toInt());
    }
    
    int subGroup(String addr) {
      // gibt die Untergruppe einer Adresse zurueck
      return (addr.substring(addr.lastIndexOf('/')+1).toInt());
    }

    Einen Kommentar schreiben:


  • greentux
    antwortet
    Ich weiß Max Wollte nur hier und da mal die Möglichkeiten ausloten. Sind sich ja doch ähnlich die Sachen... Sieht alles ganz gut aus.

    Einen Kommentar schreiben:


  • l0wside
    antwortet
    Zitat von greentux Beitrag anzeigen
    Ich würde gern die vorhandenen Sensoren von Elabnet weiterverwenden. Also meistens Multisensoren T/H. Wenn man das nun ans KNX bekommen würde zu nem akzeptablen Preis, könnte ich so langsam den 1wire Bus im Haus loswerden...
    T/H in KNX kostet ja schon einiges und in "schön" ist das auch nicht zu bekommen (UP).
    Wenn du noch ein bisschen Geduld hast, erfüllt der KNXMS (siehe Nachbarthread) deine Wünsche. Die HW v0.7 hat eine Onewire-Schnittstelle (DS2482-100) an Bord. Ich muss nur noch die Firmware dafür schreiben.

    Max

    Einen Kommentar schreiben:


  • wintermute
    antwortet
    Zitat von greentux Beitrag anzeigen
    Ich würde gern die vorhandenen Sensoren von Elabnet weiterverwenden.
    AFAIK beherrscht die 1wire Lib fuer den Arduino nativ nur Kommunikation mit 1820er Sensoren (also Temp.) - andere koennen zwar ausgelesen werden, aber vermutlich muss die Rueckgabe gesondert geparsed werden.
    Ich hab bisher nur 1820er an Arduinos gehaengt, keine anderen 1wire Sensoren, kann daher zum Aufwand bzw der Machbarkeit generell leider nicht viel sagen...

    Einen Kommentar schreiben:


  • greentux
    antwortet
    Ich würde gern die vorhandenen Sensoren von Elabnet weiterverwenden. Also meistens Multisensoren T/H. Wenn man das nun ans KNX bekommen würde zu nem akzeptablen Preis, könnte ich so langsam den 1wire Bus im Haus loswerden...
    T/H in KNX kostet ja schon einiges und in "schön" ist das auch nicht zu bekommen (UP).

    Einen Kommentar schreiben:


  • wintermute
    antwortet
    Zitat von ThorstenGehrig Beitrag anzeigen
    Einbau in eine UP-Dose: sicherlich nicht perfekt - mit bastelei wahrscheinlich schon(wenn es eine tiefe dose ist).
    Also wenn es nur um einen DS1820 (evtl mit Abzweig fuer externe 1wire-Sensoren) und zB einen preiswerten DHT11 fuer Luftfeuchte geht, dann wird das mit einem Arduino Mini zusammen ganz sicher auf eine runde Platine passen, die man direkt huckepack auf den Siemens stecken koennte. Problematisch koennte eher die Hoehe werden wenn man den Siemens in seinem Rahmen belassen moechte. Alternativ mit Kabeln anschliessen und dahinter packen.
    Muesste man aber halt ne Platine fuer aetzen...
    Da taeten dann aber noch ein paar kleine Bauteile drauf passen, IR-Receiver oder -Sender zB.

    gruesse :: Michael

    Einen Kommentar schreiben:


  • ThorstenGehrig
    antwortet
    Siemens TP-Uart: 26,50 €
    Arduino: Unter Nano 7 €
    Multisensor? Keine Ahnung welchen du meinst.
    So ad hoc finde ich für 1-wire jede menge Libraries - für den Multisensor noch nichts "out of the box".

    Einbau in eine UP-Dose: sicherlich nicht perfekt - mit bastelei wahrscheinlich schon(wenn es eine tiefe dose ist).
    Ich werde irgenwann mal Bilder liefern von meiner Transponderlösung - die kommt einmal in die Siedle-Anlage (da ist Platz) und evtl. einmal in die Garagentür (da ist nur eine UP-Dose). Dauert aber.

    Gruß
    Thorsten

    Einen Kommentar schreiben:


  • greentux
    antwortet
    Würde man jetzt also die Siemens BA, den Arduino und 1x 1Wire Multisensor in ein Gehäuse UP bekommen?
    Wo wäre man da preislich?

    Einen Kommentar schreiben:


  • Hennessy
    antwortet
    Ja, das tönt wirklich genial, was Ihr und insb. Thorsten da auf die Beine gestellt habt. Möchte auch mittesten, muss mir aber zuerst ein Arduino beschaffen (oder ein bereits vorhandenes AVR-Board modden).

    Einen Kommentar schreiben:


  • dreamy1
    antwortet
    Hallo Torsten,

    wie geil....Wahnsinn, was Du da für Energie reinsteckst!

    Mit dem Hardwareteil bin ich dran, die Sachen von Reichelt sind schon unterwegs zu mir. Werde in den nächsten Tagen eine Platine fertig haben, die einen Arduino Pro Mini, ein Grafik-LCD und ein paar Sensoren beinhaltet. Die wird dann einfach auf den Siemens-BA gesteckt...eine Abdeckplatte für das 55er System ist auch schon in der Mache :-)

    Einen Kommentar schreiben:


  • ThorstenGehrig
    antwortet
    So - ich war ein bisschen Fleißig - und hatte auch hilfe (Danke Wintermute).
    Ich habe jetzt mal einen Fork von der DKA-Library gemacht - ein bisschen für meine Zwecke angepasst (mit auf UNO / MEGA / Mini etc. compiliert werden kann) und einige Datentypen offiziell eingebaut.

    Ein Fork war notwendig da"DKA" (der Entwickler der Library) auf keine meiner Mails reagiert hat...

    Getested ist nicht allzuviel - das überlasse ich mal denjenigen die die Datentypen einsetzen.
    Ich nutze derzeit nur senden von Bolean und 14 Byte Text, die Library kann auch 2ByteInt, 2ByteFloat und 4 ByteFloat.
    Es ist möglich zu senden, auf Leseanfragen zu Antworten und zu Empfangen.

    Die Library ist hier zu finden:
    https://bitbucket.org/thorstengehrig...knx-user-forum

    Zur Implementierung von neuen Telegramm-Typen habe ich mir die relevanten Code-Teile mal in einzelne Textfiles kopiert. Wenn man sich die Anschaut wird ziemlich schnell klar wie man weitere Telegrammtypen implementiert.
    (nicht Lachen - nur zur Info: ich kann nicht Programmieren - und habe es trotzdem irgendwie geschafft).

    Dazu noch mein kleines Demo.ino. Hier kann man schön erkennen wie man zwischen Mega und UNO umschalten kann. Bei Arduinos mit mehreren Seriellen Schnittsellen (z.B. Mega).
    Die KnxTpUart.h hat eine Zeile "#define TPUART_DEBUG true" - diese muss auf false gesetzt werden wenn ein Arduino mit nur einer seriellen Schnittstelle zum Einsatz kommt.

    Den Code habe ich auf UNO/MEGA/NANO und ProMini an-getestet.

    Viel Spaß am Basteln,
    Thorsten
    Angehängte Dateien

    Einen Kommentar schreiben:


  • wintermute
    antwortet
    Zitat von ThorstenGehrig Beitrag anzeigen
    Und: @Wintermute: das der Code überhaupt läuft ist Sisyphus-arbeit und glück - da ich eigentlich garkein C++ kann - und strukturiertes Programmieren 20 Jahre her ist. Ich denke das "jeder" der ein bisschen C++ kann, sich die Telegram-Doku durchließt die Library erweitern kann. Für die verschiedenen (fehlenden) Telegrammtypen sind ca. 4x copy&paste und jeweils vielleicht 20 Zeilen Code (werte richtig umsetzen) nötig.
    Wenn du doch mal die Zeit findest - bringe ich dich gerne in einer Screensharing-Session auf höhe - und dann kannst du effektiv loslegen.
    Also ich hatte einige Sachen mit der Freebus Sache gebaut (vornehmlich gings aber nur um die serielle Anbindung eines eigenen uC), hatte dann aber doch schnell das Interesse verloren weil es einige Hardware-Klamotten gab die nicht wirklich rund liefen.
    Durch Dein Posting mit dem Siemens-BCU hatte ich da wieder neuen Mut geschoepft, einen bestellt - und siehe da: es hat einfach so funktioniert. Und das Hardware-Problem wurde zu einer Software-Herausforderung

    Ich sitz grad nebenbei an einer kleinen Lochrasterplatine fuer den Arduino Mini die 4 Berker-Linien, einen IR-Sender (in kraeftig), eine Status-LED und eine 1wire-Ankopplung bietet. Dummerweise passt die noch nicht in eine Standard-UP-Dose - noch nicht, jedenfalls
    Aber eigentlich ist das auch garnicht so schlimm, denn wer anders als ich braucht sowas schon

    Meine Zeitfrage war eher auf das Coding bezogen: deine "alte" Lib kann zB nicht mit READ/ANSWER umgehen, die neue kann zB kein 14Byte Text. Sowas bekomm ich nicht geordnet, zumindest nicht in der Freizeit...

    Generell: Screensharing um zu sehen wo im Code Du bist - gerne!
    Wenn ich Sachen einbringen kann die ich rausgefunden habe dann auch gerne, nur der logistische Aufwand waere problematisch fuer mich.


    Und nochmal PS: nicht Dein Licht unter den Scheffel stellen - ohne deine XXAPI-Erlaeuterung haette ich heute vermutlich keine VISU. Und das meine ich ernst! 8-)

    Einen Kommentar schreiben:


  • ThorstenGehrig
    antwortet
    uh. ah. danke.
    Aber nein: ich bin nur ein kleiner Stein im Forum - und ohne Forum hätte ich null plan. z.B. XXAPI-Visu: ich hab sie nicht gemacht - "nur" Dokumentiert. Ohne die Vorlage hätte ich nichts tun können...
    Wie sagt man so schön: nur gemeinsam sind wir Stark!

    Und: @Wintermute: das der Code überhaupt läuft ist Sisyphus-arbeit und glück - da ich eigentlich garkein C++ kann - und strukturiertes Programmieren 20 Jahre her ist. Ich denke das "jeder" der ein bisschen C++ kann, sich die Telegram-Doku durchließt die Library erweitern kann. Für die verschiedenen (fehlenden) Telegrammtypen sind ca. 4x copy&paste und jeweils vielleicht 20 Zeilen Code (werte richtig umsetzen) nötig.
    Wenn du doch mal die Zeit findest - bringe ich dich gerne in einer Screensharing-Session auf höhe - und dann kannst du effektiv loslegen.

    Gruß
    Thorsten

    Einen Kommentar schreiben:


  • keldan2
    antwortet
    Ja gerade heute habe ich auch noch gedacht (als ich die anleitung zur XXAPI Visu durchgelesen habe)das der Thorsten eine sehr grosse Bereicherung für dieses Forum ist!!! Der Mann ist echt klasse und ich ziehe meinen Hut 👍@Thorsten-weiter so!!!

    Einen Kommentar schreiben:

Lädt...
X