Fröling: [ANNOUNCE] p4d - Visualisierung und Einstellung der S-3200 via COM1

    Du hast Probleme beim Login? Schreibe uns im Forum "Probleme mit der Registrierung".

    • Hallo,

      ersteinmal vielen vielen Dank an Horchi der sich hier wirklich mit Herz und Seele um dieses Projekt kümmert.

      Ich habe jetzt den P4D bei mir am Laufen, funktioniert soweit alles einwandfrei, einzig mit dem Schreiben der Daten in Systemvariablen der CCU3 hab ich noch so meine Probleme, ich arbeite mit /etc/p4d/after-update.sh

      Brainfuck Source Code: after-update.sh

      1. #!/usr/bin/env bash
      2. source ~/.bashrc
      3. # -----------------------
      4. # example for Home-Matic
      5. # -----------------------
      6. # ---------------------
      7. # User settings
      8. LOG="/tmp/hm-push.log"
      9. HM_IP="192.168.145.12"
      10. HM_PORT="8181"
      11. DB_HOST="localhost"
      12. HM_URL_BASE="http://$HM_IP:$HM_PORT/Text.exe?Antwort=dom.GetObject(%22"
      13. # list of parameters like "address#type address#type ..."
      14. SENSORS="00#VA 01#VA 00#DI 04#VA 76#VA 78#VA"
      15. # ---------------------
      16. # script
      17. MYSQL="mysql --batch --silent --host=$DB_HOST -u p4 -pp4 -Dp4 --default-character-set=utf8"
      18. MAXTIME=`$MYSQL -e "select max(time) from samples;"`
      19. LASTTIME=`$MYSQL -e "select max(time) from samples where time < '$MAXTIME';"`
      20. if [ -n $LOG ] && [ "$1" != "debug" ]; then
      21. echo "----------------------------------------" >> $LOG
      22. echo `date` >> $LOG
      23. echo "updating homematic at ip $HM_IP" >> $LOG
      24. echo "actual measure at: $MAXTIME" >> $LOG
      25. echo "last measure at: $LASTTIME" >> $LOG
      26. echo "----------------------------------------" >> $LOG
      27. fi
      28. for s in $SENSORS; do
      29. TYPE=`echo $s | sed s/".*#"/""/g`
      30. ADDR=`echo $s | sed s/"#.*"/""/g`
      31. LASTPARAMS=`$MYSQL -e "select concat(replace(case when f.usrtitle is null or f.usrtitle = '' then f.title else f.usrtitle end, ' ', '%20'), \
      32. '%22).State(', \
      33. case when s.text is null then s.value else concat('%22',replace(s.text, ' ', '%20'), '%22') end, \
      34. ')') \
      35. from samples s, valuefacts f \
      36. where f.address = s.address and f.type = s.type \
      37. and time = '$LASTTIME' and s.address = '$ADDR' and s.type = '$TYPE';"`
      38. PARAMS=`$MYSQL -e "select concat(replace(case when f.usrtitle is null or f.usrtitle = '' then f.title else f.usrtitle end, ' ', '%20'),
      39. '%22).State(',
      40. case when s.text is null then s.value else concat('%22',replace(s.text, ' ', '%20'), '%22') end,
      41. ')') \
      42. from samples s, valuefacts f \
      43. where f.address = s.address and f.type = s.type \
      44. and time = '$MAXTIME' and s.address = '$ADDR' and s.type = '$TYPE';"`
      45. if [ -n $LOG ] && [ "$1" != "debug" ]; then
      46. echo "last data was: $LASTPARAMS" >> $LOG
      47. echo "actual data is: $PARAMS" >> $LOG
      48. fi
      49. if [ "$PARAMS" == "$LASTPARAMS" ]; then
      50. if [ "$1" == "debug" ]; then
      51. echo "skipping "$PARAMS", not changed"
      52. elif [ -n $LOG ]; then
      53. echo "skipping "$PARAMS", not changed" >> $LOG
      54. fi
      55. continue;
      56. fi
      57. if [ "$1" == "debug" ]; then
      58. echo curl "$HM_URL_BASE$PARAMS;"
      59. else
      60. if [ -n $LOG ]; then
      61. echo "calling curl $HM_URL_BASE$PARAMS;" >> $LOG
      62. fi
      63. curl "$HM_URL_BASE$PARAMS;" > /dev/null 2>&1
      64. fi
      65. done
      Show All

      Allerdings werden die Adressen 76#VA und die 78#VA (Puffer obe / Puffer unten) nicht an die CCU3 geschickt, an der Benennung der Systemvariablen in der CCU3 liegt es nicht, wenn ich mir den "/tmp/hm-push.log" ansehe fehlen da bei 2 Adressen die Bezeichnungen.

      Brainfuck Source Code: hm-push.log

      1. ----------------------------------------
      2. Sa 9. Jan 13:00:56 CET 2021
      3. updating homematic at ip 192.168.145.12
      4. actual measure at: 2021-01-09 13:00:52
      5. last measure at: 2021-01-09 12:58:43
      6. ----------------------------------------
      7. last data was: Kessel%22).State(81.00)
      8. actual data is: Kessel%22).State(81.00)
      9. skipping Kessel%22).State(81.00), not changed
      10. last data was: Abgas%22).State(218.00)
      11. actual data is: Abgas%22).State(222.00)
      12. calling curl http://192.168.145.12:8181/Text.exe?Antwort=dom.GetObject(%22Abgas%22).State(222.00);
      13. last data was: Tuer%22).State(0.00)
      14. actual data is: Tuer%22).State(0.00)
      15. skipping Tuer%22).State(0.00), not changed
      16. last data was: Aussen%22).State(2.00)
      17. actual data is: Aussen%22).State(2.00)
      18. skipping Aussen%22).State(2.00), not changed
      19. last data was:
      20. actual data is:
      21. skipping , not changed
      22. last data was:
      23. actual data is:
      24. skipping , not changed
      25. ----------------------------------------
      26. Sa 9. Jan 13:01:55 CET 2021
      27. updating homematic at ip 192.168.145.12
      28. actual measure at: 2021-01-09 13:01:52
      29. last measure at: 2021-01-09 13:00:52
      30. ----------------------------------------
      31. last data was: Kessel%22).State(81.00)
      32. actual data is: Kessel%22).State(81.00)
      33. skipping Kessel%22).State(81.00), not changed
      34. last data was: Abgas%22).State(222.00)
      35. actual data is: Abgas%22).State(223.00)
      36. calling curl http://192.168.145.12:8181/Text.exe?Antwort=dom.GetObject(%22Abgas%22).State(223.00);
      37. last data was: Tuer%22).State(0.00)
      38. actual data is: Tuer%22).State(0.00)
      39. skipping Tuer%22).State(0.00), not changed
      40. last data was: Aussen%22).State(2.00)
      41. actual data is: Aussen%22).State(2.00)
      42. skipping Aussen%22).State(2.00), not changed
      43. last data was:
      44. actual data is:
      45. skipping , not changed
      46. last data was:
      47. actual data is:
      48. skipping , not changed
      49. ----------------------------------------
      50. Sa 9. Jan 13:02:55 CET 2021
      51. updating homematic at ip 192.168.145.12
      52. actual measure at: 2021-01-09 13:02:52
      53. last measure at: 2021-01-09 13:01:52
      54. ----------------------------------------
      55. last data was: Kessel%22).State(81.00)
      56. actual data is: Kessel%22).State(81.50)
      57. calling curl http://192.168.145.12:8181/Text.exe?Antwort=dom.GetObject(%22Kessel%22).State(81.50);
      58. last data was: Abgas%22).State(223.00)
      59. actual data is: Abgas%22).State(225.00)
      60. calling curl http://192.168.145.12:8181/Text.exe?Antwort=dom.GetObject(%22Abgas%22).State(225.00);
      61. last data was: Tuer%22).State(0.00)
      62. actual data is: Tuer%22).State(0.00)
      63. skipping Tuer%22).State(0.00), not changed
      64. last data was: Aussen%22).State(2.00)
      65. actual data is: Aussen%22).State(2.00)
      66. skipping Aussen%22).State(2.00), not changed
      67. last data was:
      68. actual data is:
      69. skipping , not changed
      70. last data was:
      71. actual data is:
      72. skipping , not changed
      73. ----------------------------------------
      74. Sa 9. Jan 13:03:55 CET 2021
      75. updating homematic at ip 192.168.145.12
      76. actual measure at: 2021-01-09 13:03:52
      77. last measure at: 2021-01-09 13:02:52
      78. ----------------------------------------
      79. last data was: Kessel%22).State(81.50)
      80. actual data is: Kessel%22).State(81.50)
      81. skipping Kessel%22).State(81.50), not changed
      82. last data was: Abgas%22).State(225.00)
      83. actual data is: Abgas%22).State(225.00)
      84. skipping Abgas%22).State(225.00), not changed
      85. last data was: Tuer%22).State(0.00)
      86. actual data is: Tuer%22).State(0.00)
      87. skipping Tuer%22).State(0.00), not changed
      88. last data was: Aussen%22).State(2.00)
      89. actual data is: Aussen%22).State(2.00)
      90. skipping Aussen%22).State(2.00), not changed
      91. last data was:
      92. actual data is:
      93. skipping , not changed
      94. last data was:
      95. actual data is:
      96. skipping , not changed
      Show All

      Ich hab den P4D auch schon auf 0.6.8 aktualisiert.

      Woran kann das liegen?

      Gruß
      Christian
    • ich habs mal gemacht

      für sensor 04 bekomme ich einen Wert:

      Brainfuck Source Code

      1. MariaDB [p4]> select concat(replace(case when f.usrtitle is null or f.usrtitle = '' then f.title else f.usrtitle end, ' ', '%20'), '%22).State(', case when s.text is null then s.value else concat('%22',replace(s.text, ' ', '%20'), '%22') end,')') from samples s, valuefacts f where f.address = s.address and f.type = s.type and time = '2021-01-09 13:49:06' and s.address = '04' and s
      2. .type = 'VA';
      3. +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
      4. | concat(replace(case when f.usrtitle is null or f.usrtitle = '' then f.title else f.usrtitle end, ' ', '%20'), '%22).State(', case when s.text is null then s.value else concat('%22',replace(s.text, ' ', '%20'), '%22') end,')') |
      5. +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
      6. | Außentemperatur%22).State(2.00) |
      7. +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

      für 76 nicht:

      Source Code

      1. MariaDB [p4]> select concat(replace(case when f.usrtitle is null or f.usrtitle = '' then f.title else f.usrtitle end, ' ', '%20'), '%22).State(', case when s.text is null then s.value else concat('%22',replace(s.text, ' ', '%20'), '%22') end, ')') from samples s, valuefacts f where f.address = s.address and f.type = s.type and time = '2021-01-09 13:48:06' and s.address = '76' and
      2. s.type = 'VA';
      3. [b]Empty set (0.01 sec)[/b]

      was hier daran liegt das ich den nicht aufzeichne. Zeichnest du denn alle auf die du mit dem Skript abfragen möchtest?
      Liefert select * from samples where address = 78 and type = 'VA'; bei dir was?
      Seit Oktober 2009:
      Fröling P4 mit 1000l Pufferspeicher
    • Hallo,

      hat sich erledigt, hab meinen Fehler gefunden, in der Überischt "Aufzeichnung" steht VA:0x76, ich dachte ich muss dann in die after-update.sh 76#VA eintragen, das scheint aber Falsch.

      Bei der Ansicht Funktionsschema kommt bei Mouseover VA:118 bei Pufferoben, trage ich 118#VA in die after-update.sh funktioniert die Übermittlung.

      //EDIT: Bei select * from samples where address = 78 and type = 'VA' kommt bei mir

      -bash: Syntaxfehler beim unerwarteten Wort `from'

      Auch wenn ich 78 durch 118 ersetze kommt der selbe Fehler.

      Gruß
      Christian
    • der bash Fehler liegt daran das select ein SQL Statement ist, die bash kennt nur bash Syntax die kann kein SQL ;).

      Under Trick bei der Adresse ist das die ein 118 Dezimal und 76 ein Hexadezimal Wert ist, Hex Werte werden meist durch ein vorangestelltes 0x ab und zu auch furch ein h gekennzeichnet.
      Also 118 = 76h = 0x76 ;)

      MySQL versteht auch das mit dem 0x:

      Brainfuck Source Code

      1. MariaDB [p4]> select * from samples where address = 0x76 limit 1;
      2. +---------+------+-----------+---------------------+------------+------------+-------+------+---------+
      3. | address | type | aggregate | time | inssp | updsp | value | text | samples |
      4. +---------+------+-----------+---------------------+------------+------------+-------+------+---------+
      5. | 118 | VA | A | 2013-06-14 13:45:00 | 1417446113 | 1417446113 | 59.00 | NULL | 1 |
      6. +---------+------+-----------+---------------------+------------+------------+-------+------+---------+
      7. [b]1 row in set (0.01 sec)[/b]
      8. MariaDB [p4]> select * from samples where address = 118 limit 1;
      9. +---------+------+-----------+---------------------+------------+------------+-------+------+---------+
      10. | address | type | aggregate | time | inssp | updsp | value | text | samples |
      11. +---------+------+-----------+---------------------+------------+------------+-------+------+---------+
      12. | 118 | VA | A | 2013-06-14 13:45:00 | 1417446113 | 1417446113 | 59.00 | NULL | 1 |
      13. +---------+------+-----------+---------------------+------------+------------+-------+------+---------+
      14. [b]1 row in set (0.00 sec)[/b]
      Show All
      Zu Hex, Dezimal und auch SQL gibt es ganz viel Dokumentation im Internet.

      Grüße Jörg
      Seit Oktober 2009:
      Fröling P4 mit 1000l Pufferspeicher
    • New

      Hallo,

      ich habe grad im WebEBIF die Zeitsynchronisation gesehen und die mal aktiviert.
      Blau ist doch aktiviert? Gelb deaktiviert? Oder anders herum?
      Was macht die Zeitsynchronisation?
      Ich vermute, die stellt die Zeit im Kessel auf die Zeit des RPi, richtig?

      Aber ist 3:00 Uhr so klug? Genau da wird auch MEZ/MESZ umgestellt.
      Wäre vor 2:00 oder nach 3:00 Uhr nicht besser?

      Screenshot_2021-01-09_19-20-58.jpg


      Vorhin habe ich gemerkt, dass das WebIF nichts mehr anzeigt bzw. extrem laaaangsam reagiert.
      p4 state lieferte einen Fehler.
      Zuerst Neustart RPi.
      Dann habe ich den USB-Seriell-Adapter vom Kessel und vom RPi abgezogen und beide Enden neu verbunden.
      Danach wurden wieder Daten empfangen.

      So, jetzt zur Frage.
      Warum habe ich keine Fehler-Mail vom p4d erhalten?
      Test-Mails kommen an.

      Screenshot_2021-01-09_19-28-29.jpg
    • New

      Schalter nach rechts ist aktiviert, wie in Deinem Bild zu sehen. Der Hinweis mit der Zeitumstellung ist nicht von der Hand zu weisen, es sei denn unsere Politiker machen endlich mal, wofür wir sie bezahlen und beerdigen diesen Mist für immer...

      Welche Fehlermeldung kam denn bei "p4 state"?

      Hat der p4d Fehlermeldungen ins Log geschrieben? Falls nicht, verschickt er sicher auch keine Emails, weil er ja keinen Fehler erkennt.
    • New

      pellet-heizer wrote:

      Welche Fehlermeldung kam denn bei "p4 state"?
      Das weiß ich leider nicht mehr genau.

      Ich glaube aber so oder so ähnlich wie hier.
      Das ist aus /var/log/syslog.1:

      Source Code

      1. Read word failed, aborting
      2. Error reading serial interface, reopen now!

      Probleme mit dem USB-Seriell-Adapter hatte ich schon zweimal vor einigen Monaten.
      Deshalb war das mein erster Verdacht, als keine Daten mehr kamen.
    • New

      meute wrote:

      Probleme mit dem USB-Seriell-Adapter hatte ich schon zweimal vor einigen Monaten.Deshalb war das mein erster Verdacht, als keine Daten mehr kamen.

      Wenn nur die Kommunikation zwischen Betriebssystem und Adapter hängengeblieben war, hätte ein Reboot eigentlich reichen müssen. Eventuell gibt es Kontaktprobleme am USB Port? Oder nutzt Du DB9 auf RJ45 Stecker und ein Patchkabel dazwischen? Wenn es Kontaktprobleme gibt, könnten Vibrationen des Kessels den Fehler sporadisch auftreten lassen.
    • New

      pellet-heizer wrote:

      Wenn nur die Kommunikation zwischen Betriebssystem und Adapter hängengeblieben war, hätte ein Reboot eigentlich reichen müssen. Eventuell gibt es Kontaktprobleme am USB Port? Oder nutzt Du DB9 auf RJ45 Stecker und ein Patchkabel dazwischen? Wenn es Kontaktprobleme gibt, könnten Vibrationen des Kessels den Fehler sporadisch auftreten lassen.
      Bei mir ist es so verkabelt:
      Kessel <> Seriell-Verlängerung DE-9 (D-SUB 9pol.) 2,0m <> Prolific PL2303 USB-to-Seriell-Adapter <> USB-Verlängerung 1,5m <> RPi

      Ich musste auch schon damals vom USB-to-Seriell-Adapter den DE-9-Stecker trennen, damit es wieder lief.
      Nur USB trennen hat nicht geholfen.
    • New

      Mir sind heute noch zwei kleinere Fehler aufgefallen.

      1. Ich kann den "Pelletlager Mindestbestand" nicht ändern (unter Service -> Austragung -> Verbrauch). Das Eingabefeld zeigt korrekt eine Kommazahl an. Ich ändere diese von 0,0 auf 0,5, drücke "Speichern" und erhalte diese Fehlermeldung:

        mindestLager1.png mindestLager2.png

        Der Vergleich scheint als Integer zu erfolgen und da wäre 0 == 0 tatsächlich richtig. Es ist aber eine Kommazahl.


      2. Ich versuche die Austragungszeit für Pellets zu ändern (unter Service -> Austragung -> Zeiten). Es ist ein Eingabefeld für die Zeit vorhanden. Das steht aktuell auf 19:30 Uhr. Ich ändere die Zeit und drücke "Speichern". Es passiert nichts. Der neue Wert wird nicht gespeichert, es kommt aber auch keine Fehlermeldung.

        Austragung1.png Austragung2.png


    • New

      @pellet-heizer
      zu Punkt 1, ich habe diesen Parameter nicht daher kann ich das nicht reproduzieren.
      Was liefert denn ./p4 getp -a 1205 bei dir?

      Ich habe hier ein Beispiel mit dem Effekt gefunden, da liefert mir die Steuerung Information das der Parameter 2 Nachkommastellen hat aber den Faktor 1:
      [code]root@p4d {master u=} ~/build/p4d> ./p4 getp -a 447
      Address: 0x01bf

      Unit:
      Digits: 2

      Value: 640.00 (640)
      Min: 1.00 (1)
      Max: 9999.00 (9999)
      Default: 250.00 (250)
      Factor: 1[code]

      Die Werte in den Klammern kommen von der Steuerung. Das value wird auch genau in der Form von der Steuerung beim Set erwartet.
      Daher habe ich bei dem Beispiel keine Idee wie man damit umgehen muss. Ob das auch auf deinen fall zutrifft kann ich erst sagen wenn ich die Ausgabe sehe.
      Ich werde es dennoch anpassen und den Werte der dann unverändert ist an die Steuerung senden, dann ist der angezeigte Fehler ein anderer (communication error).

      Zu Punkt 2, Das weiß ich, der Time Dialog für einzelne Zeiten ist noch nicht fertig.
      Seit Oktober 2009:
      Fröling P4 mit 1000l Pufferspeicher
    • New

      Hallo Jörg,

      hier ist die Ausgabe:

      Source Code

      1. master:~# p4 getp -a 1205 -d /dev/ttyS0
      2. Address: 0x04b5
      3. Unit: t
      4. Digits: 1
      5. Value: 0.0 (0)
      6. Min: 0.0 (0)
      7. Max: 1000.0 (1000)
      8. Default: 0.0 (0)
      9. Factor: 10
      10. => 0.0t
      Show All

      Punkt 2 hat in der 0.5.18 schon funktioniert. Daher war ich etwas überrascht, daß es in der 0.6.8 nicht mehr funktioniert. Vermutlich hängt das mit den Änderungen für die Zeiten in den neueren Versionen zusammen. Das ist kein Problem. Zur Not kann ich die Parameter immer am Kessel einstellen. Jeder Gang macht schlank. ;)
    • New

      pellet-heizer wrote:

      Hallo Jörg,

      hier ist die Ausgabe:

      Source Code

      1. master:~# p4 getp -a 1205 -d /dev/ttyS0
      2. Address: 0x04b5
      3. Unit: t
      4. Digits: 1
      5. Value: 0.0 (0)
      6. Min: 0.0 (0)
      7. Max: 1000.0 (1000)
      8. Default: 0.0 (0)
      9. Factor: 10
      10. => 0.0t
      Show All

      okay das ist zum Glück ein anderer Fall als mein Beispiel oben - sit in der nächsten Version behoben (hoffe ich da ich den parameter nicht testen kann)

      Punkt 2 hat in der 0.5.18 schon funktioniert. Daher war ich etwas überrascht, daß es in der 0.6.8 nicht mehr funktioniert. Vermutlich hängt das mit den Änderungen für die Zeiten in den neueren Versionen zusammen.


      das ist richtig, da gab es noch keine spezifischen Dialoge für die verschiedenen Parameter Typen

      Das ist kein Problem. Zur Not kann ich die Parameter immer am Kessel einstellen. Jeder Gang macht schlank. ;)
      speziell bei Corona ;)

      ich Poste gleich wenn die neue Version fertig ist
      Seit Oktober 2009:
      Fröling P4 mit 1000l Pufferspeicher
    • New

      Version 0.6.10:

      - Punkt 1 der aktuellen Fehlermeldung von pellet-heizer ist behoben
      - für den p4d wird eigenes log (rsyslogd) angelegt (p4d.log) und ein logrotate (auf 50MB) eingerichtet
      - Die tägliche Dauer der einzelnen Zyklen wird erfasst und aufgezeichnet.
      die Aufzeichnung kann wie auch alle anderen unter Setup -> Aufzeichnung aktiviert werden. Hierbei Kann man die unterschiedlichen Status1 der Heizung separat aktivieren.

      1 Hinweisen auf Stati vorbeugend -> Status ;)
      Seit Oktober 2009:
      Fröling P4 mit 1000l Pufferspeicher