RasPiCar Projekt Forum

Normale Version: WifiManager
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3 4
Hi Leute,

nach einem Alpha-Test durch mehrere User die sich bereit erklärt haben das "Versuchskaninchen" zu spielen ist es nun soweit - die erste öffentliche Version des Wifimanagers ist da. Getestet wurde auf einem RPi3 mit eingebettetem Wlan-Chip. Einschränkungen und fehlfunktionen kann es im Modus Access-Point geben wenn z.B- ein Pi2 mit einem Wlan-Dongle eines Drittanbieters verwendet wird. Die Funktion des WLan-Clients ist davon unbeeinträchtigt.

Vor der Nutzung des Addons: Backup der SD-Karte machen!

Funktionen:

- Verfügbare Wlan-Netze in der Umgebung werden gescannt und in einer Liste angezeigt
- Es können bis zu vier Wlan-Netze eingerichtet werden - Tippen auf die Fläche Links zum Einrichten/Ändern - sobald diese
  belegt ist wird die nächste freigegeben
- Gespeicherte Wlan-Netze können aktiviert, deaktiviert, gelöscht oder ausgewählt werden
- Das Addon bietet den Modus als Access-Point zu arbeiten
- Verbundene Clients im Modus Access-Point werden angezeigt
- Der Status von Hostapd (Access-Point) und Dnsmasq (DNS und DHCP) werden im Modus Access-Point überwacht




Besonderheiten Access-Point:

In den Einstellungen kann der Modus aktiviert werden. Nach dem verlassen der Einstellungen wird vom Addon geprüft ob alle Voraussetzungen des Systems erfüllt sind. Ist dies nicht der Fall wird angeboten die fehlenden Pakete via Apt zu installieren und die Einrichtung vorzunehmen. Wird dies mit Ja beantwortet läuft das Setup durch und die Schaltfläche "Umschalten auf Access-Point" wird verfügbar mit der der Modus aktiviert werden kann. Wenn die Frage mit Nein beantwortet wird läuft das Addon weiter nur als Client. Die Prüfung der Systemvoraussetzungen erfolgt bei jedem Start des Addons.
SSID und Passwort können in den Einstellungen gesetzt werden. Das Addon bringt aber Grundeinstellungen mit.
Die SSID lautet "CARPI" und das Passwort "1234567890". Bitte ändert zumindest das Passwort auf ein eigenes damit kein fremder Zugriff möglich ist!

Beachtet bitte, dass es noch ein frühes Stadium des Addons ist und es durchaus zu Fehlern kömmen könnte. Sollte dies der Fall sein gebt mir bitte Bescheid mit möglichst genauer Beschreibung.

Ansonsten viel Spaß mit dem Addon!

PS: Feedback und Anregungen sind jederzeit willkommen!

Auch ein großes Dankeschön an die Tester!

History:

v0.0.8 - Erste öffentliche Release
v0.0.9 - Abfrage beim Löschen eines Eintrags / Optimierung des Verhalten der GUI
v0.1.0 - Neustart-Option für Dnsmasq und Hostapd / Warnung wenn kein RPi3 / besseres Umschaltverhalten
v0.1.1 - Unterstützung für einige Realtek-Chips mittels eigener hostapd Binary
v0.1.2 - Dialog geändert / Tippfehler korrigiert / Apt-Installation verändert
v0.1.3 - Hardware-ID's RPI3 erweitert / automatische Deaktivierung Realtek-Support auf RPi3 / Installer erweitert
v0.1.4 - Autostart für AP-Mode hinzugefügt (Einstellung in den Settings)
v0.1.5 - Bedienung über Tastatur möglich / Wlan-Client kann aktiviert / dekativiert werden
v0.1.6 - Universellere Hostapd-Config / Bugfix Umschaltung AP-Mode
v0.1.7 - Optimierung Umschaltung von AP-Mode auf Wifi-Client nach Autostart AP-Mode / Bugfix Typo
v0.1.8 - Kleinere Updates der Texturen
v0.1.9 - Bugfix if up /down
v0.2.2 - Fixes Hardwarerkennung / GUI

Wichtig: aktuelle Versionen werden nur noch aus dem Repo verteilt !

Download - Mirror
Ist dein Addon universal mit xbmc.dialogen, oder wieder auf die skin von jack angewiesen?

Zu meiner python anfangszeit hatte ich dieses script für unsere skin mal geschustert:
mittlerweile würde ich einiges anders machen.:
Code:
#!/usr/bin/env python

import os
import xbmc, xbmcgui, xbmcaddon
import sys, time

# -- for skin --
# Label:    $INFO[Window(1111).Property(tether_wifi)] / $INFO[Window(1111).Property(wifi_device)]
# Bool:    !IsEmpty(Window(1111).Property(tether_wifi))
# Bool:    StringCompare(Window(1111).Property(tether_wifi),1)

bDebug = False
bWifi = False
bWifiConnected = False
bWifiTether = False


# init
def wifi_state():
   global bDebug
   global bWifi
   global bWifiConnected
   global bWifiTether

   f = os.popen("sudo connmanctl technologies")
   bWifiFound = False

   for i in f.readlines():
       # if bDebug: xbmc.executebuiltin("Notification(Tethering :" + str(i) + "," + str(len(i)) + ",2500)")
       # if bDebug: xbmcgui.Dialog().ok("connmanctl", str(i))

       if (bWifiFound and str(i).find("Type =") > 0): bWifiFound = False

       if str(i).find("Type = wifi") > 0: bWifiFound = True

       if (bWifiFound and str(i).find("Powered = True") > 0): bWifi = True
       if (bWifiFound and str(i).find("Powered = False") > 0): bWifi = False

       if (bWifiFound and str(i).find("Connected = True") > 0): bWifiConnected = True
       if (bWifiFound and str(i).find("Connected = False") > 0): bWifiConnected = False

       if (bWifiFound and str(i).find("Tethering = True") > 0): bWifiTether = True
       if (bWifiFound and str(i).find("Tethering = False") > 0): bWifiTether = False

       # get tether settings
       if (bWifiFound and str(i).find("TetheringIdentifier =") > 0):
           iTetherSSID = 24
           sTetherSSID = str(i)[iTetherSSID:-1]
           if bDebug: xbmcgui.Dialog().ok("SSID", sTetherSSID)
           xbmc.executebuiltin('Skin.SetString(wifitetherssid,' + sTetherSSID + ')')

       if (bWifiFound and str(i).find("TetheringPassphrase =") > 0):
           iTetherPW = 24
           sTetherPW = str(i)[iTetherPW:-1]
           if bDebug: xbmcgui.Dialog().ok("PW", sTetherPW)
           xbmc.executebuiltin('Skin.SetString(wifitetherpw,' + sTetherPW + ')')

   win = xbmcgui.Window(11111)

   if bWifi:
       win.setProperty('wifi_device', '1')
       if bDebug: xbmcgui.Dialog().ok("connmanctl", 'set wifi indicator true')
   else:
       win.setProperty('wifi_device', '0')
       if bDebug: xbmcgui.Dialog().ok("connmanctl", 'set wifi indicator false')

   if bWifiTether:
       win.setProperty('tether_wifi', '1')
       if bDebug: xbmcgui.Dialog().ok("connmanctl", 'set tether indicator true')
   else:
       win.setProperty('tether_wifi', '0')
       if bDebug: xbmcgui.Dialog().ok("connmanctl", 'set tether indicator false')


def wifi_toggle():
   # xbmcgui.Dialog().ok("WiFi", "toggeling")
   busybox = xbmcgui.WindowXMLDialog('DialogBusy.xml', xbmcaddon.Addon(xbmc.getSkinDir()).getAddonInfo('path').decode('utf-8'), 'default', '720p')
   busybox.show()

   global bWifi
   global bWifiConnected
   wifi_state()

   if bWifi:
       f = os.popen("connmanctl disable wifi")
       xbmc.sleep(500)
       wifi_state()
   else:
       f = os.popen('connmanctl enable wifi')
       iBusyCnt = 60
       while not (bWifiConnected or bWifiTether):
           iBusyCnt = iBusyCnt - 1
           wifi_state()
           xbmc.sleep(300)
           if iBusyCnt < 0: break
       if not bWifiConnected and not bWifiTether: xbmcgui.Dialog().ok("WiFi Connection", "Not able to connect the Wifi Network")
   busybox.close()
   del busybox


def wifi_tether_toggle():
   # xbmcgui.Dialog().ok("WiFi Tethering", "toggeling")    
   global bWifiTether
   wifi_state()

   if bWifiTether:
       f = os.popen("sudo connmanctl tether wifi off")
       # xbmcgui.Dialog().ok("unknown arguments given", "wuerde jetzt deaktiv setzen")
       xbmc.sleep(300)
       wifi_state()
   else:
       # get values from skin
       wifitetherssid = xbmc.getInfoLabel('Skin.String(wifitetherssid)')
       wifitetherpw = xbmc.getInfoLabel('Skin.String(wifitetherpw)')
       # xbmcgui.Dialog().ok("unknown arguments given", "wuerde jetzt aktiv setzen")
       f = os.popen('connmanctl enable wifi')
       xbmc.sleep(1000)
       f = os.popen('sudo connmanctl tether wifi on \"' + wifitetherssid + '\" \"' + wifitetherpw + '\"')
       xbmc.sleep(300)
       wifi_state()
       if bWifiTether: xbmcgui.Dialog().ok('WiFi Hotspot ready for Connection', 'Name: ' + wifitetherssid, 'Password: ' + wifitetherpw)


def wifi_tether_ssid():
   global bWifiTether
   wifi_state()

   if bWifiTether:
       xbmcgui.Dialog().ok("Set HotSpot SSID", "Disable Hotspot before")
       quit()

   # get values from skin
   kb = xbmc.Keyboard('default', 'heading', True)
   kb.setDefault(xbmc.getInfoLabel('Skin.String(wifitetherssid)'))  # optional
   kb.setHeading('Enter Hotspot SSID')  # optional
   kb.setHiddenInput(False)  # optional
   kb.doModal()
   if (kb.isConfirmed()):
       wifitetherssid = kb.getText()
       print wifitetherssid
   else:
       quit()

   wifitetherpw = xbmc.getInfoLabel('Skin.String(wifitetherpw)')

   # xbmcgui.Dialog().ok("unknown arguments given", "wuerde jetzt aktiv setzen")

   f = os.popen('sudo connmanctl tether wifi \"' + wifitetherssid + '\" \"' + wifitetherpw + '\"')

   xbmc.sleep(300)
   wifi_state()


def wifi_tether_pw():
   global bWifiTether
   wifi_state()

   if bWifiTether:
       xbmcgui.Dialog().ok("Set HotSpot Password", "Disable Hotspot before")
       quit()

   # get values from skin
   wifitetherssid = xbmc.getInfoLabel('Skin.String(wifitetherssid)')

   kb = xbmc.Keyboard('default', 'heading', True)
   kb.setDefault(xbmc.getInfoLabel('Skin.String(wifitetherpw)'))  # optional
   kb.setHeading('Enter Hotspot Password')  # optional
   kb.setHiddenInput(False)  # optional
   kb.doModal()
   if (kb.isConfirmed()):
       wifitetherpw = kb.getText()
       print wifitetherpw
   else:
       quit()

   # xbmcgui.Dialog().ok("unknown arguments given", "wuerde jetzt aktiv setzen")

   f = os.popen('sudo connmanctl tether wifi \"' + wifitetherssid + '\" \"' + wifitetherpw + '\"')

   xbmc.sleep(300)
   wifi_state()


# programmcode

count = len(sys.argv) - 1

if count < 1:
   xbmcgui.Dialog().ok("No arguments given", "You must specify arguments to the script", "i.e. 'tether_toggle' - to toggle wifi tethering, etc")
else:
   if (sys.argv[1] == "state"):
       if bDebug: xbmcgui.Dialog().ok("WiFi", "only state")
       wifi_state()
   elif (sys.argv[1] == "wifi_toggle"):
       if bDebug: xbmcgui.Dialog().ok("WiFi", "toggle wifi")
       wifi_toggle()
   elif (sys.argv[1] == "tether_toggle"):
       if bDebug: xbmcgui.Dialog().ok("WiFi", "toggle tether")
       wifi_tether_toggle()
   elif (sys.argv[1] == "tether_ssid"):
       if bDebug: xbmcgui.Dialog().ok("WiFi", "set ssid")
       wifi_tether_ssid()
   elif (sys.argv[1] == "tether_pw"):
       if bDebug: xbmcgui.Dialog().ok("WiFi", "set pw")
       wifi_tether_pw()
   else:
       xbmcgui.Dialog().ok("unknown arguments given", sys.argv[1])

# xbmcgui.Dialog().ok("Code Ende", "test")
# xbmc.sleep(500)
# progress.close()
Hi Harry,
das Addon ist wie alle meine Addons nicht auf ein spezielles Skin angwwiesen. Ich habe noch keins speziell auf Jacks Skin ausgelegt was die Voraussetzungen angeht mit der Ausnahme des X-Touch-Helper.


Ich nutze Jacks Skin auch nicht - ich hab nen eigenen Mod auf Basis von Idorel77 und Chris - also der "alte" Look :-)
Hab mir jetzt mal das Image gezogen um mein IBus Addon zu testen.
Bitte Keyboardsteuerung einpflegen, sonst ist das Addon wenig brauchbar.
Maus ist auch keine Lösung, weil man den Zeiger nicht sieht.
Zudem ist die Schrift sehr klein und mit ESC kann man das Addon nicht verlassen.
Achso, habs auf einen Pi2.
Hi harrybrlin,

das Addon ist nunmal auf ein Touch-System ausgelegt und nicht auf dein IBus-System. Auf nem Touchscreen läuft das alles wunderbar.
Was die Schriftgröße angeht ist das nunmal Skin-Abhängig. Auf den Standardskins von Idorel77 bzw. Chris's Mod passt die Größe.
Es ist immer wieder lustig das Addons bemängelt werden, obwohl sie auf Systemen getestet werden für die sie nicht vorgesehen sind!
Man kann ja immer seine Meinung äußern zu Erweiterungen, die andere User freundlicherweise und unentgeltlich zur Verfügung stellen. Auch Anregungen zur Verbesserung zu äußern ist sicher legitim. Aber man sollte, wenn es aus eigener Anschauung Defizite gibt, die Beseitigung selbiger nicht gerade einfordern. Das ist kein guter Stil und eine Berechtigung dazu gibt es schon gar nicht. Wie sagt man so schön: Der Ton macht die Musik!
Sorry, dass ich es so direkt formuliert habe. Vllt. ist da meine Sichtweise(Kodi Addon, sollte unter Kodi laufen) nicht ganz richtig. OK, werde es akzeptieren.
Das mit der Schriftgröße wurde nicht nur von mir gewünscht.
Das Image habe ich von hier, also sollte die Basis passen.
(02.10.2016, 21:27)harryberlin schrieb: [ -> ]Sorry, dass ich es so direkt formuliert habe. Vllt. ist da meine Sichtweise(Kodi Addon, sollte unter Kodi laufen) nicht ganz richtig. OK, werde es akzeptieren.
Das mit der Schriftgröße wurde nicht nur von mir gewünscht.
Das Image habe ich von hier, also sollte die Basis passen.

Wie gesagt, die eigene Meinung und die Äußerung derselben steht jedem zu. Es geht nur darum, wie man sie äußert. Es macht einen Unterschied, ob man etwas fordert oder ob man etwas anregt. Wenn du für etwas bezahlst, kannst du fordern. Wenn du etwas geschenkt bekommst, dann sieht die Sache dagegen etwas anders aus, meinst du nicht auch?

Des Weiteren: Das Addon läuft ja auch unter Kodi. Das ganze Projekt ist halt auf Touch-Bedienung ausgelegt, da ist die Tastatursteuerung für ein Addon allenfalls eine Zugabe, aber keine Bedingung. Wenn du Touch nicht verwendest, ist das nicht dem Addon anzulasten. Dann musst du dir selber etwas schreiben, oder die Tastatursteuerung selber einbauen oder schlichtweg ein anderes Addon suchen, das alle deine Wünsche erfüllt.
Die Schriftgröße ist wiederum im Skin festgelegt (irgendeine DialogBlaBla.xml  – weiß jetzt nicht genau welche). Die musst du also in deinem Skin ändern. Dafür ist das Addon nicht verantwortlich.

Nichts für ungut, aber ich finde es einfach klasse dass es Leute wie hawkeyexp, wie Christian hier im Forum oder wie Andrei gibt, die aus eigenem Antrieb Sachen entwickeln und mit der Community teilen. Davon profitieren wir alle und dafür muss man in erster Linie einfach mal DANKE! sagen. Und dann kann man sich auch erlauben, Wünsche und Anregungen zu äußern. Bei deinen Posts hier fehlt mir da irgendwie der erste Teil. Den überspringst du einfach und fängst gleich bei Teil 2 an. Das finde ich nicht ok und das war auch mein Beweggrund, mich hier überhaupt einzumischen.

Just my 2ct.
Naja, im Ton hab ich mich nicht wirklich vergriffen.
Anregung hatte hawkeyexp von mir zu ESC Key erhalten.
Und oben wurde erwähnt es sei universell.

Unterm Strich, find ich es klasse, dass es das Addon gibt. Und möchte auch DANKE! sagen.
Ok! Akzeptiert und Schwamm drüber! Smile
Seiten: 1 2 3 4