😀 thanks . it fit like a glove *--* *-- Felipe Gutierrez* *-- skype: felipe.o.gutierrez* *--* *https://felipeogutierrez.blogspot.com <https://felipeogutierrez.blogspot.com>*
On Wed, Nov 21, 2018 at 6:14 PM Christofer Dutz <christofer.d...@c-ware.de> wrote: > Hi Felipe, > > us not having a user list is intentional, so this is absolutely the right > place to come and ask questions. > > As the filter itself is super-trivial, I think it might be the simplest > solution to implement the filter itself: > > TStream<Double> filteredReadings = tempReadings.filter(reading > -> { > System.out.println(String.format("The value was %s", > reading)); > return reading < 50 || reading > 80; > }); > > This should do the trick ... > > Hope this helps, > Chris > > > > Am 21.11.18, 15:59 schrieb "Felipe Gutierrez" < > felipe.o.gutier...@gmail.com>: > > Hi, > > This question is about an application that I am using Apache Edgent, > not > really a development effort into Apache Edgent. But as there is no > user@list > I am sensding here. > > I am using Apache Edgent (Java framework) to poll values from an > HCSR04 > ultrasonic sensor on a Raspberry Pi every 3 seconds. I use a filter to > not > get values from 50cm to 80cm ( > > https://github.com/felipegutierrez/explore-rpi/blob/master/src/main/java/org/sense/edgent/app/UltrasonicEdgentApp.java > ). > > UltrasonicStream sensor = new UltrasonicStream(); > DirectProvider dp = new DirectProvider(); > Topology topology = dp.newTopology(); > TStream<Double> tempReadings = topology.poll(sensor, 3, > TimeUnit.SECONDS); > TStream<Double> filteredReadings = tempReadings.filter(reading -> > reading < > 50 || reading > 80); > System.out.println("filter added: tempReadings.filter(reading -> > reading < > 50 || reading > 80);"); > filteredReadings.print(); > dp.submit(topology); > > I want to show some message when the values are filtered. When the > values > do not match with my filter I can poll them, but when they match I am > not > returning, that is ok. However, I want just to show that a value was > filtered using Apache Edgent libraries. I know that I can do something > on > the `public double get()` method, but I wonder if I could do this trick > with some method of the Apache Edgent ( > > https://github.com/felipegutierrez/explore-rpi/blob/master/src/main/java/org/sense/sensor/UltrasonicStream.java > ). > > public class UltrasonicStream implements Supplier<Double> { > > private static final long serialVersionUID = -6511218542753341056L; > > private static GpioPinDigitalOutput sensorTriggerPin; > private static GpioPinDigitalInput sensorEchoPin; > private static final GpioController gpio = GpioFactory.getInstance(); > private double currentDistance = -1.0; > > /** > * The HCSR04 Ultrasonic sensor is connected on the physical pin 16 and > 18 > which > * correspond to the GPIO 04 and 05 of the WiringPi library. > */ > public UltrasonicStream() { > // Trigger pin as OUTPUT > sensorTriggerPin = gpio.provisionDigitalOutputPin(RaspiPin.GPIO_04); > // Echo pin as INPUT > sensorEchoPin = gpio.provisionDigitalInputPin(RaspiPin.GPIO_05, > PinPullResistance.PULL_DOWN); > } > > /** > * This is the override method of the Supplier interface from Apache > Edgent > */ > @Override > public Double get() { > try { > System.out.print("Distance in centimeters: "); > currentDistance = getDistance(); > } catch (InterruptedException e) { > // TODO Auto-generated catch block > e.printStackTrace(); > } > return currentDistance; > } > > /** > * Retrieve the distance measured by the HCSR04 Ultrasonic sensor > connected > on a > * Raspberry Pi 3+B > * > * @return the distance in centimeters > * @throws InterruptedException > */ > public double getDistance() throws InterruptedException { > > double distanceCM = -1; > try { > // Thread.sleep(2000); > sensorTriggerPin.high(); // Make trigger pin HIGH > Thread.sleep((long) 0.01);// Delay for 10 microseconds > sensorTriggerPin.low(); // Make trigger pin LOW > > // Wait until the ECHO pin gets HIGH > while (sensorEchoPin.isLow()) { > > } > // Store the current time to calculate ECHO pin HIGH time. > long startTime = System.nanoTime(); > // Wait until the ECHO pin gets LOW > while (sensorEchoPin.isHigh()) { > > } > // Store the echo pin HIGH end time to calculate ECHO pin HIGH time. > long endTime = System.nanoTime(); > > distanceCM = ((((endTime - startTime) / 1e3) / 2) / 29.1); > // Printing out the distance in centimeters > // System.out.println("Distance: " + distanceCM + " centimeters"); > > return distanceCM; > } catch (InterruptedException e) { > e.printStackTrace(); > } > return distanceCM; > } > } > > Thanks, > Felipe > > *--* > *-- Felipe Gutierrez* > > *-- skype: felipe.o.gutierrez* > *--* *https://felipeogutierrez.blogspot.com > <https://felipeogutierrez.blogspot.com>* > > >