def precitajJsonFile(filename):
        try:
            with open(filename) as f:
                return json.load(f)

        except:
            log.exception("EXCEPTION!")
예제 #2
0
    def __init__(self, sprava):
        try:

            self.sprava = sprava  #sprava je v tomto formate: E0H0M020E050D0j31050C040f2h1B1 jedna hodnota ma velkost 2
            #najprv premen kodovane dataVSprave 'E0H0M0' na list hodnot ktore zastupuju (index v ZP.CODE) : [23, 45, 15]
            print("sprava:", sprava)
            self.spravaL = [
                ZP.CODE.index(sprava[i:i + 2])
                for i in range(0, len(sprava), 2)
            ]

            self.dlzkaSpravy = self.spravaL[0]
            self.casOdosielania = self.spravaL[
                1:
                7]  # list vo formate [19, 23, 12, 32,43,23] = [rok, mesiac, den, hodina, minuta, sekunda]
            #PRVE TRI POLIA:
            self.zastupenie = list(
                vseobecne.ConvertFromIntTo.binarkaSTR(
                    self.spravaL[7]))  #[0, 1, 1, 1, 0, 0, 0, 1] 8bitov

            #DATA:
            self.listHodnot = self.__listZoradenychHodnot(self.spravaL[8:])
            self.intervalMerTep, self.intervalMerGps, self.intervalInfTep, self.intervalInfGps, \
            self.tolerLow, self.tolerHigh, self.onOffAlarmPark, self.aktBoxy = self.listHodnot

        except:
            log.exception("EXCEPTION!")
예제 #3
0
    def nastavenia(intervalMerTep = '', intervalMerGps = '', intervalInfTep = '', intervalInfGps = '', \
        tolerLow = '', tolerHigh = '', onOffAlarmPark = '', aktBoxy = ''):
        try:
            #mozne intervaly su v ZP.MOZNEIntervalySprav, tolerancie su teplota, onoff su True, False, wifi meno heslo je ("meno", "heslo")
            intervalMerTep = vseobecne.ConvertToCODEFrom.intervalINT(
                intervalMerTep) if intervalMerTep != '' else ''
            intervalMerGps = vseobecne.ConvertToCODEFrom.intervalINT(
                intervalMerGps) if intervalMerGps != '' else ''
            intervalInfTep = vseobecne.ConvertToCODEFrom.intervalINT(
                intervalInfTep) if intervalInfTep != '' else ''
            intervalInfGps = vseobecne.ConvertToCODEFrom.intervalINT(
                intervalInfGps) if intervalInfGps != '' else ''
            tolerLow = vseobecne.ConvertToCODEFrom.teplotaINT(
                tolerLow) if tolerLow != '' else ''
            tolerHigh = vseobecne.ConvertToCODEFrom.teplotaINT(
                tolerHigh) if tolerHigh != '' else ''
            onOffAlarmPark = vseobecne.ConvertToCODEFrom.binarkaSTR(
                onOffAlarmPark
            ) if onOffAlarmPark != '' else ''  #reprezentuje on/off
            aktBoxy = vseobecne.ConvertToCODEFrom.binarkaSTR(
                aktBoxy) if aktBoxy != '' else ''  #reprezentuje on/off

            dataTUPLE = (intervalMerTep, intervalMerGps, intervalInfTep, intervalInfGps, \
            tolerLow, tolerHigh, onOffAlarmPark, aktBoxy)
            #tuple ktory obsahuje CODE objekty v poradi akom budu v sprave
            zastupenie = Zabal.__zastupenie(dataTUPLE)
            dlzkaDat = Zabal.__dlzkaDat(dataTUPLE)
            sprava = reduce(lambda x, y: x + y, dataTUPLE)

            return dlzkaDat, zastupenie, sprava
            #VRATI spravu vo formate b'sd131fsdfas', zastupenie b'x\034', dlzkudat ako int 23

        except:
            log.exception("EXCEPTION!")
예제 #4
0
    def vysledky(tv_snz1 = '',tv_snz2 = '',tv_snz3 = '', tv_snz4 = '', tv_snz5 = '', tv_snz6 = '', \
      tv_snzVonkajsi = '',  tv_snzRPI = '', tv_snzWTPI = '', senzorySNezdrTeplotami = '', senzorySOscilTeplotami = '',\
      senzorySoZasekTeplotami = '', gps_suradnice = ''):
        try:
            #tv_snz: input = (teplota, indexTepelny) -> 2B CODE
            #gps_suradnice: input = (altitude, longitude) -> velke cislo v jednoduchom formate: b'123.45,56.423435')
            gps_suradnice = (
                str(gps_suradnice[0]) + "," + str(gps_suradnice[1])
            ).encode(
            ) if gps_suradnice != '' else ''  #jednoduchy format b'123.45,56.423435'

            dataTUPLE = (\
             vseobecne.ConvertToCODEFrom.tepInd(tv_snz1),\
             vseobecne.ConvertToCODEFrom.tepInd(tv_snz2),\
             vseobecne.ConvertToCODEFrom.tepInd(tv_snz3),\
             vseobecne.ConvertToCODEFrom.tepInd(tv_snz4),\
             vseobecne.ConvertToCODEFrom.tepInd(tv_snz5),\
             vseobecne.ConvertToCODEFrom.tepInd(tv_snz6),\
             vseobecne.ConvertToCODEFrom.tepInd(tv_snzVonkajsi),\
             vseobecne.ConvertToCODEFrom.tepInd(tv_snzRPI),\
             vseobecne.ConvertToCODEFrom.tepInd(tv_snzWTPI),\
             vseobecne.ConvertToCODEFrom.binarkaSTR(senzorySNezdrTeplotami) if senzorySNezdrTeplotami != '' else '',\
             vseobecne.ConvertToCODEFrom.binarkaSTR(senzorySOscilTeplotami) if senzorySOscilTeplotami != '' else '',\
             vseobecne.ConvertToCODEFrom.binarkaSTR(senzorySoZasekTeplotami) if senzorySoZasekTeplotami != '' else '',\
             gps_suradnice)
            zastupenie = Zabal.__zastupenie(
                dataTUPLE[:8]) + Zabal.__zastupenie(dataTUPLE[8:])
            dlzkaDat = Zabal.__dlzkaDat(dataTUPLE)
            sprava = reduce(lambda x, y: x + y, dataTUPLE)
            return dlzkaDat, zastupenie, sprava

        except:
            log.exception("EXCEPTION!")
    def prepisJsonFile(slovnik, filename):
        try:
            with open(filename, "w") as f:
                json.dump(slovnik, f, indent=2, sort_keys=True)

        except:
            log.exception("EXCEPTION!")
예제 #6
0
    def zoradDoZostavV(self, vlhkosti):
        try:
            #input = [23.4,23.4,12.5,0.4]
            if len(vlhkosti) == 1:
                return [[vlhkosti[0]], vlhkosti[0]]
            else:
                #teraz ich chcem posortirovat do skupin podla velkosti teploty:
                skupiny = [[vlhkosti[0]]]
                priemerySkupin = [vlhkosti[0]]
                for ixtep in range(
                        1, len(vlhkosti)):  #okrem prvej lebo ta je uz tam
                    for ixprm in range(len(
                            priemerySkupin)):  #tento list sa postupne zvacsuje
                        #ak je teplota v rozmedzi niektorej skupin tak ju k nej prirad
                        if abs(
                                abs(vlhkosti[ixtep]) -
                                abs(priemerySkupin[ixprm])
                        ) < self.rozptylVlh:  #rozmedzie: [priemer - rozptyl, priemer + rozptyl]
                            skupiny[ixprm].append(vlhkosti[ixtep])
                            break
                        #ak nie je v rozmedzi tak vytvor novu skupinu s tymto clenom
                        elif ixprm == len(
                                priemerySkupin
                        ) - 1:  #posledna iteracia tiez nepresla
                            skupiny.append([vlhkosti[ixtep]])
                    priemerySkupin = Filter.priemerujListy(
                        skupiny
                    )  #vytvor novy priemerovy list za kazdym priradenim vlhkosti

            zostavy = list(zip(skupiny, Filter.priemerujListy(skupiny)))
            return zostavy  #[[[12.3,244,12],PRIEMER],[[13,-23],PRIEMER]]

        except:
            log.exception("EXCEPTION!")
예제 #7
0
    def zoradDoZostavT(self, teploty):
        try:
            #input = [23.4,23.4,12.5,0.4,-200]
            if len(teploty) == 1:
                return [[teploty[0]], teploty[0]]
            else:
                #teraz ich chcem posortirovat do skupin podla velkosti teploty:
                skupiny = [[teploty[0]]]
                priemerySkupin = [teploty[0]]
                for ixtep in range(
                        1, len(teploty)
                ):  #vezmi teplotu po teplote, okrem prvej lebo ta je uz tam
                    for ixprm in range(len(
                            priemerySkupin)):  #tento list sa postupne zvacsuje
                        #ak je teplota v rozmedzi niektorej skupin tak ju k nej prirad
                        if abs(teploty[ixtep] -
                               priemerySkupin[ixprm]) < self.rozptylTep:
                            skupiny[ixprm].append(teploty[ixtep])
                            break
                        #ak nie je v rozmedzi tak vytvor novu skupinu s tymto clenom
                        elif ixprm == len(
                                priemerySkupin
                        ) - 1:  #posledna iteracia tiez nepresla
                            skupiny.append([teploty[ixtep]])
                    priemerySkupin = Filter.priemerujListy(
                        skupiny
                    )  #vytvor novy priemerovy list za kazdym priradenim teploty

            zostavy = list(zip(skupiny, Filter.priemerujListy(skupiny)))
            return zostavy  #[[12.3,244,12],PRIEMER]]

        except:
            log.exception("EXCEPTION!")
예제 #8
0
    def __listZoradenychHodnot(self, dataVSprave):
        #data v Sprave maju format: [19, 23, 12, 32, 43, 23]
        #return funkcie snad nieco taketo: [12,24,24,123456879,35,15,'10001100', '10001100']
        print("dataVSprave", dataVSprave)
        try:
            i = 0  #index velicin
            k = 0  #index spravy
            result = []
            for bit in self.zastupenie:
                if i > 8:  #po 8 bitoch skonci
                    break
                if bit == '1':
                    if i in [0, 1, 2, 3]:  #intervalove veliciny
                        #print ("index je %d k je %d, sprava je %d ", i, k, self.sprava[8:])
                        result.append(self.__vyratajInterval(
                            dataVSprave[k]))  #ostatne IntervalVeliciny
                    elif i in [4, 5]:  #tolerLow, tolerHigh
                        result.append(ZP.TEPLOTY[dataVSprave[k]])
                    elif i in [6]:  #onOffAlarmPark
                        result.append(
                            vseobecne.ConvertFromIntTo.binarkaSTR(
                                dataVSprave[k]))  #
                    elif i in [7]:  #aktBoxy
                        result.append(
                            vseobecne.ConvertFromIntTo.binarkaSTR(
                                dataVSprave[k]))
                    k += 1  #chod na dalsiu hodnotu v sprave
                else:
                    result.append(None)
                i += 1
            return result  #snad nieco taketo: [12,24,24,123456879,35,15,'10001100', '10001100']

        except:
            log.exception("EXCEPTION!")
예제 #9
0
    def gps():
        try:
            Meraj.startuj_GPS()
            Meraj.meraj_GPS()

        except:
            log.exception("EXCEPTION!")
예제 #10
0
def clearStartupTime():
    try:
        skript = "clear_startup_time.sh"
        os.system('bash ' + ZP.MAIN_DIR + skript)

    except:
        log.exception("EXCEPTION!")
예제 #11
0
def startupTime(wittySched):
    try:
        skript = 'set_startupWitty.sh'
        os.system('bash ' + ZP.MAIN_DIR + skript + " " + wittySched)

    except:
        log.exception("EXCEPTION!")
예제 #12
0
def utilities():
    try:
        skript = "utilities.sh"
        return os.popen('bash ' + ZP.MAIN_DIR + skript).readlines()

    except:
        log.exception("EXCEPTION!")
예제 #13
0
def cistyCipshut():
    try:  #funguje len ak bezi thread serialRead()
        #CIPSHT:
        #najprv vymaz queue
        if queueVypni.full():
            queueVypni.get()

        serialPort.write(prikazyNaVypni[1])
        try:
            if queueVypni.get(timeout=4) == 'cipshutOK':
                log.info("AT+CIPSHUT > SHUT OK.")
                return 0
            else:
                log.error(
                    "postup nebol dodrzany alebo sa vyskytla chyba, restartuj internet"
                )
                return 1
        except:
            log.error("Nepodarilo sa.")
            return 1

    except queue.Empty:
        log.exception("serialRead neodpovedal nacas!")
    except:
        log.exception("EXCEPTION!")
예제 #14
0
def systemTimeToRtc():
    try:
        skript = 'systemTimeToRtc.sh'
        os.system('bash ' + ZP.MAIN_DIR + skript)

    except:
        log.exception("EXCEPTION!")
예제 #15
0
    def ofRpi():  #no humidity available for Rpi
        try:
            #spusta sa len raz za cas spolu s WittyPi
            tepRPI = sysfun.getRpiTemperature()
            reSearch = re.search(r'(.*)\'', tepRPI[0][5:])
            if reSearch:
                teplota = int(float(
                    reSearch.group(1)))  #int ak by nahodou nebola ciarka
            else:  #ak sa nejaka somarina precita
                teplota = None
            vlhkost = None
            if teplota != None:
                if int(teplota) not in ZP.TEPLOTY:
                    log.warning("Chybne meranie teploty RPI! Hodnota " +
                                str(teplota) +
                                " nie je realna! Povazujem za None")
                    teplota = None

            with ZP.zhromTep_lock:
                ZP.zhromazdisko_tep['rpi'].append((teplota, vlhkost))
            with ZP.logPerRun_lock:
                ZP.logPerRun.addItem(itemName='rpi',
                                     itemValue=(teplota, vlhkost),
                                     itemPosition=110,
                                     specialType='teplota_a_vlhkost')

        except:
            log.exception("EXCEPTION!")
예제 #16
0
 def vypni_GPS():
     try:
         ser.write(b'AT+CGNSPWR=0\r\n')
         time.sleep(1)
         odpoved = str(ser.read(ser.inWaiting()))
     except:
         log.exception("EXCEPTION!")
    def modifyString(strng, chrcter, indx):
        try:
            strng_list = list(strng)
            strng_list[indx] = chrcter
            return ''.join(strng_list)

        except:
            log.exception("EXCEPTION!")
 def zaokruhli_napoli(teplotu):
     try:
         if teplotu == None:
             return None
         else:
             return round(teplotu * 2) / 2
     except:
         log.exception("EXCEPTION!")
    def vlhkostINT(vlhkost):
        try:
            index = ZP.VLHKOSTI.index(vlhkost)
            assert index < 254
            return ZP.CODE[index]

        except:
            log.exception("EXCEPTION!")
    def teplotaINT(teplota):
        try:
            #(INT) teplota = -40, -25.5, ...., 80
            index = ZP.TEPLOTY.index(teplota)
            assert index < 254
            return ZP.CODE[index]

        except:
            log.exception("EXCEPTION!")
예제 #21
0
 def __init__(self):  #creates logger
     try:
         self.dictNameToValue = {}
         self.dictNameToPosition = {}
         self.hlavicka = []
         self.hodnoty = []
         self.run = True
     except:
         log.exception("EXCEPTION!")
    def intervalINT(cislo):
        try:
            #(INT) cislo = jedno z tych v ZP.MOZNEIntervalySprav
            index = ZP.MOZNEIntervalySprav.index(cislo)
            assert index < 254
            return ZP.CODE[index]
            #vystup CODE je poradie intervalu v ZP.MOZNEIntervalySprav

        except:
            log.exception("EXCEPTION!")
예제 #23
0
    def vyberRepreZostavuV(self, zostavy):
        try:
            repreZostava = zostavy[0]
            for i in zostavy:
                if len(i[0]) >= len(repreZostava[0]):
                    repreZostava = i
            return repreZostava

        except:
            log.exception("EXCEPTION!")
    def tepInd(tv_snz):
        try:
            if tv_snz == '':
                return ''
            else:
                return ConvertToCODEFrom.teplotaINT(
                    tv_snz[0]) + ConvertToCODEFrom.vlhkostINT(tv_snz[1])

        except:
            log.exception("EXCEPTION!")
    def datetimeToList(datetimeobjekt):
        try:
            l1 = datetimeobjekt
            #vytvor list:
            return [
                l1.year - 2000, l1.month, l1.day, l1.hour, l1.minute, l1.second
            ]

        except:
            log.exception("EXCEPTION!")
예제 #26
0
 def print(self):
     try:
         self.__updateLists()
         formatHodnot = ''
         for hod in self.hodnoty:
             formatHodnot += '; ' + hod
         ZP.logVysledky.info(
             formatHodnot)  #log to file using python logging module
     except:
         log.exception("EXCEPTION!")
예제 #27
0
def resetujOdpocetD(
    konfigD, freq
):  #set all values of active tasks to FREQ (6 seconds) so that they all run on the next Main Loop
    try:
        odpocetD = dict()
        for i in ZP.INTERVALOVE_PREMENNE:
            odpocetD[i] = freq if konfigD[i] != 123456789 else None
        return odpocetD

    except:
        log.exception("EXCEPTION!")
 def binarkaSTR(bajtCislo):
     try:
         binarkaSTR = ''
         for i in range(8):
             bit = bajtCislo // int(math.pow(2, (7 - i)))
             if bit == 1:
                 bajtCislo = bajtCislo - int(math.pow(2, (7 - i)))
             binarkaSTR += str(bit)
         return binarkaSTR  #prirodzene poradie bitov, prvy zastupuje hodnotu 128 poslendny 1
     except:
         log.exception("EXCEPTION!")
예제 #29
0
    def __dlzkaDat(data):
        try:
            #toto funguje aj pre data o velkosti 1 a 0
            dlzka = 0
            for i in data:
                if i != '':
                    dlzka += len(i)
            return dlzka
            #vrati int

        except:
            log.exception("EXCEPTION!")
예제 #30
0
    def meraj_GPS():
        try:
            global zhromazdisko_gps

            zhromazdisko_gps.append(Meraj.pull_data_GPS())

            with print_lock:
                print(list(zhromazdisko_gps)[-1])

        #vypni gps:
        except:
            log.exception("EXCEPTION!")