eigene Webseite im Stil der Status Seite erstellen
-
- Beiträge: 3464
- Registriert: Sa Feb 20, 2021 9:55 am
- Has thanked: 5 times
- Been thanked: 63 times
Re: eigene Webseite im Stil der Status Seite erstellen
Ich hab‘ das ja selbst auch noch nie programmiert. Hier ist ein bisschen coding: (nach Browser suchen)
https://www.emqx.com/en/blog/mqtt-js-tutorial
Das müsste meinem Verständnis nach in einen <script> block innerhalb der vom webserver ausgelieferten html-Seite gepackt werden und dann müsste der vom Broker gelieferte Wert halt ins html und nicht auf die Konsole.
https://www.emqx.com/en/blog/mqtt-js-tutorial
Das müsste meinem Verständnis nach in einen <script> block innerhalb der vom webserver ausgelieferten html-Seite gepackt werden und dann müsste der vom Broker gelieferte Wert halt ins html und nicht auf die Konsole.
openWB-series2, openWB-Buchse, E3/DC S10pro+19.5kWh, 30kWp Ost-Süd, Model 3 und Ion
Re: eigene Webseite im Stil der Status Seite erstellen
Ich müsste erst Mal bei 0 anfangen, also generell eine Webseite erstellen (ohne Javascript) und mich dann langsam herantasten.
Nur wie fängt man an?
Welches Programm nutzt man dafür (außer Wordpress)?
Habe mir Visual Code angeschaut, aber dort arbeitet man wie der Name schon sagt rein im Code, nicht visuell.
Wie arbeiten denn die Profis, die openWB gebaut haben?
Rein im Code?
Die Tutorials zu Java MQTT habe ich auch gefunden, nur leider verstehe ich das nicht, da es niemals ein Beispiel gibt, wo am Ende ein Live Wert auf einer Webseite raus kommt.
Das Level ist da noch zu hoch für mich..
So geht es mir auch mit Vue.js.
Nur wie fängt man an?
Welches Programm nutzt man dafür (außer Wordpress)?
Habe mir Visual Code angeschaut, aber dort arbeitet man wie der Name schon sagt rein im Code, nicht visuell.
Wie arbeiten denn die Profis, die openWB gebaut haben?
Rein im Code?
Die Tutorials zu Java MQTT habe ich auch gefunden, nur leider verstehe ich das nicht, da es niemals ein Beispiel gibt, wo am Ende ein Live Wert auf einer Webseite raus kommt.
Das Level ist da noch zu hoch für mich..
So geht es mir auch mit Vue.js.
openWB series2 Buchse (2021)
go-eCharger HOME+ 22 kW (2022)
go-eCharger HOME+ 22 kW (2022)
-
- Beiträge: 3464
- Registriert: Sa Feb 20, 2021 9:55 am
- Has thanked: 5 times
- Been thanked: 63 times
Re: eigene Webseite im Stil der Status Seite erstellen
Hier ist mal eine ganz simple Webseite mit einer Javascript-Berechnung, das speicherst Du einfach mal als irgendwas.html ab und klickst doppelt drauf:
Etwas anspruchvolleres coding gibt's dann bei Steve - der beschäftigt sich viel mit MQTT. Den habe ich viel geschaut und gelesen bei meinen ersten MQTT-Schritten. (und auch nodeRED)
http://www.steves-internet-guide.com/pu ... -web-page/
Da habe ich dann seine Beispielseite heruntergeladen und dann ein bisschen modifiziert, so dass ich aus einer openWB2.1 den EVU-Punkt auslesen konnte. Das kommt an, allerdings noch nicht in dem richtigen Feld. Ich denke mal, seine Seite funktionert so, dass man mit dem Eingabedinx und dem slider Werte publishen kann. Das mit dem EVU-Punkt ist beim rumspielen ein bisschen kaputt gegangen. Die anderen angepassten Stellen findest Du mit der Suche nach "openWB"
Achso - Editor war bei mir der vi und das spätere copy&paste habe ich dann per Xcode (das ist die IDE von Apple, die mit dem Betriebssystem geliefert wird) gemacht. Ich bin halt ein alter Unixer, der es irgendwann auf den Mac geschafft hatte - aber erst, als die unter den Mac Unix verbaut hatten.
Ja, der Hausverbrauch ist bei mir gerade 7,2kW.
Code: Alles auswählen
<!DOCTYPE html>
<meta charset="UTF-8">
<html>
<body>
<h1>Überschrift</h1>
<p> und hier der erste Absatz</p>
<p id="erster"></p>
<script>
document.getElementById("erster").innerHTML = 5 + 6;
</script>
</body>
</html>
http://www.steves-internet-guide.com/pu ... -web-page/
Da habe ich dann seine Beispielseite heruntergeladen und dann ein bisschen modifiziert, so dass ich aus einer openWB2.1 den EVU-Punkt auslesen konnte. Das kommt an, allerdings noch nicht in dem richtigen Feld. Ich denke mal, seine Seite funktionert so, dass man mit dem Eingabedinx und dem slider Werte publishen kann. Das mit dem EVU-Punkt ist beim rumspielen ein bisschen kaputt gegangen. Die anderen angepassten Stellen findest Du mit der Suche nach "openWB"
Code: Alles auswählen
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<style>
#messages
{
background-color:yellow;
font-size:3;
font-weight:bold;
line-height:140%;
}
#status
{
background-color:red;
font-size:4;
font-weight:bold;
color:white;
line-height:140%;
}
table{
border: 1px solid black;
}
.out
{
background-color:gray;
}
</style>
<head>
<title>Simple Web Page Control Dashboard</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.js" type="text/javascript"></script>
<script type = "text/javascript"
src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script type = "text/javascript">
var connected_flag=0
var mqtt;
var reconnectTimeout = 2000;
var host="192.168.8.11"; //IP der openWB
var port=9001;
var sub_topic="openWB/counter/0/get/power"; //das Topic der openWB
function onConnectionLost(){
console.log("connection lost");
document.getElementById("status").innerHTML = "Connection Lost";
document.getElementById("messages").innerHTML ="Connection Lost";
connected_flag=0;
}
function onFailure(message) {
console.log("Failed");
document.getElementById("messages").innerHTML = "Connection Failed- Retrying";
setTimeout(MQTTconnect, reconnectTimeout);
}
function onMessageArrived(r_message){
out_msg="Message received "+r_message.payloadString+"<br>";
out_msg=out_msg+"Message received Topic "+r_message.destinationName;
//console.log("Message received ",r_message.payloadString);
console.log(out_msg);
document.getElementById("messages").innerHTML =out_msg;
var topic=r_message.destinationName;
if(topic=="house/outside-light")
{
document.getElementById("outside-light").innerHTML =r_message.payloadString;
}
if(topic=="house/outside-temperature")
{
document.getElementById("outside-temperature").innerHTML =r_message.payloadString;
}
}
function onConnected(recon,url){
console.log(" in onConnected " +reconn);
}
function onConnect() {
// Once a connection has been made, make a subscription and send a message.
document.getElementById("messages").innerHTML ="Connected to "+host +"on port "+port;
connected_flag=1
document.getElementById("status").innerHTML = "Connected";
console.log("on Connect "+connected_flag);
mqtt.subscribe(sub_topic);
}
function MQTTconnect() {
console.log("connecting to "+ host +" "+ port);
var x=Math.floor(Math.random() * 10000);
var cname="controlform-"+x;
mqtt = new Paho.MQTT.Client(host,port,cname);
//document.write("connecting to "+ host);
var options = {
timeout: 3,
onSuccess: onConnect,
onFailure: onFailure,
};
mqtt.onConnectionLost = onConnectionLost;
mqtt.onMessageArrived = onMessageArrived;
//mqtt.onConnected = onConnected;
mqtt.connect(options);
return false;
}
function sub_topics(){
document.getElementById("messages").innerHTML ="";
if (connected_flag==0){
out_msg="<b>Not Connected so can't subscribe</b>"
console.log(out_msg);
document.getElementById("messages").innerHTML = out_msg;
return false;
}
var stopic= document.forms["subs"]["Stopic"].value;
console.log("Subscribing to topic ="+stopic);
mqtt.subscribe(stopic);
return false;
}
function send_message(msg,topic){
if (connected_flag==0){
out_msg="<b>Not Connected so can't send</b>"
console.log(out_msg);
document.getElementById("messages").innerHTML = out_msg;
return false;
}
var value=msg.value;
console.log("value= "+value);
console.log("topic= "+topic);
message = new Paho.MQTT.Message(value);
message.destinationName = "openWB/counter/0/get/"+topic; //openWB
mqtt.send(message);
return false;
}
</script>
</head>
<body onload="MQTTconnect()">
<h1>Simple Web Page Control Dashboard</h1>
<table>
<tr><td >EVU-Punkt::</td><td><p id="power" type="text" name="power" onchange="send_message(this,'power')"></td></tr>
//<tr><td >Outside Light:</td><td class="switch"><input type="range" min=0 max=1 value=0 class="slider" id="outside-light" onclick="send_message(this,'outsidelight')")></td></tr>
</table>
//<script>
//document.getElementById("power").innerHTML = send_message(this,'power');
//</script>
<div id="status">Connection Status: Not Connected</div>
</div>
<hr>
Messages:<p id="messages"></p>
</body>
</html>
Ja, der Hausverbrauch ist bei mir gerade 7,2kW.
openWB-series2, openWB-Buchse, E3/DC S10pro+19.5kWh, 30kWp Ost-Süd, Model 3 und Ion
Re: eigene Webseite im Stil der Status Seite erstellen
Danke, werde mich damit nächstes Jahr in Ruhe beschäftigen.
Node Red bringt bald ein neues Dashboard raus bzw. Man Kann es schon testen.
Dennoch interessiert mich was selbst gebautes.
Node Red bringt bald ein neues Dashboard raus bzw. Man Kann es schon testen.
Dennoch interessiert mich was selbst gebautes.
openWB series2 Buchse (2021)
go-eCharger HOME+ 22 kW (2022)
go-eCharger HOME+ 22 kW (2022)
Re: eigene Webseite im Stil der Status Seite erstellen
Die Beispiel Seite war mir zu viel wilder Code, daher habe erst mal gaaaanz einfach angefangen, mit zwei MQTT Nachrichten, die mir in der Browser Konsole angezeigt werden:
Nächster Schritt: wie bekomme ich die MQTT Nachrichten wiederum auf meine html Seite ?
und sollte man den ganzen Java Script Teil besser auslagern in eine eigene .js Datei ?
Ziel ist eine einzige html Seite wo ich ein paar Grafiken einbinde wie z.B. meine Wärmepumpe, die Bohrung und dort dann die Temperaturen an den Grafiken anzeigen lassen möchte.
Code: Alles auswählen
<!doctype html>
<html lang="de">
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js"
type="text/javascript"></script>
<script type="text/javascript" language="javascript">
const clientId = 'mqttjs_' + Math.random().toString(16).substr(2, 8);
// Create a client instance
client = new Paho.MQTT.Client("192.168.168.9", Number(9001), clientId);
// set callback handlers
client.onConnectionLost = onConnectionLost;
client.onMessageArrived = onMessageArrived;
// connect the client
client.connect({ onSuccess: onConnect });
// called when the client connects
function onConnect() {
// Once a connection has been made, make a subscription and send a message.
console.log("Verbindung hergestellt");
client.subscribe("VLT");
client.subscribe("RLT");
}
// called when the client loses its connection
function onConnectionLost(responseObject) {
if (responseObject.errorCode !== 0) {
console.log("Verbindung verloren:" + responseObject.errorMessage);
}
}
// called when a message arrives
function onMessageArrived(message) {
console.log("Nachricht:" + message.payloadString);
}
</script>
</head>
<body>
</body>
</html>
und sollte man den ganzen Java Script Teil besser auslagern in eine eigene .js Datei ?
Ziel ist eine einzige html Seite wo ich ein paar Grafiken einbinde wie z.B. meine Wärmepumpe, die Bohrung und dort dann die Temperaturen an den Grafiken anzeigen lassen möchte.
openWB series2 Buchse (2021)
go-eCharger HOME+ 22 kW (2022)
go-eCharger HOME+ 22 kW (2022)
-
- Beiträge: 3464
- Registriert: Sa Feb 20, 2021 9:55 am
- Has thanked: 5 times
- Been thanked: 63 times
Re: eigene Webseite im Stil der Status Seite erstellen
Dann kuck‘ dir doxh mal mein erstes Beispiel an. Da wird ein Absatz mit „erster“ benannt, dessen Inhalt dann per Javascript modifiziert wird.
openWB-series2, openWB-Buchse, E3/DC S10pro+19.5kWh, 30kWp Ost-Süd, Model 3 und Ion
Re: eigene Webseite im Stil der Status Seite erstellen
sry, hab nur den 2. Codetext gelesen, wird gemacht
edit: komme da nicht mit weiter, ich muss die MQTT Werte client.subscribe("VLT"); client.subscribe("RLT"); in meinem Beispiel irgendwie in einer Variablen speichern und diese dann im <body> wieder einfügen.
edit: komme da nicht mit weiter, ich muss die MQTT Werte client.subscribe("VLT"); client.subscribe("RLT"); in meinem Beispiel irgendwie in einer Variablen speichern und diese dann im <body> wieder einfügen.
openWB series2 Buchse (2021)
go-eCharger HOME+ 22 kW (2022)
go-eCharger HOME+ 22 kW (2022)
Re: eigene Webseite im Stil der Status Seite erstellen
ich habe es doch noch geschafft
Frage zum Code:
Hiermit hole ich mir die o.g. Werte:
hiermit weise ich sie "id"s zu:
geht das eleganter oder ist das der Weg?
hatte versucht alles in ein Json Objekt zu packen, also {"VLT":23.5,"RLT":20.1} - aber kriege es dann nicht mehr zugewiesen mit
document.getElementById("VLT").innerHTML = message.payloadString.VLT (so wie ich es aus Node-Red kenne)
Dann ist mir noch aufgefallen, dass sich das Konstrukt nicht als Internetseite nutzen lässt, nur als Intranetseite.
Denn der lokale Browser initiert auch den MQTT Aufbau - somit müsste ich MQTT WS über Internet freigeben was m.E. nach nicht zu empfehlen wäre um es vorsichtig auszudrücken, da mir so jeder Hanswurst in den Broker schreiben könnte.
zumindest die ersten Werte in einer Tabelle.Frage zum Code:
Hiermit hole ich mir die o.g. Werte:
Code: Alles auswählen
function onConnect() {
// Once a connection has been made, make a subscription and send a message.
console.log("Verbindung hergestellt");
client.subscribe("VLT");
client.subscribe("RLT");
client.subscribe("Hz");
client.subscribe("Pth");
client.subscribe("AT");
client.subscribe("RT");
client.subscribe("P");
client.subscribe("PV");
}
Code: Alles auswählen
// called when a message arrives
function onMessageArrived(message) {
console.log("Beschreibung: " + message.destinationName);
console.log("Nachricht: " + message.payloadString);
const topic = message.destinationName;
if (topic == "VLT") {
document.getElementById("VLT").innerHTML = message.payloadString;
}
if (topic == "RLT") {
document.getElementById("RLT").innerHTML = message.payloadString;
}
if (topic == "Hz") {
document.getElementById("Hz").innerHTML = message.payloadString;
}
if (topic == "Pth") {
document.getElementById("Pth").innerHTML = message.payloadString;
}
if (topic == "AT") {
document.getElementById("AT").innerHTML = message.payloadString;
}
if (topic == "RT") {
document.getElementById("RT").innerHTML = message.payloadString;
}
if (topic == "P") {
document.getElementById("P").innerHTML = message.payloadString;
}
if (topic == "PV") {
document.getElementById("PV").innerHTML = message.payloadString;
}
}
hatte versucht alles in ein Json Objekt zu packen, also {"VLT":23.5,"RLT":20.1} - aber kriege es dann nicht mehr zugewiesen mit
document.getElementById("VLT").innerHTML = message.payloadString.VLT (so wie ich es aus Node-Red kenne)
Dann ist mir noch aufgefallen, dass sich das Konstrukt nicht als Internetseite nutzen lässt, nur als Intranetseite.
Denn der lokale Browser initiert auch den MQTT Aufbau - somit müsste ich MQTT WS über Internet freigeben was m.E. nach nicht zu empfehlen wäre um es vorsichtig auszudrücken, da mir so jeder Hanswurst in den Broker schreiben könnte.
openWB series2 Buchse (2021)
go-eCharger HOME+ 22 kW (2022)
go-eCharger HOME+ 22 kW (2022)
-
- Beiträge: 4448
- Registriert: Mi Nov 11, 2020 7:16 pm
- Has thanked: 5 times
- Been thanked: 27 times
Re: eigene Webseite im Stil der Status Seite erstellen
Hmm, wenn du aus den Internet drauf zugreifen willst, dann würde ich auf fertige getestete Lösungen zurückgreifen. Ich will dir nicht zu nahe treten, aber selbst machst du dir da sonst Scheunentore in dein Netz auf.
Wenn du alles integrieren willst, würde ich eher eine fertige Lösung wir Homeassistant nutzen. Da bekommst du bereits Integrationen für verschiedenste Geräte und die Daten der openWB bekommst du dort auch rein. Dann baust du dir ein Minimal Dashboard und zeigst die Dinge an di du sehen willst.
Auch da gibt es noch Randbedingungen, wenn du das aus dem Internet erreichbar machen willst, aber da sehe ich eher eine Chance auf einen sicheren Beteieb als bei einer Eigenrealisierung.
VG
Det
Wenn du alles integrieren willst, würde ich eher eine fertige Lösung wir Homeassistant nutzen. Da bekommst du bereits Integrationen für verschiedenste Geräte und die Daten der openWB bekommst du dort auch rein. Dann baust du dir ein Minimal Dashboard und zeigst die Dinge an di du sehen willst.
Auch da gibt es noch Randbedingungen, wenn du das aus dem Internet erreichbar machen willst, aber da sehe ich eher eine Chance auf einen sicheren Beteieb als bei einer Eigenrealisierung.
VG
Det
10kWp PV mit SMA Tripower 10000TL-10 (PE11 mit SDM72V2); 2,4kWp mit Solis 2.5 G6 (EE11 mit SDM120). OpenWB Standard+. EVU EM540 an einem Raspi mit Venus OS. BEV Mercedes EQA 300 (06/2024)
-
- Beiträge: 3783
- Registriert: Di Feb 25, 2020 9:23 am
- Has thanked: 4 times
- Been thanked: 25 times
Re: eigene Webseite im Stil der Status Seite erstellen
Für den Zugriff von Unterwegs gibt es etwas, das heißt VPN! Dann ist auch relativ egal, wie gut oder schlecht so eine Seite/Dienst/Server gemacht wurde.