Domov
Klimat
Robot
Nevroni
Zmenek
Predstavitev
Motor
Izdelki
Html
Osnove
Napredno
Css
Osnove
Napredno
Javascript
Osnove
Tekst
Grafika
Napredno
Php
Osnove
Json
Podatki
Napredno
Python
Osnove
Jedro
Podatki
Bool
Splet
Uvoz
Napredno
C
Osnove
Tcp
Programi
Uvoz
Napredno
Orodja
PhpMyAdmin
Dokumenti
Sistem
Crontab
Nadgradi
Python Uvoz
Začetek
slovenska_izdaja.py
udp_ukaz.py
lcd_gonilnik.py
bme280_gonilnik.py
navodila.py
#Python Uvoz slovenska_izdaja.py import sys;sys.path.insert(0, '/home/pi/Install/lib/python3.11/site-packages') import pymysql,time,socket,os,threading,json,datetime;from datetime import timedelta ethip4 = os.popen('ifconfig eth0 | grep "inet " | tr -s " " | cut -d " " -f 3').read() wlanip4 = os.popen('ifconfig wlan0 | grep "inet " | tr -s " " | cut -d " " -f 3').read() class pulz: def __init__(self): self.stari_vhod=0;self.stari_izhod=0;self.stari_I=0;self.hist=1 self.k=[0b1000,0b1100,0b0100,0b0110,0b0010,0b0011,0b0001,0b1001] self.korakj=0;self.korakp=0 self.stanje1 = False;self.stanje2 = False;self.stanje3 = False self.stanje=[False,False,False,False] self.cas=[time.time(),time.time(),time.time(),time.time(),time.time(),time.time(),time.time(),time.time(),time.time(),time.time(),time.time(),time.time(),time.time()] def korak(self,pozicija=0,ura=0.001):#koračni motor if type(pozicija)==bool: if pozicija:self.korakp=0 else: self.cas[12] = time.time() if (self.cas[12]-self.cas[11])>=ura: self.cas[11] = self.cas[11] + ura if pozicija>self.korakp: if self.korakj<7:self.korakj=self.korakj+1;self.korakp=self.korakp+1 else: self.korakj=0 elif pozicija
0:self.korakj=self.korakj-1;self.korakp=self.korakp-1 else: self.korakj=7 return self.k[self.korakj]&1<<0,self.k[self.korakj]&1<<1,self.k[self.korakj]&1<<2,self.k[self.korakj]&1<<3,pozicija-self.korakp def krajsaj(self,vh,ura=0.5):#Skrajsaj Pulz self.cas[0]= time.time() if not vh: self.cas[1] = time.time() return vh and not (self.cas[0]-self.cas[1])>=ura def daljsaj(self,vh,ura=0.5):#Daljsaj Pulz self.cas[2] = time.time() if vh: self.stanje2=True if not self.stanje2: self.cas[3] = time.time() if (self.cas[2]-self.cas[3])>=ura: self.stanje2 = False return self.stanje2 def premakni(self,vh,ura3=0.5,ura4=0.5):#Premakni Pulz self.cas[6] = time.time() if vh: self.cas[5] = time.time() if self.cas[6]-self.cas[4]>=ura3: self.stanje3=True else: self.cas[4] = time.time() if self.cas[6]-self.cas[5]>=ura4: self.stanje3 = False return self.stanje3 def ura(self,ura=0.1):#Ekvicasovno self.cas[8] = time.time() if (self.cas[8]-self.cas[7])>=ura: self.cas[7] = self.cas[7] + ura return True else: return False def filter(self,vhod=0,RC=0.2):#filter 1. reda self.cas[10] = time.time(); dt=(self.cas[10]-self.cas[9]);self.cas[9]=self.cas[10] izhod=self.stari_izhod+(vhod-self.stari_izhod)*dt/RC self.stari_izhod=izhod return izhod def histereza(self,vhod=0,ref=0,hi=0.5):#histerezna regulacija if vhod-ref <= self.hist*hi: self.hist=1 return True else: self.hist=-1 return False import numpy as np class nevroni: def __init__(self,f='/dev/shm/utezi',d=3): self.f = f;self.d=d;self.vhod = [] # try: # self.utez=np.load(f+'.npy') # except: self.utez = 2 * np.random.random((self.d, 1)) - 1 self.zgodovina_napak = [] self.seznam_plasti = [] def utezi_nakljucno(self): self.utez = 2 * np.random.random((self.d, 1)) - 1 def utezi_izpis(self): return self.utez.T #def __del__(self): # np.save(self.f,self.utez) def sigmoid(self, x, odvod=False):#aktivacija if odvod == True: return x * (1 - x) return 1 / (1 + np.exp(-x)) def trening(self,vhod=np.array([[0, 1, 0, 0],[0, 1, 1, 0],[0, 0, 0, 0],[1, 0, 0, 1],[1, 1, 1, 1],[1, 0, 1, 1]]), plasti=25000): for plast in range(plasti): self.skrito = self.sigmoid(np.dot(vhod[:,0:self.d], self.utez))#naprej self.napaka = vhod[:,self.d:self.d+1] - self.skrito #nazaj sprememba = self.napaka * self.sigmoid(self.skrito, odvod=True) self.utez += np.dot(vhod[:,0:self.d].T, sprememba) self.zgodovina_napak.append(np.average(np.abs(self.napaka))) self.seznam_plasti.append(plast) def napoved(self, nov_vhod): napoved = self.sigmoid(np.dot(nov_vhod, self.utez)) return napoved #UDP_server konec1=False;pavza=True;zanka_prvic=True;start_prvic=True; tipalo=[];cikli=0;staricas=time.time();zapisi1=[];zapisi=[] gumb_stanje=[0,0,0,0,0,0,0,0,0];parm_stanje=[None,None,None,None,None,None,None,None,None,None] for i in range(0,1206): zapisi.append(0) diagram={"spanje":0.0096,"T":0.025,"kazalec":0,"bool":0,"t":time.time(),"uporabnik":socket.gethostname(),"naslov":"Tehniški Šolski Center Maribor", "d1":"d1","d2":"d2","d3":"d3","d4":"d4","d5":"d5","d6":"d6","a1":"a1","a2":"a2","a3":"a3", "Start":"","Stop":"","Konec":"","odgovor":"","g1":"","g2":"","g3":"","g4":"","g5":"","g6":"","g7":"","g8":"","g9":"", "l1":"l1","l2":"l2","l3":"l3"} def par_sql(min=1): global parm_stanje pb = pymysql.connect(host = "localhost", user = "pi", passwd = "raspberry", db = "test");tabela = pb.cursor() sql = "insert into par(cas,par) values ('%s','%s')"%(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"),json.dumps(parm_stanje)) try: tabela.execute(sql);pb.commit() delta = (datetime.datetime.now()-timedelta(minutes=min)).strftime("%Y-%m-%d %H:%M:%S") sql = "DELETE FROM `par`WHERE cas < '%0s'" % (delta) try: tabela.execute(sql) pb.commit() except: pb.rollback() except: pb.rollback() pb.close() def izris(*argumenti): global pavza,diagram t=time.time()#na koliko casa zapise if (t-diagram.get("t"))>=diagram.get("T"): diagram["bool"]=0;zap=[0,0,0];bool_arg=0;int_arg=0 for argument in argumenti: if type(argument)==bool: bool_arg+=1 if int_arg==0:int_arg=1 zap[0]=zap[0]+argument*(2**(6-bool_arg)) elif type(argument)==int or type(argument)==float: zap[int_arg]=argument;int_arg+=1 diagram["t"] = diagram["t"] + diagram["T"];diagram["bool"]=bool_arg if pavza==True: if diagram["kazalec"]<3*(401): zapisi[diagram["kazalec"]] =int(max(-9,min(zap[0],99))); zapisi[diagram["kazalec"]+1]=int(max(-99,min(zap[1],999))); zapisi[diagram["kazalec"]+2]=int(max(-99,min(zap[2],999))); diagram["kazalec"]=diagram["kazalec"]+3 return True else: diagram["kazalec"]=0 return False else: for i in range(0,1206):zapisi[i]=0 diagram["kazalec"]=0 return False else: return False def konec():#glavna while zanka global konec1,zanka_prvic,cikli if zanka_prvic==True: zanka_prvic=False t=threading.Thread(target=UDP_server);t.start() cikli = cikli + 1;time.sleep(diagram['spanje']) return not konec1 def start(p=0): global pavza,start_prvic;start_prvic=False if p>0: if vhod(p): pavza=True return pavza def stop(p=0): global pavza,start_prvic;start_prvic=False if p>0: if vhod(p): pavza=False return not pavza def gumb(i): #stanje gumba global gumb_stanje if gumb_stanje[i-1]==True: gumb_stanje[i-1]=False;return True else:return False def UDP_server(): global konec1,pavza,gumb_stanje,parm_stanje,cikli,staricas,wlanip4,ethip4 global azimut,naklon,zasuk,diagram server = socket.socket(family=socket.AF_INET, type=socket.SOCK_DGRAM) try: server.bind(('', 20001)) #server.bind(('127.0.0.1', 20001)) while not konec1: server.settimeout(0.1) try: s= server.recvfrom(1024) sprejem=json.loads(s[0].decode()) ukaz=sprejem.get("ukaz") if ukaz=='g': parameter=sprejem.get("parameter") gumb_stanje[int(parameter)-1]=True oddaja=json.dumps({"ukaz":ukaz,"parameter":parameter}) elif ukaz=='p': index=sprejem.get("index") if index is not None: s1=sprejem.get("vrednost") if isinstance(s1,dict):s1['ura']=time.time();s1['izvor']=s[1][0] parm_stanje[index]=s1 oddaja=json.dumps(parm_stanje) elif ukaz=='s': parameter=sprejem.get("parameter") if parameter=='Start':pavza=True if parameter=='Stop':pavza=False if parameter=='Konec':konec1=True;pavza=True; oddaja=json.dumps({"ukaz":ukaz,"parameter":parameter}) elif ukaz=='Status': trenutnicas=time.time();cas=trenutnicas-staricas;staricas=trenutnicas naprava = socket.gethostname() if start():status="Start" else: status="Stop" cikel=cas/cikli*1000;cikli=0; oddaja=json.dumps({"ukaz":ukaz,"cikel":str(cikel),"status":status,"program":sys.argv[0],"naprava":naprava,"wlanip4":wlanip4,"ethip4":ethip4,"parm_stanje":str(parm_stanje)}) elif ukaz=='izris0': zapisi1=zapisi.copy() oddaja=json.dumps({"ukaz":ukaz,"zapisi":zapisi1[0:201]}) elif ukaz=='izris1':oddaja=json.dumps({"ukaz":ukaz,"zapisi":zapisi1[201:402]}) elif ukaz=='izris2':oddaja=json.dumps({"ukaz":ukaz,"zapisi":zapisi1[402:603]}) elif ukaz=='izris3':oddaja=json.dumps({"ukaz":ukaz,"zapisi":zapisi1[603:804]}) elif ukaz=='izris4':oddaja=json.dumps({"ukaz":ukaz,"zapisi":zapisi1[804:1005]}) elif ukaz=='izris5':oddaja=json.dumps({"ukaz":ukaz,"zapisi":zapisi1[1005:1206]}) elif ukaz=='diagram':oddaja=json.dumps({"ukaz":ukaz,"zapisi":diagram}) else:oddaja=json.dumps({"ukaz":"neznan"}) server.sendto(oddaja.encode(), s[1]) except socket.timeout: i=1 except: konec1=True;print("Ne moreta delovati dve krmilni jedri hkrati\nPritisni gumb Konec");