TEMPerl USB Thermometer auslesen

Hallo IPS User :loveips:

ich suche eine Möglichkeit ein USB Termometer auszulesen.
Auf dem Termometer steht nur die Bezeichnung „TEMPerl -40°C bis +120°C“
mehr Daten kann ich aber nicht finden.
Zum Auslesen habe ich die Software TEMPer.
Diese erstellt Zyklische eine .csv Datei mit den aktuellen Temperaturen, kann ich diese Datei irgendwie mit IPS öffnene?

Wäre über Tips sehr dankbar!

Moin…

… ne CSV Datei ist schon mal nicht so schlecht!
Google mal CSV PHP und Du wirst sehr viele Beispielscripte finden wie Du die Daten einlesen kannst!
Gruß,
Peter

Sent from my iPhone using Tapatalk

Hi Jens,

Tipps zu PHP-Befehlen, die du dazu benötigen wirst…
PHP: fopen - Manual
PHP: fgets - Manual
PHP: fgetcsv - Manual
PHP: explode - Manual
PHP: fclose - Manual

In Ruhe durchlesen, verstehen oder auch nicht… dann weiterfragen mit eigenen Beispielen, was du genau auslesen und in Variablen schreiben willst.

Hallo,

danke für die schnelle Antwort, werd ich mal testen.
Schwierig wird es nur mit den vielen „Arrays“:confused::confused:

Das ist garnicht so schlimm, wie’s am Anfang aussieht… einfach mal über die Beispiele bei php.net lesen und versuchen zu verstehen…
Ich weiss schon… der sagt das so leicht… aber so haben fast alle (inkl. mir) hier angefangen eigene Ideen/Projekte verwirklicht.

Learning by doing;)

Ganz grob:
fopen… Datei öffnen
fgets… Werte/zeilen suchen
explode… Werte/Zeilen zerlegen und in Variablen speichern
fclose… Datei schließen

Ich habe jetzt doch noch hier im Forum einen besseren ansatz gefunden.
Problem ist, das der Datei Name sich alle 1 Minute ändert.
Werte aus einer CSV habe ich mit einem kleinen PHP Skript bekommen, da diese aber nur durch ein „,“ getrennt waren, konnte ich diese auch nicht verwenden.

Habe nun das ganze als „HID“ angelegt, wurde auch von IPS erkannt.

<?

HID_SendEvent(29413, 0, "=head1 VERSION");

?>

gucke ich mir nun über „Debug“ den HID an, bekomme ich auch eine Antwort, nur wie kann ich nun diese „DEBUG“ Antwort in mein Skript mit einbinden?

Wie sieht denn dein Script bisher aus?
Wenn du eine konkrete Sende-/Empfangs-Protokollbeschreibung für dein Gerät hast, dann lässt sich dies sicher unumständlicher (als über CSV-Datei) lösen. Das ist ein neuer Aspekt.

Wieviel Hex-Bytes kommen denn an?

Kannst Du Zusammenhänge in den Werten in Hex oder ASCII erkennen?

Ich lese meine HID-USB-µP-Geschichten auch in IPSymcon ein.

RegisterVariable an die HID-Instanz und Sript starten.

Ein Ansatz von meinem 3.2"-TFT-Touch Screen:

<?
//  *************************************************************************************************************************
//           Script zum Einlesen der Rückgabedaten bzw der Empfang von Befehle über das USB-HID Touch- Display (Daten)
//  *************************************************************************************************************************

switch($IPS_SENDER)        // ermitteln, wodurch das Skript aufgerufen wurde
{
 // case "Execute":         // von Hand aufgerufen: Schleife starten
  // break;
 // case "TimerEvent":                             // vom Timer aufgerufen: Schleife starten
  // break;
     

    case "RegisterVariable":                      // durch Registervariable aufgerufen: neuer Wert wurde empfangen


       SetValue(11684 /*[USB Display\Erdgeschoss_Low_Byte]*/, ord(substr ($IPS_VALUE, 2, 1)));
       SetValue(48068 /*[USB Display\Erdgeschoss_High_Byte]*/, ord(substr ($IPS_VALUE, 3, 1)));
       SetValue(14264 /*[USB Display\Obergeschoss_Low_Byte]*/, ord(substr ($IPS_VALUE, 4, 1)));
       SetValue(37595 /*[USB Display\Obergeschoss_High_Byte]*/, ord(substr ($IPS_VALUE, 5, 1)));
       SetValue(18005 /*[USB Display\Erdgeschoss_Zustand_Low_Byte]*/, ord(substr ($IPS_VALUE, 6, 1)));
       SetValue(15524 /*[USB Display\Erdgeschoss_Zustand_High_Byte]*/, ord(substr ($IPS_VALUE, 7, 1)));
       SetValue(43251 /*[USB Display\Temperatur_Aussen]*/, ord(substr ($IPS_VALUE, 8, 1)));
       SetValue(52873 /*[USB Display\Temperatur_Bad_oben]*/, ord(substr ($IPS_VALUE, 9, 1)));
       SetValue(42934 /*[USB Display\Temperatur_Bad_unten]*/, ord(substr ($IPS_VALUE, 10, 1)));
       SetValue(14442 /*[USB Display\Temperatur_Kind1]*/, ord(substr ($IPS_VALUE, 11, 1)));
       SetValue(18161 /*[USB Display\Temperatur_Wohnzimmer]*/, ord(substr ($IPS_VALUE, 12, 1)));
       
      // SetValue(33790 /*[Objekt #33790 existiert nicht]*/, ord(substr ($IPS_VALUE, 12, 1)));
      // SetValue(29803 /*[Haus\RFID\SCL011\CardUID]*/, ord(substr ($IPS_VALUE, 13, 1)));
      // SetValue(28865 /*[Objekt #28865 existiert nicht]*/, ord(substr ($IPS_VALUE, 14, 1)));

    break;
}
?>

Gruß Helmut

Hallo,
hier habe ich ein paar Infos über den TEMPerHUM gepostet. Seit ihr schon weiter?
Falls nicht hilft das vielleicht.

Gruß, Raul.

Lohnt sich Das denn? Ein Fühler besetzt einen USB-Port.

Sind Die so preiswert, kann ich nicht entdecken.

Gruß Helmut

Der Preis liegt so zwischen 10 und 25 Euro inkl. Versand, je nach Ausführung.

[ul]
[li]Nur Temperatur
[/li][li]Temperatur und Feuchtigkeit
[/li][li]Temperatur und Feuchtigkeit Gold Edition
[/li][/ul]

Hallo,
gibt es Software dazu und funktioniert Diese?

Du könntest Diese starten und in der HID-Instanz schauen welche Befehle welche Antworten bringen.

Ich habe eine Platine entwickelt, die bis zu 24 1Wire Fühler abfragt, ist das nicht eher was für Dich?

Gruß Helmut

Hallo,
ich wollte eine einfache lösung um die Temperatur im Server Schrank zu messen.
Ein USB Temperatur Sensor und ein IPS Script kling für mich sehr einfach!

Ich werde mal probieren und dann berichten.

Gruß, Raul.

Ja, das mach mal.

Das IPSymcon-HID-Instanz-Debug-Fenster zeigt auch den Verkehr an, die das Orginal-Programm auslöst.

Das Schwierige daran ist, zu erkennen, was ist was :wink:

Wenn Du mehr Temperaturen über USB brauchst: Meine erwähnte Platine geht auch über USB-HID und hat ein wenig mehr Sensoren :wink:

Gruß Helmut