+ Antworten
Seite 2 von 3 ErsteErste 1 2 3 LetzteLetzte
Ergebnis 11 bis 20 von 21
  1. #11
    Registriert seit
    Sep 2010
    Beiträge
    177

    Zitat Zitat von integrator Beitrag anzeigen
    Beim Auswerteskript muss ich aber wahrscheinlich doch was ändern, da ich von Itron auf Logarex gewechselt habe.
    Kannst du mir dein Skript mal zur Verfügung stellen. Ich denke das antriggern machst du über ein Zeitplan?
    Hallo Jürgen,
    kann ich davon ausgehen, dass du die Daten noch nicht auswertest?
    Tschö Marcus
    ----------------------------------------------------------------------
    Was man anfängt sollte man auch zu Ende bri

  2. #12
    Registriert seit
    Jun 2013
    Ort
    Regensburg
    Beiträge
    504

    Hallo,

    ich verstehe jetzt nicht, was hier schwer ist.
    Du erhältst einen String und diesen durchsuchst du nach den möglichen Register-Variablen deines Zählers, welche du idealerweise in einem Array ablegst:
    PHP-Code:
    foreach($registerArray AS $register)
    {
    if(
    === strpos($string$register[0]))
    {
    // --> RegisterVariable gefunden und die dazugehörige Variable in IPS mit dem erhaltenen Wert setzen
    }

    An welcher Stelle benötigst du Hilfe?
    Gruß Jürgen
    (KNX Licht+Steckd.+Rollo+Wetter, EnOcean Fenstergr.+Taster, 1-Wire, M-BUS (SensusHRI+EnergyCam), Alexa, Gira Dual/VdS+KNX, DMX, Denon X4000 (3 Zonen), Fritzbox, 3xVivotek IP-Cam, LevelJet, Dreambox, Vu+, Homematic CCU1+Stellantr.+Fernb.)

  3. #13
    Registriert seit
    Sep 2010
    Beiträge
    177

    Mag sein das es für dich nicht schwer ist ... für mich schon.
    Entschuldigung wenn ich zum Thema PHP wie ein Anfänger wirke aber das liegt daran, dass ich einer bin.
    Meine Stärken liegen in der Elektrotechnik, KNX, LCN, Bier brauen

    Mein vorheriges Script mit den Itron-Zählern hatte ich mir auch zusammen gebastelt ohne in der tiefe zu verstehen was da passiert.
    Ich gehe davon aus das ich bei den Logarex-Zähler das Script ändern muss und bat dich um teilen deiner Lösung.

    Wenn du dein Script nicht teilen möchtest oder du noch keine Auswertung machst ist das ja OK ...
    Tschö Marcus
    ----------------------------------------------------------------------
    Was man anfängt sollte man auch zu Ende bri

  4. #14
    Registriert seit
    Jun 2013
    Ort
    Regensburg
    Beiträge
    504

    Hallo,

    per Copy-Paste wird mein Skript bei dir nicht funktionieren, da ich viele Funktionen ausgelagert habe und zudem eine zentrale Config-Datei nutze.

    Ich versuche dir den Ablauf nochmals zu erläutern.

    Du erhältst den String des Zählers in einem Rutsch von deinem Client-Socket + RegisterVariable in IPS. Auszulesen ist dieser String im "Target-Skript" der Registervariable per:
    PHP-Code:
    $_IPS['VALUE'
    Anschließend kannst du den String im "Target-Skript" in die einzelnen Zeilen für die weitere Auswertung splitten per:
    PHP-Code:
    $parts explode("\n"trim($_IPS['VALUE'])); 
    Jetzt gibt es natürlich wie so oft verschiedene Wege nach Rom, aber ich erläutere dir meinen.
    Nun machst du zwei geschachtelte FOR-Schleifen. Einmal um die einzelnen Zeilen des Strings (nun im Array $parts gespeichert) zu durchlaufen und einmal um nach der richtigen RegisterVariable des Zählers (im Array $registerArray gespeichert) zu suchen. Die Zeile kann einer RegisterVariable des Zählers für die weitere Auswertung eindeutig anhand der ID, wie bspw. 1-0:96.1.0*255, zugeordnet werden:
    PHP-Code:
    // Teile des Strings durchsuchen
    foreach($parts AS $part)
    {
      
    $part trim($part);
      
    // Mögliche RegisterVariablen des Zählers durchlaufen und prüfen, welche in dieser Zeile enthalten ist
      
    foreach($registerArray AS $register)
      {
        if(
    === strpos($part$register[0]))
        {
          
    //--> RegisterVariable des Zählers gefunden
        
    }
      }

    Hoffe das hilft dir weiter.
    Geändert von Brovning (01.05.19 um 19:09 Uhr)
    Gruß Jürgen
    (KNX Licht+Steckd.+Rollo+Wetter, EnOcean Fenstergr.+Taster, 1-Wire, M-BUS (SensusHRI+EnergyCam), Alexa, Gira Dual/VdS+KNX, DMX, Denon X4000 (3 Zonen), Fritzbox, 3xVivotek IP-Cam, LevelJet, Dreambox, Vu+, Homematic CCU1+Stellantr.+Fernb.)

  5. #15
    Registriert seit
    Sep 2010
    Beiträge
    177

    OK ... im groben glaube ich zu wissen wie du es meinst. Vielen Dank

    Wenn ich meine Brainboxes RS-413 bekomme, lege ich los und werde berichten.
    Tschö Marcus
    ----------------------------------------------------------------------
    Was man anfängt sollte man auch zu Ende bri

  6. #16
    Registriert seit
    Sep 2010
    Beiträge
    177

    Standard Mein Lösungsansatz

    So ich bin nun fertig und es hat alles gut geklappt. Da ich nicht der PHP-Guru bin, bin ich über Verbesserungsvorschläge dankbar.

    Also folgende Hardware ist vorhanden:
    Logarex Elektrozähler Gebrauchsanleitung_LK13BE8030x9.pdf

    RS485-Ethernet Konverter: Brainboxes ES-413
    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	RS485 Port-1.PNG 
Hits:	29 
Größe:	36.9 KB 
ID:	49121Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	RS485 Port-2.PNG 
Hits:	25 
Größe:	36.9 KB 
ID:	49122

    Baumansicht IPS:
    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	Baum-1.jpg 
Hits:	35 
Größe:	178.7 KB 
ID:	49116Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	Baum-2.PNG 
Hits:	28 
Größe:	78.4 KB 
ID:	49117

    ClientSocket:
    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	ClientSocket.PNG 
Hits:	26 
Größe:	33.0 KB 
ID:	49118

    Cutter:
    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	Cutter.PNG 
Hits:	28 
Größe:	57.4 KB 
ID:	49119

    RegVar:
    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	RegVar.PNG 
Hits:	24 
Größe:	31.5 KB 
ID:	49120

    Die Initialisierung (PullModus) des Zählers:
    PHP-Code:
    <?

    RegVar_SendText
    (43427 /*[Zähler\eHZ\RegVar eHZ]*/"/?!\r\n");
    IPS_Sleep(1000);
    RegVar_SendText(43427 /*[Zähler\eHZ\RegVar eHZ]*/chr(0x06)."050\r\n");

    ?>
    Auswertungsskript der Daten aus der RegVar:
    PHP-Code:
    <?

    // Auswertung der eHZ-Daten am RS485 Port A

        // Zählernummer Obiskennung:1-0:96.1.0*255 Hex:31 2d 30 3a 39 36 2e 31 2e 30 2a 32 35 35
        
    if(strpos($_IPS['VALUE'], chr(0x31).chr(0x2d).chr(0x30).chr(0x3a).chr(0x39).chr(0x36).chr(0x2e).chr(0x31).chr(0x2e).chr(0x30).chr(0x2a).chr(0x32).chr(0x35).chr(0x35)) !== false) {
            
    $wert =        explode(chr(0x31).chr(0x2d).chr(0x30).chr(0x3a).chr(0x39).chr(0x36).chr(0x2e).chr(0x31).chr(0x2e).chr(0x30).chr(0x2a).chr(0x32).chr(0x35).chr(0x35), $_IPS['VALUE']);
            
    $hersteller substr($wert[1], 116);
            
    SetValueString(25110 /*[Zähler\eHZ\RegVar eHZ\Hersteller]*/$hersteller);
        }
        
    // Import Obiskennung:1-0:1.8.0*255 Hex:31 2d 30 3a 31 2e 38 2e 30 2a 32 35 35
        
    if(strpos($_IPS['VALUE'], chr(0x31).chr(0x2d).chr(0x30).chr(0x3a).chr(0x31).chr(0x2e).chr(0x38).chr(0x2e).chr(0x30).chr(0x2a).chr(0x32).chr(0x35).chr(0x35)) !== false) {
            
    $wert =        explode(chr(0x31).chr(0x2d).chr(0x30).chr(0x3a).chr(0x31).chr(0x2e).chr(0x38).chr(0x2e).chr(0x30).chr(0x2a).chr(0x32).chr(0x35).chr(0x35), $_IPS['VALUE']);
            
    $import substr($wert[1], 111);
            
    SetValue(14055 /*[Zähler\eHZ\RegVar eHZ\1.8.0 Import EVU]*/$import);
        }
        
    // Export Obiskennung:1-0:2.8.0*255 Hex:31 2d 30 3a 32 2e 38 2e 30 2a 32 35 35
        
    if(strpos($_IPS['VALUE'], chr(0x31).chr(0x2d).chr(0x30).chr(0x3a).chr(0x32).chr(0x2e).chr(0x38).chr(0x2e).chr(0x30).chr(0x2a).chr(0x32).chr(0x35).chr(0x35)) !== false) {
            
    $wert =        explode(chr(0x31).chr(0x2d).chr(0x30).chr(0x3a).chr(0x32).chr(0x2e).chr(0x38).chr(0x2e).chr(0x30).chr(0x2a).chr(0x32).chr(0x35).chr(0x35), $_IPS['VALUE']);
            
    $export substr($wert[1], 111);
            
    SetValue(10193 /*[Zähler\eHZ\RegVar eHZ\2.8.0 Export EVU]*/$export);
        }
        
    // Export Obiskennung:1-0:16.7.0*255 Hex:31 2d 30 3a 31 36 2e 37 2e 30 2a 32 35 35
        
    if(strpos($_IPS['VALUE'], chr(0x31).chr(0x2d).chr(0x30).chr(0x3a).chr(0x31).chr(0x36).chr(0x2e).chr(0x37).chr(0x2e).chr(0x30).chr(0x2a).chr(0x32).chr(0x35).chr(0x35)) !== false) {
            
    $wert =        explode(chr(0x31).chr(0x2d).chr(0x30).chr(0x3a).chr(0x31).chr(0x36).chr(0x2e).chr(0x37).chr(0x2e).chr(0x30).chr(0x2a).chr(0x32).chr(0x35).chr(0x35), $_IPS['VALUE']);
            
    $stromeff substr($wert[1], 17);
            
    SetValue(10335 /*[Zähler\eHZ\RegVar eHZ\Stromeffektivwert]*/$stromeff);
        }
        
    // Export Obiskennung:1-0:32.7.0*255 Hex:31 2d 30 3a 33 32 2e 37 2e 30 2a 32 35 35
        
    if(strpos($_IPS['VALUE'], chr(0x31).chr(0x2d).chr(0x30).chr(0x3a).chr(0x33).chr(0x32).chr(0x2e).chr(0x37).chr(0x2e).chr(0x30).chr(0x2a).chr(0x32).chr(0x35).chr(0x35)) !== false) {
            
    $wert =        explode(chr(0x31).chr(0x2d).chr(0x30).chr(0x3a).chr(0x33).chr(0x32).chr(0x2e).chr(0x37).chr(0x2e).chr(0x30).chr(0x2a).chr(0x32).chr(0x35).chr(0x35), $_IPS['VALUE']);
            
    $spannungL1 substr($wert[1], 15);
            
    SetValue(22834 /*[Zähler\eHZ\RegVar eHZ\Spannung L1]*/$spannungL1);
        }
        
    // Export Obiskennung:1-0:52.7.0*255 Hex:31 2d 30 3a 35 32 2e 37 2e 30 2a 32 35 35
        
    if(strpos($_IPS['VALUE'], chr(0x31).chr(0x2d).chr(0x30).chr(0x3a).chr(0x35).chr(0x32).chr(0x2e).chr(0x37).chr(0x2e).chr(0x30).chr(0x2a).chr(0x32).chr(0x35).chr(0x35)) !== false) {
            
    $wert =        explode(chr(0x31).chr(0x2d).chr(0x30).chr(0x3a).chr(0x35).chr(0x32).chr(0x2e).chr(0x37).chr(0x2e).chr(0x30).chr(0x2a).chr(0x32).chr(0x35).chr(0x35), $_IPS['VALUE']);
            
    $spannungL2 substr($wert[1], 15);
            
    SetValue(22377 /*[Zähler\eHZ\RegVar eHZ\Spannung L2]*/$spannungL2);
        }
        
    // Export Obiskennung:1-0:72.7.0*255 Hex:31 2d 30 3a 37 32 2e 37 2e 30 2a 32 35 35
        
    if(strpos($_IPS['VALUE'], chr(0x31).chr(0x2d).chr(0x30).chr(0x3a).chr(0x37).chr(0x32).chr(0x2e).chr(0x37).chr(0x2e).chr(0x30).chr(0x2a).chr(0x32).chr(0x35).chr(0x35)) !== false) {
            
    $wert =        explode(chr(0x31).chr(0x2d).chr(0x30).chr(0x3a).chr(0x37).chr(0x32).chr(0x2e).chr(0x37).chr(0x2e).chr(0x30).chr(0x2a).chr(0x32).chr(0x35).chr(0x35), $_IPS['VALUE']);
            
    $spannungL3 substr($wert[1], 15);
            
    SetValue(28019 /*[Zähler\eHZ\RegVar eHZ\Spannung L3]*/$spannungL3);
        }
        
    // Export Obiskennung:1-0:31.7.0*255 Hex:31 2d 30 3a 33 31 2e 37 2e 30 2a 32 35 35
        
    if(strpos($_IPS['VALUE'], chr(0x31).chr(0x2d).chr(0x30).chr(0x3a).chr(0x33).chr(0x31).chr(0x2e).chr(0x37).chr(0x2e).chr(0x30).chr(0x2a).chr(0x32).chr(0x35).chr(0x35)) !== false) {
            
    $wert =        explode(chr(0x31).chr(0x2d).chr(0x30).chr(0x3a).chr(0x33).chr(0x31).chr(0x2e).chr(0x37).chr(0x2e).chr(0x30).chr(0x2a).chr(0x32).chr(0x35).chr(0x35), $_IPS['VALUE']);
            
    $stromL1 substr($wert[1], 16);
            
    SetValue(15011 /*[Zähler\eHZ\RegVar eHZ\Strom L1]*/$stromL1);
        }
        
    // Export Obiskennung:1-0:51.7.0*255 Hex:31 2d 30 3a 35 31 2e 37 2e 30 2a 32 35 35
        
    if(strpos($_IPS['VALUE'], chr(0x31).chr(0x2d).chr(0x30).chr(0x3a).chr(0x35).chr(0x31).chr(0x2e).chr(0x37).chr(0x2e).chr(0x30).chr(0x2a).chr(0x32).chr(0x35).chr(0x35)) !== false) {
            
    $wert =        explode(chr(0x31).chr(0x2d).chr(0x30).chr(0x3a).chr(0x35).chr(0x31).chr(0x2e).chr(0x37).chr(0x2e).chr(0x30).chr(0x2a).chr(0x32).chr(0x35).chr(0x35), $_IPS['VALUE']);
            
    $stromL2 substr($wert[1], 16);
            
    SetValue(29366 /*[Zähler\eHZ\RegVar eHZ\Strom L2]*/$stromL2);
        }
        
    // Export Obiskennung:1-0:71.7.0*255 Hex:31 2d 30 3a 37 31 2e 37 2e 30 2a 32 35 35
        
    if(strpos($_IPS['VALUE'], chr(0x31).chr(0x2d).chr(0x30).chr(0x3a).chr(0x37).chr(0x31).chr(0x2e).chr(0x37).chr(0x2e).chr(0x30).chr(0x2a).chr(0x32).chr(0x35).chr(0x35)) !== false) {
            
    $wert =        explode(chr(0x31).chr(0x2d).chr(0x30).chr(0x3a).chr(0x37).chr(0x31).chr(0x2e).chr(0x37).chr(0x2e).chr(0x30).chr(0x2a).chr(0x32).chr(0x35).chr(0x35), $_IPS['VALUE']);
            
    $stromL3 substr($wert[1], 16);
            
    SetValue(15642 /*[Zähler\eHZ\RegVar eHZ\Strom L3]*/$stromL3);
        }
        
    // Export Obiskennung:1-0:81.7.1*255 Hex:31 2d 30 3a 38 31 2e 37 2e 31 2a 32 35 35
        
    if(strpos($_IPS['VALUE'], chr(0x31).chr(0x2d).chr(0x30).chr(0x3a).chr(0x38).chr(0x31).chr(0x2e).chr(0x37).chr(0x2e).chr(0x31).chr(0x2a).chr(0x32).chr(0x35).chr(0x35)) !== false) {
            
    $wert =        explode(chr(0x31).chr(0x2d).chr(0x30).chr(0x3a).chr(0x38).chr(0x31).chr(0x2e).chr(0x37).chr(0x2e).chr(0x31).chr(0x2a).chr(0x32).chr(0x35).chr(0x35), $_IPS['VALUE']);
            
    $winkelUL2UL1 substr($wert[1], 13);
            
    SetValue(30399 /*[Zähler\eHZ\RegVar eHZ\Phasenwinkel UL2 : UL1]*/$winkelUL2UL1);
        }
        
    // Export Obiskennung:1-0:81.7.2*255 Hex:31 2d 30 3a 38 31 2e 37 2e 32 2a 32 35 35
        
    if(strpos($_IPS['VALUE'], chr(0x31).chr(0x2d).chr(0x30).chr(0x3a).chr(0x38).chr(0x31).chr(0x2e).chr(0x37).chr(0x2e).chr(0x32).chr(0x2a).chr(0x32).chr(0x35).chr(0x35)) !== false) {
            
    $wert =        explode(chr(0x31).chr(0x2d).chr(0x30).chr(0x3a).chr(0x38).chr(0x31).chr(0x2e).chr(0x37).chr(0x2e).chr(0x32).chr(0x2a).chr(0x32).chr(0x35).chr(0x35), $_IPS['VALUE']);
            
    $winkelUL3UL1 substr($wert[1], 13);
            
    SetValue(43442 /*[Zähler\eHZ\RegVar eHZ\Phasenwinkel UL3 : UL1]*/$winkelUL3UL1);
        }
        
    // Export Obiskennung:1-0:81.7.4*255 Hex:31 2d 30 3a 38 31 2e 37 2e 34 2a 32 35 35
        
    if(strpos($_IPS['VALUE'], chr(0x31).chr(0x2d).chr(0x30).chr(0x3a).chr(0x38).chr(0x31).chr(0x2e).chr(0x37).chr(0x2e).chr(0x34).chr(0x2a).chr(0x32).chr(0x35).chr(0x35)) !== false) {
            
    $wert =        explode(chr(0x31).chr(0x2d).chr(0x30).chr(0x3a).chr(0x38).chr(0x31).chr(0x2e).chr(0x37).chr(0x2e).chr(0x34).chr(0x2a).chr(0x32).chr(0x35).chr(0x35), $_IPS['VALUE']);
            
    $winkelIL1UL1 substr($wert[1], 13);
            
    SetValue(30582 /*[Zähler\eHZ\RegVar eHZ\Phasenwinkel IL1 : UL1]*/$winkelIL1UL1);
        }
        
    // Export Obiskennung:1-0:81.7.15*255 Hex:31 2d 30 3a 38 31 2e 37 2e 31 35 2a 32 35 35
        
    if(strpos($_IPS['VALUE'], chr(0x31).chr(0x2d).chr(0x30).chr(0x3a).chr(0x38).chr(0x31).chr(0x2e).chr(0x37).chr(0x2e).chr(0x31).chr(0x35).chr(0x2a).chr(0x32).chr(0x35).chr(0x35)) !== false) {
            
    $wert =        explode(chr(0x31).chr(0x2d).chr(0x30).chr(0x3a).chr(0x38).chr(0x31).chr(0x2e).chr(0x37).chr(0x2e).chr(0x31).chr(0x35).chr(0x2a).chr(0x32).chr(0x35).chr(0x35), $_IPS['VALUE']);
            
    $winkelIL2UL2 substr($wert[1], 13);
            
    SetValue(25119 /*[Zähler\eHZ\RegVar eHZ\Phasenwinkel IL2 : UL2]*/$winkelIL2UL2);
        }
        
    // Export Obiskennung:1-0:81.7.26*255 Hex:31 2d 30 3a 38 31 2e 37 2e 32 36 2a 32 35 35
        
    if(strpos($_IPS['VALUE'], chr(0x31).chr(0x2d).chr(0x30).chr(0x3a).chr(0x38).chr(0x31).chr(0x2e).chr(0x37).chr(0x2e).chr(0x32).chr(0x36).chr(0x2a).chr(0x32).chr(0x35).chr(0x35)) !== false) {
            
    $wert =        explode(chr(0x31).chr(0x2d).chr(0x30).chr(0x3a).chr(0x38).chr(0x31).chr(0x2e).chr(0x37).chr(0x2e).chr(0x32).chr(0x36).chr(0x2a).chr(0x32).chr(0x35).chr(0x35), $_IPS['VALUE']);
            
    $winkelIL3UL3 substr($wert[1], 13);
            
    SetValue(15654 /*[Zähler\eHZ\RegVar eHZ\Phasenwinkel IL3 : UL3]*/$winkelIL3UL3);
        }
        
    // Export Obiskennung:1-0:14.7.0*255 Hex:31 2d 30 3a 31 34 2e 37 2e 30 2a 32 35 35
        
    if(strpos($_IPS['VALUE'], chr(0x31).chr(0x2d).chr(0x30).chr(0x3a).chr(0x31).chr(0x34).chr(0x2e).chr(0x37).chr(0x2e).chr(0x30).chr(0x2a).chr(0x32).chr(0x35).chr(0x35)) !== false) {
            
    $wert =        explode(chr(0x31).chr(0x2d).chr(0x30).chr(0x3a).chr(0x31).chr(0x34).chr(0x2e).chr(0x37).chr(0x2e).chr(0x30).chr(0x2a).chr(0x32).chr(0x35).chr(0x35), $_IPS['VALUE']);
            
    $netzfrequenz substr($wert[1], 14);
            
    SetValue(14058 /*[Zähler\eHZ\RegVar eHZ\Netz Frequenz]*/$netzfrequenz);
        }
        
    // Export Obiskennung:1-0:1.8.0*96 Hex:31 2d 30 3a 31 2e 38 2e 30 2a 39 36
        
    if(strpos($_IPS['VALUE'], chr(0x31).chr(0x2d).chr(0x30).chr(0x3a).chr(0x31).chr(0x2e).chr(0x38).chr(0x2e).chr(0x30).chr(0x2a).chr(0x39).chr(0x36)) !== false) {
            
    $wert =        explode(chr(0x31).chr(0x2d).chr(0x30).chr(0x3a).chr(0x31).chr(0x2e).chr(0x38).chr(0x2e).chr(0x30).chr(0x2a).chr(0x39).chr(0x36), $_IPS['VALUE']);
            
    $energie1d substr($wert[1], 17);
            
    SetValue(32468 /*[Zähler\eHZ\RegVar eHZ\Energieverbrauch letzter Tag]*/$energie1d);
        }
        
    // Export Obiskennung:1-0:1.8.0*97 Hex:31 2d 30 3a 31 2e 38 2e 30 2a 39 37
        
    if(strpos($_IPS['VALUE'], chr(0x31).chr(0x2d).chr(0x30).chr(0x3a).chr(0x31).chr(0x2e).chr(0x38).chr(0x2e).chr(0x30).chr(0x2a).chr(0x39).chr(0x37)) !== false) {
            
    $wert =        explode(chr(0x31).chr(0x2d).chr(0x30).chr(0x3a).chr(0x31).chr(0x2e).chr(0x38).chr(0x2e).chr(0x30).chr(0x2a).chr(0x39).chr(0x37), $_IPS['VALUE']);
            
    $energie7d substr($wert[1], 17);
            
    SetValue(10194 /*[Zähler\eHZ\RegVar eHZ\Energieverbrauch letzte Woche]*/$energie7d);
        }
        
    // Export Obiskennung:1-0:1.8.0*98 Hex:31 2d 30 3a 31 2e 38 2e 30 2a 39 38
        
    if(strpos($_IPS['VALUE'], chr(0x31).chr(0x2d).chr(0x30).chr(0x3a).chr(0x31).chr(0x2e).chr(0x38).chr(0x2e).chr(0x30).chr(0x2a).chr(0x39).chr(0x38)) !== false) {
            
    $wert =        explode(chr(0x31).chr(0x2d).chr(0x30).chr(0x3a).chr(0x31).chr(0x2e).chr(0x38).chr(0x2e).chr(0x30).chr(0x2a).chr(0x39).chr(0x38), $_IPS['VALUE']);
            
    $energie30d substr($wert[1], 17);
            
    SetValue(25295 /*[Zähler\eHZ\RegVar eHZ\Energieverbrauch letzter Monat]*/$energie30d);
        }
        
    // Export Obiskennung:1-0:1.8.0*99 Hex:31 2d 30 3a 31 2e 38 2e 30 2a 39 39
        
    if(strpos($_IPS['VALUE'], chr(0x31).chr(0x2d).chr(0x30).chr(0x3a).chr(0x31).chr(0x2e).chr(0x38).chr(0x2e).chr(0x30).chr(0x2a).chr(0x39).chr(0x39)) !== false) {
            
    $wert =        explode(chr(0x31).chr(0x2d).chr(0x30).chr(0x3a).chr(0x31).chr(0x2e).chr(0x38).chr(0x2e).chr(0x30).chr(0x2a).chr(0x39).chr(0x39), $_IPS['VALUE']);
            
    $energie365d substr($wert[1], 17);
            
    SetValue(10337 /*[Zähler\eHZ\RegVar eHZ\Energieverbrauch letztes Jahr]*/$energie365d);
        }
        
    // Export Obiskennung:1-0:1.8.0*100 Hex:31 2d 30 3a 31 2e 38 2e 30 2a 31 30 30
        
    if(strpos($_IPS['VALUE'], chr(0x31).chr(0x2d).chr(0x30).chr(0x3a).chr(0x31).chr(0x2e).chr(0x38).chr(0x2e).chr(0x30).chr(0x2a).chr(0x31).chr(0x30).chr(0x30)) !== false) {
            
    $wert =        explode(chr(0x31).chr(0x2d).chr(0x30).chr(0x3a).chr(0x31).chr(0x2e).chr(0x38).chr(0x2e).chr(0x30).chr(0x2a).chr(0x31).chr(0x30).chr(0x30), $_IPS['VALUE']);
            
    $energierueck substr($wert[1], 17);
            
    SetValue(21961 /*[Zähler\eHZ\RegVar eHZ\Energieverbrauch seit letzter Rückstellung]*/$energierueck);
        }
        
    // Export Obiskennung:1-0:0.2.0*255 Hex:31 2d 30 3a 30 2e 32 2e 30 2a 32 35 35
        
    if(strpos($_IPS['VALUE'], chr(0x31).chr(0x2d).chr(0x30).chr(0x3a).chr(0x30).chr(0x2e).chr(0x32).chr(0x2e).chr(0x30).chr(0x2a).chr(0x32).chr(0x35).chr(0x35)) !== false) {
            
    $wert =        explode(chr(0x31).chr(0x2d).chr(0x30).chr(0x3a).chr(0x30).chr(0x2e).chr(0x32).chr(0x2e).chr(0x30).chr(0x2a).chr(0x32).chr(0x35).chr(0x35), $_IPS['VALUE']);
            
    $firmware substr($wert[1], 120);
            
    SetValueString(22843 /*[Zähler\eHZ\RegVar eHZ\Firmware Version]*/$firmware);
        }
        
    // Export Obiskennung:1-0:96.90.2*255 Hex:31 2d 30 3a 39 36 2e 39 30 2e 32 2a 32 35 35
        
    if(strpos($_IPS['VALUE'], chr(0x31).chr(0x2d).chr(0x30).chr(0x3a).chr(0x39).chr(0x36).chr(0x2e).chr(0x39).chr(0x30).chr(0x2e).chr(0x32).chr(0x2a).chr(0x32).chr(0x35).chr(0x35)) !== false) {
            
    $wert =        explode(chr(0x31).chr(0x2d).chr(0x30).chr(0x3a).chr(0x39).chr(0x36).chr(0x2e).chr(0x39).chr(0x30).chr(0x2e).chr(0x32).chr(0x2a).chr(0x32).chr(0x35).chr(0x35), $_IPS['VALUE']);
            
    $pruefsumme substr($wert[1], 14);
            
    SetValueString(11964 /*[Zähler\eHZ\RegVar eHZ\Prüfsumme]*/$pruefsumme);
        }
        
    // Export Obiskennung:1-0:97.97.0*255 Hex:31 2d 30 3a 39 37 2e 39 37 2e 30 2a 32 35 35
        
    if(strpos($_IPS['VALUE'], chr(0x31).chr(0x2d).chr(0x30).chr(0x3a).chr(0x39).chr(0x37).chr(0x2e).chr(0x39).chr(0x37).chr(0x2e).chr(0x30).chr(0x2a).chr(0x32).chr(0x35).chr(0x35)) !== false) {
            
    $wert =        explode(chr(0x31).chr(0x2d).chr(0x30).chr(0x3a).chr(0x39).chr(0x37).chr(0x2e).chr(0x39).chr(0x37).chr(0x2e).chr(0x30).chr(0x2a).chr(0x32).chr(0x35).chr(0x35), $_IPS['VALUE']);
            
    $statusreg substr($wert[1], 18);
            
    SetValue(28032 /*[Zähler\eHZ\RegVar eHZ\Status Register]*/$statusreg);
        }

    ?>
    Den Eigenverbrauch der PV-Leistung habe ich dann aus Erzeugung-Export errechnet.

    Übrigens hat paresy #3 nicht ganz Recht ... ich habe meinen Itron schon vor 6 Jahren im Pullmodus betrieben.
    https://www.symcon.de/forum/threads/...r-an-IP-Symcon

    Würde mich freuen wenn Feedback kommt.
    Geändert von integrator (01.06.19 um 17:04 Uhr) Grund: Vorzeichen bei Stromeffektivwert braucht eine Stelle mehr.
    Tschö Marcus
    ----------------------------------------------------------------------
    Was man anfängt sollte man auch zu Ende bri

  7. #17
    Registriert seit
    Jun 2014
    Beiträge
    4

    Moin,

    erst mal ein großes Lob an Marcus für dieses Script und die detailierten Grafiken. Ich konnte bei meinem Logarex Zähler, bis auf das Anpassen der ObjektID´s, das Auswertungsscript 1 zu 1 übernehmen. Eine Ergänzung möchte ich aber loswerden. Da mein Zähler nicht über RS-485, sondern über die optische Schnittstelle ausgelesen wird, brauche ich kein Initialisierungsscript. Die Schnittstelle läuft im PUSH-Modus. Der Datensatz der beiden Schnittstellen scheint nicht ganz gleich zu sein. Die Cuttereinstellung mit dem vorgegebenen linken Trennzeichen (02) führt bei mir zu einem Überlauf des Puffer > 8kb. Als Lösung erwies sich die Eingabe der Zählerseriennummer.

    Holt jau fuchtig Markus

  8. #18
    Registriert seit
    Jun 2013
    Ort
    Regensburg
    Beiträge
    504

    Zitat Zitat von O Raily Beitrag anzeigen
    Ich konnte bei meinem Logarex Zähler, bis auf das Anpassen der ObjektID´s, das Auswertungsscript 1 zu 1 übernehmen. Eine Ergänzung möchte ich aber loswerden. Da mein Zähler nicht über RS-485, sondern über die optische Schnittstelle ausgelesen wird, brauche ich kein Initialisierungsscript. Die Schnittstelle läuft im PUSH-Modus.
    Hallo,
    siehe: Stromzähler mit optischer Schnittstelle einlesen

    Dieses Thema ist für RS485.
    Gruß Jürgen
    (KNX Licht+Steckd.+Rollo+Wetter, EnOcean Fenstergr.+Taster, 1-Wire, M-BUS (SensusHRI+EnergyCam), Alexa, Gira Dual/VdS+KNX, DMX, Denon X4000 (3 Zonen), Fritzbox, 3xVivotek IP-Cam, LevelJet, Dreambox, Vu+, Homematic CCU1+Stellantr.+Fernb.)

  9. #19
    Registriert seit
    Sep 2010
    Beiträge
    177

    Unhappy Leider noch nicht ganz gut

    Der Wert bei der unten genannten Obiskennzahl (Stromeffektivwert) liefert ganze Zahlen aber je nach Sonne auch negative Werte. Jetzt kommt es dazu das keine feste Anzahl an Ziffern vorhanden sind.
    Stelle ich 7 Stellen ein liefert er richtige negativ aber falsche positive Werte
    Stelle ich 6 Stellen ein liefert er richtige positive aber falsche negative Werte

    Er fängt bei diesem Skript von links an zu zählen.

    Ich komme hier nicht weiter, wer kann helfen.

    PHP-Code:
     }
        
    // Export Obiskennung:1-0:16.7.0*255 Hex:31 2d 30 3a 31 36 2e 37 2e 30 2a 32 35 35
        
    if(strpos($_IPS['VALUE'], chr(0x31).chr(0x2d).chr(0x30).chr(0x3a).chr(0x31).chr(0x36).chr(0x2e).chr(0x37).chr(0x2e).chr(0x30).chr(0x2a).chr(0x32).chr(0x35).chr(0x35)) !== false) {
            
    $wert =        explode(chr(0x31).chr(0x2d).chr(0x30).chr(0x3a).chr(0x31).chr(0x36).chr(0x2e).chr(0x37).chr(0x2e).chr(0x30).chr(0x2a).chr(0x32).chr(0x35).chr(0x35), $_IPS['VALUE']);
            
    $stromeff substr($wert[1], 17);
            
    SetValue(10335 /*[Zähler\eHZ\RegVar eHZ\Stromeffektivwert]*/$stromeff);
        } 
    Tschö Marcus
    ----------------------------------------------------------------------
    Was man anfängt sollte man auch zu Ende bri

  10. #20
    Registriert seit
    Jun 2013
    Ort
    Regensburg
    Beiträge
    504

    Hallo,

    warum machst du das eigentlich so kompliziert?
    Du musst überhaupt nicht mit HEX-Werten arbeiten.

    Suche doch einfach die öffnende Klammer und die schließende Klammer. Anschließend kannst du alles dazwischen verwenden:
    PHP-Code:
    // Alles vor Klammer wegschneiden
    $part substr($partstrpos($part"(")+1);

    // Alles nach der Klammer wegschneiden
    $part substr($part0strpos($part")")); 
    Gruß Jürgen
    (KNX Licht+Steckd.+Rollo+Wetter, EnOcean Fenstergr.+Taster, 1-Wire, M-BUS (SensusHRI+EnergyCam), Alexa, Gira Dual/VdS+KNX, DMX, Denon X4000 (3 Zonen), Fritzbox, 3xVivotek IP-Cam, LevelJet, Dreambox, Vu+, Homematic CCU1+Stellantr.+Fernb.)

Ähnliche Themen

  1. Stromzähler mit optischer Schnittstelle einlesen
    Von Brovning im Forum Haustechnik
    Antworten: 6
    Letzter Beitrag: 29.11.18, 08:32
  2. Stromzähler mit RS485
    Von dfhome im Forum Haustechnik
    Antworten: 86
    Letzter Beitrag: 20.09.14, 13:01
  3. Jalousiesteuerung mit RS485 Schnittstelle in IPS integrieren
    Von bastianstrauss im Forum Haustechnik
    Antworten: 0
    Letzter Beitrag: 08.05.14, 18:46
  4. Stromzähler per wago einlesen und visualisieren
    Von Gorilatzu im Forum SPS Automatisierungstechnik
    Antworten: 3
    Letzter Beitrag: 22.10.12, 21:24