Php, Python, Portfreigabe und Co

Python in C/C++ embedden, C-Module, ctypes, Cython, SWIG, SIP etc sind hier richtig.
Antworten
meathor
User
Beiträge: 6
Registriert: Dienstag 24. Mai 2022, 16:46

Moin,

ich versuche gerade eine abfrage auf eine Gerät (Senec Speicher) zum laufen zu bekommen.

Ziel ist es eine Datei zu schreiben welche von PHP wieder ausgelesen und ausgewertet werden kann. Leider bekomme ich das Script auf meinem V-Server nicht richtig zum laufen.

heir die Fehler meldung:

Code: Alles auswählen

  File "senec.py", line 32
    self.read_api  = f "http://kapanovu31.dyn.netcomcity.de:8081/lala.cgi"
                                                                         ^
SyntaxError: invalid syntax
Ich habe lediglich die Url in der entsprechenden Zeile geändert. Das vollständige script findet Ihr hier auf GitHub:

https://gist.github.com/smashnet/82ad0b ... 49ba08f88a

In der Bash bekomme ich oben genannten Fehler wenn ich es dort ausführen will. Habt ihr da evtl einen Tipp?

Ich kann bisher nur HTML, CSS, PHP, JS und mysql zusätzlich nen bissl Bash und CMD zum Hausgebrauch.

Gruß
Benutzeravatar
pillmuncher
User
Beiträge: 1511
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

@meathor: Vergleiche

Code: Alles auswählen

>>> f "xxx"
  File "<stdin>", line 1
    f "xxx"
      ^^^^^
SyntaxError: invalid syntax
>>> f"xxx"
'xxx'
In specifications, Murphy's Law supersedes Ohm's.
meathor
User
Beiträge: 6
Registriert: Dienstag 24. Mai 2022, 16:46

pillmuncher hat geschrieben: Dienstag 24. Mai 2022, 19:24 @meathor: Vergleiche

Code: Alles auswählen

>>> f "xxx"
  File "<stdin>", line 1
    f "xxx"
      ^^^^^
SyntaxError: invalid syntax
>>> f"xxx"
'xxx'
Sry... selbst wenn ich deine "xxx" durch meine URL ersetze komme ich da nicht weiter... :| Liegt bestimmt daran das ich nicht genug Erfahrung mit Python habe, aber an meiner URL kann ich keine Fehler sehen :?:

Was meinst Du (etwas genauer)?

Gerne auch mit verweis auf die Python Doku was da möglich/richtig ist.

Gruß
Benutzeravatar
pillmuncher
User
Beiträge: 1511
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

Im ersten Fall ist zwischen f und "xxx" ein Leerzeichen, im zweiten nicht. Für's Programmieren gilt, was Lou Reed immer gesagt hat: Everything is detail.
In specifications, Murphy's Law supersedes Ohm's.
meathor
User
Beiträge: 6
Registriert: Dienstag 24. Mai 2022, 16:46

pillmuncher hat geschrieben: Dienstag 24. Mai 2022, 19:41 Im ersten Fall ist zwischen f und "xxx" ein Leerzeichen, im zweiten nicht. Für's Programmieren gilt, was Lou Reed immer gesagt hat: Everything is detail.
Moin...

danke für die Antwort, aber leider macht das keinen Unterschied :x Ob mit oder Ohne leer zeicher bleibt die Fehlermeldung gleich:

Code: Alles auswählen

File "senec.py", line 32
    self.read_api  = f"http://kapanovu31.dyn.netcomcity.de:8081/lala.cgi"
                                                                         ^
SyntaxError: invalid syntax
Daran kann also nicht gelegt haben :(

Gruß
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Der Syntax Fehler ist wahrscheinlich davor. Bitte poste das gesamte Skript.
paddie
User
Beiträge: 103
Registriert: Donnerstag 11. Oktober 2018, 18:09

Kleiner Hinweis vielleicht. Es ist (vielleicht bin ich auch einfach nur zu paranoid) eine SEHR blöde Idee sowas frei zugänglich ans Netz zu hängen. Auf den ersten Blick sieht man zwar "nur" deine Verbrauchsdaten und ähnliches, aber so eine zugängliche Loginmöglichkeit ist schon ein Risiko.

Ergänzung: Wenn ich das Script hier ausführe und bei den XXXX deine URL eingebe funktionierts bei mir

Code: Alles auswählen

if __name__ == "__main__":
    api = Senec("XXXX")
    print(api.get_values())
und ich bekomme ein dict mit den aktuellen Werten deines Batteriepacks.
Benutzeravatar
sparrow
User
Beiträge: 4361
Registriert: Freitag 17. April 2009, 10:28

@meathor: Mit welcher Python Version versuchst du denn das Script zu starten?
meathor
User
Beiträge: 6
Registriert: Dienstag 24. Mai 2022, 16:46

Hallo,

@sparrow: installiert ist "Python 2.7.16" auf dem Server. (in der Bash: python -V)

@paddie: Das werde ich dann noch alles anpassen.

Gruß
Sirius3
User
Beiträge: 18051
Registriert: Sonntag 21. Oktober 2012, 17:20

@meathor: und was gibt `python3 -V` aus?
meathor
User
Beiträge: 6
Registriert: Dienstag 24. Mai 2022, 16:46

@Sirius3: "Python 2.7.16"

Gruß
Benutzeravatar
sparrow
User
Beiträge: 4361
Registriert: Freitag 17. April 2009, 10:28

@meathor: Python 2.x ist tot und wird seid Jahren nicht mehr mit Patches versorgt. Deshalb läuft auch dein Script nicht, weil das für Python >3.6 geschrieben wurde, so wie ich das sehe.

Python 2.7 ist noch bei den meisten Linux Distributionen aus Kompatibilitätsgründen installiert und über den Befehl "python" aufrufbar. Python 3.x erreicht man in der Regel über "python3". Deshalb würde es mich stark verwundern, wenn die Aussage aus deinem letzten Post so stimmt.
meathor
User
Beiträge: 6
Registriert: Dienstag 24. Mai 2022, 16:46

sparrow hat geschrieben: Mittwoch 25. Mai 2022, 08:08 @meathor: Python 2.x ist tot und wird seid Jahren nicht mehr mit Patches versorgt. Deshalb läuft auch dein Script nicht, weil das für Python >3.6 geschrieben wurde, so wie ich das sehe.

Python 2.7 ist noch bei den meisten Linux Distributionen aus Kompatibilitätsgründen installiert und über den Befehl "python" aufrufbar. Python 3.x erreicht man in der Regel über "python3". Deshalb würde es mich stark verwundern, wenn die Aussage aus deinem letzten Post so stimmt.
Das war es :) Danke... mittels "python3" das script aufgerufen und es läuft. Nun kann ich mich daran machen und es umbauen.

Vileicht finde ich eine möglichkeit python3 als standard auf dem Server zu verwenden und die 2 zu entfernen.

python3 -V gibt: Python 3.7.3

Gruß
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich würde da nicht dran rumfummeln. Im Zweifel machst du was kaputt. Benutz einfach Python 3, und gut ist.
Antworten