Ankündigung

Einklappen
Keine Ankündigung bisher.

ARDUINO am KNX

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

    Hi
    dank Lapheus hab ich ne neue spannende Arduino-Idee:
    Anbinden des Smartmeter per Leseauge:
    volkszaehler.org - wiki - TTL-IR-Schreib-Lesekopf

    Einige der Smartmeter scheinen ja recht einfach per Serial (TTL, s.o.) die relevanten Werte herzugeben.
    Damit wäre man bei 25€ Lesekopf, 30€ BCU und 10€ Arduino bei 65€ für eine direkte Auslesung auf den KNX. Wenn man 2 Zähler hat (so wie ich) sogar nur 90€ für beide...

    Ich denke ich werde das mal zusammenbasteln :-)

    @JuMi2006: hast du eigentlich das Problem mit Busmonitor 15.15.17 gelöst bekommen? Ich habe da keine Antwort mehr gesehen...

    Gruß
    Thorsten

    Kommentar


      @ Thorsten
      Für welche Stromzähler wäre das denn möglich?

      Ari

      Kommentar


        Theoretisch für alle mit optischer Schnittstelle. Manche sprechen ein Klartextprotokoll (welches sehr einfach zu lesen/parsen ist), manche (z.B. unser Iskra MT681) sprechen SML, ein binäres Protokoll, welches deutlich schwerer zu parsen ist.

        Hab die drei Iskra-Zähler meiner Eltern über einen IR-Kopf von co-met per USB mit Linux und einem Kommandozeilentool ausgelesen. Zwei Zähler via Raspberry PI, den dritten mit einem kleinen Linux-Server mit mehr Power (der macht noch mehr als nur Zähler auslesen).

        Mit dem Arduino geht sicher beides. Wobei glaub noch keiner das SML Protokoll auf den Arduino portiert hat.

        Kommentar


          Zitat von ThorstenGehrig Beitrag anzeigen
          @JuMi2006: hast du eigentlich das Problem mit Busmonitor 15.15.17 gelöst bekommen? Ich habe da keine Antwort mehr gesehen...
          Nein hab ich nicht, aber dafür hab ich noch ganz andere Phänomene entdeckt ... Ich bin bislang noch nicht dazu gekommen meinen KNX-Testkoffer auf en Schreibtisch zu stellen bzw. fehlt mir da momentan ne passende Schnittstelle. Momentan ist es beruflich und rund ums Haus+Familie etwas knirsch mit der Zeit.
          Umgezogen? Ja! ... Fertig? Nein!
          Baustelle 2.0 !

          Kommentar


            Zitat von rel Beitrag anzeigen
            Für welche Stromzähler wäre das denn möglich?
            Am einfachsten einzubinden sind Zaehler mit S0 Schnittstelle - einfach per PullUp (entweder per Hardware oder ueber den internen PullUp des Arduino) an einen DI haengen, dann brauchts auch keine Lesekoepfe mehr - und S0 haben eigentlich alle Zaehler die auch optische Ausgaenge haben.
            Ich habe einige davon (sowohl 3- als auch 1-phasig) an einer Wago haengen, das wird aber am Arduino aehnlich schmerzfrei funktionieren.

            Die Abfrage dann wenn moeglich per Interrupt machen damit auch nix verloren geht. Damit bekommt man zwar nicht den aktuellen Zaehlerstand (dazu braucht es halt SML und eben eine serielle Schnittstelle) aber entsprechend Impulse pro kWh - im Regelfall sollte das ausreichend sein, denn der Arduino kann ja zaehlen
            Spannung, Frequenz und so geben die meisten einfachen Zaehler ohnehin nicht raus, auch nicht per SML und letzteres macht IMHO nur Sinn wenn man den Zaehler der Stadtwerke auslesen moechte - fuer eigene Einbauten ist S0 eigentlich am pfiffigsten.

            gruesse :: Michael

            Kommentar


              Hier mal eine kommerzielle Lösung:
              Anbinden eines Ferrariszählers per Kamera und OCR:
              EnergyCam
              Soll ca. 100€ kosten...
              Muss man dann nur noch auf den Bus bekommen.
              Wobei mir die dort genannte Abtastrate von ein mal alle 15min zu niedrig ist, ob sich das ändern läßt, habe ich noch nicht herausgefunden.
              Tessi

              Kommentar


                Am einfachsten einzubinden sind Zaehler mit S0 Schnittstelle - einfach per PullUp (entweder per Hardware oder ueber den internen PullUp des Arduino) an einen DI haengen, dann brauchts auch keine Lesekoepfe mehr - und S0 haben eigentlich alle Zaehler die auch optische Ausgaenge haben.
                Ich habe einige davon (sowohl 3- als auch 1-phasig) an einer Wago haengen, das wird aber am Arduino aehnlich schmerzfrei funktionieren.
                Nur sind die S0 meistens verplombt... Also entweder denkt man dran oder zahlt fürs entplomben/plomben 50€. Da kann man auch gleich D0 machen und hat ein paar Daten mehr...
                Derzeit zwischen Kistenauspacken und Garten anlegen.
                Baublog im Profil.

                Kommentar


                  Zitat von greentux Beitrag anzeigen
                  Nur sind die S0 meistens verplombt... Also entweder denkt man dran oder zahlt fürs entplomben/plomben 50€. Da kann man auch gleich D0 machen und hat ein paar Daten mehr...
                  Wenn schon zitieren, dann bitte auch richtig
                  Ich schrieb:
                  Zitat von wintermute Beitrag anzeigen
                  Spannung, Frequenz und so geben die meisten einfachen Zaehler ohnehin nicht raus, auch nicht per SML und letzteres macht IMHO nur Sinn wenn man den Zaehler der Stadtwerke auslesen moechte - fuer eigene Einbauten ist S0 eigentlich am pfiffigsten.
                  Da steht eigentlich explizit "eigene Einbauten" im Zusammenhang mit S0 - also zB Photovoltaik, Wärmepumpe oder andere spezielle Verbraucher - oder einfach ein zusaetzlicher Zaehler hinter dem der Stadtwerke.

                  Aber wenn Du dir dafuer einen verplombten Zaehler kaufst und dann noch irgendwen fuers Entplomben bezahlst kann ich auch nicht helfen

                  gruesse :: Michael

                  Kommentar


                    Zitat von JuMi2006 Beitrag anzeigen
                    Nein hab ich nicht, aber dafür hab ich noch ganz andere Phänomene entdeckt ...
                    Kannst Du dazu mehr sagen?
                    Viele Grüße,
                    Stefan

                    DIY-Bastelprojekte: || >> Smelly One << || >> BURLI << ||

                    Kommentar


                      Hallo Arduino Experten,

                      ich würde gerne eine Türöffnung (derzeit per Fingerprint) durch eine Codetastatur + RFID ablösen. Ein Traum wäre auch noch zusätzlich ein Funktransponder wie beim Auto - wenn man zu Hause einfährt eben Taste am Schlüsselbund drücken (Abhörsicherheit bitte aussen vorlassen).

                      Denkt ihr, das wäre mit dem Arduino möglich ?? Only RFID - hat Thorsten ja schon gelöst !!!

                      LG und Danke
                      Daniel

                      Kommentar


                        Zitat von keldan2 Beitrag anzeigen
                        ich würde gerne eine Türöffnung (derzeit per Fingerprint) durch eine Codetastatur + RFID ablösen. Ein Traum wäre auch noch zusätzlich ein Funktransponder wie beim Auto - wenn man zu Hause einfährt eben Taste am Schlüsselbund drücken (Abhörsicherheit bitte aussen vorlassen).
                        Also wenn man jetzt mal ganz bewusst den Sicherheitsaspekt aussen vor lassen will: ja, klar ist das moeglich, ohne Probleme sogar.
                        Du brauchst nur ein Matrix-Keypad aussen und einen Arduino innen, google mal nach "arduino keypad", da sollte sich recht schnell was dazu finden lassen - inkl. Beispielcodes.
                        Funksteuerung koennte man zB ueber X10 oder Homelink machen, letzteres hat der eine oder andere vllt sogar schon im Auto verbaut. Einen fertigen Empfaenger fuers passende System kaufen der ein Relais schaltet (wichtig: Relais, keine Halbleiter!) und per DI an den Arduino haengen.

                        Ist alles in allem nur eine kleinere Uebung, die Hardware auszusuchen ist vermutlich mit dem meisten Aufwand verbunden.

                        gruesse

                        Kommentar


                          Arduino Leonardo

                          Hey Leute,

                          habe mir jetzt auch die BCU geholt

                          leider habe ich auch gewisse schwierigkeiten..

                          Habe einen Arduino Leonardo aber schaffe es nicht irgendwelche Signale auf den Bus zu bekommen

                          Meine KnxTpUart.h:
                          Code:
                          #ifndef KnxTpUart_h
                          #define KnxTpUart_h
                          
                          #include "HardwareSerial.h"
                          #include "SoftwareSerial.h"
                          #include "Arduino.h"
                          
                          #include "KnxTelegram.h"
                          
                          // Services from TPUART
                          #define TPUART_RESET_INDICATION_BYTE B11
                          
                          // Services to TPUART
                          #define TPUART_DATA_START_CONTINUE B10000000
                          #define TPUART_DATA_END B01000000
                          
                          // Debugging
                          #define TPUART_DEBUG false
                          #define TPUART_DEBUG_PORT Serial
                          
                          #define TPUART_SERIAL_CLASS SoftwareSerial
                          
                          // Timeout for reading a byte from TPUART
                          #define SERIAL_READ_TIMEOUT_MS 10
                          
                          // Maximum number of group addresses that can be listened on
                          #define MAX_LISTEN_GROUP_ADDRESSES 5
                          
                          enum KnxTpUartSerialEventType {
                          	TPUART_RESET_INDICATION,
                          	KNX_TELEGRAM,
                          	IRRELEVANT_KNX_TELEGRAM,
                          	UNKNOWN
                          };
                          
                          class KnxTpUart {
                          public:
                          	KnxTpUart(TPUART_SERIAL_CLASS*, int, int, int);
                          	void uartReset();
                          	void uartStateRequest();
                          	KnxTpUartSerialEventType serialEvent();
                          	KnxTelegram* getReceivedTelegram();
                          	
                              void setIndividualAddress(int, int, int);
                              
                          	void sendAck();
                          	void sendNotAddressed();
                          	
                          	bool groupWriteBool(int, int, int, bool);
                          	bool groupWrite2ByteFloat(int, int, int, float);
                          	
                          	bool groupAnswerBool(int, int, int, bool);
                          	bool groupAnswer2ByteFloat(int, int, int, float);
                          
                          	void addListenGroupAddress(int, int, int);
                          	bool isListeningToGroupAddress(int, int, int);
                              
                              bool individualAnswerAddress();
                              bool individualAnswerMaskVersion(int, int, int);
                              bool individualAnswerAuth(int, int, int, int, int);
                              
                              void setListenToBroadcasts(bool);
                              
                              
                          private:
                          	SoftwareSerial* _serialport;
                          	KnxTelegram* _tg;       // for normal communication
                              KnxTelegram* _tg_ptp;   // for PTP sequence confirmation
                          	int _source_area;
                          	int _source_line;
                          	int _source_member;
                          	int _listen_group_addresses[MAX_LISTEN_GROUP_ADDRESSES][3];
                          	int _listen_group_address_count;
                              bool _listen_to_broadcasts;
                          	
                          	bool isKNXControlByte(int);
                          	void checkErrors();
                          	void printByte(int);
                          	bool readKNXTelegram();
                          	void createKNXMessageFrame(int, KnxCommandType, int, int, int, int);
                          	void createKNXMessageFrameIndividual(int, KnxCommandType, int, int, int, int);
                          	bool sendMessage();
                              bool sendNCDPosConfirm(int, int, int, int);
                          	int serialRead();
                          };
                          
                          
                          
                          #endif
                          Und mein Arduino Programm:
                          Code:
                          #include <KnxTpUart.h>
                          #include <SoftwareSerial.h>
                          
                          SoftwareSerial Serial2(10, 11); // RX, TX
                          KnxTpUart knx(&Serial2, 1, 1, 55);
                          
                          void setup() {
                            Serial2.begin(19200);
                            UCSR1C = UCSR1C | B00100000;
                            knx.uartReset();
                          }
                          
                          void loop() {
                            knx.groupWriteBool(0,0,1, true);
                            delay (1000);
                            knx.groupWriteBool(0,0,1, false);
                            delay (1000);  
                          }
                          Bitte helft mir, bin schon am verzweifeln

                          Kommentar


                            Hallo,

                            das hatten wir schon mal so um Seite 18 herum gehabt.

                            Tue mal die Softwareserial raus und nehme Serial1, das sollte dann gehen

                            Jens

                            Kommentar


                              Zitat von intelligente Haustechnik Beitrag anzeigen
                              Tue mal die Softwareserial raus und nehme Serial1, das sollte dann gehen
                              Nae, lad dir mal lieber eine aktuelle Version der Lib runter - ich habe einige Aenderungen vor allem in Bezug auf den Leonardo und seine "spezielle" USB-Schnittstelle gemacht. Habe ich auch einige Posts zuvor mal erlaeutert...

                              gruesse :: Michael

                              Kommentar


                                funktioniert

                                Habs endlich hinbekommen

                                Jetzt können die Spielerein beginnen

                                Vielen dank für eure Hilfe

                                Kommentar

                                Lädt...
                                X