Scene Wallplug energie dan Rolo runter

Hallo Michi,

ich habe die Klammer nur in Anführungszeichen gesetzt um klarzumachen, dass da nur eine öffende Klammer hingehört! :wink:

Zeile 22 sollte in meinem Skript so aussehen:
elseif (tonumber(getValue(449, "power")) <= 5) then

Gruß,

CD

Curis_Digitalis
Die Scene schaltet die Variable nicht.
Schau mal in Debug.
Der Rollo fährt zwar runter und dann gleich noch mal runter.
Und die Fehlermeldung kommt, die Klammer ist drin.

1-1.png

Ich gebe ja zu, dass ich das hier gerade so zwischen Suppe und Kartoffeln mache und deshalb einen Fehler rausbügel um den nächsten reinzumachen, aber der Bock den ich jetzt geschossen habe sollte Dir eigentlich auch selbst auffallen!

Schau mal in Zeile 9 nach, den Value gilt er sich ja ohne Fehlermeldung. Kurz, in Zeile 22 fehlt fibaro:

fibaro:getValue sollte es heißen

Wie kann der Rollo zwei mal runterfahren?
Setvalue 100 ist das selbe wie close.

Ok danke erst mal an euch werde morgen probieren.

Hoggle wie reden jetzt von der Scene die Curis_Digitalis geschrieben hat.
Da ist eine Zeit drin.
Nur zur Info

Um 21:31 Uhr hast Du geschrieben, die Rollis würden zwei mal runterfahren.
Da es unklar ist, was das genau heißt, habe ich nachgefragt.
Schön, wenn es sich erledigt hat.

Hallo Michi,

damit meine Szene funktioniert musst Du vorher eine globale Variable mit dem Namen RolloStatus anlegen und der Wert 0 zuweisen. Existiert diese nicht, wird die Bedingung ( globalstatus == "0" ) bzw. ( globalstatus == "1" ) natürlich nie erfüllt.

Versuche mal den Lua Code zu “lesen”. Wie ein Buch von oben nach unten. Ich habe meine Szene noch ein wenig kommentiert, vielleicht hilft Dir das Lua besser zu verstehen.

--[[
%% properties
449 power
%% globals
--]]

local globalstatus = fibaro:getGlobal("RolloStatus") 	-- Auslesen der globalen Variable RolloStatus 
local TimeOfDay = fibaro:getGlobal("TimeOfDay") 		-- Auslesen der globalen Variable TimeOfDay 
local power = tonumber(fibaro:getValue(449, "power"))	-- Den Verbrauchswert des Wallplugs in eine Zahl wandeln

if ((TimeOfDay == "Morning") or -- Wenn TimeOfDay Morning
	(TimeOfDay == "Day") or 	-- oder Day
	(TimeOfDay == "Evening")) 	-- oder Evening
then 							-- dann
	if ( power > 100 ) and ( globalstatus == "0" )	-- Wenn Verbauch größer 100 Watt UND RolloStatus = 0 (also oben)
		then										-- dann
			fibaro:call(444, "setValue", "100");	-- Fahre Rollo 444 auf 100%
			fibaro:call(394, "setValue", "100");	-- Fahre Rollo 444 auf 100%
			fibaro:call(396, "setValue", "100");	-- Fahre Rollo 444 auf 100%
			fibaro:setGlobal("RolloStatus","1");	-- Setze die globale Variable RolloStatus auf 1 
			
													-- Jetzt kommt eine Sonst-Wenn-Abfrage
													-- Wenn die Bedingungen in Zeile 15 nicht zutreffen werden diese
	elseif (power) <= 5 and ( globalstatus == "1" )	-- Wenn Verbrauch kleiner 5 Watt und globale Variable auf 0 (also unten)
		then										-- dann
			fibaro:call(444, "setValue", "0");		-- Fahre Rollo 444 auf 100%
			fibaro:call(394, "setValue", "0");		-- Fahre Rollo 444 auf 100%
			fibaro:call(396, "setValue", "0");		-- Fahre Rollo 444 auf 100%
			fibaro:setGlobal("RolloStatus","0")		-- Setze die globale Variable RolloStatus auf 0 
	end												-- Ende der inneren Wenn-Abfrage
end													-- Ende der äußeren Wenn-Abfrage

Es wird also nur eine Aktion ausgeführt, wenn die globale Variable existiert und den Wert 1 oder 0 hat.

Gruß
Neospin

Hallo Stefan,

benimm dich diesmal.
du hast hier unter anderem mit Hoggle und Neospin perfekte Hilfe.
Danke erstmal an euch beide für den Support hier!
Nimm es nicht als selbstverständlich das Leute eine maßgeschneiderte Lösung für dich bauen. manchmal muss man auch selbst den Kopf einschalten bevor man rummotzt.

Guten morgen.
Neospin klingt irgendwie logisch alles.
Ich habe gestern schon eine GV angelegt mit den Namen Rollostatus Wert 0 und Wert 1, die Scene ist nicht angelaufen.
Habe jetzt in der GV den Wert ersetzt durch globalstatus 0 und globalstatus 1.
Geht auch nicht´s.
Die Steckdose zieht Saft schau auf den Bild.
Habe jetzt mal die % des runter und rauffahren geändert also müsste der Rollo wenigsten`s anfahren in einer Richtung macht er nicht.
Liegt der Fehler bei mir, ich weis es nicht.

–[[
%% properties
449 power
%% globals
–]]

local globalstatus = fibaro:getGlobal(“RolloStatus”) – Auslesen der globalen Variable RolloStatus
local TimeOfDay = fibaro:getGlobal(“TimeOfDay”) – Auslesen der globalen Variable TimeOfDay
local power = tonumber(fibaro:getValue(449, “power”)) – Den Verbrauchswert des Wallplugs in eine Zahl wandeln

if ((TimeOfDay == “Morning”) or – Wenn TimeOfDay Morning
(TimeOfDay == “Day”) or – oder Day
(TimeOfDay == “Evening”)) – oder Evening
then – dann
if ( power > 100 ) and ( globalstatus == “0” ) – Wenn Verbauch größer 100 Watt UND RolloStatus = 0 (also oben)
then – dann
fibaro:call(444, “setValue”, “40”); – Fahre Rollo 444 auf 100%
fibaro:call(394, “setValue”, “40”); – Fahre Rollo 444 auf 100%
fibaro:call(396, “setValue”, “40”); – Fahre Rollo 444 auf 100%
fibaro:setGlobal(“RolloStatus”,“1”); – Setze die globale Variable RolloStatus auf 1

												-- Jetzt kommt eine Sonst-Wenn-Abfrage
												-- Wenn die Bedingungen in Zeile 15 nicht zutreffen werden diese
elseif (power) &lt;= 5 and ( globalstatus == "1" )	-- Wenn Verbrauch kleiner 5 Watt und globale Variable auf 0 (also unten)
	then										-- dann
		fibaro:call(444, "setValue", "20");		-- Fahre Rollo 444 auf 100%
		fibaro:call(394, "setValue", "20");		-- Fahre Rollo 444 auf 100%
		fibaro:call(396, "setValue", "20");		-- Fahre Rollo 444 auf 100%
		fibaro:setGlobal("RolloStatus","0")		-- Setze die globale Variable RolloStatus auf 0 
end												-- Ende der inneren Wenn-Abfrage

end – Ende der äußeren Wenn-Abfrage

1-2.png

2-2.png

Hallo Michi,

der Wert der Globalen Variable dafür die eine 0 oder eine 1 sein. Also nicht noch globalstatus dazu schreiben.

Gruß
Neospin

Hatte ich auch schon

Hallo Michi,

ich habe mir die Mühe gemacht, Dir eine Szene dafür zu schreiben. Ich erwarte keine Lobeshymnen, aber ein wenig Demut würde Dir mal ganz gut tun.

Es gibt keinerlei Garantien, dass eine blind geschriebene und auf Annahmen basierende Szene bei Dir auf Anhieb und ohne Einschalten des eigenen Denkapparats funktioniert. Ich helfe gern, aber ohne ein Mindestmaß an Eigeninitiative wird dieser Thread noch 100 weitere Beiträge bekommen. Und zwar ohne am Ende erfolgreich zu sein.

Ein Tipp von mir: Beschäftige Dich mit Blockszenen. Baue Dir dort etwas zusammen und lass Dir daraus Lua Code generieren. Dann verstehst Du die Zusammenhänge vielleicht.

Gruß
Bastian

Erst mal danke für deine Hilfe Bastian.
Ich mache schon weit 2 Wochen mit der Scene rum Blockscene die dann umgewandelt in LUA, dann verändert usw…
aber ich bringe die nicht hin, Rollo fahren zwar aber nicht wie sie sollten.
Deine Scene ist mehr wie super geschrieben, dafür möchte ich dir noch mal ein großes Lob geben und auch für die Zeit,
was du dich für mir nimmst danke.
Die Variable stimmt die hatte ich gestern schon drin nur ist die Scene nicht angelaufen.
Variable steht auf 0, Rollo sind oben, die % der Scene für das Herunterfahren und das Auffahren habe ich so verändert das sich was tun sollte.
Suche auch schon seit heute früh den Fehler finde ihn nicht.
Beamer geht an, die Steckdose hat 180Watt die Variable steht auf 0 .
Alles richtig aber springt nicht an.
Habe den HC neu gestartet geht auch nicht.
Wenn ich die Scene lese müsste sich aber was tun.
Alle Voraussetzungen für den Start der Scene passen.

Hallo Michi,

erstelle bitte eine neue Szene mit folgendem Skript, schalte den Beamer ein führe diese neue Szene einmal aus. Ein Screenshot von der Ausgabe dazu. So kommen wir am besten voran.

--[[
%% properties
%% globals
--]]

local globalstatus = fibaro:getGlobal("RolloStatus") 	-- Auslesen der globalen Variable RolloStatus 
local TimeOfDay = fibaro:getGlobal("TimeOfDay") 		-- Auslesen der globalen Variable TimeOfDay 
local power = tonumber(fibaro:getValue(449, "power"))	-- Den Verbrauchswert des Wallplugs in eine Zahl wandeln

fibaro:debug("RolloStatus: "..globalstatus)
fibaro:debug("TimeOfDay: "..TimeOfDay)
fibaro:debug("Power: "..power)

Gruß
Bastian

Weis wo der Fehler liegt :).
Also ich habe die GV mal rausgeschmissen.
Habe an der Steckdose einen Fön angeschlossen. (ist nicht gut wenn der Beamer die Leinwand immer ein und ausgeschaltet wird).
Angemacht und die Rollo fahren runter ausgemacht und die fahren rauf.
Der Fön hat ja nur ein und aus Strom.
Jetzt stehe ich auf den Schlauch so wie du die GV Eingebungen hast, kann ich nicht.
Darum bitte ich dich jetzt kannst du die reinschreiben , müsste aber anders sein wie das letzte mal da war irgendwo ein Fehler drin
Hier mal die Scene so läuft die schon mal nur die GV fehlt jetzt. Müsste rein
Du bist richtig gut danke

–[[
%% properties
449 power
%% globals
–]]

local TimeOfDay = fibaro:getGlobal(“TimeOfDay”) – Auslesen der globalen Variable TimeOfDay
local power = tonumber(fibaro:getValue(449, “power”)) – Den Verbrauchswert des Wallplugs in eine Zahl wandeln

if ((TimeOfDay == “Morning”) or – Wenn TimeOfDay Morning
(TimeOfDay == “Day”) or – oder Day
(TimeOfDay == “Evening”)) – oder Evening
then – dann
if ( power > 100 ) – Wenn Verbauch größer 100 Watt UND RolloStatus = 0 (also oben)
then – dann
fibaro:call(444, “setValue”, “30”); – Fahre Rollo 444 auf 100%
fibaro:call(394, “setValue”, “30”); – Fahre Rollo 444 auf 100%
fibaro:call(396, “setValue”, “30”); – Fahre Rollo 444 auf 100%
– Jetzt kommt eine Sonst-Wenn-Abfrage
– Wenn die Bedingungen in Zeile 15 nicht zutreffen werden diese
elseif (power) <= 3 – Wenn Verbrauch kleiner 3 Watt und globale Variable auf 0 (also unten)
then – dann
fibaro:call(444, “setValue”, “100”); – Fahre Rollo 444 auf 100%
fibaro:call(394, “setValue”, “100”); – Fahre Rollo 444 auf 100%
fibaro:call(396, “setValue”, “100”); – Fahre Rollo 444 auf 100%

end												-- Ende der inneren Wenn-Abfrage

end – Ende der äußeren Wenn-Abfrage

Das Bild

1-3.png

Hallo Michi,

Deine Gedankensprünge sind für mich nicht nachvollziehbar.

Ohne globale Variable läuft die Szene jetzt? Aber mit nicht? Welche Szene? Du springst hier von Szene zu Szene.
So kann ich Dir nicht helfen.

Welche Szene funktioniert jetzt? Poste diese bitte mit der Code Funktion hier im Forum. Im Eingabefenster siehst Du oben drüber ein paar Buttons unter anderem einen auf dem Code steht. Drücke diesen VOR dem einfügen der Szene ins Fenster und DANACH nochmal.

So ist es dann auch leserlich.

Bastian

--[[
%% properties
449 power
%% globals
--]]

local TimeOfDay = fibaro:getGlobal("TimeOfDay") 		-- Auslesen der globalen Variable TimeOfDay 
local power = tonumber(fibaro:getValue(449, "power"))	-- Den Verbrauchswert des Wallplugs in eine Zahl wandeln

if ((TimeOfDay == "Morning") or -- Wenn TimeOfDay Morning
	(TimeOfDay == "Day") or 	-- oder Day
	(TimeOfDay == "Evening")) 	-- oder Evening
then 							-- dann
	if ( power > 100 ) 	-- Wenn Verbauch größer 100 Watt UND RolloStatus = 0 (also oben)
		then										-- dann
			fibaro:call(444, "setValue", "30");	-- Fahre Rollo 444 auf 100%
			fibaro:call(394, "setValue", "30");	-- Fahre Rollo 444 auf 100%
			fibaro:call(396, "setValue", "30");	-- Fahre Rollo 444 auf 100%						
													-- Jetzt kommt eine Sonst-Wenn-Abfrage
													-- Wenn die Bedingungen in Zeile 15 nicht zutreffen werden diese
	elseif (power) <= 3 	-- Wenn Verbrauch kleiner 3 Watt und globale Variable auf 0 (also unten)
		then										-- dann
			fibaro:call(444, "setValue", "100");		-- Fahre Rollo 444 auf 100%
			fibaro:call(394, "setValue", "100");		-- Fahre Rollo 444 auf 100%
			fibaro:call(396, "setValue", "100");		-- Fahre Rollo 444 auf 100%
				
					
	end												-- Ende der inneren Wenn-Abfrage
end	                                                -- Ende der äußeren Wenn-Abfrage

Die geht :slight_smile: ist aber die GV nicht mehr drin die ich dringend brauche.