Zurzeit bin ich dabei von Bticino Bus auf KNX umzustellen Geräte sind bestellt und in der Zwischenzeit hab ich mal so gelesen was manche hier so umgesetzt haben.
Oft ist 1Wire und Arduino gefallen https://knx-user-forum.de/forum/%C3%...arduino-am-knx
und da ich am vorbereiten war die Steuerung meiner Heizung mit dem Raspi und den 1Wire sensoren umzusetzen habe ich mich entschieden das ganze jetzt auf den Bus zu bringen
Was ich habe:
1. 1Wire Sensoren DS18B20
2. Arduino Nano und Leonardo letzeres noch in Bestellung
3. Siemens BCU 5WG1117-2AB12
4. Den Gesamten Thread Arduino am KNX gelesen
Irgendwo am ende des Threads hat jemand das ganze auch mit mehreren Sensoren am Laufen gehabt ich hab mir einfach mal seinen code geschnappt nur viele stellen sind für mich so nicht ersichtlich das ich das ganze für mich umbauen kann
Der erste teil ist eigt. Noch verständlich für mich
Dieser Teil sucht die Sensoren und wertet die temperatur aus ?
Wird in diesem teil jeder 1Wire sensore der Angeschlossen ist abgefragt ?
Hier bin ich jetzt komplette ratlos aber ich vermute hier wird die ausgelesene Temperatur Umgerechnet ?
dort müsste ich vermutlich bei den DS18B20 sensoren den Punkt
nutzen? hab dazu auch schon Beispiele gesucht aber keine gefunden
Im letzen teil übergibt er das ganze ja auf den Bus
Kurz hinter seiner Frage kam aber von @ThorstenGehrig das das ausreichen würde (hoffe ich hab das ordnetlich umgesetzt)
Die letzen zwei abschnitte sind für mich jetzt nicht so nachzuvollziehen
Ich hoffe ihr könnt mir helfen etwas licht ins dunkle zu bringen denn irgendwie geht nach 56 seiten Thread lesen nichts mehr ^^
Oft ist 1Wire und Arduino gefallen https://knx-user-forum.de/forum/%C3%...arduino-am-knx
und da ich am vorbereiten war die Steuerung meiner Heizung mit dem Raspi und den 1Wire sensoren umzusetzen habe ich mich entschieden das ganze jetzt auf den Bus zu bringen
Was ich habe:
1. 1Wire Sensoren DS18B20
2. Arduino Nano und Leonardo letzeres noch in Bestellung
3. Siemens BCU 5WG1117-2AB12
4. Den Gesamten Thread Arduino am KNX gelesen
Irgendwo am ende des Threads hat jemand das ganze auch mit mehreren Sensoren am Laufen gehabt ich hab mir einfach mal seinen code geschnappt nur viele stellen sind für mich so nicht ersichtlich das ich das ganze für mich umbauen kann
Der erste teil ist eigt. Noch verständlich für mich
Code:
#include <OneWire.h> #include <KnxTpUart.h> // Initialize the KNX TP-UART library on the Serial1 port of Arduino // PA Vergeben KnxTpUart knx(&Serial, "1.1.199"); // 1Wire Pin Angeben OneWire ds(10); // an pin 10 // 1Wire Settings? int haveSent = 0; byte i; byte present = 0; byte data[12]; byte addr[8]; int HighByte, LowByte, TReading, SignBit; float Tc_100, a; void setup() { // Serieller Port für Siemens BCU Serial.begin(19200); UCSR0C = UCSR0C | B00100000; // Irgendwo aus dem Forum Reinkopiert keine ahnung ob es richtig ist knx.uartReset(); }
Code:
void loop() { // Sensoren suchen delay(1000); // Zeit in der die Sensoren abgefragt werden ? if ( !ds.search(addr)) { // Serial.print("Keine weiteren Addressen.\n"); ds.reset_search(); return; }
Code:
ds.reset(); ds.select(addr); ds.write(0x44,1); // start Konvertierung, mit power-on am Ende present = ds.reset(); ds.select(addr); ds.write(0xBE); // Wert lesen LowByte = data[0]; HighByte = data[1]; TReading = (HighByte << 8) + LowByte; SignBit = TReading & 0x8000; // test most sig bit
Code:
if (SignBit) {// negative //TReading = (TReading ^ 0xffff) + 1; // 2's comp TReading = !TReading + 1; TReading = (TReading * -1); } // Tc_100 = (6 * TReading) + TReading / 4; // mal (100 * 0.0625) oder 6.25 bei ds18B20 // Tc_100 = (TReading*100/2); //bei ds18s20 Tc_100 = (TReading*100/2);
Code:
Tc_100 = (6 * TReading) + TReading / 4 * 100 * 6.25
Im letzen teil übergibt er das ganze ja auf den Bus
Code:
if (addr[6] == 0 && addr[7] == 135){ delay (100); haveSent = false; if (!haveSent) { float success = knx.groupWrite2ByteFloat("2/3/2", (Tc_100 / 100)); //Isttemp Schlafen haveSent = true; } } else if (addr[6] == 0 && addr[7] == 2){ delay (100); haveSent = false; if (!haveSent) { float success = knx.groupWrite2ByteFloat("5/3/2", (Tc_100 / 100)); //Isttemp Bad haveSent = true; } } else if (addr[6] == 0 && addr[7] == 252){ delay (100); haveSent = false; if (!haveSent) { float success = knx.groupWrite2ByteFloat("7/3/2", (Tc_100 / 100)); //Isttemp Wohnen haveSent = true; } }
Code:
else if (addr[6] == 0 && addr[7] == 252){ delay (100); haveSend = knx.groupWrite2ByteFloat("2/3/2", (Tc_100 / 100)); //Isttemp Schlafen } }
Code:
for ( i = 0; i < 9; i++) { // 9 bytes data[i] = ds.read(); } Serial.print( OneWire::crc8( data, 8), HEX);
Ich hoffe ihr könnt mir helfen etwas licht ins dunkle zu bringen denn irgendwie geht nach 56 seiten Thread lesen nichts mehr ^^
Kommentar