+ Antworten
Seite 2 von 2 ErsteErste 1 2
Ergebnis 11 bis 16 von 16
  1. #11
    Registriert seit
    Mar 2017
    Ort
    Mittelfranken
    Beiträge
    196

    @Nall-chan: Die Variable die einem Kanal zugeordnet ist liest das Modul nicht aus.

    Du musst im CCU Script die 3. Zeile anpassen "Get("svHmIPRainCounterOldVal3_1815");" hier musst Du deine Werte eintragen.

    An diesen Wert kommst Du wenn Du die im Browser diese Seite aufruft "http://XXX.XXX.XXX/addons/xmlapi/statelist.cgi" wo die XXX stehen musst du die IP deiner CCU eintragen.
    Dann sollte so ein Fenster aufgehen

    Name:  CCU state list.png
Hits: 52
Größe:  174.5 KB


    hier ganz runter scrolen da sollte die Wetterstation auftauchen hier die Nummer verwenden und ins Script eintragen.

  2. #12
    Registriert seit
    Mar 2017
    Ort
    Mittelfranken
    Beiträge
    196

    @obi235

    Das geniale Script ist eigendlich für den Stromverbrauch gedacht, es hat Pitti hier vom Forum geschrieben. Ich habe es nur umgestaltet für meinen Zweck.

    Die PHP Profis werden die Hände über den Kopf zusammenschlagen aber was solls es funktioniert.

    Dies ist das Script für den Regen

    PHP-Code:
    <? 
    #include('globalfunction.ips.php');
    #########################################################################################################################################################################
    # Scriptbezeichnung: HM.Consumption.ips.php
    # Version: 1.1
    # Author: Heiko Wilknitz
    # Anpassung by Drapple & zerfasm
    #
    # Auswertung und Hochrechnung des Stromverbrauches
    #
    # ----------------------------- KONFIGURATION ---------------------------------------------------------------------------------------------------------------------------
    #
    # Anzahl Nachkommastellen bei Ergebnissen
    $roundTo2   2//Anzahl Nachkommastellen bei Ergebnissen
    $roundTo3   3//Anzahl Nachkommastellen bei Ergebnissen

    //$kosten        = GetValue(48811 /*[Stromzaehler\Preis pro KWh]*/); //Floatvariable mit dem Preis pro kWh        ANLEGEN
    #
    # ----------------------------------- ID´s ------------------------------------------------------------------------------------------------------------------------------
    #
    $parentID     IPS_GetObject($_IPS['SELF']); 
    $parentID     $parentID['ParentID'];

    # ID des ArchiveHandler ermitteln 
    $instances     IPS_GetInstanceListByModuleID('{43192F0B-135B-4CE7-A0A7-1475603F3060}'); 
    $archiveID     $instances[0]; 
    #
    #########################################################################################################################################################################

    // Verbrauchszähler
    #$valueID     = IPS_GetObjectIDByIdent("ENERGY_COUNTER_TOTAL", $parentID); //Wenn ObjektID verwendet werden soll
    $valueID     45842 /*[Stromzaehler\modbus\Zaehlerstand\Zaehlerstand]*///Wenn VariablenID verwendet werden soll           EINTRAGEN


    // -------------------------- VARIABLENPROFIL ERSTELLEN -----------------------------------------------------------------------------------------------------------------
    // Profilname kWh    
    $vpname="mm";
    if (
    IPS_VariableProfileExists($vpname) ==false//Wenn das Provil noch nicht Exestiert dann lege es an:
    {
        
    IPS_CreateVariableProfile($vpname2); //Variabelprofil erstellen
        #IPS_SetVariableProfileIcon($vpname,"Lightning"); //Variabelprofil Icon zuweisen
        
    IPS_SetVariableProfileText($vpname,""," mm"); //Suffix setzen
        
    IPS_SetVariableProfileValues($vpname00,); //Der Befehl setzt den MinimalWert, MaximalWert und die Schrittweite eines Variablenprofils mit Namen ProfilName.
        
    IPS_SetVariableProfileDigits($vpname$roundTo2); //Anzahl Nachkommastellen, in diesem Fall 2
    }

    // Profilname"Euro"
    //$vpname2="Euro";
    //if (!IPS_VariableProfileExists($vpname2)) //Wenn das Provil noch nicht Exestiert dann lege es an:
    //{
     //   IPS_CreateVariableProfile($vpname2, 2); //Variabelprofil erstellen
        #IPS_SetVariableProfileIcon($vpname,"Euro"); //Variabelprofil Icon zuweisen
    //    IPS_SetVariableProfileText($vpname2,""," €"); //Suffix setzen
    //    IPS_SetVariableProfileValues($vpname2, 0, 0,0 ); //Der Befehl setzt den MinimalWert, MaximalWert und die Schrittweite eines Variablenprofils mit Namen ProfilName.
    //    IPS_SetVariableProfileDigits($vpname2, $roundTo2); //Anzahl Nachkommastellen, in diesem Fall 2
    //} 

    // -------------------------- INSTANZEN ERSTELLEN -----------------------------------------------------------------------------------------------------------------------
    // Verbrauchsinstanzen anlegen
    $enerID GetorCreatcategory("Regenberichte",$parentID); 
    $lastID GetOrCreateInstanz"Regen Zuletzt","dummy",$enerID);
    $currID GetOrCreateInstanz"Regen Aktuell","dummy",$enerID); 
    //$consID = GetOrCreateInstanz( "Hochrechnung Verbrauch","dummy",$enerID); 

    // Kosteninstanzen anlegen
    //$enerCostID = GetorCreatcategory( "Energiekostenberichte",$parentID); 
    //$lastCostID = GetOrCreateInstanz( "Kosten Zuletzt","dummy",$enerCostID);
    //$currCostID = GetOrCreateInstanz( "Kosten Aktuell","dummy",$enerCostID); 
    //$consCostID = GetOrCreateInstanz( "Hochrechnung Kosten","dummy",$enerCostID); 

    // -------------------------- VARIABLEN ERSTELLEN -----------------------------------------------------------------------------------------------------------------------

    // Verbrauchsvariablen anlegen bzw. auslesen
    $lastDayID GetOrCreateVariable('Letzter Tag'2,"POWER_CONSUMPTION_LAST_DAY"$vpname""true$lastID"1"); 
    $lastWeekID GetOrCreateVariable('Letzte Woche'2"POWER_CONSUMPTION_LAST_WEEK"$vpname""true$lastID"2"); 
    $lastMonthID GetOrCreateVariable('Letzter Monat'2"POWER_CONSUMPTION_LAST_MONTH"$vpname"",true$lastID"3"); 
    $lastYearID GetOrCreateVariable('Letztes Jahr'2"POWER_CONSUMPTION_LAST_YEAR"$vpname""true$lastID"4"); 

    $currDayID GetOrCreateVariable('Aktueller Tag'2"POWER_CONSUMPTION_ACTUAL_DAY"$vpname,""true$currID"1");
    $currWeekID GetOrCreateVariable('Aktuelle Woche'2"POWER_CONSUMPTION_ACTUAL_WEEK"$vpname,"",true,$currID"2");
    $currMonthID GetOrCreateVariable('Aktueller Monat'2"POWER_CONSUMPTION_ACTUAL_MONTH"$vpname"",true$currID"3");
    $currYearID GetOrCreateVariable('Aktuelles Jahr'2"POWER_CONSUMPTION_ACTUAL_YEAR"$vpname"",true$currID"4");

    //$consDayID = GetOrCreateVariable('Tag', 2, "POWER_CONSUMPTION_EXTRAPOLATION_DAY", $vpname, "", true, $consID, "1");
    //$consWeekID = GetOrCreateVariable('Woche', 2, "POWER_CONSUMPTION_EXTRAPOLATION_WEEK", $vpname, "", true, $consID, "2");
    //$consMonthID = GetOrCreateVariable('Monat', 2, "POWER_CONSUMPTION_EXTRAPOLATION_MONTH", $vpname, "", true, $consID, "3");
    //$consYearID = GetOrCreateVariable('Jahr', 2, "POWER_CONSUMPTION_EXTRAPOLATION_YEAR", $vpname, "", true, $consID, "4");

    // Kostenvariablen anlegen bzw. auslesen
    //$lastDayCostID = GetOrCreateVariable('Letzter Tag', 2, "POWER_COST_LAST_DAY", $vpname2, "", true, $lastCostID, "1");
    //$lastWeekCostID = GetOrCreateVariable('Letzte Woche', 2, "POWER_COST_LAST_WEEK", $vpname2, "", true, $lastCostID, "2");
    //$lastMonthCostID = GetOrCreateVariable('Letzter Monat', 2, "POWER_COST_LAST_MONTH", $vpname2, "", true, $lastCostID, "3");
    //$lastYearCostID = GetOrCreateVariable('Letztes Jahr', 2, "POWER_COST_LAST_YEAR", $vpname2, "", true, $lastCostID, "4");

    //$currDayCostID = GetOrCreateVariable('Aktueller Tag', 2, "POWER_COST_ACTUAL_DAY", $vpname2, "", true, $currCostID, "1");
    //$currWeekCostID = GetOrCreateVariable('Aktuelle Woche', 2, "POWER_COST_ACTUAL_WEEK", $vpname2, "", true, $currCostID, "2");
    //$currMonthCostID = GetOrCreateVariable('Aktueller Monat', 2, "POWER_COST_ACTUAL_MONTH", $vpname2, "", true, $currCostID, "3");
    //$currYearCostID = GetOrCreateVariable('Aktuelles Jahr', 2, "POWER_COST_ACTUAL_YEAR", $vpname2, "", true, $currCostID, "4");

    //$consDayCostID = GetOrCreateVariable('Tag', 2, "POWER_COST_EXTRAPOLATION_DAY", $vpname2,"", true, $consCostID, "1");
    //$consWeekCostID = GetOrCreateVariable('Woche', 2, "POWER_COST_EXTRAPOLATION_WEEK", $vpname2, "",true, $consCostID, "2");
    //$consMonthCostID = GetOrCreateVariable('Monat', 2, "POWER_COST_EXTRAPOLATION_MONTH", $vpname2, "",true, $consCostID, "3");
    //$consYearCostID = GetOrCreateVariable('Jahr', 2, "POWER_COST_EXTRAPOLATION_YEAR", $vpname2, "",true, $consCostID, "4");


    // -------------------------- LETZTE WERTE ------------------------------------------------------------------------------------------------------------------------------
    // GESTERN
    $data AC_GetAggregatedValues($archiveID$valueID/* Täglich */strtotime("yesterday"), strtotime("today")-10); 
    SetValueFloat($lastDayIDCalcConsumption($data));
    //SetValue($lastDayCostID,GetValue($lastDayID)*$kosten);

    // LEZTE WOCHE
    $data AC_GetAggregatedValues($archiveID$valueID/* Wöchentlich */strtotime("monday last week"), strtotime("monday this week")-10); 
    SetValueFloat($lastWeekIDCalcConsumption($data));
    //SetValue($lastWeekCostID,GetValue($lastWeekID)*$kosten);

    // LETZTER MONAT
    $data AC_GetAggregatedValues($archiveID$valueID/* Monatlich */strtotime("first day of last month 00:00:00"), strtotime("last day of last month 23:59:59"), 0); 
    SetValueFloat($lastMonthIDCalcConsumption($data));
    //SetValue($lastMonthCostID,GetValue($lastMonthID)*$kosten);

    // LETZTES JAHR
    $ly date('Y'strtotime('-1 year'));
    $data AC_GetAggregatedValues($archiveID$valueID/* Jährlich */mktime(00011$ly), mktime(2359591231$ly), 0); 
    SetValueFloat($lastYearIDCalcConsumption($data));
    //SetValue($lastYearCostID,GetValue($lastYearID)*$kosten);


    // ------------------------- AKTUELLE WERTE -----------------------------------------------------------------------------------------------------------------------------
    // HEUTE
    $data AC_GetAggregatedValues($archiveID$valueID/* Stündlich */strtotime("today"), strtotime("now"), 0);
    $dataDay CalcConsumption($data);
    SetValueFloat($currDayID$dataDay);
    //SetValue($currDayCostID,GetValue($currDayID)*$kosten);

    // WOCHE
    $data AC_GetAggregatedValues($archiveID$valueID/* Wöchentlich */strtotime('last monday'strtotime('tomorrow')), strtotime("now"), 0); 
    $dataWeek CalcConsumption($data);
    SetValueFloat($currWeekID$dataWeek);
    //SetValue($currWeekCostID,GetValue($currWeekID)*$kosten);

    // MONAT
    $data AC_GetAggregatedValues($archiveID$valueID/* Monatlich */strtotime("first day of this month 00:00"), strtotime("now"), 0);
    $dataMonth CalcConsumption($data);
    SetValueFloat($currMonthID$dataMonth);
    //SetValue($currMonthCostID,GetValue($currMonthID)*$kosten);

    // JAHR
    $data AC_GetAggregatedValues($archiveID$valueID/* Jährlich */strtotime("first day of January"), strtotime("now"), 0); 
    $dataYear CalcConsumption($data);
    SetValueFloat($currYearID$dataYear);
    //SetValue($currYearCostID,GetValue($currYearID)*$kosten);


    // ------------------------- HOCHRECHNUNG -------------------------------------------------------------------------------------------------------------------------------
    // TAG
    //$diff = strtotime('now') - strtotime('today');
    //$full = 60*60*24; // 24h
    //$data = round($dataDay*$full/$diff, 2);
    //SetValueFloat($consDayID, $data);
    //SetValue($consDayCostID,GetValue($consDayID)*$kosten);

    // WOCHE
    //$diff = strtotime('now') - strtotime('last monday', strtotime('tomorrow'));
    //$full = 60*60*24*7; // 7 Tage
    //$data = round($dataWeek*$full/$diff, 2);
    //SetValueFloat($consWeekID, $data);
    //SetValue($consWeekCostID,GetValue($consWeekID)*$kosten);

    // MONAT
    //$diff = strtotime('now') - strtotime('first day of this month 00:00');
    //$full = 60*60*24*date('t'); // 1 Monat
    //$data = round($dataMonth*$full/$diff, 2);
    //SetValueFloat($consMonthID, $data);
    //SetValue($consMonthCostID,GetValue($consMonthID)*$kosten);

    // JAHR
    //$diff = strtotime('now') - strtotime('first day of January');
    //$full = 60*60*24*365; // 1 Jahr
    //$data = round($dataYear*$full/$diff, 2);
    //SetValueFloat($consYearID, $data);
    //SetValue($consYearCostID,GetValue($consYearID)*$kosten);


    // ------------------------- TIMER ERSTELLEN ----------------------------------------------------------------------------------------------------------------------------
    SetTimerByName($_IPS['SELF'], "Täglich alle Stunde");


    // ------------------------- FUNKTIONEN ---------------------------------------------------------------------------------------------------------------------------------
    // Funktion zum addieren der Zählerwerte 
    function CalcConsumption($values
    {
        global 
    $roundTo2;
        
    $consumption 0;
        foreach(
    $values as $value
        {
                
    $consumption += $value['Avg'];
        }
        return 
    round($consumption$roundTo2);

        
        
    // Funktion um einen Timer zu erzeugen
    function SetTimerByName($parentID$name
    {
        Global ${
    $_IPS['SELF']};
        
    $eid = @IPS_GetEventIDByName($name$parentID);
        if(
    $eid === false
    {
        
    $eid IPS_CreateEvent(1);
        
    IPS_SetParent($eid$parentID);
        
    IPS_SetName($eid$name);
        
        
    IPS_SetEventCyclic($eid/* Täglich *//* Jeden Tag */00/* Stündlich *//* Alle Stunden */);
        
    IPS_SetEventCyclicTimeFrom($eid010); //Ab 00:01 stündlich starten
        
    IPS_SetEventActive($eidtrue);
    }
        return 
    $eid;



    // ------------------------- IPS GRUNFUNKTIONEN -------------------------------------------------------------------------------------------------------------------------

    // Erstellt eine Variable, wenn diese noch nicht existiert
    function GetOrCreateVariable($name $vtyp$ident$profil$ascript$log ,$parent,$position // erstellt eine Variable, wenn es noch nicht exestiert
    /* 
    Wert 1 = Name
    Wert 2 = Variablentyp
    Wert 3 = Variablen-Ident 
    Wert 4 = Variablenprofil 
    Wert 5 = ScriptID 
    Wert 6 = Logging der Daten (True/False)
    Wert 7 = Übergeordnete Instanz, wo die Variable angelegt werden soll 
    Wert 8 = Reihenfolge / Sortierung der Variablen
    */
    {
        
    $ObjId = @IPS_GetObjectIDByName($name $parent);
        if (
    $ObjId === false)
        {
            
    $ObjId IPS_CreateVariable($vtyp);
            
    IPS_SetName($ObjId$name); //Namen vergeben
            
    IPS_SetIdent($ObjId$ident); //ObjectIdent vergeben
            
    IPS_SetParent($ObjId,$parent ); //Variable unter die Instantz verschieben
            
    @IPS_SetVariableCustomProfile($ObjId$profil); //Variablen-Profil zuordnen
            
    @IPS_SetVariableCustomAction($ObjId$ascript); //Verknüpft das Script mit der Variable als Actionscript

            // Archive Control ID herrausfinden
            
    foreach(IPS_GetInstanceList ( ) as $m_id//Durchsucht alle Instanzen und gibt die InstanzID an $i_id weiter
            
    {
                
    $typ=IPS_GetInstance($m_id)['ModuleInfo']['ModuleName']; //Fragt die Instanzen nach den Modulnamen ab
                
    if ($typ=="Archive Control"$modul_id=$m_id//Wenn die Instanz den Modulnamen "Archive Control" hat, dann schreibe die ID in $modul_id
            
    }
            
    $logging=AC_GetLoggingStatus($modul_id,$ObjId);
            
            if (
    $logging != 1)
            {
                
    AC_SetLoggingStatus($modul_id,$ObjId$log);
                
    IPS_ApplyChanges($modul_id);
            }
    // Ende Logging
            
            
    IPS_SetPosition($ObjId,$position);
        }
        return 
    $ObjId;
    }


    // Erstellt eine Instanz, wenn diese noch nicht existiert
    function GetOrCreateInstanz($name $ityp$parent //erstellt eine Variable, wenn diese noch nicht exestiert
    /*
    Wert 1 = Name
    Wert 2 = Instanztyp 
    Wert 3 = Übergeordnete Instanz, wo die Instanz angelegt werden soll
    */
    {
        
    $ObjId = @IPS_GetObjectIDByName($name $parent);
        if (
    $ObjId === false)
        {
            if (
    $ityp=="dummy"$ityp='{485D0419-BE97-4548-AA9C-C083EB82E61E}';
            
    $ObjId IPS_CreateInstance($ityp);
            
    IPS_SetName($ObjId$name); // Namen vergeben
            
    IPS_SetParent($ObjId,$parent ); // Variable unter die Instantz verschieben
        
    }
        return 
    $ObjId;
    }


    // Erstellt ein Script, wenn es noch nicht exestiert
    function GetOrCreateScript($name $parent$data$hidden 
    /*
    Wert 1 = Name
    Wert 2 = Übergeordnete Instanz, wo das Script angelegt werden soll
    Wert 3 = Ist das, was ins Script geschrieben wird
    Wert 4 = Ob das Script sichtbar sein soll (true, false)
    */
    {
        
    $ObjId = @IPS_GetObjectIDByName($name $parent);
        if (
    $ObjId === false)
        {
             
    $ObjId IPS_CreateScript(0);
            
    IPS_SetName($ObjId$name);
            
    IPS_SetScriptContent($ObjId"$data"); // Der Text was ins Script geschrieben wird
            
    IPS_SetHidden($ObjId$hidden); // Setzt Script auf nicht sichtbar
            
    IPS_SetParent($ObjId,$parent ); //  Script unter das Parent verschieben
         
    }
        return 
    $ObjId;
    }


    // Erstellt eine Kategorie, wenn diese noch nicht exestiert
    function GetorCreatcategory($name,$parent)
    #function GetorCreatcategory($name,$parent, $position, $hidden)
    {
    $LinkID = @IPS_GetObjectIDByName($name $parent);
    if (
    $LinkID === false)
    {
        
    $LinkID IPS_CreateCategory(); // Link anlegen
        
    IPS_SetName($LinkID$name); // Link benennen
        
    IPS_SetParent($LinkID$parent); // Link einsortieren unter dem Objekt mit der ID "12345"
        #if ($hidden ===true) IPS_SetHidden($LinkID,true);
        #IPS_SetPosition($LinkID,$position); //Position festlegen
    }
        return 
    $LinkID;
    }

    ?>
    Du musst nur bei Verbrauchszähler die ID deines Regenzählers eintragen und dann sollte es gehen.

    Für die Temperatur habe ich ein anderes Script
    Geändert von stern (01.07.20 um 00:24 Uhr)

  3. #13
    Registriert seit
    Jun 2012
    Ort
    House of Dragons @ Lübeck
    Beiträge
    10,139

    Wie gesagt, die Systemvariablen welche den Kanal der klassischen HM Wetterstation zugeordnet sind funktionieren bei mir.
    Die Systemvariablen alle Messaktoren allerdings nicht, deswegen habe ich dafür eigene Instanzen entworfen.
    Wenn es also mit dem Modul nicht funktioniert, ist es definitiv ein Bug.

    Das xmlapi Addon habe ich nie installiert, da es ohne Authentifizierung über den normalen WebServer Port der CCU läuft, ist es ein mögliches Sicherheitsrisiko.
    Michael
    on Win7VM (ESXi): I5, 24GB RAM, HW-RAID5, 3xSat | HW: CCU + 123 Geräte (506ch), EM1000, CUL, 1Wire, XBee, ELRO 433MHz, FritzBox Cable, Android Phone + Tablet, Samsung C-Serie TV +SamyGo-Ext, Onkyo NR| SW: IPS, Apache2(mod_ssl/PHP), MySQL, hMailServer, PRTG, Rising AV, Piwik, RoundCube, Wordpress, WinLIRC, WHS2011, MediaPortal, XBMC

  4. #14
    Registriert seit
    Mar 2017
    Ort
    Mittelfranken
    Beiträge
    196

    Hallo Michael, ich benutze dein Modul und es ist echt klasse aber es liest bei mir nicht alle Variablen aus.


    Hier ist mal der Link vom Homematic Forum wo Alchy es genau beschreibt.

    https://homematic-forum.de/forum/vie...p?f=31&t=30127

  5. #15
    Registriert seit
    Jun 2012
    Ort
    House of Dragons @ Lübeck
    Beiträge
    10,139

    Da steht nicht mehr als mir schon bekannt war.
    Ich sage ja ich habe doch noch einen, nein eher mehrere Bugs.
    Je nach Typ der ReGaHSS gibt es Probleme mit den Modul.
    Es würde ursprünglich für die entfernte Legacy-ReGaHss geschrieben.
    Vielleicht finde ich aber endlich Mal Zeit das zu fixen
    Michael
    on Win7VM (ESXi): I5, 24GB RAM, HW-RAID5, 3xSat | HW: CCU + 123 Geräte (506ch), EM1000, CUL, 1Wire, XBee, ELRO 433MHz, FritzBox Cable, Android Phone + Tablet, Samsung C-Serie TV +SamyGo-Ext, Onkyo NR| SW: IPS, Apache2(mod_ssl/PHP), MySQL, hMailServer, PRTG, Rising AV, Piwik, RoundCube, Wordpress, WinLIRC, WHS2011, MediaPortal, XBMC

  6. #16
    Registriert seit
    Mar 2017
    Ort
    Mittelfranken
    Beiträge
    196

    Sorry, der Link war eigentlich für Nocturne gedacht.

    Das ich Dir Michael als alten Profi so etwas nicht schicken muß ist doch klar.

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 14.10.18, 18:55
  2. Homematic IP HmIP-SWO-PL Wettersensor fehlende und falsche Daten in Symcon
    Von obi235 im Forum Sonstige Funkkomponenten / Wetterstationen
    Antworten: 2
    Letzter Beitrag: 14.10.18, 16:08
  3. Wettersensor KS300-2
    Von RWN im Forum Anleitungen / Nützliche PHP Skripte
    Antworten: 18
    Letzter Beitrag: 19.05.07, 22:06
  4. PC-Wettersensor-Empfänger
    Von astrastar im Forum Sonstige Funkkomponenten / Wetterstationen
    Antworten: 4
    Letzter Beitrag: 13.04.07, 21:54
  5. PC Wettersensor
    Von MSR_Junky im Forum Bastel-Ecke
    Antworten: 3
    Letzter Beitrag: 17.07.06, 20:44