TypeError: vz.capabilities.definitions.entities is undefined

  • Hallo Volkszähler,


    ich habe seit einigen Jahren volkszaehler zweckentfremdet für Messdaten aus anderen Quellen am Laufen. Dazu werden diese direkt in die Datenbank gepumpt und dann nur sehr performant über volkszaehler angezeigt. Anfänglich habe ich dies regelmäßig aktualisiert - in der Vergangenheit leider nicht mehr, was ich jetzt jedoch nachholen wollte... Leider ist der Aufbau doch anders und ich erhalte nach dem Aufruf der Seite nur die Meldung "Network Error - Not Found" und nach einem Klick auf "Kanal hinzufügen" obige Meldung mit "Javascript Runtime Error - TypeError: vz.capabilities.definitions.entities is undefined".


    Die Middleware wurde bisher nicht benötigt und der Aufruf erfolgte über nginx als Server. ich habe jetzt schon einiges probiert (komplett neu auschecken, start über PPM als Server), aber nichts half bisher. Außer keine oder andere Fehlermeldungen habe ich bisher nichts erreicht. :( Über neue Gedankenanstöße wäre ich euch deshalb sehr dankbar. Die Umstellung auf Grafana habe ich auch schon angedacht (ist für meinen Anwendungsfall vielleicht besser), aber die Performance war noch nicht so toll wie bei volkszaehler (würdet ihr mir das eher empfehlen?)...


    Sagt mir, was ich euch für Logs, Config-Files, etc. liefern soll - ich versuche dem nachzukommen... Ich schreibe es auch lieber gleich im Voraus: die Antworten werden immer etwas mehr Zeit benötigen, da dies nur ein Nebenkriegsschauplatz in meinem Leben ist. ;)


    Ich bedanke mich für eure Unterstützung!

    PaulchenPlump

  • Hi,


    die Middleware wurde früher auch schon gebraucht, das Frontend kann nur Daten anzeigen die von dieser geliefert werden ;-)


    Hat dein System mindestens PHP 7.1, und hast du composer update durchgeführt?


    Grüße

    Frank

  • Die Datei etc/config.yaml ist vorhanden und enthält gültige Zugangsdaten zu deiner DB?


    Hast du die bisherige Webserver-Konfiguration verändert? Willst du die PPM-Middleware nutzen? Falls ja, wird diese erfolgreich gestartet?


    Grüße

    Frank

  • Hallo Frank,


    danke dass du die Fragen stellst, die ich am Anfang schon hätte beantworten sollen.:|


    Die config.yaml ist vorhanden und enthält die Zugangsdaten die früher in der volkszaehler.conf.php standen (auch ohne Anführungszeichen)... Einziges Problem, was ich hier sehe sind Umlaute im Passwort, aber ich hoffe doch dann auch auf eine ausführlichere Fehlermeldung?!


    Meine Webserver-Config musste ich ja anpassen, da es das frontend-Verzeichnis nicht mehr gibt und auch sonst einiges probiert wurde... Leider ist nginx nicht immer so eingängig. :(


    Die PPM-Middleware würde ich zumindest als Test verwenden (wenn es nicht anders geht dann auch "produktiv"). Sie lässt sich auch starten und wirft dann

    Code
    Starting PHP-PM with 8 workers, using StreamSelectLoop ...
    8 workers (starting at 5501) up and ready. Application is ready at http://0.0.0.0:8089

    Wenn ich dann die Seite aufrufe landet in der Konsole die Meldung

    Code
    [26/Jun/2019:20:06:07 +0000] 192.168.0.3 - - "GET /capabilities/definitions.json HTTP/1.1" 400 7698 "http://192.168.0.2:8089/"

    Auf der Webseite steht dann "RuntimeException - /capabilities/definitions.json?unique=1561579567552:". Wenn ich den Link anklicke, lande ich wiederum in einem JSON in dem Länder, etc. definiert werden...


    Ich hoffe es hilft Dir beim Raten weiter - für mehr Infos einfach melden...


    Danke & Ciao, PaulchenPlump


    PS nochmal ernst gemeint: Als Daten laufen verschiedene Temperaturen und Wasserwerte im zeitlichen Verlauf ein - wäre hier perspektivisch Grafana der bessere Weg und ich lasse nur die volkszaehler-Datenbank als Datenbasis? Wo seht ihr hier Vor-/Nachteile?!

  • Hi,


    versuchst du da eine Verbindung direkt auf Port 8089 (warum eigentlich 8089?), oder geht der Request zusätzlich über nginx?

    Funktioniert z.B. http://IP:8089/entity.json ?


    Zeig uns mal deine middleware.json und deine nginx-Config.


    Grafana in Verbindung mit der VZ-DB macht meiner Meinung nach nicht viel Sinn, weil dann die Optimierungen fehlen, die bei VZ für die Performance sorgen (Aggregation!). Dann lieber beim VZ-Frontend bleiben oder Grafana mittels andig/gravo mit der Middleware verdrahten. Oder ganz auf InfluxDB und Grafana umsteigen.


    Grüße

    Frank

  • Hallo Frank,


    ich versuche es erst einmal nur mit der PPM-Middleware und greife direkt auf Port 8089 zu.


    Die nginx-config würde ich deshalb erst einmal außen vor lassen.

    Die middleware.json sieht so aus:

    Code
    {
    "host": "0.0.0.0",
    "port": 8089,
    "workers": 8,
    "static-directory": "/usr/share/webapps/volkszaehler/htdocs",
    "logging": 1,
    "max-requests": 1000,
    "bridge": "HttpKernel",
    "bootstrap": "Volkszaehler\\Server\\PPMBootstrapAdapter"
    }

    Wenn ich die entity.json aufrufe, erhalte ich zumindest selbstdefinierte Daten:

  • Hallo Frank,


    ja die Webseite sehe ich, werde jedoch mit der Fehlermeldung "RuntimeException - /capabilities/definitions.json?unique=1561579567552:" (wie in #5 beschrieben) begrüßt.


    Wenn ich auf den Link klicke sehe ich folgendes JSON-File:

    Wenn ich die Meldung wegklicke und dann "Kanal hinzufügen" wähle, bin ich wieder bei "TypeError: entityDefinition is undefined". Aber im Hintergrund sind meine Kanäle zur Auswahl. :thumbup: Wenn ich hier einen auswähle, wird dieser jedoch nicht übernommen. X(


    Liegt es vielleicht an den Daten in der Datenbank? Hast Du noch eine Idee?


    Danke & Ciao, PaulchenPlump