Giter Club home page Giter Club logo

ultraremote's Introduction

UltraRemote

Wifi Remote control for Elegoo Saturn 3 Ultra

A command line utility that allows you to view the status of your Elegoo Saturn 3 Ultra printer over a Wifi connection, send files and start printing.

Btw. Here you can find the modified firmware with windows share and ssh support: https://github.com/arsi-apli/UltraFirmwareToolkit

Usage:

java -jar UltraRemote-01.00-shaded.jar

or

java -jar UltraRemote-01.00-shaded.jar "full_path_to.goo"

Attention! If the file name contains a space, use quotation marks.

If you have a problem connecting your printer, try this version:

java -Djava.net.preferIPv4Stack=true -jar UltraRemote-01.00-shaded.jar full_path_to.goo

Lychee 3D Slicer:

File->Preferences

External tools->User command line:

java -jar full_path_to_UltraRemote-01.00-shaded.jar "((file))"

Attention! The quotation marks are necessary, if the filename contains a space it will not work without the use of quotation marks!

obrázok

Printer browser:

File upload:

Printing:

ultraremote's People

Contributors

arsi-apli avatar bggangel avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ultraremote's Issues

Home Assistant Support

As per the title, would you be able to make this compatible with Home Assistant. This would allow it to the information to be used to drive other workflows, or allow the information to be easily viewed on mobile etc

HOW TO OPEN

hello i want to ask, how to open this file,cause i see dont have file .jar to compile java file or any other. i running on windows. thanks

It doesn't connect nor find the printer

As of December 2nd of 2023 this doesn't seem to work with my Saturn 3 ultra

Here's my Java JRE version

d:\Downloads>Java -version
java version "1.8.0_391"
Java(TM) SE Runtime Environment (build 1.8.0_391-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.391-b13, mixed mode)

Output of "java -jar UltraRemote-01.00-shaded.jar"

`d:\Downloads>java -jar UltraRemote-01.00-shaded.jar
Dec 02, 2023 3:11:39 PM sk.arsi.saturn.ultra.sender.PrinterBrowser findPrinter
SEVERE: null
java.net.BindException: Address already in use: Cannot bind
at java.net.DualStackPlainDatagramSocketImpl.socketBind(Native Method)
at java.net.DualStackPlainDatagramSocketImpl.bind0(Unknown Source)
at java.net.AbstractPlainDatagramSocketImpl.bind(Unknown Source)
at java.net.DatagramSocket.bind(Unknown Source)
at java.net.DatagramSocket.(Unknown Source)
at java.net.DatagramSocket.(Unknown Source)
at java.net.DatagramSocket.(Unknown Source)
at sk.arsi.saturn.ultra.sender.PrinterBrowser.findPrinter(PrinterBrowser.java:171)
at sk.arsi.saturn.ultra.sender.PrinterBrowser.findPrinterActionPerformed(PrinterBrowser.java:167)
at sk.arsi.saturn.ultra.sender.PrinterBrowser.(PrinterBrowser.java:98)
at sk.arsi.saturn.ultra.sender.Main.main(Main.java:58)

Dec 02, 2023 3:11:46 PM sk.arsi.saturn.ultra.sender.PrinterBrowser findPrinter
SEVERE: null
java.net.BindException: Address already in use: Cannot bind
at java.net.DualStackPlainDatagramSocketImpl.socketBind(Native Method)
at java.net.DualStackPlainDatagramSocketImpl.bind0(Unknown Source)
at java.net.AbstractPlainDatagramSocketImpl.bind(Unknown Source)
at java.net.DatagramSocket.bind(Unknown Source)
at java.net.DatagramSocket.(Unknown Source)
at java.net.DatagramSocket.(Unknown Source)
at java.net.DatagramSocket.(Unknown Source)
at sk.arsi.saturn.ultra.sender.PrinterBrowser.findPrinter(PrinterBrowser.java:171)
at sk.arsi.saturn.ultra.sender.PrinterBrowser.findPrinterActionPerformed(PrinterBrowser.java:167)
at sk.arsi.saturn.ultra.sender.PrinterBrowser.access$200(PrinterBrowser.java:52)
at sk.arsi.saturn.ultra.sender.PrinterBrowser$3.actionPerformed(PrinterBrowser.java:121)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

Dec 02, 2023 3:11:57 PM sk.arsi.saturn.ultra.sender.PrinterBrowser findPrinter
SEVERE: null
java.net.BindException: Address already in use: Cannot bind
at java.net.DualStackPlainDatagramSocketImpl.socketBind(Native Method)
at java.net.DualStackPlainDatagramSocketImpl.bind0(Unknown Source)
at java.net.AbstractPlainDatagramSocketImpl.bind(Unknown Source)
at java.net.DatagramSocket.bind(Unknown Source)
at java.net.DatagramSocket.(Unknown Source)
at java.net.DatagramSocket.(Unknown Source)
at java.net.DatagramSocket.(Unknown Source)
at sk.arsi.saturn.ultra.sender.PrinterBrowser.findPrinter(PrinterBrowser.java:171)
at sk.arsi.saturn.ultra.sender.PrinterBrowser.findPrinterIpActionPerformed(PrinterBrowser.java:231)
at sk.arsi.saturn.ultra.sender.PrinterBrowser.access$400(PrinterBrowser.java:52)
at sk.arsi.saturn.ultra.sender.PrinterBrowser$5.actionPerformed(PrinterBrowser.java:135)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)`

Unable to Connect to Saturn 3 Ultra, Lychee Connects Successfully

Jan 13, 2024 4:21:56 P.M. sk.arsi.saturn.ultra.sender.mqtt.MqttServer run
SEVERE: null
java.net.SocketTimeoutException: Accept timed out
at java.base/sun.nio.ch.NioSocketImpl.timedAccept(NioSocketImpl.java:713)
at java.base/sun.nio.ch.NioSocketImpl.accept(NioSocketImpl.java:757)
at java.base/java.net.ServerSocket.implAccept(ServerSocket.java:675)
at java.base/java.net.ServerSocket.platformImplAccept(ServerSocket.java:641)
at java.base/java.net.ServerSocket.implAccept(ServerSocket.java:617)
at java.base/java.net.ServerSocket.implAccept(ServerSocket.java:574)
at java.base/java.net.ServerSocket.accept(ServerSocket.java:532)
at sk.arsi.saturn.ultra.sender.mqtt.MqttServer.run(MqttServer.java:114)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:842)

mac os not connected

Hi. i am using macos i can see the printer but i can't send the file. firewall is turned off, how to fix this problem?

not an issue, an idea

Not sure how I can put requests or improvement ideas in GitHub, but here is one:
Would it be possible to delete the files from the printer? Right now, you have to use the touch screen, and that is clumsy/slow.
If you could have an 'explorer-like' view of the files on the printer and the ability to delete some.
Does the API support that?

connection loss

i can connect to printer but i loose connection after few seconds. Reinitialize Connection button doesn't have effect.
I also have the following exception when i select my printer:

Exception in thread "pool-1-thread-1" java.lang.NullPointerException: Cannot invoke "com.fasterxml.jackson.databind.JsonNode.asInt()" because the return value of "com.fasterxml.jackson.databind.JsonNode.get(String)" is null at sk.arsi.saturn.ultra.sender.pojo.Attributes.AttrDeserializer.deserialize(AttrDeserializer.java:50) at sk.arsi.saturn.ultra.sender.pojo.Attributes.AttrDeserializer.deserialize(AttrDeserializer.java:29) at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:2888) at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2034) at sk.arsi.saturn.ultra.sender.mqtt.MqttServer.decodeMessage(MqttServer.java:264) at sk.arsi.saturn.ultra.sender.mqtt.MqttServer.run(MqttServer.java:148) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) at java.base/java.lang.Thread.run(Thread.java:1583)

If can help, i am using the last 1.5.4 firmware

Can see printer, but offline when "selecting"

Loving the UI/functionality, but I can see the printer, but after "Selecting", the printer is displayed as "offline".
Sat-Offline

I tried "C:\Program Files (x86)\Java\jdk1.8.0_161\jre\bin\java.exe" -Djava.net.preferIPv4Stack=true -jar c:\Elegoo\UltraRemote-01.00-shaded.jar" but that did not make a difference.

The logging shows a problem with the MQTT server:
Sat-MQTT-Error

This might be a problem in my local network, but maybe you can point me in a direction to fix the problem.

connection loss

As before i can connect to machine but after few seconds i loose connection. the reconnect button has no effect. i also still have the jackson parse exception when i select the printer.

Exception in thread "pool-1-thread-1" java.lang.NullPointerException: Cannot invoke "com.fasterxml.jackson.databind.JsonNode.asInt()" because the return value of "com.fasterxml.jackson.databind.JsonNode.get(String)" is null at sk.arsi.saturn.ultra.sender.pojo.Attributes.AttrDeserializer.deserialize(AttrDeserializer.java:53) at sk.arsi.saturn.ultra.sender.pojo.Attributes.AttrDeserializer.deserialize(AttrDeserializer.java:29) at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:2888) at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2034) at sk.arsi.saturn.ultra.sender.mqtt.MqttServer.decodeMessage(MqttServer.java:264) at sk.arsi.saturn.ultra.sender.mqtt.MqttServer.run(MqttServer.java:148) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) at java.base/java.lang.Thread.run(Thread.java:1583)

Seems that last released jar version is still 1.0.2

Printer cannot be seen on LAN

Hi, when I try to find the printer it only works when I'm on wifi, is there any way to make it work over LAN when I'm on the same router as the wifi?

Can connect , but cant transfer files

I'm having this same issue as a previously closed ticket . I can connect fine , and see all printer info and activity, but cannot send to printer, just sits on waiting for the file transfer to complete. I have tried all previously mentioned fixes in other ticket as well as disabling my firewall . localhost returns a 404 . using current release ,Chitubox send files without issue. Running 1.5.0 firmware. Any help would be greatly appreciated!

Exception in thread "pool-1-thread-1" java.lang.NullPointerException: Cannot invoke "com.fasterxml.jackson.databind.JsonNode.asInt()" because the return value of "com.fasterxml.jackson.databind.JsonNode.get(String)" is null

UltraRemote is broken, due to bad parsing of /sdcp/attributes after updataing my printer to the 1.5.4 firmware.

I modified MqttServer.java to print out the message and topic prior to decoding, like so:

image

This is the output I get:

C:\Program Files\Microsoft Visual Studio\2022\Community>java -jar c:\Users\fredr\git\UltraRemote\target\UltraRemote-01.00-shaded.jar
M99999
{"Id":"f25273b12b094c5a8b9513a30ca6bb49","Data":{"Attributes":{"Name":"Saturn3Ultra","MachineName":"ELEGOO Saturn 3 Ultra","ProtocolVersion":"V1.0.0","FirmwareVersion":"V1.5.4","Resolution":"11520x5120","MainboardIP":"192.168.0.232","MainboardID":"c85dcea21ac801ff","SDCPStatus":0,"LocalSDCPAddress":"tcp://192.168.0.232:52606","SDCPAddress":"","Capabilities":["FILE_TRANSFER","PRINT_CONTROL"]},"Status":{"CurrentStatus":0,"PreviousStatus":0,"PrintInfo":{"Status":0,"CurrentLayer":0,"TotalLayer":0,"CurrentTicks":0,"TotalTicks":0,"ErrorNumber":0,"Filename":""},"FileTransferInfo":{"Status":0,"DownloadOffset":0,"CheckOffset":0,"FileTotalSize":0,"Filename":""}}}}
HTTP Server port: /[0:0:0:0:0:0:0:0]:52972
Connected client: c85dcea21ac801ff
Subscribe: c85dcea21ac801ff
Mar 09, 2024 11:39:26 AM sk.arsi.saturn.ultra.sender.httpserver.SimpleHttpServer run
INFO: Starting server...
Mar 09, 2024 11:39:26 AM sk.arsi.saturn.ultra.sender.httpserver.SimpleHttpServer run
INFO: Server started => localhost:0
Pre decode message *******************************************
/sdcp/status/c85dcea21ac801ff
{"Id":"f25273b12b094c5a8b9513a30ca6bb49","Data":{"Status":{"CurrentStatus":0,"PreviousStatus":0,"PrintInfo":{"Status":0,"CurrentLayer":0,"TotalLayer":0,"CurrentTicks":0,"TotalTicks":0,"ErrorNumber":0,"Filename":""},"FileTransferInfo":{"Status":0,"DownloadOffset":0,"CheckOffset":0,"FileTotalSize":0,"Filename":""}},"MainboardID":"c85dcea21ac801ff","TimeStamp":2311}}
sk.arsi.saturn.ultra.sender.pojo.Status.StatusDeserializer.deserialize()
*******************************************
/sdcp/status/c85dcea21ac801ff
{"Id":"f25273b12b094c5a8b9513a30ca6bb49","Data":{"Status":{"CurrentStatus":0,"PreviousStatus":0,"PrintInfo":{"Status":0,"CurrentLayer":0,"TotalLayer":0,"CurrentTicks":0,"TotalTicks":0,"ErrorNumber":0,"Filename":""},"FileTransferInfo":{"Status":0,"DownloadOffset":0,"CheckOffset":0,"FileTotalSize":0,"Filename":""}},"MainboardID":"c85dcea21ac801ff","TimeStamp":2311}}
Pre decode message *******************************************
/sdcp/attributes/c85dcea21ac801ff
{"Id":"f25273b12b094c5a8b9513a30ca6bb49","Data":{"Attributes":{"Name":"Saturn3Ultra","MachineName":"ELEGOO Saturn 3 Ultra","ProtocolVersion":"V1.0.0","FirmwareVersion":"V1.5.4","Resolution":"11520x5120","MainboardIP":"192.168.0.232","MainboardID":"c85dcea21ac801ff","SDCPStatus":1,"LocalSDCPAddress":"tcp://192.238.0.235:52971","SDCPAddress":"","Capabilities":["FILE_TRANSFER","PRINT_CONTROL"]},"MainboardID":"c85dcea21ac801ff","TimeStamp":2311}}
Exception in thread "pool-1-thread-1" java.lang.NullPointerException: Cannot invoke "com.fasterxml.jackson.databind.JsonNode.asInt()" because the return value of "com.fasterxml.jackson.databind.JsonNode.get(String)" is null
        at sk.arsi.saturn.ultra.sender.pojo.Attributes.AttrDeserializer.deserialize(AttrDeserializer.java:53)
        at sk.arsi.saturn.ultra.sender.pojo.Attributes.AttrDeserializer.deserialize(AttrDeserializer.java:29)
        at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:2888)
        at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2034)
        at sk.arsi.saturn.ultra.sender.mqtt.MqttServer.decodeMessage(MqttServer.java:267)
        at sk.arsi.saturn.ultra.sender.mqtt.MqttServer.run(MqttServer.java:151)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
        at java.base/java.lang.Thread.run(Thread.java:1583)

AttrDeserializer.java seems to want to decode lots of strings, that are only found in /sdcp/status in this firmware version

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.