+ Antworten
Seite 10 von 10 ErsteErste ... 8 9 10
Ergebnis 91 bis 96 von 96
  1. #91
    Registriert seit
    Jan 2013
    Ort
    Ostseeküste
    Beiträge
    212

    Hallo im Anhang mein Skript, bei mir läuft es jetzt.

    PHP-Code:
    <?php
    //includes
    $IpWwc "192.168.2.155"// IP der Wärmepumpe
    $WwcJavaPort "8889"// Port der Wärmepumpe
     
    include"25100 /*[Stammdaten\Heizungsanlage\Skript/Heizungsanlage\Werte-Wärmepumpe\java_daten]*/.ips.php";

    //Dummy Modul anlegen als Heimat der Messdaten im Selben Pfad wie das Script 
    $parentobject IPS_GetObject($_IPS['SELF']); 
    $parentID $parentobject['ParentID']; 

    //Variablen 
    $sBuff 0
    $time1 time(); 
    $filename "test.tst"
    $JavaWerte 0
    $refreshtime 5//sekunden 

    echo '<meta http-equiv="refresh" content="5" >'

    // connecten 
    $socket socket_create(AF_INETSOCK_STREAM,0); 
    $connect socket_connect($socket$IpWwc$WwcJavaPort) || exit("socket_connect fehlgeschlagen"); 


    if (
    $connect 1
        echo 
    "PASS: Verbunden mit WWC Java Console $IpWwc Port: $WwcJavaPort <br>"
    else 
        echo 
    "ERROR: Nicht verbunden mit WWC Java Console  <br>"

    $timestamptime(); 
    $datum date("d.m.Y",$timestamp); 
    $uhrzeit date("H:i:s",$timestamp); 
    printf('============================================================== <br>'); 
    printf('Ausleszeit: %s - %s Uhr <br>',$datum,$uhrzeit); 
    printf('Refresh alle 5s !<br>'); 
    printf('! TEST !<br>'); 
    printf('============================================================== <br>'); 
    //--------------------------------------------------------------------------- 

    // Daten holen 
    $msg pack('N*',3004); 
    //printf('msg:%s <br>',$msg); 
    $send=socket_write($socket$msg4); //3004 senden 
    //printf('Bytes send:%d <br>',$send); 


    $msg pack('N*',0); 
    //printf('msg:%s <br>',ord($msg)); 
    $send=socket_write($socket$msg4); //0 senden 
    //printf('Bytes send:%d <br>',$send); 


    socket_recv($socket,$Test,4,MSG_WAITALL);  // Lesen, sollte 3004 zurückkommen 
    $Test unpack('N*',$Test); 
    //printf('read:%s <br>',implode($Test)); 

    socket_recv($socket,$Test,4,MSG_WAITALL); // Status 
    $Test unpack('N*',$Test); 
    printf('Status:%s <br>',implode($Test)); 

    socket_recv($socket,$Test,4,MSG_WAITALL); // Länge der nachfolgenden Werte 
    $Test unpack('N*',$Test); 
    printf('L&auml;nge der nachfolgenden Werte:%s <br>',implode($Test)); 

    $JavaWerte implode($Test); 
    printf('============================================================== <br>'); 

    for (
    $i 0$i $JavaWerte; ++$i)//vorwärts 

    socket_recv($socket,$InBuff[$i],4,MSG_WAITALL);  // Lesen, sollte 3004 zurückkommen 
    $daten_raw[$i] = implode(unpack('N*',$InBuff[$i])); 
    //printf('InBuff(%d): %d <br>',$i,$daten_raw[$i]); 

    //socket wieder schliessen 
    socket_close($socket); 

    // Werte anzeigen 
    for ($i 0$i $JavaWerte; ++$i)//vorwärts 

    if (
    $i >= 10 $i <= 28// Temperaturen 
        
    {($daten_raw[$i] = $daten_raw[$i]*0.1); 
          
    //printf('(%d)%s : %.1f &#176C<br>',$i,$java_dataset[$i],$daten_raw[$i]); 
          
    $varid CreateVariableByName($parentID$java_dataset[$i], 2'WP_'.$java_dataset[$i], "Temperatur_200_C"$i);//float 
          
    setValueFloat($varid,$daten_raw[$i]); 
        } 
    if (
    $i == 56// Zähler 
        
    {($daten_raw[$i] = $daten_raw[$i]/3600); 
          
    //printf('(%d)%s : %.2f h<br>',$i,$java_dataset[$i],$daten_raw[$i]); 
          
    $varid CreateVariableByName($parentID$java_dataset[$i], 2'WP_'.$java_dataset[$i], ""$i);//float 
          
    setValueFloat($varid,$daten_raw[$i]); 
        } 
    if (
    $i == 57// Zähler 
        
    {($daten_raw[$i] = $daten_raw[$i]); 
          
    //printf('(%d)%s : %d<br>',$i,$java_dataset[$i],$daten_raw[$i]); 
          
    $varid CreateVariableByName($parentID$java_dataset[$i], 2'WP_'.$java_dataset[$i], ""$i);//float 
          
    setValue($varid,$daten_raw[$i]); 
        } 
    if (
    $i == 58// Zähler 
        
    {($daten_raw[$i] = $daten_raw[$i]/3600); 
          
    //printf('(%d)%s : %.2f h<br>',$i,$java_dataset[$i],$daten_raw[$i]); 
          
    $varid CreateVariableByName($parentID$java_dataset[$i], 2'WP_'.$java_dataset[$i], ""$i);//float 
          
    setValueFloat($varid,$daten_raw[$i]); 
        } 
    if (
    $i == 59// Zähler 
        
    {($daten_raw[$i] = $daten_raw[$i]); 
          
    //printf('(%d)%s : %d<br>',$i,$java_dataset[$i],$daten_raw[$i]); 
           
    $varid CreateVariableByName($parentID$java_dataset[$i], 2'WP_'.$java_dataset[$i], ""$i);//float 
          
    setValue($varid,$daten_raw[$i]); 
        } 
    if (
    $i >= 60 $i <= 66// Zähler 
        
    {($daten_raw[$i] = $daten_raw[$i]/3600); 
          
    //printf('(%d)%s : %d h<br>',$i,$java_dataset[$i],$daten_raw[$i]); 
           
    $varid CreateVariableByName($parentID$java_dataset[$i], 2'WP_'.$java_dataset[$i], ""$i);//float 
          
    setValueFloat($varid,$daten_raw[$i]); 
        } 
    if (
    $i >= 95 $i <= 99// Errors 
        

          
    //printf('(%d)%s : %d<br>',$i,$java_dataset[$i],$daten_raw[$i]); 
           
    $varid CreateVariableByName($parentID$java_dataset[$i], 3'WP_'.$java_dataset[$i], ""$i);//integer 
            
    $FehlerDatum date("m.d.y",$daten_raw[$i]); 
            
    setValueString($varid,$FehlerDatum); 
        } 

    if (
    $i >= 100 $i <= 105// Errors 
        

          
    //printf('(%d)%s : %d<br>',$i,$java_dataset[$i],$daten_raw[$i]); 
           
    $varid CreateVariableByName($parentID$java_dataset[$i], 3'WP_'.$java_dataset[$i], ""$i);//integer 
            
    setValueString($varid,$daten_raw[$i]); 
        } 


    function 
    CreateVariableByName($id$name$type$ident$profile$position

        
    $vid = @IPS_GetObjectIDByIdent ($ident$id); 
        if(
    $vid === false
        { 
            
    $vid IPS_CreateVariable($type); 
            
    IPS_SetParent($vid$id); 
            
    IPS_SetName($vid$name); 
            
    IPS_SetIdent($vid$ident); 
            
    IPS_SetInfo($vid""); 
            
    IPS_SetPosition($vid$position); 

              if(
    $profile !== ""
            { 
                
    IPS_SetVariableCustomProfile($vid$profile); 
            } 
        } 
        return 
    $vid

    ?>
    Gruß Rene

    KNX / DALI / Homematic / UVR 1611

  2. #92
    Registriert seit
    Jan 2017
    Beiträge
    59

    Danke, damit hat es geklappt!


    Gesendet von iPad mit Tapatalk

  3. #93
    Registriert seit
    Jan 2013
    Beiträge
    26

    Hallo Leute,

    ich grab das hier mal nach oben, da es dazu passt:

    Nachdem das Auslesen der Daten bisher 1a funktioniert hat, habe ich seit kurzen utopische Werte für Außentemperatur und Mitteltemperatur. (~430 Mio °C)

    Das komische ist, dass auf der Webseite ('ip'/Webserver/index.html) und auf dem Display die normalen Werte angezeigt werden.

    Dazu kommt, das die Wärmemengen auch nicht passen, diese werden allerdings schon auf der Webseite der Wärmepumpe und auch am Display falsch angezeigt: Wärmemenge Heizung -21,5Mio kWh.
    Anfrage bei AI läuft seit Monaten...

    Hat das Phänomen sonst noch wer oder liegt es an mir?

    Softwarestand ist V2.81

    Grüße

  4. #94
    Registriert seit
    Jan 2013
    Beiträge
    26

    Nach intensivem Studium der CSV-Werte scheint der Fehler mit den Temperaturen aufzutreten wenn diese negativ werden. Ist das eventuell ein PHP5 Problem mit Float-Werten?

  5. #95
    Registriert seit
    Mar 2009
    Ort
    Gebenstorf
    Beiträge
    63

    Hallo User813

    Du bist nicht der einzige... Php Crack bin ich auch nicht deshalb sieht die Lösung nicht gerade schön aus, funktioniert aber.

    Im Script die Stelle suchen if ($i >= 10 & $i <= 28) // Temperaturen
    dann den MinusTest hinzufügen.

    Code:
    if ($i >= 10 & $i <= 28) // Temperaturen	
    {
    		//echo	printf($i.":".$daten_raw[$i]." ");
    		$minusTest = $daten_raw[$i]*0.1;
    		if($minusTest > 429496000){
    			$daten_raw[$i] = $daten_raw[$i]-=4294967296;
    			$daten_raw[$i] = $daten_raw[$i]*0.1;
    		}else{
    			$daten_raw[$i] = $daten_raw[$i]*0.1;
    		}
    			//printf('(%d)%s : %.1f &#176C<br>',$i,$java_dataset[$i],$daten_raw[$i]);
    		  	$varid = CreateVariableByName($parentID, $java_dataset[$i], 2, 'WP_'.$java_dataset[$i], "Temperatur_200_C", $i);//float
    		  setValueFloat($varid,$daten_raw[$i]);
    	}
    hoffe es klappt.
    thx
    tschewie
    Geändert von tschewie (20.11.18 um 22:11 Uhr) Grund: Fehler im Code
    IPS V5.0 stable, 25x Enocean Omnio Aktoren, 10x Enocean Schalter, 5x Thermokon, Solaranlage, Squeezeboxen

  6. #96
    Registriert seit
    Jan 2019
    Beiträge
    1

    Guten Tag,

    Läßt sich die Anbindung derart erweitern, dass sich auch Einstellungen ändern kann?
    Bis jetzt, so,habe ich es verstanden, kann ich nur Werte einlesen.
    Wie kann Ich Sollwerte übergeben?

    Danke, freundliche Grüsse, erwe

Ähnliche Themen

  1. Zehnder ComfoAir 350 über RS232 anbinden
    Von 911er im Forum Haustechnik
    Antworten: 59
    Letzter Beitrag: 19.04.17, 20:51
  2. 1-Wire über OW-SERVER-ENET an IPS anbinden?
    Von knx im Forum 1-Wire, M-BUS
    Antworten: 3
    Letzter Beitrag: 21.07.12, 11:04
  3. X10TRX Alpha
    Von McFly im Forum Anleitungen / Nützliche PHP Skripte
    Antworten: 40
    Letzter Beitrag: 19.10.09, 23:13
  4. X10 Empfang über X10TRX Alpha
    Von Christoph im Forum Anleitungen / Nützliche PHP Skripte
    Antworten: 21
    Letzter Beitrag: 14.07.08, 19:02
  5. Klingelsignal über Draht anbinden
    Von Hausautomation im Forum Haustechnik
    Antworten: 10
    Letzter Beitrag: 12.12.07, 21:03

Stichworte