Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem mit plot.period und 1-Wire

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

    Problem mit plot.period und 1-Wire

    Hallo erstmal!

    Gleich vorab: da dies hier mein erster Beitrag in diesem Forum ist, bin ich nicht weiter über die üblichen Gepflogenheiten informiert als durch den Text bei der Registrierung. Sollte jemand irgendwas vermissen, so schreibe er es mir.

    Nun aber zum Thema: ich beginne gerade mit smarthome.py und smartVISU. Und – sollte es von Belang sein – ich habe die neuesten dev-Versionen von beiden Programmen.

    Ich habe (bevor ich meine KNX-Sensoren / -Aktoren anschließe, geht erst in ein paar Tagen) angefangen, mit einem einfachen 1-Wire-Temperatursensor zu experimentieren und habe eine eigene HTML-Unterseite und eine Config-Datei im items-Ordner zu geschrieben. Ich möchte eigentlich nun einen simplen plot.period von dem Temperatursensor haben, aber irgendwie funktioniert es nicht, und ich weiß nicht, warum. Einfach nur die Temperatur auszugeben (basic.value) funktioniert.

    Die config-Datei:

    Code:
    # /usr/local/smarthome/items/Serverraum.conf
    [Serverraum]
        name = Serverraum    
        [[temp]]
            name = Temperatursensor
            type = num
            ow_addr = 28.58DBE1040000
            ow_sensor = T
            visu_acl = ro
    Ich weiß nicht, ob ich sqlite brauche, ich habe das Plugin, hab auch mal "sqlite = init" und "sqlite = yes" ausprobiert (weil ich den Unterschied nicht verstanden habe). Hat nichts geändert.

    Hier meine HTML-Seite:

    Code:
    /**
    * -----------------------------------------------------------------------------
    * @package     smartVISU
    * @author      Martin Gleiß
    * @copyright   2012 - 2015
    * @license     GPL [http://www.gnu.de]
    * -----------------------------------------------------------------------------
    */
    
    
    {% extends "rooms.html" %}
    
    {% block content %}
        <h1>Serverraum</h1>
        <div class="block">
            <div class="set-2" data-role="collapsible-set" data-theme="c" data-content-theme="a" data-mini="true">
                <div data-role="collapsible" data-collapsed="false">
                    <h3>Temperatur</h3>
                    {{ basic.value('temp', 'Serverraum.temp', '°C') }}
                </div>
            </div>
        </div>
        <div class="block">
            <div class="set-2" data-role="collapsible-set" data-theme="c" data-content-theme="a" data-mini="true">
                <div data-role="collapsible" data-collapsed="false">
                    <h3>Temperatur-Plot</h3>
                    {{ plot.period('temp-plot', 'Severraum.temp', 'avg', '10s') }}
                </div>
            </div>
        </div>
    
    {% endblock %}
    Der erste Teil (temp) funktioniert. Nur beim zweiten wird mir ein leerer Kasten angezeigt, in dem sich

    HTML-Code:
    <div id="room_server-temp-plot" data-widget="plot.period" data-item="Severraum.temp.avg.10s.now.100" data-label="" data-color="" data-exposure="" data-axis="" class="plot"></div>
    befindet.

    Schließlich noch das log:

    Code:
    2015-07-12 01:00:01,675 INFO     Main         Start SmartHome.py 1.1.914.dev -- smarthome.py:__init__:242
    2015-07-12 01:00:01,680 DEBUG    Main         Python 3.4.2 -- smarthome.py:__init__:243
    2015-07-12 01:00:01,686 INFO     Main         Init Scheduler -- scheduler.py:__init__:86
    2015-07-12 01:00:01,692 DEBUG    Scheduler    creating 5 workers -- scheduler.py:run:93
    2015-07-12 01:00:01,693 INFO     Main         Init Plugins -- smarthome.py:start:288
    2015-07-12 01:00:01,709 DEBUG    Main         Plugin: knx -- plugin.py:__init__:43
    2015-07-12 01:00:01,731 DEBUG    Main         Plugin: visu -- plugin.py:__init__:43
    2015-07-12 01:00:01,774 DEBUG    Main         Plugin: sql -- plugin.py:__init__:43
    2015-07-12 01:00:01,802 DEBUG    Main         SQLite 3.8.7.1 -- __init__.py:__init__:47
    2015-07-12 01:00:01,814 DEBUG    Main         SQLite: database integrity ok -- __init__.py:__init__:64
    2015-07-12 01:00:01,828 DEBUG    Main         SQLite Maintain next time: 2015-07-12 03:02:00+02:00 -- scheduler.py:_next_time:303
    2015-07-12 01:00:01,832 DEBUG    Main         Plugin: ow -- plugin.py:__init__:43
    2015-07-12 01:00:01,855 DEBUG    Main         Plugin: enocean -- plugin.py:__init__:43
    2015-07-12 01:00:01,890 WARNING  Main         enocean: No valid enocean stick ID configured. Transmitting is not supported -- __init__.py:__init__:100
    2015-07-12 01:00:01,897 INFO     Main         enocean: eep-parser instantiated -- eep_parser.py:__init__:8
    2015-07-12 01:00:01,902 DEBUG    Main         Plugin: cli -- plugin.py:__init__:43
    2015-07-12 01:00:01,911 INFO     Main         Init Items -- smarthome.py:start:294
    [...]
    2015-07-12 01:00:02,025 INFO     Main         Item Serverraum.temp = 33.8125 via SQLite None None -- item.py:set:476
    2015-07-12 01:00:02,030 DEBUG    Main         Item Serverraum: no type specified. -- item.py:__init__:242
    2015-07-12 01:00:02,035 INFO     Main         Items: 24 -- smarthome.py:start:326
    2015-07-12 01:00:02,040 INFO     Main         Start Logics -- logic.py:__init__:33
    2015-07-12 01:00:02,044 DEBUG    Main         Reading Logics from /usr/local/smarthome/lib/env/logic_conf -- logic.py:_read_logics:64
    2015-07-12 01:00:02,049 DEBUG    Main         Reading Logics from /usr/local/smarthome/etc/logic.conf -- logic.py:_read_logics:64
    2015-07-12 01:00:02,051 DEBUG    Main         Logic: env_daily -- logic.py:__init__:44
    2015-07-12 01:00:02,082 DEBUG    Main         env_daily next time: 2015-07-12 06:00:00+02:00 -- scheduler.py:_next_time:303
    2015-07-12 01:00:02,087 DEBUG    Main         Logic: env_init -- logic.py:__init__:44
    2015-07-12 01:00:02,094 DEBUG    Main         Logic: env_stat -- logic.py:__init__:44
    2015-07-12 01:00:02,103 DEBUG    Main         env_stat next time: 2015-07-12 01:00:13+02:00 -- scheduler.py:_next_time:303
    2015-07-12 01:00:02,108 DEBUG    Main         Logic: env_loc -- logic.py:__init__:44
    2015-07-12 01:00:02,117 INFO     Main         Start Plugins -- plugin.py:start:65
    2015-07-12 01:00:02,121 DEBUG    Main         Starting knx Plugin -- plugin.py:start:67
    2015-07-12 01:00:02,127 DEBUG    Main         Starting visu Plugin -- plugin.py:start:67
    2015-07-12 01:00:02,133 DEBUG    Main         Starting sql Plugin -- plugin.py:start:67
    2015-07-12 01:00:02,143 DEBUG    Main         Starting ow Plugin -- plugin.py:start:67
    2015-07-12 01:00:02,160 DEBUG    ow           1w-disc next time: 2015-07-12 01:00:04+02:00 -- scheduler.py:_next_time:303
    2015-07-12 01:00:02,164 DEBUG    Main         Starting enocean Plugin -- plugin.py:start:67
    2015-07-12 01:00:02,189 DEBUG    Main         Starting cli Plugin -- plugin.py:start:67
    2015-07-12 01:00:02,208 INFO     enocean-startup enocean: resetting device -- __init__.py:_startup:275
    2015-07-12 01:00:02,263 DEBUG    Connections  KNX: connected to 127.0.0.1:6720 -- connection.py:connect:392
    2015-07-12 01:00:02,269 DEBUG    Connections  KNX: enable group monitor -- __init__.py:handle_connect:125
    2015-07-12 01:00:02,276 DEBUG    Connections  WebSocket: binding to 0.0.0.0:2424 (TCP) -- connection.py:connect:160
    2015-07-12 01:00:02,282 INFO     Connections  1-Wire: connected to 127.0.0.1:4304 -- __init__.py:connect:51
    2015-07-12 01:00:02,290 DEBUG    Connections  CLI: binding to 0.0.0.0:2323 (TCP) -- connection.py:connect:160
    [...EnOcean-Details...]
    2015-07-12 01:00:04,361 INFO     1w-disc      1-Wire: 28.58DBE1040000 with sensors: T10, T11, T9, T12, T -- __init__.py:_discovery:425
    2015-07-12 01:00:04,678 DEBUG    ow           1w-sen next time: 2015-07-12 01:00:04+02:00 -- scheduler.py:_next_time:303
    2015-07-12 01:00:04,754 DEBUG    Scheduler    1w-disc next time: 2015-07-12 01:10:04+02:00 -- scheduler.py:_next_time:303
    2015-07-12 01:00:05,265 DEBUG    Scheduler    1w-sen next time: 2015-07-12 01:05:05+02:00 -- scheduler.py:_next_time:303
    2015-07-12 01:00:05,797 DEBUG    Main         WebSocket: incoming connection from 192.168.178.63:40871 to 0.0.0.0:2424 -- connection.py:accept:187
    2015-07-12 01:00:05,819 DEBUG    Main         rfc6455 Handshake -- __init__.py:rfc6455_handshake:391
    2015-07-12 01:00:05,838 INFO     1w-sen       Item Serverraum.temp = 33.6875 via 1-Wire /bus.0/28.58DBE1040000/temperature None -- item.py:__update:373
    2015-07-12 01:00:05,959 DEBUG    1w-sen       1-Wire: sensor cycle takes 1.2006688117980957 seconds -- __init__.py:_sensor_cycle:392
    2015-07-12 01:00:06,005 DEBUG    Main         192.168.178.63:40871 sent '{"cmd":"proto","ver":3}' -- __init__.py:json_parse:272
    2015-07-12 01:00:06,021 DEBUG    Main         192.168.178.63:40871 sent '{"cmd":"monitor","items":["Serverraum.temp"]}' -- __init__.py:json_parse:272
    2015-07-12 01:00:06,036 DEBUG    Main         192.168.178.63:40871 sent '{"cmd":"series","item":"Severraum.temp","series":"avg","start":"10s","count":100}' -- __init__.py:json_parse:272
    2015-07-12 01:00:07,294 INFO     env_init     Item env.core.version = 1.1.914.dev via Logic None None -- item.py:__update:373
    2015-07-12 01:00:07,400 DEBUG    sh.gc        Garbage collector: collected 0 objects. -- smarthome.py:_garbage_collection:517
    2015-07-12 01:00:07,416 INFO     env_init     Item env.core.start = 2015-07-12 01:00:07.412090+02:00 via Logic None None -- item.py:__update:373
    2015-07-12 01:00:07,502 INFO     env_init     Item env.system.name = ibbgateway via Logic None None -- item.py:__update:373
    2015-07-12 01:00:07,564 INFO     env_init     Item env.system.start = 2015-07-11 20:16:43.559776+02:00 via Logic None None -- item.py:__update:373
    2015-07-12 01:00:07,571 INFO     env_loc      Item env.location.sunrise = 2015-07-12 05:29:34.333555+02:00 via Logic None None -- item.py:__update:373
    2015-07-12 01:00:07,637 INFO     env_loc      Item env.location.sunset = 2015-07-12 21:49:23.165567+02:00 via Logic None None -- item.py:__update:373
    2015-07-12 01:00:07,689 INFO     env_loc      Item env.location.moonrise = 2015-07-12 02:46:47.255337+02:00 via Logic None None -- item.py:__update:373
    2015-07-12 01:00:07,708 DEBUG    sh.gc        Object references: 11183 -- smarthome.py:_maintenance:509
    2015-07-12 01:00:07,732 INFO     env_loc      Item env.location.moonset = 2015-07-12 18:17:31.911268+02:00 via Logic None None -- item.py:__update:373
    2015-07-12 01:00:07,750 INFO     env_loc      Item env.location.moonphase = 7 via Logic None None -- item.py:__update:373
    2015-07-12 01:00:07,815 INFO     env_loc      Item env.location.night = True via Logic None None -- item.py:__update:373
    2015-07-12 01:00:07,880 DEBUG    Scheduler    env_loc next time: 2015-07-12 01:30:07+02:00 -- scheduler.py:_next_time:303
    2015-07-12 01:00:07,891 DEBUG    Scheduler    sh.gc next time: 2015-07-12 02:04:00+02:00 -- scheduler.py:_next_time:303
    2015-07-12 01:00:13,506 INFO     env_stat     Item env.core.memory = 11743232 via Logic None None -- item.py:__update:373
    2015-07-12 01:00:13,610 INFO     env_stat     Item env.system.load = 0.04 via Logic None None -- item.py:__update:373
    2015-07-12 01:00:13,707 INFO     env_stat     Item env.location.moonlight = 18 via Logic None None -- item.py:__update:373
    2015-07-12 01:00:13,935 DEBUG    Scheduler    env_stat next time: 2015-07-12 01:05:13+02:00 -- scheduler.py:_next_time:303
    Ich hoffe, dass jemand von euch weiter weiß. Danke im Vorraus und wie gesagt: wenn jemand noch was braucht, melde er sich!

    MfG Erich
    Zuletzt geändert von erichc; 12.07.2015, 00:18.

    #2
    Hi Erich,
    sorry aber es ist schon blöd mit dev Versionen zu beginnen. Nimmt doch einfach die Releases als Startpunkt wenn Du Dich noch nicht auskennst.

    Hast Du 'Serverraum.temp' wirklich im HTML geschrieben als 'Severraum.temp'?
    Und was ich im Debug-log vermisse sind Datenrequests von der Visu. Da kann man recht schnell erkennen, ob es sich bei den angeforderten Daten um ein "ivalid item" handelt, oder ob das Problem woanders liegt.

    Gruß,
    Bernd

    Kommentar


      #3
      Hallo bmx,

      ich habe die stabilen Versionen (smarthome.py 1.0 und smartVISU 2.7) ausprobiert, blöderweise funktionieren die überhaupt nicht.

      Hast Du 'Serverraum.temp' wirklich im HTML geschrieben als 'Severraum.temp'?
      Hab ich, ja. Ist jetzt behoben, ändert leider nichts. Trotzdem danke!

      Und was ich im Debug-log vermisse sind Datenrequests von der Visu. Da kann man recht schnell erkennen, ob es sich bei den angeforderten Daten um ein "ivalid item" handelt, oder ob das Problem woanders liegt.
      Ich hab echt nur die ganzen EnOcean-Meldungen rausgenommen. Die hielt ich für unnütz und die nehmen unheimlich viel Platz weg. Aber kann es sein, dass die Codeblöcke irgendwie auf eine bestimmte Anzahl von Zeichen begrenzt sind? Ich wollte gerade das volle Log posten, geht nicht. Habe allerdings wirklich Zeilen mit "invalid" gefunden:

      Code:
      2015-07-12 10:58:19,315 DEBUG    Main         WebSocket: incoming connection from 192.168.178.63:41767 to 0.0.0.0:2424 -- connection.py:accept:187
      2015-07-12 10:58:19,322 DEBUG    Main         rfc6455 Handshake -- __init__.py:rfc6455_handshake:391
      2015-07-12 10:58:19,409 DEBUG    Main         192.168.178.63:41767 sent '{"cmd":"proto","ver":3}' -- __init__.py:json_parse:272
      2015-07-12 10:58:19,426 DEBUG    Main         192.168.178.63:41767 sent '{"cmd":"monitor","items":["Serverraum.temp"]}' -- __init__.py:json_parse:272
      2015-07-12 10:58:19,438 DEBUG    Main         192.168.178.63:41767 sent '{"cmd":"series","item":"Serverraum.temp","series":"avg","start":"10s","count":100}' -- __init__.py:json_parse:272
      2015-07-12 10:58:19,441 WARNING  Main         Client 192.168.178.63:41767 requested invalid series: Serverraum.temp. -- __init__.py:json_parse:343
      2015-07-12 11:03:08,881 DEBUG    Scheduler    1w-sen next time: 2015-07-12 11:08:08+02:00 -- scheduler.py:_next_time:303
      2015-07-12 11:03:09,474 INFO     1w-sen       Item Serverraum.temp = 29.0625 via 1-Wire /bus.0/28.58DBE1040000/temperature None -- item.py:__update:373
      2015-07-12 11:03:09,489 DEBUG    1w-sen       1-Wire: sensor cycle takes 1.115727186203003 seconds -- __init__.py:_sensor_cycle:392
      2015-07-12 11:03:18,531 INFO     env_stat     Item env.core.memory = 11780096 via Logic None None -- item.py:__update:373
      2015-07-12 11:03:18,650 INFO     env_stat     Item env.system.load = 0.04 via Logic None None -- item.py:__update:373
      2015-07-12 11:03:18,965 DEBUG    Scheduler    env_stat next time: 2015-07-12 11:08:18+02:00 -- scheduler.py:_next_time:303
      Ich weiß nur nicht, was das soll. Wenn "Serverraum.temp" falsch ist, warum geht dann basic.value?

      Update: jetzt bekomm ich das hier (nachdem ich nochmal sqlite angestellt habe, vllt. hängt es damit zusammen):

      Code:
      2015-07-12 11:37:36,755 DEBUG    Main         WebSocket: incoming connection from 192.168.178.63:42074 to 0.0.0.0:2424 -- connection.py:accept:187
      2015-07-12 11:37:36,762 DEBUG    Main         rfc6455 Handshake -- __init__.py:rfc6455_handshake:391
      2015-07-12 11:37:36,857 DEBUG    Main         192.168.178.63:42074 sent '{"cmd":"proto","ver":3}' -- __init__.py:json_parse:272
      2015-07-12 11:37:36,871 DEBUG    Main         192.168.178.63:42074 sent '{"cmd":"monitor","items":["Serverraum.temp"]}' -- __init__.py:json_parse:272
      2015-07-12 11:37:36,887 DEBUG    Main         192.168.178.63:42074 sent '{"cmd":"series","item":"Serverraum.temp","series":"avg","start":"10s","count":100}' -- __init__.py:json_parse:272
      2015-07-12 11:37:36,905 ERROR    Main         Problem fetching series for Serverraum.temp: unsupported operand type(s) for -: 'int' and 'str' -- __init__.py:json_parse:330
      Traceback (most recent call last):
        File "/usr/local/smarthome/plugins/visu/__init__.py", line 328, in json_parse
          reply = self.items[path]['item'].series(series, start, end, count)
        File "/usr/local/smarthome/plugins/sqlite/__init__.py", line 312, in _series
          step = int((iend - istart) / count)
      TypeError: unsupported operand type(s) for -: 'int' and 'str'
      Zuletzt geändert von erichc; 12.07.2015, 10:42. Grund: neue Meldungen

      Kommentar


        #4
        Welchen plot erwartest Du denn in einem Datenzeitraum von 10s ???
        Code:
         {{ plot.period('temp-plot', 'Serverraum.temp', 'avg', '10s') }}
        Versuche doch mal wenigsten ein paar Minuten oder eine Stunde darzustellen:
        Code:
         {{ plot.period('temp-plot', 'Serverraum.temp', 'avg', '1h') }}
        Umgezogen? Ja! ... Fertig? Nein!
        Baustelle 2.0 !

        Kommentar


          #5
          Die zehn Sekunden waren eigentlich nur, weil ich dachte, dass smarthome vielleicht nicht genug Daten hat über die letzte Stunde. Da ich andauernd die .conf verändert habe, weil der Plot nicht funktioniert, habe ich smarthome andauernd neu gestartet. Ich habe es aber auch mit 1h und 5i versucht – das ändert leider nichts.

          Kommentar


            #6
            Hmm, erinnert mich an ein Problem das ich beim letzten Update der DEVs auf meinem Testsystem hatte... Da blieben plötzlich die PLOTs auch leer, allerdings hat es mir da Fehlermeldungen im Logfile gehagelt (auch im Normalmode, also nicht DEBUG), das hatte ja aber BMX schon angemerkt. Konnte dann mit dem Patch von ASCHWITH (https://github.com/aschwith/smarthome) alles wieder zum Laufen bekommen. Da ist wohl einiges im SV-Bereich nicht ganz aktuell oder konsequent durchgezogen worden, stecke aber zu wenig in den Details um hier was sinniges bzgl. den fehlenden Teilen zu sagen....

            Kommentar


              #7
              Du hast so recht! Ich hatte mir gerade auch noch einmal https://knx-user-forum.de/forum/supp...mehr-angezeigt durchgelesen und bin darauf gestoßen:

              Zur Info: Der "Count" Patch ist jetzt für die SmartVisu Seite ins aktuelle "trunk" Git übernommen worden. Ein manuelles Patchen ist damit für SmartVisu nicht mehr nötig.

              @Apollo: Danke für die Integration!

              Gruß
              Alex
              Das fette hatte ich beim ersten Mal überlesen. Tatsächlich funktioniert es, wenn ich den sqlite-Patch benutze. Die anderen scheinen nicht nötig zu sein.

              Danke!

              Kommentar


                #8
                Ich war wohl doch etwas zu optimistisch. Der einfache Plot, den ich hatte, funktioniert nun. Aber wenn ich einen zoombaren Plot nach der Dokumentation anlegen möchte oder auch nur einen Parameter mehr schreibe als bis tmin, ist wieder alles weg.

                Mein funktionierender Code...

                Code:
                {{ plot.period('temp-plot', 'Serverraum.temp', 'avg', '3h') }}
                ...und der nicht funktionierende.

                Code:
                {{ plot.period('temp-plot-2', 'Serverraum.temp', 'avg', '3h', 0, 0, 100, '', 'Durchschnittstemperatur', '', '', ['Zeit','Temperatur in °C'], '1h') }}
                Funktioniert auch nicht:

                Code:
                {{ plot.period('temp-plot', 'Serverraum.temp', 'avg', '3h', '4h') }}
                Kann mir jemand erklären, warum das jetzt wieder nicht funktioniert? Ich habe auch schon die plot.html und widget.js aus dem aschwith-smarthome probiert, damit geht's aber auch nicht...

                Kommentar


                  #9
                  Ok, jetzt weiß ich endgültig, woran es liegt. Es war ein Fehler in der Dokumentation: auf der plot.period-Seite waren drei Beispieldiagramme

                  Code:
                  {{ plot.period('p1', 'bath_plot_value', 'avg', '3h') }}
                  
                  {{ plot.period('p2', ['bath_plot1', 'bath_plot2', 'bath_plot3'], 'avg', '1h', [B]0[/B], 0, 100, '', '', ['#aa0', '#a00', '#00a'], ['area', 'column', 'line']) }}
                  
                  {{ plot.period('p3', 'bath_plot_value', 'avg', '10h', [B]0[/B], 0, 100, '', '', '', '', '', '1h' ) }}
                  Davon funktionierte nur der erste, und das, weil an den fett markierten Stellen eine Zahl steht und kein String (also mit '' umschlossen). Daran ist es immer gescheitert. Stand aber so in der Dokumentation, deshalb hab ich da so lange dran festgehangen... na ja. Vielleicht hilft es ja jemandem von euch.

                  Hier nochmal ein funktionierendes Beispiel, zoombar und mit zwei Datenquellen in einem Diagramm und auch sonst ein paar Extras:

                  Code:
                  {{ plot.period('temp-plot-beide', ['Serverraum.temp', 'Serverraum.temp_raum'], 'avg', '3h', '', '', '', '', ['Server','Raum'], ['#f9a028','#ffee30'], ['area','areaspline'], ['Zeit','Temperatur in °C'], '10i') }}

                  Kommentar

                  Lädt...
                  X