Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
Ja: https://github.com/henfri/Konnekting...uchte.ino#L141
Allerdings ist in der loop() auch ein delay(10) und ein delay(100). Und das ist in einer Schleife, die 20 mal durchlaufen wird.
Da sollte ich das task() wohl lieber in die Schleife packen, oder?
Danke.
Ohne delays? Hm, da fehlt mir jetzt die Fantasie.
Wie auch immer:
Das Verhalten hat sich nun verändert:
Code:
[Programmiere] Fortschritt: 1/19
[Programmiere] Bitte 'Programmieren' Knopf drücken...
[Programmiere] Ein Fehler ist aufgetreten.
de.konnekting.deviceconfig.ProgramException: Problem writing individual address
at de.konnekting.deviceconfig.Program.program(Program.java:122)
at de.konnekting.suite.ProgramDialog$4.run(ProgramDialog.java:192)
at java.lang.Thread.run(Thread.java:745)
at de.konnekting.suite.BackgroundTask$1.run(BackgroundTask.java:59)
Caused by: de.root1.slicknx.KnxException: Waiting for answer of type de.konnekting.mgnt.protocol0x00.MsgAck timed out.
at de.konnekting.mgnt.protocol0x00.ProgProtocol0x00.expectSingleMessage(ProgProtocol0x00.java:201)
at de.konnekting.mgnt.protocol0x00.ProgProtocol0x00.expectSingleMessage(ProgProtocol0x00.java:226)
at de.konnekting.mgnt.protocol0x00.ProgProtocol0x00.expectAck(ProgProtocol0x00.java:238)
at de.konnekting.mgnt.protocol0x00.ProgProtocol0x00.writeIndividualAddress(ProgProtocol0x00.java:388)
at de.konnekting.mgnt.KonnektingManagement.writeIndividualAddress(KonnektingManagement.java:70)
at de.konnekting.deviceconfig.Program.program(Program.java:118)
... 3 more
Hast du noch eine Idee?
Davon abgesehen habe ich aber auch ein Problem in dem Bodenfeuchte-Teil.
Standalone funktionierte es ja. Im Konnekting sketch stimmt was nicht:
(https://github.com/henfri/Konnekting...uchte.ino#L161)
Supply-Voltage ist immer größer als sensorVoltage.
Wie kann R negativ werden?
Das sieht mir nach irgendeinem Überlauf aus.
Ich sehe aber keinen Unterschied zu meinem Standalone code, der ja funktioniert.
sorry, ich bin python gewöhnt. Ich tue mich echt noch schwer mit einer Sprache die doch ein Level niedriger ansetzt.
%3.2f funktioniert auch nicht, da Arduino das nicht kennt
Aber ich habe mir dazu jetzt eine Funktion geschrieben.
Jetzt funktioniert am Debug-Log alles.
Einzig das Programmieren schlägt noch fehl:
[Programmiere] 1.1.33 henfri Bodenfeuchte
[Programmiere] Initialisiere ...
[Programmiere] Lese KOs ...
[Programmiere] Lese Parameter ...
[Programmiere] Fortschritt: 1/19
[Programmiere] Bitte 'Programmieren' Knopf drücken...
[Programmiere] Ein Fehler ist aufgetreten.
de.konnekting.deviceconfig.ProgramException: Problem writing individual address
at de.konnekting.deviceconfig.Program.program(Program.java:122)
at de.konnekting.suite.ProgramDialog$4.run(ProgramDialog.java:192)
at java.lang.Thread.run(Thread.java:745)
at de.konnekting.suite.BackgroundTask$1.run(BackgroundTask.java:59)
Caused by: de.root1.slicknx.KnxException: Waiting for answer of type de.konnekting.mgnt.protocol0x00.MsgAck timed out.
at de.konnekting.mgnt.protocol0x00.ProgProtocol0x00.expectSingleMessage(ProgProtocol0x00.java:201)
at de.konnekting.mgnt.protocol0x00.ProgProtocol0x00.expectSingleMessage(ProgProtocol0x00.java:226)
at de.konnekting.mgnt.protocol0x00.ProgProtocol0x00.expectAck(ProgProtocol0x00.java:238)
at de.konnekting.mgnt.protocol0x00.ProgProtocol0x00.writeIndividualAddress(ProgProtocol0x00.java:388)
at de.konnekting.mgnt.KonnektingManagement.writeIndividualAddress(KonnektingManagement.java:70)
at de.konnekting.deviceconfig.Program.program(Program.java:118)
... 3 more
[Programmiere] Fertig! Dauer: 4702 ms
if (Konnekting.isReadyForApplication()) {
// .... hier kommt alles rein was dein Sketch machen soll in der loop()
}
Wenn du Messungen, Digital-IOs und anderes außerhalb dieser Bedingung machst, beeinflusst das den Programmierprozess.
Übersetzt heißt die Bedingung ja so viel wie:
WENN Konnekting Zeit für die Anwendung hat, dann kümmere ich darum
void konnekting_delay(unsigned long t){
unsigned long start =0;
start = millis();
while(millis() < start + t){
Knx.task();
}
}
Delays sind böse, ganz böse. Knx.task() bitte direkt in der Loop() aufrufen, idealerweise 1x. In Sonderfällen öfters. Aber nicht so. Das bringt das Timing durcheinander.
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Kommentar