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

  • Hallo,


    Wie schon in dem Thread zur Kommunikation mit der S-3200 geschrieben, habe ich an einer Lösung für die Service-Schnittstelle (COM1) in C++ mit MySQL Datenbank und WEB-Interface gearbeitet. Das ganze hat sich nun doch etwas in die Länge gezogen, da ich zur Service-Schnittstelle noch einiges herausfinden musste. Nun hat es mit einem ersten Release (Version 0.1.0) doch noch pünktlich zu Weihnachten geklappt.


    Hier das Projekt auf GitHub, und hier der Link zum Wiki, welches ich nun begonnen habe, da es durch die Länge des Threads doch sehr aufwändig ist, sich die nötigen Hinweise zusammenzusuchen. Im Wiki könnt Ihr selbst gern Eintragungen vornehmen - ich werde diese ggf. anpassen und ergänzen.


    Hier die grundlegenden Features und Eckdaten:


    - Dienst (p4d) übernimmt die Abfrage und Aufzeichnung der Daten
    - dynamische Anfrage der Menüstruktur bei der Steuerung S-3200
    - dynamisches ermitteln der Adressen für Parameter und Messwerte
    - Kommunikation mit der Steuerung erfolgt zentral über den p4d
    - Kommunikation des WEB-Interface (PHP) mit dem p4d über Tabellen
    - Session basiertes Login beim WEBIF
    - Darstellung der vollständigen Menüstruktur der S-3200
    - Ändern der Heizungs-Parameter im WEBIF
    - Konfiguration der aufzuzeichnenden Werte über das WEBIF
    - Anordnung der Messwerte auf der schematischen Darstellung mit der Maus im WEBIF
    - Konfigurierbare Status und Störungs-Mails
    - dynamische Chart Erstellung
    - Datenablage in MySQL Datenbank
    - und alles was ich vergessen habe 



    An der Stelle auch vielen Dank an Thomas (tunsin) der mir mit Ideen zur Seite Stand, das README geschrieben und alles unermüdlich auf Herz und Nieren testete und alle anderen die sich hier an dem Projekt beteiligen.



    Viele Grüße
    Jörg[ANNOUNCE] p4d - Visualisierung und Einstellung der S-3200 via COM1

  • neue Version 0.1.2 ist im git verfügbar, neben kleinen Erweiterungen und Verbesserungen sind diese Erweiterungen enthalten:


    - Konfiguration in das WEBIF verlagert sodass dort nun fast alle Einstellungen vorgenommen werden können, lediglich grundlegendes wie DB Account und Device sind in /etc/p4d.conf verblieben.
    - optionale tägliche Zeitsynchronisation der Steuerung
    - Automatische Aktualisierung der 'Aktuell' Seite
    - Status-Anzeige erweitert
    - Anzeige des kompletten Fehlerspeicher im WEBIF
    - Init Skript erweitert um 'doppelten' Start zu verhindern


    Grüße
    Jörg

  • Hallo,


    echt tolle Arbeit!


    ABER:
    Du solltest deine Seit so wie sie jetzt ist nicht öffentlich zugänglich machen. Da sind echt ein paar gravierende Sichheitsmängel in deinem PHP Code ... und ich hab nicht einmal danach suchen müssen ... :s


    Also: Wenn du keine Lust hast, dass dir andere auf deiner Seite herumpfuschen, nimm sie vom Netz und überarbeite den Code.


    lg Sebastian

  • Hallo Sebastian,


    danke für das Lob :)


    Die in den PNs besprochenen Sicherheitslücken habe ich geschlossen, nochmal Danke für deine Hinweise. Das einarbeiten in PHP und dem ganzen WEB Zeug dauert doch etwas, wird aber langsam :ohmy: , beschäftige mich sonst nur mit C/C++.


    Ist als Version 0.1.3 im git, meine Seite ist noch nicht wieder erreichbar, gebe ich morgen frei, für heute ist Feierabend ;)


    Grüße
    Jörg

  • Die Seite ist wieder Online


    Aktuelle Version ist nun 0.1.4 mit folgenden Änderungen zu 0.1.3:


    2014-01-07: version 0.1.4
    - added: recording of digital inputs
    - added: recording of analog outouts
    - bugfix: Fixed another security issue
    - change: improved graphical schema configuration in WEBIF


    Viele Grüße Jörg

  • Sehr schön zu sehen das sich was tut Ich habs auch schon versucht aber scheitere schon an der CRC berechnung der Frames :laugh:


    naja egal werds am wochenende auch mal bei mir versuchen und wenn ich was helfen kann könnt ihr mich gernn fragen.


    So aber eine frage hätt ich dann doch ist es möglich die Werte die ich von meinem Arduino noch habe mit rein zu nehmen?


    also z.B. Der arduino sendet mir noch diese Daten im Sekundentakt:



    wäre super da nen lösungsansatz zu haben oder soll ich des Programm vom arduino umschreiben das er auf eine Anfrage wartet das der aufwand zum implementieren nicht so schwer ist?


    MfG Philipp

  • Hey in deiner readme ist noch ein "Fehler"
    nicht so schlimm aber im abschnitt : Configure Time sync


    With the next steps you can enable a time synchronization of the p4d and the heating. If the you enable the feature you can set the max time difference between the LINUX time and the time of the heating. The p4d will set the time of the heating to the same time as the LINUX time.


    MfG Philipp

  • Hi,


    Danke für den Hinweis, hatte von Thomas ohnehin bereits eine überarbeitete Version des README, ist nun im git, den Abschnitt zur Zeitsynchronisation habe ich angepasst.
    Habe gerade viel um die Ohren daher geht es im Moment etwas langsamer weiter ;)


    Deine Frage zum Ardunino verstehe ich noch nicht, stehe auf der Leitung. Willst du alte Daten übernehmen um deine Historie nicht zu verlieren oder magst du die Daten weiter mit dem Arduino von der Heizung abfragen und über diesen zum p4d oder in die Datenbank weiterleiten (statt den p4d diese von der Heizung lesen zu lassen) ?


    Und danke für das Angebot zur Unterstützung komme ich sicher darauf zurück ;). Bin gespannt wie die Installation bei dir läuft, wenn es hakt ist der Input super um es entweder in die Duku einzuarbeiten oder aber noch etwas zu vereinfachen/automatisieren.


    Grüße Jörg

  • nun der arduino liest mehrere Temperaturen zusätzlich aus und gibt sie dann an ein angepasstes script von bashy weiter und baut sie dann in die seite mit ein.


    Also.


    Arduino und Fröling senden gemeinsamm auf 2 seriellen schnittstellen Daten zum Raspi und der verarbeitet sie dann wie bei der Com 2 geschichte


    nun zur frage ist es dann sehr schwierig beim p4d noch die 2te schnittstelle für zusatzdaten zum intigrieren das er die daten lesen kann wie bei der Com 2 methode oder müsst ich den Arduino umprogrammieren das er p4d die daten aktiv abholt?


    ich kann dir auch mal mein script und den Code vom arduino zukommen lassen wenn du willst und natürlich zeit hast.



    PS ich könnte ja vom installieren ein video machen und bei youtube reinstellen so als leitfaden oder sowas wenns von vorteill ist. :lol:

  • Hi,
    das sollte kein Problem sein, eine zweite Serielle abzufragen ist kein Ding.
    Ich kann sie pollen oder aber requesten, sollte vom Auwand her keinen großen Unterschied machen.


    Mit dem Video ist eine nette Idee ;)!


    Hast du am Arduino über die Analogeingänge weitere Fühler an Stellen an denen die Heizung keine hat? Mich würde sowas auch für meine Anlage interessieren, wenn möglich aber direkt am Raspi. Ich habe eine Solartermie Anlage mit eigenen Steuergerät bei dem mann leider nichts auslesen kann.


    Jörg

  • Ja hab nen mega clone aus china für 15€ der 16 Analoge eingänge hat und noch 3 digitale dazu genomen für die
    kacheloffen pumpe, der Wasserenthärtung und der Zirkulationspumpe


    anbei noch den code vom arduino ist leider noch nicht aus der beta raus und den code könnte man mit schleifen auch kürzen wenn mal zeit ist oder ganz neu schreiben xD


  • so habs jetzt mal versucht einzurichten und naja läuft nicht man müsste die install anleitung überarbeiten welche befehle wann wo eigegeben werden müssen oder es mit einem script automatisieren dann wäre noch wichtig zu wissen was für ein kabel verwendet werden soll also 1:1 oder ein nullmodem. dann vllt noch die install befehle auf einmal abrufen also z.B.


    apt-get install (hier alle benötigten pakete)


    dann zur einrichtung mit den mysql befehlen oder ne table datei usw usw.


    ich mach mal das angebot mit der anleitung ich schreib mal alle befehle bis morgen abend zusammen.


    ps den abschnitt zum automatischen start steig ich nicht ganz durch weil der befehl


    update-rc.d p4d defaults


    schmeist mir den fehler:


    insserv: Service localhost has to be enabled to start service p4d.
    Hier wäre interesannt wie denn das file "linux-p4d/contrib/p4d" beim abschnitt "# Required-Start: hostname $local_fs $network $syslog" aussehen müsste


    MfG Philipp

  • so jetzt läuft mal ein bischen was. er hat 3147 menü punkte ausgelesen ....


    aber der login geht leider noch nicht --> fehlermeldung:


    Processing WEBIF job 179 'check-login:0x0000/p4:141785a8765705819f5495b2c539c7b9'
    Processing WEBIF job 179 done with 'fail:login-denied' after 0 seconds


    wobei "141785a8765705819f5495b2c539c7b9" ja p4-3200 in md5 ist.


    schade das es noch nicht geht aber am samstag setzt ich einen extra pi mal nur für den p4d auf und logge alles mit ....

  • Hi,


    dann läuft der p4d ja schon einmal ;). Bis auf die benötigten Pakete sollte er einfach zu kompilieren gewesen sein, oder?


    Das mit dem updaterc läuft bei Thomas und mir ohne Probleme:

    Code
    root@raspberrypi:~/build/linux-p4d# update-rc.d p4d defaults
    update-rc.d: using dependency based boot sequencing


    Dabei werden brav die Links angelegt:

    Code
    root@raspberrypi:/etc# dir rc*/*p4*
    lrwxrwxrwx 1 root root 13 Jan 17 07:20 rc0.d/K01p4d -> ../init.d/p4d
    lrwxrwxrwx 1 root root 13 Jan 17 07:20 rc1.d/K01p4d -> ../init.d/p4d
    lrwxrwxrwx 1 root root 13 Jan 17 07:20 rc2.d/S02p4d -> ../init.d/p4d
    lrwxrwxrwx 1 root root 13 Jan 17 07:20 rc3.d/S02p4d -> ../init.d/p4d
    lrwxrwxrwx 1 root root 13 Jan 17 07:20 rc4.d/S02p4d -> ../init.d/p4d
    lrwxrwxrwx 1 root root 13 Jan 17 07:20 rc5.d/S02p4d -> ../init.d/p4d
    lrwxrwxrwx 1 root root 13 Jan 17 07:20 rc6.d/K01p4d -> ../init.d/p4d


    wie du am Datum siehst gerade nochmal getestet ;)


    Zum login, was steht denn dazu in der config Tabelle, stimmt der md5 Wert überein?


    ansonsten kannst du die auch nochmal droppen (drop table config;) dann ist alles zurück auf default.


    Nach der Installation bzw. dem droppen der config Tabelle und anschl. Restart des p4d ist der WEBIF User p4 und das Passwort p4-3200 wenn nicht hab ich da bein Initialisieren ggf. noch einen Bug.


    Grüße
    Jörg

  • Hi horschi!


    Super Arbeit! Wollts die Tage schonmal ausprobieren, aber bei meinem Linux-Heizungs-Rechner wurde durch Spannungsausfall leider die CF Karte mit dem OS zerschossen. Hab ich jetzt gestern erst wieder aufsetzen können und im Moment läuft bashy's Script wieder.



    Hab da paar Fragen:


    Diagramme:
    Kann ich die einfach so verändern? Heißt Aussehen (besonders der blaue Hintergrund stört mich etwas), welche Daten angezeigt werden, ...?


    Anschluss am P4
    Wie hast du das mit dem Stecker an der COM1 gemacht? Wenn ich bei mir was aufstecken will, muss ich immer den Deckel ein Stück nach hinten schieben. Wenn der Stecker drauf ist, kann ich den aber nicht mehr schließen... Ist das bei dir auch so?


    Steuerung generell
    Kann ich mit deiner Software den kompletten Kessel fernsteuern? Also quasi alle Funktionen, die ich auch übers Menü erreichen kann?


    Hast du da schon was ausprobiert? Wie sicher läuft die Sache?

  • Quote

    Hi horschi!


    Super Arbeit! Wollts die Tage schonmal ausprobieren,


    Danke!



    Quote

    Diagramme:
    Kann ich die einfach so verändern? Heißt Aussehen (besonders der blaue Hintergrund stört mich etwas), welche Daten angezeigt werden, ...?


    welche Daten vom p4d aufgezeichnet werden kann man im WEBIF einstellen, es wird alles angeboten was deine Steuerung liefert (dies wird automatisch inital abgefragt). Die Chartts werden in PHP mit Hilfe der pChart Library erstellt, was diese kann siehst du dort auf der HP. Das aussehen der Charts kannst du in meinem PHP Code nach belieben anpassen, habe ich aktuell nicht über das WEBIF einstellbar gemacht.



    Quote

    Anschluss am P4
    Wie hast du das mit dem Stecker an der COM1 gemacht? Wenn ich bei mir was aufstecken will, muss ich immer den Deckel ein Stück nach hinten schieben. Wenn der Stecker drauf ist, kann ich den aber nicht mehr schließen... Ist das bei dir auch so?


    ich habe den unten auf dem Board stecken und dafür das kabel was zur Buchse oben geht abgezogen ;)



    Quote

    Steuerung generell
    Kann ich mit deiner Software den kompletten Kessel fernsteuern? Also quasi alle Funktionen, die ich auch übers Menü erreichen kann? Hast du da schon was ausprobiert? Wie sicher läuft die Sache?


    Ja so ziemlich, alles was das Menü an Parametern bietet wird angezeigt, auch hier gilt das es nicht hard-coded ist sondern initial automatisch von der Heizung abgefragt wird, unterscheidet sich ja je nach Firmware und Ausstattung. fast alle im Menü einstellbaren Parameter kannst du über das WEBIF steuern, was noch fehlt sind die Zeiten, nicht die einzelnen wie die zur Pellets-Nachfüllung (die sind fertig) sondern die Gruppen Zeiten mit den ganzen Wochentagen (das ist nur noch Fleißarbeit und ich bin noch nicht dazu gekommen).


    Was leider (noch) nicht geht sind die tasten für An/Aus/Schornsteinfeger/Service, sind bestimmt auch über die COM1 verfügbar nur habe ich noch nicht herausgefunden wie man diese Abfragt oder einstellt.


    Grüße
    Jörg

  • so hab jetzt neu aufgesetzt auf nem jungfräulichen pi


    update-rc.d p4d defaults


    klappt jetzt nach dem ich die wolfram engine deinstalliert hab da erst noch


    insserv: warning: script 'mathkernel' missing LSB tags and overrides


    aufgetaucht ist


    aber


    root@raspberrypi:/etc# dir rc*/*p4*


    gibt mir nur


    Code
    root@sp-dual:/etc# dir rc*/*p4*
    rc0.d/K01p4d  rc1.d/K01p4d  rc2.d/S04p4d  rc3.d/S04p4d  rc4.d/S04p4d  rc5.d/S04p4d  rc6.d/K01p4d
    root@sp-dual:/etc#


    aus


    und wenn ich auf die seite gehe bekomm ich


    ErrorTable 'p4.samples' doesn't exist


    unter der Menu leiste


    wenn ich die mysql abfrage schmeisst er:


    Code
    mysql> select * from config;
    ERROR 1046 (3D000): No database selected
    mysql>
  • hier noch die ausgabe(n) der datenbank:


    mysql> SHOW DATABASES;
    +--------------------+
    | Database |
    +--------------------+
    | information_schema |
    | mysql |
    | p4 |
    | performance_schema |
    +--------------------+
    4 rows in set (0.00 sec)


    mysql> select p4;
    ERROR 1054 (42S22): Unknown column 'p4' in 'field list'
    mysql> USE p4;
    Database changed
    mysql> select * from config;
    ERROR 1146 (42S02): Table 'p4.config' doesn't exist
    mysql> SHOW TABLES FROM p4
    -> /c
    -> \c
    mysql> SHOW TABLES FROM p4;
    Empty set (0.00 sec)


    mysql>

  • Hi,
    dir rc*/*p4* passt bei dir doch super ist alles da, was meinst du?


    zum sql prompt, du musst erst zu der p4 db wechseln, das geht mit use p4, dann kannst du mit show tables; anzeigen lassen welche Tabelle existieren, wenn sie da sind sollte config darunter sind und der select funktionieren, wenn sie nicht da sind ging beim anlegen der Tabellen etwas schief, das macht der p4d bei seinem ersten Start.


    Jörg

  • okay prima sehe gerade den zweiten Post, die Datenbank ist schon mal da und das use hast du gefunden ;)


    Da show tables leer ausgeht ... hast du den p4d schon gestartet, wenn ja hat er die Tabellen nicht anlegen können und sicher ne Menge Fehlermeldungen im log, dann poste mir die Fehler-Meldungen nach dem Start bitte.


    Grüße
    Jörg


    BTW: was ist die 'Wolfram Engine'?

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!