Ich hab die Statistik auf den Virtuellen Sensoren dann in der App am Handy und nicht über Shelly Control über den Browser aktiviert.
Da tritt das Problem nicht auf! Sehr lustig!
Echt geiles Script bin sehr happy Danke dir!
VPN/Proxy erkannt
Es scheint, dass Sie einen VPN- oder Proxy-Dienst verwenden. Bitte beachten Sie, dass die Nutzung eines solchen Dienstes die Funktionalität dieser Webseite einschränken kann.
Ich hab die Statistik auf den Virtuellen Sensoren dann in der App am Handy und nicht über Shelly Control über den Browser aktiviert.
Da tritt das Problem nicht auf! Sehr lustig!
Echt geiles Script bin sehr happy Danke dir!
Ich habe für die Virtual Components in den settings die Statistik für die Sensoren aktiviert
Dann muss ich den shelly neu starten damit die Statistik angezeugt wird.
Dann steht auf einmal -9,9 beim COP und er taucht bei den Komponenten zweimal auf.
Was könnte das sein?
Richtig geil! Funktioniert super! Besten Dank!
Beim Abtauen wird die Energiemenge als Negativ angezeigt. Finde ich perfekt!
Liefert der gleiche Shelly (PM?) die elektr. Bezugsleistung/Energie der WP?
Ja, die werden einmal auf den Shelly geladen.
Falls nun weg. -> Script stoppen->alle Komponenten & Gruppe löschen->Script starten->alles, auch Icon's wiederhergestellt.
Danke dir habs grad getestet, funzt einwandfrei!
Ja genau, der gleiche Shelly hängt genau vor der Wärmepumpe und misst den Stromverbrauch.
Hier noch ein Screenshot:
Die Icons von dir sind nur nicht drinnen weil ich bisschen herumgespielt habe.
Lädt er die einmal von deinem Server?
Vielleicht könntest du mir noch ein 5tes Virtuelles Gerät nämlich den COP hinzufügen. Das wäre dann Wärmeleistung geteilt durch den Energieverbrauch.
Dann wäre das echt komplett.
Ich bin dir wirklich Dankbar, eine wirklich geile Sache. Hab echt Freude damit!
HighFive Du warst zu schnell Hab ein Firmware update gemacht aber das zweite auf 1.4.4 hat gefehlt das hab ich übersehen und jetzt läufts!
Wirklich geil danke dir ich spiel mich mal mit den Komponenten!
Hallo High Five!
Heute sind endlich die Gen3 gekommen.
Hab das Script gleich reingespielt, leider kommt nach ein paar durchläufen im Debug folgenden Meldung:
HighFive Vielen Dank für deine Arbeit, bin gerade erst an den PC gekommen. Richtig geil was du alle schaffst mit dem script.
Habs gerade getestet und das script läuft, jedoch hab ich vergeblich die virtuellen Komponenten gesucht.
Ab GEN3 werden die unterstützt hab ich gefunden und obwohl ich den PM gerade erst gekauft habe steht vorne nicht GEN3 drauf somit muss ich mir einen neuen besorgen. Son mist, ich bin davon ausgegangen dass ich den aktuellsten hab.
ICch bestelle heute den neuen und melde mich sofort wenn ich es getestet habe!
Also für mich stimmen die Einheiten nicht. L/s ist keine Masseeinheit und wenn ich eine Energie (z.B. kWh) duch eine Leistung (W) teile erhalte ich eine Zeit.
Insofern ist fraglich, was die ausgerechneteten Größen aussagen.
Da ich eine momentane Leistung benötige werden L (Entspricht der Masse) und nicht L/s eingesetzt somit erhalte ich Werte ohne Zeitangabe. Wenn ich dann die Wärmeleistung über Zeit haben möchte muss man integrieren.
Und wenn ich um den COP zu errechnen Watt/Watt teile kommt ein Koeffizient raus.
Also alles in Butter!
Kein Stress, ich bin dankbar dass ihr mich unterstützt!
Eine gute Nacht wünsche ich!
Grüße
flotschi
Stimmt es wird eine kleine Differenz im Vorlauf zum Rücklauf geben sollte sie länger aus sein. Da wird dann eine Leistung angezeigt, das macht aber nichts.
Da die Wärmepumpe aber durchläuft in der Heizzeit ist das kein Drama.
Ich habe einen geeichten Wärmemengenzähler der aber nur über eine optische Schnittstelle verfügt mit irgendeinem proprietären Protokoll.
Der wird für die monatliche Ablesung von mir genommen.
Die Wärmepumpe hängt natürlich an dem Ausgang des Shellys den man auch schalten kann. Jedoch verwende ich die Ein-Ausschaltung nicht da er in der Haupt Stromzufuhr hängt.
Also ich messe mit dem Shelly PM nur
Könnt ihr mir noch zeigen wie ich eine Anzeige realisieren kann?
Grüße
flotschi
Viedotraum Danke die Console war nicht eingeschalten, mein Fehler. Temps werden angezeigt.
HighFive Ja die Werte kommen! Viele Wegen führen nach Rom, aber das ist für einen Programmier Noob für mich wirklich einfacher zu durchschauen.
Ich danke euch vielmals Ihr seid eine Wucht! Ich weis wieviel Arbeit das ist Neulingen zu helfen und schätze eure Hilfe sehr!
Wie kann ich denn dann den Wert im Dashboard zb anzeigen lassen? Oder weiterverarbeiten?
Vielleicht interessiert euch meine Wärmepumpe um 1500€:
https://www.kaelte-treffpunkt.de/viewtopic.php?t=11839
flotschi
Zeile 18 und 19 sind die IDs die abgerufen werden?
Wie gesagt bin darin echt nicht gut.
Ich habe das Script gestartet und es kommt mal kein Fehler aber ich sehen auch keine Console mit Werten, wo sollten die Werte denn auftauchen?
Danke dir für die Geduld und die Hilfestellung.
Die Ip ist ja der Localhost 127.0.0.1 wenn ichs auf dem selben Gerät scripte oder?
So hätte ichs eingetragen, jedoch kommt nur syntax error...
function readTemperaturSensor(100) {
//print ("readTemperaturSensor...");
Shelly.call(
"HTTP.GET",
{ url: "http://127.0.0.1/rpc/Temperature.GetStatus?id=100" },
function(result, error_code, error_message) {
if (error_code !== 0) {
print('Error');
} else {
let jsonData = JSON.parse(result.body);
let tempHome = jsonData.tC;
//print ("Temp Home: " ,tempHome);
return tempHome;
}
});
}
readTemperaturSensor(100);
readTemperaturSensor(101);
Alles anzeigen
Also ich habe mir den Thread angeschaut und mir ist das leider etwas zu komplex. Ohne Hilfe komme ich da nicht weiter.
Kurz nochmal mein Wunsch:
Hier die Statusrückmeldung vom Shelly (Das einzige was ich zustande gebracht habe)
{"ble":{},"cloud":{"connected":true},"input:0":{"id":0,"state":false},"mqtt":{"connected":false},"script:1":{"id":1,"running":false,"mem_free":25200,"errors":["syntax_error"]},"switch:0":{"id":0, "source":"init", "output":true, "apower":298.0, "voltage":226.8, "current":1.659, "aenergy":{"total":30090.281,"by_minute":[4949.144,4946.614,4954.626],"minute_ts":1734438060},"temperature":{"tC":41.6, "tF":106.9}},"sys":{"mac":"10061CCCC718","restart_required":false,"time":"13:21","unixtime":1734438104,"uptime":238933,"ram_size":246844,"ram_free":139580,"fs_size":458752,"fs_free":126976,"cfg_rev":18,"kvs_rev":0,"schedule_rev":0,"webhook_rev":0,"available_updates":{"stable":{"version":"1.4.4"}},"reset_reason":3},"temperature:100":{"id": 100,"tC":26.9, "tF":80.4},"temperature:101":{"id": 101,"tC":24.7, "tF":76.4},"wifi":{"sta_ip":"192.168.0.5","status":"got ip","ssid":"Google_Truck","rssi":-65},"ws":{"connected":false}}
Temperature100 und Temperature101 auslesen und Temperature101 von Temperature100 abziehen, das ist das Delta T.
Dann das Delta T in diese Formel einsetzen DeltaT x 0,1569 x 4180 und den errechneten Wert möchte ich gerne irgendwie anzeigen in der Shelly APP.
Das wäre die Leistung in Watt die die Wärmepumpe produziert.
Als Zusatz wäre cool noch den errechneten Wert durch den Stromverbrauch der am Shelly PM gemessen wird zu dividieren und den als zweiten separaten Wert anzuzeigen. Das wäre dann der COP (Coefficiency of Performance).
Über eure Hilfe wöre ich dankbar!
Danke euch vielmals!
flotschi
Poste hier ein einfaches hydraulisches Schema deiner Anlage mit der WP, UWP, RL u. VL Sensoren.
Interesant wäre auch ob du deine WP direkt über den Shelly 1PM schaltest und wie der maximale Strom der WP ist.
Vielleicht kann dir dann eher geholfen werden.
Servus! Danke für deine Nachricht.
Wenn es dich persönlich interessiert kann ich dir gerne einen Link zu meiner Anlage schicken wir ich sie aufgebaut habe.
Schalten tue ich sie nicht über shellys. Ich messe nur den Strom und Stromverbrauch und die beiden Temperaturen.
Für die Lösung bezüglich meines Shelly Scripts bringt das uns aber nicht weiter.
Was für eine Formel ich benötige und diese beiden Sensoren habe ich ja schon geschrieben.
Daraus ergibt sich die erzeugte Wärmeenergie.
Schaue mal hier: RE: Shelly AddOn auf anderem Shelly auslesen
Dort wird das Auslesen der Temp-Sensoren beschrieben.
In übrigen funktionieren die meisten komplett per ChatGPT erstellten Scripte nicht.
Änderungen sowie Optimierung des Codes teilweise. Je nachdem wie komplex dein Code ist.
Danke dir für die Info!
Ich werde Mal schauen was ich zusammenbringe und melde mich wieder.
Falls es jemanden gibt der mir gern so ein Script schreibt bin ich natürlich nicht abgeneigt.
Ich bin sowas von gar nicht begabt beim Programmieren.
flotschi
Hallo!
Ich bin bei Shelly relativ neu aber jetzt schon begeistert.
Ich bin selber Techniker, genauer Machatroniker. Jedoch bin ich im Programmieren nicht wirklich begabt.
Ich habe einen Shelly PM mit einem Addon und 2 Temperatursensoren die den Vorlauf und den Rücklauf meiner Wärmepumpe messen. (Eigenbau dadurch nur berechnung durch verschiedene Messgeräte)
Durch die Formel der Wärmemenge kann man sich mit dem Delta T also der Temperaturdifferenz, dem Volumenstrom und der Wärmekapazität von Wasser
die momentane Heizleistung errechnen.
Bei mir ist der Volumenstrom mit 0,565 m³/h konstant. Das sind 0,1569 L/s.
Das Delta T kommt von meinen Sensoren.
Jetzt wäre es genial wenn ich die beiden Temp Sensoren auslesen könnte und mir die Leistung anzeigen lassen könnte.
Formel sollte dann Volumenstrom in L/s (0,1569) * Wärmekapazität Wasser (4180) * Delta T sein( aus den beiden Sensoren)
Ich habe ChatGPT dazu bereits befragt, im Grunde dürfte ChatGPT die Programmiersprache der Shellys kennen jedoch funktioniert es nicht.
Ich weis auch nicht ob die Shellys überhaupt virtuelle Sensoren erstellen können...
Hier der Output nach mehereren Frage - Antwort Spielchen
// Define the IP of the Shelly device
const shelly_ip = "192.168.0.5"; // Replace with your Shelly device IP
// Fixed flow rate (in liters per second)
const flowRate = 0.1569; // Modify this to the actual flow rate (L/s)
// Specific heat capacity of water (J/kg°C)
const specificHeatCapacity = 4180; // in J/kg°C
// Function to fetch and extract the temperature value (tC) from a specific sensor
function getTemperature(sensorKey) {
// Send HTTP GET request to Shelly.GetStatus
let url = `http://${shelly_ip}/rpc/Shelly.GetStatus`;
// Fetch the data from the Shelly device
let response = HTTP.get(url);
// Check if the request was successful
if (response.status_code === 200) {
// Parse the JSON response
let data = JSON.parse(response.body);
// Check if the sensor exists in the data
if (data[sensorKey]) {
// Extract the tC value (Celsius temperature)
let temperature = data[sensorKey].tC;
// Log the temperature for debugging
console.log(`Extracted Temperature (tC) from ${sensorKey}: ` + temperature + "°C");
// Return the extracted temperature value
return temperature;
} else {
console.log(`Sensor ${sensorKey} not found in the response.`);
return null;
}
} else {
console.log("Error fetching data from Shelly device. Status Code: " + response.status_code);
return null;
}
}
// Function to calculate heat energy (in watts)
function calculateHeatEnergy(temperatureSupply, temperatureReturn) {
// Calculate the temperature difference (ΔT)
let deltaT = temperatureSupply - temperatureReturn;
console.log("Temperature Difference (ΔT): " + deltaT + "°C");
// Calculate the heat energy in joules (J)
let heatEnergy = flowRate * deltaT * specificHeatCapacity;
console.log("Heat Energy: " + heatEnergy + " J/s (Watts)");
// Return the calculated heat energy (in Watts)
return heatEnergy;
}
// Function to create a virtual sensor in Shelly
function createVirtualSensor() {
// Send a POST request to create a virtual sensor
let url = `http://${shelly_ip}/rpc/shelly.add_virtual_device`;
let data = {
"name": "Heat Energy Sensor",
"device_type": "sensor",
"sensor_type": "temperature", // Use a sensor type that makes sense, like temperature for display purposes
};
let response = HTTP.post(url, JSON.stringify(data));
if (response.status_code === 200) {
console.log("Virtual sensor created successfully!");
} else {
console.log("Failed to create virtual sensor. Status Code: " + response.status_code);
}
}
// Function to update the virtual sensor with the calculated heat energy
function updateVirtualSensor(heatEnergy) {
// Send a POST request to update the virtual sensor with the heat energy value
let url = `http://${shelly_ip}/rpc/shelly.set_virtual_sensor_value`;
let data = {
"sensor_id": 0, // Virtual sensor ID (this might need to be adjusted based on your device)
"value": heatEnergy,
};
let response = HTTP.post(url, JSON.stringify(data));
if (response.status_code === 200) {
console.log("Virtual sensor updated successfully with heat energy: " + heatEnergy + " Watts");
} else {
console.log("Failed to update virtual sensor. Status Code: " + response.status_code);
}
}
// Main function to fetch temperatures, calculate heat, and update virtual sensor
function main() {
// Fetch the supply and return temperature from the Shelly device (using the correct sensor keys)
let temperatureSupply = getTemperature("temperature:101"); // Supply temperature (sensor 101)
let temperatureReturn = getTemperature("temperature:100"); // Return temperature (sensor 100)
// Ensure both temperatures are available
if (temperatureSupply !== null && temperatureReturn !== null) {
// Calculate the heat energy
let heatEnergy = calculateHeatEnergy(temperatureSupply, temperatureReturn);
// Create the virtual sensor if it does not exist
createVirtualSensor();
// Update the virtual sensor with the calculated heat energy
updateVirtualSensor(heatEnergy);
// Optionally, you can send this value to a virtual sensor or display it in your system
console.log("Calculated Heat Energy: " + heatEnergy + " Watts");
} else {
console.log("Unable to fetch both temperatures for heat calculation.");
}
}
// Run the main function
main();
Alles anzeigen
Die Antwort die vom Shelly PM und Addon beim GetStatus kommt ist diese:
Ich benötige tC von Temperature100 und Temperature101
{"ble":{},"cloud":{"connected":true},"input:0":{"id":0,"state":false},"mqtt":{"connected":false},"script:1":{"id":1,"running":false,"mem_free":25200,"errors":["syntax_error"]},"switch:0":{"id":0, "source":"init", "output":true, "apower":298.0, "voltage":226.8, "current":1.659, "aenergy":{"total":30090.281,"by_minute":[4949.144,4946.614,4954.626],"minute_ts":1734438060},"temperature":{"tC":41.6, "tF":106.9}},"sys":{"mac":"10061CCCC718","restart_required":false,"time":"13:21","unixtime":1734438104,"uptime":238933,"ram_size":246844,"ram_free":139580,"fs_size":458752,"fs_free":126976,"cfg_rev":18,"kvs_rev":0,"schedule_rev":0,"webhook_rev":0,"available_updates":{"stable":{"version":"1.4.4"}},"reset_reason":3},"temperature:100":{"id": 100,"tC":26.9, "tF":80.4},"temperature:101":{"id": 101,"tC":24.7, "tF":76.4},"wifi":{"sta_ip":"192.168.0.5","status":"got ip","ssid":"Google_Truck","rssi":-65},"ws":{"connected":false}}
Zum Schluss wäre noch das Tüpfelchen auf dem I wenn ich noch Berechnen und Anzeigen lassen kann die Erzeugte Wärmeenergie in W / die aufgenommene Leistung in W vom Shelly PM das wäre dann Der COP, also die Leistungszahl der Wärmepumpe.
Ich bedanke mich jetzt schon recht herzlich demjenigen der sich meinem Problem annehmen kann.
flotschi