Hello LogicMachine Forum,
i have create a Script that changing and adapting the data types of all objects. Its a great time saver for me, so i want to share it with you. I hope you enjoy it.
The only Problem is, i write this script in german, may you have to change it a little bit.
Please comment if it works for you or if you have suggestions for improvement
i have create a Script that changing and adapting the data types of all objects. Its a great time saver for me, so i want to share it with you. I hope you enjoy it.
The only Problem is, i write this script in german, may you have to change it a little bit.
Please comment if it works for you or if you have suggestions for improvement
Code:
--[[Script zum automatischen Anpassen der Gruppenadressen -- Version 4.3
Der Script wird als zyklischer Script gestartet und deaktiviert sich nach einem Durchlauf selbst.
Datentypen die Angepasst werden sollen
Von: ]]
Datentyp1 = 1 --bool
Datentyp2 = 3 --no Control
Datentyp3 = 5 --1Byte
Datentyp4 = 9 --2Byte
--Nach:
Datentypneu1 = 1001 --schalten
Datentypneu2 = 3007 --dimmen
Datentypneu3 = 5001 --prozent
Datentypneu4 = 9 --2Byte Gleitkomma
ausnahme1 = 'szen' --Ausnahmen für die Umwandlung (alles was im Namen szen enthält z.B. "Szenennebenstelle")
ausnahme2 = 'Szen'
ausnahme3 = 'art%s*seq' --Ausnahmen für die Umwandlung (alles was im Namen art Seq enthält z.B. "Start Sequenz")
ausnahme4 = 'art%s*Seq'
ausnahme5 = 'etriebs%s*mod' --Ausnahmen für die Umwandlung (alles was im Namen art etriebs mod enthält z.B. "Heizung Betriebsmodus")
ausnahme6 = 'etriebs%s*Mod'
ausnahme7 = 'modus' --Ausnahmen für die Umwandlung (alles was im Namen art etriebs modus enthält z.B. "Lüftung - Modus 1")
ausnahme8 = 'Modus'
ausnahme9 = '%s*mode'
ausnahme10 = '%s*Mode'
ausnahme11 = 'etrieb' --Ausnahmen für die Umwandlung (alles was im Namen etrieb enthält z.B. "Heizung Betriebvorwahl")
temp1 = 'temp' --Formatanpassung Temperatur (alles was im Namen temp enthält z.B. "Aussentemperatur" wird die Einheit "°C" angefuegt)
temp2 = 'Temp' --Formatanpassung Temperatur
wind1 = 'windgesch' --Formatanpassung Windgeschwindigkeit (alles was im Namen windgesch enthält z.B. "Windgeschwindigkeit" wird die Einheit "m/s" angefuegt)
wind2 = 'Windgesch' --Formatanpassung Windgeschwindigkeit
hell1 = 'helligke' --Formatanpassung Helligkeit (alles was im Namen helligke enthält z.B. "Helligkeit Aussen" wird die Einheit "lux" angefuegt)
hell2 = 'Helligke' --Formatanpassung Helligkeit
--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Ab hier nichts mehr Verändern!
-- by Simon Epp
--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
--##############################################################################################################
--Datenanpassung
--##############################################################################################################
angepassteobjekte = 0
durchlauf = 1
--++++++++++++++++++++++++++++++
--Suchen der Objekte
--++++++++++++++++++++++++++++++
tabelle1 = grp.dpt(Datentyp1,true)
tabelle2 = grp.dpt(Datentyp2,true)
tabelle3 = grp.dpt(Datentyp3,true)
tabelle4 = grp.dpt(Datentyp4,true)
anzahl1 = table.maxn(tabelle1)
anzahl2 = table.maxn(tabelle2)
anzahl3 = table.maxn(tabelle3)
anzahl4 = table.maxn(tabelle4)
repeat --Wiederholen bis alle Datentypen angepasst wurden.
--+++++++++++++++++++++++++++++++++++++++++++++++++++++++
--Auswahl der Datentypen die angepasst werden sollen
--+++++++++++++++++++++++++++++++++++++++++++++++++++++++
if (anzahl1 > 0) then
tabelleadressen = tabelle1
datentypneu = Datentypneu1
anzahl = anzahl1
anzahl1 = 0
goto Datenformate
else
if (anzahl2 > 0) then
tabelleadressen = tabelle2
datentypneu = Datentypneu2
anzahl = anzahl2
anzahl2 = 0
goto Datenformate
else
if (anzahl3 > 0) then
tabelleadressen = tabelle3
datentypneu = Datentypneu3
anzahl = anzahl3
anzahl3 = 0
goto Datenformate
else
if (anzahl4 > 0) then
tabelleadressen = tabelle4
datentypneu = Datentypneu4
anzahl = anzahl4
anzahl4 = 0
goto Datenformate
else
storage.set('Automatisch_angepasste_Objekte',angepassteobjekte)
durchlauf = 0
goto Endedatenanpassung
end
end
end
end
--+++++++++++++++++++++++++++++++++++++++++++++
--Datenformate
--+++++++++++++++++++++++++++++++++++++++++++++
::Datenformate::
repeat
alteadresse = tabelleadressen[anzahl].address --Holen der bestehenden Gruppenadressen.
formatstandart = {
datatype = datentypneu,
address = alteadresse,
comment = 'Datentyp automatisch angepasst'
}
formattemperatur = {
datatype = 9001,
address = alteadresse,
units = ' °C',
comment = 'Datentyp automatisch angepasst, Einheit automatisch ergaenzt.'
}
formathelligkeit = {
datatype = datentypneu,
address = alteadresse,
units = ' lux',
comment = 'Datentyp automatisch angepasst, Einheit automatisch ergaenzt.'
}
formatwindgeschwindigkeit = {
datatype = datentypneu,
address = alteadresse,
units = ' m/s',
comment = 'Datentyp automatisch angepasst, Einheit automatisch ergaenzt.'
}
--++++++++++++++++++++++++++++++++++++++++++
--Überprüfen der Ausnahmen
--++++++++++++++++++++++++++++++++++++++++++
a1 = string.find(tabelleadressen[anzahl].name,ausnahme1)
a2 = string.find(tabelleadressen[anzahl].name,ausnahme2)
a3 = string.find(tabelleadressen[anzahl].name,ausnahme3)
a4 = string.find(tabelleadressen[anzahl].name,ausnahme4)
a5 = string.find(tabelleadressen[anzahl].name,ausnahme5)
a6 = string.find(tabelleadressen[anzahl].name,ausnahme6)
a7 = string.find(tabelleadressen[anzahl].name,ausnahme7)
a8 = string.find(tabelleadressen[anzahl].name,ausnahme8)
a9 = string.find(tabelleadressen[anzahl].name,ausnahme9)
a10 = string.find(tabelleadressen[anzahl].name,ausnahme10)
a11 = string.find(tabelleadressen[anzahl].name,ausnahme11)
if ( a1 == nil and a2 == nil and a3 == nil and a4 == nil and a5 == nil and a6 == nil and a7 == nil and a8 == nil and a9 == nil and a10 == nil and a11 == nil )then
anpassung = true
else
anpassung = false
end
--++++++++++++++++++++++++++++++++++++++++++
--Überprüfen der Formate
--++++++++++++++++++++++++++++++++++++++++++
ft1 = string.find(tabelleadressen[anzahl].name,temp1)
ft2 = string.find(tabelleadressen[anzahl].name,temp2)
fh1 = string.find(tabelleadressen[anzahl].name,hell1)
fh2 = string.find(tabelleadressen[anzahl].name,hell2)
fw1 = string.find(tabelleadressen[anzahl].name,wind1)
fw2 = string.find(tabelleadressen[anzahl].name,wind2)
if ((ft1 ~= nil or ft2 ~= nil) and datentypneu == Datentypneu4) then
format = formattemperatur
else
if ((fh1 ~= nil or fh2 ~= nil) and datentypneu == Datentypneu4) then
format = formathelligkeit
else
if ((fw1 ~= nil or fw2 ~= nil) and datentypneu == Datentypneu4) then
format = formatwindgeschwindigkeit
else
format = formatstandart
end
end
end
--++++++++++++++++++++++++++++++++++++++++++++
--Anpassung
--++++++++++++++++++++++++++++++++++++++++++++
if anpassung then
grp.create(format)--Anpassung der Datentypen nach dem gewählten Format.
anzahl = anzahl -1
angepassteobjekte = angepassteobjekte +1
else
anzahl = anzahl -1
angepassteobjekte = angepassteobjekte +1
end
until (anzahl == 0)
::Endedatenanpassung::
until (durchlauf == 0)
--######################################################################################################
--Datenanpassung Ende
--######################################################################################################
script.disable(_SCRIPTNAME)