Ankündigung

Einklappen
Keine Ankündigung bisher.

eHZ Visu Beispiel mit neuem Widget Stacked Column Bar Chart

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Shai
    antwortet
    Sooo


    nach dem Update auf "Develop" und dem Patch habe ich auch eine bessere Ansicht hinbekommen, allerdings nicht ganz ohne Folgefehler.

    Wie man sieht ist der erste Tag & zweite Tag etwas "verrutscht" und "Heute" hängt irgendwie im Balken von gestern...

    Außerdem gibt es jetzt 2 JavaScript Fehler und ne Meldung auf meiner Index.php und ne Meldung von Highcharts...

    Highcharts Meldung (beim Aufruf der Stacked Charts): Highcharts Error #15


    Hat das noch jemand?

    Grüße,

    Lars


    EDIT:

    Offenbar ist meine SmartVISU Version veraltet, hier muss ich wohl auch mal auf den neusten Stand updaten....
    Angehängte Dateien

    Einen Kommentar schreiben:


  • sparsematrix
    antwortet
    Moin Zusammen,

    ich habe es hinbekommen, es wird schon gestacked. Ich muss jetzt abwarten bis die DB etwas mehr WERTE enthält.

    So sieht es momentan bei mir aus, zurzeit wird nur der Zähler von der WP aufgezeichnet, weil ich noch keinen zweiten für den Haushaltszähler habe.
    Angehängte Dateien

    Einen Kommentar schreiben:


  • Shai
    antwortet
    Moin,

    ich bin gerade dabei auch mal auf den Develop Zweig zu wechseln und den Count-Patch einzuspielen, dabei stellt sich mir dann die Frage:

    "Habt Ihr auch den kompletten "smartvisu" Ordner ins Frontend integriert?"

    Ich hab mir mal n Diff gezogen und gerade in der "widget.js" ist deutlich mehr Code drin als nur was zum "count". - Wäre jetzt zu hoffen das das keine negativen Auswirkungen hat ;-)


    Grüße,

    Lars

    Einen Kommentar schreiben:


  • Sandman60
    antwortet
    upgrade.py vom GIT mit in das Verzeichnis gezogen?

    Einen Kommentar schreiben:


  • sparsematrix
    antwortet
    Hallo Zusammen,

    ich habe den Fehler mit dem TAB jetzt wegbekommen.
    Bekomme jetzt aber diesen Fehler:

    Init SmartHome.py 1.0-35-gf62db45+
    2015-02-28 18:55:30 INFO Main Start SmartHome.py 1.0-35-gf62db45+
    2015-02-28 18:55:30 INFO Main Init Scheduler
    2015-02-28 18:55:30 INFO Main Init Plugins
    2015-02-28 18:55:30 ERROR Main Plugin sql exception: No module named upgrade
    Traceback (most recent call last):
    File "/usr/local/smarthome_develop_version_28_02_2015/lib/plugin.py", line 53, in __init__
    plugin_thread = Plugin(smarthome, plugin, classname, classpath, args)
    File "/usr/local/smarthome_develop_version_28_02_2015/lib/plugin.py", line 80, in __init__
    exec("self.plugin = {0}.{1}(smarthome{2})".format(classpath, classname, args))
    File "<string>", line 1, in <module>
    File "/usr/local/smarthome_develop_version_28_02_2015/plugins/sqlite/__init__.py", line 79, in __init__
    import plugins.sqlite.upgrade
    ImportError: No module named upgrade

    Einen Kommentar schreiben:


  • sparsematrix
    antwortet
    Hallo,

    das habe ich schon gemacht, es sind eigentlich TABS, vielleicht habe ich was übersehen, ich suche heute noch mal danach.

    Einen Kommentar schreiben:


  • Shai
    antwortet
    Hey,

    die Meldung:

    Code:
    TabError: inconsistent use of tabs and spaces in indentation
    deutet darauf hin das in der "__init__.py" vom SQLite Plugin einmal mit Whitespaces und einmal mit Tabs eingerückt wurde.
    Vermutlich um Zeile 80.

    Am besten öffnest Du die Datei mal in einem Editor der Steuerzeichen anzeigt und korrigierst die betroffene Stelle per Hand. Also entweder auf Tabs oder Whitespaces, je nachdem was im Rest der Datei verwendet wird.


    Grüße,

    Lars

    Einen Kommentar schreiben:


  • sparsematrix
    antwortet
    Developer Version mit Count Patch Sqlite Fehler

    Hallo Zusammen,

    ich habe die aktuelleste dev Version von sh.py aus dem git ausgecheckt und genauso den Patch.

    Wenn ich jetzt sh.py starte bekomme ich folgende Fehlermeldung:

    Code:
    root@fhem:/usr/local/smarthome/plugins/sqlite# chown smarthome:smarthome __init__.py 
    root@fhem:/usr/local/smarthome/plugins/sqlite# cd ..
    root@fhem:/usr/local/smarthome/plugins# cd ..  
    Init SmartHome.py 1.0-35-gf62db45+
    2015-02-27 17:08:06 INFO     Main         Start SmartHome.py 1.0-35-gf62db45+
    2015-02-27 17:08:06 INFO     Main         Init Scheduler
    2015-02-27 17:08:06 INFO     Main         Init Plugins
    2015-02-27 17:08:06 ERROR    Main         Plugin sql exception: inconsistent use of tabs and spaces in indentation (__init__.py, line 80)
    Traceback (most recent call last):
      File "/usr/local/smarthome_develop_version_23_02_2015/lib/plugin.py", line 53, in __init__
        plugin_thread = Plugin(smarthome, plugin, classname, classpath, args)
      File "/usr/local/smarthome_develop_version_23_02_2015/lib/plugin.py", line 79, in __init__
        exec("import {0}".format(classpath))
      File "<string>", line 1, in <module>
      File "/usr/local/smarthome_develop_version_23_02_2015/plugins/sqlite/__init__.py", line 80
        logger.info("SQLite: upgrading database. Please wait!")
                                                              ^
    TabError: inconsistent use of tabs and spaces in indentation
    Ich habe das sqlite plugin nicht editiert, es kommt direkt aus dem git.
    Hat jemand eine Idee?

    Gruss
    Spars

    Einen Kommentar schreiben:


  • JensKindgen
    antwortet
    Zitat von hhhc Beitrag anzeigen
    Danke!


    ich hatte noch einen ungenutzten Pi hier rumliegen, den ich mittels 2 Leseköpfen von Volkszähler.org angebunden habe.
    ein kurzes Script fragt den Zähler jede Minute ab und pusht die Werte an sh.py mittels network plugin.
    Hi selbiges habe ich auch vor. Habe noch einen Pi rumfliegen, kannst du mir genaueres zu deiner Hardware nennen? Also welchen Lesekopf und wie genau hast du den Volkszähler angebunden? Mein Serverschrank steht ca 4 Meter entfernt von den Zählern. Was hast du da hin gezogen? Ließt du Wasser, Strom und auch Gas aus?
    Danke und Gruß Jens

    Einen Kommentar schreiben:


  • fuxl66
    antwortet
    Hi,
    Ich bastle gerade meine Items zusammen um entsprechende Diagramme zeichnen zu können. Nun scheitert es bereis am Verständnis bei einem deiner Items...

    Du verwendest folgenden Eintrag
    Code:
                [[[[aktuell]]]]
                    type = num
                    cache = on
                    eval = sh.ehz.haus() - sh.ehz.haus.db('max', '1d', sh.minute.since.midnight.dbstr())
                    eval_trigger = ehz.haus
    sh.ehz.haus() gibt doch den aktuellen Gesamtzählerwert aus.
    Davon wird der Zählerwert der vergangenen Mitternacht abgezogen.
    Verstehe ich das Richtig?

    Ist nicht der erste Wert nach 'max' innerhalb der DB Abfrage der Startpunkt bzw. der zweite Wert der Zeitraum der Abfrage also der MAX Wert innerhalb dieses Zeitraumes?
    Wenn dem so ist, sollte '1d' und sh.minute.since.midnight.dbstr() getauscht werden?

    So verstehe ich jedenfalls dieses Beispiel ganz unten: <<klick>>

    Bei einem hochzählendem Wert sollte doch eigentlich der min Wert zu Subtraktion herangezogen werden, also der Wert um Mitternacht.
    Im Beispiel wird aber der Max Wert verwendet.

    Also mein Item würde so aussehen:
    Code:
                [[[[aktuell]]]]
                    type = num
                    cache = on
                    eval = sh.ehz.haus() - sh.ehz.haus.db('min', sh.minute.since.midnight.dbstr(), '1d')
                    eval_trigger = ehz.haus
    Was meint ihr dazu?

    mfg
    Markus

    Einen Kommentar schreiben:


  • hhhc
    antwortet
    PHP script zum Auslesen des eHZ

    Hallo,

    ich wurde per PN gebeten, das Skript zu veröffentlichen, mit dem ich den eHZ auslese.
    Ich nutze hierzu PHP, da ich mit Bash-Skripts so meine Probleme hatte.

    Ich lasse es in 2 Intervallen laufen:
    1) Minütlich für den aktuellen Verbrauch
    2) Viertelstündlich für alle (anderen) Werte

    Aufruf siehe Doku im Header.



    PHP-Code:

    <?php
    // Install basic Ubuntu 14.04 image on Raspberry PI
    // Install php 5
    // Copy this script to the home folder and run in crontab
    // run with parameter "all" to send all parameters or call without any parameter to just send the current power (16.7)
    //
    //    */15 * * * * php read.php all
    //    * * * * * php read.php

    /*
    [ehz]
        [[haus]]
            type = num
            sqlite = yes
            nw = yes
        [[wp_tag]]
            type = num
            sqlite = yes
            nw = yes
        [[wp_nacht]]
            type = num
            nw = yes
            sqlite = yes
    */

    $urlBase 'udp://192.168.2.7:2727';

    $devices = array(
            
    '/dev/ttyUSB0' => array(
                    
    '1.8.1(' => 'ehz.haus',
                    
    '16.7(' => 'ehz.haus.leistung_aktuell'
             
    ),
            
    '/dev/ttyUSB1' => array(
                    
    '1.8.1(' => 'ehz.wp.tag',
                    
    '1.8.2(' => 'ehz.wp.nacht',
                    
    '16.7(' => 'ehz.wp.gesamt.leistung_aktuell'
             
    )
        );

    error_reporting(E_ALL);

    function 
    setSerial($device,$bps) {
        echo 
    "setze Schnittstelle auf $bps bps\n";
        
    $output=array();
        
    $returnVar=0;
        
    $cmd="stty $bps -F $device";
        
    exec($cmd$output,$returnVar);    
        echo 
    "Ergebnis vom Setzen der seriellen Schnittstelle per stty (2):\n";
        
    print_r($output);
    // function initSerial

    function setSerialInitial($device,$bps) {
        echo 
    "setze Schnittstelle auf $bps bps\n";
        
    $output=array();
        
    $returnVar=0;
        
    $cmd="stty $bps -F $device 1:4:da7:a30:3:1c:7f:15:4:10:0:0:11:13:1a:0:12:f:17:16:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0";
        
    exec($cmd$output,$returnVar);    
        echo 
    "Ergebnis vom Setzen der seriellen Schnittstelle per stty (1):\n";
        
    print_r($output);
    // function initSerial

    function checkLine($line$sn) {
        global 
    $channels;
        global 
    $urlBase;
        global 
    $argv;
      
        echo 
    "Line: '$line'\n";
        
    $line=trim($line);
        if (
    $line=='!') return("\n bin durchgelaufen\n");
        foreach(
    array_keys($channels) as $orbis) {                                                                                                                                                                                
            if(
    substr($line,0,strlen($orbis))==$orbis && (count($argv) > || $orbis=="16.7(") ) {                                                                                                                                                                         
                echo 
    "match für $orbis\n";                                                                                                                                                                                        
                
    $part=(float)substr($line,6);                                                                                                                                                                                     
                
    // 2.8.0(885.259*kWh)                                                                                                                                                                                             
                
    $part=strstr(substr($line,6),'*',true);                                                                                                                                                                           
                if ((
    '1.7.0(' == $orbis) or ('2.7.0(' == $orbis)) $part=$part*1000;                                                                                                                                               
                echo 
    "ermittelter Wert: $part\n";
                
                 
    // mode 
                
    echo "rufe $urlBase auf.\n";   
                
    $socket fsockopen($urlBase);
                
    $value "item|" $channels[$orbis] . "|" . (float)$part;
                print 
    "$value\n";
                
    fputs($socket$value);

                
    //$url=$urlBase.$channels[$orbis].'.json?operation=add&value='.$part;                                                                                                                                               
                // save value
                
    $h fopen("." $sn "." $orbis'w');
                
    fwrite($hserialize($part));
                
    fclose($h);


    //            $values[$orbis] = $part;
                //$dummy=curl_file_get_contents($url);                                                                                                                                                                              
            
    // if                                                                                                                                                                                                               
        
    // foreach
        
    // function checkLine

    function curl_file_get_contents($URL)
        {
          
    $c = @curl_init();
          
    curl_setopt($cCURLOPT_RETURNTRANSFER1);
          
    curl_setopt($cCURLOPT_URL$URL);
          
    $contents curl_exec($c);
          
    curl_close($c);
                                                                                            
          if (
    $contents) return $contents;
          else return 
    FALSE;
        } 
    // function curl_get_file_contents

    function getTimestamp() { 
         
    $seconds microtime(true); // false = int, true = float 
              
    return round( ($seconds 1000) ); 
    }

    /**
     *  Starte Script
     *  Iterate through all usb devices and lost information
     */


    foreach ($devices as $device => $channels)
    {
        print 
    "$device\n";
        
    print_r ($channels);

        
    setSerialInitial($device,300);

        
    $fp=fopen($device,'c+');
        if (!
    $fp) {
            echo 
    "Konnte Port nicht öffnen (1)\n";
            die;
        } else {
          echo 
    "Port öffnen OK\n";
        } 
    // if

        
    echo "Request senden ...";
        
    $out "/?!\r\n";
        
    fwrite($fp$out);
        echo 
    "Request OK.\n";

        echo 
    "Lese eine Zeile\n";
        echo 
    $sn fgets($fp);
        
    $sn substr($sn017);
        echo 
    "gelesen\n";

        
    /*
        echo "Lese eine Zeile\n";
        echo fgets($fp);
        echo "gelesen\n";
        */

        
    echo "sicherheitshalber etwas warten\n";
        
    usleep(500 1000);

        echo 
    "bps-Rate-Request senden ...";
        
    //$out = "\x06\x30\x35\x31\x0D\x0A"; alt
        //$out = "\x06\x30\x30\x30\x0D\x0A"; //063030300d0a
        //$out = "\063030300d0a\r\n"; // 063030300d0a
        
    $out "\x06040\r\n"// 063030300d0a


        //$out = "\x06040\r\n";

        // fuer 19200:
        // $out = "\x06060\r\n";

        
    fwrite($fp$out);
        echo 
    "BPS Request OK.\n";

        echo 
    "warte bis Zeichen ausgegeben wurden...\n";
        
    usleep(500 1000);

        
    //setSerial($device,9600);

        
    echo "schließe Port\n";
        
    fclose($fp);
        
    setSerial($device,4800);
        
    // für 19200
        // setSerial($device,19200);

        
    echo "öffne Port\n";
        
    $fp=fopen($device,'c+');
        if (!
    $fp) {
           echo 
    "Konnte Port nicht öffnen (2)\n";
           die;
        } else {
         echo 
    "Port 4800 OK\n";
        } 
    // if


        
    echo "lese Rest ein\n";
        while (!
    feof($fp)) {
          echo 
    $line=fgets($fp256);
          
    checkLine($line$sn);
        } 
    // while

        
    fclose($fp);

    }

    ?>

    Einen Kommentar schreiben:


  • martinb07
    antwortet
    Kurze Frage zur aktuellen Leistung aus dem Zähler. Meiner spuckt leider nur den aktuellen Zählerstand aus (Obis 1.8.1 und 1.8.2). Da ich absoluter sh.py und Perl, Python DAU bin weiß ich leider nicht, wie ich daraus den aktuellen Verbrauch bekomme.
    Prinzipiell müsste es doch so sein. Differenz der beiden letzen Zählerwerte geteilt durch T (wobei T = das Delta der Scriptabfragen ist)

    Bei der Wärmepumpe mit Tag/Nacht wird es dann interessant. :-(

    Einen Kommentar schreiben:


  • JuMi2006
    antwortet
    1. Weg mit Neustart
    2. 0 0 * *
    3. Morgen weg, dann sind Daten in der DB.

    Einen Kommentar schreiben:


  • z1marco
    antwortet
    Hallo,

    hab schon Probleme die Logiken laufen zu lassen. Ich hab soweit alles gestrippt und nur mal mit meiner Wärmepumpe versucht. Ich bekomme folgende Fehlermeldungen:

    2015-01-30 19:00:43 WARNING Main Item ehz.wp.wpumpe.verbrauch.monat: problem reading cache: [Errno 2] No such file or directory: '/usr/smarthome/var/cache/ehz.wp.wpumpe.verbrauch.monat'
    2015-01-30 19:00:43 ERROR Main Error parsing crontab: 0 0 0 *
    2015-01-30 19:00:51 WARNING ehz.wp.wpumpe.verbrauch.aktuell Item ehz.wp.wpumpe.verbrauch.aktuell: problem evaluating sh.ehz.wp.wpumpe() - sh.ehz.wp.wpumpe.db('max', '1d', sh.minute.since.midnight.dbstr()): string index out of range

    Habt Ihr eine Idee?

    vielen Dank

    Einen Kommentar schreiben:


  • z1marco
    antwortet
    Hi,

    sehr schöne Ausgabe. In welches Item wird denn der KNX Zählerstand reingeschrieben?

    danke und Gruß

    Einen Kommentar schreiben:

Lädt...
X