NEWS
eigenen Code in widget anzeigen
-
@codierknecht said in eigenen Code in widget anzeigen:
Die könnte man in PHP als JSON zurückliefern, im Script/Blockly gleich weiterverarbeiten und in entsprechende DP schreiben.
Diese DP werden dann mit dem SQL-Adapter historisiert und dienen als Basis für Grafana.ah, okay.
EDIT: jetzt habe ich es gecheckt. mittes sql protokolilierung daten in meine normale MySql DB schreiben. Der ioBroker bezieht sie dann darausdarf ich mich hier melden, falls ich schwierigkeiten habe?
Der request ist sehr einfach und gibt auch nur 4-5 werte zurück....
Das script welches immer am Tagesende ausgeführt werden soll gibt keine werte zurück. es werden lediglich daten in die DB geschriebenWie machst du das, ohne Influx? wie verwendest du weiterhin mysql ?
umsomehr ich sehe, umsomehr staune ich wie vielseitig iobrocker ist -
@jumbo125 sagte in eigenen Code in widget anzeigen:
Wie machst du das, ohne Influx? wie verwendest du weiterhin mysql ?
Ich verwende statt Influx den SQL-Adapter und lasse den direkt in mein MySQL schreiben.
Die interessanten DP werden protokilliert
Und in Grafana wird der Salat dann abgefragt und formatiert.
-
@jumbo125 sagte in eigenen Code in widget anzeigen:
Der request ist sehr einfach und gibt auch nur 4-5 werte zurück....
Das script welches immer am Tagesende ausgeführt werden soll gibt keine werte zurück. es werden lediglich daten in die DB geschriebenIch würde das umbauen (bzw. eine Alternative erzeugen), so dass das Script ein JSON liefert.
Dann rufst Du das in ioBroker einmal per Zeitplan auf und schreibst die 4-5 Werte in Deine (eigenen) Datenpunkte.
An denen hängt dann die Protokollierung ... der Rest dann prinzipiell wie oben gezeigt.Es steht Dir natürlich frei einen Adapter für das exotische Gerät zu schreiben.
Da Du ja weißt wie man damit kommuniziert, müsstest Du lediglich PHP in JavaScript (Node) übersetzen.
Das Schreiben in Deine DB kannst Du dabei ja gerne weglassen. Das macht dann jeder so wie er es braucht. -
Danke DIR vielmals!!!!
ich kann 0815 javascript, jquery und php....., html und css
mysql ist etwas eingerostet....
weiß nicht wieviel aufwand das ist einen adapter zu programmieren, aber im google habe ich schon öfters gelesen, dass nach solch einem adapter gefragt wurde.....
wenn ich damit der community helfe, dann gerne.ich werde mal auf meinem odroid ubuntu installieren, einen webserver und iobroker und etwas rumbasteln.... ohne etwas vor augen zu haben ist es realtiv schwer sich was vorzustellen.
mittlerweile habe ich auch schon gesehen, wie man datenpunkte erstellt, wobei ich auch hier etwas unschlüssig bin, da im video nur ein einzelner datensatz erzeugt wird.....
https://youtu.be/jLnUA55kNsA minute 4:20kurz zu meinem php script, da es nicht so umfangreich ist.
ich bekomme mittels http_request einen wert von meinem exotischen gerät(gesamter Literverbrauch seit inbetriebnahme). Das passiert alle 60sek. und jeden Tag um 23:59. oder wenn ich auf einen button klicke, dieser löst das script mittels jquery ajax aus.
Dieser wert wird in eine Tabelle geschrieben, mit datum und 2-3 anderen infos. Jedesmal wenn das script ausgeführt wird, wird die bisherige Zeile in der Datenbank(unique = datum) überschrieben. so habe ich immer nur einen Wert pro Tag. aber zuvor wird noch etwas berechnet
fast fertig......Den Wert "Literverbrauch seit inbetriebnahme" verwende ich dann um meinen tages verbrauch zu berechnen.
Das ist ganz einfach. Ich nehme einfach den gesamtverbrauch von gestern(der steht ja schon in der tabelle) und rechne ihn vom derzeitigen "Literverbrauch seit inbetriebnahme" ab. Damit erhalte ich den aktuellen tagesverbrauch.
so... fertig.....
Am Ende schreibe ich die werte in die Tabelle. d.h. pro Tag ein eintrag (Liter pro tag, Literverbrauch seit inbetriebnahme, Datum, Uhrzeit letzter Abfrage, Wasserdruck und emperatur)....Bei der grafischen oberfläche frage ich mittels jquery ajax mySql einfach die Tagesvolumina seit der letzten 7 tage ab und stelle diese grafisch dar. (wobei ich mittels jquery den zeitraum auf Kalenderwoche, monat oder einzelne Tage verändern kann. Ändert ja nur die MySql abfrage)
-
@jumbo125
Öltank?
Dann braucht ein Adapter eigentlich nur regelmäßig per HTTP-Request an das API und den Wert lesen.
Der Wert wird in einen einzelnen DP geschrieben (Literverbrauch seit Inbetriebnahme).
Den Rest erledigen der SQL-Adapter und z.b. SourceAnalytics.
Verbrauch pro Tag, Woche, Monat ... braucht sich der Adapter nicht drum kümmern. Gibt ja schon passende dafürUnd eigentlich braucht's nicht mal einen Adapter. Wenn der Wert über einen einzelnen HTTP-Request zu lesen ist, reicht ein kleines JS/Blockly dafür.
Richte Dir erstmal den ioBroker passend ein und melde Dich nochmal mit dem entsprechenden HTTP-Request.
Dann finden sich hier schon genügend Leute, die Dir bei der Umsetzung helfen. -
@codierknecht
Oh super danke.
Der Request ans exotische Gerät gibt eine vielzahl an daten aus, daher würde ich den request an mein php script übermitteln und mittels http_build_query oder json_decode an die iobroker api senden. bzw. müsste es ja eigentlich schon reichen wenn ich am ende meines php scripts einen http-request mit den variablen (GET) an den datenpunkt senden....Okay, aber schon in meine Datenbank schreiben, oder? und nur den Tagesverbrauch in einen datenpunkt.... greift dann sourcaanalytics auf einen Daenpunkt zu ode auf meine Datenbank?
in den Datenpunkt kann man ja nur einen Wert eintragen, oder?
ich kann ja nicht immer einen Datenpunkt für jeden tag erstellen.....eine möglichkeit einen adapter zu erstellen oder eine möglichkeit, dass dies dann auch andere einfach nutzen können wird es nicht geben, oder? würde der community gerne auch etwas gutes tun
Kein Öltank, wasserleckage system...
es geht um einen leckage detektor
achja es geht noch einen kleinen schritt weiter. (der grund weshalb ich auch iobroker nutzen möchte ist die rasche gui und die adapter möglichkeit). ich möchte einen On/Off slider anzeigen. beim switch event möchte ich den Haupthahn sperren (ist ebenfalls nur ein http request)
das wird dann auch mit einem script passieren, oder?
-
alle 60 sekunden wird der status gecheckt und der On/off slider dementsprechend adaptiert. wenn Rückgabe-Request = 1 dann "on", wenn request = 2 dann off. ich nehme an das geht dann so:
Script welches alle 60 sekunden ausgeführt wird --> Request an mein php file --> dies gibt status zurück. --> zurückgegebener Status wird in ioBroker Datenpunkt geschrieben. --> weiteres script ändert dann den ON/Off slider je nach Rückgabewert. -
Status ändern:
wenn klick auf On/Off toggle -> Request zu einer php datei von mir mit dem derzeitigen On/off wert. --> PHP datei sendet Request an gerät zum umstellen, -> am ende wird ein http-Request wieder an ioBroker gegeben um den On/Off slider auf die richtige Stellung zu bringen
Tut mir wirklich leid wenn ich euch derart um eure Zeit beraube!
-
-
@jumbo125
Nur mal als Beispiel:
Auf meiner Continuous-Integration-Maschine läuft ein PHP-Script, das mir diverse Werte liefert.
Das frage ich alle 10 Sekunden mit JS ab und schreibe die Ergebnisse in ein paar eigene DP.var result, maintenance, online; // Alle 10 Sekunden den Status ermitteln schedule("*/10 * * * * *", async function () { maintenance = getState("0_userdata.0.Monitoring.Surface.maintenance").val; online = getState("unifi.0.default.clients.50:1a:c5:f6:de:37.is_online").val; // nur ausführen, wenn nicht im Wartungsmodus if (maintenance == 0 && online) { try { require("request")("http://192.168.178.137/sysinfo.php", async function (error, response, result) { if (result) { setState("0_userdata.0.Monitoring.Surface.memory_total", getAttr(result, 'memory'), true); setState("0_userdata.0.Monitoring.Surface.memory_used", getAttr(result, 'used'), true); setState("0_userdata.0.Monitoring.Surface.memory_free", getAttr(result, 'free'), true); setState("0_userdata.0.Monitoring.Surface.cpu", getAttr(result, 'load'), true); } }).on("error", function (e) { setState("0_userdata.0.Monitoring.Surface.online", false, true); }); } catch (e) { setState("0_userdata.0.Monitoring.Surface.online", false, true); } } });
Wenn ein Leck erkannt wurde entsprechend zu reagieren, wäre der nächste Schritt.
Das mit dem Slider wäre ja ein Thema für eine Visualisierung. Prinzipiell gar kein Problem.
Das folgt dann später - immer Eins nach dem Anderen -
@codierknecht
So... hat etwas gedauert mit dem odroid c2.... zuerstmal das passende os finden... vnc installieren... lamp und iobrokerJetzt läuft alles mal, außer der restart vom odroid, aber die bin ich hier verkehrt
So... zurück zum io BrokerBezüglich der visuellen Darstellung habe ich Granada gefunden, welches sich als ideale integrieren lässt.
Was würdet ihr empfehlen?Danke
-
@jumbo125 sagte in eigenen Code in widget anzeigen:
Bezüglich der visuellen Darstellung habe ich Granada gefunden
Meinst Du vielleicht Grafana?
Was würdet ihr empfehlen?
Das nutzen hier recht viele User. Ich würd's empfehlen. Braucht natürlich etwas Einarbeitungszeit.
-
@codierknecht
ja, genau.
verzeihung, das war die autokorrektur -
@jumbo125 sagte in eigenen Code in widget anzeigen:
mit dem odroid c2.... zuerstmal das passende os finden...
https://www.armbian.com/odroid-c2/
@jumbo125 sagte in eigenen Code in widget anzeigen:
vnc installieren
wofür denn sowas?
auf den Server greift man per ssh zu
-
@jumbo125 sagte in eigenen Code in widget anzeigen:
vnc installieren... lamp
Wie @Homoran schon schrieb: Das ist ein Server-OS - das wird über die Konsole bedient - per SSH.
Und wozu ein LAMP?
So ein Einplatinencomputer ist kein Performancewunder. Da sollte nur das laufen was auch benötigt wird. -
@homoran
Ja, armbian habe ich genommen... zuerst wurde mir ubuntu empfohlen, seitens odroid forum... da habe ich dann darauf verzichtet, nachdem mir jemand den Tipp mit ambrian gegeben hat
Tightvnc habe ich installiert da ich regelmäßig ins terminal muss..
Es läuft ja nicht nur der iobroker.Wie greift ihr auf die Konsole zu, ohne vnc und OHNE in an einen Monitor zu hängen.
Ich lese unzählige daten aus, welche ich in eine MySQL Datenbank schreibe.
Wie kann ich ohne apache phpmyadmin betreiben um die ganzen Daten zu pflegen -
@codierknecht
Wie schon erwähnt, ich muss regelmäßig ins terminal wie macht ihr das? Ohne vncAchja natürlich habe ich die CPU und den RAM sowie die temp im Blick.
Alles völlig in ordnung
Eigentlich würde ich ja gerne noch einige Sachen damit betreiben(octaprint, vpn Server usw) was ich aber eh nicht mache.
Ich versuche schon seit knapp einem Jahr einen raspberry zero o.ä. zu bekommen. Überall ausverkauft. Unmöglich
Nur die großen Teile.... Und diese sind sehr vergriffen -
@homoho @Codierknecht
Ihr seid die besten!wauw, kurz gegoogelt und schon gefunden.
Über die Windows CMD ins Terminal vom Odroid. Wie super ist das den!!!!!
Da gibt es unzählige tutorials wie man VNC auf den Teilen zum Laufen bringt und nigendst wird die bereits in jedem ambrian (lt google) installiert ssh variante zu nutzen.
Danke!!!!!!!!
Natürlich werde ich tightvnc gleich aus dem startservice werfen, da ich es nun ja auch problemlos von windows wieder aktivieren könnte, bei bedarf.Reicht es, wenn ich es aus dem sartservice rausgebe? installiert könnte ich es doch lassen, oder? solange der server nicht läuft sollte er doch keine ressourcen benötigen.
Auch wenn derzeit die CPU auslastung bei rund 6-10% liegt, sowie RAM bei 8% möchte ich das kleine Teil ehr gering halten. Temperatur bewegt sich bei 40-55°phpmyadmin werde ich ohne apache nicht laufen lassen können, oder? und mysql nur übers terminal ist mir noch zu heavy....
-
@jumbo125 sagte in eigenen Code in widget anzeigen:
phpmyadmin werde ich ohne apache nicht laufen lassen können, oder? und mysql nur übers terminal ist mir noch zu heavy....
Du willst also auf dem Pi auch MySQL (bzw. MariaDB) laufen lassen?
Wenn die Maschine das verkraftet - das kann ich von hier aus nicht einschätzen.
Wie ist die Kiste denn ausgestattet?Einen Apachen rund um die Uhr laufen zu lassen, nur um damit alle Jubeljahre mal auf die DB zuzugreifen, halte ich für suboptimal.
Warum nicht PhpMyAdmin auf Deiner Windows-Maschine unter IIS?
Das muss ja nur laufen, wenn Du auch vom PC auf die Datenbank willst.
Oder gleich einen Windows-Client nehmen ... -
@codierknecht
Bis jetzt problemlosDas würde heißen, ich schalte den apache Server ab und greife mit meinem Windows (wo apache und myphpadmin) installiert ist auf die DB am odroid.
Richtig?Generell gilt aber, das ich alles installiert lassen kann, aber dies start service abschalte.
Solange der Service nicht lauft, sollte keine Ressourcen benötigt werden.....oder? -
@jumbo125 sagte in eigenen Code in widget anzeigen:
greife mit meinem Windows (wo apache und myphpadmin) installiert ist auf die DB am odroid
Wenn das auf Deinem Windows eh schon installiert ist, sollte das klappen.
Wenn Du den Apachen nur brauchst um dann per PhpMyAdmin auf die DB zu gehen, würde ich zu einem reinen Windows-Client wechseln (Heidi SQL, MySQL Workbench o.ä.).@jumbo125 sagte in eigenen Code in widget anzeigen:
Solange der Service nicht lauft, sollte keine Ressourcen benötigt werden.....oder?
Wenn der dadurch belegte Speicher auf der Platte/SD nicht stört, sollte das ausreichen.
So einen kleinen Einplatinenrechner sollte man nicht mit Dingen belasten, die nicht wirklich nötig sind. -
@jumbo125 sagte in eigenen Code in widget anzeigen:
Wie greift ihr auf die Konsole zu, ohne vnc und OHNE in an einen Monitor zu hängen.
mit puTTY vom PC aus
-
@codierknecht
Alles klar.
Achherje.... da ist mir gerade eingefallen, dass die Daten mittels php in die MySQL mariadb geschrieben werden.
Da werde ich wohl um den Server nicht drumherum kommen
Ohne php gibt's keine Einträge