+ Antworten
Ergebnis 1 bis 10 von 10
  1. #1
    Registriert seit
    Jan 2007
    Ort
    Nidda(Hessen)
    Beiträge
    6,963

    Lightbulb Temperatur auslesen über Hygrosens

    Habe folgendes Problem.

    Möchte mein Temperatursystem in IPS integrieren. Schnittstelle wird über Comport emuliert auf USB. Soweit sogut. Daten sind wohl in IPS vorhanden. Allerdings habe ich als Neuling nicht die geringste Ahnung wie ich an die Daten rankomme. Protokoll hänge ich mal dran, geht alles über ASCII.

    Für die Profis denke ich mal, die werden sich jetzt einen grinsen

    Allerdings weiss ich nicht wo ich anfangen soll. Vielleicht wäre ja der ein oder andere gütig mir mal unter die Arme zu greifen

    Erst mal Vielen Dank für´s Lesen!
    Angehängte Grafiken Angehängte Grafiken
    Gruß Rainer


    Unmögliches wird sofort erledigt, Wunder dauern etwas länger.


  2. #2
    Registriert seit
    Jul 2005
    Ort
    Roeselare - Belgium
    Beiträge
    1,394

    tja ...
    was soll man daruber erzählen.
    Eigentlich könntest du folgendes probieren:
    wenn eine '@<CR>' kommt, heisst dies das du ein block informationene bekommst.
    lauft bis zur "$<CR>"
    Dazwischen steht alle empfangene (und gesendete) data.
    uber eine schleife do ... until variable = "$<CR>"
    kannst du die info pare rausholen:
    config daten :
    IKanalnummerKonfigdatenSensor-serienummerCRC<CR>
    messwerte:
    VKanalnummerNutzdatenCRC<CR>
    die schleife wird unterbrochen durch die "$<CR>"

    Aber wie die Konfigdaten / Sensor-serienummer / Kanalnummer / Nutzdaten unsw gestalltet sein, das ist in das dokument beschrieben...
    also:
    VAABBBBCC<CR>
    mit AA : 8 bit zb. 10101010 -> kanalnummer
    und BBBB : hex wert in 0,01° also hex -> dec / 100 = temp wert
    und CC : CRC wert von AABBBB : kontrolwert (ublich in hardware protokolle)

    zb: (wie dein dokument)
    V0108DA7D<CR>
    V : messdaten
    01 : kanal nummer 1
    08DA : hex wert -> 2266 decimal /100 = 22,66°C
    7D : CRC wert von 0108DA

    Voila ... so einfach liest sich das.
    Fur den anfanger vielleicht nicht ganz leicht aber ich hoffe das oberiges vorbild dir genugend anstoss gibt um weiter zu lesen und dabei nach zu denken.

    machen wir noch etwas weiter :
    erst kommt der I-string
    I010110E0223C000000B1<CR>
    I: Konfigurationsdaten
    01 : -> kanalnummer : hier 1
    01 : immer 01 bei diesem gerät
    10E0223C000000 : serienummer des dallas sensor (uber eine tabelle könntest du einem namen geben)
    B1 : CRC wert

    Voila : dein protokoll de-protokoliert

    jetzt nur noch die data-blocke anständig in eine variablen bekommen (stichwort array) und in IPS-lesbare variablen ruber kopieren (durch die lese-schleiffe).

    Good luck - besser - Viel spass

  3. #3
    Registriert seit
    May 2005
    Ort
    Leipzig
    Beiträge
    3,964

    Hallo,

    Zitat Zitat von RWN Beitrag anzeigen
    Habe folgendes Problem.

    Möchte mein Temperatursystem in IPS integrieren. Schnittstelle wird über Comport emuliert auf USB. Soweit sogut. Daten sind wohl in IPS vorhanden. Allerdings habe ich als Neuling nicht die geringste Ahnung wie ich an die Daten rankomme. Protokoll hänge ich mal dran, geht alles über ASCII.

    Für die Profis denke ich mal, die werden sich jetzt einen grinsen

    Allerdings weiss ich nicht wo ich anfangen soll. Vielleicht wäre ja der ein oder andere gütig mir mal unter die Arme zu greifen

    Erst mal Vielen Dank für´s Lesen!
    damit zaeumst Du ja das Pferd von hinten auf. Einfacher ist es doch, die Tempersensoren (1-Wire) direkt zu betreiben, warum erst umstaendlich ueber die serielle Schnittstelle jagen?

    Schau mal im Forum bei 1-Wire nach, da finden sich viele Beitraege dazu, auch zu den Temp-Sensoren.

    Gruss Torro

  4. #4
    Registriert seit
    Jan 2007
    Ort
    Nidda(Hessen)
    Beiträge
    6,963

    Hallo GGGss,

    danke für dein Feedback. Das Protokoll habe ich schon verstanden nur nicht wie ich die Daten lesbar bekomme.

    jetzt nur noch die data-blocke anständig in eine variablen bekommen (stichwort array) und in IPS-lesbare variablen ruber kopieren (durch die lese-schleiffe).
    Genau hier ist bei mir Ende. Mit Array und Schleife kann ich erst mal nichts anfangen. Habe zwar einiges drüber gelesen aber verstanden habe ich es noch nicht.
    Ich habe mal eine Register-Variable mit dem Comport verbunden, jetzt sehe ich schon mal die Daten im Debugger.
    Gruß Rainer


    Unmögliches wird sofort erledigt, Wunder dauern etwas länger.


  5. #5
    Registriert seit
    Apr 2006
    Beiträge
    99

    Hallo Rainer,

    hilft Dir das?

    Gruss
    Otto
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	Com_Port_Configutation.png 
Hits:	395 
Größe:	13.1 KB 
ID:	1513   Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	Com_Port_Settings.png 
Hits:	349 
Größe:	13.5 KB 
ID:	1514   Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	Register_Variable.png 
Hits:	403 
Größe:	12.1 KB 
ID:	1515   Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	Variable.png 
Hits:	223 
Größe:	3.8 KB 
ID:	1516  
    Angehängte Dateien Angehängte Dateien

  6. #6
    Registriert seit
    Jan 2007
    Ort
    Nidda(Hessen)
    Beiträge
    6,963

    Hallo Otto,

    Tausend Dank dafür War genau das was ich gesucht habe.

    Habe es angepasst, funktioniert auf Anhieb.

    Ich tu mir mit den Scripten noch verdammt weh, irgendwie denke ich auch zu umständlich
    Gruß Rainer


    Unmögliches wird sofort erledigt, Wunder dauern etwas länger.


  7. #7
    Registriert seit
    Jan 2007
    Ort
    Nidda(Hessen)
    Beiträge
    6,963

    Hi Otto,

    hier mal dein Script angepasst für meine Verhältnisse, wird dann noch ausgebaut auf 20 Sensoren.

    PHP-Code:
    <?
    /*
    *******************************
     IP-SYMCON Event Scripting
    *******************************
    File     : Temp_Sensor_HY.ips.php
    Trigger  : OnUpdate Temp_Sensoren_HY
    Interval :
    */

    $buffer_temperatur1 = array();
    $buffer_temperatur2 = array();
    $buffer_temperatur3 = array();
     
    //$buffer_feuchte = array();
     

     
    $separator_temperatur1 "V01";
     
    $separator_temperatur2 "V02";
     
    $separator_temperatur3 "V03";
     
     
    //$separator_feuchte = "V02";

     
    $rs232bus GetValueString ("Temp_Sensoren_HY");
     
    $buffer_temperatur1 explode ($separator_temperatur1$rs232bus2);
     
    $buffer_temperatur2 explode ($separator_temperatur2$rs232bus2);
     
    $buffer_temperatur3 explode ($separator_temperatur3$rs232bus2);
     
    //$buffer_feuchte = explode ($separator_feuchte, $rs232bus, 2);

     
    $temperatur1 $buffer_temperatur1[1];
     
    $temperatur2 $buffer_temperatur2[1];
     
    $temperatur3 $buffer_temperatur3[1];
     
    //$feuchte = $buffer_feuchte[1];

     
    $temperatur1 = (float) hexdec(substr ($temperatur104))/100;
     
    $temperatur2 = (float) hexdec(substr ($temperatur204))/100;
     
    $temperatur3 = (float) hexdec(substr ($temperatur304))/100;
     
    //$feuchte = (float) hexdec(substr ($feuchte, 0, 4))/200;

     // Export Variable nach IPSYMCON
     
    SetValueFloat ("Heizung_Vorlauf"$temperatur1);
     
    SetValueFloat ("Heizung_Ruecklauf"$temperatur2);
     
    SetValueFloat ("Kaltwasser"$temperatur3);
     
    //SetValueFloat ("HYGROSENS_TempFeuchte_FEUCHTE", $feuchte);

    ?>
    Gruß Rainer


    Unmögliches wird sofort erledigt, Wunder dauern etwas länger.


  8. #8
    Registriert seit
    Feb 2005
    Ort
    Sarkwitz
    Beiträge
    3,517

    Standard Labormessgeräte

    Hallo Otto,

    Dein Skript funktioniert gut - danke.
    Für alle, die ähnliche Aufgabenstellungen haben oder es einmal ausprobieren möchten aber keine passende Hardware haben:
    man benötigt lediglich ein "Nullmodem-Kabel" (z.B. von Reich**t) und folgendes Test-Skript für ein zweites COM-Modul:

    PHP-Code:
    COMPort_SendText($id,"@".chr(13).chr(10)."I010110E0223C000000B1".chr(13).chr(10)."V0108DA7D".chr(13).chr(10));
    COMPort_SendText($id,"I02011050013C00000021".chr(13).chr(10)."V0208C276".chr(13).chr(10));
    COMPort_SendText($id,"I030110B0093C00000017".chr(13).chr(10)."V0308CCF9".chr(13).chr(10)."$".chr(13).chr(10)); 
    Mit dieser Methode lassen sich diverse Labormessgeräte mit einen seriellen Schnittstelle fernsteuern.
    Z.B. das Labornetzteil der 4005 Serie (Voltcraft, ELV ect.)
    Das Protokoll gibt es hier:

    MST

  9. #9
    Registriert seit
    Jun 2010
    Beiträge
    203

    Question ...auch Hygrosens einlesen möchte

    Hallo,

    bin Neuling bei IP-Symcon(2.2). Was genau muß ich wo machen, um über USB(im System COM4) meine Hygrosens-Sensoren zuerst anzulegen, Werte auszulesen..loggen....visualisieren...???

    Vielen Dank im voraus für jedwede Unterstützung, MFG, kabo63.

  10. #10
    Registriert seit
    Jan 2007
    Ort
    Nidda(Hessen)
    Beiträge
    6,963

    Dieser Thread ist für dich hilfreicher.

    http://www.ip-symcon.de/forum/f18/un...06/index2.html
    Gruß Rainer


    Unmögliches wird sofort erledigt, Wunder dauern etwas länger.


Ähnliche Themen

  1. Temperaturwerte schnell auslesen!!!
    Von crezs im Forum Allgemeine Diskussion
    Antworten: 3
    Letzter Beitrag: 13.11.06, 08:46
  2. Wer hat an der Temperatur gedreht?
    Von jolentes im Forum Dashboard
    Antworten: 5
    Letzter Beitrag: 19.05.06, 17:38
  3. Temperatur grafisch darstellen
    Von Jimmy Neutron im Forum Dashboard
    Antworten: 14
    Letzter Beitrag: 26.01.06, 21:46
  4. [neuling] wie elv fht auslesen und steuern
    Von pleibling im Forum Allgemeine Diskussion
    Antworten: 7
    Letzter Beitrag: 21.12.05, 11:31