Ankündigung

Einklappen
Keine Ankündigung bisher.

[Konnekting] Idee: BodenfeuchteSensor

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

    Moin,

    die delay-Funktion habe ich selbst geschrieben. Siehe einige Beiträge weiter oben.
    Ich verstehe aber nicht, was daran falsch ist.
    Wird knx.task in meiner Schleife in kürzerer zeitlichen Abfolge aufgerufen, als wenn ich es in loop() aufrufen würde?

    Gruß,
    Hendrik

    Kommentar


      Jetzt versteh ich was du da vor hast: Du willst ein Delay einbauen, und damit Knx.task() nicht verzögert wird, wird dein Delay damit "gefüllt".
      Gut, das sollte gehen. Aber ein wirklich guter Stil ist das nicht.
      Wenn eine Aktion nur alle 5sek laufen soll, dann merkst du dir für diese Aktion die letzte Ausführung und checkst das im loop() durchlauf ob die Aktion nun dran ist.

      Das
      Code:
       
       if (Konnekting.isReadyForApplication()) { // .... hier kommt alles rein was dein Sketch machen soll in der loop() }
      solltest du auch noch berücksichtigen. Beim Programmieren prasselt ein Telegramm so schnell wie möglich nach dem anderen auf den Arduino ein. D.h. wenn "Konnekting.isReadyForApplication()" false ist, sollte außer Knx.task() absolut nichts anderes in der loop() laufen. So hat KONNEKTING wirklich genug Zeit sich um die eingehenden Programmier-Telegramme zu kümmern. Das stellt dann auch sicher, dass nicht ein Telegramm zwischendrin gesendet werden muss, weil gerade eine Messung meint ihren Wert loswerden zu müssen.

      Nur wenn "Konnekting.isReadyForApplication()" true ist, sollte dein persönlicher Code in der loop() laufen. Denn dann ist ausreichend Zeit dafür.

      Kommentar


        Danke, verstanden!

        Kommentar


          Hallo,

          ich habe das jetzt so umgesetzt:
          https://github.com/henfri/Konnekting...denfeuchte.ino
          (der code zum log unten enthält lediglich ein Debug.println(F("task")); unter Knx.task())
          Das funktioniert aber nicht:
          1) meine Debug-Info mit dem Messwert wird nur genau einmal ausgegeben
          2) Die Programmiertaste reagiert nur, wenn ich die relativ kurz nach einem Reset drücke. Programmieren kann ich aber dann weiterhin nicht (problem writing individual adress).

          üüü…µQ…‰±•MÑ…ÉÑ¥¹‘•áõ22 skipbytes=13 paremLen=1
          memRead: index=0x23 data=0x00
          val[0]@35 -> 0x00
          task
          avr:-2147483600.00
          samples.getAverage():-2147483600.00
          Moisture:-330.10
          task
          DEBUG! free ram: 1004 bytes
          Start
          Initialize KonnektingDevice
          15/7/255 = 0x7fff
          PrgLed 0
          PrgState 0
          Manufacturer: 0xdead Device: 0x01 Revision: 0x00
          numberOfCommObjects: 4
          memRead: index=0x00 data=0x7f
          _deviceFlags: 01111111
          ->EEPROM
          memRead: index=0x01 data=0x11
          memRead: index=0x02 data=0x21
          memRead: index=0x0a data=0x0f
          memRead: index=0x0b data=0x0f
          memRead: index=0x0c data=0x80
          ComObj index=0 HI=0x0f LO=0x0f GA=0x0f0f setting=0x80 active=1
          memRead: index=0x0d data=0x00
          memRead: index=0x0e data=0x00
          memRead: index=0x0f data=0x00
          ComObj index=1 HI=0x00 LO=0x00 GA=0x0000 setting=0x00 active=0
          memRead: index=0x10 data=0x00
          memRead: index=0x11 data=0x00
          memRead: index=0x12 data=0x00
          ComObj index=2 HI=0x00 LO=0x00 GA=0x0000 setting=0x00 active=0
          memRead: index=0x13 data=0x00
          memRead: index=0x14 data=0x00
          memRead: index=0x15 data=0x00
          ComObj index=3 HI=0x00 LO=0x00 GA=0x0000 setting=0x00 active=0
          IA: 0x1121
          Reset triggered!
          Reset attempts: 9
          Data available: 11
          data not useable: 0x00. Expected: 0x03
          Data available: 23
          data not useable: 0x38. Expected: 0x03
          Data available: 22
          data not useable: 0x9c. Expected: 0x03
          Data available: 21
          data not useable: 0x10. Expected: 0x03
          Data available: 20
          data not useable: 0x0f. Expected: 0x03
          Data available: 19
          data not useable: 0x2a. Expected: 0x03
          Data available: 31
          data not useable: 0x0d. Expected: 0x03
          Data available: 61
          data not useable: 0xe3. Expected: 0x03
          Data available: 60
          data not useable: 0x00. Expected: 0x03
          Data available: 59
          data not useable: 0x80. Expected: 0x03
          Data available: 58
          data not useable: 0x00. Expected: 0x03
          Data available: 57
          data not useable: 0x00. Expected: 0x03
          Data available: 56
          Reset successful
          Init : Normal mode started

          Init successful
          KnxDevice startup status: 0x00
          getParamValue: index=5 _paramTableStartindex=22 skipbytes=8 paremLen=2
          memRead: index=0x1e data=0x80
          val[0]@30 -> 0x80
          memRead: index=0x1f data=0x00
          val[1]@31 -> 0x00
          getParamValue: index=7 _paramTableStartindex=22 skipbytes=11 paremLen=2
          memRead: index=0x21 data=0x00
          val[0]@33 -> 0x00
          memRead: index=0x22 data=0x00
          val[1]@34 -> 0x00
          getParamValue: index=6 _paramTableStartindex=22 skipbytes=10 paremLen=1
          memRead: index=0x20 data=0x00
          val[0]@32 -> 0x00
          getParamValue: index=8 _paramTableStartindex=22 skipbytes=13 paremLen=1
          memRead: index=0x23 data=0x00
          val[0]@35 -> 0x00
          task
          ^x mal
          task
          PrgBtn toggle
          PrgLed 1
          PrgState 1
          avr:-2147483600.00
          samples.getAverage():-2147483600.00
          Moisture:-330.10
          task
          ^x mal
          Es wirkt, als würde der code hängen, weil Moisture: ... nicht mehr ausgegeben wird (nur das eine mal). Aber ich denke, dass liegt daran, dass isready() False ist.
          Aber: Warum funktioniert die Programmiertaste nicht mehr zuverlässig (ich kann sie auch nicht mehr ausschalten, wenn sei einmal an ist).

          Gruß,
          Hendrik

          Kommentar


            Hi Hendrik!

            Warum hast du denn den RunningMedian wieder rausgenommen? Kann es sein, dass er in der Delay-Funktion hängt? Was ist, wenn du das isready mal raus nimmst? Ich hab das bei mir jetzt mal anders gelöst.. nicht so nobel, aber es scheint zu laufen. Muss jetzt nur noch die KNX Programmierung hinbekommen, dann melde ich mich mit dem Code, falls du ihn brauchst.

            Kommentar



              Moin,
              Zitat von Onkelandy Beitrag anzeigen
              Warum hast du denn den RunningMedian wieder rausgenommen?
              Habe ich doch garnicht.
              Zitat von Onkelandy Beitrag anzeigen
              Kann es sein, dass er in der Delay-Funktion hängt? Was ist, wenn du das isready mal raus nimmst?
              Ich muss mich da wieder eindenken. Ist zu lange her.

              Zitat von Onkelandy Beitrag anzeigen
              Ich hab das bei mir jetzt mal anders gelöst.. nicht so nobel, aber es scheint zu laufen. Muss jetzt nur noch die KNX Programmierung hinbekommen, dann melde ich mich mit dem Code, falls du ihn brauchst.
              Bis auf die Programmierung lief es ja bei mir auch, wenn ich mich recht entsinne. Pack doch mal deinen Status -gerne als Fork von meinem- in Github. Dann kann ich deine Entwicklung verfolgen und ggf. darauf aufbauen, wenn ich dazu komme.

              Gruß,
              Hendrik

              Kommentar


                Ah, ich dachte nur, weil du den Average ziehst und nicht den Median.

                Hm, dein aktueller Sktech läuft einwandfrei, sofern die sensor/supply Werte > 0 sind. Ist sensorValue auf 0, höngt sich's beim 2. Durchlauf auf. Ich muss wohl versehentlich einen alten geladen haben. Programmieren kann ich das Ding momentan auch nicht, aber das liegt nicht am Sketch. Frage dennoch - was bringt dir der Sensor denn für Werte? Könntest du mal dein Debug posten? Danke!

                Kommentar


                  Hier nun mein gänzlich überarbeiteter Sketch, alle Features sind soweit funktionsfähig: https://github.com/onkelandy/KonnektingSoilMoisture

                  Etwas unklar ist mir noch, was ich mit den Werten Widerstand und va. Tension anfangen kann.
                  Bei meinem Watermark stimmen die % auch nicht. Es ist sehr feucht, es werden aber 25% angezeigt.

                  Außerdem passt aktuell die Abfrage der Eingänge noch nicht ganz, da bin ich grad dran.
                  Zuletzt geändert von Onkelandy; 02.12.2018, 11:23.

                  Kommentar


                    Moin,

                    ich weiß nicht, ob ich froh oder entsetzt sein muss. Da stürme ich seit zweieinhalb Jahren mit beeindruckendem Tempo aufs Tor zu, bin kurz vorm Abschluss, da machst du ihn rein ;-)

                    Danke für deine Weiterarbeit daran. Mir ging auf den letzten Metern etwas der Sprit aus.

                    Du hast leider an einer Stelle in deinen commits die *.ino umbenannt, so dass ich nicht sehen kann, was du letztlich geändert hast. Kannst du das kurz zusammenfassen?

                    Mit den Widerständen kannst du nicht direkt etwas anfangen. Aber mit dem Tension-Wert:
                    • 0-10 Centibars = Saturated soil
                    • 10-30 Centibars = Soil is adequately wet (except coarse sands, which are beginning to lose water)
                    • 30-60 Centibars = Usual range for irrigation (most soils)
                    • 60-100 Centibars = Usual range for irrigation in heavy clay
                    • 100-200 Centibars = Soil is becoming dangerously dry for maximum production. Proceed with caution!
                    http://www.irrometer.com/basics.html


                    Viele Grüße,
                    Hendrik

                    Kommentar


                      Don't panic. Ohne deine Vorarbeit wär gar nix gegangen. Ich hab den Code nochmals überarbeitet bezüglich Debugging und Einlesen des Werts. Ich bin mir nun eigentlich sicher, dass alles so tut wie es soll. Aber ich bekomm im Debug noch komische Werte..
                      Tension ist abwechslungsweise positiv und negativ und moisture immer wieder mal auf 0.0 - und das obwohl resistance extrem ähnlich bleibt. Es könnte theoretisch an der Ausgabe des float liegen. Leider kann ich deine Funktion print_str nicht wirklich nutzen, da der Sketch schon zu groß ist. Testhalber brachte das aber auch keine anderen Werte.

                      Code:
                      resistance: 2749.6
                      moisture: 0.0
                      tension: 11.0
                      resistance: 2697.0
                      moisture: 29.0
                      tension: -19.0
                      resistance: 2733.6
                      moisture: 0.0
                      tension: 11.0
                      resistance: 2656.0
                      moisture: 29.0
                      tension: -18.0
                      resistance: 2754.6
                      moisture: 0.0
                      tension: 11.0
                      resistance: 2642.0
                      moisture: 29.0
                      tension: -18.0
                      resistance: 2744.6
                      moisture: 0.0
                      tension: 11.0
                      resistance: 2739.0
                      moisture: 29.0
                      tension: -19.0
                      Kannst du den Sketch mal bei dir testen und die Werte posten? Gerne auch supplyvoltage und sensorvoltage.
                      Auf github hab ich nochmals alles neu gemacht und die Dateien so benannt wie von dir. Wobei die Änderungen schon recht massiv sind.
                      Zuletzt geändert von Onkelandy; 02.12.2018, 19:32.

                      Kommentar


                        Hallo,

                        leider kann ich keinen Erfolg vermelden.

                        Resistance ist immer Null und auf dem KNX-Bus kommen auch keine Telegramme an.
                        Hast du eine Idee?
                        Die Konfiguration der Senosor_Pins habe ich natürlich angepasst.

                        currentTime: 11476. delayTime: 11532. Pin 6 is low
                        currentTime: 11792. delayTime: 11692. Pin 7 is high
                        supplyVoltage: 67
                        sensorVoltage: 0
                        resistance: 0.0
                        moisture: 0.0
                        tension: 330.0
                        Hast du etwas an der Zuordnung der Pins geändert? sensorVoltage ist immer Null (wenn ich den Anschluss von Pin6 und Pin7 tausche, dann ist SensorVoltage immer 67.
                        Bezüglich der Dateibenennung: Die Dateinamen sind mir eigentlich egal, aber darum, dass man die Änderungen verfolgen kann. Aber du hast recht: Das hat auch nicht geholfen. Da hast du ja wirklich fast alles neu gemacht.

                        Gruß,
                        Hendrik
                        Zuletzt geändert von henfri; 08.12.2018, 19:25.

                        Kommentar


                          Ich habe mal nachgemessen. Zwischen Pin 6 und Gnd sind immer 0V. Auch bei meinem alten Sketch.
                          Ich tendiere langsam zum Fertiggerät...

                          Kommentar


                            ... der Sensor ist kaputt :-(

                            Eins der zwei Kabel ist lose

                            Kommentar


                              Hallo,

                              so, ich habe das Kabel repariert -glaube ich.
                              Der log sieht jetzt so aus:
                              Code:
                              currentTime: 18075. delayTime: 18132. Pin 7 is low
                              currentTime: 18395. delayTime: 18294. Pin 6 is high
                              supplyVoltage: 63
                              sensorVoltage: 0
                              resistance: 0.0
                              moisture: 0.0
                              tension: 330.0
                              currentTime: 18395. delayTime: 18450. Pin 6 is low
                              currentTime: 18700. delayTime: 18599. Pin 7 is high
                              supplyVoltage: 11
                              sensorVoltage: 56
                              resistance: -2410.0
                              moisture: 0.0
                              tension: 5.0
                              currentTime: 18700. delayTime: 18755. Pin 7 is low
                              currentTime: 19019. delayTime: 18919. Pin 6 is high
                              supplyVoltage: 63
                              sensorVoltage: 0
                              resistance: 0.0
                              moisture: 0.0
                              tension: 330.0
                              currentTime: 19019. delayTime: 19075. Pin 6 is low
                              currentTime: 19335. delayTime: 19234. Pin 7 is high
                              supplyVoltage: 12
                              sensorVoltage: 56
                              resistance: -2356.0
                              moisture: 0.0
                              tension: 5.0
                              currentTime: 19335. delayTime: 19390. Pin 7 is low
                              currentTime: 19642. delayTime: 19542. Pin 6 is high
                              supplyVoltage: 64
                              sensorVoltage: 0
                              resistance: 0.0
                              moisture: 0.0
                              tension: 330.0
                              currentTime: 19642. delayTime: 19697. Pin 6 is low
                              currentTime: 19953. delayTime: 19853. Pin 7 is high
                              supplyVoltage: 13
                              sensorVoltage: 55
                              resistance: -2290.0
                              moisture: 0.0
                              tension: 4.0
                              currentTime: 19953. delayTime: 20008. Pin 7 is low
                              currentTime: 19953
                              cycleTime: 0
                              moisture after median: 0.0
                              moisture below lower threshold: 0.0
                              Wie sieht das bei dir aus?
                              Die negativen Widerstände sollten nicht sein...

                              Gleiche Hardware, mein Code:
                              Code:
                              task
                              avr:938.20
                              samples.getAverage():890.47
                              Moisture:  8.17
                              task
                              avr:933.60
                              samples.getAverage():893.26
                              Moisture:  8.15
                              task
                              avr:925.60
                              samples.getAverage():884.32
                              Moisture:  8.12
                              task
                              avr:925.20
                              samples.getAverage():883.53
                              Moisture:  8.12
                              task
                              Das wundert mich jetzt..

                              Gruß,
                              Hendrik
                              Zuletzt geändert von henfri; 08.12.2018, 21:34.

                              Kommentar


                                Ja, ich kann meine Werte auch noch nicht so richtig nachvollziehen. Werde demnächst mal den Widerstand des Sensors messen und schauen, ob es da ne Korrelation gibt.

                                Deine sehr geringen Voltage Werte wundern mich aber auch. Das sind bei mir zwischen 800 und 600, sowas um das rum. Wohingegen avr doch ein Wert zwischen 0 und 100 Prozent sein sollte, nicht?

                                Kommentar

                                Lädt...
                                X