Visualizza post

Questa sezione ti permette di visualizzare tutti i post inviati da questo utente. N.B: puoi vedere solo i post relativi alle aree dove hai l'accesso.


Topics - vinny74man

Pagine: [1]
1
Base / Mqtt e asyncio
« il: Dicembre 09, 2020, 19:22 »
Ciao a tutti sto scrivendo un piccolo programma e vorrei usare asyncio ed mqtt,  in pratica ho una funzione asincrona che aspetta che un asyncio.Event() venga settato per fare il suo lavoro, e il set dell' event dovrei prenderlo dalla funzione di callback on_message di mqtt, ho scritto una funzione per far partire il loop mqtt e la funzione che deve svolgere il lavoro, le faccio partire entrambe usando asyncio.gather alla ricezione del messaggio facendo una print su "event" vedo che passa da unset a set, ma nella funzione asincrona resta sempre in attesa.

questo è il codice che sto usando per capire come fare

import asyncio
import paho.mqtt.client as mqtt

msg_test = ""
event = asyncio.Event()

def event_set():
    event.set()


def on_message(client, userdata, msg):
    global msg_test
    print("on_message",event)
    print(msg.topic+" "+str(msg.payload.decode()))
    event_set()
    msg_test = str(msg.payload.decode())

def on_connect(client, userdata, flags, rc):
    if rc==0:
        client.connected_flag=True
        print("connected OK Returned code=",rc)
        client.subscribe("test")
    else:
        print("Bad connection Returned code= ",rc)

async def print_msg():
    print("sono in async")
    global msg_test
    while True:
        print("print_msg",event)
        await event.wait()
        print("async def", msg_test)
        await asyncio.sleep(5)
        event.clear()


async def mqtt_connect():
    client = mqtt.Client()
    client.on_connect= on_connect
    client.on_message = on_message
    client.username_pw_set("testuser", password="testuser")
    client.connect_async("localhost", 1883)
    await asyncio.sleep(2)
    client.loop_start()


if __name__ == "__main__":
    loop = asyncio.get_event_loop()
    coro = asyncio.gather(mqtt_connect(), print_msg())
    event.set()
    loop.run_forever()



volevo capire se è una cosa possibile oppure proprio non si può fare, nel caso esiste un altro modo per farlo sfruttando gli eventi di asyncio, al momento sto usando un'altro script che va a leggere sempre lo stato di una variabile che cambia raramente, quindi volevo usare mqtt.
Spero di essermi spiegato bene.
Grazie

2
Base / [Risolto]Nomi di variabili
« il: Maggio 02, 2017, 10:23 »
Ragazzi ciao e buongiorno a tutti, ho cercato un po in rete ma non sono riuscito a trovare nulla o capire se è possibile oppure no, assegnare come nome di variabile un input proveniente da qualsiasi I/O ad esempio se volessi, che l'inserimento da un input da tastiera corrisponda alla variabile alla riga successiva:

test = input("Inserisci nome ")

adesso il valore attribuito a test tramite l'input diventi una variabile, se all'input gli do ad esempio "microfono" posso ottenere questo:
microfono=10

logicamente tutto in sequenza
test=input("Inserisci nome ")
inserisci nome = 10


Grazie

3
Base / Confronto tra liste
« il: Aprile 21, 2017, 21:24 »
Salve a tutti avendo due liste qual'è il modo più veloce per tirare fuori una terza lista solo con gli elementi non comuni?
Esiste qualche funzione standarda o vado con il for.
Grazie

4
Base / Data di inizializzazione di una variabile
« il: Aprile 17, 2017, 12:06 »
Ciao a tutti e per prima cosa auguri, spero possiate aiutarmi a risolvere questo mio problema, c'è modo di sapere da quanto tempo è stata creata una variabile? Devo fare un contatore, ho delle variabili che vengono assegnate da una lettura dei pin di arduino, per fare in modo di avere una lettura ogni 5 minuti avevo pensato di leggere da quanto tempo era stato assegnato l'ultimo valore, se era passato un certo intervallo andare a rileggere dal pin.

E' fattibile come posso fare.
Grazie

5
Base / Problema ricorsione
« il: Aprile 11, 2017, 21:47 »
Ciao a tutti scrivendo il mio programmino per la lettura di dati da arduino tramite seriale mi sono ricordato che in python non è buona norma eseguire un ciclo infinito, infatti dopo un pò python esce automaticamente dal ciclo, quindi come faccio a fare proprio questo?
Cioè io ho bisogno che python faccia sempre la stessa cosa senza fermarsi mai, in quanto deve leggere sempre da arduino, e poi quando tutto sarà ok, dovrà scrivere i valori rilevati su un db mysql, però come dicevo mi serve un loop infinito.

Almeno dalla mia poca esperienza penso sia questo quello che mi serve, spero ci sia alternativa.

Grazie

6
Base / Dizionari
« il: Aprile 07, 2017, 16:07 »
Ciao a tutti scusate il disturbo ma vorrei sapere se è possibile inserire come elemento di un dizionario un'altro dizionario.

Ho questi dizionarii per esempio

prova = {'uno' :1, 'due':2}
test = {'uno':4,'tre':8}

Voglio creare un dizionario "provatest" che ha come elementi sia prova che test.

E' possibile?
Grazie

7
System scripting / Script che interagisce con la shell debian
« il: Gennaio 25, 2017, 19:25 »
Ciao a tutti sto cercando di scrivere uno script che mi consenta di cambiare utente con su prendendo la password memorizzata in una variabile.

In pratica devo fare questo

faccio partire lo script che crea un user in debian, poi dall'user che lancia lo script devo loggarmi con l'user creato

[codice]def gen_passwd(caratteri, lunghezza):
    if not hasattr(gen_passwd,'rng'):
        gen_passwd.rng = random.SystemRandom()
    return(''.join([gen_passwd.rng.choice(caratteri) for _
                            in range(lunghezza)]))

def crea_user(password):
    user=input('Inserire nome nuovo user: ')
    os.system('useradd -m -s /bin/bash %s' %user)
    os.system('echo %s:%s | chpasswd' %(user,password))
    return(user)

[/codice]

ho trovato la funzione per creare la password in rete e poi ho scritto quella per creare l'user, dopo questo vorrei loggarmi in automatico con l'user creato salvando la password in una variabile.
Ho provato con questo

[codice]
import os
import random
password = gen_passwd('jgyfvub7uiyy97yh986',6)
user=crea_user(password)
os.system('su %s' %user)
[/codice]
Ma questo giustamente mi apre il terminale e mi chiede la password dell'user appena creato io vorrei che la password venga presa in automatico dalla variabile.

E' possibile?
Grazie

8
System scripting / Usare sudo da script
« il: Gennaio 15, 2017, 12:15 »
Ciao a tutti volevo sapere se e come si possa creare uno script che richieda privilegi di root del tipo richiamo lo script e questo mi dice a schermo di inserire la password utente perchè deve fare un qualcosa che richieda privilegi di root.

Oppure è meglio creare lo script e lanciarlo con sudo?

Grazie

9
Base / Parametri classe in un dizionario
« il: Ottobre 26, 2016, 17:28 »
Chiave di un dizionario come valori di un'istanza di una classe:

[codice]
class MyClass:
    test={
         'a':    1,
         'b':    2,
         'c':    3
         }

    def __init__(self,val):
        if val in self.test:
            self.val=val
[/codice]

C'è modo di far visualizza i soli valori possibili quando creo un'istanza della classe?

Nel senso che se creo
prova=MyClass(val) quando devo inserire "val" mi si apra una specie di elenco con le sole chiavi del dizionario?

Spero di essermi spiegato.
Grazie

10
Base / aiuto funzione temporale
« il: Ottobre 06, 2016, 23:59 »
Ciao a tutti per un piccolo progetto con arduino sto cercando di implementare una funzione che dato un intervallo temporale incremeti gradualmente una variabile, ma onestamente non so da dove cominciare.

Il mio intento è questo, far partire un loop infinito con (while=1) leggere per una volta al giorno l'intervallo temporale o ad ogni riavvio, e incremetare o diminuire delle variabili in funzione del tempo passato dall'inizio dell'intervallo.

E' possibile farlo, un aiuto almeno per l'inizio, o una linea guida su come farlo.

Grazie

11
Base / Liste con lunghezza definita
« il: Settembre 24, 2016, 12:05 »
Ciao a tutti volevo chiedere se era possibile inizializzare una lista con lunghezza predefinita per poi inserire i valori in secondo momento e se supero la lunghezza massima non posso inserirli.

Grazie

12
Base / Iterare una stringa
« il: Aprile 04, 2016, 11:42 »
Ciao a tutti sto studiando python per un'applicazione da interfacciare con arduino, sto leggendo un pò di libri e sto andando avanti,come esercizio vorrei scrivere una funzione che iteri una stringa e mi restituisca la stessa stringa scritta all'incontrario in una variabile, con print ci riesco ma io non voglio stamparla ma salvarla questo è quello che ho fatto:

[codice=Python]
def str_al_contr(stringa):
    i=len(stringa)-1
    while i >= 0:
        lettera = stringa
        print(lettera,end='')
        i -= 1
[/codice]

con questo codice stampo a video la stringa partendo dall'ultima lettera, ma come faccio a salvarla in una variabile?
non mi interessa la stampa

13
Benvenuto e regolamento / Ciao a tutti
« il: Marzo 17, 2016, 18:47 »
Ciao raga mi chiamo Enzo scrivo da napoli, io sono un elettronico con la passione per l'informatica per un progetto personale sto studiando il python e mi affascina molto, spero di trovare e quando possibile poter dare consigli e aiuti.

Ciao a tutti

Pagine: [1]