leider komme ich nicht weiter.
Kann mir jemand sagen wie ich bei IPS auf dem Raspberry eine PHP Extension aktiviere.
wo ist denn das extension dir unter der IPS Linux Version?
und wie bekomme ich die PDO / SQLITE noch reingeladen…
irgendwie stehe ich auf dem schlauch…
Es ist leider ein riesiges Problem. Ansonsten hätten wir schon längst eine Lösung. Such mal im Forum. Theoretisch kannst du Extensions laden… Aber wie man die passend kompiliert ist die Quizfrage
ok,
da ist dann der hund leider begraben…
da kommen wir wohl nicht weiter mit extensions - zumal die php extensions unter linux mittlerweile anders genutzt / installiert werden als unter windows mit dll. bzw. .so dateien.
nein, nichts gefunden.
aber dann wird die implementierung der extensions etc. vermutlich bei euch schwieriger sein.
ob es gegangen wäre php hier als CGI irgendiwe einzubauen bzw. in IPS zu integrieren kann ich nicht beurteilen, da ich die iPS Architektur ja nicht detailliert kenne.
Sofern man Windows (als solches mag) gibt es inzwischen preislich betrachtet Alternativen zu Raspi und Co.
Ein Kompletter Raspi mit Gehäuse / Netzteil / SD Karte kostet auch schnell 100 - 150Euro.
Für das Geld gibt es evtl. „einfache“ Windows 10 Mini PCs aus China (Cenovo MiniPC2 / Onda / Beelink) …
Ich hab gerade ein CENOVO mit Intel x5-z8300, 4GB RAM, 64GB eMMC, Win10 HOme für 100Euro im Test.
hier mein Workaround - läuft nun seit 48h ohne Probleme.
IP-Symcon unter Linux geht ja die sqlite extension nicht mehr.
Deshalb folgender Ansatz:
auf der Linux (Raspberry) läuft ein Python dienst und horcht auf einem Port.
Er nimmt SQL Abfragen engegen und liefert das Ergebnis als JSON Array zurück.
So kann man aus IPS dann auf eine SQLITE oder mit dem gleichen Prinzip sicher auch machbar auf eine mysQL DB zugrifen:
Hier das Python Script (per crontab (@reboot) oder mit einem init-script starten):
#!/usr/bin/python
import socket
import sys
import sqlite3
import string
import json
# Settings
SockID = 20101
debug = 0
db = "/mnt/usb1/symcon/user/settings.sqlite"
# Maxium length of Commands to be recieved
recbuffer = 1024
#---------------------- PROGRAM START ------------------------------------------
# Create a TCP/IP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# Bind the socket to the port
server_address = ('0.0.0.0', SockID)
print >>sys.stderr, 'starting up on %s port %s' % server_address
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind(server_address)
sock.listen(1)
#Binding DB
print 'DB Connection to: ' + db
dbcon = sqlite3.connect(db)
dbc = dbcon.cursor()
# Listen for incoming connections
data = "NOTHING"
while data != "CLOSE":
conn, addr = sock.accept();
if debug == 1:
print "-------------------------------------------------------"
print 'Connected with ' + addr[0] + ':' + str(addr[1])
buff = ''
while 1:
data = conn.recv(recbuffer)
buff += data
if "|SQLEND" in buff:
cmd = buff
if debug == 1:
print "|SQLEND detected: " + buff
buff = ""
break
cmd = cmd.strip()
cmds = cmd.split("|")
if len(cmds) < 2 :
print 'Wrong Command Recieved'
conn.send("ERROR|WRONG COMMAND SYNTAX.")
else:
cmd = cmds[0].upper()
if debug == 1:
print 'Command Recieved Type: ' + cmds[0] + ", Command: " + cmds[1]
if cmd == 'PING':
conn.send("OK")
elif cmd == "QUIT":
conn.send("OK")
data = "CLOSE"
print "Shutting down server."
elif cmd == 'SQL':
if debug == 1:
print "SQL Execution: " + cmds[1]
try:
l = len(cmds[1].strip())
if l != 0:
dbc.execute(cmds[1])
dbcon.commit()
if debug == 1:
print "SQL Execution finished."
query_result = [ dict(line) for line in [zip([ column[0] for column in dbc.description], row) for row in dbc.fetchall()] ]
if debug == 1:
print "Send result back to receiver."
conn.send('OK|' + json.dumps(query_result));
except sqlite3.Error as er:
print 'SQL Error: ', er.message
conn.send('ERROR|'+er.message);
if debug == 1:
print "Send |SQLEND."
conn.send('|SQLEND')
conn.close()
sock.shutdown(socket.SHUT_RDWR)
sock.close()
dbcon.close()
Und hier die PHP Funktion in IPS um den ‚Dienst anzusprechen‘: