TS: PHP contra Python oder Hochsprachen

Hello,

eine Frage an die PHP Hardcore-Profis hier:

  • kann ich mittels PHP auf die/eine serielle Schnittstelle des Hosts zugreifen? (ich vermute: ja, weil Input/Output einstellbar sind)

  • kann ich die Kenndaten (Baudrate, Parity, ...) auch direkt aus PHP heraus manipulieren?

  • Wo bleibt dann die Response auf einen Call?

usw.

Ich benutze derzeit ein eher halbnützliches Tool/Klasse für Python3 (minimalmodbus) für die Abfrage meiner Stromzähler diverser PV-Anlagen.

Das soll mal in PHP eine etwas technischere, wesentlich schlankere Version von http://solaranzeige.de von Ulrich Kunz werden.

Die hübschen bunten Bilder mit Grafana möchte ich mir schenken und stattdessen lieber aussagefähige Tabellendaten zur Verfügung stellen.

Um das Ganze in Python mittels der Erweiterung minimalmodbus einigermaßen zum Laufen zu bringen, hat mich schon an den Rand der Verzweiflung gebracht. Und bevor ich versuche, Jonas Berg (Author der Python-Erweiterung) irgendwie zu erreichen, möchte ich lieber die Erkenntnisse in einem Interpreter zusammenfassen, denn PHP wird für die Webformulare usw. sowieso benötigt.

Da möchte ich jetzt nicht mehr auf Python umsteigen müssen.

Eine Alternative wäre sicherlich, die Abfrage- und Konfigurationsroutinen in einer Hochsprache abzufassen, die als BIN auf Linux läuft und pro Aufruf fast null Zeit braucht :-)

Glück Auf
Tom vom Berg

--
Es gibt soviel Sonne, nutzen wir sie.
www.Solar-Harz.de
S☼nnige Grüße aus dem Oberharz
  1. Hallo TS,

    kann ich mittels PHP auf die/eine serielle Schnittstelle des Hosts zugreifen?

    Ich würde vermuten, ja.

    https://www.php.net/manual/en/function.dio-open.php

    Gemacht hab ich das noch nicht. Mangels serieller Schnittstelle in meinem PC 😉

    Die Frage ist, ob Du das als Kommandozeilentool laufen lassen willst oder in einer Webseite. Die Frage ist auch, ob Du eine Interrupt-gesteuerte Meldung haben willst, wenn sich auf der seriellen Schnittstelle was tut (was ich in PHP eher nicht verorten würde), oder ob Du ein einfaches Request/Response Verfahren brauchst (was durch Polling machbar sein dürfte).

    Mit dio_tcsetattr kannst Du auf jeden Fall die Schnittstellenparameter einstellen. Ein Open, Write, Read, Close sollte dann machbar sein, beim Read musst Du aber - denke ich - damit rechnen, dass Du nicht alle Daten in einem Rutsch bekommst. Und bei einer schlechten Datenflusssteuerung kannst Du auch Daten verlieren, wenn Du zu langsam liest.

    Ich erinnere mich an einen Drucker, der seriell an einen Siemens-pseudokompatiblen PC angeschlossen war und der nur über Software-Flusskontrolle verfügte. Aber bis der sein "STOOOPPPP!" gesendet hatte, war sein Puffer schon übergelaufen und man musste ihn aus- und einschalten. Hach ja, die frühen Achtziger…

    Wo bleibt dann die Response auf einen Call?

    Die musst Du Byte für Byte einlesen, nachdem Du den Request raussgeschickt hast. Und dem Gerät auch etwas Zeit einräumen, über deinen Request nachzudenken. DAS programmierst Du dann tatsächlich lowest level mit busy-waiting.

    Rolf

    --
    sumpsi - posui - obstruxi
    1. Hello,

      CU heute Abend Online?

      Dann könnten wir ja vielleicht mal ein paar Worte mehr über

      • Eastron SDM 230, 530, ...
      • Minimal Modbus von Julian Berg
      • Modbus
      • Python
      • Hochsprachen unter Linux
      • Photpvoltaik - Logger
      • Energiemanagement
      • Home Automation
      • HTML-Frontpages für den ganzen Rotz
      • usw.

      sprechen?

      Glück Auf
      Tom vom Berg

      --
      Es gibt soviel Sonne, nutzen wir sie.
      www.Solar-Harz.de
      S☼nnige Grüße aus dem Oberharz
      1. Hallo TS,

        ja, ich möchte da sein. Aber von deiner Technik habe ich KEINE Ahnung. Ich habe die dio-Funktionen nur gegoogelt.

        Rolf

        --
        sumpsi - posui - obstruxi
        1. Hello,

          ja, ich möchte da sein. Aber von deiner Technik habe ich KEINE Ahnung. Ich habe die dio-Funktionen nur gegoogelt.

          Kann aber trotzdem zu interessanten Anregungen führen...

          Bis nachher

          Glück Auf
          Tom vom Berg

          --
          Es gibt soviel Sonne, nutzen wir sie.
          www.Solar-Harz.de
          S☼nnige Grüße aus dem Oberharz
  2. Hallo TS,

    Nachtrag: Die Baudrate kannst Du - sagt Tante Google - aber auch mit stty einstellen und dann einfach fread/fwrite verwenden.

    Problem könnte die Buffersize sein, irgendwoher muss fread ja wissen, dass die Schnittstelle fertig ist. Eventuell gibt das Protokoll des genutzten Geräts dazu etwas her, aber das musst Du definitiv low-level selbst erzeugen. Bei der seriellen Schnittstelle gibt's keinen Standard wie TCP/IP.

    Ich frag mich nur, warum Du das selbst tun musst. Gibt's keinen Controller für PV-Anlagen, der eine HTTP-Abfrage erlaubt?

    Rolf

    --
    sumpsi - posui - obstruxi