NEWS
Pushsafer
-
Ach ja, bei mir funktioniert der login mit dem usernamen nicht, mit der E-mail Adresse aber schon.
Gesendet von meinem HUAWEI CRR-L09 mit Tapatalk
-
@pix:Kann der Adapter auch die Funktion "Bilder" (nicht Icons) ? `
In API gibt es die Möglichkeit als BASE64 das Bild zu versenden. Falls Author (das ist übrigens nicht ich) es nicht erweitert, dann mache ich das später. -
In pushsafer muss man sich die Nachrichten kaufen, was mich noch überlegen lässt, ob ich es überhaupt produktiv einsetze.
Wäre es möglich im Adapter abzufragen, wie viele Nachrichten man pro Gerät noch zu Verfügung hat?
-
So,
endlich hat die Anmeldung geklappt. Es sollte wirklich erstmal ein kurzes Passwort ohne Sonderzeichen sein. Bei mir klappt die Anmeldung mit dem Usernamen.
Ich nutze zwei iPhones für die Benachrichtigung. Auf beiden habe ich die kostenlose App installiert. Auf beiden logge ich mich mit dem gleichen User/Pass ein. Gleichzeitig kann ich am Desktop/Webseite die dann erkannten Mobilgeräte in der Auflistung sehen. Jedes Gerät hat dort eine ID.
Ich habe dann drei Gruppen erstellt: Gerät 1, Gerät 2 und Gerät 1+2. Jede Gruppe erhält auch eine ID. Sollte ich durch einen Gerätewechsel mal eine neue Geräte-ID bekommen, brauche ich nur die Gruppe zu aktualisieren und im ioBroker Skript nichts zu ändern, da ich die Nachrichten an die Gruppen sende, nicht direkt an die Geräte.
Die Nachrichten können per API (viele Programmiersprachen), HTTP oder Email abgesetzt werden. API-Nachrichten werden von einem Kontingent (pro Empfangsgerät!) abgezogen. Das Startkontingent ist 20. Man kann dann in der App nachkaufen (Mengenrabatt). Das nachgekaufte Kontingent gilt aber nur für das Gerät, auf dem man den Kauf tätigt. Ich musste also zweimal kaufen (etwas mehr für mich, etwas weniger für meine Frau, da sie weniger Nachrichten erhält). Beim ersten Kaufversuch erhielt ich eine Fehlermeldung vom Bestellserver. Der Kauf wurde jedoch ausgeführt (siehe Edit).
Die grafische Aufmachung ist leider nicht so schön wie zB bei Pushover. Die Webseite ist übersichtlich, die Einrichtung einfach und die Zurordnung von einzelnen Icons pro Nachricht oder unterschiedlichen Klingeltönen oder Empfängern ist gut verständlich. Die iOS App ist etwas hölzern. Da sollte an der Optik noch gearbeitet werden. Ebenfalls habe ich noch kleine Fehler gefunden. Die Klingeltöne sind zu 90% für meinen Geschmack Kinderkram. Moderne dezente Töne müssen her.
Zusammengefasst:
Pro: * Deutsches Produkt auf deutschen Servern
-
kostenlose App und Anmeldung (man kauft nicht die Katze im Sack)
-
gute API mit vielen Parametern
-
sehr gute Hilfe / gute Vorlagen (auch für ioBroker)
-
ioBroker-Adapter vorhanden (github)
-
pro Nachricht können Ikon (Auswahl aus 98 vorgegebenen Grafiken), Klingelton (28 verschiedene + lautlos + Gerätestandard) und Empfänger (Einzelgerät oder Gruppe) festgelegt werden.
-
Statt API auch Email-Schnittstelle vorhanden (zB für Webcam-Bewegungsalarm)
-
Schnelle Übertragung der Nachrichten
-
Bildübertragung in Zukunft möglich
Contra:
-
iOS App optisch nicht gelungen
-
Login-Verfahren auf der Webseite noch fehleranfällig (keine Sonderzeichen)
-
inApp-Kauf iOS-App mit Fehlern >> Dieser Punkt ist veraltet, siehe Edit
-
kindliche Klingeltöne
-
Nachrichtenkontingent kann nur pro Gerät nachgekauft werden, nicht pro User.
Fazit für mich:
Ich werde es jetzt mal eine Weile ausprobieren. Die Fehleranfälligkeit bei Login und Kauf von Kontingenten kommt ja schließlich nur zu Beginn bei der Einrichtung zum Tragen.
Ausschlaggebend für mich ist, dass ich die Empfängergruppe sehr leicht einstellen kann. Ebenso find ich gut, dass die App kostenlos ist. Ich hätte mich auch geärgert, wenn ich für diese Software 3 oder 5 € ausgegeben hätte, nur um den Dienst zu testen. Für die Zukunft wünsche ich mir neben mehr Stabilität beim Anmeldeprozess noch eine bessere Grafik und Akustik der iOS App (andere Platform nicht getestet) und die Möglichkeit, die nachgekauften Nachrichtenkontingente auf alle Devices zu verteilen. Ausserdem freue ich mich auf den Versand von Bildern.
Ich bleibe erstmal dabei.
Gruß
Pix
Edit:
Nachtrag (24.09.2016) Der In-App-Kauf weiterer Nachrichten lief absolut problemlos.
-
-
Ich habe weiter getestet: Die EInstellungen im Adapter lassen sich nicht vom Javascript Adapter überschreiben.
log('_____________________'); log('PUSHSAFER NACHRICHT'); log('Meldung: ' + meldung); log('Betreff: ' + titel); log('Receiver: ' + rec); log('Icon: ' + ico); log('Ton: ' + ton); log('Vibr: ' + vib); log('_____________________'); sendTo("pushsafer.0", { m: meldung, t: titel.toString(), s: ton.toString(), v: vib.toString(), i: ico.toString(), d: rec.toString() }); ````ergibt```` 2016-09-24 12:08:12.485 - [32minfo[39m: javascript.2 script.js.Test.DIY_Schalter: _____________________ 2016-09-24 12:08:12.485 - [32minfo[39m: javascript.2 script.js.Test.DIY_Schalter: PUSHSAFER NACHRICHT 2016-09-24 12:08:12.486 - [32minfo[39m: javascript.2 script.js.Test.DIY_Schalter: Meldung: Briefkasten Test 2016-09-24 12:08:12.486 - [32minfo[39m: javascript.2 script.js.Test.DIY_Schalter: Betreff: Push-Test 2016-09-24 12:08:12.486 - [32minfo[39m: javascript.2 script.js.Test.DIY_Schalter: Receiver: 52 2016-09-24 12:08:12.486 - [32minfo[39m: javascript.2 script.js.Test.DIY_Schalter: Icon: 1 2016-09-24 12:08:12.487 - [32minfo[39m: javascript.2 script.js.Test.DIY_Schalter: Ton: 5 2016-09-24 12:08:12.487 - [32minfo[39m: javascript.2 script.js.Test.DIY_Schalter: Vibr: 2 2016-09-24 12:08:12.487 - [32minfo[39m: javascript.2 script.js.Test.DIY_Schalter: _____________________ 2016-09-24 12:08:12.507 - [32minfo[39m: pushsafer.0 Send pushsafer notification: {"m":"Briefkasten Test","t":"","v":"","i":"","d":"52"} ````Wobei die ID "52" als einziger Wert in den Adaptereinstellungen hinterlegt ist. Gruß Pix
-
:!: Nachtrag:
Ausserdem lassen sich, bei mir heute reproduzierbar, die Nachrichten nicht an Gruppen ID senden, nur an Geräte ID (auch nicht Testnachricht aus den Adaptereinstellungen).
Wenn ich aber die Nachricht auf der Webseite von Pushsafer eingeben, wird sie auch an Gruppen versendet. Da ist alles korrekt.
Gruß
Pix
-
Ich habe jetzt am Adapter gefummelt und eine Lösung gefunden, die für mich funktioniert:
In der https://github.com/ioBroker/ioBroker.pushsafer/blob/master/pushsafer.js habe ich in der sendNotification() eine leichte Änderung gemacht:````
function sendNotification(message, callback) {
if (!message) message = {};if (!pushsafer) { if (adapter.config.token) { pushsafer = new Pushsafer({ k: adapter.config.token }); } else { adapter.log.error('Cannot send notification while not configured'); } } if (!pushsafer) return; if (typeof message !== 'object') {
// ab hier geändert
message = {m: message,
t: message.title,
s: message.sound,
i: message.icon,
d: message.device,
v: message.vibration
};
}
/*
message.t = message.title || adapter.config.title;
message.s = message.sound || (adapter.config.sound ? adapter.config.sound : undefined);
message.i = message.icon || adapter.config.icon;
message.d = message.device || adapter.config.device;
message.v = message.vibration || adapter.config.vibration;
*/
// ENDE der Änderungen
adapter.log.info('Send pushsafer notification: ' + JSON.stringify(message));pushsafer.send(message, function (err, result) { if (err) { adapter.log.error('Cannot send notification: ' + JSON.stringify(err)); if (callback) callback(err); return false; } else { if (callback) callback(); return true; } });
}
Etwa so: >! Parameter (Dienst, Priorität, Empfänger, Meldung, Titel, )werden in den Skripten mit der globalen Funktion meldung_push() gesetzt. Dienst ist in diesem Fall Pushsafer (4), es kann aber auch Pushover oder telegram gewählt werden. Priorität wird später abgefragt. Sie bedingt den Ton. Dadurch kann ich zB nachts lautlos mitteilen. Empfänger wird auch abgefragt und setzt die entsprechende group ID. Meldung und Titel sind klar. >! In der Funktion gibt es dann eine Switch-Funktion:```` // PUSHSAFER ----------------------------------------------------------- case 4: var ton = '0', vib = '1', ico = '9', rec = '52'; // j if (prio > 0) { ton = '5'; vib = '2'; ico = '1'; } if (receiver == 'pix') rec = '322'; // Pix else if (receiver == 'pux') rec = '323'; // Pux (nur zur Veranschaulichung) else if (receiver == 'pixpux' || receiver == 'puxpix') rec = '50'; // Gruppe beide else rec = '52'; >! // Icon festlegen nach Inhalt des Textes if (/Briefkasten/gi.test(meldung)) ico ='30'; if (/Klingel/gi.test(meldung)) ico ='9'; if (/Bitte schließen/gi.test(meldung)) ico ='91'; if (/schine/gi.test(meldung)) ico ='25'; if (/Alarm/gi.test(titel)) { vib = '3'; ico = '1'; } log('_____________________'); log('PUSHSAFER NACHRICHT'); log('Meldung: ' + meldung); log('Betreff: ' + titel); log('Receiver: ' + rec); log('Icon: ' + ico); log('Ton: ' + ton); log('Vibr: ' + vib); log('_____________________'); sendTo('pushsafer.0', { m: meldung, t: titel, s: ton, v: vib, i: ico, d: rec }); break; // ENDE PUSHSAFER ------------------------------------------------------ >! ```` Jetzt funktioniert die Benachrichtigung, wie ich sie mir vorstelle :D . Gruß Pix
-
Ich glaube du rufst es falsch auf!!
Wenn Du deinen Aufrufcode änderst:
sendTo("pushsafer.0", { message: meldung, title: titel.toString(), sound: ton.toString(), vibration: vib.toString(), icon: ico.toString(), device: rec.toString()
sollte es auch mit dem originalen Code gehen!
-
Ich glaube du rufst es falsch auf!!
Wenn Du deinen Aufrufcode änderst:
sendTo("pushsafer.0", { message: meldung, title: titel.toString(), sound: ton.toString(), vibration: vib.toString(), icon: ico.toString(), device: rec.toString()
sollte es auch mit dem originalen Code gehen! `
Ich bin gleicher Meinung. Du hast falsch sendTo verwendet. Und in deiner Modifikation kann man keine default Werte verwenden. -
Hallo,
dankefür das Feedback. Aber es funktioniert nicht. Ich habe den Adapter gelöscht und neu installiert. Sogar ioBroker und sogar den Rechner neu gestartet.
Die Beschreibung der API ist doch auch eindeutig:
Hier werden nur die Buchstaben (einstellig) verwendet. Diese Lösung klappt bei mir nicht~~@apollon77:~~
sendTo("pushsafer.0", { message: meldung, title: titel.toString(), sound: ton.toString(), vibration: vib.toString(), icon: ico.toString(), device: rec.toString() ```` ` denn dann erhalte ich so ein Log:```
2016-09-28 02:04:22.662 - [32minfo[39m: javascript.2 script.js.Test.DIY_Schalter: _____________________ 2016-09-28 02:04:22.662 - [32minfo[39m: javascript.2 script.js.Test.DIY_Schalter: PUSHSAFER NACHRICHT 2016-09-28 02:04:22.662 - [32minfo[39m: javascript.2 script.js.Test.DIY_Schalter: Meldung: Die Spülmaschine ist in Betrieb 2016-09-28 02:04:22.662 - [32minfo[39m: javascript.2 script.js.Test.DIY_Schalter: Betreff: ioBroker Meldung 2016-09-28 02:04:22.663 - [32minfo[39m: javascript.2 script.js.Test.DIY_Schalter: Receiver: 322 2016-09-28 02:04:22.663 - [32minfo[39m: javascript.2 script.js.Test.DIY_Schalter: Icon: 25 2016-09-28 02:04:22.663 - [32minfo[39m: javascript.2 script.js.Test.DIY_Schalter: Ton: 0 2016-09-28 02:04:22.663 - [32minfo[39m: javascript.2 script.js.Test.DIY_Schalter: Vibr: 1 2016-09-28 02:04:22.663 - [32minfo[39m: javascript.2 script.js.Test.DIY_Schalter: _____________________ 2016-09-28 02:04:22.668 - [32minfo[39m: pushsafer.0 Send pushsafer notification: {"m":"Die Spülmaschine ist in Betrieb","t":"ioBroker","v":"2","i":"1","d":"52"}[/code]
Also der dynamische Teil (oben) wird nicht verwendet, und der default-Teil (hier letzte Zeile) übernimmt nur die message, aber geht nicht durch bis zum Pushsafer-Server.Ich habe es wieder auf meine modifizierte Variante gestellt. Ist schon zu spät heute, um weiter zu testen :roll:
Pix
-
@pix: Ich habe pushsafer upgedated und auch Bildübertragung gemacht.
Kannst du vom git ausprobieren?
-
Hallo Bluefox,
ist gerade knapp mit der Zeit. Aber am WE werd ichs hinbekommen. Danke für die Anpassung.
Pix
-
Hallo Bluefox,
ich habe das Update von Github geladen und ein Testskript gebaut:
sendTo("pushsafer", { message: 'Test text', // mandatory - your text message title: 'SweetHome', // optional - your message's title, otherwise your app's name is used device: '322', // optional - a device id or device group id (empty or a = all devices) sound: '2', // optional - a number betwenn 0-28 (see pushsafers API description) icon: '2', // optional - a number betwenn 1-98 (see pushsafers API description) vibration: '3' // optional - a number betwenn 0-3 (see pushsafers API description) //picture: '/Users/pix/Documents/iobroker/node_modules/iobroker.phantomjs/picture.png' // optional - absolute path to picture or base64 coded image URL //picture2: 'absolutePathToPicture2', // optional - absolute path to picture or base64 coded image URL //picture3: 'absolutePathToPicture3', // optional - absolute path to picture or base64 coded image URL //url: 'http://blabla',// optional - URL in the link //urlTitle: 'Link to BLA' // optional - title of URL });
Leider kommt nun immer dieser Fehler:
2016-10-14 22:54:26.201 - [31merror[39m: host. pmessage messagebox.system.adapter.pushsafer.0 {"command":"send","message":{"message":"Test text","title":"SweetHome","device":"322","sound":"2","icon":"2","vibration":"3"},"from":"system.adapter.javascript.2","_id":22791782} Cannot read property 'log' of undefined 2016-10-14 22:54:26.201 - [31merror[39m: host. TypeError: Cannot read property 'log' of undefined at sendNotification (/Users/pix/Documents/iobroker/node_modules/iobroker.pushsafer/pushsafer.js:89:44) at processMessage (/Users/pix/Documents/iobroker/node_modules/iobroker.pushsafer/pushsafer.js:62:5) at Adapter. <anonymous>(/Users/pix/Documents/iobroker/node_modules/iobroker.pushsafer/pushsafer.js:20:40) at emitOne (events.js:77:13) at Adapter.emit (events.js:169:7) at that.states.States.change (/Users/pix/Documents/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:2103:34) at RedisClient. <anonymous>(/Users/pix/Documents/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:90:25) at emitThree (events.js:97:13) at RedisClient.emit (events.js:175:7) at return_pub_sub (/Users/pix/Documents/iobroker/node_modules/iobroker.js-controller/node_modules/redis/index.js:782:18)</anonymous></anonymous>
Der Adapter wurde in dieser Verison also nicht von mir verändert.
Zum Testen des Bildversands komme ich nicht, wenn der Text schon nicht durchgeht. 322 für Device ist korrekt.
Pix
-
Test in den Adapter Einstellungen funktioniert leider nicht (auch nicht nach Neustart ioBroker):
! ````
2016-10-15 00:10:33.322 - [31merror[39m: host. pmessage messagebox.system.adapter.pushsafer.0 {"command":"send","message":"This is test notification!","from":"system.adapter.admin.0","callback":{"message":"This is test notification!","id":6,"ack":false,"time":1476483033321},"_id":31033365} Cannot read property 'log' of undefined
2016-10-15 00:10:33.322 - [31merror[39m: host. TypeError: Cannot read property 'log' of undefined
at sendNotification (/Users/pix/Documents/iobroker/node_modules/iobroker.pushsafer/pushsafer.js:89:44)
at processMessage (/Users/pix/Documents/iobroker/node_modules/iobroker.pushsafer/pushsafer.js:62:5)
at Adapter. <anonymous>(/Users/pix/Documents/iobroker/node_modules/iobroker.pushsafer/pushsafer.js:20:40)
at emitOne (events.js:77:13)
at Adapter.emit (events.js:169:7)
at that.states.States.change (/Users/pix/Documents/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:2103:34)
at RedisClient. <anonymous>(/Users/pix/Documents/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:90:25)
at emitThree (events.js:97:13)
at RedisClient.emit (events.js:175:7)
at return_pub_sub (/Users/pix/Documents/iobroker/node_modules/iobroker.js-controller/node_modules/redis/index.js:782:18)</anonymous></anonymous>Eingestellter Schlüssel ist natürlich korrekt! Gruß Pix
-
alte Instanz gelöscht,
Update von Github gemacht
Neue Instanz gebaut
Neuer Fehler beim Senden der Testnachricht aus Einstellungen:
! ````
2016-10-15 18:40:53.905 - [32minfo[39m: pushsafer.0 starting. Version 0.1.5 in /Users/pix/Documents/iobroker/node_modules/iobroker.pushsafer
2016-10-15 18:40:53.922 - [31merror[39m: uncaught exception: Cannot read property 'toString' of undefined
2016-10-15 18:40:53.925 - [31merror[39m: TypeError: Cannot read property 'toString' of undefined
at sendNotification (/Users/pix/Documents/iobroker/node_modules/iobroker.pushsafer/pushsafer.js:172:26)
at processMessage (/Users/pix/Documents/iobroker/node_modules/iobroker.pushsafer/pushsafer.js:62:5)
at /Users/pix/Documents/iobroker/node_modules/iobroker.pushsafer/pushsafer.js:70:13
at Command.callback (/Users/pix/Documents/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:438:21)
at normal_reply (/Users/pix/Documents/iobroker/node_modules/iobroker.js-controller/node_modules/redis/index.js:714:21)
at RedisClient.return_reply (/Users/pix/Documents/iobroker/node_modules/iobroker.js-controller/node_modules/redis/index.js:816:9)
at JavascriptRedisParser.Parser.returnReply (/Users/pix/Documents/iobroker/node_modules/iobroker.js-controller/node_modules/redis/index.js:188:18)
at JavascriptRedisParser.execute (/Users/pix/Documents/iobroker/node_modules/iobroker.js-controller/node_modules/redis/node_modules/redis-parser/lib/parser.js:415:12)
at Socket. <anonymous>(/Users/pix/Documents/iobroker/node_modules/iobroker.js-controller/node_modules/redis/index.js:267:27)
at emitOne (events.js:77:13)
2016-10-15 18:40:54.430 - [32minfo[39m: pushsafer.0 terminating
2016-10-15 18:40:54.436 - [31merror[39m: host.MacMini-Ethernet.fritz.box instance system.adapter.pushsafer.0 terminated with code 0 (OK)</anonymous> -
Noch mal vom git updaten bitte.
-
Hallo Bluefox,
Versand von Text funktioniert wieder. Vielen Dank. Habe meinen altern Änderungen über Bord geworfen :lol:
Beim Bildversand komme ich noch nicht weiter.
Was ist mit "absolute path to picture" gemeint? Ein URL zum Bild? Der Dateipfad auf meinem Server reicht nicht (zumindest nicht der Pfad, der in anderen Skripten zum Speichern von Logs und ähnlichem reicht).
Habe mal http://www.fastix.org/test/Data-URL-Generator.php eine Grafik codiert, aber den ganzen String kann man ja auch nicht speichern (der Ace-Editor mag das gar nicht). Ausserdem soll das ja auch on the fly passieren.
Kannst du mal ein Beispiel für den Grafikversand geben?
Danke!
Pix
EDIT: Testnachrichten vom Einstellungsfenster gehen immer noch nicht raus.
-
Alles gefixt.
sendTo("pushsafer.0", "send", { message: 'Hallo', sound: "", vibration: "", picture: 'C:\\pWork\\iobroker-data\\files\\vis\\img\\bulb_on.png' });
Wieder vom git.
-
Hallo Bluefox,
jetzt klappt es. Allerdings musste ich bei meinem System den Pfad etwas anders schreiben:````
var pfadlokal = "/Users/pix/Documents/airsonosstarten.png";sendTo('pushsafer.0', {
message: 'Test text', // mandatory - your text message
title: 'Foto Test', // optional - your message's title, otherwise your app's name is used
device: '322', // optional - a device id or device group id (empty or a = all devices)
sound: '5', // optional - a number betwenn 0-28 (see pushsafers API description)
icon: '2', // optional - a number betwenn 1-98 (see pushsafers API description)
vibration: '3', // optional - a number betwenn 0-3 (see pushsafers API description)
picture: pfadlokal, // optional - absolute path to picture or base64 coded image URL
//picture2: 'absolutePathToPicture2', // optional - absolute path to picture or base64 coded image URL
//picture3: 'absolutePathToPicture3', // optional - absolute path to picture or base64 coded image URL
url: yrno,// optional - URL in the link
urlTitle: 'YR.no Wettervorhersage' // optional - title of URL
});Vielen Dank! Gruß Pix
-
Es geht auch so:
var pfadlokal = "/Users/pix/Documents/airsonosstarten.png";