NEWS
Adapter: PAW - echt coole Sache
-
Danke für die Antwort daber dann habe ich nichts falsch gemacht. Die app im G*Store heisst "PAW Server für Android" und die unter dem Link ist die "ioBroker.PAW II"
Habe beide momentan installiert und unter Objekte sehe ich auch paw.0 aber leider sind da nicht viele unterpunkte und ich kann auch nichts an Tablet senden sprich Volume Wert ändern. Keine ahnung evtl. geht mein LenovoTab damit nicht.
In der "ioBroker.PAW II" kann man Einstellen "Send data to server" was ich leider ohne Erfolg getestet habe.
-
evtl. geht mein LenovoTab damit nicht. ` Hab auch ein Lenovo Tab, damit bekom ich null Daten an ioBroker. Weder mit PAW noch mit States to ioBroker. Die andere Richtung hab ich gar nicht erst versucht weil das für mich nur Sinn ergibt wenn ich Daten vom Tablet bekom.
-
Ich kann mir vorstellen dass es an der Android Version liegt. Hab ein Xperia Z2. Vorher stock ROM, V6. Jetzt ein Mod Rom V8 drauf. Paw get jetzt bei mir auch nicht mehr. Ich hab den Eindruck, es wird auch nicht weiter entwickelt
Evtl steige ich auf den Google Adapter um, mit dem die eigene Position ermittelt wird der soll auch den Akkustand übermitteln. Befehle an das Tablet ist dann aber vorbei
Gesendet von meinem HUAWEI RIO-L01 mit Tapatalk
-
Bei meinem Lenovo kann ich Daten wie Akku auslesen.
Hab nur Probleme mit dem Senden von Helligkeit zb. Will per Script Helligkeit auf 10 dimmen in der Nacht aber da weigert sich das pad noch.
-
Hallo,
bis vor 2 Stunden hat der Paw Adapter bei mir auf zwei Tab A von Samsung super funktioniert.
Dann wurde mir auf den Tabs Android 8 angeboten als Update. dieses habe ich installiert und dann gab es keine Akku Informationen oder andere in ioBroker mehr. also hab ich den Paw Adapter aus dem Git manuell aktualisiert von 0.0.7 auf 0.2.0 . Seit dem geht bei mir gar nichts mehr. nach dem Einrichten der Tabs taucht keins der Tabs unter Objekten auf. Dort steh nur alle Geräte. Auch schaffe ich es nicht zurück auf die alte Adapter Version zu kommen.
Kann mir da jemand helfen?
Entweder zurück auf 0.0.7 oder die 0.2.0 lauffähig zu bekommen .
Wie schaut es hier mit Android 8 und Paw aus? Gibt es da eine Lösung= Auch beim Aufrufen der Paw Server Seite im Explorer werden mir oben keine Informationen (Akku, Lautstärke…) angezeigt.
Grüße
-
Was welcher Hersteller unter welchem Android für tools wie Tasker und PAW erlaubt, scheint ziemlich willkürlich zu sein. In der Regel aber bei neueren Tablets und Androids immer weniger wegen Angriffsicherheit. Das Böse ist eben ubiquitär und omnipräsent und beraubt uns unserer Lebensfreude und Freiheit. Deshalb: Wenn ein Tablet läuft, dann dessen Internetzugang am Router sperren und solange betreiben bis es defekt ist. Nie updaten, warum auch? Mein kooperativstes Tablet hat Android 4.4.
Andere PAW Version:
Adapteranicht auswählen
1 Expertenmodus aktivieren
2 gewünschte Version wählen und installieren
3 danach zur Sicherheit uploadknopf beim PAW Adapter drücken
-
Andere PAW Version:
Adapteranicht auswählen
1 Expertenmodus aktivieren
2 gewünschte Version wählen und installieren
3 danach zur Sicherheit uploadknopf beim PAW Adapter drücken
PAW-downgraden.JPG `
Danke dir,
dann muss ich jetzt sehen wie ich mein Tab zurück auf Android 7 bekomme
Das mit der Version hab ich schon probiert. Es steht nur die initiale Version 0.2.0 zur Auswahl. Ich brauche aber die Version 0.0.7
Die hat funktioniert. Die Ladesteuerung meiner Tabs funktioniert sonst nicht
-
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?