SSL-Paket kann nicht installiert werden. Kann mir jemand das Problem erklären?

Servus alle zusammen.

Ich habe mal wieder eins der unnötigsten Probleme die man so gar nicht gebrauchen kann.
Vorab: Ich verwende PyCharm CommunityEdit2023

Folgende Problematik stellt sich mir:Ich versuche über den PyCharm Interpreter das Paket ssl zu laden und erhalte:

Collecting ssl

 Using cached ssl-1.16.tar.gz (33 kB)

 Using cached ssl-1.15.tar.gz (32 kB)




  ERROR: Command errored out with exit status 1:

   command: 'D:\Python\python.exe' -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\Paddy\\AppData\\Local\\Temp\\pip-install-6xunn48y\\ssl_93be5a3dfd464eefb55e12eacc1c7aae\\setup.py'"'"'; __file__='"'"'C:\\Users\\Paddy\\AppData\\Local\\Temp\\pip-install-6xunn48y\\ssl_93be5a3dfd464eefb55e12eacc1c7aae\\setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base 'C:\Users\Paddy\AppData\Local\Temp\pip-pip-egg-info-xz6xi0b2'

     cwd: C:\Users\Paddy\AppData\Local\Temp\pip-install-6xunn48y\ssl_93be5a3dfd464eefb55e12eacc1c7aae\

  Complete output (6 lines):

  Traceback (most recent call last):

   File "<string>", line 1, in <module>

   File "C:\Users\Paddy\AppData\Local\Temp\pip-install-6xunn48y\ssl_93be5a3dfd464eefb55e12eacc1c7aae\setup.py", line 33

    print 'looking for', f

       ^

  SyntaxError: Missing parentheses in call to 'print'. Did you mean print('looking for', f)?

  ----------------------------------------

WARNING: Discarding https://files.pythonhosted.org/packages/83/21/f469c9923235f8c36d5fd5334ed11e2681abad7e0032c5aba964dcaf9bbb/ssl-1.16.tar.gz#sha256=ac21156fee6aee9eb8d765bbb16f5f49492d81ff4b22f7b8fc001d2251120930 (from https://pypi.org/simple/ssl/). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

  ERROR: Command errored out with exit status 1:

   command: 'D:\Python\python.exe' -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\Paddy\\AppData\\Local\\Temp\\pip-install-6xunn48y\\ssl_0d4afefa00504f218b834c3475a8235c\\setup.py'"'"'; __file__='"'"'C:\\Users\\Paddy\\AppData\\Local\\Temp\\pip-install-6xunn48y\\ssl_0d4afefa00504f218b834c3475a8235c\\setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base 'C:\Users\Paddy\AppData\Local\Temp\pip-pip-egg-info-2f8p2rk1'

     cwd: C:\Users\Paddy\AppData\Local\Temp\pip-install-6xunn48y\ssl_0d4afefa00504f218b834c3475a8235c\

  Complete output (6 lines):

  Traceback (most recent call last):

   File "<string>", line 1, in <module>

   File "C:\Users\Paddy\AppData\Local\Temp\pip-install-6xunn48y\ssl_0d4afefa00504f218b834c3475a8235c\setup.py", line 74

    print 'looking for', f

       ^

  SyntaxError: Missing parentheses in call to 'print'. Did you mean print('looking for', f)?

  ----------------------------------------

WARNING: Discarding https://files.pythonhosted.org/packages/3a/c2/846a19d1572ec6cb8ac438d58a898de8926d32e13f0355cdf4ab00864b5f/ssl-1.15.tar.gz#sha256=1266302ce62c4b60c7ca0e1d3d104ba11d2749e5881d8ac4f006cf9a0446d589 (from https://pypi.org/simple/ssl/). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

ERROR: Could not find a version that satisfies the requirement ssl (from versions: 1.15, 1.16)

ERROR: No matching distribution found for ssl

WARNING: You are using pip version 21.1.3; however, version 24.0 is available.

You should consider upgrading via the 'D:\Python\python.exe -m pip install --upgrade pip' command.

Via cmd erhalte ich die gleiche Meldung.
Ich habe alle Python-Versionen schon deinstalliert, System neu gestartet und wieder installiert. Das gleiche habe ich auch mit pip probiert.

Kann mir hier vielleicht jemand weiterhelfen?

Vielen Dank und liebe Grüße im Voraus! :)

cmd, Code, Error, Python, SSL, pip, Python 3, Windows 10, Pycharm
Turtle-Grafik in Python - letzter Aufruf wird nicht angezeigt?

Hallo Community, eine Frage:

Ich habe versucht, die grafische Simulation einer Ampel zu coden. Die Darstellung soll der Einfachkeit halber mit Turtle funktionieren. Im Grunde klappt alles wunderbar, nur die Grün-Phase wird in der Anzeige "übersprungen". Spannend: Wenn ich manuell über die passenden Methode die Grünphase einstelle, wird sie einwandfrei angezeigt. Nur in der Endlosschleife sehe ich gar nichts bzw. ein kurzes "Flackern".

Hat jemand eine Idee, woran das liegen könnten?

import turtle
import time


class Lampe():
    def __init__(self, farbe, x, y):
        self.__zustand = False
        self.farbe = farbe
        self.turtle = turtle.Turtle()
        self.turtle.hideturtle()
        self.turtle.penup()
        self.turtle.speed(0)
        self.turtle.shape("circle")
        self.turtle.color(farbe)
        self.turtle.goto(x, y)


    def einschalten(self):
        self.__zustand = True
        self.turtle.color(self.farbe)
        self.turtle.stamp()


    def ausschalten(self):
        self.__zustand = False
        self.turtle.clear()


    def zustand(self):
        return self.__zustand


class Ampel():
    def __init__(self):
        self.__rot = Lampe("red", 0, 50)
        self.__gelb = Lampe("yellow", 0, 0)
        self.__green = Lampe("green", 0, -50)
        self.__phase = "rot"
        self.__rot.einschalten()
        
    def phase_rot(self):
        self.__rot.einschalten()
        self.__gelb.ausschalten()
        self.__green.ausschalten()
        self.__phase = "rot"
        
    def phase_gelb(self):
        self.__rot.ausschalten()
        self.__gelb.einschalten()
        self.__green.ausschalten()
        self.__phase = "gelb"
        
    def phase_green(self):
        self.__rot.ausschalten()
        self.__gelb.ausschalten()
        self.__green.einschalten()
        self.__phase = "green"
        
    def phase_rotgelb(self):
        self.__rot.einschalten()
        self.__gelb.einschalten()
        self.__green.ausschalten()
        self.__phase = "rotgelb"


    def umschalten(self):
        if self.__phase == "rot":
            self.phase_rotgelb()
        elif self.__phase == "rotgelb":
            self.phase_green()
        elif self.__phase == "green":
            self.phase_gelb()
        elif self.__phase == "gelb":
            self.phase_rot()
        else:
            print("Something went horribly utterly wrong. Doomsday!")
        time.sleep(2)
        self.umschalten()


if __name__ == "__main__":
    turtle.Screen().bgcolor("black")
    ampel = Ampel()
    ampel.umschalten()


Python, Python 3
Pyhton Daten updaten?

Hallo

ich bin neu in der Python Welt und habe eine kleine Frage bezüglich arbeiten mit Daten (.txt)

Ich will ein Geldaufnahme Programm schreiben wo ich Daten speichern muss und regelmäßig updaten will.

Zum Programm: Nachdem mein Lohn kam will ich alle meine Kontostände aktualisieren und diese sollen dann gespeichert werden und auf Wunsch aufrufbar sein.

(Erfundenen Zahlen)

Hier ist das Dictunary in der TXT datei:

Bestände = {

"Sparbuch" : 1000,

"Girokonto" : 2000,

"Depot : 3000,

"Bar" : 4000

}

Mein Lohn (3.000€ ) kommt und ich verteile das Geld auf die Konten.

Hier fange ich in der Geldaufnahme.py Datei an:

Sparbuch1 = input("Was ist der Aktuelle stand? ") #verändert um +1.000

Girokonto2 = input("Was ist der Aktuelle stand? ") #verändert um +1.000

Depot3 = input("Was ist der Aktuelle stand? ")

Bar4 = input("Was ist der Aktuelle stand? ") #verändert um +1.000

Jetzt zu meinem ersten Problem:

Wie kann ich die Daten aus der txt datei in meiner .py Datei als Dictunary rüber holen und dann selbständig bearbeiten?

bzw

Die Bestände: Sparbuch/ Girokonto und Bar verändern sich um jeweils 1.000€

wie kann ich das in der Txt datei aktualisieren?

Zu meinem zweiten Problem:

Ich will nur den Bestand des Depotes wissen wie lese ich das gezielt aus der txt datei aus?

zu meinem Dritten Problem:

Ist txt datei das richtige hierfür?

Ich hoffe es war verständlich

danke schonmal im voraus 

HTML, Webseite, Java, JavaScript, Batch, cmd, PHP, Programmiersprache, Python, Webentwicklung, Python 3
Python Fehlermeldung "KeyError: 'data'"?

Ich möchte gerne einen KI Discord Server machen. Die KI hab ich schon und diese hat auch eine API(?). Ich hab den Bot auch schon auf dem Server und ich kann auch Prompts eingeben. Aber wenn ich Prompt eingebe, kommt bei diesem Code:

import discord
from gradio_client import Client


TOKEN = 'MeinToken'
FOOOCUS_API_URL = 'http://127.0.0.1:7865/'


fooocus_client = Client(FOOOCUS_API_URL)


intents = discord.Intents.default()
client = discord.Client(intents=intents)


@client.event
async def on_ready():
    print(f'{client.user} ist eingeloggt!')


@client.event
async def on_message(message):
    if message.channel.name == 'prompt-kanal' and message.author != client.user:
        result = fooocus_client.predict(message.content, fn_index=2)
        await message.channel.send(file=discord.File(result))


client.run(TOKEN)

Diese Fehlermeldung:

2024-04-16 15:35:07 ERROR discord.client Ignoring exception in on_message
Traceback (most recent call last):
File "C:...\venv\Lib\site-packages\gradio_client\compatibility.py", line 105, in _predict
output = result["data"]
~~~~~~^^^^^^^^
KeyError: 'data'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "C:...\venv\Lib\site-packages\discord\client.py", line 441, in _run_event
await coro(*args, **kwargs)
File "c:...\bot.py", line 19, in on_message
result = fooocus_client.predict(message.content, fn_index=2)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:...\venv\Lib\site-packages\gradio_client\client.py", line 459, in predict
).result()
^^^^^^^^
File "C:...\venv\Lib\site-packages\gradio_client\client.py", line 1374, in result
return super().result(timeout=timeout)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users..._base.py", line 456, in result
return self.__get_result()
^^^^^^^^^^^^^^^^^^^
File "C:\Users..._base.py", line 401, in __get_result
raise self._exception
File "C:\Users...\thread.py", line 58, in run
result = self.fn(*self.args, **self.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:...\compatibility.py", line 65, in _inner
predictions = _predict(*data)
^^^^^^^^^^^^^^^
File "C:...\compatibility.py", line 119, in _predict
raise KeyError(
KeyError: 'Could not find 'data' key in response. Response received: {'detail': [{'type': 'model_attributes_type', 'loc': ['body'], 'msg': 'Input should be a valid dictionary or object to extract fields from', 'input': '{"data": [""], "fn_index": 2, "session_hash": "d7f62bf0-174c-45fe-b3f6-c5e7f00848d3"}', 'url': 'https://errors.pydantic.dev/2.1/v/model_attributes_type'}]}'

Ich checke einfach nicht, woran das liegen könnte...

Linux, Bot, cmd, Code, künstliche Intelligenz, Programmiersprache, Python, Python 3, Pycharm, Discord, Discord Bot, ChatGPT
Warum funktioniert Flask und Websockets nicht?

Hallo,

ich wollte meinen Python- Code mit meinem HTML- Code verbinden, damit, wenn mein Wake- Word "Luna" erkannt wurde, der Hintergrund der Datei output.html seine Farbe ändert und rot wird. Hier ist der Code:

Python:

from flask import Flask, render_template
from flask_socketio import SocketIO

app = Flask(__name__)
socketio = SocketIO(app)


@app.route('/')
def index():
    return render_template('index.html')


@socketio.on('connect')
def handle_connect():
    print("Client verbunden")


@socketio.on('disconnect')
def handle_disconnect():
    print("Client getrennt")


@socketio.on('change_background')
def change_background(color):
    print("Hintergrundfarbe ändern:", color)
    socketio.emit('background_changed', color)

HTML /CSS:

... body {
  background-color: black;
  margin: 0;
  padding: 0;
  text-align: center;
  overflow-x: hidden;
  overflow-y: hidden;
    -webkit-user-select: none; /* Für WebKit-Browser */
    -moz-user-select: none; /* Für Mozilla-basierte Browser */
    -ms-user-select: none; /* Für Microsoft Edge */
    user-select: none;
}  
</style>
</head>
<body>

JavaScript:

... // FLASK
    var socket = io();

    socket.on('connect', function() {
        console.log('Verbunden mit dem Server');
    });

    socket.on('disconnect', function() {
        console.log('Verbindung zum Server getrennt');
    });

    socket.on('background_changed', function(color) {
        console.log('Hintergrundfarbe geändert:', color);
        document.body.style.backgroundColor = color;
    });
</script>
</body>
</html>
    """
    with open("output.html", "w") as html_file:
        html_file.write(html_content)

    return "output.html"

Wenn ich den Code aber ausführe und "Luna" sage, ändert der Hintergrund nicht seine Farbe. Woran liegt das?

Freundliche Grüsse

HTML, Webseite, JavaScript, HTML5, Code, Programmiersprache, Python, Frontend, Python 3, Pycharm, Flask
Warum kann ich meinen HTML- Code nicht mit meinem Python- Code verbinden?

Hallo,

ich wollte meinen Python- Code mit meinem HTML- Code verbinden, damit, wenn mein Wake- Word "Luna" erkannt wurde, ein div in der Datei index.html seine Farbe ändert. Hier ist der Code:

Python:

from flask import Flask, render_template
from flask_socketio import SocketIO, emit

app = Flask(__name__)
app.config['SECRET_KEY'] = 'luna_secret1984773249523'
socketio = SocketIO(app)


@socketio.on('connect')
def handle_connect():
    emit('message', {'data': 'Connected'})


@socketio.on('start_listening')
def start_listening():
    if detect_wake_word():
        emit('color_change', {'color': 'red'})


@app.route('/')
def index():
    return render_template('output.html')

HTML /CSS:

... #color_div {
    width: 100%;
    height: 100%;
    position: absolute;
    background-color: green;
}    
</style>
</head>
<body>
<div id="color_div"></div>

JavaScript:

... // FLASK
        var socket = io();

        socket.on('connect', function() {
            socket.emit('start_listening');
        });

        socket.on('color_change', function(msg) {
            document.getElementById('color_div').style.backgroundColor = msg.color;
        });
</script>
</body>
</html>
    """
    with open("output.html", "w") as html_file:
        html_file.write(html_content)

    return "output.html"

Wenn ich den Code aber ausführe und "Luna" sage, ändert der Div nicht seine Farbe. Woran liegt das?

Freundliche Grüsse

HTML, Webseite, CSS, JavaScript, HTML5, Code, Programmiersprache, Python, Webentwicklung, Frontend, Python 3, Flask
Warum funktioniert mein Websockets- Server nicht?

Hallo,

ich möchte mithilfe von Websockets über JS auf Python zugreifen, das ist mein Code:

Python:

def send_message_to_browser(message):
    url = "http://localhost:8000/?wake_word=luna"
    try:
        response = requests.get(url)
        if response.status_code == 200:
            print("Nachricht an den Browser gesendet:", message)
        else:
            print("Fehler beim Senden der Nachricht an den Browser")
    except requests.RequestException as e:
        print("Fehler beim Senden der Nachricht an den Browser:", e)

JavaScript:

// WEBSOCKET
var socket = new WebSocket('ws://localhost:8000/?wake_word=luna');

// Debugging-Ausgabe zur Überprüfung der Verbindung
console.log("WebSocket wird hergestellt...");

// Ereignisbehandlungsfunktion für Verbindungsherstellung
socket.onopen = function(event) {
    // Debugging-Ausgabe zur Bestätigung der erfolgreichen Verbindung
    console.log("WebSocket-Verbindung hergestellt.");
};

// Ereignisbehandlungsfunktion für Nachrichtenempfang
socket.onmessage = function(event) {
    // Nachricht vom Server erhalten
    var message = event.data;

    // Debugging-Ausgabe
    console.log("Nachricht empfangen:", message);

    // Überprüfen, ob die empfangene Nachricht "luna" ist
    if (message === "luna") {
        // Ändern der Hintergrundfarbe der Div mit der ID "luna_wake_word" auf Rot
        $('#luna_wake_word').css("background-color", "red");
    }
};

// Fehlerbehandlungsfunktion für WebSocket-Verbindung
socket.onerror = function(error) {
    console.error('WebSocket Error: ', error);
};

// Schließen der WebSocket-Verbindung
function closeWebSocket() {
    socket.close();
}

Doch immer, wenn ich das Programm starte und in die Konsole schaue kommt dieser Fehler:

WebSocket wird hergestellt...

index.html?_ijt=bj6j8vutnl8e16bhrbgfck9djq&_ij_reload=RELOAD_ON_SAVE:1929 WebSocket connection to 'ws://localhost:8000/?wake_word=luna' failed: 

(anonym) @ index.html?_ijt=bj6j8vutnl8e16bhrbgfck9djq&_ij_reload=RELOAD_ON_SAVE:1929

index.html?_ijt=bj6j8vutnl8e16bhrbgfck9djq&_ij_reload=RELOAD_ON_SAVE:1957 WebSocket Error: Event {isTrusted: true, type: 'error', target: WebSocket, currentTarget: WebSocket, eventPhase: 2, …}

Kann mir jemand helfen?

Freundliche Grüsse

HTML, Webseite, JavaScript, HTML5, Code, Programmiersprache, Python, Webentwicklung, Python 3
Wie bekomme ich es hin das eine Python Datei Automatisch gestartet wird auf dem Raspberry Pi5?

Ich habe Raspberry PiOS 64-Bit und versuche schon lange wie ich meine Python Datei "Autostarten" kann. Das Script schaut in einem Loop nach MQTT Nachrichten und führt befehle aus, wenn eine Bestimmte Nachricht eintrifft. Daher braucht es ja auch Internet zugriff usw. .

Ich habe schon vieles versucht wie "crontab -e" und eine Zeile mit "@reboot python3 /home/user/Openhab_Mqttv2.py &" hinzugefügt hat aber nicht geklappt und jetzt sitze ich daran es mit "systemd" zu probieren. Jedoch klappt es auch nicht und ich kriege nur Fehlermeldungen. Ich verstehe auch nicht ganz wie das "systemd" funktioniert. Außer dass ich eine ".service" Datei in "/etc/systemd/system" brauche damit etwas ausgeführt wird.

sudo nano /etc/systemd/system/Openhab_Mqttv2_Autostart.service

[Unit]
Description=Openhab Mqtt working  Autostart
After=network.target


[Service]
TimeoutStartSec=2min
ExecStart=/home/richard/Openhab_Mqttv2.py
Restart=always


[Install]
WantedBy=multi-user.target

Status:

x@raspberrypi:~ $ systemctl status Openhab_Mqttv2_Autostart.service
× Openhab_Mqttv2_Autostart.service - Openhab Mqtt working  Autostart
     Loaded: loaded (/etc/systemd/system/Openhab_Mqttv2_Autostart.service; enabled; preset: enabled)
     Active: failed (Result: exit-code) since Tue 2024-04-02 23:51:00 CEST; 5s ago
   Duration: 1ms
    Process: 75239 ExecStart=/home/richard/Openhab_Mqttv2.py (code=exited, status=203/EXEC)
   Main PID: 75239 (code=exited, status=203/EXEC)
        CPU: 1ms


Apr 02 23:51:00 raspberrypi systemd[1]: Openhab_Mqttv2_Autostart.service: Scheduled restart job, restart counter is at 5.
Apr 02 23:51:00 raspberrypi systemd[1]: Stopped Openhab_Mqttv2_Autostart.service - Openhab Mqtt working  Autostart.
Apr 02 23:51:00 raspberrypi systemd[1]: Openhab_Mqttv2_Autostart.service: Start request repeated too quickly.
Apr 02 23:51:00 raspberrypi systemd[1]: Openhab_Mqttv2_Autostart.service: Failed with result 'exit-code'.
Apr 02 23:51:00 raspberrypi systemd[1]: Failed to start Openhab_Mqttv2_Autostart.service - Openhab Mqtt working  Autostart. 

journalctl:

x@raspberrypi:~ $ sudo journalctl -u Openhab_Mqttv2_Autostart.service
Apr 02 21:49:44 raspberrypi systemd[1]: Started Openhab_Mqttv2_Autostart.service - Mein Service.
Apr 02 21:49:45 raspberrypi python3[958]: Traceback (most recent call last):
Apr 02 21:49:45 raspberrypi python3[958]:   File "/home/richard/Openhab_Mqttv2.py", line 417, in <module>
Apr 02 21:49:45 raspberrypi python3[958]:     client.connect( "192.168.0.182", 1883, 60)
Apr 02 21:49:45 raspberrypi python3[958]:   File "/usr/lib/python3/dist-packages/paho/mqtt/client.py", line 914, in connect
Apr 02 21:49:45 raspberrypi python3[958]:     return self.reconnect()
Apr 02 21:49:45 raspberrypi python3[958]:            ^^^^^^^^^^^^^^^^
Apr 02 21:49:45 raspberrypi python3[958]:   File "/usr/lib/python3/dist-packages/paho/mqtt/client.py", line 1044, in reconnect
Apr 02 21:49:45 raspberrypi python3[958]:     sock = self._create_socket_connection()
Apr 02 21:49:45 raspberrypi python3[958]:            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Apr 02 21:49:45 raspberrypi python3[958]:   File "/usr/lib/python3/dist-packages/paho/mqtt/client.py", line 3685, in _create_socket_connection
Apr 02 21:49:45 raspberrypi python3[958]:     return socket.create_connection(addr, timeout=self._connect_timeout, source_address=source)
Apr 02 21:49:45 raspberrypi python3[958]:            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Apr 02 21:49:45 raspberrypi python3[958]:   File "/usr/lib/python3.11/socket.py", line 851, in create_connection
Apr 02 21:49:45 raspberrypi python3[958]:     raise exceptions[0]
Apr 02 21:49:45 raspberrypi python3[958]:   File "/usr/lib/python3.11/socket.py", line 836, in create_connection
Apr 02 21:49:45 raspberrypi python3[958]:     sock.connect(sa)
Apr 02 21:49:45 raspberrypi python3[958]: OSError: [Errno 101] Network is unreachable
Apr 02 21:49:45 raspberrypi systemd[1]: Openhab_Mqttv2_Autostart.service: Main process exited, code=exited, status=1/FAILURE
Apr 02 21:49:45 raspberrypi systemd[1]: Openhab_Mqttv2_Autostart.service: Failed with result 'exit-code'.
Apr 02 21:49:45 raspberrypi systemd[1]: Openhab_Mqttv2_Autostart.service: Scheduled restart job, restart counter is at 1.

Was genau kann ich an dem "/etc/systemd/system/Openhab_Mqttv2_Autostart.service" File ändern damit es endlich klappt, dass die Python Datei im Loop läuft und was genau habe ich falsch gemacht?

Mit ChatGPT versucht und es hat mir für die ".service" Datei gesagt, dass ich auch "/usr/bin/python3" zwischen "ExecStart=" und "/home" hinzufügen sollte. Habe es versucht und in der Fehlermeldung steht drin, dass man nicht mehr als einen setting in "ExecStart=" rein machen darf und auch mehrere "ExecStart=" gehen auch nicht.

Linux, Boot, System, Programmiersprache, Python, Autostart, Python 3, Raspberry Pi
Wo ist der Fehler in meinem Python Code (MQTT)?

Ich habe ein Python Script erstellt, damit später bei Nachrichten bestimmte befehle ausgeführt werden. Beim ersten Script(Openhab_Mqtt.py) habe ich beim Testen 3 Terminals aufgemacht und beim 2.(Openhab_Mqttv2.py) auch genau gleiche Sorgehensweise.

Im 1. Terminal habe ich das Python Script gestartet mit:

python Openhab_Mqttv2.py

Output:
Script 1: Connected to MQTT broker
Script 2: Connected to MQTT broker
Connected to MQTT broker

Im 2. Terminal habe ich die Nachricht ausgegeben bei Nachrichten mit:

mosquitto_sub -t "main/messager" -v -u xxx -P xxx

Output(Nach T3):
Script 1: main/messager test
Script 2: main/messager test

Und im 3. Terminal habe ich eine Nachricht gesendet mit:

mosquitto_pub -t "main/messager" -m "test" -u xxx-P xxx  

Output:
Script 1: Payload: test und BLA...
Script 2:

Ich kann einfach nicht den Fehler finden, warum es bei Openhab_Mqtt.py funktioniert und bei Openhab_Mqttv2.py nicht funktioniert.

Openhab_Mqtt.py DATA:

import paho.mqtt.client as mqtt
import os
import time
import bme280_temp
import smbus2
import bme280
import threading

def on_subscribe(client, userdata, mid, granted_qos):
 print("Subscribed to topic : " + str(mid) +" with QoS" + str(granted_qos))


def on_connect(client, userdata, flags, rc):
 print("Connected to MQTT broker")


def on_message(client, userdata, msg): 
 print(msg.topic+" "+str(msg.qos)+" "+str(msg.payload))
 print("Payload: " + msg.payload.decode())
 if msg.payload.decode() == "send_signal":
  print("Calling script to send signal...")
  IR_Signal()
 if msg.payload.decode() == "temp_bme280_start":
  print("Calling script to for temperature start...")
  userdata["counter"] += 1
  print(str(userdata["counter"]))
  client.publish("frame/monitor", "START", qos=0, retain=True)
  Temp_sensor() 
 if msg.payload.decode() == "temp_bme280_stop":
  print("Calling script to for temperature stop...")
  userdata["counter"] -= 1
  print(str(userdata["counter"]))
  client.publish("frame/monitor", "STOP", qos=0, retain=True)
 if msg.payload.decode() == "test":
  print("BLA...")  
  print(str(["counter"])) 
  os.system("vcgencmd measure_temp") 
 else:
  pass    



#Bme280_basic Temperature
address = 0x76
bus = smbus2.SMBus(1)
calibration_params = bme280.load_calibration_params(bus, address)

def Temp_sensor():
 data = bme280.sample(bus, address, calibration_params)
 temperature_celsius = data.temperature      
 print("Temperature: {:.2f} °C".format(temperature_celsius))
 time.sleep(2)
    
 
def IR_Signal():
 os.system("irsend SEND_ONCE pioneer_vsx-301 KEY_POWER")
 print ("Signal Send!")


client = mqtt.Client()
client.on_message = on_message 
client.on_connect = on_connect
client.user_data_set({"counter": 0})
client.username_pw_set( "xx" , "xx" )
client.connect( "192.x.x.x", 1883, 60)
client.subscribe( "main/messager" , qos=0)


client.loop_forever() 

Openhab_Mqttv2.py

import paho.mqtt.client as mqtt
import time
import smbus2
import bme280
import threading


# Getting information
def on_subscribe(client, userdata, mid, granted_qos):
 print("Subscribed to topic : " + str(mid) +" with QoS" + str(granted_qos))
                                                                 
def on_connect(client, userdata, flags, rc):
 print("Connected to MQTT broker")


# Damit loops nicht am anfang durchstarten 
TempLoop_running = False


# Checking for messages to execute code
def on_message(client, userdata, msg):
 print(msg.topic+" "+str(msg.qos)+" "+str(msg.payload))
 print("Payload: " + msg.payload.decode())
 if msg.payload.decode() == "Temp_Start":
  start_TempLoop()
 if msg.payload.decode() == "Temp_Stop":
  stop_TempLoop()
 if msg.payload.decode() == "test":
  print("TESTING...")
  client.publish("main/messager", "START", qos=0, retain=True)
 else:
  pass



# Execute things here ->


# Getting Temperature
address = 0x76
bus = smbus2.SMBus(1)
# Load calibration parameters
calibration_params = bme280.load_calibration_params(bus, address)
def Temperature_loop():
 global TempLoop_running
 while TempLoop_running:
  data = bme280.sample(bus, address, calibration_params)
  #Extract temperature, pressure, and humidity
  temperature_celsius = data.temperature      
  #Print the readings
  print("Temperature: {:.2f} °C".format(temperature_celsius))
  # Nachricht an das entsprechende Topic senden
  client.publish("Temp/Loop", "Temperature: {:.2f} °C".format(temperature_celsius))
  # Wartezeit, um die Ausgabe zu verlangsamen
  time.sleep(2)
# Funktion zum Starten der Temperatur Schleife
def start_TempLoop():
 global TempLoop_running
 TempLoop_running = True
 threading.Thread(target=Temperature_loop).start()
# Funktion zum Stoppen der Temperatur Schleife
def stop_TempLoop():
 global TempLoop_running
 TempLoop_running = False



# Set general data
client = mqtt.Client()
client.on_message = on_message 
client.on_connect = on_connect
client.connect( "192.x.x.x", 1883, 60)
client.username_pw_set( "xx", "xx" )
client.subscribe( "main/messager", qos=0)


# Loop forever
client.loop_forever()
Code, Python, Terminal, Message, Python 3, Raspberry Pi
Warum funktioniert mein Code auf dem Raspberry Pi nicht?

Hallo,

Ich programmiere gerade einen Sprachassistenten und auf meinem Windows PC hat alles super funktioniert, aber als ich das Programm auf den Pi geladen und das Programm gestartet habe, kam diese Fehlermeldung:

Traceback (most recent call last):

 File "/home/grafjulian08/PycharmProjects/voiceAssistant/main.py", line 1164, in <module>

  execute()

 File "/home/grafjulian08/PycharmProjects/voiceAssistant/main.py", line 658, in execute

  if detect_wake_word(): # Falls das Wake-Word erkannt wurde

    ^^^^^^^^^^^^^^^^^^

 File "/home/grafjulian08/PycharmProjects/voiceAssistant/main.py", line 139, in detect_wake_word

  recognizer.adjust_for_ambient_noise(source) # Hintergrundgeräusche anpassen

  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

 File "/home/grafjulian08/PycharmProjects/voiceAssistant/.venv/lib/python3.11/site-packages/speech_recognition/__init__.py", line 389, in adjust_for_ambient_noise

  assert source.stream is not None, "Audio source must be entered before adjusting, see documentation for ``AudioSource``; are you using ``source`` outside of a ``with`` statement?"

      ^^^^^^^^^^^^^^^^^^^^^^^^^

AssertionError: Audio source must be entered before adjusting, see documentation for ``AudioSource``; are you using ``source`` outside of a ``with`` statement?

Ich habe ein gutes Mikrofon am Pi, welches auch funktioniert, und ich habe schon viel am Code geändert, aber es geht nicht weg. Woran kann das sonst liegen?

Wenn ich Teile meines Codes zeigen soll, könnt ihr das sagen.

Freundliche Grüsse

cmd, Code, künstliche Intelligenz, Programmiersprache, Python, Python 3, Raspberry Pi, Pycharm, ChatGPT
Python variable ändern (erhöhen oder verringern)?

Ich bin ein absoluter Anfänger was programmieren angeht, lerne aber immer mehr und mehr dazu. Ich möchte für etwas ein Python Script erstellen, was auf meinem Pi die ganze Zeit läuft und die MQTT Nachrichten mitliest, um diese auszuführen und/oder eine Nachricht zurück zu senden.

Ich habe versucht eine Nachricht zu senden der den wert der Variable um 1 erhöhen soll und damit auch die While schleife aktivieren soll. Jedoch funktioniert es nicht, da die variable nicht in "def on_message" verfügbar ist und es die Erhöhung quasi nicht nach außen austrägt.

Was gibt es für Möglichkeiten die variable zu erhöhen, sodass sich die while schleife aktiviert? Und gibt es auch andere Ansätze wie man eine diese Schleife machen kann?

Script:

import paho.mqtt.client as mqtt
import os
import subprocess
import time
import smbus2
import bme280

#Bme280_basic Temperature
# BME280 sensor address (default address)
address = 0x76
# Initialize I2C bus
bus = smbus2.SMBus(1)
# Load calibration parameters
calibration_params = bme280.load_calibration_params(bus, address)
# to activate loop
y = int(1)
#Temperature loop
while y == 2:
      data = bme280.sample(bus, address, calibration_params)

      # Extract temperature, pressure, and humidity
      temperature_celsius = data.temperature      
      # Print the readings
      print("Temperature: {:.2f} °C".format(temperature_celsius))
      # Wait for a few seconds before the next reading
      time.sleep(2)
      #print(y)
else:
      print("stopped") 
    
#Connection successfull
def on_connect(client, userdata, flags, rc):
  print("Connected to MQTT broker")


#Checking for messages to execute code
def on_message(client, userdata, msg):
    print(msg.topic+" "+str(msg.qos)+" "+str(msg.payload))
    if msg.payload.decode() == "temp_bme280_start":
        print("Calling script to for temperature start...")
        # activate loop by adding 1
        y += 1   
        print(y)
    if msg.payload.decode() == "temp_bme280_stop":
        print("Calling script to for temperature stop...")
        # deactivate loop by remove 1
        y -= 1  
        print(y)  

def on_subscribe(client, userdata, mid, granted_qos):
    print("Subscribed to topic : " + str(mid) +" with QoS" + str(granted_qos))

client = mqtt.Client()

client.username_pw_set( "userxxx" , "passwortxxx" )

client.connect( "192.16x.xxx.xxx", 1883, 60)

client.subscribe( "frame/monitor" , qos=1)

client.on_connect = on_connect

client.on_message = on_message

client.loop_forever()

Würde Chat GPT sowas lösen können?

Code, Programmiersprache, Python, Script, Python 3, Raspberry Pi, while-Schleife, ChatGPT
Python | Decoratoren richtig nutzen?

Guten Tag,

ich arbeite in Moment an ein kleines Projekt mit einer API für den Privatgebrauch.

Ich möchte mithilfe von Decoratoren ein Event registrieren.
Dieser Code ist nur ein Beispielcode und soll nur darstellen, was ich genau erreichen möchte:

main.py:

import time


class Bot:
    _events: list = []


    def __init__(self):
        ... # Übergabe der Instanz...


    @classmethod
    def event(cls, func):
        ... # Überprüfen, ob es sich um ein gültiges Event handelt 


        cls._events.append(func) # Registiert das Event, falls es gültig ist
        return func
    
    @classmethod
    def event_handler(cls):
        for event in cls._events:
            if callable(event):
                event()


    def start(self) -> None:
        while True:
            time.sleep(1)
            ...


if __name__ == "__main__":
    bot = Bot()
    bot.start()

Alle Events, die es gibt:

class Events:
    """Events die Verfügbar sind"""
    
    def on_check(self, chat):
        ... 


    def messages(self, message):
        ...

Die Nutzung:

class MyBot:
    
    """Das ist ein gültiges Event -> Funkionsname vom Event richtig, Parameter richtig
    Kann also in die Registration aufgenommen werden"""
    @bot.event
    def on_check(self, chat):
        ...


    """Kein gültiges Event -> Sprich die Funktion event soll ein Fehler ausgeben"""
    @bot.event
    def on_name(self, name):
        ...


    """Hier fehlt der Parameter -> Sprich die Funktion event soll ein Fehler ausgeben"""
    @bot.event
    def messages(self):
        ...

Ich hoffe es ist durch den Kommentaren klar, was mein Ziel ist. Falls Unklarheiten bestehen, stehe ich gerne zur Verfügung.

Vielen dank für eure Hilfe!
Liebe Grüße

Bot, Code, Programmiersprache, Python, API, Python 3
Wie kann ich die Porcupine Wake-Word detection verwenden?

Hallo,

ich programmiere gerade einen Sprachassistenten und wollte nun die Wake-Word Funktion hinzufügen. Das ist mein Code:

def wait_for_wake_word(recognizer, source):
    keyword_path = r"C:\Users\User\PycharmProjects\voiceAssistant\hey-Luna_de_windows_v3_0_0 (2)\hey-Luna_de_windows_v3_0_0.ppn"
    sensitivity = 0.5
    access_key = "..."

    handle = pvporcupine.create(keywords=[keyword_path], sensitivities=[sensitivity], access_key=access_key)

    if handle is None:
        print("Fehler beim Erstellen des Porcupine-Objekts. Überprüfe den Dateipfad und den Zugriffsschlüssel.")
        return

    audio = pyaudio.PyAudio()

    try:
        print("Warte auf das Wake-Word...")

        stream = audio.open(
            rate=handle.sample_rate,
            channels=1,
            format=pyaudio.paInt16,
            input=True,
            frames_per_buffer=handle.frame_length)

        while True:
            pcm = stream.read(handle.frame_length)
            pcm = pcm[0: handle.frame_length]

            keyword_index = handle.process(pcm)
            if keyword_index >= 0:
                print("Wake-Word 'Luna' erkannt!")
                break
    finally:
        if handle is not None:
            handle.delete()
        if stream is not None:
            stream.close()
        if audio is not None:
            audio.terminate()

Wenn ich es nun aber ausführe, kommt diese Fehlermeldung:

Traceback (most recent call last):

 File "C:\Users\User\PycharmProjects\voiceAssistant\main.py", line 1162, in <module>

  execute()

 File "C:\Users\User\PycharmProjects\voiceAssistant\main.py", line 671, in execute

  wait_for_wake_word(recognizer, source)

 File "C:\Users\User\PycharmProjects\voiceAssistant\main.py", line 121, in wait_for_wake_word

  handle = pvporcupine.create(keywords=[keyword_path], sensitivities=[sensitivity], access_key=access_key)

       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

 File "C:\Users\User\PycharmProjects\voiceAssistant\venv\interpreter\Lib\site-packages\pvporcupine\_factory.py", line 59, in create

  raise ValueError(

ValueError: One or more keywords are not available by default. Available default keywords are:\ngrapefruit, picovoice, terminator, americano, computer, hey siri, bumblebee, hey barista, ok google, alexa, hey google, blueberry, grasshopper, jarvis, porcupine, pico clock

Es liegt aber nicht an einem Rechtschreibfehler im Dateipfad oder im API Key. Woran kann es sonst liegen?

Freundliche Grüsse

cmd, Code, künstliche Intelligenz, Programmiersprache, Python, Python 3, Pycharm
komme bei einem Python Problem nicht weiter?

Hallo, ich programmiere gerade für mich eine art strasen rennen mit einem neuronalen netzt. das soll aber wirklich ein zeitaufwendiges projekt werden. aber jetzt brauch ich hilfe bei der strase. Ich will einen strasen kurs programmieren der schon bisschen lang ist, damit die autos auch fahren könne. kann mir villeicht jemand helfen weil sonst schaff ich das nicht. ich brauch sonst ewig dafür. also lasst euch von den roten linien nicht verwirren, aber es wäre perfekt wenn ihr einen strasen weg programmieren könntet mir kurven und allem drum und dran so wie zum teil schon in meinem code. Ausenrum um die strase soll eine blaue linie führen. Ein dickes dickes DANKE wenn das jemand schaffen würde, weil ich schaffs nicht. Da bin ich noch zu unerfahren. Deshalb wird das neuronales netzt unendlich dauern. Hier mein code :

import tkinter as tk

import math

class Ball:

  def __init__(self, canvas, color, size, x, y):

    self.canvas = canvas

    self.color = color

    self.size = size

    self.x = x

    self.y = y

    self.id = canvas.create_oval(x, y, x+size, y+size, fill=color)

    self.lines = [self.canvas.create_line(x, y, x, y, fill='red') for _ in range(5)]

    self.text = self.canvas.create_text(x, y, text="", fill="black")

  def update_lines(self):

    angles = [random.uniform(math.radians(-80), math.radians(80)) for _ in range(5)]

    distances = []

    for i, (line, angle) in enumerate(zip(self.lines, angles)):

      end_x = self.x + self.size/2 + 1000*math.cos(angle)

      end_y = self.y + self.size/2 - 1000*math.sin(angle)

      if end_y < road_top:

        end_y = road_top

      elif end_y > road_bottom:

        end_y = road_bottom

      self.canvas.coords(line, self.x + self.size/2, self.y + self.size/2, end_x, end_y)

      distances.append(min(abs(self.y + self.size/2 - road_top), abs(self.y + self.size/2 - road_bottom)))

    min_distance = min(distances)

    self.canvas.itemconfig(self.text, text=str(min_distance), state='normal')

  def hide_text(self):

    self.canvas.itemconfig(self.text, state='hidden')

def create_ball(canvas, size, y):

  x = 0

  return Ball(canvas, 'green', size, x, y)

root = tk.Tk()

canvas_width = 400

canvas_height = 300

ball_size = 10

road_top = canvas_height/2 - 50

road_bottom = canvas_height/2 + 50

canvas = tk.Canvas(root, width=canvas_width, height=canvas_height)

canvas.pack()

# Draw the road

canvas.create_rectangle(0, road_top, canvas_width, road_bottom, fill='gray')

canvas.create_line(0, canvas_height/2, canvas_width, canvas_height/2, fill='white', dash=(20, 20))

# Create balls on the road

balls = [create_ball(canvas, ball_size, y) for y in range(int(road_top), int(road_bottom), ball_size*2)]

for ball in balls:

  ball.update_lines()

  ball.hide_text()

root.mainloop()

Programm, Programmiersprache, Python, Straße, Python 3, Tkinter, Neuronales Netzwerk
Python lambda?

Was macht lambda in diesem Code und wofür steht x?

def sort_tasks_by_due_date():
tasks.sort(key=lambda x: datetime.strptime(x["due_date"], "%d.%m.%Y"))

Hier der Komplette Code:

from datetime import datetime, timedelta
tasks = []
def add_task(description, due_date, priority):
task = {"description": description, "due_date": due_date, "priority": priority, "completed": False}
tasks.append(task)
def mark_completed(task_index):
if 0 <= task_index < len(tasks):
tasks[task_index]["completed"] = True
else:
print("Ungültiger Index für Aufgabe!")
def remove_task(task_index):
task_index = int(task_index)
if 0 <= task_index < len(tasks):
del tasks[task_index]
else:
print("Ungültiger Index für Aufgabe!")
def show_tasks():
for task_number, task in enumerate(tasks):
status = "Erledigt" if task["completed"] else "Offen"
print(f"{task_number + 1}. Beschreibung: {task['description']}, Fälligkeitsdatum: {task['due_date']}, Priorität: {task['priority']} - {status}")
def sort_tasks_by_due_date():
tasks.sort(key=lambda x: datetime.strptime(x["due_date"], "%d.%m.%Y"))
def remind_near_due_dates(days_before):
today = datetime.today()
for task in tasks:
due_date = datetime.strptime(task["due_date"], "%d.%m.%Y")
#Das Datum der Aufgabe minus des heutigen Datums, gleichviele Tage wie die Festgelgten Tage ist, dann gib eine Erinnerung aus.
if due_date - today <= timedelta(days=days_before) and not task["completed"]:
print(f"Erinnerung: Die Aufgabe '{task['description']}' ist bald fällig am {task['due_date']}!")
while True:
print("\n--- ToDo-Liste ---")
print("1. Aufgabe hinzufügen")
print("2. Aufgabe als erledigt markieren")
print("3. Aufgabe entfernen")
print("4. Aufgaben anzeigen")
print("5. Aufgaben nach Fälligkeitsdatum sortieren")
print("6. Erinnerung an nahende Fälligkeitsdaten einrichten")
print("7. Beenden")
choice = input("Wähle eine Option: ")
if choice == "1":
description = input("Beschreibung: ")
while True:
due_date = input("Fälligkeitsdatum (TT.MM.JJJJ): ")
try:
due_date_obj = datetime.strptime(due_date, "%d.%m.%Y")
if due_date_obj < datetime.today():
print("Fehler: Das Datum liegt in der Vergangenheit! Bitte geben Sie ein zukünftiges Datum ein.")
else:
break
except ValueError:
print("Fehler: Ungültiges Datumsformat! Bitte geben Sie das Datum im Format TT.MM.JJJJ ein.")
priority = input("Priorität: ")
add_task(description, due_date, priority)
elif choice == "2":
task_index = int(input("Index der erledigten Aufgabe: ")) - 1
mark_completed(task_index)
elif choice == "3":
try:
task_index = int(input("Index der zu entfernenden Aufgabe: ")) - 1
remove_task(task_index)
except ValueError:
print("Ungültige Eingabe! Bitte geben Sie eine Ganzzahl ein.")
elif choice == "4":
show_tasks()
elif choice == "5":
sort_tasks_by_due_date()
elif choice == "6":
try:
days_before = int(input("Tage vor Fälligkeitsdatum für Erinnerung: "))
remind_near_due_dates(days_before)
except ValueError:
print("Gib eine gültige Eingabe ein!")
elif choice == "7":
break
else:
print("Ungültige Auswahl!")
Programmiersprache, Python, Lambda, Python 3
Wie kann ich machen, dass OpenAI mich duzt?

Hallo,

wie kann ich bei diesem Code machen, dass mich OpenAI bei allen Fragen, die es mir beantwortet, duzt und nicht siezt?

import pyttsx3
import re
import pyjokes
import speech_recognition as sr
import geocoder
import datetime
import pytz
from geopy.geocoders import Nominatim
from timezonefinder import TimezoneFinder
import openai

openai.api_key = 'sk-...'
model_id = "gpt-4"

engine = pyttsx3.init()


def recognize_speech(recognizer, source):
    print("Sage etwas...")
    audio = recognizer.listen(source, timeout=10)
    try:
        text = recognizer.recognize_google(audio, language="de-DE")
        print("Text: " + text)
        return text
    except sr.UnknownValueError:
        return "not_understood"
    except sr.RequestError as e:
        print(f"Fehler bei der Anfrage an die Google Web Speech API: {e}")
        return ""


def openai_request(prompt):
    response = openai.ChatCompletion.create(
        model=model_id,
        messages=[{"role": "user", "content": prompt}],
        max_tokens=150
    )

    api_usage = response['usage']
    print('Total Token consumed: {0}'.format(api_usage['total_tokens']))
    response_text = response.choices[0].message['content']
    prompt += response_text
    return prompt


def speak(text=None):
    if text:
        engine.say(text)
        engine.runAndWait()


def hey_luna_in_q(q):
    return "luna" in q.lower()


def wait_for_wake_word(recognizer, source):
    while True:
        print("Warte auf Wake-Word...")
        audio = recognizer.listen(source)
        try:
            text = recognizer.recognize_google(audio, language="de-DE")
            if hey_luna_in_q(text):
                print("Wake-Word erkannt!")
                return
        except sr.UnknownValueError:
            pass
        except sr.RequestError as e:
            print(f"Fehler bei der Anfrage an die Google Web Speech API: {e}")


def get_local_time(location_name):
    try:
        if location_name.lower() == "current location":
            current_location = geocoder.ip('me')
            latitude, longitude = current_location.latlng
        else:
            geolocator = Nominatim(user_agent="voiceAssistant")
            location = geolocator.geocode(location_name)

            if not location:
                return "Ort nicht gefunden"

            latitude = location.latitude
            longitude = location.longitude

        tf = TimezoneFinder()
        timezone = tf.timezone_at(lng=longitude, lat=latitude)

        if timezone:
            local_time = datetime.datetime.now(pytz.timezone(timezone))
            return local_time.strftime("%H:%M")
        else:
            return "Unbekannte Zeitzone"
    except Exception as e:
        print("Fehler beim Abrufen der lokalen Zeit:", e)
        return "Fehler"


def execute():
    recognizer = sr.Recognizer()

    witz_erzählt = False  # Variable, um den Zustand des Witzes zu verfolgen

    with sr.Microphone() as source:
        while True:
            wait_for_wake_word(recognizer, source)
            print("Warte auf Wake-Word...")

            q = recognize_speech(recognizer, source)
            print("Erkannter Text:", q)

            if q == "not_understood":
                speak("Entschuldigung! Das habe ich nicht verstanden.")
                continue

            if "hallo" in q.lower():
                speak("Hallo! Womit kann ich dir behilflich sein?")
                continue

            if "wie geht es dir" in q.lower():
                speak("Mir geht es gut, danke! Wie geht es dir?")
                continue

            if "spät ist es in" in q.lower() or "wieviel uhr ist es in" in q.lower() or "wieviel uhr in" in q.lower() or "zeit in" in q.lower() or "uhrzeit in" in q.lower():
                location_name = q.split("in")[-1].strip()
                print("Extrahierter Ortname:", location_name)
                local_time = get_local_time(location_name)
                print("Lokale Zeit für", location_name, ":", local_time)
                if local_time:
                    speak(f"In {location_name} ist es {local_time}.")
                else:
                    speak(f"Entschuldigung, ich konnte die Zeit für {location_name} nicht finden.")
                continue

            if "spät ist es" in q.lower() or "wieviel uhr" in q.lower() or "zeit in" in q.lower() or "uhrzeit in" in q.lower():
                current_location = geocoder.ip('me')
                latitude, longitude = current_location.latlng
                local_time = get_local_time("current location")
                speak(f"Es ist {local_time}.")
                continue

            if "erzähle mir einen witz" in q.lower() or "erzähl mir einen witz" in q.lower() or "ich möchte einen witz hören" in q.lower():
                joke = pyjokes.get_joke(language='de')
                speak(joke)
                witz_erzählt = True
                continue

            if "ich bin traurig" in q.lower() or "mir geht es nicht gut" in q.lower() or "es geht mir nicht gut" in q.lower() or "mir geht es schlecht" in q.lower():
                if not witz_erzählt:
                    speak("Das tut mir leid zu hören. Ich bin hier für dich, wenn du reden möchtest oder jemanden zum Zuhören brauchst. Soll ich dir zum Aufmuntern einen Witz erzählen?")
                    response = recognize_speech(recognizer, source)
                    if "ja" in response.lower():
                        joke = pyjokes.get_joke(language='de')
                        speak(joke)
                        continue
                    elif "nein" in response.lower():
                        speak("Ok, womit kann ich dir sonst behilflich sein?")
                        continue
                    else:
                        speak("Entschuldigung. Ich habe dich nicht verstanden.")
                        continue

            prompt = q
            response = openai_request(prompt)

            if response.lower().startswith(q.lower()):
                response = response[len(q):].strip()

            speak(response)


if __name__ == '__main__':
    execute()

Freundliche Grüsse

Code, künstliche Intelligenz, Programmiersprache, Python, Python 3, Pycharm, ChatGPT
Warum kann ich OpenAI nicht im Terminal verwenden?

Hallo,

ich programmiere gerade einen Sprachassistenten. Das ist der Code dafür:

import pyttsx3
import re
import pyjokes
import speech_recognition as sr
from pyowm import OWM
import spotipy
from spotipy.oauth2 import SpotifyOAuth
import time
import random
import datetime
import pytz
from geopy.geocoders import Nominatim
from timezonefinder import TimezoneFinder
import sounddevice as sd
import pvporcupine
import openai

openai.api_key = 'sk-...'
model_id = "gpt-4"

engine = pyttsx3.init()


def recognize_speech(recognizer, source):
    print("Sage etwas...")
    audio = recognizer.listen(source, timeout=15)
    try:
        text = recognizer.recognize_google(audio, language="de-DE")
        print("Text: " + text)
        return text
    except sr.UnknownValueError:
        return "not_understood"
    except sr.RequestError as e:
        print(f"Fehler bei der Anfrage an die Google Web Speech API: {e}")
        return ""


def openai_request(prompt):
    response = openai.Completion.create(
        model=model_id,
        messages=[{"role": "user", "content": prompt}],
        max_tokens=150
    )

    api_usage = response['usage']
    print('Total Token consumed: {0}'.format(api_usage['total_tokens']))
    prompt += response.choices[0].message['content']
    return prompt


def speak(text=None):
    if text:
        engine.say(text)
        engine.runAndWait()


def hey_luna_in_q(q):
    return "hey luna" in q.lower()


def wait_for_wake_word(recognizer, source):
    while True:
        print("Warte auf Wake-Word...")
        audio = recognizer.listen(source)
        try:
            text = recognizer.recognize_google(audio, language="de-DE")
            if hey_luna_in_q(text):
                print("Wake-Word erkannt!")
                return
        except sr.UnknownValueError:
            pass
        except sr.RequestError as e:
            print(f"Fehler bei der Anfrage an die Google Web Speech API: {e}")


def execute():
    recognizer = sr.Recognizer()

    with sr.Microphone() as source:
        wait_for_wake_word(recognizer, source)

        while True:
            q = recognize_speech(recognizer, source)
            print("Erkannter Text:", q)

            if q == "not_understood":
                speak("Entschuldigung! Das habe ich nicht verstanden.")
                continue

            if "hallo" in q.lower():
                speak("Hallo! Womit kann ich dir behilflich sein?")
                continue

            prompt = q
            response = openai_request(prompt)

            if response.lower().startswith(q.lower()):

                response = response[len(q):].strip()

            speak(response)
            return


if __name__ == '__main__':
    execute()

Wenn ich in PyCharm das Programm ausführe und dann z.B. frage: Wann war der erste Weltkrieg? Dann funktioniert alles perfekt (ich bekomme eine Antwort und es gibt keine Fehler). Wenn ich das Programm nun aber im Terminal ausführe, kommt dieser Fehlercode:

Text: wann war der erste Weltkrieg

Erkannter Text: wann war der erste Weltkrieg

Traceback (most recent call last):

 File "C:\Users\User\PycharmProjects\voiceAssistant\main.py", line 106, in <module>

  execute()

 File "C:\Users\User\PycharmProjects\voiceAssistant\main.py", line 95, in execute

  response = openai_request(prompt)

        ^^^^^^^^^^^^^^^^^^^^^^

 File "C:\Users\User\PycharmProjects\voiceAssistant\main.py", line 39, in openai_request

  response = openai.Completion.create(

        ^^^^^^^^^^^^^^^^^^^^^^^^^

 File "C:\Users\User\AppData\Local\Programs\Python\Python312\Lib\site-packages\openai\lib\_old_api.py", line 39, in __call__

  raise APIRemovedInV1(symbol=self._symbol)

openai.lib._old_api.APIRemovedInV1:

You tried to access openai.Completion, but this is no longer supported in openai>=1.0.0 - see the README at https://github.com/openai/openai-python for the API.

You can run `openai migrate` to automatically upgrade your codebase to use the 1.0.0 interface.

Alternatively, you can pin your installation to the old version, e.g. `pip install openai==0.28`

A detailed migration guide is available here: https://github.com/openai/openai-python/discussions/742

C:\Users\User\PycharmProjects\voiceAssistant>

Ich weiss wirklich nicht, wie ich diesen Fehler beheben kann. Bitte helft mir.

Freundliche Grüsse

Code, künstliche Intelligenz, Programmiersprache, Python, Terminal, Python 3, Pycharm, ChatGPT
Warum wird das Wake Word nicht erkannt?

Hallo,

ich programmiere momentan einen Sprachassistenten und bin gerade am Wake Word dran. Mein Code sieht so aus:

import pyttsx3
import re
import pyjokes
import speech_recognition as sr
from pyowm import OWM
import spotipy
from spotipy.oauth2 import SpotifyOAuth
import time
import random
import datetime
import pytz
from geopy.geocoders import Nominatim
from timezonefinder import TimezoneFinder
import sounddevice as sd
import pvporcupine
import openai

openai.api_key = 'sk-...'
model_id = "gpt-4"

engine = pyttsx3.init()


def recognize_speech(recognizer, source):
    print("Sage etwas...")
    audio = recognizer.listen(source, timeout=15)
    try:
        text = recognizer.recognize_google(audio, language="de-DE")
        print("Text: " + text)
        return text
    except sr.UnknownValueError:
        return "not_understood"
    except sr.RequestError as e:
        print(f"Fehler bei der Anfrage an die Google Web Speech API: {e}")
        return ""


def picovoice_listen():
    keyword_file_path = "C:\\Hey-Luna_de_windows_v3_0_0\\Hallo-Luna_de_windows_v3_0_0.ppn"
    sensitivities = [0.7]

    try:
        porcupine = pvporcupine.create(
            access_key='...',
            keyword_paths=['C:\\Hey-Luna_de_windows_v3_0_0\\Hallo-Luna_de_windows_v3_0_0.ppn'],
            model_path='C:\\Hey-Luna_de_windows_v3_0_0\\porcupine_params_de.pv'
        )

        sample_rate = porcupine.sample_rate
        print("Sample Rate:", sample_rate)

        pcm = record_audio(sample_rate=sample_rate, duration=3)
        keyword_index = porcupine.process(pcm)

        if keyword_index >= 0:
            print("Wake word detected!")
            porcupine.delete()
            return True
        else:
            print("Wake word not detected!")

    except pvporcupine.PorcupineError as e:
        print(f"Porcupine error: {e}")

    return False


def record_audio(sample_rate, duration):
    print("Aufnahme gestartet...")
    audio = sd.rec(int(sample_rate * duration), samplerate=sample_rate, channels=1, dtype='int16')
    sd.wait()
    print("Aufnahme beendet.")
    return audio.flatten()[:512]


def openai_request(prompt):
    response = openai.ChatCompletion.create(
        model=model_id,
        messages=prompt
    )

    api_usage = response['usage']
    print('Total Token consumed: {0}'.format(api_usage['total_tokens']))
    prompt.append({'role': response.choices[0].message.role, 'content': response.choices[0].message.content})
    return prompt


def speak(text):
    engine.say(text)
    engine.runAndWait()


def ausführen():
    recognizer = sr.Recognizer()

    while True:
        if picovoice_listen():
            with sr.Microphone() as source:
                q = recognize_speech(recognizer, source)
                print("Erkannter Text:", q)

                if q == "not_understood":
                    speak("Entschuldigung! Das habe ich nicht verstanden.")
                    continue

                elif "hallo" in q:
                    speak('Hallo! Womit kann ich dir behilflich sein?')
                    continue

                else:
                    prompt = [{'role': 'user', 'content': q}]
                    prompt = openai_request(prompt)
                    response = prompt[-1]['content']
                    speak(response)
                    return  # Programm beenden, nachdem die Antwort gesprochen wurde


if __name__ == '__main__':
    ausführen()

wenn ich nun aber das Programm ausführe und das Wake Word ("Hallo Luna") sage, kommt immer "Wake word not detected!" und dann wiederholt sich das ganze, egal wie oft ich das Wake word sage. Woran liegt das?

Freundliche Grüsse

Code, künstliche Intelligenz, Programmiersprache, Python, Python 3, Pycharm
Warum Funktioniert mein Wake Word nicht?

Hallo,

ich programmiere gerade einen Sprachassistenten und bin gerade am Wake Word dran. Mein Code sieht so aus:

import openai
import pyttsx3
import re
import pyjokes
import speech_recognition as sr
from pyowm import OWM
import spotipy
from spotipy.oauth2 import SpotifyOAuth
import time
import random
import datetime
import pytz
from geopy.geocoders import Nominatim
from timezonefinder import TimezoneFinder
import sounddevice as sd
import pvporcupine

openai.api_key = 'sk-...'
model_id = "gpt-4"

engine = pyttsx3.init()

WAKE_WORD_MODEL_FILE_PATH = "C:\\Hey-Luna_de_windows_v3_0_0\\Hey-Luna_de_windows_v3_0_0.ppn"


def recognize_speech():
    recognizer = sr.Recognizer()

    while True:
        with sr.Microphone() as source:
            print("Sage etwas...")
            audio = recognizer.listen(source, timeout=15)

        try:
            text = recognizer.recognize_google(audio, language="de-DE")
            print("Text: " + text)
            return text
        except sr.UnknownValueError:
            return "not_understood"
        except sr.RequestError as e:
            print(f"Fehler bei der Anfrage an die Google Web Speech API: {e}")
            return ""


def record_audio(sample_rate, duration):
    print("Aufnahme gestartet...")
    audio = sd.rec(int(sample_rate * duration), samplerate=sample_rate, channels=1, dtype='int16')
    sd.wait()
    print("Aufnahme beendet.")
    return audio.flatten()


def picovoice_listen():
    keyword_file_path = "C:\\Hey-Luna_de_windows_v3_0_0\\Hey-Luna_de_windows_v3_0_0.ppn"
    sensitivities = [0.5]  # Adjust as needed

    try:
        handle = pvporcupine.create(
            keyword_paths=[keyword_file_path],
            sensitivities=sensitivities,
            access_key='...'
        )

        sample_rate = handle.sample_rate

        while True:
            pcm = record_audio(sample_rate=sample_rate, duration=15)
            keyword_index = handle.process(pcm)

            if keyword_index >= 0:
                print("Wake word detected!")
                break

    except pvporcupine.PorcupineError as e:
        print(f"Porcupine error: {e}")

    finally:
        if 'handle' in locals():
            handle.delete()


def openai_request(prompt):
    response = openai.ChatCompletion.create(
        model=model_id,
        messages=prompt
    )

    api_usage = response['usage']
    print('Total Token consumed: {0}'.format(api_usage['total_tokens']))
    prompt.append({'role': response.choices[0].message.role, 'content': response.choices[0].message.content})
    return prompt


def speak(text):
    engine.say(text)
    engine.runAndWait()


def ausführen():
    while True:
        picovoice_listen()

        q = recognize_speech()
        print("Erkannter Text:", q)

        if q == "not_understood":
            speak("Entschuldigung! Das habe ich nicht verstanden.")
            break

        elif not q:
            break

        elif "hallo" in q:
            speak('Hallo! Womit kann ich dir behilflich sein?')
            continue

        else:
            prompt = [{'role': 'user', 'content': q}]
            prompt = openai_request(prompt)
            response = prompt[-1]['content']
            speak(response)
            break


if __name__ == '__main__':
    ausführen()

wenn ich nun aber das Programm ausführe, kommt diese Meldung und ich muss das Wake Word nicht sagen, um meine Frage zu stellen, welche dann von z.B. OpenAI beantwortet wird:

C:\Users\User\PycharmProjects\voiceAssistant\venv\interpreter\Scripts\python.exe C:\Users\User\PycharmProjects\voiceAssistant\main.py 

Porcupine error: Initialization failed:

 [0] Keyword file (.ppn) and model file (.pv) should belong to the same language. File belongs to `de` while model file (.pv) belongs to `en`.

Sage etwas...

woran liegt das?

Freundliche Grüsse

Code, künstliche Intelligenz, Programmiersprache, Python, Python 3, Pycharm, ChatGPT
Destination IP von Port?

Moin, hab durch meine Langeweile nach neuen Projekten gesucht und bin darauf gestoßen ein Programm zu schreiben welches mir die Destination IP durch das scannen eines ports gibt. Hab es erst als mit einer TCP Verbindung versucht damit hat alles geklappt dann wollte ich es mit einer UDP Verbindung testen und natürlich musste ich dafür einen neuen Code schreiben allerdings klappt das ganze nicht so wie ich es mir vorstellt und komme nicht drauf wie ich es anders machen könnte. Ich hab das ganze an einem CS2 server versucht und hab mich mit einem Public server verbunden, in Wireshark wird mir das ganz normal angezeigt in meinem Programm wird mir leider trotzdem nichts angezeigt :/Keine Ahnung ob ich einen Denkfehler habe oder komplett falsch an die sache rangegangen bin. Gerne Vorschläge + Danke im Voraus :) Hier mein Code:

import socket

def check_port(port):
    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    
    try:
        host = socket.gethostbyname(socket.gethostname())

        sock.bind((host, port))
        print(f"Port {port} ist offen und bereit.")
        print(f"Checking {host}:{port}")

        while True:
            data, addr = sock.recvfrom(1024)
            print(f"Empfangene Daten von {addr[0]}:{addr[1]}: {data}")

    except OSError as e:
        print(f"OS Error{port}: {e}")
    finally:
        sock.close()

if __name__ == "__main__":
    port = 27015  
    check_port(port)
IP-Adresse, Netzwerktechnik, Port, Programmiersprache, Python, Python 3, UDP
Crawler geht nicht weiter, wenn fertig mit einer URL?

Hallo zusammen,

ich arbeite gerade an einem Python-Crawler, der spezifisch für die Website beispielurl.de entwickelt wurde. Mein Ziel ist es, verschiedene Unterseiten zu crawlen, die jeweils unterschiedlichen Kategorien angehören, wie z.B. "Flaschenhersteller" und "Kartenhersteller". Der Crawler soll automatisch von einer Kategorie (z.B. beispielurl.de/Flaschenhersteller/page-1, beispielurl.de/Flaschenhersteller/page-2, usw.) zur nächsten wechseln (z.B. beispielurl.de/Kartenhersteller/page-1, beispielurl.de/Kartenhersteller/page-2, usw.), sobald alle Seiten der aktuellen Kategorie durchlaufen sind.

Leider funktioniert der Wechsel zwischen den Kategorien nicht wie erwartet. Der Crawler verarbeitet alle Seiten der ersten Kategorie korrekt, aber anstatt zur nächsten Kategorie zu wechseln, beginnt er wieder von vorn bei der ersten Kategorie, ohne die nachfolgenden Kategorien zu berücksichtigen.

Hier ist ein vereinfachter Ausschnitt meines Codes:

def process_page(self, url):
  soup = self.fetch_page_with_selenium(url)
  links = self.extract_PLZ_links(soup)

  for link in links:
    self.fetch_PLZ_details(link)

def run(self):
  try:
    for code in self.postal_codes:
      page_number = 1
      has_more_pages = True

      while has_more_pages:
        url = f"{self.base_url}/suche/-/{code}?page={page_number}"
        soup = self.fetch_page_with_selenium(url)
        links = self.extract_PLZ_links(soup)

        if links:
          for link in links:
            self.fetch_PLZ_details(link)
            page_number += 1
        else:
          has_more_pages = False
  finally:
    self.driver.quit()
    self.csv_handler.close_csv()

Hersteller = [Flaschenhersteller, Kartenhersteller, etc. ]
crawler = WebCrawler("https://beispielurl.de", Hersteller)
crawler.run()

Hat jemand eine Idee, warum der Crawler nicht zur nächsten Kategorie wechselt und wie ich dieses Problem beheben könnte? Ich bin für jeden Tipp dankbar!

HTML, Webseite, programmieren, Code, Python, Webentwicklung, crawler, Python 3
Wo kann ich Tokens für GPT-4 kaufen?

Hallo,

ich programmiere gerade einen Sprachassistenten und wollte ihn nun mit GPT-4 verbinden, ich habe auf Shop - ChatGPT 50000 Tokens gekauft, doch wenn ich das Programm starte, steht, dass ich trotzdem keinen Zugriff auf GPT-4 habe. Muss ich die Tokens irgendwo anders kaufen?

Mein Code:

import openai
import pyttsx3
import re
import pyjokes
import speech_recognition as sr
from pyowm import OWM
import spotipy
from spotipy.oauth2 import SpotifyOAuth
import time
import random
import datetime
import pytz
from geopy.geocoders import Nominatim
from timezonefinder import TimezoneFinder


openai.api_key = 'sk-...'
model_id = "gpt-4"

engine = pyttsx3.init()


def recognize_speech():
    recognizer = sr.Recognizer()

    while True:
        with sr.Microphone() as source:
            print("Sage etwas...")
            audio = recognizer.listen(source, timeout=15)

        try:
            text = recognizer.recognize_google(audio, language="de-DE")
            print("Text: " + text)
            return text
        except sr.UnknownValueError:
            return "not_understood"
        except sr.RequestError as e:
            print(f"Fehler bei der Anfrage an die Google Web Speech API: {e}")
            return ""


def openai_request(prompt):
    response = openai.ChatCompletion.create(
        model=model_id,
        messages=prompt
    )

    api_usage = response['usage']
    print('Total Token consumed: {0}'.format(api_usage['total_tokens']))
    prompt.append({'role': response.choices[0].message.role, 'content': response.choices[0].message.content})
    return prompt


def speak(text):
    engine.say(text)
    engine.runAndWait()


def ausführen():
    while True:
        q = recognize_speech()
        print("Erkannter Text:", q)

        if q == "not_understood":
            speak("Entschuldigung! Das habe ich nicht verstanden.")
            break

        elif not q:
            break

        elif "hallo" in q:
            speak('Hallo! Womit kann ich dir behilflich sein?')
            break

        else:
            prompt = [{'role': 'user', 'content': q}]
            prompt = openai_request(prompt)
            response = prompt[-1]['content']
            speak(response)


if __name__ == '__main__':
    ausführen()

Fehlercode:

C:\Users\User\PycharmProjects\voiceAssistant\venv\interpreter\Scripts\python.exe C:\Users\User\PycharmProjects\voiceAssistant\main.py 

Sage etwas...

Text: wann war der erste Weltkrieg

Erkannter Text: wann war der erste Weltkrieg

Traceback (most recent call last):

 File "C:\Users\User\PycharmProjects\voiceAssistant\main.py", line 83, in <module>

  ausführen()

 File "C:\Users\User\PycharmProjects\voiceAssistant\main.py", line 77, in ausführen

  prompt = openai_request(prompt)

       ^^^^^^^^^^^^^^^^^^^^^^

 File "C:\Users\User\PycharmProjects\voiceAssistant\main.py", line 43, in openai_request

  response = openai.ChatCompletion.create(

        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

 File "C:\Users\User\PycharmProjects\voiceAssistant\venv\interpreter\Lib\site-packages\openai\api_resources\chat_completion.py", line 25, in create

  return super().create(*args, **kwargs)

      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

 File "C:\Users\User\PycharmProjects\voiceAssistant\venv\interpreter\Lib\site-packages\openai\api_resources\abstract\engine_api_resource.py", line 153, in create

  response, _, api_key = requestor.request(

              ^^^^^^^^^^^^^^^^^^

 File "C:\Users\User\PycharmProjects\voiceAssistant\venv\interpreter\Lib\site-packages\openai\api_requestor.py", line 298, in request

  resp, got_stream = self._interpret_response(result, stream)

            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

 File "C:\Users\User\PycharmProjects\voiceAssistant\venv\interpreter\Lib\site-packages\openai\api_requestor.py", line 700, in _interpret_response

  self._interpret_response_line(

 File "C:\Users\User\PycharmProjects\voiceAssistant\venv\interpreter\Lib\site-packages\openai\api_requestor.py", line 765, in _interpret_response_line

  raise self.handle_error_response(

openai.error.InvalidRequestError: The model `gpt-4` does not exist or you do not have access to it. Learn more: https://help.openai.com/en/articles/7102672-how-can-i-access-gpt-4.

Process finished with exit code 1

Freundliche Grüsse

kaufen, Code, Error, künstliche Intelligenz, Programmiersprache, Python, Python 3, token, Sprachassistent, Pycharm, ChatGPT

Meistgelesene Fragen zum Thema Python 3