+ Antworten
Seite 1 von 3 1 2 3 LetzteLetzte
Ergebnis 1 bis 10 von 22
  1. #1
    Registriert seit
    Oct 2014
    Beiträge
    24

    Standard Client Socket auslesen und Werte für Graphen speichern?

    Hallo,
    befasse mich derzeit mit IPS auf der Banane und möchte einige Werte von einer funktionierenden Client Socket Verbindung in IPS speichern und später dann mit Graphen anzeigen. Da ich keinen Plan von IPS scripten habe bräuchte ich Eure Unterstützung.

    - IPS auf der Banane ist installiert und läuft
    - Client Socket Verbindung ist eingerichtet und liefert über Debug folgende Ausgabe:
    Code:
    08.02.2015 13:28:55.00 |             RECEIVED | MODBUS.serial.pv_energy.pv_power1=1210
    
    08.02.2015 13:28:56.00 |             RECEIVED | MODBUS.serial.pv_energy.pv_power2=1480
    
    08.02.2015 13:28:56.00 |             RECEIVED | MODBUS.serial.pv_energy.pv_power3=630
    
    08.02.2015 13:28:56.00 |             RECEIVED | MODBUS.serial.pv_energy.pv_power_tot=2680
    
    08.02.2015 13:29:00.00 |             RECEIVED | MODBUS.serial.Elsner_P03.sun.s=48
    
    08.02.2015 13:29:01.00 |             RECEIVED | MODBUS.serial.Elsner_P03.temp=2
    Wie bekomme ich jetzt diese Werte in eingelesen IPS und gespeichert? Es sind übrigens noch viel mehr Werte die aber immer gleich aufgebaut sind. Ich muss ja wohl jede einzeln in eine Float Variable speichern.

    PS: die Client Socket Verbindung ist übrigens zu einem DOMIQ Base das LCN, Modbus und DMX koppelt.

    Vielen Dank im voraus

    Klaus

  2. #2
    Registriert seit
    Aug 2009
    Ort
    Lippe
    Beiträge
    1,854

    Hallo Klaus,

    jetzt auch hier :

    Der Weg ist im IPS:
    1. I/O Instanzen : "Client Socket" anlegen, IP vom Base mit Port 4224
    2. Splitter Instanzen : "Cutter" anlegen, und an Client Socket (Punkt1) binden
    --Dann sollten dort im Debug Fenster schon alle Channels eintrudeln.
    3. Unter dem Domiq "Cutter" eine "Register Variable" anlegen.
    4. Unter dem Domiq "Cutter" ein Skript anlegen.
    5. In der "Register Variable" - Konfiguration das "Skript" auswählen.
    6. "Skript" mit Inhalt füllen (ACHTUNG die IPS VAR's müssen angelegt werden, und im Skript angepasst verden!)


    PHP-Code:
        <?php
        
    if ($_IPS['SENDER'] == "RegisterVariable")
        {
            
    $data  RegVar_GetBuffer($_IPS['INSTANCE']);
            
    $data .= $_IPS['VALUE'];
            
    $lcn_array=explode('='$data);
        
    //    print_r ($lcn_array);
           
    SetValueString(41443 /*[Cutter Domiq\VAR Wert]*/   $lcn_array[1]);
            
    $typ=($lcn_array[0]);
            if( 
    $typ==="LCN.value.0.201.t" ) {
                   
    $wert=intval($lcn_array[1]);
               
    SetValueInteger(24175 /*[Dummy Module DOMIQ\LCN.value.0.201.t]*/   $wert);
            }
            if( 
    $typ==="LCN.variable.0.202.2" ) {
               
    $wert=floatval($lcn_array[1]);
               
    $wert=(($wert-1000)/10);
               
    SetValueFloat(28362 /*[Dummy Module DOMIQ\LCN.variable.0.202.2]*/   $wert);
            }
            
    SetValueString(54867 /*[Cutter Domiq\VarName]*/   $typ);
        }
        
    ?>


    7. freuen, da man jetzt auch eine Messwertaufzeichnung im Webfront von IPS hat.....

    Du musst die IPS VAR's von Hand anlegen.
    z.B. "MODBUS.serial.pv_energy.pv_power1", als float
    Im skript dann :

    if( $typ==="LCN.variable.0.202.2" ) {
    $wert=floatval($lcn_array[1]);
    $wert=(($wert-1000)/10);
    SetValueFloat(28362 /*[Dummy Module DOMIQ\LCN.variable.0.202.2]*/ , $wert);
    }

    ändern in:
    if( $typ==="MODBUS.serial.pv_energy.pv_power1" ) {
    $wert=floatval($lcn_array[1]);
    SetValueFloat( [DEINE IPS VAR /*[MODBUS.serial.pv_energy.pv_power1]*/ , $wert);
    }

    so habe ich es bei UweR probiert, und es geht.
    $wert=(($wert-1000)/10); war die Umrechnung LCN Wert in Temperatur, da kannst du auch was anderes einbauen.

    Da ich kein DOMIQ mehr habe, muss ich das leider Online machen, wenn mir ein DOMIQ zur Verfügung steht.

    lg Thomas
    lg Thomas
    IPS Raspberry Pi2(3) mit LCN, HM, Sonoff+Shelly per MQTT, SONOS und viel Eigenbau + Pi2(3) mit Heizungssteuerung über GPIO per IPS

  3. #3
    Registriert seit
    Oct 2014
    Beiträge
    24

    Hi Thomas,
    Die /*xyz...... /* sind nur Kommentare und nicht relevant oder?

    Danke
    Klaus

  4. #4
    Registriert seit
    May 2006
    Ort
    Hannover
    Beiträge
    3,034

    Zitat Zitat von Miconnect Beitrag anzeigen
    Die /*xyz...... /* sind nur Kommentare und nicht relevant oder?
    Das sind nur Kommentare, die erstellt IPS automatisch, abhängig von den fünfstelligen IDs.
    MfG Ralf

  5. #5
    Registriert seit
    Aug 2009
    Ort
    Lippe
    Beiträge
    1,854

    Hi Klaus,

    Ralf hat ja schon....

    Berichte mal, ob es klappt.
    lg Thomas
    IPS Raspberry Pi2(3) mit LCN, HM, Sonoff+Shelly per MQTT, SONOS und viel Eigenbau + Pi2(3) mit Heizungssteuerung über GPIO per IPS

  6. #6
    Registriert seit
    Oct 2014
    Beiträge
    24

    Hallo zusammen,

    so ganz klappt's noch nicht....
    hier mal das angepasste script:

    PHP-Code:
      <?php
        
    if ($_IPS['SENDER'] == "RegisterVariable")
        {
            
    $data  RegVar_GetBuffer($_IPS['INSTANCE']);
            
    $data .= $_IPS['VALUE'];
            
            
    $DOMIQ_array=explode'=' $data );
            
         
    // print_r ($DOMIQ);
            
    SetValueString23975 /*[Cutter DOMIQ\VAR Wert]*/   $DOMIQ_array[1] );
            
    $typ=( $DOMIQ_array[0] );
            
    SetValueString49730 /*[Cutter DOMIQ\VAR Name]*/ $typ );


                if( 
    $typ==="MODBUS.serial.pv_energy.pv_power1" )
                {
                
    $wert=floatval$DOMIQ_array[1] );
                
    SetValueFloat21958 /*[Cutter DOMIQ\DOMIQ script\MODBUS.serial.pv_energy.pv_power1]*/ $wert );
                }

        }
        
    ?>
    Die 'VAR Wert' wird mit den richtigen Werten nach dem '=' gefüllt. Aber alle 'VAR Name' ($typ) Inhalte haben vor dem eigentlichen Text immer noch 1.668089292921 und Zeilenumbruch vorne anstehen. Das sieht so aus:

    Code:
    1.668089292921
    MODBUS.serial.pv_energy.pv_power1
    Im Debug von Client socket oder Cutter ist nichts von 1.668089292921 zu sehen

    Das letzte if Stück funktioniert daher auch nicht...

    Was ist das? Wie bekomme ich den Müll weg?

    danke Klaus
    Geändert von Miconnect (10.02.15 um 06:33 Uhr)

  7. #7
    Registriert seit
    Aug 2009
    Ort
    Lippe
    Beiträge
    1,854

    Hm Klaus,

    ohne BASE hier, wird es bei mier nicht gehen.

    lg Thomas - mail kommt
    lg Thomas
    IPS Raspberry Pi2(3) mit LCN, HM, Sonoff+Shelly per MQTT, SONOS und viel Eigenbau + Pi2(3) mit Heizungssteuerung über GPIO per IPS

  8. #8
    Registriert seit
    Oct 2014
    Beiträge
    24

    Hallo,
    heute habe ich mal wieder mal wieder etwas Zeit gefunden. Und siehe da... dieser 1.668089292921 Müll ist auf einmal weg ohne das ich das Script nochmals verändert hatte.
    Einzig hatte ich diese Woche ein Spannungsreset am Banana Pi und dem DOMIQ Base durchgeführt

    O.K. jetzt kanns weitergehen....

  9. #9
    Registriert seit
    Nov 2014
    Beiträge
    62

    Question Wert in Variable schreiben

    Hallo,

    ich habe ein ähnliches Problem. Meine neue Wetterstation liefert via RS485 Adapter (ID 44523) an den Raspi. Es kommen auch Daten an (siehe Debug)

    "TXT: 26.01.2019, 12:04:36 | RECEIVED | W+19.4000000J00000.5N???????????
    HEX: 26.01.2019, 12:04:36 | RECEIVED | 57 2B 31 39 2E 34 30 30 30 30 30 30 4A 30 30 30 30 30 2E 35 4E 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F
    TXT: 26.01.2019, 12:04:36 | RECEIVED | ???1995<ETX>
    HEX: 26.01.2019, 12:04:36 | RECEIVED | 3F 3F 3F 31 39 39 35 03
    TXT: 26.01.2019, 12:04:38 | RECEIVED | W+19.4000000J00000.4N???????????
    HEX: 26.01.2019, 12:04:38 | RECEIVED | 57 2B 31 39 2E 34 30 30 30 30 30 30 4A 30 30 30 30 30 2E 34 4E 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F
    TXT: 26.01.2019, 12:04:38 | RECEIVED | ???1994<ETX>
    HEX: 26.01.2019, 12:04:38 | RECEIVED | 3F 3F 3F 31 39 39 34 03 "

    Wie bekomme ich die nun in eine Variable und entsprechend geschnitten (relevant wäre der Inhalt jeweils hinter TXT

    Ich habe schon mal versucht eine Variable (ID 38013) vom Typ String zu erstellen und darunter ein Skript (17781), aber woher weiß die Variable, von welcher ID es sich die Daten holen soll?

    Mit den Beispielen komme ich leider aktuell nicht weiter

  10. #10
    Registriert seit
    Nov 2014
    Beiträge
    62

    Hat keiner eine Idee? Denke, wenn die Basis erst mal gelegt ist, dann sollte es danach einfacher gehen.


    IP Symcon 5.0 Raspberry

Ähnliche Themen

  1. 'Socket Error # 10061' bei Objekt hinzufügen -> Client Socket
    Von T30 im Forum Allgemeine Diskussion (2.x/3.x)
    Antworten: 3
    Letzter Beitrag: 01.10.14, 16:03
  2. Anfängerfrage Client Socket auslesen
    Von Dithmarscher im Forum Skripte, PHP, SQL
    Antworten: 1
    Letzter Beitrag: 05.01.14, 20:25
  3. Antworten: 3
    Letzter Beitrag: 11.05.13, 10:14
  4. WIIPS Sammelt keine Werte für Graphen
    Von Tom_ im Forum IP-Symcon WIIPS
    Antworten: 2
    Letzter Beitrag: 29.11.09, 17:46
  5. Fehler Client Socket und Speicher
    Von coolice im Forum Allgemeine Diskussion (2.x/3.x)
    Antworten: 2
    Letzter Beitrag: 17.09.09, 12:38