Hallo IPS-Community, ich glaub’ ich brauche eure Hilfe…
Ich habe eine USV der Marke „Mustek PowerMust 1000 USB - USV - 1000 VA“. Diese kann über USB und COM-Port ausgelesen bzw. gesteuert werden. Dazu gibt es die Originalsoftware „WinPower“, mit der alle aktuellen Daten und Parameter angesehen werden können (Screenshot unten).
Nun möchte ich genau diese Daten (Spannung, Ladezustand Batterie, Temperatur usw.) in IPS auswerten. Dazu gibt es 2 Möglichkeiten:
A) Daten aus dem Logfile der Software parsen und in IPS einlesen
B) Datenaustausch über den COM-Port
Möglichkeit A wäre natürlich die einfachste, da aber leider nicht alle Parameter bzw. Daten in das Logfile geschrieben werden (es fehlt z.B. Temperatur), fällt diese Version leider weg.
Bleibt Möglichkeit B! Und genau da liegt mein Problem: ich habe keine Ahnung wie ich das anstellen soll… Bin zwar nicht gerade ein PHP-Anfänger, aber mit dem Auslesen von Daten über RS232 habe ich noch keine Erfahrung.
Nun meine Frage an euch: Wie bekomme ich einen (für mich lesbaren Datenstring), welchen ich dann mit PHP aufsplitten und in Variablen schreiben kann?
Habe schon im Forum gesucht, doch leider bin ich nirgends weitergekommen. Es gibt haufenweise Skripts, die Daten über das Logfile einzulesen, doch über RS232 habe ich nichts gefunden (zumindest nichts, was mir in meine Augen weiterhilft). Ich weiß, dass alles mit dem Befehl „COMPort_SendText“ abgefragt werden kann, doch wohin diese Daten fliegen leider nicht. Und dann war da noch die Rede von Checksumme usw. => GAME OVER!
Was ich bisher gemacht habe:
- Com Port Instanz hinzugefügt (Baudrate: 2400!)
- Registervariable auf Com Port
So, wie geht es nu weiter?
Habe im Internet noch eine weitere Software gefunden (WinMust - Simple UPS Status Monitor), mit der man die USV auslesen/steuern kann. Der Quellcode dieser Software ist glücklicherweise frei zugänglich (habe ihn unten angefügt), sodass sicher einige von euch damit was anfangen können.
Soweit ich das verstehe, werden mit dem Skript „UPSCOMPortBase.cs“ die Daten ausgelesen und mit dem Skript „UPSInterfaceBase.cs“ ausgewertet. Weiters glaub ich gibt es 5 verschiedene Text-Befehle um mit der USV zu kommunizieren:
„M“ – Daten abfragen
„Q1“ – Packet Style A
„F“ – Packet Style B
“Q” – Toggle Alarm
“T” – USV testen
Hat jemand von euch sowas schon mal realisiert? Vielleicht ein kleines Skript, das mir weiterhelfen könnte?
Nochmals zum Verständnis: Ich suche kein Skript, mit dem man das „lesbare“ Ergebnis in z.B. Variablen schreiben kann (das schaff’ ich dann schon ;)), sondern wie man zu lesbaren Daten überhaupt kommt, sodass diese weiterverarbeitet werden können. Solte dies in eurem Skript schon dabei sein, sage ich auch nicht nein…
Bitte um eine Schritt-für-Schritt Anleitung für „Noch-Nicht-IPS-Experten“. Bin mir sicher, dass dies auch für viele andere User interessant ist, vor allem die allgemeine Vorgangsweise…
Freu mich auf eure Antworten!
Grüße
Simon
WinMust_Source.zip (150 KB)