Ovladani rele s raspberry – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Ovladani rele s raspberry – Python – Fórum – Programujte.comOvladani rele s raspberry – Python – Fórum – Programujte.com

 

Yenc
~ Anonymní uživatel
12 příspěvků
10. 6. 2018   #1
-
0
-

ahoj, snad mi dokazete poradit (urcite ano :D)

s pythonem jsem si zacal hrat celkem nedavno, takze jeste porad vse nechapu ale tak nejak to jde :D

nyni bych chtel ovladat rele podle teploty ale nemuzu prijit na to, kde je chyba. muzete pls kouknout a poradit?

#!/usr/bin/env python

import os

import glob

import time

import RPi.GPIO as GPIO


GPIO.setmode(GPIO.BCM)


#Rele 1 pripojeno na pin 8 [gpio 14]

#Rele 2 pripojeno na pin 10 [gpio 15]

#Rele 3 pripojeno na pin 12 [gpio 18]

#Rele 4 pripojeno na pin 16 [gpio 23]

Relay1 = 8

Relay2 = 10

Relay3 = 12

Relay4 = 16

pinList = [Relay1, Relay2, Relay3 , Relay4] 

# Turn both relays off to start with

for i in pinList: 

    GPIO.setup(i, GPIO.OUT) 

    GPIO.output(i, GPIO.HIGH)

os.system('modprobe w1-gpio')

os.system('modprobe w1-therm')

base_dir = '/sys/bus/w1/devices/'

device_folder = glob.glob(base_dir + "28*")[0]

device_file = device_folder + "/w1_slave"

# vycteni teploty 

def read_temp_raw(device): 

    """Pass this function either 0 or 1 to get the raw data from the

        Temperature Sensor"""

    f = open(device_file[device], 'r')

    lines = f.readlines()

    f.close()

    return lines

def read_temp(device):

    """Pass 0 or 1 to get the temperature in celcius of either sensor"""

    lines = read_temp_raw(device) 

    while lines[0].strip()[-3:] != 'YES':

        time.sleep(0.2)

        lines = read_temp_raw(device)

    equals_pos = lines[1].find('t=')

    if equals_pos != -1:

        temp_string = lines[1][equals_pos+2:]

        temp_c = float(temp_string) / 1000.0

        return temp_c

# urceni zapinani rele v zavislosti na teplote   

while True:

    try:

        temp1 = read_temp
        R1Max = 30
        R1Min = 24
        R2Max = 33
        R2Min = 26
        

        if (temp1 >= R1Max):

            GPIO.output(Rele1, GPIO.LOW)

#           (GPIO.output(Rele2, GPIO.LOW)

        if (temp1 <= R1Min):

            GPIO.output(Rele1, GPIO.HIGH)

#            GPIO.output(Rele2, GPIO.HIGH)

        if (temp1 >= R2Max):

            GPIO.output(Rele2, GPIO.LOW)

#            (GPIO.output(Rele4, GPIO.LOW)

        if (temp1 <= R2Min):

            GPIO.output(Rele2, GPIO.HIGH)

#            (GPIO.output(Rele4, GPIO.HIGH)
    
   time.sleep(1)
    

Vysledek mi to vypise:

syntax error unexpected eof while parsing

diky za pomoc

Nahlásit jako SPAM
IP: 37.188.139.–
gna
~ Anonymní uživatel
1891 příspěvků
10. 6. 2018   #2
-
0
-

Tohle 

device_file = device_folder + "/w1_slave"

má být list

device_file = [device_folder + "/w1_slave"]

Tohle

temp1 = read_temp

má být volání funkce 

temp1 = read_temp(0)

Tohle

try:
    ...

nemáš ukončené 

try:
    ...
except KeyboardInterrupt:
    GPIO.cleanup()
Nahlásit jako SPAM
IP: 213.211.51.–
Yenc
~ Anonymní uživatel
12 příspěvků
10. 6. 2018   #3
-
0
-

tak jsem to udelal dle toho co pises (aspon si to tedy myslim) a zase chyba.. kod je tady:

#!/usr/bin/env python

import os

import glob

import time

import RPi.GPIO as GPIO


GPIO.setmode(GPIO.BCM)


#Rele 1 pripojeno na pin 8 [gpio 14]

#Rele 2 pripojeno na pin 10 [gpio 15]

#Rele 3 pripojeno na pin 12 [gpio 18]

#Rele 4 pripojeno na pin 16 [gpio 23]

Relay1 = 8

Relay2 = 10

Relay3 = 12

Relay4 = 16

pinList = [Relay1, Relay2, Relay3 , Relay4] 

# Turn both relays off to start with

for i in pinList: 

    GPIO.setup(i, GPIO.OUT) 

    GPIO.output(i, GPIO.HIGH)

os.system('modprobe w1-gpio')

os.system('modprobe w1-therm')

base_dir = '/sys/bus/w1/devices/'

device_folder = glob.glob(base_dir + "28*")[0]

device_file = [device_folder + "/w1_slave"]

# vycteni teploty 

def read_temp_raw(device): 

    """Pass this function either 0 or 1 to get the raw data from the

        Temperature Sensor"""

    f = open(device_file[device], 'r')

    lines = f.readlines()

    f.close()

    return lines

def read_temp(device):

    """Pass 0 or 1 to get the temperature in celcius of either sensor"""

    lines = read_temp_raw(device) 

    while lines[0].strip()[-3:] != 'YES':

        time.sleep(0.2)

        lines = read_temp_raw(device)

    equals_pos = lines[1].find('t=')

    if equals_pos != -1:

        temp_string = lines[1][equals_pos+2:]

        temp_c = float(temp_string) / 1000.0

        return temp_c

# urceni zapinani rele v zavislosti na teplote   

while True:

    try:

        temp1 = read_temp(0)
        R1Max = 30
        R1Min = 24
        R2Max = 33
        R2Min = 26
        

        if (temp1 >= R1Max):

            GPIO.output(Rele1, GPIO.LOW)

#           (GPIO.output(Rele2, GPIO.LOW)

        if (temp1 <= R1Min):

            GPIO.output(Rele1, GPIO.HIGH)

#            GPIO.output(Rele2, GPIO.HIGH)

        if (temp1 >= R2Max):

            GPIO.output(Rele2, GPIO.LOW)

#            (GPIO.output(Rele4, GPIO.LOW)

        if (temp1 <= R2Min):

            GPIO.output(Rele2, GPIO.HIGH)

#            (GPIO.output(Rele4, GPIO.HIGH)
    

        time.sleep(1)
      
 except KeyboardInterrupt:
    GPIO.cleanup()

syntaxerror unindent does not match any outer indentation level

 except KeyboardInterrupt:

                                         ^

Diky za radu

Nahlásit jako SPAM
IP: 37.188.139.–
Yenc
~ Anonymní uživatel
12 příspěvků
10. 6. 2018   #4
-
0
-

hehe chyba nalezena, dal jsem except na zacatek radku :)

ted jedna teoreticka.. chapu to dobre jak to mam napsane, ze:

 temp1 = read_temp(0)
        R1Max = 30
        R1Min = 24
        R2Max = 33
        R2Min = 26
        

        if (temp1 >= R1Max):

            GPIO.output(Rele1, GPIO.LOW)

#           (GPIO.output(Rele2, GPIO.LOW)

        if (temp1 <= R1Min):

            GPIO.output(Rele1, GPIO.HIGH)

Pokud je temp1 vetsi nebo rovno R1Max tak nastavi gpio pro rele1 na low

a zase pokud je mensi nebo rovno R1Min, tak nastavi gpio rele1 na high?

Nahlásit jako SPAM
IP: 37.188.139.–
Yenc
~ Anonymní uživatel
12 příspěvků
10. 6. 2018   #5
-
0
-

#4 Yenc
ono ted to nepise zadnou chybu a vubec to neovlada rele :(

Nahlásit jako SPAM
IP: 37.188.139.–
Yenc
~ Anonymní uživatel
12 příspěvků
10. 6. 2018   #6
-
0
-

#5 Yenc
tak jsem na to prisel... mel jsem spatne ocislovane piny (zapojene) :) ted uz to jede... diky vsem

Nahlásit jako SPAM
IP: 37.188.139.–
KIIV
~ Moderátor
+43
God of flame
10. 6. 2018   #7
-
0
-

pridej si vypisy na obrazovku, co to zrovna dela

Nahlásit jako SPAM
IP: 178.41.247.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Yenc
~ Anonymní uživatel
12 příspěvků
11. 6. 2018   #8
-
0
-

Mozna budu vypadat jak uplnej b***c ale jak se to zapina?

Nahlásit jako SPAM
IP: 46.33.119.–
gna
~ Anonymní uživatel
1891 příspěvků
11. 6. 2018   #9
-
0
-

#8 Yenc 

print('Ted jsem tady a zkusim tohle')
Nahlásit jako SPAM
IP: 213.211.51.–
Yenc
~ Anonymní uživatel
12 příspěvků
13. 6. 2018   #10
-
0
-

Ahoj, diky vsem za pomoc, uz to funguje jak jsem chtel :)

Nahlásit jako SPAM
IP: 46.33.119.–
Yenc
~ Anonymní uživatel
12 příspěvků
13. 6. 2018   #11
-
0
-

rovnou se zeptam, ma nekdo zkusenosti se serverem easyiot? chtel bych to tohoto rpi odesilat data na jine rpi, kde bezi tento server :D

Nahlásit jako SPAM
IP: 46.33.119.–
16. 6. 2018   #12
-
0
-

Nice post I like your site very well and continue to do so. I have bookmark your site.

https://RentalCarsUAE.com

Nahlásit jako SPAM
IP: 103.82.80.–
2. 11. 2019   #13
-
0
-

Excellent post! thank you for share! Nice information, appreciate it in the author. I was very impressed by this post, this site has always been pleasant news Thank you very much for such an interesting post.  https://www.shiftcarrental.com/car-rental/

Nahlásit jako SPAM
IP: 2409:4072:6196:e095:d9ef:133a:ede:2d18...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 22 hostů

Podobná vlákna

Ovládanie relé — založil Martin

Ovládanie relé cez PHP — založil Martin

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý