NEWS
Parser
-
such mal nach den Zahlen
234881792
und
234881537 bis 234881537+10die müssten in der url hinter dxsEntries= stehen
oder im json als dsxIdÖffnen der Developer Tools, dann darin den Tab mit der Netzwerkkommunikation leeren
Dann die Seite abrufen (am besten genau die, die diese Ereignisse anzeigen)
dann sobald angezeigt wird, dann in den Developer Tools auf stop drücken
und dann alle dxs.json abfragen nach den obigen codes checken und das json mir dann schickenich habe das im codemodul kbApp.pages.info.events gefunden (für mich zum merken)
das zugehörige Template sieht so aus<fieldset> <table ng-if="EventCnt > 0" class="table"> <tr> <th></th> <th translate="ID_386"></th> <th translate="ID_229"></th> </tr> <tr ng-repeat="Event in Events"> <td>{{$index + 1}}</td> <td>{{Event.date | date:\'dd.M.yyyy H:mm\'}}</td> <td>{{Event.code}} ( {{Event.env}} )</td> </tr> </table> <table ng-if="EventCnt <= 0" class="table"> <tr> <th translate="ID_387"></th> </tr> </table> </fieldset>
funfact:
im code scheint irgendwas mit spielen versteckt zu sein:
irgendein ballspiel und danach kommt code der irgendwas im browser maltSet: "The set has been won by {0}!", Start: "Good luck and have fun!", Over: "Over, over, the game is over...\nThe winner is {0}!", Replay: "Replay"
-
such mal nach den Zahlen
234881792
und
234881537 bis 234881537+10Die Seite hatte ich bereits
{"dxsEntries":[{"dxsId":234881792,"value":1},{"dxsId":234881537,"value":[207,217,88,94,63,16,2,0]},{"dxsId":234881538,"value":[0,0,0,0,0,0,0,0]},{"dxsId":234881539,"value":[0,0,0,0,0,0,0,0]},{"dxsId":234881540,"value":[0,0,0,0,0,0,0,0]},{"dxsId":234881541,"value":[0,0,0,0,0,0,0,0]},{"dxsId":234881542,"value":[0,0,0,0,0,0,0,0]},{"dxsId":234881543,"value":[0,0,0,0,0,0,0,0]},{"dxsId":234881544,"value":[0,0,0,0,0,0,0,0]},{"dxsId":234881545,"value":[0,0,0,0,0,0,0,0]},{"dxsId":234881546,"value":[0,0,0,0,0,0,0,0]}],"session":{"sessionId":0,"roleId":0},"status":{"code":0}}
funfact:
im code scheint irgendwas mit spielen versteckt zu sein:
irgendein ballspiel und danach kommt code der irgendwas im browser maltCool
-
{"dxsEntries":[{"dxsId":234881792,"value":1},{"dxsId":234881537,"value":[207,217,88,94,63,16,2,0]},{"dxsId":234881538,"value":[0,0,0,0,0,0,0,0]},{"dxsId":234881539,"value":[0,0,0,0,0,0,0,0]},{"dxsId":234881540,"value":[0,0,0,0,0,0,0,0]},{"dxsId":234881541,"value":[0,0,0,0,0,0,0,0]},{"dxsId":234881542,"value":[0,0,0,0,0,0,0,0]},{"dxsId":234881543,"value":[0,0,0,0,0,0,0,0]},{"dxsId":234881544,"value":[0,0,0,0,0,0,0,0]},{"dxsId":234881545,"value":[0,0,0,0,0,0,0,0]},{"dxsId":234881546,"value":[0,0,0,0,0,0,0,0]}],"session":{"sessionId":0,"roleId":0},"status":{"code":0}}
ah, hatte gerade meinen text noch erweitert, aber passt ich schaus mir an
-
ok
das bedeutet, es kommt genau ein gültiges event, plat ist für maximal 10.
die werden auch alle nachfoilgend übertragen, aber da steht dann immer 0 drin{dxsId: 234881792, value: 1}
die folgenden Zahlen eines Events werden wie folgt interpretiert
wobei die Zahlen den arrayvariablen d[0] bis d[7] entsprechen.
die doppelten << zeichen sind bit schiebeoperationenvalue: (8) [207, 217, 88, 94, 63, 16, 2, 0]
date: c.unixTimeStampToDate((d[0] << 0) + (d[1] << 8) + (d[2] << 16) + (d[3] << 24)), code: (d[4] << 0) + (d[5] << 8), env: ("0000" + ((d[6] << 0) + (d[7] << 8)).toString(16)).toUpperCase().substr(this.length - 4, 4) + "h"
für die funktion um den unix timestamp in eine darstellbares datum/uhrzeit umzuwandeln wird eine extra library namens momentjs verwendet. aber das lohnt sich nicht wirklich, für diesen fall kann mann hier schauen
https://stackoverflow.com/questions/847185/convert-a-unix-timestamp-to-time-in-javascript -
@Homoran
sollen wir noch weitermachen? oder hast du schon die Lust verloren.
Das Protokoll haben wir schon mal entschlüsselt.
Nach dem gleichen Prinzip könnte man übrigens auch noch die anderen Parameter auslesen.Allerdings sind wir noch nicht fertig und der nächste Schritt wäre erst einmal zu schauen, wie man separat die Daten abrufen kann,
Dann das alles in eine Schleife reinpacken und dann die Daten nach der obigen Entschlüsselung in ein oder mehrere Datenpunkte zu schreiben.Da ich schon mal in eine andere Bibliothek gespickt habe, die leider in phyton geschrieben ist, dürfte das kein Problem sein.
Allerdings wirst du das bei dir nach Anleitung als Skript verpacken und testen müssen, da ich das ja null nachstellen kann. -
oder hast du schon die Lust verloren.
Lust ist nicht das Problem
eher Zeit und Verständnis. Mir raucht schon der Kopf.erst einmal zu schauen, wie man separat die Daten abrufen kann,
Das ist der in meinen Augen wichtigere Punkt.
Die Seite zeigt ja einen "historischen" Vorfall an, ich bräuchte aber den aktuellen.
In diesem Fall hatten die Stadtwerke einen Generator ins Netz gehängt, der mit 52Hz Strom lieferte.
Die Fehlermeldung wäre also: Netzfrequenz zu hochDie hätte ich gerne zur Laufzeit. Habe aber nicht im geringsten die Ahnung wo ich danach suchen muss.
UNd provozieren kann ich so etwas nicht.Dann das alles in eine Schleife reinpacken und dann die Daten nach der obigen Entschlüsselung in ein oder mehrere Datenpunkte zu schreiben.
Da ich schon mal in eine andere Bibliothek gespickt habe, die leider in phyton geschrieben ist, dürfte das kein Problem sein.Für dich nicht. Für mich sind das böhmische Dörfer.
Ich liebe zwar Detektivarbeit und das Herausfinden von Möglichkeiten, das hier geht aber weit über meine Fähigkeiten hinaus -
@Homoran
da könnte ich dir schon helfen.
wir machen das Schritt für Schritt
wir können ins skript auch erst mal testdaten reinschießen, damit ein Ergebnis kommt.Damit du siehst, das da die Daten auch kommen kannst du das mal in einem Browser in den developer Tools in die Konsole kopieren:
Ich hab dir die Werte aus dem array schon mal eingesetzt.
als Ergebnis müssten genau die Werte aus deinem Screenshot rauskommen.
Die Uhrzeit habe allerdings nicht reingepackt(63 << 0) + (16 << 8)
und
("0000"+((2 << 0) + (0 << 8)).toString(16)).toLocaleUpperCase().substr(-4,4)+'h'
-
wir machen das Schritt für Schritt
Das klingt gut!
das mal in einem Browser in den developer Tools in die Konsole kopieren:
Ich wusste gar nicht, dass das auch so rum geht o.o
Wenn ich das richtig verstanden habe muss ich jetzt hier
am Prompt etwas reinkopieren und dann....?EDIT:
COOOOOOL
-
@Homoran ja genau, jeweils eine Zeile und dann return drücken
so sieht das bei mir im chrome aus
-
-
-
@Homoran
Als nächstes sollten wir mal den Datenabruf nochmal testen.
Öffne nochmal die Seite genau wie oben beschrieben.Dann suchst du genau den Datenabruf mit den oben genannten Codes
Dann machst du einmal rechte Maustaste im Network Reiter der Devtools
und rufst das in einem neuen Tab auf. Evtl siehst du nur eine leere SeiteWenn das funktioniert, dann nochmal wiederholen, aber vorher explizit von deiner Platform abmelden.
Verwendest du da ein UserID/Passwort um dich auf der Oberfläche anzumelden? -
-
@Homoran
Nein nur den einen Abruf,
der das Ergebnis hatte, was du im Post#29 gesendet hast -
in deinem screenshot oben sehe ich davon mehrere zeilen.
wenn der fehlercode in der oberfläche nach angezeigt wird, dann sind dieses aufrufe auch noch da -
Nein nur den einen Abruf,
der das Ergebnis hatte, was du im Post#29 gesendet hastoops,
da hatten sich unsere Posts (meiner und dein Edit) überschnitten.
ich hatte den Inhalt, als ich auf einen Eintrag im Networkprotokoll geklickt hatte.Der Eintrag hieß:
http://192.168.138.103/api/dxs.json?dxsEntries=234881792&dxsEntries=234881537&dxsEntries=234881538&dxsEntries=234881539&dxsEntries=234881540&dxsEntries=234881541&dxsEntries=234881542&dxsEntries=234881543&dxsEntries=234881544&dxsEntries=234881545&dxsEntries=234881546&sessionId=3341479126
das Ergebnis:
{"dxsEntries":[{"dxsId":234881792,"value":1},{"dxsId":234881537,"value":[207,217,88,94,63,16,2,0]},{"dxsId":234881538,"value":[0,0,0,0,0,0,0,0]},{"dxsId":234881539,"value":[0,0,0,0,0,0,0,0]},{"dxsId":234881540,"value":[0,0,0,0,0,0,0,0]},{"dxsId":234881541,"value":[0,0,0,0,0,0,0,0]},{"dxsId":234881542,"value":[0,0,0,0,0,0,0,0]},{"dxsId":234881543,"value":[0,0,0,0,0,0,0,0]},{"dxsId":234881544,"value":[0,0,0,0,0,0,0,0]},{"dxsId":234881545,"value":[0,0,0,0,0,0,0,0]},{"dxsId":234881546,"value":[0,0,0,0,0,0,0,0]}],"session":{"sessionId":0,"roleId":0},"status":{"code":0}}
Verwendest du da ein UserID/Passwort um dich auf der Oberfläche anzumelden?
Ja
-
genau das kopieren
dann ein neuen tab öffen
die dev tools öffnen (F12)
dann das in die adresszeile des browsers eintragen
dann schauen, ob im networkreiter der dev tools ein fehler auftauchtdann genau das selbe am besten im inkognito modus des browser wiederholen
mich interessiert, ob dann ein fehler kommt und ob wir uns um authentifizierung (anmelden) kümmern müssen. -
@OliverIO
I'll try my very bestNochmals den Link geöffnet. Network:
dann im Incognito:
In dem Reiter Console vom Incognito:
Hinweis auf die Credentials kam ja schon hier:
scheint sich aber nur auf die WebUI zu beziehen
-
@Homoran
Sieht super aus, für Json benötigen wir kein Passwort,
Die Daten kommen auch so.Für heut machen wir Schluss, ich Bau dir morgen einen rudimentären skriptrahmen, der die Daten abruft und als debug ausgibt.
Und dann sind wir schon recht schnell bei der Ausgabe als datenpunkt.Du musst mir mal noch erklären was die beiden Zahlen bedeuten.
Eins ist der Fehler Code, aber was ist die 2. Zahl die hier 2 heißt?Weil du willst die Zahlen ja in irgendeinen Text umwandeln.
Du hast da ein Verzeichnis? -
Für heut machen wir Schluss, ich Bau dir morgen einen rudimentären skriptrahmen, der die Daten abruft und als debug ausgibt.
Und dann sind wir schon recht schnell bei der Ausgabe als datenpunkt.Klingt gut,
Ab morgen muss ich aber für ein paar Tage auf Dienstreise. Mal sehen ob ich heute abend noch Zeit finde.was ist die 2. Zahl die hier 2 heißt?
meinst du die 00002h ??
ich nahm an, dass das auch ein Fehlercode in Hex seiDu hast da ein Verzeichnis?
Ja, leider nur als Scan vom Solarteur, müsste also alle Zahlen und Beschreibungen abtippen.
Ich werde das genau so machen wie bei den Betriebsstatusmeldungen (https://www.loxwiki.eu/pages/viewpage.action?pageId=28803569) und sukzessive das Übersetzungsskript erweitern.
Die verlinkte Seite kannte ich damals nicht - 7 ist übrigens Isolationsmessung )EDIT: vielleicht ist das aber auch die Dauer?? Aber das ging etwa von 09:00 bis 13:00