LogicMachine Forum
Script for changing and adapting the data type of objects - Printable Version

+- LogicMachine Forum (https://forum.logicmachine.net)
+-- Forum: LogicMachine eco-system (https://forum.logicmachine.net/forumdisplay.php?fid=1)
+--- Forum: Scripting (https://forum.logicmachine.net/forumdisplay.php?fid=8)
+--- Thread: Script for changing and adapting the data type of objects (/showthread.php?tid=3198)



Script for changing and adapting the data type of objects - epps - 27.02.2021

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




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)