Call web service in handleGpioPinDigitalStateChangeEvent? - Raspberry Pi Forums
dear forumers!
i'd call webservice when pir sensor active.
created web service call wsimport:
wsimport -keep -s src http://webservicex.net/geoipservice.asmx?wsdl
wrote test application. in code call service on start, , call again when pir sensor gettig active.
first calling right, when try call on handlegpiopindigitalstatechangeevent method of gpiopinlistenerdigital object i've got nullpointerexception in pi4j-gpio-event-executor-0.
console output is: have idea how change code?
thank in advance can provide.
adrian
i'd call webservice when pir sensor active.
created web service call wsimport:
wsimport -keep -s src http://webservicex.net/geoipservice.asmx?wsdl
wrote test application. in code call service on start, , call again when pir sensor gettig active.
first calling right, when try call on handlegpiopindigitalstatechangeevent method of gpiopinlistenerdigital object i've got nullpointerexception in pi4j-gpio-event-executor-0.
code: select all
package me.losadrian.pirel; import com.pi4j.io.gpio.gpiocontroller; import com.pi4j.io.gpio.gpiofactory; import com.pi4j.io.gpio.gpiopindigitalinput; import com.pi4j.io.gpio.gpiopindigitaloutput; import com.pi4j.io.gpio.pinpullresistance; import com.pi4j.io.gpio.pinstate; import com.pi4j.io.gpio.raspipin; import com.pi4j.io.gpio.event.gpiopindigitalstatechangeevent; import com.pi4j.io.gpio.event.gpiopinlistenerdigital; import net.webservicex.geoip; import net.webservicex.geoipservice; import net.webservicex.geoipservicesoap; public class app { public static void main(string[] args) { geoipservice service = new geoipservice(); geoipservicesoap client = service.getgeoipservicesoap(); geoip geoip = client.getgeoip("74.125.239.142"); system.out.println(geoip.getcountryname()); final gpiocontroller gpiopir = gpiofactory.getinstance(); final gpiopindigitalinput sensorpir = gpiopir.provisiondigitalinputpin(raspipin.gpio_07, pinpullresistance.pull_down); final gpiocontroller gpiorel1 = gpiofactory.getinstance(); final gpiopindigitaloutput rel1 = gpiorel1.provisiondigitaloutputpin(raspipin.gpio_08, "rel", pinstate.high); final gpiocontroller gpiorel2 = gpiofactory.getinstance(); final gpiopindigitaloutput rel2 = gpiorel2.provisiondigitaloutputpin(raspipin.gpio_09, "rel", pinstate.high); rel1.high(); rel2.high(); sensorpir.addlistener(new gpiopinlistenerdigital() { public void handlegpiopindigitalstatechangeevent(gpiopindigitalstatechangeevent event) { if (event.getstate().ishigh()) { system.out.println("motion!!"); geoipservice service = new geoipservice(); geoipservicesoap client = service.getgeoipservicesoap(); geoip geoip = client.getgeoip("74.125.239.142"); system.out.println(geoip.getcountryname()); rel1.low(); rel2.high(); } if (event.getstate().islow()) { system.out.println("quiet..."); rel1.high(); rel2.low(); } } }); try { (;;) { thread.sleep(3000); } } catch (final exception e) { system.out.println(e.getmessage()); } } }
code: select all
pi@raspberrypi ~ $ sudo java -jar pirel.jar united states motion!! exception in thread "pi4j-gpio-event-executor-0" java.lang.nullpointerexception at com.sun.xml.internal.ws.client.clientcontainer$1.getresource(clientcontainer.java:45) at com.sun.xml.internal.ws.assembler.metroconfigloader.locateresource(metroconfigloader.java:220) at com.sun.xml.internal.ws.assembler.metroconfigloader.locateresource(metroconfigloader.java:230) at com.sun.xml.internal.ws.assembler.metroconfigloader.init(metroconfigloader.java:125) at com.sun.xml.internal.ws.assembler.metroconfigloader.<init>(metroconfigloader.java:104) at com.sun.xml.internal.ws.assembler.tubelineassemblycontroller.gettubecreators(tubelineassemblycontroller.java:78) at com.sun.xml.internal.ws.assembler.metrotubelineassembler.createclient(metrotubelineassembler.java:103) at com.sun.xml.internal.ws.client.stub.createpipeline(stub.java:328) at com.sun.xml.internal.ws.client.stub.<init>(stub.java:295) at com.sun.xml.internal.ws.client.stub.<init>(stub.java:228) at com.sun.xml.internal.ws.client.stub.<init>(stub.java:243) at com.sun.xml.internal.ws.client.sei.seistub.<init>(seistub.java:84) at com.sun.xml.internal.ws.client.wsservicedelegate.getstubhandler(wsservicedelegate.java:814) at com.sun.xml.internal.ws.client.wsservicedelegate.createendpointifbaseproxy(wsservicedelegate.java:803) at com.sun.xml.internal.ws.client.wsservicedelegate.getport(wsservicedelegate.java:436) at com.sun.xml.internal.ws.client.wsservicedelegate.getport(wsservicedelegate.java:404) at com.sun.xml.internal.ws.client.wsservicedelegate.getport(wsservicedelegate.java:386) at javax.xml.ws.service.getport(service.java:119) at net.webservicex.geoipservice.getgeoipservicesoap(geoipservice.java:72) at me.losadrian.pirel.app$1.handlegpiopindigitalstatechangeevent(app.java:42) at com.pi4j.io.gpio.tasks.impl.gpioeventdispatchtaskimpl.run(gpioeventdispatchtaskimpl.java:66) at java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1142) at java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:617) at java.lang.thread.run(thread.java:744) quiet...
thank in advance can provide.
adrian
it looks sequence: fail if run twice inside same application.
code work once if once inside event handler?
code: select all
geoipservice service = new geoipservice(); service.getgeoipservicesoap();
code work once if once inside event handler?
raspberrypi
Comments
Post a Comment