GithubHelp home page GithubHelp logo

Comments (23)

okapi21 avatar okapi21 commented on August 30, 2024 1

Ich habe nur einen Wechselrichter Hoymiles HM -1500.
Die feste IP der Ahoy DTU lautet 192.168.188.47
Grüße Ralf

from ahoy.

okapi21 avatar okapi21 commented on August 30, 2024 1

Vielen Dank für Ihre Mühe und die umfangreiche Anleitung schon mal im Voraus. Werde zeitnah Feedback geben.👍
Grüße Ralf

from ahoy.

lumapu avatar lumapu commented on August 30, 2024 1

ich kenne mich mit Shelly Scripten nicht aus, sieht sehr nach Javascript aus

from ahoy.

Peertje-62 avatar Peertje-62 commented on August 30, 2024

settings
Hope this wil do
regards

from ahoy.

MetaChuh avatar MetaChuh commented on August 30, 2024

hi @okapi21
zusätzlich zu den einstellungen in dem unteren screenshot, musst du den batterie inverter um 23:59 via api oder mqtt restarten.

grund: wenn du nur die internen werte der ahoydtu um mitternacht zurücksetzt, wird sich die dtu die noch nicht zurückgesetzten werte des inverters erneut wieder einlesen (darum auch die uhrzeit 23:59 für den neustart des inverters, damit dieser zu mitternacht vorab bereits auf null ist)

Bildschirmfoto 2024-03-20 um 13 39 45

der api befehl, falls du dies mit cron oder taskplaner machen willst, ist:
curl --header "Content-Type:application/json" --request POST --data '{"auth": "dein_passwort", "cmd": "restart", "id": deine_inverter_id}' "http://deine_ahoydtu_ip/api/ctrl"

bitte ersetze die werte dein_passwort, deine_inverter_id (0 für den ersten inverter), und deine_ahoydtu_ipmit den werten, die für dich zutreffen.

greetings,
metachuh

from ahoy.

okapi21 avatar okapi21 commented on August 30, 2024

Nur mit den oben gezeigten Einstellungen funktioniert es nicht.
Also wie Metachuh schreibt, muss ich den Wechselrichter um 23:59 Uhr zurücksetzen.
Leider bin ich totaler Laie was API Befehle und Programmieren angeht. Gibt es irgendwo eine Schritt für Schritt Anleitung?
Grüße Ralf

from ahoy.

MetaChuh avatar MetaChuh commented on August 30, 2024

dazu müssten wir wissen was du hast.
sonst wissen wir nicht, welche anleitung für dich gilt.

auf was läuft deine steuerung ?
also welches gerät ist zu mitternacht 100% jeden tag an ?

raspberry pi ?
synology ?
mac ?
linux pc ?
windows?

from ahoy.

okapi21 avatar okapi21 commented on August 30, 2024

Ich betreibe den Zenture Solarflow, und es geht darum den reinen Tagesvertrag, zurückzusetzen.
Von den oben aufgeführten Geräten läuft keins Nachts.
Grüße Ralf

from ahoy.

MetaChuh avatar MetaChuh commented on August 30, 2024

Von den oben aufgeführten Geräten läuft keins Nachts.

dann köntest du schauen, ob es in der zendure app eine art timer einstellung gibt, um die dc spannungsversorgung zum inverter um 23:59 kurz zu deaktivieren.

alternative, ohne dem inverter den strom komplett zu nehmen:
hast du zufälligerweise einen shelly plus plug s, shelly pro 3em oder ein anderes shelly pm oder em gerät ab generation 2 ?
weil auf gen2 geräten, könnten wir, zusätzlich zu den normalen shelly funktionen, eigene kleine scripts einspielen.

from ahoy.

okapi21 avatar okapi21 commented on August 30, 2024

Ein Shelly Pro 3em (2 Generation) ist voll in Betrieb (funzt auch super). Ein Skript über Diesen wäre natürlich eine Alternative.
Wie müsste das Shelly Skript aussehen?

from ahoy.

MetaChuh avatar MetaChuh commented on August 30, 2024

Ein Shelly Pro 3em (2 Generation) ist voll in Betrieb (funzt auch super)

perfekt 👍

Wie müsste das Shelly Skript aussehen?

ich werde mal eins basteln und vorab bei mir testen.
shelly user scripts wollte ich schon lange zusätzlich ausprobieren, jetzt gibts einen guten, spezifischen grund.

from ahoy.

okapi21 avatar okapi21 commented on August 30, 2024

Super, und keine Hektik.👍

from ahoy.

MetaChuh avatar MetaChuh commented on August 30, 2024

super, absolut keine hektik ist immer gut 👍

dev info:
im test funktionieren die ersten scripts via shelly bereits einwandfrei.
sowohl einen testserver ansprechen, der eine dtu response simuliert und die kommunikation loggt,
als auch den inverter reell wahlweise via ahoydtu, opendtu, und opendtu-onbattery zu restarten.

derzeit code ich gerade an dem shelly interface modul, damit user dies nicht nur ausführen können, sondern beliebig im lokalen web interface des shelly devices, oder in der shelly cloud, dieses modul jederzeit aktivieren, deaktivieren, oder die uhrzeiten selbst ändern können.

greetings,
metachuh

from ahoy.

MetaChuh avatar MetaChuh commented on August 30, 2024

ein paar zusatzfragen noch:

wieviele inverter hast du, und wieviele davon sind batterie inverter ?
wenn mehr als ein inverter existiert, bitte um die reihenfolge aller inverter und ihrer aufgaben (solar/batterie)
sowie bitte um die interne lan ip (falls möglich fixe ip) deiner ahoydtu.

grund:
die erste version wird vorerst aus zeitgründen nur für dieses spezifische issue gemacht, hat keinen autodetect, und benötigt eine manuelle konfiguration von zumindest der ip der dtu.

from ahoy.

MetaChuh avatar MetaChuh commented on August 30, 2024

@okapi21

hier die erste release inverter mit shelly gen2 via ahoydtu restarten.
inklusive einer ersten schritt für schritt anleitung.

anmerkung:
die screenshots sind von einem shelly plus plug s.
falls die web oberfläche vom pro 3em stark abweicht, könntest du evtl. nachträglich die screenshots ergänzen.


schritt für schritt anleitung:

  1. das modul entweder über den direct download link herunterladen, oder aus dem copy-paste bereich kopieren.
    (bitte das dreieck beim copy paste code anklicken, um den copy-paste bereich sichtbar auszuklappen)

direct download: restart-battery-inverter-via-ahoydtu(meta).mjs.zip

vorschau der modul konfiguration:

// restart-battery-inverter-via-ahoydtu(meta).mjs v0.24.3.22:
// zeitplaner für das neustarten von batterie invertern via shelly script
// (c) 2024 MetaChuh, assigned by lumapu

// ahoydtu und inverter konfiguration:
var dtu_ip =			"192.168.188.47";	// ip der ahoydtu
var dtu_password =		"deinpasswort";		// passwort der ahoydtu
var dtu_inverter_id=		0;			// inverter id (erster inverter=0)
kompletter copy-paste code: restart-battery-inverter-via-ahoydtu(meta).mjs
// restart-battery-inverter-via-ahoydtu(meta).mjs v0.24.3.22:
// zeitplaner für das neustarten von batterie invertern via shelly script
// (c) 2024 MetaChuh, assigned by lumapu

// ahoydtu und inverter konfiguration:
var dtu_ip =			"192.168.188.47";	// ip der ahoydtu
var dtu_password =		"deinpasswort";		// passwort der ahoydtu
var dtu_inverter_id=	0;					// inverter id (erster inverter=0)

// modulbereich:
let CONFIG =
{
	KVS_KEY: "Script-Schedule-" + JSON.stringify(Shelly.getCurrentScriptId()),
	
	// default zeitplan einstellung, jeden tag um 23:59 durchführen (mcron format)
	// zeiten und aktivierung/deaktivierung können nachträglich direkt im shelly web interface, oder in der shelly cloud app verändert werden.
	SCHEDULE_TIMESPEC: "0 59 23 * * *",

	SCHEDULE_ID: -1,
};

// zeitplan aufgabe checken ob bereits vorhanden, wenn nicht, dann neu anlegen:
function create_shelly_schedule()
{
	Shelly.call
	(
		"KVS.Get",
		{
			key: CONFIG.KVS_KEY,
		},
		function (result, error_code, error_message)
		{			
			// zeitplan aufgabe anlegen:
			if (error_code !== 0)
			{
				install_schedule();
				return;
			}
			
			CONFIG.SCHEDULE_ID = result.value;
			
			// zeitplan aufgabe neu anlegen, falls eine vorangegangene aufgabe manuell gelöscht und danach wieder reaktiviert wurde:
			Shelly.call
			(
				"Schedule.List", {},
				function (result)
				{
					let i = 0;
					for (i = 0; i < result.jobs.length; i++)
					{
						if (result.jobs[i].id === CONFIG.SCHEDULE_ID) return;
					}
					install_schedule();
				}
			);
		}
	);
}

// id der zeitplan aufgabe mit abgefragter id im internen key/value storage eintragen:
function save_schedule_id_in_kvs(scheduleId)
{
	Shelly.call
	(
		"KVS.Set",
		{
			key: CONFIG.KVS_KEY,
			value: scheduleId,
		}
	);
}

// zeitplan aufgabe neu anlegen:
function install_schedule()
{
	Shelly.call
	(
		"Schedule.Create",
		{
			enable: true,
			timespec: CONFIG.SCHEDULE_TIMESPEC,
			calls:
			[
				{
					method: "script.eval",
					params:
					{
						id: Shelly.getCurrentScriptId(),
						code: "shelly_meta_task()",
					},
				},
			],
		},
		function (result)
		{
			// zeitplan aufgabe mit result.id im key/value storage eintragen:
			save_schedule_id_in_kvs(result.id);
		}
	);
}

// aufgabe durchführen:
function shelly_meta_task()
{	
	let post_url = "http://" + dtu_ip + "/api/ctrl";
	let post_data = '{"auth": "' + dtu_password + '", "cmd": "restart", "id": ' + dtu_inverter_id + '}';
	let post_content_type = "application/json";
	
	Shelly.call
	(
		"HTTP.POST",
		{
			"url": post_url,
			"body": post_data,
			"content_type": post_content_type,
			"timeout": 5
		}
	);
}

create_shelly_schedule();
  1. das web interface des shelly gen2+ gerätes über http://ip_des_shelly_produktes öffnen (in deinem fall der pro 3em)
    der text ip_des_shelly_produktes ist durch die ip adresse des gerätes zu ersetzen, zb. 192.168.0.50

  2. das scripts menü im shelly web interface anklicken und auf create script klicken

shelly gen2 scriptbereich
  1. das script in das editor feld einfügen, einen namen vergeben, und auf speichern klicken.
    (der name kann nach belieben entweder der dateiname sein, oder ein freier text)
shelly gen2 script einfügen
  1. im bereich ahoydtu und inverter konfiguration die werte dtu_ip dtu_password und dtu_inverter_idbeliebig anpassen, und danach erneut auf speichern klicken.
    anmerkung: wenn das shelly device gerade mit anderen aufgaben beschäftigt ist, wird sich der script editor bereich neu laden, und man muss eventuell die daten erneut eingeben und speichern.
    darum unbedingt die eingaben kontrollieren, bevor man zu schritt 6 weitergeht.

  2. um den editor zu verlassen erneut auf das türkise <> scripts menü klicken.
    dann auf den play button drücken

shelly gen2 script play button

anmerkung: wenn der play button gedrückt wurde, und das script korrekt gestartet werden konnte, erscheint dauerhaft ein pause button

shelly gen2 script play button wurde gedrückt, pause button erscheint
  1. mit klick auf das Schedules menü, in den zeitschaltuhr bereich wechseln.
    hier sollte jetzt restart-battery-inverter-via-ahoydtu(meta).mjsals aufgabe erscheinen und bereits aktiviert sein (schieberegler rechts türkis).
    und der zeitplan in textform erscheinen (standardwert ist At second 0. At minute 59. At hour 23. Every days. Every months. Every weekdays.)
shelly gen2 schedules bereich
  1. optional:
    mit dem scheberegler bei den schedules lasst sich diese aufgabe nach belieben temporär deaktivieren.
    mit einem klick auf die aufgabe restart-battery-inverter-via-ahoydtu(meta).mjs erreicht man das advanced schedule für die zeiteinstellung und kann diese beliebig anpassen.
    in diesem menü kann diese aufgabe auch nach belieben gelöscht, und mit klick auf den play button im shelly script bereich wieder erneut mit den default werten hinzugefügt werden.
shelly gen2 schedules advanced

greetings und viel spaß damit,
metachuh

from ahoy.

MetaChuh avatar MetaChuh commented on August 30, 2024

@lumapu please review this assignment and code for completeness, thx.

from ahoy.

MetaChuh avatar MetaChuh commented on August 30, 2024

ja, sehr js ähnlich bis identisch.

ich sehe dadurch, sowohl für solar einsteiger die keine weiteren devices haben, sowie für power user, die nur eine kleine spezifische funktion schnell für ihre spezifische anwendung brauchen, durchaus potential wegen der möglichkeit, dass user sich ihre geräte selbst anpassen können, entweder durch selbst einlernen, oder durch vorgefertigte scripts, die man bald vermehrt finden kann.

in theorie haben wir bei jedem user mit zumindest einem shelly plus device, einen bis mehrere weitere esp32 zur verfügung, auf denen ohne custom firmware zu flashen bis zu einer kleinen solar und batteriesteuerung ablaufen könnte.

from ahoy.

okapi21 avatar okapi21 commented on August 30, 2024

Hallo, Metachuh
habe alles bis Punkt 7 abgearbeitet

7. mit klick auf das Schedules menü, in den zeitschaltuhr bereich wechseln.
hier sollte jetzt restart-battery-inverter-via-ahoydtu(meta).mjsals aufgabe erscheinen und bereits aktiviert sein (schieberegler rechts türkis).

Bild_1
leider erscheint in Schedules bei mir nichts.
was könnte ich noch ändern?
Grüße Ralf

from ahoy.

MetaChuh avatar MetaChuh commented on August 30, 2024

@okapi21

danke dir für dein feedback.

was könnte ich noch ändern?

derzeit gibt es uns nichts bekanntes und verifiziertes was du ändern könntest, da aus der zugewiesenen dev gruppe keiner einen pro 3em hat, und wir derzeit nur auf plus1pm, plus plug s testen konnten.

frage an unsere community:
hat jemand einen pro 3em und einem anderen gen2 device, der beides verifizieren kann, und ggf die unterschiede und notwendigen änderungen sieht ?

from ahoy.

MetaChuh avatar MetaChuh commented on August 30, 2024

hallo @okapi21 könntest du vom shelly editor bereich einen screenshot oder foto von ganz oben ab zeile 1 machen ?
(dein passwort unkenntlich machen, aber die anführungszeichen sichtbar lassen zur kontrolle)
zeile 1 sollte beinhalten: // restart-battery-inverter-via-ahoydtu(meta).mjs v0.24.3.22:

sowie einen screenshot von ganz unten bis zeile 121 machen ?
zeile 121 sollte beinhalten: create_shelly_schedule();

und kontrollieren, dass das script korrekt läuft und man den pause button sieht (nicht den play button) ?

evtl ist nur beim einfügen eine kleinigkeit passiert.

from ahoy.

MetaChuh avatar MetaChuh commented on August 30, 2024

anmerkungen:

  1. bei der script liste muss nur auf den play button geklickt werden, um das schedule anzulegen.
    der autostart nach reboot schieberegler im scriptbereich kann deaktiviert (grau) bleiben.
    ein zeitgesteuerter start wird nur durch shelly schedules durchgeführt.

  2. wenn das script einmalig korrekt durchgelaufen ist, sieht man im menü Advanced > KVS die zeile Script-Schedule-[nummer] mit einem wert, der 1 sein sollte.
    (siehe screenshot)

Bildschirmfoto 2024-03-24 um 06 58 56

from ahoy.

okapi21 avatar okapi21 commented on August 30, 2024

Hallo Metachuh

könntest du vom shelly editor bereich einen screenshot oder foto von ganz oben ab zeile 1 machen ?
(dein passwort unkenntlich machen, aber die anführungszeichen sichtbar lassen zur kontrolle)

Zeile 1-23
Bild_2
Zeile 23-46
Bild_3
Zeile 47-70
Bild_4
Zeile 71-94
Bild_5
Zeile 95-118
Bild_6
Zeile 118-121
Bild_7

bei der script liste muss nur auf den play button geklickt werden, um das schedule anzulegen.
der autostart nach reboot schieberegler im scriptbereich kann deaktiviert (grau) bleiben

Bild_1

wenn das script einmalig korrekt durchgelaufen ist, sieht man im menü 
Advanced > KVS die zeile Script-Schedule-[nummer] mit einem wert, der 1 sein sollte

Bild_8

Bis hierhin funktioniert alles so wie du es beschreibst nur das Schedules-Menü bleibt leer.
Grüße aus der Oberlausitz
Ralf

`

from ahoy.

RealNBB avatar RealNBB commented on August 30, 2024

Bei mir läuft das Skript leider auch nicht auf einem Shelly PRO 3EM bzw. kein Eintrag wie bereits beschrieben unter Schedules.

Kann es aber sein, dass ein Leerzeichen im Skript in Zeile 8 fehlt?

var dtu_inverter_id = 0;

In diesem Zusammenhang: Bei mehreren WR, die neu gestartet werden sollen, würde es so aussehen oder?

var dtu_inverter_id = 1,2;

from ahoy.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.