This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm that you accept these cookies being set.

Script for changing and adapting the data type of objects
#1
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)

Attached Files
.lua   Automatische anpassung der Datentypen.lua (Size: 7.5 KB / Downloads: 5)
Reply


Forum Jump: