NEWS
Adapter: PAW - echt coole Sache
-
Versuche doch auf die initiale Adapter-Version downzugraden und danach wieder upzugraden.
Und vergiss die Ladesteuerung. Das lohnt den Aufwand nicht und ist zudem wenig zuverlässig bis potentiell gefährlich.
LiIon Akkus mögen keine Tiefentladung, darauf können sie mit reduziertem Parallelwiderstand bis hin zur Selbsterwärmung reagieren.
Ich betreibe alle meine Tablets und Notebooks dauerhaft am Netz. Das war bisher auch nicht schlechter für den Akku als ständiges Ent- und Aufladen. Mache ich auch im Geschäft so und meine Akkus sterben auch nicht früher als die der Kollegen.
Was dem Akku wirklich hilft ist nicht ganz volladen. Meinen Pedelec-Akku lade ich nicht ganz voll. Ich verliere dadurch 6% an Kapazität und verdopple etwa die Ladezyklen. Dort kann ich die Ladeschlußspannung einstellen, bei Tablet und Notebook leider nicht. Und bei dem Anschaffungspreis lohnt das auch.
-
Versuche doch auf die initiale Adapter-Version downzugraden und danach wieder upzugraden.
Und vergiss die Ladesteuerung. Das lohnt den Aufwand nicht und ist zudem wenig zuverlässig bis potentiell gefährlich.
LiIon Akkus mögen keine Tiefentladung, darauf können sie mit reduziertem Parallelwiderstand bis hin zur Selbsterwärmung reagieren.
Ich betreibe alle meine Tablets und Notebooks dauerhaft am Netz. Das war bisher auch nicht schlechter für den Akku als ständiges Ent- und Aufladen. Mache ich auch im Geschäft so und meine Akkus sterben auch nicht früher als die der Kollegen.
Was dem Akku wirklich hilft ist nicht ganz volladen. Meinen Pedelec-Akku lade ich nicht ganz voll. Ich verliere dadurch 6% an Kapazität und verdopple etwa die Ladezyklen. Dort kann ich die Ladeschlußspannung einstellen, bei Tablet und Notebook leider nicht. Und bei dem Anschaffungspreis lohnt das auch. `
die initiale version ist ja die 0.2.0. Die genau funktioniert ja nicht. Es gibt gar keine andere zur Auswahl. Kann man via putty mittels Befehl eine bestimmte version installieren?
Meine Ladesteuerung lädt die Akkus zwischen 30 und 90 Prozent. Also nie zuwenig und nie zuviel.
-
ich habs….
iobroker upgrade paw@0.0.7
hab jetzt wieder die 0.0.7.
Bleibt nur noch Android
-
habs dann auch unter android 8 hinbekommen.
Problem liegt in der get.xhtml Datei. Dort werden die Daten ausgelesen.Unteranderem Akku und CPU.
Akku funktioniert aber die CPU Infos nicht unter Android 8. Dafür ist man nicht autorisiert. Hab den Teil einfach rausgenommen aus der get.xhtml Datei und nun gehts!!!
-
Kannst du uns zeigen was genau du aus der Datei raus gelöscht hast?
Wollte mich in der nächsten Zeit auch mal da ran setzen.
Gruß Markus
Gesendet von unterwegs mit Tapatalk
-
Klar …..
<bsh>import org.json.*; import de.fun2code.android.pawserver.AndroidInterface; import de.fun2code.android.pawserver.util.*; import android.content.Intent; import android.app.Service; import android.os.BatteryManager; import android.content.Context; import android.media.AudioManager; import android.app.ActivityManager; import android.app.ActivityManager.MemoryInfo; import android.database.Cursor; import android.net.Uri; import de.fun2code.android.pawserver.AndroidInterface; import android.net.wifi.WifiInfo; import android.util.*; import android.view.WindowManager; import android.hardware.Sensor; import android.location.*; jsonVar = new JSONObject(); battery = new JSONObject(); cpu = new JSONObject(); wifi = new JSONObject(); audiovol = new JSONObject(); audiovolinfo = new JSONObject(); memory = new JSONObject(); info = new JSONObject(); sens = new JSONObject(); sensorinfo = new JSONObject(); gps = new JSONObject(); service = server.props.get("serviceContext"); source(server.props.get("serviceContext").pawHome + "/html/app/bsh/constantsToolbar.bsh"); preferences = service.getSharedPreferences("PawServer", 0); toolbarSettings = preferences.getInt("toolbarHide", 0); // Sensors sensorService = service.getSystemService(Context.SENSOR_SERVICE); sensors = sensorService.getSensorList(Sensor.TYPE_ALL); for(sensor : sensors) { sensorinfo.put(sensor.getName().toLowerCase(), sensor); } sens.put("info", sensorinfo); sensorListener = AndroidInterface.getSensorListener(); sens.put("gyro_x", sensorListener.getGyroX()); sens.put("gyro_y", sensorListener.getGyroY()); sens.put("gyro_z", sensorListener.getGyroZ()); sens.put("bearing", sensorListener.getOrientBearing()); sens.put("proximity", sensorListener.getProximity()); sens.put("light", sensorListener.getBrightness()); if (sensorListener.getRelativeHumidity()!=0){ sens.put("humidity", sensorListener.getRelativeHumidity()); } if (sensorListener.getAmbientTemperature()!=0){ sens.put("temperature", sensorListener.getAmbientTemperature()); } if (sensorListener.getPressure()!=0){ sens.put("pressure", sensorListener.getPressure()); } if (sensorListener.getX()!=0){ sens.put("accelerometer_x", sensorListener.getX()); sens.put("accelerometer_y", sensorListener.getY()); sens.put("accelerometer_z", sensorListener.getZ()); sens.put("accelerometer_force", sensorListener.getForce()); } jsonVar.put("sensors", sens); // Get BATTERY info intent = IntentUtil.getIntentResultFromBroadcast(service, Intent.ACTION_BATTERY_CHANGED); level = intent.getIntExtra("level", -1); scale = intent.getIntExtra("scale", -1); status = intent.getIntExtra("status", -1); voltage = intent.getIntExtra("voltage", -1); plugtype = intent.getIntExtra("plugged", 0); health = intent.getIntExtra("health", 0); temperature = intent.getIntExtra("temperature", 0); battery.put("level", level); battery.put("status", status); battery.put("voltage", voltage); battery.put("plugtype", plugtype); battery.put("health", health); battery.put("temperature", temperature); jsonVar.put("battery", battery); // Get memory info activityManager = (ActivityManager) service.getSystemService(Context.ACTIVITY_SERVICE); memInfo = new ActivityManager.MemoryInfo(); activityManager.getMemoryInfo(memInfo); free = memInfo.availMem / 1024 /1024; total = memInfo.totalMem / 1024 /1024; import android.os.StatFs; import android.os.Environment; getStorageInfo(type) { // Default type is "sdcard" stat = new StatFs(type.equals("int") ? Environment.getDataDirectory().getPath() : Environment.getExternalStorageDirectory().getPath()); megsTotal = (long)stat.getBlockSize() *(long)stat.getBlockCount() / 1024D / 1024D; megsAvailable = (long)stat.getBlockSize() *(long)stat.getAvailableBlocks() / 1024D / 1024D; String[] vals = { String.format("%.2f", new Object[] { megsTotal }), String.format("%.2f", new Object[] { megsAvailable }) }; return vals; } memory.put("int_total", getStorageInfo("int")[0]); memory.put("int_free", getStorageInfo("int")[1]); memory.put("sdcard_total", getStorageInfo("sdcard")[0]); memory.put("sdcard_free", getStorageInfo("sdcard")[1]); memory.put("ram_free", free); memory.put("ram_total", total); jsonVar.put("memory", memory); // Get cpu info source(server.props.get("serviceContext").pawHome + "/html/app/bsh/systemLoad.bsh"); cpus = getCpus(); load = getSystemLoad().get("load"); cpu.put("cpus", cpus); cpu.put("load", load); jsonVar.put("cpu", cpu); // Get WiFi info wifiService = service.getSystemService(Context.WIFI_SERVICE); // Check for connected WiFi network wifiInfo = wifiService.getConnectionInfo(); wifiActive = false; if(wifiInfo != null && wifiInfo.getIpAddress() != 0) { wifiActive = true; ip = wifiInfo.getIpAddress(); ip = String.format("%d.%d.%d.%d", (ip & 0xff), (ip >> 8 & 0xff), (ip >> 16 & 0xff), (ip >> 24 & 0xff)); mac = wifiInfo.getMacAddress(); } if(wifiActive) { SSID = wifiInfo.getSSID(); if(SSID == null) { SSID = "unknown"; } linkspeed = wifiInfo.getLinkSpeed() + " " + WifiInfo.LINK_SPEED_UNITS; if(wifiInfo.getLinkSpeed() < 0) { linkspeed = "unknown"; } wifiStrengthPercent = (100 + wifiInfo.getRssi() + 20)+"%"; Rssi = wifiInfo.getRssi(); } wifi.put("ssid", SSID); wifi.put("strengthpercent", wifiStrengthPercent); wifi.put("linkspeed", linkspeed); wifi.put("ip", ip); wifi.put("rssi", Rssi); wifi.put("mac", mac); jsonVar.put("wifi", wifi); // Get info import android.content.Context; import android.os.PowerManager; import android.provider.Settings; service = server.props.get("serviceContext"); pm = service.getSystemService(Context.POWER_SERVICE); x = pm.isScreenOn(); info.put("lcd", x); Brightness = Settings.System.getInt(service .getContentResolver(),Settings.System.SCREEN_BRIGHTNESS,0); info.put("brightness", Brightness); BOARD = android.os.Build.BOARD; BRAND = android.os.Build.BRAND; DISPLAY = android.os.Build.DISPLAY; MODEL = android.os.Build.MODEL; PRODUCT = android.os.Build.PRODUCT; TIME = android.os.Build.TIME; TYPE = android.os.Build.TYPE; USER = android.os.Build.USER; INCREMENTAL = android.os.Build.VERSION.INCREMENTAL; RELEASE = android.os.Build.VERSION.RELEASE; SDK = android.os.Build.VERSION.SDK; //info.put("board", BOARD); info.put("brand", BRAND); //info.put("display", DISPLAY); info.put("model", MODEL); //info.put("product", PRODUCT); info.put("time", TIME); //info.put("type", TYPE); //info.put("user", USER); //info.put("incremental", INCREMENTAL); //info.put("release", RELEASE); info.put("sdk", SDK); if(readFromClipboard() == null) { clipboard = ""; } else { clipboard = readFromClipboard(); } info.put("clipboard", clipboard); import de.fun2code.android.pawserver.AndroidInterface; import android.app.Service; import android.database.Cursor; import android.net.Uri; import android.provider.CallLog; service = (Service) server.props.get("serviceContext"); SORT_ORDER = CallLog.Calls.DATE + " DESC"; new_call=0; cursor = service.getContentResolver().query( CallLog.Calls.CONTENT_URI, new String[] { CallLog.Calls.NUMBER, CallLog.Calls.CACHED_NAME,CallLog.Calls.DATE,CallLog.Calls.DURATION, CallLog.Calls.TYPE, CallLog.Calls.NEW},null,null,SORT_ORDER); if (cursor != null) { try { count = cursor.getCount(); if (cursor.moveToFirst()) { do { position = cursor.getPosition(); call_new = cursor.getLong(5); if(call_new==1){ new_call=new_call+1; } } while(cursor.moveToNext()); } } finally { cursor.close(); } } info.put("call_missed", new_call); service = server.props.get("serviceContext"); SMS_CONTENT_URI = Uri.parse("content://sms"); cursor = service.getContentResolver().query( SMS_CONTENT_URI, new String[] { "_id", "thread_id", "address", "person", "date", "body", "status"},"read = 0", null,"date DESC"); if (cursor != null) { try { count = cursor.getCount(); } finally { cursor.close(); } } info.put("new_message", count); jsonVar.put("info", info); // Get audio info audio = service.getSystemService(Context.AUDIO_SERVICE); STREAM_RING = audio.getStreamVolume(AudioManager.STREAM_RING); STREAM_MUSIC = audio.getStreamVolume(AudioManager.STREAM_MUSIC); STREAM_ALARM = audio.getStreamVolume(AudioManager.STREAM_ALARM); STREAM_NOTIFICATION = audio.getStreamVolume(AudioManager.STREAM_NOTIFICATION); STREAM_SYSTEM = audio.getStreamVolume(AudioManager.STREAM_SYSTEM); STREAM_VOICE_CALL = audio.getStreamVolume(AudioManager.STREAM_VOICE_CALL); STREAM_RINGMax = audio.getStreamMaxVolume(AudioManager.STREAM_RING); STREAM_MUSICMax = audio.getStreamMaxVolume(AudioManager.STREAM_MUSIC); STREAM_ALARMMax = audio.getStreamMaxVolume(AudioManager.STREAM_ALARM); STREAM_NOTIFICATIONMax = audio.getStreamMaxVolume(AudioManager.STREAM_NOTIFICATION); STREAM_SYSTEMMax = audio.getStreamMaxVolume(AudioManager.STREAM_SYSTEM); STREAM_VOICE_CALLMax = audio.getStreamMaxVolume(AudioManager.STREAM_VOICE_CALL); audiovolinfo.put("ring_max", STREAM_RINGMax); audiovolinfo.put("music_max", STREAM_MUSICMax); audiovolinfo.put("alarm_max", STREAM_ALARMMax); audiovolinfo.put("notification_max", STREAM_NOTIFICATIONMax); audiovolinfo.put("system_max", STREAM_SYSTEMMax); audiovolinfo.put("voice_call_max", STREAM_VOICE_CALLMax); audiovol.put("info", audiovolinfo); audiovol.put("ring", STREAM_RING); audiovol.put("music", STREAM_MUSIC); audiovol.put("alarm", STREAM_ALARM); audiovol.put("notification", STREAM_NOTIFICATION); audiovol.put("system", STREAM_SYSTEM); audiovol.put("voice_call", STREAM_VOICE_CALL); jsonVar.put("audio_volume", audiovol); jsonVar.put("test", "test"); request.sendResponse(jsonVar.toString().getBytes(), "text/plain; charset=UTF-8"); request.out.flush(); request.out.close();</bsh>
aus obigen original Code einfach folgenden Code löschen
// Get cpu info source(server.props.get("serviceContext").pawHome + "/html/app/bsh/systemLoad.bsh"); cpus = getCpus(); load = getSystemLoad().get("load"); cpu.put("cpus", cpus); cpu.put("load", load); jsonVar.put("cpu", cpu);
Liefert jetzt alle Informationen ohne die CPU Infos. Allerdings führt dies im LOG zu einem "Parse_data_error:" . Das liegt dann aber am Adapter selbst. Vielleicht liest ja der Ersteller mit und kann dies ändern.
Grüße
-
ok,
den Parse Fehler kann man auch umgehen indem man ihm für Anzahl der CPU´s und die CPU Load feste Werte vorgibt.
In dem Fall einfach den CPU Teil durch folgenden Code ersetzen.
// Get cpu info cpus = 8; load = 6; cpu.put("cpus", cpus); cpu.put("load", load); jsonVar.put("cpu", cpu);
-
Dankeschön…..
Gruß Markus
Gesendet von unterwegs mit Tapatalk
-
Hallo zusammen.
Hat irgendwer gestern ausversehen auch das update vom PAW adapter installiert?
Von 1.7 auf 2.5 und plötzlich steht da was von beta !!!!!???
Das ding versteh ich nicht und bekomm es auch nicht zum laufen.
Jetzt kommt man nichtmal zurück auf die 1.7
Da ist doch irgendwas ganz derbe schief gelaufen oder?
Wie komm ich wieder auf die alte version zurück oder kann mir helfen das ding zum laufen zu bekommen.
Brauch das nur um den Akku vom tablet auszulesen.
Gruss Danyel
-
Beta wird es sein weil es jetzt eine extra app dafür gibt. Und man nicht mehr die original PAW app und dann das gefrickel mit den Dateien hat.
Aber mit der Original App sollte es kein Problem geben, denke ich.
Schau mal auf der Github Page vorbei, da ist die apk verlinkt.
https://github.com/bondrogeen/ioBroker. … /README.md
Gesendet von meinem HTC U11 mit Tapatalk
-
Hatte vor ein paar Tagen die neue von git geladen und bin aber wieder zurück.. Andere states, Andere Befehle und nicht alle Funktionen wie mit dem alten Adapter… Zurueck ging nur mit backup restore.. Die alte version ist nicht mehr zu installieren... Warum auch immer die nicht mehr online ist.. ... Hab die Version info im Adapter angepasst,damit ich kein update des Adapters mehr angeboten bekomme...
Ist ganz schön gemacht... Mir fehlen nur ein paar Funktionen welche ich mit dem alten nutze... Das ich meine ganzen scripte anpassen müsste finde ich auch nicht toll...
Gesendet von meinem CLT-L09 mit Tapatalk
-
@ringdingringding:Hallo zusammen.
Hat irgendwer gestern ausversehen auch das update vom PAW adapter installiert?
Von 1.7 auf 2.5 und plötzlich steht da was von beta !!!!!???
Das ding versteh ich nicht und bekomm es auch nicht zum laufen.
Jetzt kommt man nichtmal zurück auf die 1.7
Da ist doch irgendwas ganz derbe schief gelaufen oder?
Wie komm ich wieder auf die alte version zurück oder kann mir helfen das ding zum laufen zu bekommen.
Brauch das nur um den Akku vom tablet auszulesen.
Gruss Danyel `
den bekommst du auch über den fullBrowser Adapter…
ansonsten hab ich noch eine alte Version in meinem REPO
-
Hallo zusammen,
ich habe den Adapter bei mir auch zum fliegen bekommen.
Jetzt würde ich gern bei An- und Abwesenheit das Display von meinem Android Tablet entsprechend steuern.
Anschalten per Blockly funktioniert bereits.
Das Ausscahlten leider nicht:
Hat jemand einen Tip für mich?
-
Das Verhalten hängt wohl oft mit der Android Version und dem Modell zusammen. Bei meinem Chuwie 10 Tablet funktioniert das mit dem LCD_off auch nicht. Ersatzweise habe ich den "brightness" Befehl genommen. Also für LCD_on: parameter1: send = brightness, parameter2: number = 200
Entsrechend für LCD_off dann Number = 0.
100% funktioniert das bei Chuwie aber auch nicht, da auch bei Helligkeitswert von 0, das Display zwar abgedunkelt wird aber nicht vollständig dunkel ist. Bei meinem Samsung A10 ist das schon wieder ganz anders.
-
Irgendwie läuft die Verbiundung zwischen Tablet und ioBroker nicht sauber.
Alle 10 Minuten kommt ein Timeout
Ich verwende ein Samsung Galaxy Tab A SM-T555 mit Android 7.1.1
Hat jemand eine Idee ?
-
der Port ist doch unterschiedlich
-
der Port ist doch unterschiedlich `
Auf dem Tablet ist Port 8080 hinterlegt. Im PAW Adapter ist ebenso für das Tablet port 8080 hinterlegt.
Der PAW Server auf dem ioBroker kann von außen über Port 8898 angesprochen werden.
Hab ich da jetzt was falsch verstanden ? Muss der Adapter Port genau so sein, wie der Port auf dem Talet?
Im ioBroker kommen ja Daten an, nur gibt es immer Timeouts. Es ist ja nicht so, als wenn die Verbindung gar nicht funktioniert.
-
der Port ist doch unterschiedlich `
Hatte es auch so eingestellt…ehrlich gesagt bin ich da noch nicht drüber gestolpert...Verbindungsabbrüche hatte ich nicht oft aber ab und zu schon...
Habe es einfach mal angepasst, mal sehen wie es sich verhält...
-
Interessant….
Wegen der verbindungsabbrüche zum Paw Server auf meinen Tablets / google Nexuss 7 gerootet mit Elemental X Kernel, hatte das mit den Port Einstellungen nichts zu tun....
Ich hatte das Tablet über 5Ghz wlan netz mit meinem Netzwerk verbunden...
Wenn ich es über das 2,4 GHz verbinde habe ich keine abbrüche mehr...Läuft jetzt absolut stabil...
Habe die neue Fritzbox 7590 mit os 7.1...wenn ich da das 5Ghz abschalte läufts stabil....
Im Prinzip laufen da alle Tablets Handys usw. drüber...Die Aktoren und Sensoren laufen ohnehin alle im 2,4Ghz Bereich...
Nur falls es jemand interessiert...
-
Interessant….
Wegen der verbindungsabbrüche zum Paw Server auf meinen Tablets / google Nexuss 7 gerootet mit Elemental X Kernel, hatte das mit den Port Einstellungen nichts zu tun....
Ich hatte das Tablet über 5Ghz wlan netz mit meinem Netzwerk verbunden...
Wenn ich es über das 2,4 GHz verbinde habe ich keine abbrüche mehr...Läuft jetzt absolut stabil...
Habe die neue Fritzbox 7590 mit os 7.1...wenn ich da das 5Ghz abschalte läufts stabil....
Im Prinzip laufen da alle Tablets Handys usw. drüber...Die Aktoren und Sensoren laufen ohnehin alle im 2,4Ghz Bereich...
Nur falls es jemand interessiert... `
Das ist auf jeden Fall noch einmal ein interesssanter Ansatz.
Ich hab parallel den Radar Adapter laufen. Dieser erkennt das Table immer als online.
Ich werde mal versuchen, das Tablet auf 2,4GHz zu beschränken
EDIT: Schade, mein Tablet ist mit 2,4GHz verbunden und kann sowieso kein 5GHz